PXE(preboot execute environment,预启动执行环境)
如果只有一两台电脑要装系统,我们可以使用光盘或者U盘装系统,假如有成百上千台电脑需要装操作系统,如果还用光盘U盘的方式去安装,那是非常非常麻烦的,但是还好有PXE启动,配合kickstart就可以实现通过网络来给众多电脑装操作系统了。
1.配置yum源,配置dhcp服务 客户端开机后没有IP,请求服务端,dhcp服务器分配给客户端IP,之前的章节都有关于yum源以及dhcp的章节,这里不再做解释。
2.systemctl stop firewalld.service 关闭火墙,防止客户端访问不到服务器的文件`
3.yum install syslinux tftp-server -y 安装tftp-server提供tftp服务,为pxe客户端提供文件。安装syslinux是为了使用pxelinux.0文件。
[root@pxe ~]# systemctl stop firewalld.service
[root@pxe ~]# yum install syslinux tftp-server.x86_64 -y
4.cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 把pxelinux.0通过tftp共享出来,以便客户端可以读取此文件,pxelinux.0引导文件引导vmlinux和initrd两个启动文件。
5.vim /etc/xinetd.d/tftp 将disable设置为no,允许tftp服务开启 xinetd是tftp的守护文件 要开启tftp服务,需要xinetd同意,rhel7.0之后的版本可以直接重启tftp服务,rhel7.0之前的版本需要先设置xinetd然后重启xinetd服务。
6.systemctl restart xinetd.service 重启xinetd服务。可以通过chkconfig命令查看tftp是否开启
7.vim /etc/dhcp/dhcpd.conf 修改dhcp的配置文件,因为客户端需要通过dhcp服务将服务器的pxelinux.0共享来读取这个文件
30 subnet 172.25.254.0 netmask 255.255.255.0 {
31 range 172.25.254.60 172.25.254.80;
32 option routers 172.25.254.108;
33 next-server 172.25.254.108; tftp所在的服务器的IP
34 filename “pxelinux.0”; 共享文件的名称
35 }
8.systemctl restart dhcpd.service
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxe ~]# vim /etc/xinetd.d/tftp
[root@pxe ~]# systemctl restart xinetd.service
[root@pxe ~]# vim /etc/dhcp/dhcpd.conf
[root@pxe ~]# tail -n 5 /etc/dhcp/dhcpd.conf
range 192.168.1.50 192.168.1.80;
option routers 192.168.1.120;
next-server 192.168.1.120;
filename "pxelinux.0";
}
[root@pxe ~]# systemctl restart dhcpd.service
9.将真实主机的镜像挂载到/mnt下,为了后面拷文件
[root@foundation75 Desktop]# mount rhel-server-7.3-x86_64-dvd.iso /mnt
mount: /dev/loop0 is write-protected, mounting read-only
[root@foundation75 Desktop]# df
Filesystem 1K-blocks Used Available Use% Mounted on
.......... ......................................
/dev/loop0 3704296 3704296 0 100% /mnt
[root@foundation75 Desktop]# cd /mnt
[root@foundation75 mnt]# ls
addons EULA images LiveOS Packages repodata RPM-GPG-KEY-redhat-release
EFI GPL isolinux media.repo release-notes RPM-GPG-KEY-redhat-beta TRANS.TBL
[root@foundation75 mnt]# cd isolinux/ 这个目录下的文件都是需要用到的
[root@foundation75 isolinux]# ls
boot.cat grub.conf isolinux.bin memtest TRANS.TBL vesamenu.c32
boot.msg initrd.img isolinux.cfg splash.png upgrade.img vmlinuz
10.cd /var/lib/tftpboot/ mkdir pxelinux.cfg 按照提示文件(/usr/share/doc/syslinux-4.05/pxelinux.txt)在tftp服务的共享目录下创建此目录
[root@pxe ~]# cd /var/lib/tftpboot/
[root@pxe tftpboot]# mkdir pxelinux.cfg
11.按照提示文件:将镜像的文件isolinux.cfg拷贝到/var/lib/tftpboot/pxelinux.cfg/下,并且重命名为default mv isolinux.cfg default,把镜像的所有文件拷到/var/lib/tftpboot/下
[root@pxe tftpboot]# cd pxelinux.cfg/
[root@pxe pxelinux.cfg]# scp [email protected]:/mnt/isolinux/isolinux.cfg .
The authenticity of host '192.168.1.20 (192.168.1.20)' can't be established.
ECDSA key fingerprint is c4:d7:0d:5e:96:29:ab:dc:47:77:5a:cf:3e:ce:2c:cd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.20' (ECDSA) to the list of known hosts.
[email protected]'s password:
isolinux.cfg 100% 3166 3.1KB/s 00:00
[root@pxe pxelinux.cfg]# ls
isolinux.cfg
[root@pxe pxelinux.cfg]# mv isolinux.cfg default
[root@pxe pxelinux.cfg]# ls
default
[root@pxe pxelinux.cfg]# cd ..
[root@pxe tftpboot]# scp [email protected]:/mnt/isolinux/* .
[email protected]'s password:
boot.cat 100% 2048 2.0KB/s 00:00
boot.msg 100% 84 0.1KB/s 00:00
grub.conf 100% 321 0.3KB/s 00:00
initrd.img 100% 43MB 42.6MB/s 00:01
isolinux.bin 100% 24KB 24.0KB/s 00:00
isolinux.cfg 100% 3166 3.1KB/s 00:00
memtest 100% 186KB 186.4KB/s 00:00
splash.png 100% 186 0.2KB/s 00:00
TRANS.TBL 100% 2438 2.4KB/s 00:00
upgrade.img 100% 48MB 48.0MB/s 00:00
vesamenu.c32 100% 150KB 149.5KB/s 00:00
vmlinuz 100% 5265KB 5.1MB/s 00:00
[root@pxe tftpboot]# ls
boot.cat initrd.img memtest splash.png vesamenu.c32
boot.msg isolinux.bin pxelinux.0 TRANS.TBL vmlinuz
grub.conf isolinux.cfg pxelinux.cfg upgrade.img
12.vim default 修改default文件内容,当客户端进入预启动界面选择安装选项后,实际上界面什么也看不到,依然是一团黑,但这并不是代表没有操作,只是隐藏了显示的内容,如果想要显示,只需进入此文件删掉64行的quiet即可
61 label linux
62 menu label ^Install Red Hat Enterprise Linux 7.3
63 kernel vmlinuz
64 append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.3\x20Server.x86_64
65
客户端:
打开虚拟机管理:virt-manager
以server虚拟机作为例子,将server虚拟机的引导选项设置为网络引导的优先级最高,然后重启虚拟机就可以看到效果。
前面已经做了PXE了,然后只需设置默认选项为install选项,配合kickstart就可以自动批量操作系统了,如果觉得预安装的选择界面等待时间过长,可以将时间改短。如果觉得背景不美观,也可以换背景图片。
1.修改默认选项:
[root@pxe pxelinux.cfg]# ls
default
[root@pxe pxelinux.cfg]# pwd
/var/lib/tftpboot/pxelinux.cfg
[root@pxe pxelinux.cfg]# vim default
将68行的menu default移动到install的选项,即移动到63行,这样本来默认选项为检测后安装变成了第一个直接安装,跟改后的default61-70行的内容为:
61 label linux
62 menu label ^Install Red Hat Enterprise Linux 7.3 预安装选项第一个
63 menu default
64 kernel vmlinuz
65 append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.3\x20Server.x86_64
66
67 label check
68 menu label Test this ^media & install Red Hat Enterprise Linux 7.3 预安装选项第二个
69 kernel vmlinuz
70 append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.3\x20Server.x86_64 rd.live.check quiet
2.修改等待时间
default文件的第二行表示的是修改等待时间10代表一秒,默认600,也就是60秒。这里我更改为5秒,也就是50。
2 timeout 50
3.修改背景图片
default文件的第10行表示背景图片,可以自行修改,但需要格式正确。
10 menu background splash.png
4 、配置kickstart
要配置kickstart,首先还得装http服务,需要把生成的ks.cfg脚本放到共享目录下,让客户端可以执行。然后安装kickstart
[root@pxe tftpboot]# yum install httpd -y
[root@pxe tftpboot]# systemctl start httpd
[root@pxe tftpboot]# yum install system-config-kickstart.noarch -y
[root@pxe ~]# system-config-kickstart 如果是远程连接,需要加-X连接到图形化界面
这时会进入kickstart的配置界面,这里的配置看以前的kickstart章节,这里不再重复。配置完成后将文件保存到/var/www/html/下
[root@pxe ~]# cd /var/www/html/
[root@pxe html]# ls
ks.cfg
在图形化界面并不能完全配置好,因此,还需要修改ks.cfg文件
11 timezone Asia/Shanghai
38 %packages
39 @base 基础软件包
40 @core 核心软件
41 @fonts 字形字体
42 @gnome-desktop 桌面
43 @input-methods 输入法
44 @x11
45 vnc vnc
46 lftp lftp服务
47 %end
48
49 %post
50 cat > /etc/yum.repo.d/yum.repo << EOF
配置完kickstart之后当然还需要将kickstart和PXE联系起来
[root@pxe html]# cd /var/lib/tftpboot/pxelinux.cfg/
[root@pxe pxelinux.cfg]# ls
default
[root@pxe pxelinux.cfg]# vim default
65 append initrd=initrd.img repo=http://192.168.1.20/mnt ks=http://192.168.1.120/ks.cfg
repo表示yum源 ks表示ks.cfg脚本所在位置
重启服务
[root@pxe pxelinux.cfg]# systemctl restart dhcpd.service
[root@pxe pxelinux.cfg]# systemctl restart httpd.service
打开虚拟机管理器,创建一个新的虚拟机,用PXE创建
后面都是默认。
当出来上方这个图片时就表示自动批量安装操作系统成功了。