前言
原理和概念:
-
什么是PXE
PXE 一种引导的方式。进行PXE安装的必要条件是要安装的计算机中包含一个PXE支持的网卡(NIC),即网卡中必须要有PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。
协议分为client和server端, PXE client在网卡的ROM中,当计算机引导时,BIOS把 PXE client调入内存执行,由PXE client 将放置在远端的文件通过网络下载到本地运行。
运行PXE协议需要设置DHCP服务器和TFTP服务器。DHCP服务器用来给 PXE client(将要安装系统的主机)分配一个IP地址,由于是给PXEclient分配IP地址,所以在配置DHCP服务器时需要增加相应的PXE设置。
此外,在PXE client 的ROM中,已经存在了TFTP Client。PXE Client通过TFTP协议到TFTP Server上下载所需的文件。 -
什么是KickStart
KickStart是一种无人职守安装方式。KichStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数(Root密码,分区,时区,语言等等),并生成一个名为ks.cfg的文件;在其后的安装过程中〈不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预
这样,如果KichStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情,等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
部署环境:
服务端: Master.cn IP:192.168.42.134
客户端: Slave.cn IlP: 192.168.42.***(同一网段的)
执行PXE + KickStart安装需要准备内容:
DHCP服务器用来给客户机分配IP;
FTP服务器用来存放PXE的相关文件,比如:系统引导文件pxelinux.0 (这个需要
安装 syslinux,可以看作是一个小linux系统,用于linux便捷安装)
KickStart所生成的ks.cfg配置文件;
NFS:存储系统文件和ks.cfg文件
PXE kickstart 服务端配置
要使用kickstar…安装平台,包括的完整架构为:Ki.ckstaxt+DHCP+NFS+TFTP+PXE,从架构可以看出,大致需要安装的
- 安装1 DHCP、TFTP安装
yum install -y dhcp* tftp*
- 挂载 光盘
mount /dev/cdrom /mnt/
- 配置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+PXE 配置
要实现远程安装系统,首先需要在TFTPBO0T目录指定相关PXE内核模块及相关参数。配置步骤如下
① 下载 sysylinux ,相当于启动引导
yum -y install syslinux
find / -name "pxelinux.0" # 查找一个文件,内核文件
/usr/share/syslinux/pxelinux.0
ln -s /var/lib/tftpboot/ / 把tftpboot 链接到根目录下
cp /usr/share/syslinux/pxelinux.0 /tftpboot/ # 拷贝pxelinux.0 文件到tftpboot下
cp /mnt/images/pxeboot/{initrd.img,vmlinuz} /tftpboot/ # 把系统光盘的2个引导文件拷贝到fftpboot下
cd /cd /tftpboot/
mkdir -p pxelinux.cfg #创建一个pxelinux.cfg目录
cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default #拷贝光盘中isolinux.cfg 到该目录里并重命名,这个是系统启动时候的选项文件,修复,安装那个选项。
vim default #对这个文件进行修改,添加一个启动选项
systemctl start tftp && systemctl enable tftp #启动ftp服务
- 配置NFS
yum -y install nfs*
echo "/centosinstall *(rw,sync)" /etc/exports #指定目录,并允许任何主机访问
mkdir -p /centosinstall
cp -a /mnt/* /centosinstall/ #把光盘文件拷贝到 centosinstall 分享目录
systemctl start nfs && systemctl enable nfs #启动nfs服务
- 制作ks.cfg应答文件 ,这个可以参考我们新装机后在根目录下,会有一个anaconda-ks.cfg,当然,我们也可以自己制作,通过
system-config-kickstart
软件,用图形化界面去制作模板,这里之演示前几个步骤,具体配置可根据自身需求去做安装
yum -y install system-config-kickstart
system-config-kickstart #启动这个软件,我们是在图像界面的系统才可以启动
下面是一个制作好的模板,我们把他放在centosinstall,目录下
cd /centosinstall
vim /centosinstall/ks.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=cn --xlayouts='cn'
# Root password
rootpw --iscrypted $1$afFwMpeZ$RNhBpcAIXjTU6uGqI7INd/
# System language
lang en_US
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Use NFS installation media
nfs --server=192.168.42.134 --dir=/centosinstall
# System services
services --disabled="chronyd"
ignoredisk --only-use=sda
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=static --device=eth0 --gateway=192.168.42.254 --ip=192.168.42.135 --netmask=255.255.255.0
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=none --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --size=1024
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1
%packages
@^minimal
@core
kexec-tools
%end
- DHCP服务配置
yum -y install dhcpd
vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
next-server 192.168.42.134; #DHCP serverIP
filename "pxelinux.O";
allow booting;
allow bootp;
subnet 192.168.42.0 netmask 255.255.255.0 {
#---default gateway
option routers 192.168.42.254;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.42.100 192.168.42.200;
host ns {
hardware ethernet 00:1a:a0:2b:38:81; #给一个mac地址指定IP
fixed-address 192.168.42.135; }
}
启动DHCP服务
systemctl start dhcpd && systemctl dhcpd xinetd
确定DHCP服务状态
【root@localhost】 netstat -anptu | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 3363/dhcpd
- 启动xinetd
yum -y install xinetd
systemctl start xinetd && systemctl enable xinetd
测试客户端
-
建一个虚拟机
-
开机
提示没有找到菜单,我们的菜单时用的centos7.5(就是/tftpboot/pxelinux.cfg/default配置文件里写的
) ,所以我们手动填写centos7.5
这就找道了,找到了 什么呢,如下图,找到了/tftpboot/pxelinux.cfg/
目录下vmlinuz和initrd.img文件 。这两个文件就会引导找到ks.cfg
文件
遇到的问题
- 用system-config-kickstart 做ks应答模板时候,到选择安装包时候,没法选择特定的安装包
解决方法:
只需对本地yum源稍作更改即可
把yum源中[ ]内的内容更改为development,然后重新打开system-config-kickstart即可,记得做完模板文件在还原回去
im /etc/yum.repos.d/base.repo
[development]
name=yum-bendi
baseurl=file:///mnt/cdrom
gpgcheck=1
- dhcp客户端找不在服务端。
解决方法:
① 确保服务端和客户端在同一网段
②检查服务端/etc/dhcp/dhcpd.conf
配置文件是否有问题,或者跟换下面这种配置
subnet 192.168.217.0 netmask 255.255.255.0 {
range 192.168.217.10 192.168.217.200; #DHCP分配的IP 段
next-server 192.168.217.141; #服务端IP
filename "pxelinux.0";
}
- 开机遇到 random: crng init done 或者Warning : dracut-initqueue tineout - starting tineout scripts
解决方法:
修改default 文件启动后的网卡名字,比如我现在是用虚拟机模拟的,我的客户端网卡名字就是ens33 ,如下图,我设置的是eth0,就会报错
修改成这样就ok了