PXE Install CentOS实现

snow chuai汇总、整理、撰写---2020/2/14


1. 配置与实现PXE Server
1) 安装工具
[root@srv ~]# yum install dhcp syslinux xinetd tftp-server vsftpd -y
2) 复制pxelinux.0至tftp服务根目录 [root@srv ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
3) 开启tftp [root@srv ~]# vim /etc/xinetd.d/tftp # default: off # description: The tftp server serves files using the trivial file transfer \ # protocol. The tftp protocol is often used to boot diskless \ # workstations, download configuration files to network-aware printers, \ # and to start the installation process for some operating systems. service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot # 将disable=yes改为disable=no disable = no per_source = 11 cps = 100 2 flags = IPv4 }
[root@srv ~]# systemctl enable --now xinetd
5) 配置DHCPO服务 [root@srv ~]# vim /etc/dhcp/dhcpd.conf option domain-name "1000cc.net"; option domain-name-servers 192.168.10.1;
default-lease-time 600; max-lease-time 7200;
subnet 192.168.10.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.10.21 192.168.10.29; option routers 192.168.10.1; # 指定传输至客户端的启动文件名称 filename "pxelinux.0"; # 指定tftp server的IP地址 next-server 192.168.10.11; }

[root@srv ~]# systemctl enable --now dhcpd
2. 实现网络安装
1) 挂载iso作为安装的源
[root@srv ~]# mkdir /var/ftp/c7
[root@srv ~]# mount -t iso9660 -o loop /iso/CentOS-7-x86_64-Everything-1908.iso /var/ftp/c7
2) 复制PXE客户端启动的一些必要文件 [root@srv ~]# mkdir /var/lib/tftpboot/centos7 [root@srv ~]# cp /var/ftp/c7/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7/ [root@srv ~]# cp /var/ftp/c7/images/pxeboot/initrd.img /var/lib/tftpboot/centos7/ [root@srv ~]# cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
3) 配置PXE客户端引导文件的启动信息 [root@srv ~]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@srv ~]# vim /var/lib/tftpboot/pxelinux.cfg/default # 设置超时时间为10s--(没错,就是10s) timeout 100 default menu.c32
menu title ########## PXE Boot Menu ########## label 1 menu label ^1) Install CentOS 7 kernel centos7/vmlinuz append initrd=centos7/initrd.img method=ftp://192.168.10.11/c7 devfs=nomount
label 2 menu label ^2) Boot from local drive localboot

4) 启动vsftpd [root@srv ~]# systemctl enable --now vsftpd
5) 带有pxe的客户端测试
3. 实现Kickstar--无人值守安装
1) 为root账户设定密码
[root@srv ~]# python -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'
Password: 
$6$nHsJxi5GM1P8Fyko$22XHy0T9eNCQsCW/geEsV6Fh.BBlk2.LCvPUACGZB3sb/Q48mTr7yO27oCXmD/D2wBI5eDbrjRfnkTgTgJHjW0
2) 创建kickstar应答文件 [root@srv ~]# mkdir /var/ftp/ks [root@srv ~]# vim /var/ftp/ks/c7-ks.cfg install # 自动执行所有步骤 autostep # 安装完成后重启 reboot # 加密算法 auth --enableshadow --passalgo=sha512 # 安装源 url --url=ftp://192.168.10.11/c7/ # 安装的硬盘 ignoredisk --only-use=sda # 定义键盘类型 keyboard --vckeymap=us --xlayouts='us' # 定义本地语言及字符集编码 lang zh_CN.UTF-8 # 定义网络类型及主机名 network --bootproto=dhcp --ipv6=auto --activate --hostname=localhost # 定义root账户的密码 rootpw --iscrypted $6$nHsJxi5GM1P8Fyko$22XHy0T9eNCQsCW/geEsV6Fh.BBlk2.LCvPUACGZB3sb/Q48mTr7y O27oCXmD/D2wBI5eDbrjRfnkTgTgJHjW0 # 加载服务启动项--chronyd服务 services --enabled="chronyd" # 定义时区,并设定ntp server timezone Asia/Shanghai --isUtc --ntpservers=1.cn.pool.ntp.org,2.cn.pool.ntp.org # 系统引导方式 bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda # 初始化所有的分区信息 clearpart --none --initlabel # 磁盘分区的划分及名称分配(40G硬盘) part /boot --fstype="ext4" --ondisk=sda --size=1024 part pv.307 --fstype="lvmpv" --ondisk=sda --size=39935 volgroup c7_base --pesize=4096 pv.307 logvol swap --fstype="swap" --size=1024 --name=swap --vgname=c7_base logvol / --fstype="ext4" --size=38907 --name=root --vgname=c7_base
# 所要安装的软件包 %packages @^infrastructure-server-environment @base @core chrony kexec-tools
%end

3) 关联kickstar应答文件 [root@srv ~]# chmod 644 /var/ftp/ks/c7-ks.cfg [root@srv ~]# vim /var/lib/tftpboot/pxelinux.cfg/default timeout 100 default menu.c32
menu title ########## PXE Boot Menu ########## label 1 menu label ^1) Install CentOS 7 kernel centos7/vmlinuz # 指定ks文件 append initrd=centos7/initrd.img ks=ftp://192.168.10.11/ks/c7-ks.cfg
label 2 menu label ^2) Boot from local drive localboot
4) 客户端测试
4. 实现无盘客户端(Diskless)
1) 安装必要的一些工具
[root@srv ~]# yum install dracut-network nfs-utils -y
2) 准备客户端的OS环境 [root@srv ~]# mkdir -p /var/lib/tftpboot/c7/root [root@srv ~]# yum groups install "Infrastructure Server" --releasever=7 \ --installroot=/var/lib/tftpboot/c7/root/ -y
3) 为客户端的root账户准备密码 [root@srv ~]# python -c 'import crypt,getpass; \ print(crypt.crypt(getpass.getpass(), \ crypt.mksalt(crypt.METHOD_SHA512)))' Password: $6$4sEkAc/Y1wvO8KBI$ooGKutaII95fRKofNhlpget9BAiCrjQ7wjwsLmTm6vEi.uvH4IauAJwt fnC0dY2V2gZ9xCfmKgd0kOr1duM8A/
4) 将客户端的root账户加入至客户端OS中 # 将密码加入第2列 [root@srv ~]# vim /var/lib/tftpboot/c7/root/etc/shadow root:$6$4sEkAc/Y1wvO8KBI$ooGKutaII95fRKofNhlpget9BAiCrjQ7wjwsLmTm6vEi.uvH4Iau AJwtfnC0dY2V2gZ9xCfmKgd0kOr1duM8A/:17834:0:99999:7::: ...... ......
5) 设定客户端OS的各项挂载 [root@srv ~]# vim /var/lib/tftpboot/c7/root/etc/fstab none /tmp tmpfs defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
6) 下载vmlinuz及initrd [root@srv ~]# wget -P /var/lib/tftpboot/c7/ \ http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/vmlinuz \ http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/initrd.img
7) 设定启动 [root@srv ~]# vim /var/lib/tftpboot/pxelinux.cfg/default # 按以下内容编写(以前的default全部清除> timeout 1 default centos7
label centos7 kernel c7/vmlinuz append initrd=centos7/initrd.img root=nfs:192.168.10.11:/var/lib/tftpboot/c7/root rw selinux=0

8) 配置NFS [root@srv ~]# vim /etc/exports /var/lib/tftpboot/c7/root *(rw,no_root_squash)
[root@srv ~]# systemctl enable --now rpcbind nfs-server
9) 客户端测试


 

如对您有帮助,请随缘打个赏。^-^

gold