Centos8怎么基于PXE自动安装操作系统

安装前准备:

关闭防火墙和SELINUX,DHCP服务器静态IP

网络要求:关闭Vmware软件中的DHCP服务,基于NAT模式

注意:内存2G+      磁盘 200G+

1、安装相关软件包并启动

dhcp-server tftp-server httpd syslinux-nonlinux(或者syslinux-tftpboot)

[root@cent8_yzil ~]# yum -y install dhcp-server tftp-server httpd syslinux-nonlinux

[root@cent8_yzil ~]# systemctl enable –now httpd tftp dhcpd

2、配置DHCP服务

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

[root@cent8_yzil ~]# vim /etc/dhcp/dhcpd.conf

option domain-name-servers 180.76.76.76,223.5.5.5;

default-lease-time 86400;

max-lease-time 106400;

subnet 10.0.0.0 netmask 255.255.255.0 {

range 10.0.0.150 10.0.0.160;

option routers 10.0.0.2;

next-server 10.0.0.133;

filename “pxelinux.0”;

}

[root@cent8_yzil ~]# systemctl enable –now dhcpd

3、准备yum源和相关目录

[root@cent8_yzil ~]# mkdir -pv /var/www/html/centos/{7,8}/os/x86_64/

[root@cent8_yzil ~]# scandisk

