PXE批量安装CentOS7操作系统

PXE批量安装CentOS 7操作系统

PXE批量部署原理:

  1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器请求IP;

  2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置

​ (该文件一般是放在一台TFTP服务器上);

  1. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件

​ (在 PXE Client 的 ROM 中,已经存在 TFTP Client);

  1. PXE Client 取得pxelinux.0 文件后之执行该文件;

  2. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;

  3. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;

1、DHCP服务器:为 PXE-client 分配 IP ,获得安装程序文件位置

2、TFTP服务器:传输安装文件、内核、菜单文件等给 PXE-client

3、Xinetd: TFTP服务超级守护进程, 用于唤醒TFTP服务;

4、Kickstart:生成的ks.cfg配置文件

5、HTTP/NFS/FTP 服务中的任意一种,用于传送安装源文件给 PXE-client

配置开始前小提示如果用虚拟机做实验请注意以下几点:

1.点击编辑虚拟机网络关闭系统的dhcp,不然会有冲突

2.PXE服务器网卡配置静态

3.虚拟机内存在1.5G以上

一、关闭Firewalld/SElinux

1.关闭并禁用防火墙:

# systemctl disable firewalld

# systemctl stop firewalld

2.禁用SElinux:

编辑etc/sysconfig/selinux,永久关闭SELinux(需要重启系统)

SELINUX=disabled

二、安装DHCP服务

yum install dhcp -y

修改配置文件

vim /etc/dhcp/dhcpd.conf

#---------可用最简配置-------------------

# 网络和子网掩码(根据自己实际情况编写)

PXE批量安装CentOS7操作系统

subnet 192.168.67.0 netmask 255.255.255.0

range 192.168.67.10 192.168.67.50;

option routers 192.168.67.1;

default-lease-time 60000;

max-lease-time 720000;

# 指定tftp服务器地址

next-server 192.168.67.128;

#指定pxelinux.0文件

filename “pxelinux.0”;

}

systemctl restart dhcpd

systemctl enable dhcpd

三、安装TFTP服务(无需认证,小文件传输)

安装xinetd、tftp-server和syslinux服务

#syslinux 会在 /usr/share/syslinux/pxelinux.0 生成pxelinux.0文件 ,需要手动复制到/var/lib/tftpboot/ 目录中。

yum install xinetd tftp-server syslinux -y

配置xinetd,由xinetd管理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 #默认disable是yes的,把它改为no即可

​ per_source = 11

​ cps = 100 2

​ flags = IPv4

}

systemctl enable tftp

systemctl enable xinetd

systemctl enable tftp.socket

systemctl start tftp.socket

systemctl start tftp

systemctl start xinetd

四、安装HTTP服务

yum install httpd -y

systemctl start httpd

systemctl enable httpd

五、配置文件

一、需要导入TFTP服务器的主要文件有:

  1. 引导文件:pxelinux.0
  2. 内核文件:vmlinuz initrd.img
  3. 引导菜单:isolinux.cfg – 开机后选择启动项的菜单文

导入引导文件:pxelinux.0

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

导入内核及菜单文件:vmlinuz initrd.img

cp /mnt/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

引导菜单配置文件:isolinux.cfg

1.系统自带的两种窗口模块之一:vesamenu.c32

窗口提示信息文件:boot.msg

窗口背景图片:splash.png

cp /mnt/cdrom/isolinux/{vesamenu.c32,boot.msg,splash.png} /var/lib/tftpboot/

cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/

六、配置ks.cfg文件

PXE批量安装CentOS7操作系统
ks.cfg模板文件在/root下的anaconda-ks.cfg文件

# cp /root/anaconda-ks.cfg /var/www/html/ks.cfg

或者# cp /root/initial-setup-ks.cfg /var/www/html/ks.cfg

chmod +r /var/www/html/ks.cfg # 注意这里要给权限

编辑ks.cfg文件,稍微修改一下安装介质就可以(可以不做修改,但是安装路径一定要改,红色标注的地方)

vim /var/www/html/ks.cfg

#version=DEVEL

# System authorization information

auth --enableshadow --passalgo=sha512

# Install OS instead of updrade 添加

# 告知安装程序,这是一次全新安装,而不是升级upgrade。

install

# Use CDROM installation media

# 通过FTP或HTTP从远程服务器上的安装树中安装。

url --url=“http://192.168.67.128/centos7” 例如# url --url ftp://????/

nfs --server=nfsserver.example.com --dir=/tmp/install-tree # 使用nfs就写nfs 看自己使用的工具而定

# Use graphical install

# graphical

# text 表示使用文本模式安装。

