PXE+kickstart无人值守装机

别等时光非礼了梦想. 提交于 2021-01-22 14:12:07
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。  


系统环境初始化:

sed -i 's/^SELINUX=.*/SELINUX=disabled/g'  /etc/selinux/config 
setenforce 0
iptables -F
systemctl stop firewalld
systemctl disable firewalld


1、配置DHCP服务程序
DHCP服务程序用于为客户端主机分配可用的IP地址,而且这是服务器与客户端主机进行文件传输的基础,因此我们先行配置DHCP服务程序。

yum -y install dhcp


cat /usr/share/doc/dhcp*/dhcpd.conf.example
vim /etc/dhcp/dhcpd.conf

allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 172.16.70.0 netmask 255.255.255.0 {
        option subnet-mask      255.255.255.0;
        option domain-name-servers  172.16.70.250;
        range dynamic-bootp 172.16.70.100 172.16.70.200;
        default-lease-time      21600;
        max-lease-time          43200;
        next-server             172.16.70.250;
        filename                "pxelinux.0";
}


systemctl start dhcpd
systemctl enable dhcpd


2、配置TFTP服务程序
vsftpd服务与TFTP服务。vsftpd是一款功能丰富的文件传输服务程序,允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。但是,当前的客户端主机还没有安装操作系统,该如何进行登录认证呢?而TFTP作为一种基于UDP协议的简单文件传输协议,不需要进行用户认证即可获取到所需的文件资源。因此接下来配置TFTP服务程序,为客户端主机提供引导及驱动文件。当客户端主机有了基本的驱动程序之后,再通过vsftpd服务程序将完整的光盘镜像文件传输过去。



 yum -y install tftp-server  xinetd

 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

}


systemctl restart xinetd
systemctl enable xinetd




3、配置SYSLinux服务程序
SYSLinux是一个用于提供引导加载的服务程序。与其说SYSLinux是一个服务程序,不如说更需要里面的引导文件,在安装好SYSLinux服务程序软件包后,/usr/share/syslinux目录中会出现很多引导文件。


yum -y install syslinux
mount /dev/cdrom /mnt

cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /mnt/images/pxeboot/initrd.img .
cp /mnt/images/pxeboot/vmlinuz .
cp /mnt/isolinux/vesamenu.c32 .
cp /mnt/isolinux/boot.msg .


mkdir pxelinux.cfg
cd pxelinux.cfg/
cp /mnt/isolinux/isolinux.cfg default

vim  /var/lib/tftpboot/pxelinux.cfg/default 
  1 #default vesamenu.c32
  2 default linux


 65 #  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
 66   append initrd=initrd.img inst.stage2=ftp://172.16.70.250 ks=ftp://172.16.70.250/pub/ks.cfg quiet





4、配置VSFtpd服务程序
在我们这套无人值守安装系统的服务中,光盘镜像是通过FTP协议传输的,因此势必要用到vsftpd服务程序。当然,也可以使用httpd服务程序来提供Web网站访问的方式,只要能确保将光盘镜像顺利传输给客户端主机即可。如果打算使用Web网站服务来提供光盘镜像,一定记得将上面配置文件中的光盘镜像获取网址和Kickstart应答文件获取网址修改一下。


#使用某台默认的ks文件
yum -y install vsftpd
cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
cd /var/ftp/pub/

vim /var/ftp/pub/ks.cfg 

  4 # Use CDROM installation media
  5 cdrom
  6 url --url=ftp://172.16.70.250
  7 # Use graphical install
  8 #graphical
  9 text
 18 network  --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --no-activate
 31 #clearpart --none --initlabel
 32 clearpart --all --initlabel
 50 %post
 51 reboot
 52 %end

[root@kickstart]# ll /var/ftp/pub/ks.cfg
总用量 4
-rw-------. 1 root root 997 1月  20 14:10 ks.cfg

chmod +r /var/ftp/pub/ks.cfg

systemctl restart vsftpd
systemctl enable vsftpd


#自定义ks 文件
配置kickstart安装文件
可以使用某台CentOS 7(注意不是6)的/root/anaconda-ks.cfg作为模板手动修改,也可以使用system-config-kickstart命令配置ks.cfg文件:

在某台CentOS 7(注意不是6)系统上安装所需包:
# yum -y install system-config-kickstart
在某台CentOS 7(注意不是6)系统上运行图形界面进行设置:
#system-config-kickstart


验证ks文件的正确性(可选):
在CentOS 7系统安装pykickstart包:
# yum -y install pykickstart
在CentOS 7系统验证上传到此系统的ks文件:
ksvalidator ks.cfg
如果没任何输出,表示没问题。
在CentOS 7系统查看CentOS 6与7的ks版本区别:
ksverdiff -f RHEL6 -to RHEL7


#########新装机器操作############################################################
直接设定在同网段开机即可



参考:
http://hmli.ustc.edu.cn/doc/linux/centos-autoinstall.htm
https://www.linuxprobe.com/chapter-19.html



PS: ks文件详解

#platform=x86, AMD64, 或 Intel EM64T
#version=CentOS7
# Install OS instead of upgrade #全新安装而不是升级
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $改成这样不会再给我发泄密警告了吧?10 #采用加密记录
#rootpw --plaintext 12你要认为我泄漏密码,我对你智商也没辙456 #采用明文记录
# System language
lang en_US
# Firewall configuration #屏蔽防火墙
firewall --disabled
# System authorization information #设定NIS信息
auth  --useshadow  --passalgo=sha512 --enablenis --nisdomain=mydomain.org --nisserver=192.168.100.254
# Use text mode install #安装方式,文本界面,图形的话graphy
text
# SELinux configuration #关闭SELinux
selinux --disabled
# Do not configure the X Window System #不配置X图形界面
skipx

# Use NFS installation media #设定安装方式
nfs --server=192.168.100.254 --dir=/centos
# Use http installation source
#url --url=http://192.168.100.254/centos/7/
# Network information #采用DHCP获取IP
network  --bootproto=dhcp
# Reboot after installation #安装后自动重启,如果BIOS中设置从PXE首先启动,那么会重复安装,请注意,安装后应设置为从先硬盘启动
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information #清除原有分区
clearpart --all
# Disk partitioning information
part / --fstype="xfs" --size=10000
part /boot --fstype="xfs" --size=200
#part /boot/efi --fstype=efi --size=200 #UEFI引导安装时需要,传统LEGACY引导时可屏蔽此选项
part swap --fstype="swap" --size=8000
part /tmp --fstype="xfs" --grow --size=1

%packages #设定所需要的软件包,按需要调整
@base #@表示一组软件包
@network-server
@performance
@system-admin-tools
sdparm
tree
tuned
tuned-utils
ypbind
nfs-utils
vim-enhanced
#-表示从默认软件包的需要去除的软件包
-lvm2
-nano
-pcmciautils
-plymouth
-rfkill
-rsync
-system-config-firewall-tui
-system-config-network-tui
-unzip
-vconfig
-wireless-tools
%end #%packages结尾

%pre #预案装脚本,非必须
date
%end #%pre结尾

%post #安装后脚本,非必须
cat >>/root/.bashrc <>/etc/fstab
%end #%post结尾


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!