PXE+Kickstart无人值守安装
PXE
PXE (preboot execute environment,预启动执行环境),工作于Client/Server(C/S)的网络模式,支持工作通过远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol) 或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,并由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。
PXE工作流程:
1.PXE Client 设置PXE以启动项启动,Client向网络中DHCP服务器获取IP
2.DHCP服务器返回分配给Client端IP和PXE文件的位置
3.PXE Client 向网络中TFTP获取pxelinux.0文件
4.PXE Client获取pxelinux.0文件后执行该文件
5.从服务器中加载内核和文件系统
6.进入安装界面
配置PXE服务(以CentOS7为例):
1.安装TFTP服务
(1) 安装所需的软件包
yum -y install syslinux xinetd tftp-server #syslinux 是一个强大的引导加载程序;xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器;tftp-server TFTP服务器
mkdir /var/lib/tftpboot/pxelinux.cfg #启动引导目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot #将syslinux引导文件复制到TFTP服务器目录上
(2)启动TFTP服务器
vi /etc/xinetd.d/tftp
修改disable那一行
disable = no
systemctl start xinetd
systemctl enable xinetd
2.配置DHCP服务器
(1)安装DHCP服务器
yum -y install dhcp
vi /etc/dhcp/dhcpd.conf
subnet 192.168.3.0 netmask 255.255.255.0{#子网网段,掩码
range 192.168.3.2 192.168.3.253; #DHCP地址范围
option subnet-mask 255.255.255.0;#子网掩码
next-server 192.168.3.254;#TFTP服务器IP,也就是本机IP地址
filename "pxelinux.0";#pxelinux.0 syslinux引导文件
default-lease-time 21600;#客户未指定租用时间,用此租用时间
max-lease-time 43200;#最长租用时间
}
systemctl start dhcpd
systemctl enable dhcpd
3.网络镜像安装
mkdir -p /var/pxe/centos7#设置镜像挂载点
mkdir /var/lib/tftpboot/centos7#设置PXE启动引导目录
mount -t iso9660 -o loop /mnt/iso/CentOS7.iso /var/pxe/centos7#挂载镜像至镜像挂载点
cp /var/pxe/centos7/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7#从镜像中拷贝内核文件至启动引导目录
cp /var/pxe/centos7/images/pxeboot/initrd.img /var/lib/tftpboot/centos7#从镜像中拷贝initrd.img至启动引导目录
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/#设置启动安装界面类型
vi /var/lib/tftpboot/pxelinux,cfg/default#设置启动安装界面类型
#create new
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=http://192.168.3.254/ks/centos7-ks.cfg devfs=nomount#定义加载initrd.img和所在位置 method表示ks安装脚本的路径
label 2
menu label ^2) Boot from local drive
localboot
4.配置HTTP服务
yum -y install httpd#安装httpd服务
rm -rf /etc/httpd/conf.d/welcome.conf#删除欢迎界面配置文件
vi /etc/httpd/conf/httpd.conf#配置httpd服务
修改
ServerName www.laochu.com:80#服务器域名设置
AllowOverride All
DirectoryIndex index.html index.cgi index.php#应用语言设置
以下配置文件中没有最后两行添加
ServerTokens Prod
KeepAlive On
vi /etc/httpd/conf.d/pxeboot.conf#创建HTTP加载别名
Alias /centos7 /var/pxe/centos7#设置HTTP别名
<Directory /var/pxe/centos7>
Options Indexes FollowSymLinks
Require ip 127.0.0.1 192.168.3.0/24#设置网段
</Directory>
systemctl start httpd
systemctl enable httpd
5.设置Kickstart脚本
(1)定义root密码
python -c 'import crypt,getpass;\
print(crypt.crypt(getpass.getpass(),\
crypt.mksalt(crypt.METHOD_SHA512)))'
Password:输入密码
XXXXXXXXXXXXXXXXXXXXXXXXX...............
mkdir /var/www/html/ks #设置ks目录
vi /var/www/html/ks/centos-ks.cfg
install
autostep
reboot
auth --enableshadow --passalgo=sha512
url --url=http://192.168.3.254/centos7/
ignoredisk --only-use=sda
keyboard us
lang en_US.UTF-8
network --bootproto=dhcp --ipv6=auto --activate --hostname=localhost
rootpw --iscrypted XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....
timezone Asia/Shanghai --isUtc --nontp
bootloader --location=mbr --boot-drive=sda
zerombr clearpart --all --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=500 part pv.10 --fstype="lvmpv" --ondisk=sda --size=51200 volgroup VolGroup --pesize=4096 pv.10 logvol / --fstype="xfs" --size=20480 --name=root --vgname=VolGroup logvol swap --fstype="swap" --size=4096 --name=swap --vgname=VolGroup
%packages @core
%end