PXE装系统流程
1 客户端启动系统,选择从网卡启动
2 从DHCP服务器中获取到IP等信息
3 从DHCP服务器中获取tftp server及网络引导程序pxelinux.0
4 通过网卡读取tftp server上的pxelinux.0到内存中
5 在内存中执行pxelinux.0
6 去tftp server上的pxelinux.cfg/default 读取引导程序的配置文件
配置 DHCP 和 TFTP
安装 dhcp 和 tftp-server
yum -y install dhcp tftp-server
编辑 DHCP 配置文件
拷贝 DHCP 配置文件模板
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
# dhcpd.conf
...
#上半部分是全局的配置
#全局配置,子模块未配置,则以全局配置为准
#全局配置,子模块也配置,则以子模块配置为准
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
next-server 192.168.1.100; #添加:指定tftp地址
filename "pxelinux.0"; #添加:指定网络引导程序
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
...
#subnet 是子模块配置
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.50 192.168.1.99; #地址池范围
option domain-name-servers 192.168.1.11,192.168.1.111; #DNS地址(有主备两个DNS可以写两个,没有就注释)
option domain-name "example.cn"; #域(会在resolv.conf文件中生成search example.cn),作用ping server1等于ping server1.example.cn
option routers 192.168.1.1; #网关
option broadcast-address 192.168.1.255; #广播地址
default-lease-time 600; #租约期
max-lease-time 7200;
}
...
启动 DHCPD 和 TFTP
systemctl start dhcpd
[root@pxe-linux ~]# ss -natpul |grep 67
udp UNCONN 0 0 *:67 *:* users:(("dhcpd",pid=7730,fd=7))
systemctl start tftp
[root@pxe-linux ~]# ss -natpul |grep 69
udp UNCONN 0 0 :::69 :::* users:(("in.tftpd",pid=7797,fd=0),("systemd",pid=1,fd=43))
拷贝网络引导程序 pxelinux.0 文件
先查找 pxelinux.0
[root@pxe-linux ~]# locate pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
#locate 用于查找符合条件的文档。需要安装mlocate和执行updatedb命令
#updatedb:用来创建或更新 locate 命令所必需的数据库文件。
#如果没有 pxelinux.0 此文件,说明未安装syslinux(可以通过yum provides "*/pxelinux.0"反向查找到软件名)
拷贝
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
引导程序的配置文件
拷贝镜像中 isolinux 下的开机菜单为引导程序的配置文件
mkdir /var/lib/tftpboot/pxelinux.cfg
#我的镜像在另外的机器(181)上挂载
scp /var/ftp/rhel7.5/isolinux/isolinux.cfg 192.168.1.100:/var/lib/tftpboot/pxelinux.cfg/default
拷贝镜像中 isolinux 下的所有文件至tftp server
加载 pxelinux.cfg/default 配置文件的依赖
scp /var/ftp/rhel7.5/isolinux/* 192.168.1.100:/var/lib/tftpboot/
#
#其中最主要的两个文件
# vmlinuz:内核
# initrd.img:驱动程序(一定要匹配OS),Redhat6、Redhat67、Centos7
PS:安装多个系统的方法
例如:Redhat6.5
mkdir /var/lib/tftpboot/rhel6.5
#复制Redhat6.5镜像中的vmlinuz和initrd.img
scp /var/ftp/rhel6.5/images/pxeboot/* 192.168.1.100:/var/lib/tftpboot/rhel6.5
#修改开机菜单(添加rhel6.5的菜单)
vim /var/lib/tftpboot/pxelinux.cfg/default
...
#添加
label rhel6
menu label ^Install Redhat 6.5
kernel /rhel6.5/vmlinuz
append initrd=/rhel6.5/initrd.img
...
创建 kiskstart 文件
每个系统在 /root 下都会含有 anaconda-ks.cfg 这个文件,可以使用这个文件按自己的需要修改后使用,也可以通过system-config-kickstart图形工具生成新的。
使用xshell连接的需要安装 xorg-x11-xauth 包,然后配置xshell属性,才可以打开图形工具
#安装 system-config-kickstart 命令
yum install -y system-config-kickstart
system-config-kickstart
获取安装包这一步的 Yum 仓库配置
vim /etc/yum.repos.d/local.repo
[development] #必须是此名字,如果不是则回去不到包
name=rhel7.5
baseurl=ftp://192.168.1.181/rhel7.5
gpgcheck=0
enabled=1
配置 ks.cfg 支持 LVM
编辑 ks.cfg 文件 总的 Disk partitioning information 部分
vim ks666.cfg
...
# Disk partitioning information
part /boot --fstype="xfs" --size=200
part swap --fstype="swap" --size=4096
#part / --fstype="xfs" --size=51200
part pv.01 --grow --size=1
volgroup vg_system pv.01
logvol / --fstype="xfs" --name=lv_root --vgname=vg_system --grow --size=1
...
共享 ks666.cfg 文件
yum -y install httpd
systemctl start httpd
mkdir -p /var/www/html/ks
cp ks666.cfg /var/www/html/ks/
curl http://192.168.1.100/ks/ks666.cfg #能访问到就可以
配置无人值守安装
修改引导程序的配置文件
#修改开机菜单
vim /var/lib/tftpboot/pxelinux.cfg/default
...
timeout 60 #设置等待时间为6秒
...
#指定ks菜单
label linux
menu label ^Install Redhat 7.5
menu default #光标默认位置,只能有一个(6秒后默认引导安装此系统)
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.1.100/ks/ks666.cfg
...
使用 PXE 安装系统
进入 BIOS 界面,选择以网卡启动。
我这里物理机的型号是:IBM System x3650,开机按 F12 进入 BIOS(加载过程比想象中的长)。
报错一:没有找到引导程序 pxelinux.0 文件
参考课程:https://www.bilibili.com/video/BV1gA411i7tv?from=search&seid=9298551076595249602