搭建PXE与DHCP实现无人值守自动化安装CentOS8系统

做别名扫描添加的硬盘

[root@localhost ks]# alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"

挂载光盘

[root@localhost ks]# mount /dev/sr1 /var/www/html/centos/8
[root@localhost ks]# mount /dev/sr0 /var/www/html/centos/7

安装需要的软件

[root@localhost ks]# yum -y install dhcp-server tftp-server httpd syslinux-nonlinux

启动

[root@localhost ks]# systemctl enable --now httpd tftp dhcpd

拷贝模板文件做配置文件

[root@localhost ks]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf

default-lease-time 86400;
max-lease-time 102400;

subnet 172.31.0.0 netmask 255.255.0.0 {
  range 172.31.0.150 172.31.0.170;
  option routers 172.31.0.254;
  next-server 172.31.0.100;
  filename "pxelinux.0";
}

重启

[root@localhost ks]# systemctl enable --now httpd tftp dhcpd

CentOS8的应答文件

[root@localhost ks]# vim centos8.cfg
#version=RHEL8
# Use graphical install
ignoredisk --only-use=sda
zerombr
text
reboot
selinux --disabled
firewall --disabled
url --url="http://172.31.0.100/centos/8/"

%packages
@^minimal-environment
tree
vim
net-tools
%end

# Keyboard layouts
keyboard --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
bootloader --append="net.ifnames=0" --location=mbr --boot-drive=sda
network  --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network  --hostname=centos8.longxuan.vip

zerombr
# Partition clearing information
clearpart --all --initlabel
ignoredisk --only-use=sda
# Disk partitioning information 50G
part /boot --fstype="ext4" --ondisk=sda --size=1024
part / --fstype="xfs" --ondisk=sda --size=26000
part /data --fstype="xfs" --ondisk=sda --size=15360
part swap --fstype="swap" --ondisk=sda --size=2048

# System timezone
timezone Asia/Shanghai --isUtc --nontp

# Root password
rootpw --plaintext 123456

%addon com_redhat_kdump --disable --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
%post

mkdir /etc/yum.repos.d/bak -p
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/base.repo <<EOF
[BaseOS]
name=BaseOS
baseurl=file:///misc/cd/BaseOS
        https://mirror.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
        https://mirrors.huaweicloud.com/centos/8/BaseOS/x86_64/os/
        https://mirrors.cloud.tencent.com/centos/8/BaseOS/x86_64/os/
        https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
gpgcheck=0

[AppStream]
name=AppStream
baseurl=file:///misc/cd/AppStream
        https://mirror.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
        https://mirrors.huaweicloud.com/centos/8/AppStream/x86_64/os/
        https://mirrors.cloud.tencent.com/centos/8/AppStream/x86_64/os/
        https://mirrors.aliyun.com/centos/8/AppStream/x86_64/os/
gpgcheck=0


[epel]
name=EPEL
baseurl=https://mirror.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64
        https://mirrors.cloud.tencent.com/epel/8/Everything/x86_64
        https://mirrors.huaweicloud.com/epel/8/Everything/x86_64
        https://mirrors.aliyun.com/epel/8/Everything/x86_64
gpgcheck=0
enabled=1

[extras]
name=extras
baseurl=https://mirror.tuna.tsinghua.edu.cn/centos/8/extras/x86_64/os/
        https://mirrors.cloud.tencent.com/centos/8/extras/x86_64/os/
        https://mirrors.huaweicloud.com/centos/8/extras/x86_64/os/
        https://mirrors.aliyun.com/centos/8/extras/x86_64/os/
gpgcheck=0
enabled=1

[PowerTools]
name=CentOS- - PowerTools - mirrors.aliyun.com
baseurl=https://mirror.tuna.tsinghua.edu.cn/centos/8/PowerTools/x86_64/os/
        https://mirrors.cloud.tencent.com/centos/8/PowerTools/x86_64/os/
        https://mirrors.huaweicloud.com/centos/8/PowerTools/x86_64/os/
        https://mirrors.aliyun.com/centos/8/PowerTools/x86_64/os/
gpgcheck=0
enabled=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

EOF

cat >> /etc/profile.d/env.sh <<EOF
PS1='\[\e[1;32m\][\[\e[0m\]\[\e[1;32m\]\t \[\e[1;33m\]\u\[\e[34m\]@\h\[\e[1;31m\] \w\[\e[1;32m\]]\[\e[0m\]# '
EOF
source /etc/profile.d/env.sh
%end

创建目录

[root@localhost ks]# mkdir /var/lib/tftpboot/centos{7,8}

拷贝文件做系统启动

[root@localhost ks]# cp /var/www/html/centos/8/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos8
[root@localhost ks]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
[root@localhost ks]# cp /var/www/html/centos/8/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/

创建挂载目录

[root@localhost ks]# mkdir /var/lib/tftpboot/pxelinux.cfg/

拷贝文件

[root@localhost ks]# cp /var/www/html/centos/8/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

修改配置文件

[root@localhost ks]# vim /var/lib/tftpboot/pxelinux.cfg/default

default menu.c32
timeout 600
menu title Install CentOS Linux

label linux8
menu label Auto Install CentOS Linux ^8
kernel centos8/vmlinuz
append initrd=centos8/initrd.img ks=http://172.31.0.100/ks/centos8.cfg
  
label linux7
menu label Auto Install CentOS Linux ^7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img ks=http://172.31.0.100/ks/centos7.cfg
  
label manual
menu label ^Manual Install CentOS Linux 8.0
kernel centos8/vmlinuz
append initrd=centos8/initrd.img
inst.repo=http://172.31.0.100/centos/8/
label rescue
menu label ^Rescue a CentOS Linux system 8
kernel centos8/vmlinuz
append initrd=centos8/initrd.img
inst.repo=http://172.31.0.100/centos/8/ rescue
  
label local
menu default
menu label Boot from ^local drive
localboot 0xffff

重启dhcp

[root@localhost ks]# systemctl restart dhcpd

开一台虚拟机验证

搭建PXE与DHCP实现无人值守自动化安装CentOS8系统

搭建PXE与DHCP实现无人值守自动化安装CentOS8系统

等待安装...401个包...
搭建PXE与DHCP实现无人值守自动化安装CentOS8系统

看到如下登陆界面说明安装成功!!!
搭建PXE与DHCP实现无人值守自动化安装CentOS8系统

上一篇:Linux (二十七) PXE 自动装机工具脚本编写


下一篇:PXE安装Linux系统原理详解