自动化PXE系统安装
流程
服务器端 dhcpd 为网卡开机引导分配IP
服务器端 tftp 为引导界面加载配置
服务器端 kickstart 为操作系统免交互生成ks应答文件
服务器端 httpd 采用httpd网络安装方式
服务器端安装软件包
[root@PXE]# yum -y install tftp-server dhcp httpd system-config-kickstart
配置dhcpd服务
cat /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
ignore client-updates;
set vendorclass = option vendor-class-identifier;
option pxe-system-type code 93 = unsigned integer 16;
subnet 192.168.10.0 netmask 255.255.255.0 {
option routers 192.168.10.5;
option domain-name-servers 192.168.10.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.10.100 192.168.10.254;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.10.10; ###指定下一跳服务器为本机
filename "pxelinux.0"; ###启动引导文件yum install syslinux获取
}
systemctl restart dhcpd;systemctl enable dhcpd
配置tftp
yum install syslinux -y
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
mount /dev/sr0 /mnt ###挂载光驱centos7
mkdir -p /var/lib/tftpboot/pxelinux.cfg/
cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
cp /mnt/isolinux/initrd.img /var/lib/tftpboot/
cp /mnt/isolinux/vmlinuz /var/lib/tftpboot/
cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/
cp /mnt/isolinux/splash.png /var/lib/tftpboot/
sed -i.bak /disable/s@yes@no@g /etc/xinetd.d/tftp ###修改tftp配置文件
systemctl restart tftp
修改引导文件
cat pxelinux.cfg/default
default vesamenu.c32
timeout 600
display boot.msg
label linux
menu label ^Install CentOS 7
kernel vmlinuz
menu default
append initrd=initrd.img ks=http://192.168.10.10/ks.cfg ###指定ks文件所在服务器
label local
menu label Boot from ^local drive
localboot 0xffff
第一阶段,进入引导界面完成。
在客户端进行网卡启动,PXE将会显示如下图状态。
第二阶段: 配置KS自动应答文件
[root@PXE ~]# system-config-kickstart ###启动报错
Could not open display because no X server is running.
Try running 'system-config-kickstart --help' for a list of options.
[root@PXE ~]# yum -y install xorg-x11-xauth ###使用xshell,重新连接ssh解决报错
[root@PXE ~]# echo 'export LANG=en.US' >>/root/.bash_profile ### 重新登录,更新用户环境变量为英文或安装图形界面
[root@PXE ~]# yum grouplist ###列出软件组
[root@PXE ~]# yum groupinstall "GNOME Desktop" ###安装图形界面
[root@PXE ~]# cat /etc/yum.repos.d/custom.repo ###做个yum源,将光盘挂载至/mnt目录,以解决ks软件包选择项报错。
[development]
name=my-centos7
baseurl=file:///mnt/
enabled=1
gpgcheck=0
[root@PXE ~]# system-config-kickstart ###此时启动可正常显示中文进行
ks应答文件内容参考
cat /root/original-ks.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$mEGuc6LS$NQ041dNfkffuEnni2YtfG0 ###123456
# System language
lang en_US
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled
# Firewall configuration
firewall --disabled
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai --isUtc
# Use network installation
url --url="http://192.168.10.10/centos7"
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=150
part swap --size=4096
part pv.01 --size=1 --grow
volgroup vg_root pv.01
logvol /var --vgname=vg_root --size=8096 --name=lv_var
logvol /tmp --vgname=vg_root --size=1024 --name=lv_tmp
logvol / --vgname=vg_root --size=1 --grow --name=lv_root
%packages
@fonts
@gnome-desktop
@performance
@remote-desktop-clients
@x11
-cjkuni-uming-fonts
-dejavu-sans-fonts
-dejavu-sans-mono-fonts
-dejavu-serif-fonts
-gnu-free-mono-fonts
-gnu-free-sans-fonts
-gnu-free-serif-fonts
-google-crosextra-caladea-fonts
-google-crosextra-carlito-fonts
-google-noto-emoji-fonts
-jomolhari-fonts
-khmeros-base-fonts
-liberation-mono-fonts
-liberation-sans-fonts
-liberation-serif-fonts
-lklug-fonts
-lohit-assamese-fonts
-lohit-bengali-fonts
-lohit-devanagari-fonts
-lohit-gujarati-fonts
-lohit-kannada-fonts
-lohit-malayalam-fonts
-lohit-marathi-fonts
-lohit-nepali-fonts
-lohit-oriya-fonts
-lohit-punjabi-fonts
-lohit-tamil-fonts
-lohit-telugu-fonts
-madan-fonts
-nhn-nanum-gothic-fonts
-open-sans-fonts
-overpass-fonts
-paktype-naskh-basic-fonts
-paratype-pt-sans-fonts
-qgnomeplatform
-sil-abyssinica-fonts
-sil-nuosu-fonts
-sil-padauk-fonts
-smc-meera-fonts
-stix-fonts
-thai-scalable-waree-fonts
-ucs-miscfixed-fonts
-vlgothic-fonts
-wqy-microhei-fonts
-wqy-zenhei-fonts
-xdg-desktop-portal-gtk
%end
配置采用http 进行网络安装
ln -s /mnt /var/www/html/centos7 ###创建光盘挂载点指向http目录。将生成的ks.cfg文件复制至/var/www/html/ks.cfg
systemctl restart httpd;systemctl enable httpd
curl http://192.168.10.10/centos7 ###测试访问正常
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://192.168.10.10/centos7/">here</a>.</p>
</body></html>
PXE curl:(23) Failed writing body (4096!=16384)
该报错请保证客户端机内存大于 1.5G。https://blog.csdn.net/weixin_36242811/article/details/105207
参考学习
https://www.bilibili.com/video/BV1pA411W7wQ?p=35&spm_id_from=pageDriver
https://www.jianshu.com/p/dced9f9d422f
后续问题
采用cobbler 工具,自动化进行,客户端主机为UEFI引导方式安装。