红帽官方安装指导文档链接
说明:Preboot Excution Environment 预启动执行环境 PXE(网络自动化安装操作系统)
Preboot Excution Environment 预启动执行环境
Intel公司研发
基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载 映像,并由此支持通过网络启动操作系统
PXE可以引导和安装Windows,linux等多种操作系统
总结:网卡从dhcp服务器获取ip,并获取dhcp服务器配置文件中的pxelinux.0的文件和tftp连接的文件服务器ip地址;
网卡中集成的tftp客户端软件下载tftp服务器上的pxelinux.0(可以理解为grub),vmlinuz,initramfs;
之后加载tftp服务器上下载的/var/lib/tftpboot/pxelinux.cfg/default。default中为启动菜单项,其配置和制作光盘启动的菜单内容一样,即把linux ip=192.168.31.* netmask=255.0.0.0 ks=ks7.cfg写到启动菜单里。
然后启动菜单根据ks7.cfg应答文件(手动安装时选择的众多选择项被按照一定格式写到ks7.cfg文件中了)设置安装中的选项。而ks7.cfg中的url链接为安装操作系统所需安装包,即链接的dhcp服务器或者其它文件服务器提供下载安装包
此实验是一个单独的实验,所有服务都是从新配置,只是ks7.cfg文件是之前21.1半自动化安装centos6,centos7实验2生成的;
此处centos7为一个仅主机模式的网卡(配置ip为192.168.31.7)位于vmnet1仅主机模式的专有网络,基于21.2dhcp服务和PXE在centos7上搭建的dhcp服务完成,都是同一个centos7;
1、安装前准备:
关闭防火墙和SELINUX,DHCP服务器静态IP
2、安装软件包
httpd tftp-server dhcp syslinux system-config-kickstart
3、配置文件共享服务:
systemctl enable httpd
systemctl start httpd
mkdir /var/www/html/centos/7
mount /dev/sr0 /var/www/html/centos/7
4、准备kickstart文件
/var/www/html/ks/centos7.cfg 注意:权限
5、配置tftp服务
systemctl enable tftp.socket
systemctl start tftp.socket
6、配置DHCP服务
vim /etc/dhcp/dhcpd.conf
option domain-name "example.com";
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.200;
filename "pxelinux.0";
next-server 192.168.100.100;
}
systemctl enable dhcpd
systemctl start dhcpd
syslinux提供了pxelinux.0 提供了引导程序,可以理解为grub
7、准备相关文件
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
文件列表如下:
/var/lib/tftpboot/
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
上述文件列表所列的都是必须的文件
8、准备启动菜单
Vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 600
menu title PXE INSTALL MENU
label auto
menu label Auto Install CentOS 7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.100.100/ks/centos7.cfg
label manual
menu label Manual Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.100.100/centos/7
label local
menu default
menu label ^Boot from local drive
localboot 0xffff
1、 关闭selinux,清除防火墙
[root@centos7:~ ]# yum install httpd tftp-server dhcp syslinux
2、开启dhcp服务
dhcp服务的67端口
[root@centos7:~ ]# ss -ntlu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:5353 *:*
udp UNCONN 0 0 *:36475 *:*
udp UNCONN 0 0 *:734 *:*
udp UNCONN 0 0 192.168.122.1:53 *:*
udp UNCONN 0 0 *:67
并且在dhcp服务的配置文件中配置好pxelinux.0的文件名和tftp需要连接的服务器地址,如下
subnet 192.168.31.0 netmask 255.255.255.0 {
range 192.168.31.100 192.168.31.130;
option routers 192.168.31.254;
filename "pxelinux.0";
server-name "192.168.31.7";
}
重启dhcpd服务:systemctl restart dhcpd
设为开机启动:systemctl enable dhcpd
3、开启tftp服务,端口号69
[root@centos7:~ ]# yum install tftp-server
[root@centos7:~ ]# rpm -ql tftp-server
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
[root@centos7:~ ]# ss -nulp
UNCONN 0 0 :::69 :::*
users:(("in.tftpd",pid=3845,fd=0),("systemd",pid=1,fd=24))
[root@centos7:~ ]# cd /var/lib/tftpboot/
[root@centos7:/var/lib/tftpboot ]# cp /etc/fstab .
[root@centos7:/var/lib/tftpboot ]#
[root@centos6 ~ ]#yum info tftp
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
https://172.18.0.1/epel/6/%24basharch/repodata/repomd.xml: [Errno 14] PYCURL ERROR 7 - "Failed to connect to 172.18.0.1: Network is unreachable"
Trying other mirror.
Available Packages
Name : tftp
Arch : x86_64
Version : 0.49
Release : 8.el6
Size : 32 k
[root@centos6 ~ ]#yum install tftp
[root@centos6 ~ ]#tftp 192.168.31.7
4、httpd服务
开启httpd服务,挂载centos7光盘到/var/www/html/centos/7/os/x86_64,并确保浏览器可以打开看到光盘内容。配好yum仓库
把应答文件ks7.cfg放到/var/www/html/ksdir/目录下,并修改ks7.cfg中的url yum源路径等
启动httpd服务,并设为开机启动
systemctl start httpd
systemctl enable httpd
5、syslinux
查看syslinux内容包含如下两项内容
[root@centos7:~ ]# rpm -ql syslinux
/usr/share/syslinux/menu.c32
/usr/share/syslinux/pxelinux.0
[root@centos7:/var/lib/tftpboot ]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} .
[root@centos7:/var/lib/tftpboot ]# ls
menu.c32 pxelinux.0
[root@centos7:/var/lib/tftpboot ]# cp /media/isolinux/{vmlinuz,initrd.img} .
[root@centos7:/var/lib/tftpboot ]# ls
initrd.img menu.c32 pxelinux.0 vmlinuz
[root@centos7:/var/lib/tftpboot ]# mkdir pxelinux.cfg
[root@centos7:/var/lib/tftpboot ]# cp /media/isolinux/isolinux.cfg pxelinux.cfg/default
[root@centos7:/var/lib/tftpboot ]# ls
initrd.img menu.c32 pxelinux.0 pxelinux.cfg vmlinuz
6、default
[root@centos7:/var/lib/tftpboot/pxelinux.cfg ]# vim default
#default vesamenu.c32
default menu.c32
timeout 600
menu title zhaoliying
label auto
menu label ^Auto Install CentOS 7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.31.7/ksdir/ks7.cfg
label menu
menu label ^Manual install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.31.7/centos/7/os/x86_64/
label local
menu label Boot from ^local drive
localboot 0xffff
7、确认
[root@centos7:/var/lib/tftpboot ]# tree
.
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
1 directory, 5 files