pxe 无人值守安装:
通过网络方式自动进行系统安装
dhcp+tftp+vsftpd/http/nfs+kickstart
1.应用场景
1)需要进行大批量的部署操作系统(批量化)
2)pc机或者是没有光驱的服务器
3)需要经常更换或者重装linux操作系统
2.需求
1)网络畅通并且有一台发布安装源的服务器
2)需要被安装系统的机器支持网络引导,有pxe芯片
3.服务器的需求
1)dhcp 用来给客户端分配ip
2)tftp 用来发布内核和驱动文件 vmlinuz initrd.img
3)配置安装启动文件 ks.cfg
kickstart
4)vsftpd 提供镜像和ks.cfg文件
vsftpd nfs http
4.原理
1)服务器端通过dhcp服务给客户端分配ip地址,并且告诉客户端谁是tftp服务器以及引导程序文件的名字
2)客户端找到tftp服务器获取引导程序文件、内核文件集驱动文件
3)服务器端通过http或者vsftpd给客户端提供安装源(光盘镜像 iso)
4)服务器端通过kickstart文件ks.cfg,实现客户端的无人值守安装
搭建pxe服务器
确保已完成以下工作:
1.已关闭防火墙
2.已关闭selinux
3.已关闭NetworkManager
4.已配置固定的ip地址
5.yum配置好
6.网络连接方式改为host-only
环境:
服务器 ip:192.168.1.253 主机名:pxe.uplooking.com
1.配置DHCP 端口:udp/67
1)安装软件
[root@pxe ~]# yum install dhcp -y
2)查看软件产生的文件
[root@pxe ~]# rpm -ql dhcp
/etc/dhcp //配置文件目录
/etc/dhcp/dhcpd.conf //配置文件
/etc/rc.d/init.d/dhcpd //启动脚本
/etc/sysconfig/dhcpd //启动脚本的配置文件
/usr/sbin/dhcpd //守护进程
/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample //配置文件的模版
/var/lib/dhcpd/dhcpd.leases //租约信息
3)配置
[root@pxe ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@pxe ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 { //网段和掩码
range 192.168.1.100 192.168.1.200; //地址池
option routers 192.168.1.254; //网关
option broadcast-address 192.168.1.255; //广播地址
default-lease-time 600; //默认租约
max-lease-time 7200; //最大租约
next-server 192.168.1.253; //指定tftp服务器的ip
filename “pxelinux.0”; //指定需要加载引导文件的名字
}
4)启动服务
[root@pxe ~]# /etc/init.d/dhcpd restart
正在启动 dhcpd: [确定]
5)查看服务是否被监听
[root@pxe ~]# netstat -tulnp | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 5224/dhcpd
2.配置tftp 端口:udp/69
1)安装软件
[root@pxe ~]#yum install tftp-server -y //该服务是由xinetd进程管理
2)配置
[root@pxe ~]#vim /etc/xinetd.d/tftp
server_args =-s /var/lib/tftpboot -c //tftp的主目录,类似于vsftpd的/var/ftp目录 -c 开启上传功能
disable =no //是否启用服务,默认不启用 no启用 yes不启用
3)启动服务
[root@pxe ~]# /etc/init.d/xinetd restart
停止 xinetd: [确定]
正在启动 xinetd: [确定]
4)查看服务是否被监听
[root@pxe ~]# netstat -tulnp | grep xinetd
udp 0 0 0.0.0.0:69 0.0.0.0:* 5397/xinetd
5)将内核和驱动文件和引导文件拷贝到tftp的主目录 vmlinuz initrd.img isolinux.0
查找文件所在位置
[root@pxe ~]# yum provides */pxelinux.0
syslinux-4.02-8.el6.x86_64 : Simple kernel loader which
: boots from a FAT filesystem
Repo : redhat6u5
Matched from:
Filename : /usr/share/syslinux/pxelinux.0
[root@pxe ~]# yum install syslinux -y
将引导文件拷贝到tftp的主目录下
[root@pxe ~]# cp -a /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxe ~]# cd /mnt/redhat/isolinux
将内核和驱动 菜单文件拷贝到tftp的主目录下 (文件在镜像内) /mnt/redhat目录是镜像的挂载点
[root@pxe ~]# cd /mnt/redhat/isolinux
[root@pxe ~]# cp -a vmlinuz initrd.img vesamenu.c32 /var/lib/tftpboot/
定义安装选项及ks.cfg文件位置
[root@pxe ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@pxe ~]# cp -a /mnt/redhat/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@pxe ~]# cd /var/lib/tftpboot/pxelinux.cfg
[root@pxe pxelinux.cfg]# vim default
22 append initrd=initrd.img ks=ftp://192.168.1.253/ks.cfg
确认
[root@pxe ~]# yum install tree -y
[root@pxe tftpboot]# cd /var/lib/tftpboot/
[root@pxe tftpboot]# tree
.
├―― initrd.img
├―― pxelinux.0
├―― pxelinux.cfg
│ └―― default
├―― vesamenu.c32
└―― vmlinuz
1 directory, 5 files
3.配置vsftpd
1)安装软件
[root@pxe ~]# yum install vsftpd -y
2)启动服务
[root@pxe ~]# /etc/init.d/vsftpd restart
关闭 vsftpd: [失败]
为 vsftpd 启动 vsftpd: [确定]
3)查看服务是否被监听
[root@pxe ~]# netstat -tulnp | grep vsftpd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 5877/vsftpd
挂载镜像
[root@pxe ~]# vim /etc/fstab
/dev/sr0 /var/ftp/pub iso9660 defaults 0 0
[root@pxe ~]# mount -a
查看镜像是否挂载
[root@pxe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 3.0G 14G 19% /
tmpfs 427M 224K 427M 1% /dev/shm
/dev/sda1 194M 34M 151M 19% /boot
/dev/sr0 3.6G 3.6G 0 100% /media/RHEL_6.5 x86_64 Disc 1
/dev/sr0 3.6G 3.6G 0 100% /mnt/redhat
/dev/sr0 3.6G 3.6G 0 100% /var/ftp/pub
5.配置kickstart Redhat提供一个安装的脚本工具,填好以后保存,默认会生成一个ks.cfg文件
[root@pxe ~]# yum install system-config-kickstart -y
[root@pxe ~]# system-config-kickstart
图形化操作
cd /mnt/redhat/isolinux/
cp boot.msg splash.jpg /var/lib/tftpboot
pxe流程图
client----->DHCP server-------------------------->tftp-server---------------->vsftpd
ip地址 next-server tftp服务器地址 pxelinux.0 ks.cfg
filename “pxelinux.0” vmlinuz pub
initrd.img
vesamenu.c32