text

# Firewall configuration 添加防火墙启动

firewall --enable

# Run the Setup Agent on first boot

firstboot --enable

ignoredisk --only-use=sda

# Keyboard layouts

keyboard --vckeymap=cn --xlayouts=‘cn’

# System language

lang zh_CN.UTF-8

# Network information

network --bootproto=dhcp --device=link --onboot=on --ipv6=auto --activate

network --bootproto=dhcp --device=ens192 --onboot=off --ipv6=auto

network --hostname=localhost.localdomain

# Reboot after installation

reboot

# Root password

rootpw --iscrypted $64acN4cota8dxsS0B4acN4cota8dxsS0BGi6PFzhatIyjGBuki8nGdzF1QpGdoZ6D78S5nOv8XHUaH3O2CSpoVW8xB9P.3.eYCYdpdKFVDuY43ww8LQRlZ1 # 这里的是加密后的root账户密码 本例为zjt123456

# System services

services --enabled=“chronyd”

# System timezone

timezone Asia/Shanghai --isUtc

# System bootloader configuration

bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda

# Clear the Master Boot Record

# zerombr 清除mbr引导信息。

zerombr

autopart --type=lvm

# Partition clearing information

clearpart --none --initlabel

%packages

@^minimal

@core

chrony

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

七、复制内核文件

内核文件、虚拟根文件以及菜单文件,我们都是通过tftp服务来提供的,由于系统及版本的不同,对于一个比较复制机群来说,我们需要准备不同系统,不同版本的内核文件,initrd.img文件。菜单文件只需要一份即可。

/var/lib/tftpboot/目录规划如下:

挂载光驱镜像,虚拟机一定要先在连接光驱打上钩

创建目录mkdir /var/www/html/centos7

使用HTTP安装,所以镜像文件到挂到http根目录下

mount -o loop /dev/sr0 /var/www/html/centos7/ #挂载 #重启可能需要重新挂载

编写开机自动挂载脚本

chmod +x /etc/rc.local

echo “mount -o loop /dev/sr0 /var/www/html/centos7/” >> /etc/rc.local

如果是镜像文件已上传到linux中,可以这样挂

#mount -o loop /opt/CentOS-7-x86_64-Minimal-1804.iso /var/www/html/centos7

将镜像中的启动文件COPY到tftp server的根目录中

# cp /var/www/html/centos7/images/pxeboot/vmlinuz /var/lib/tftpboot/ #第1个文件,vmlinuz文件,在镜像文件images/pxeboot/目录中,

vmlinuz是可引导的、压缩的内核文件,vmlinuz是vmlinux的压缩文件。是可执行的Linux内核

将initrd.img复制到tftpboot下

# cp /var/www/html/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot/ #第2个文件,initrd.img文件,在镜像文件images/pxeboot/目录中,

initrd是“initial ram disk”的简写。initrd用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态

复制pxelinux.0文件到tftp目录下,首先安装syslinux 前面我已经安装

# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

编辑pxelinux.cfg菜单文件,即isolinux.cfg

# mkdir /var/lib/tftpboot/pxelinux.cfg

/var/lib/tftpboot/pxelinux.cfg/default

# vim /var/lib/tftpboot/pxelinux.cfg/default

该菜单文件的配置模板在镜像文件中:/var/www/html/centos7/isolinux/isolinux.cfg

# cp /var/www/html/centos7/isolinux/vesamenu.c32 /var/lib/tftpboot/

# cp /var/www/html/centos7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default # 复制并改名

# cp /var/www/html/centos7/isolinux/boot.msg /var/lib/tftpboot

#vim /var/lib/tftpboot/pxelinux.cfg/default
PXE批量安装CentOS7操作系统

#---------可用最简配置-------------------

default cdrom

prompt 0 #1出现提示,0不出现提示**

label cdrom

kernel vmlinuz

append initrd=initrd.img inst.repo=http://192.168.67.128/centos7 ks=http://192.168.67.128/ks.cfg devfs=nomount #指定ks.cfg文件读取的位置 写在一行

--------可用最简配置-------------------

default cdrom

prompt 0 #1出现提示,0不出现提示**

label cdrom

kernel vmlinuz

append initrd=initrd.img inst.repo=http://192.168.67.128/centos7 ks=http://192.168.67.128/ks.cfg devfs=nomount #指定ks.cfg文件读取的位置 写在一行

The end !

到此,PXE_Server所需要做的工作已经完成,直接开启所需要安装系统的服务器(或虚拟机)即可。

第一次写教程,条理不是很清晰如有错误欢迎指正,谢谢!!!