pxe安装系统
00、环境
pxe主机:centos8
网络:
eth0使用vmnet8,用作远程连接
eth1使用vmnet10,仅主机模式,用作局域网内主机连接
ps:vmnet10关闭dhcp功能
测试主机:
网络:选择vmnet10模式,不安装系统
01、关闭防火墙
[root@pxe-template ~]# systemctl disable firewalld --now
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@pxe-template ~]# setenforce 0
[root@pxe-template ~]# getenforce
Permissive
02、安装dhcp
1、安装dhcp服务
[root@pxe-template ~]# yum install -y dhcp-server
2、修改dhcp配置文件,网段设置需要和eth1的IP地址在同一个网段
[root@pxe-template ~]# cat /etc/dhcp/dhcpd.conf
subnet 172.16.0.0 netmask 255.255.255.0 {
range 172.16.0.100 172.16.0.200;
}
3、重启dhcp服务
[root@pxe-template ~]# systemctl restart dhcpd
4、查看dhcp的端口号
[root@pxe-template ~]# netstat -lntup | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 2802/dhcpd
03、安装tftp
1、安装tftp服务
[root@pxe-template ~]# yum install -y tftp-server
2、启动tftp服务
[root@pxe-template ~]# systemctl enable tftp --now
Created symlink /etc/systemd/system/sockets.target.wants/tftp.socket → /usr/lib/systemd/system/tftp.socket.
#查看端口号
[root@pxe-template ~]# netstat -lntup | grep 69
udp6 0 0 :::69 :::* 1/systemd
3、添加配置文件到tftp根目录
# 查看tftp服务的家目录
[root@pxe-template ~]# cat /lib/systemd/system/tftp.service
[Unit]
Description=Tftp Server
Requires=tftp.socket
Documentation=man:in.tftpd
[Service]
ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
StandardInput=socket
[Install]
Also=tftp.socket
ps:tftp由systemd管理,在systemd配置文件可以看到tftp启动加载/var/lib/tftpboot
/var/lib/tftpboot为tfpt的根目录
# 生成配置文件
[root@pxe-template ~]# yum install -y syslinux
[root@pxe-template ~]# ls /usr/share/syslinux/
altmbr.bin cpu.c32 dmitest.c32 hdt.c32 isohdpfx_f.bin lfs.c32 lua.c32 pcitest.c32 sanboot.c32 vesamenu.c32
altmbr_c.bin cpuid.c32 dosutil hexdump.c32 isohdppx.bin libcom32.c32 mboot.c32 pmload.c32 sdi.c32 vpdtest.c32
altmbr_f.bin cpuidtest.c32 elf.c32 host.c32 isohdppx_c.bin libgpl.c32 mbr.bin poweroff.c32 sysdump.c32 whichsys.c32
cat.c32 debug.c32 ethersel.c32 ifcpu64.c32 isohdppx_f.bin liblua.c32 mbr_c.bin prdhcp.c32 syslinux64.exe zzjson.c32
chain.c32 dhcp.c32 gfxboot.c32 ifcpu.c32 isolinux.bin libmenu.c32 mbr_f.bin pwd.c32 syslinux.c32
cmd.c32 diag gptmbr.bin ifmemdsk.c32 isolinux-debug.bin libutil.c32 memdisk pxechn.c32 syslinux.com
cmenu.c32 dir.c32 gptmbr_c.bin ifplop.c32 kbdmap.c32 linux.c32 meminfo.c32 pxelinux.0 syslinux.exe
config.c32 disk.c32 gptmbr_f.bin isohdpfx.bin kontron_wdt.c32 lpxelinux.0 menu.c32 reboot.c32 vesa.c32
cptime.c32 dmi.c32 gpxecmd.c32 isohdpfx_c.bin ldlinux.c32 ls.c32 pci.c32 rosh.c32 vesainfo.c32
# 将pxelinux.0文件放到tftp服务的个目录下,供客户端下载
[root@pxe-template ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# 修改dhcp服务配置文件,指定客户端下载的文件,和下载文件的tftp服务器
[root@pxe-template ~]# cat /etc/dhcp/dhcpd.conf
subnet 172.16.0.0 netmask 255.255.255.0 {
range 172.16.0.100 172.16.0.200;
next-server 172.16.0.10;
filename "pxelinux.0";
}
4、创建pxelinux.cfg目录,编辑default文件指定引导界面的menu
[root@pxe-template ~]# mkdir /var/lib/tftpboot/pxelinux.cfg/
[root@pxe-template ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 # 指定使用的引导文件
timeout 30000
label tyb # 标签
ps:常用的引导文件 vesamenu.c32 menu.c32
# 将引导文件放在tftp服务的根目录
[root@pxe-template ~]# cp /usr/share/syslinux/* /var/lib/tftpboot/
4、安装httpd
1、安装httpd
[root@pxe-template ~]# yum install -y httpd
2、创建用于存放软件包的目录
[root@pxe-template ~]# mkdir /var/www/html/iso
3、将镜像文件复制到iso目录
[root@pxe-template ~]# cp -rp /mnt/* /var/www/html/iso/
[root@pxe-template ~]# ll /var/www/html/iso/
total 56
dr-xr-xr-x. 4 root root 38 Apr 4 2019 AppStream
dr-xr-xr-x. 4 root root 38 Apr 4 2019 BaseOS
dr-xr-xr-x. 3 root root 18 Apr 4 2019 EFI
-r--r--r--. 1 root root 8266 Mar 1 2019 EULA
-r--r--r--. 1 root root 1455 Apr 4 2019 extra_files.json
-r--r--r--. 1 root root 18092 Mar 1 2019 GPL
dr-xr-xr-x. 3 root root 76 Apr 4 2019 images
dr-xr-xr-x. 2 root root 256 Apr 4 2019 isolinux
-r--r--r--. 1 root root 103 Apr 4 2019 media.repo
-r--r--r--. 1 root root 1669 Mar 1 2019 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root 5134 Mar 1 2019 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root 1796 Apr 4 2019 TRANS.TBL
[root@pxe-template ~]#
5、启动服务
[root@pxe-template ~]# systemctl enable dhcpd --now
6、将系统内核文件和内存镜像文件放到tftp服务的根目录
[root@pxe-template ~]# cp /mnt/isolinux/vmlinuz /mnt/isolinux/initrd.img /var/lib/tftpboot/
5、最终修改default文件
[root@pxe-template ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 30000
label install centos8
kernel vmlinuz
append initrd=initrd.img method=http://172.16.0.10/iso
[root@pxe-template ~]#
Kickstart
==ks文件主要用于系统的自动化安装==
实列:
[root@pxe-template ~]# cat anaconda-ks.cfg
#version=RHEL8
ignoredisk --only-use=nvme0n1
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
# Use graphical install
graphical
repo --name="AppStream" --baseurl=file:///run/install/repo/AppStream
# Use CDROM installation media
cdrom
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto --no-activate
network --bootproto=dhcp --device=eth1 --onboot=off --ipv6=auto
network --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $6$.vqy6BYItJLHZBsv$9m7.p/4Vofysmyazy1C9bk8sxAMFhn4dY2wmQGB4.OwR9lfpDRUCKqpKHK0rITbYSF4jawakG1z1sGbETKcy9/
# Run the Setup Agent on first boot
firstboot --enable
# Do not configure the X Window System
skipx
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
user --name=tyb --password=$6$kOS/jwnqPWtFzSun$mWhuIoTxExTE9zb5xwTPukVqa8cz3IV26x8RwFnoMqkIEpPz/UyyEMn6JauNnj8ZTZR8cFGap5dIJK11gRsFq. --iscrypted --gecos="tyb"
%packages
@^minimal-environment
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
将ks文件加入到系统启动
1、获取ks文件
方式:
1)可以通过修改anaconda-ks.cfg文件获得
2)通过安装system-config-kickstart生成
yum install system-config-kickstart
启动 Kickstart Configurator,请将系统引导至图形环境,然后运行 system-config-kickstart,或在 GNOME 桌面上点击 应用程序 → 系统工具 → Kickstart,或者在 KDE 桌面上点击 开始应用程序启动器+应用程序 → 系统 → Kickstart。
2、将ks文件放到http服务的根目录
[root@pxe-template ~]# cp anaconda-ks.cfg /var/www/html/
3、修改/var/lib/tftpboot/pxelinux.cfg/default
[root@pxe-template ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 30000
label install centos8
kernel vmlinuz
append initrd=initrd.img method=http://172.16.0.10/iso ks=http://172.16.0.10/anaconda-ks.cfg
总结
pxe引导需要的文件
1、dhcp配置文件 ---dhcp服务
[root@pxe-template ~]# cat /etc/dhcp/dhcpd.conf
subnet 172.16.0.0 netmask 255.255.255.0 {
range 172.16.0.100 172.16.0.200;
next-server 172.16.0.10;
filename "pxelinux.0";
}
作用:指定配置dhcp的IP地址范围,指定tftp服务器地址,指定下载pxelinux.0
2、/var/lib/tftpboot/ ---tftp服务
pxelinux.0 # 系统安装时下载的第一个文件
ldlinux.c32 ---安装syslinux包后生成
vmlinuz # 系统内核文件
initrd.img # 内存镜像文件
menu.c32 # 系统引导文件(简洁版)
vesamenu.c32 # 系统引导文件(豪华版)
一堆syslinux生成的引导文件
3、/var/lib/tftpboot/pxelinux.cfg/default ---指定系统内核文件,内存镜像文件,软件包地址
[root@pxe-template ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 30000
label install centos8
kernel vmlinuz
append initrd=initrd.img method=http://172.16.0.10/iso
4、 /usr/share/syslinux ---sysliux
需要安装syslinux包
生成安装系统所需要的引导文件
将所有的引导文件都放入tftp服务的根目录下,供客户端下载
5、/var/www/html/iso ---http服务
主要用与存放系统安装所需要的软件包,以http的形式提供为客户端
这里直接怪哉系统镜像,或者拷贝系统奖项到这里即可
需要在/var/lib/tftpboot/pxelinux.cfg/default文件中指定软件包所存放的位置