Linux下搭建PXE服务器安装Linux系统
PXE服务器安装与配置
花了一个星期主要研究这个,查阅了国内外相关的资料,发现这方面的东西还是比较少的,至少还没有完备的一个体系,这次测试过程发布出来
希望能帮助到一些人,有什么不懂得可以提出来,大家一起讨论。
原理:
PXE是在没有软驱、硬盘、CD-ROM的情况下引导计算机的一种方式,也就是BIOS将使用PXE协议从网络引导。
DHCP服务器:用来动态分配IP地址(同时分配子网掩码、网关、TFTP服务器地址、启动文件名、DNS服务器、时间服务器等等)。
TFTP服务器:用来提供启动文件的下载
简单说来,PXE服务器就是DHCP服务器+TFTP服务器。网络启动过程大概是这样的(可能并不严谨):客户端发送动态获得IP地址的广播包到 网络上,DHCP服务器在收到该广播包后,发送给客户端分配IP地址的回应包,客户端收到回应包后设置自己的IP地址,然后从DHCP服务器获得启动服务 器的IP地址(DHCP服务器066选项,这就是TFTP服务器的IP地址)及启动文件名(DHCP服务器067选项,这里的启动文件名就是 pxelinux.0或者支持pxe的grub4dos的grldr,当然,也可以是startrom.n12或者使用3com Image Edit创建的pxe启动菜单文件,总之,它应该是一种由pxe启动规范规定的固定格式的可执行文件),然后客户端到联系启动服务器(TFTP服务器)获 得启动文件并执行,这样基本上就完成了pxe启动过程。
在Unix或者Linux系统下,DHCP服务器和TFTP服务器一般都是分开设置的,两台服务器甚至可以在两台不同的机器上,其实 Windows下的设置也是一样的,但在Windows下,我们可以通过使用HaneWin DHCP服务器软件或TFTPD32一个软件就搞定(我个人推荐使用HaneWin DHCP服务器软件,但TFTPD32设置起来更简单一些,就是效率有些低),详细的设置方法请自己摸索,你只要知道,在设置PXE服务器时,要设置好 DHCP和TFTP两个服务器,其中DHCP服务器要设置启动服务器名和启动文件名。
第一次接触PXE服务器,作如下记录:
安装环境:虚拟机CentOS6.2中搭建PXE服务器
仍用CentOS6.2 镜像测试客户端安装系统
1.安装与配置tftp服务器
安装tftp:
rpm –ivh tftp-server-0.49-7.el6.x86_64.rpm
问题:
安装时提示:
warning: tftp-server-0.42-3.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
xinetd is needed by tftp-server-0.42-3.1.i386 //提示依赖的文件
原因:
需要安装xinetd
rpm –ivh xinetd-2.3.14-39.el6_4.x86_64.rpm
然后在继续上一步,就OK
配置tftp:
vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -vss var/lib/tftpboot -c //设置主目录 -c为指定为可以创建文件
disable = no //yes设置为no
per_source = 11
cps = 100 2
flags = IPv4
}
#/etc/init.d/iptables stop //关闭防火墙
#service xinetd restart //重启 xinetd 服务重启xinetd服务,因为TFTP服务受控与xinetd, xinetd是管服务的服务,它是不开端口的。
验证一下TFTP是否起来了:
# netstat -nlp | grep 69
出现下面的信息代表已经启动了
udp 0 0 0.0.0.0:69 0.0.0.0:*
配置服务开机自动运行级别:
#chkconfig --level 345 xinetd on
#chkconfig --level 345 tftp on
2.安装dhcp服务器
rpm –ivh dhcp-4.1.1-25.P1.el6.x86_64.rpm
vim /etc/dhcp/dhcpd.conf根据自己的配置修改
添加:
ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
class "pxeclients"{
match if substring(option vendor-class-identifier,0,9) = "PXEClient";
filename "pxelinux.0";//注意填相对路径
next-server 192.168.2.58; #服务器ip地址 这里即虚拟机ip
}
subnet 192.168.2.0 netmask 255.255.255.0 {
option routers 192.168.2.1;//路由网关
option subnet-mask 255.255.255.0;//子网掩码
option time-offset -18000;
range dynamic-bootp 192.168.2.56 192.168.2.60;//设置dhcp地址池
default-lease-time 216000;
max-lease-time 432000;
}
开启dhcp服务:service dhcpd restart
配置服务开机自动运行级别:
#chkconfig --level 345 dhcpd on
此时,可以测试dhcp服务器是否配置成功,可以给客户自动分配ip地址了?
可以配一台新的虚拟机,装好系统,然后物理机断开与外网的连接,虚拟机里右击右上角的电脑图标——编辑连接——ipv4设置——设置为自动(DHCP) 然后左键连接,能连接上,并分配好ip 代表dhcp配置成功。
3.安装nfs服务
配置:
vim /etc/exports
/mnt/cdrom *(ro,sync)//使用前先挂载//mount /dev/cdrom /mnt/cdrom 这里我挂载的是CentOS6.2 x64 系统
/mnt/ks/ *(ro)
使配置生效
#exportfs -a
查看:
# exportfs -v
开启NFS:
service nfs restart
4.配置启动文件
前提是安装了syslinux
1. pxelinux.0, vesamenu.c32放到tftp根目录下
cp /usr/share/syslinux/{pxelinux.0,vesamenu.c32} /var/lib/tftpboot/
2.创建pxelinux.cfg目录 ,该目录下准备存放default文件
mkdir /var/lib/tftpboot/pxelinux.cfg
3.创建要安装系统目录CentOS,拷贝initrd.img vmlinuz至该目录
mkdir /var/lib/tftpboot/CentOS
cp /mnt/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/CentOS
4.配置ks.cfg文件
若没有安装kickstart,到镜像文件中找到相应的包安装,
rpm –ivh system-config-kickstart-2.8.6.4-1.el6.noarch.rpm
(这里注意貌似安装这个包时需要好多的依赖文件,请自己根据在镜像包中查找)
然后使用命令system-config-kickstart,配置自动安装文件ks.cfg,创建/mnt/ks目录,保存ks.cfg至/mnt/ks目录
下面给出实例:
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use NFS installation media
nfs --server=192.168.2.58 --dir=/mnt/cdrom
# Root password
rootpw --iscrypted $1$HJ9geib8$UhHxS8i5.qqjZGpYcqtV31
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang zh_CN
# SELinux configuration
selinux --enforcing
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone Africa/Abidjan
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitioning information
part / --asprimary --fstype="ext3" --size=10000
part /boot --fstype="ext3" --size=100
part swap --fstype="swap" --size=4096
5.编辑/var/lib/tftpboot/pxelinux.cfg/default,注意自己修改信息
default vesamenu.c32
timeout 100
menu background splash.jpg
menu title Welcome to Install System --BY Lvyun
label Auto_CentOS
menu label Auto Install CentOS6.2
menu default
kernel CentOS/vmlinuz
append initrd=CentOS/initrd.img ks=nfs:192.168.2.58:/mnt/ks/ks.cfg
label Custom_CentOS
menu label Custom Install CentOS6.2
kernel CentOS/vmlinuz
append initrd=CentOS/initrd.img
label rescue
menu label Resuce
kernel CentOS/vmlinuz
append initrd=CentOS/initrd.img
5.完成配置
开启一台虚拟机测试,会自动安装CentOS系统。
6.参考文档
http://blog.chinaunix.net/uid-26393988-id-3018421.html
http://www.tuicool.com/articles/meM7Nb