简介:
PXE工作在client/server模式,允许客户机通过网络从远程访问服务器下载引导镜像,并加载安装文件或者整个操作系统。
若要搭建PXE网络体系,需满足以下条件。
客户机的网卡支持PXE协议,并且主板支持网络引导。
要有一台DHCP服务器以便客户机自动分配地址,指定引导文件位置。
服务器支持通过TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
但是通过PXE虽然能够通过网络实现多台客户机一起装机,但是期间还需要手动配置。如何去解决这样的问题呢?通过在服务器上安装system-config-kickstart工具后即可通过图形化向导工具来配置安装应答文件。只要将自动应答文件放置在PXE安装服务器的FTP目录下,并适当修改引导菜单,就可实现基于网络的自动装机。
Kickstart是一种无人值守安装方式。Kickstart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不止局限与生成kickstart安装文件的机器)当出现要求填写参数的情况时,安装程序首先就会去查找kickstart生成的文件,当找到合适的参数时,就会采用找到的参数,当没有找到合适的参数时,才需要安装者手动干预。这样,如果kickstart文件涵盖了安装过程中所需填写的所有参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后忙自己的事情,等待安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统并结束安装。
自动安装原理:
客户机从自己的PXE网卡启动,向本网络中DHCP服务器索取IP地址。
DHCP服务器返回分给客户机IP。
客户机向本网络中的TFTP服务器索取文件。
客户机取得bootstrap文件后执行引导文件完成引导。
读取配置文件,通过TFTP服务器加载内核和文件系统。
进入安装画面,此时可以通过HTTP、NFS、FTP方式进行安装(这里已FTP为例)。
工作流程:
1. 首先客户端主机网卡要支持网络引导。
2. 其次通过DHCP服务器告诉我们客户端主机的tftp服务器位置。
3. 接着请求tftp服务器(这里的dhcp与tftp在同一台服务器上)。
4. 然后tftp服务器会给客户端主机提供一个pxe的文件,这个文件是由syslinux这个程序包提供的。
5. 再则客户端主机利用tftp提供的pxelinux.0这个文件,在次尝试到tftp服务器上获取内核。因为要启动安装就要启动引导内核。
6. 之后当引导内核启动后,客户端主机通过改名后的default文件成功引导Linux安装内核后,通过ftp服务获取该文件的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
7. 最后将ks.cfg文件下载后,通过该文件找到ks.cfg文件的配置请求下载安装过程所需的软件包,这样就实现自动化安装了。
环境:用红帽Linux6.5系统搭建PXE实现网络装机。
操作:
步骤一:进行磁盘挂载,并安装yum仓已解决安装包的依赖性关系。在搭建好yum仓后可执行yum list验证一下yum仓的搭建情况。
[root@root ~]# mount /dev/sr0 /mnt 磁盘挂载
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@root ~]# vi /etc/yum.repos.d/abc.repo 建立yum仓
[abc] #文件名
name=test #仓库命名描述
baseurl=file:///mnt #定义安装包路径
enabled=1 #开启用户仓库
gpgcheck=0 #不检查软件KEY
步骤二:通过yum仓安装TFTP服务并启用tftp。(tftp采用的是UDP69传输协议)
[root@root ~]# yum -y install tftp-server 安装tftp服务
[root@root ~]# vi /etc/xinetd.d/tftp 进入配置文件启用tftp
··· ···省略
service tftp
{
socket_type = dgram
protocol = udp 采用UDP传输协议
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot tftp的根目录
disable = no 将yes改为no,启用tftp
per_source = 11
cps = 100 2
flags = IPv4
}
步骤三:安装DHCP服务,配置DHCP。
[root@root ~]# yum -y install dhcp 安装dhcp服务
[root@root ~]# vi /etc/dhcp/dhcpd.conf 编辑dhcp
进入配置文件复制/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample这一段
[root@root ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@root ~]# vim /etc/dhcp/dhcpd.conf 在进入配置文件修改
步骤四:安装vsftpd。
[root@root ~]# yum -y install vsftpd 安装vsftpd服务
[root@root ~]# mount /dev/sr0 /var/ftp/pub/ 磁盘挂载到vsftpd的根目录下
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@root ~]# df 查看
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 20158332 3150980 15983352 17% /
tmpfs 953788 76 953712 1% /dev/shm
/dev/sda1 5039616 169852 4613764 4% /boot
/dev/sda5 5039616 141080 4642536 3% /home
/dev/sr0 3762278 3762278 0 100% /media/RHEL_6.5 x86_64 Disc 1
/dev/sr0 3762278 3762278 0 100% /mnt
/dev/sr0 3762278 3762278 0 100% /var/ftp/pub
步骤五:安装引导加载程序,并复制网络启动所需要文件到tftp服务器的根目录下。
[root@root ~]# yum -y install syslinux //安装引导加载程序
[root@root ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot 复制tftp目录下
[root@root ~]# mkdir /var/lib/tftpboot/pxelinux.cfg 创建文件
[root@root ~]# cd /var/lib/tftpboot/ 进入目录下查看文件
[root@root tftpboot]# ls
pxelinux.cfg pxelinux.0
[root@root tftpboot]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/defaul引导菜单
[root@root tftpboot]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/ linux引导加载模块
[root@root tftpboot]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/ 压缩内核
[root@root tftpboot]# cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot 图形化安装菜单
[root@root tftpboot]# ls 查看
initrd.img pxelinux.0 pxelinux.cfg vesamenu.c32 vmlinuz
步骤六:将dhcpd、vsftpd、xinetd服务开启,并关闭iptables、setenforce。
步骤七:安装system-config-kickstart工具,实现无人值守安装。
[root@root tftpboot]# yum -y install system-config-kickstart 安装工具
图解:kickstart无人值守安装
图解一:在桌面上点击“应用程序”,选“系统工具”然后出现kickstart点击即可。
图解二:打开kickstart后,在基本配置中有个根口令指的是开启服务器时的密码。(可以选择语言。键盘、时区)
图解三:点击“安装方法”,配置ftp服务器地址与FTP根目录。(注意 FTP目录 指定为pub)
图解四:“引导装载程序选项”默认即可,然后在“分区信息”中为磁盘分区。(可以划分“/”、“/boot”、“交换分区”等)
图解五:配置网卡,网卡名称设置为eth0,网络类型为DHCP,这样可以自动获取到DHCP服务分配的地址重而进行网络装机。
图解六:防火墙的设置可以将防火墙全部关闭,在“软件包选择”中可以默认不选,然后启用客户机时,客户机到时候会有一个手动选择。
图解七:在“预安装脚本”与“安装后脚本”界面中,可以分别添加在安装前、安装后自动运行的可执行语句。此项设置使服务器的自动化配置变得更加容易。(可以在解释器下面输入一个安装yum仓的shell脚本这样,在装机后就可以自动的安装yum仓了,也可以安装其它功能的脚本),最后保存。
步骤八:将保存的自动应答文件放置在PXE安装服务器的FTP目录下,并适当修改引导菜单,就可实现基于网络的自动装机。
[root@root tftpboot]# cd /root
[root@root ~]# ls
anaconda-ks.cfg install.log.syslog 公共的 视频 文档 音乐
install.log ks.cfg 模板 图片 下载 桌面
[root@root ~]# cd /var/ftp/
[root@root ftp]# ls
pub
[root@root ftp]# mkdir rhel6
[root@root ftp]# ls
pub rhel6
[root@root ftp]# cp /root/ks.cfg /var/ftp/rhel6/ 应答文件复制到FTP根目录下
[root@root ftp]# vi /var/lib/tftpboot/pxelinux.cfg/default 编辑引导菜单文件
(无人值守安装只需要一个入口就够了)
default vesamenu.c32 指定默认入口名称
prompt 0 //1表示等待用户控制,0表示不等待用户控制
timeout 1 //响应时间
··· ···省略
label linux label用来定义并分割启动项
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz kernel与append用来定义引导参数
append ks=ftp://192.168.100.100/rhel6/ks.cfg initrd=initrd.img
步骤九:最后将dhcpd、vsftpd、xinetd服务重新启动。
测试:用一台已安装好server 2008系统的虚拟机,做测试。
步骤一:打开server 2008系统的虚拟机,进入网卡设置为DHCP自动获取IP,然后关闭防火墙,最后重启系统。
步骤二:重启系统后,按F2进入BIOS界面(根据计算机不同不一定F2就可以进入BIOS界面,也有可能是ESC、F8、F12等),然后选择将网络启动放在第一个进行网络装机。
正在安装eth0的网卡。
步骤三:因为在图解六中的“软件包选择”里面并没有选,所以这里出现提示,要求手动选择,直接点击下一步即可。
步骤四:点击图中reboot,然后在按F2键进入到BIOS界面将重网络启动放在最下面然后启动系统,不然你的系统又要开始重装了。
结果:客户机系统自动安装完成!(输入的用户名与密码就是服务器的用户与密码即可进入系统)
本文转自白羊IT51CTO博客,原文链接:http://blog.51cto.com/000011211684/1688593,如需转载请自行联系原作者