[root@cent8_yzil ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 20G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 19G 0 part

├─cl-root 253:0 0 17G 0 lvm /

└─cl-swap 253:1 0 2G 0 lvm [SWAP]

sr0 11:0 1 6.7G 0 rom /run/media/root/CentOS-8-BaseOS-x86_64

sr1 11:1 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64

[root@cent8_yzil ~]#

[root@cent8_yzil ~]# mount /dev/sr1 /var/www/html/centos/7/os/x86_64/

[root@cent8_yzil ~]# mount /dev/sr0 /var/www/html/centos/8/os/x86_64/

4、准备kickstart文件

centos8应答文件

[root@cent8_yzil ~]# mkdir /var/www/html/ks/

[root@cent8_yzil ~]# cp anaconda-ks.cfg /var/www/html/ks/centos8.cfg

[root@cent8_yzil ~]# vi /var/www/html/ks/centos8.cfg

[root@cent8_yzil ks]# cat centos8.cfg

ignoredisk –only-use=sda

zerombr

text

reboot

clearpart –all –initlabel

selinux –disabled

firewall –disabled

url –url=http://10.0.0.133/centos/8/os/x86_64/

keyboard –vckeymap=us –xlayouts=’us’

lang en_US.UTF-8

network –bootproto=dhcp –device=eth0 –ipv6=auto –activate

bootloader –append=”net.ifnames=0″ –location=mbr –boot-drive=sda

network –hostname=yzil.example.com

rootpw –iscrypted $6$VOiiEwlRHR.Stjdu$gUfB1Tm8Uz03zv/0lLJABR/obcWOdAG50PhPHu08vFwtQZtNf1RWstodv3TCEznSQdFnFIOYT116ft.8gu6Ca/

firstboot –enable

skipx

services –disabled=”chronyd”

timezone Asia/Shanghai –isUtc –nontp

autopart –type=lvm

part / –fstype xfs –size 1 –grow –ondisk sda

part / –fstype=”xfs” –ondisk=sda –size=102400

part /data –fstype=”xfs” –ondisk=sda –size=51200

part swap –fstype=”swap” –ondisk=sda –size=2048

part /boot –fstype=”ext4″ –ondisk=sda –size=1024

%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

[root@cent8_yzil ks]#

 #centos7应答文件

[root@cent8_yzil ~]# scp 10.0.0.123:anaconda-ks.cfg /var/www/html/ks/centos7.cfg

root@10.0.0.123’s password:

anaconda-ks.cfg 100% 2757 9.7KB/s 00:00

[root@cent8_yzil ~]# vi /var/www/html/ks/centos7.cfg

[root@cent8_yzil ks]# cat centos7.cfg

install

xconfig  –startxonboot

keyboard –vckeymap=us –xlayouts=’us’

url –url=”http://10.0.0.133/centos/7/os/x86_64″

lang en_US

text

firstboot –enable

selinux –disabled

skipx

services –disabled=”chronyd”

ignoredisk –only-use=sda

firewall –disabled

network –bootproto=dhcp –device=eth0 –ipv6=auto –activate

bootloader –append=”net.ifnames=0″ –location=mbr –boot-drive=sda

network –hostname=yzil.example.com

rootpw –iscrypted $6$VOiiEwlRHR.Stjdu$gUfB1Tm8Uz03zv/0lLJABR/obcWOdAG50PhPHu08vFwtQZtNf1RWstodv3TCEznSQdFnFIOYT116ft.8gu6Ca/

reboot

timezone Asia/Shanghai –nontp

zerombr

autopart –type=lvm

clearpart –all –initlabel

part swap –fstype=”swap” –ondisk=sda –size=3072

part / –fstype=”xfs” –ondisk=sda –size=51200

part /boot –fstype=”xfs” –ondisk=sda –size=1024

part /data –fstype=”xfs” –ondisk=sda –size=30720

%post

useradd wang

%end

%packages

@core

%end

[root@cent8_yzil ks]# vi centos7.cfg

注意权限问题,默认是只有root才能读写

[root@cent8_yzil ~]# ll anaconda-ks.cfg

-rw——-. 1 root root 1237 Apr 9 15:53 anaconda-ks.cfg

[root@cent8_yzil ~]#

[root@cent8_yzil ~]# cd /var/www/html/ks/

[root@cent8_yzil ks]# ls

centos7.cfg centos8.cfg

[root@cent8_yzil ks]# chmod 644 *

[root@cent8_yzil ks]# ll

total 8

-rw-r–r–. 1 root root 841 Apr 29 04:32 centos7.cfg

-rw-r–r–. 1 root root 1386 Apr 29 06:50 centos8.cfg

[root@cent8_yzil ks]#

5、准备PXE启动相关文件

准备centos7,8各自的内核相关文件

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

[root@cent8_yzil ~]# cp /var/www/html/centos/7/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7

[root@cent8_yzil ~]# cp /var/www/html/centos/8/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos8

[root@cent8_yzil ~]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/

以下三个文件是centos8安装所必须文件,centos6,7则不需要

[root@cent8_yzil ~]# cp /var/www/html/centos/8/os/x86_64/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/

生成安装菜单文件

[root@cent8_yzil ~]# mkdir /var/lib/tftpboot/pxelinux.cfg/

[root@cent8_yzil ~]# cp /var/www/html/centos/8/os/x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

最终目录结构如下

[root@cent8_yzil ~]# tree /var/lib/tftpboot/

/var/lib/tftpboot/

├── centos7

│   ├── initrd.img

│   └── vmlinuz

├── centos8

│   ├── initrd.img

│   └── vmlinuz

├── ldlinux.c32

├── libcom32.c32

├── libutil.c32

├── menu.c32

├── pxelinux.0

└── pxelinux.cfg

└── default

3 directories,10 files

[root@cent8_yzil ~]#

6、准备启动菜单文件

[root@cent8_yzil ~]# cat /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://10.0.0.133/ks/centos8.cfg

 

label linux7

menu label Auto Install CentOS Linux ^7

kernel centos7/vmlinuz

append initrd=centos7/initrd.img ks=http://10.0.0.133/ks/centos7.cfg

 

label manual

menu label ^Manual Install CentOS Linux 8.0

kernel centos8/vmlinuz

append initrd=centos8/initrd.img

inst.repo=http://10.0.0.133/centos/8/os/x86_64/

label rescue

menu label ^Rescue a CentOS Linux system 8

kernel centos8/vmlinuz

append initrd=centos8/initrd.img

inst.repo=http://10.0.0.133/centos/8/os/x86_64/ rescue

 

label local

menu default

menu label Boot from ^local drive

localboot 0xffff

[root@cent8_yzil ~]#

7、测试客户端基于PXE实现自动安装

————————————————

相关文章

在Docker中,挂载目录的权限问题通常可以通过以下方法解决:...
在Ubuntu命令行中设置中文可以通过以下几种方式实现: 安装...
要查看CentOS中的重启记录,可以使用以下命令: 使用last命...
要判断哪个串口在工作,可以通过以下方法: 使用命令行工具...
要查看Linux系统中数据盘的挂载点,可以按照以下步骤进行: ...
要更改Ubuntu系统的启动项顺序,可以按照以下步骤操作: 打...