实验:PXE实现自动化安装系统

前提条件:
网卡:仅主机,关闭vmware 的dhcp服务
实验:PXE实现自动化安装系统_第1张图片

1 HTTP
yum install httpd
systemctl start httpd
systemctl enable httpd

/dev/sr0 /var/www/html/centos/7/os/x86_64 #挂载光盘,注意先确定sr0是否为7系统
/dev/sr1 /var/www/html/centos/6/os/x86_64 #挂载光盘,注意先确定sr1是否为6系统

2 准备KS文件
获取方式:1通过修改安装好的系统下的家目录下的anaconda-ks.cfg文件
2通过kickstart图形化软件制作应答文件
/var/www/html/ks7_mini.cfg
url --url="http://192.168.36.7/centos/7/os/x86_64/" #应答文件中指定安装源文件
/var/www/html/ks6_mini.cfg
url --url="http://192.168.36.7/centos/6/os/x86_64/" #应答文件中指定安装源文件

3 tftp
yum install tftp-server #安装tftp服务
systemctl start tftp #启动服务
systemctl enable tftp #下次开机启动生效

4 DHCP服务
yum install dhcp #安装DHCP服务
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf #参考DHCP产生的示例文件进行修改

vim /etc/dhcp/dhcpd.conf
option domain-name "magedu.com";
option domain-name-servers 114.114.114.114, 223.5.5.5;
default-lease-time 86400 ; #最小租期时间单位为秒
max-lease-time 864000; #最大租期时间单位为秒
subnet 192.168.36.0 netmask 255.255.255.0 {
range 192.168.36.10 192.168.36.100;
option routers 192.168.36.254;
next-server 192.168.36.7; #提供引导文件的服务器IP地址
filename "pxelinux.0"; #指明引导文件名称
}

systemctl start dhcpd #启动DHCP服务
systemctl enable dhcpd #开机启动DHCP服务

5 准备启动文件
yum install syslinux #安装
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot #将引导文件导入到tftp
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot #将菜单文件导入到tftp
cp /misc/cd/isolinux/vmlinuz /var/lib/tftpboot/ #将内核文件导入到tftp
cp /misc/cd/isolinux/initrd.img /var/lib/tftpboot/ #将临时根文件系统导入到tftp
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #将光盘配置文件导入到tftp
tree /var/lib/tftpboot/ #必须产生下列文件结构
/var/lib/tftpboot/
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│   └── default
└── vmlinuz

1 directory, 5 files

6 准备启动菜单文件
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 60(单位:十分之一秒 )
menu title Auto Install CentOS
label centos7
menu label Install CentOS ^Mini 7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.36.7/ksdir/ks7_mini.cfg
label local
menu default
menu label Boot from ^local drive
localboot 0xffff

7 修改为支持多系统
mkdir /var/lib/tftpboot/kernel{6,7}
cd /var/lib/tftpboot/
mv vmlinuz initrd.img kernel7/
cp /var/www/html/centos/6/os/x86_64/isolinux/vmlinuz kernel6
cp /var/www/html/centos/6/os/x86_64/isolinux/initrd.img kernel6/
[root@centos7 tftpboot]#tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── kernel6
│   ├── initrd.img
│   └── vmlinuz
├── kernel7
│   ├── initrd.img
│   └── vmlinuz
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
└── default

3 directories, 7 files

vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 60
menu title Auto Install CentOS
label centos7
menu label Install CentOS ^Mini 7
kernel kernel7/vmlinuz
append initrd=kernel7/initrd.img ks=http://192.168.36.7/ksdir/ks7_mini.cfg
label centos6
menu label Install CentOS Mi^ni 6
kernel kernel6/vmlinuz
append initrd=kernel6/initrd.img ks=http://192.168.36.7/ksdir/ks6_mini.cfg
label local
menu default
menu label Boot from ^local drive
localboot 0xffff