centos 7 配置 PXE+KS,定制自己的ISO系统
一、PXE 部署安装
安装基础包
yum install -y dhcp tftp tftp-server httpd syslinux
配置DHCP
vim /etc/dhcp/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.200;
option domain-name-servers 8.8.8.8;
option routers 192.168.0.254;
option broadcast-address 192.168.0.255;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.0.254; # 指定 PXE 服务器的 IP 地址
filename "pxelinux.0";
}
编辑 /etc/sysconfig/dhcpd 文件,确保 DHCP 服务器在启动时启动并监听正确的接口。将以下行添加到该文件中:
DHCPDARGS="eth0"; # 根据您的网络接口进行修改
配置tftp服务器
vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no ###
per_source = 11
cps = 100 2
flags = IPv4
}
创建 TFTP 根目录并设置权限:
sudo mkdir /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot
sudo mkdir -p /var/www/html/centos7
mount -o loop CentOS-7-x86_64-Minimal-2009.iso /mnt
sudo cp -r /mnt/* /var/www/html/centos7/
sudo umount /mnt
配置PXE引导文件
下载并解压 PXE 引导文件(Syslinux):
cd /var/lib/tftpboot
sudo cp /usr/share/syslinux/pxelinux.0 .
sudo mkdir pxelinux.cfg
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
cp /var/www/html/centos7/isolinux/initrd.img /var/lib/tftpboot
cp /var/www/html/centos7/isolinux/vmlinuz /var/lib/tftpboot/
ks文件制作
桌面版面系统
yum install -y system-config-kickstart
1、远程连接并登录到Linux主机。
2、依次执行如下命令,安装桌面环境。
yum groupinstall "GNOME Desktop" "Graphical Administration Tools" -y
3、执行如下命令,设置默认使用图形化桌面环境启动系统。
systemctl set-default graphical.target
4、通过reboot命令,重启
5、使用 system-config-kickstart 命令配置ks文件


ks文件举例
cat /var/www/html/centos7/ksvm1.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$.DKxAOzF$xpdyoD3f.RCIsuGbET2oY0
# System language
lang en_US
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=em1
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://192.168.0.254/centos7"
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --asprimary --fstype="xfs" --grow --ondisk=sda --size=1
part /boot --fstype="xfs" --ondisk=sda --size=500
----
在 /var/lib/tftpboot/pxelinux.cfg 目录下创建一个名为 default 的文件,内容如下:
cat /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT menu.c32
MENU TITLE PXE Menu
TIMEOUT 300
TOTALTIMEOUT 9000
ONTIMEOUT local
#LABEL local
# MENU LABEL Boot from local drive
# MENU DEFAULT
# LOCALBOOT 0
LABEL centos7-test
MENU LABEL Install CentOS 7-test
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.0.254/centos7/ ks=http://192.168.0.254/centos7/test.cfg
LABEL centos7-7525
MENU LABEL Install CentOS 7.9 2009
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.0.254/centos7/ ks=http://192.168.0.254/centos7/ks.cfg
LABEL centos7
MENU LABEL Install CentOS 7
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.0.254/centos7/ ks=http://192.168.0.254/centos7/ksvm1.cfg
启动并启用 DHCP、TFTP 和 HTTP 服务器:
sudo systemctl start dhcpd
sudo systemctl enable dhcpd
systemctl start tftp
systemctl enable tftp
sudo systemctl start httpd
sudo systemctl enable httpd
二、制作自定义镜像
yum install -y vim net-tools sysstat createrepo mkisofs rsync syslinux
挂载centos 7镜像
mount -o loop CentOS-7-x86_64-Minimal-2009.iso /mnt
cp /mnt/* /home/os/
cp .treeinfo /home/os/
#调整ks相关配置
将生成的ks.conf 复制到系统os中
cp ks.cfg /home/os/
修改启动文件
vim isolinux/isolinux.cfg
注释掉default
增加自己的
label custom
menu label ^Install CentOS 7.9 7525
menu default
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS7 inst.ks=cdrom:/ks.cfg quiet
ks文件,制作的时候cdrom
[root@k8s-master-1 os]# cat ks.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$2CfI3BlC$SOdm3gzL7QJmWqlY/eQWb/
# System language
lang en_US
# System authorization information
auth --useshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=bootp --device=em1
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr --boot-drive=sdm
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="xfs" --grow --ondisk=sdm --size=1
#part swap --fstype="swap" --ondisk=sdm --size=500
part /boot --fstype="xfs" --ondisk=sdm --size=2048
part /boot/efi --fstype="efi" --ondisk=sdm --size=200 --fsoptions="umask=0077,shortname=winnt" ###dell 新机器需要efi
%packages
@^minimal
@core
%end
备注:关于这个ks文件,可以先手动安装一下系统,然后root目录下anaconda-ks.cfg,进行修改即可;
vim EFI/BOOT/grub.cfg
set timeout=60 #等待时间
menuentry 'Install CentOS 7.9 7525' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CENTOS7 inst.ks=cdrom:/ks.cfg quiet
initrdefi /images/pxeboot/initrd.img
#制作iso镜像
genisoimage -R -J -T \
-v -cache-inodes \
-joliet-long \
-V CENTOS7 \
-o /root/CentOS_7.9_x86_64_7525.iso \
-c isolinux/boot.cat \
-b isolinux/isolinux.bin \
-no-emul-boot -boot-load-size 4 \
-boot-info-table \
-eltorito-alt-boot \
-b images/efiboot.img \
-no-emul-boot .
操作系统自动化安装

浙公网安备 33010602011771号