PXE+Kickstart自动装机简单总结

通过安装部署PXE+DHCP+TFTP+FTP+Kicksart等服务程序
搭建批量自动安装Linux系统的无人值守安装系统;

说明:
PXE即预启动执行环境,也即开机前的执行环境,是一种引导方式,
工作于Client/Server网络模式,可让计算机通过网络来启动操作系统,
需要通过BIOS设置客户机为从网卡启动;

Kickstart是一种无人值守的安装方式,
其工作原理是预先把原本需要手动填写的参数保存成一个名为ks.cfg的应答文件,
安装时自动匹配,匹配到则采用该参数,未匹配到才需要手动干预,
若文件中包含了所有参数,则不需要干预而实现完全自动安装,
安装完毕,安装程序会根据ks.cfg中的设置关闭或重启系统,并结束安装;

对刚安装完的Linux系统,其/root目录下会有一个anaconda-ks.cfg文件,
即为本次安装相关参数,可用来作为ks.cfg应答文件,根据实际需求修改即可;

总体工作流程如下:
客户机从网卡启动,向dhcp服务器请求IP,
dhcp服务器返回客户机IP以及PXE引导文件位置,
客户机向tftp服务器请求pxelinux.0引导文件,
客户机取得pxelinux.0文件后之执行该文件,
根据pxelinux.0 的执行结果,向tftp服务器请求pxelinux.cfg/default文件,
客户机读取配置文件,进入安装画面,
根据选择向ftp服务器请求ks.cfg应答文件、内核文件和文件系统等,
客户机加载内核信息进行安装,
PXE服务器一般是提供dhcp/tftp/ftp3合一的服务;
可以选择HTTP、FTP、NFS 方式之一进行安装;

 

 

0.准备工作
服务器禁用SElinux,
setenforce 0
关闭防火墙,
systemctl stop firewalld

1.部署DHCP服务程序
用于为客户端主机分配可用的IP地址
安装 yum install dhcp -y
配置文件为/etc/dhcp/dhcpd.conf,内容如下
allow booting;
allow bootp; #允许BOOTP引导程序协议,让局域网内暂时没有操作系统的主机也能获取IP
ddns-update-style none; #不支持动态更新
ignore client-updates; #忽略客户机更新DNS记录
subnet 192.168.1.0 netmask 255.255.255.0 { #子网网段声明
option routers 192.168.1.1; #网关地址
option subnet-mask 255.255.255.0; #客户端子网掩码
option domain-name-servers 8.8.8.8; #DNS服务器地址
range dynamic-bootp 192.168.1.30 192.168.1.90; #分配的IP地址池,最大255
default-lease-time 21600; #默认租约时间
max-lease-time 43200; #最大租约时间
next-server 192.168.1.200; #TFTP服务器IP,当前即可
filename "pxelinux.0"; #引导驱动文件,让客户端主机获取到IP地址后主动获取引导驱动文件
}
重启dhcpd服务程序并设置为开机启动

2.配置TFTP服务程序
一种基于UDP协议的简单文件传输协议,无需用户认证
为客户端提供引导驱动文件
使用xinetd服务程序来管理
安装 yum install xinetd tftp-server -y
配置文件为/etc/xinetd.d/tftp
把disable参数改成no即可
根目录为/var/lib/tftpboot
重启xinetd服务程序并设置为开机启动

3.配置SYSLinux服务程序
一个用于提供引导加载的服务程序
安装 yum install syslinux -y
需要/usr/share/syslinux里面的引导文件pxelinux.0
还有系统镜像自带的引导文件也都复制到tftp默认目录中
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
cp /media/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot
cp /media/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot
cp /media/cdrom/isolinux/vesamenu.c32 /var/lib/tftpboot
cp /media/cdrom/isolinux/boot.msg /var/lib/tftpboot
在tftp根目录中新建pxelinux.cfg目录,把系统镜像的开机选项菜单复制到该目录中,并命名为default
cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改default配置文件,指定开机默认选项为linux
在对应lable linux选项里,可修改开机说明文本,指定镜像为ftp传输,并指定ks.cfg路径

4.配置vsftpd服务程序
一种FTP服务程序,用于文件传输
把光盘镜像文件传输给客户端主机
安装 yum install vsftpd -y
工作目录为/var/ftp
重启vsftpd服务程序并设置为开机启动
把目录/media/cdrom中的光盘镜像文件全部复制到工作目录/var/ftp中
cp -r /media/cdrom/* /var/ftp

5.创建Kickstart应答文件
ks.cfg文件中包含安装过程中需要使用的选项和参数
复制改文件并修改其权限使所有人可读
cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg
修改文件内容,完成后重启,安装方式是FTP,时区设置,清空磁盘等

6.启动客户机
即可自动安装直到安装完毕才需要手动进行简单初始化操作

注意点:
1.客户机需要通过BIOS设置为从网卡启动,因为安装前还没有其他设备,所以也可不设置;
2.虚拟机的内存设置2G以上,否则会报错No space left on device
3.客户机和服务器要能够通信
4.SELinux与防火墙单独设置
5.default和cfg文件说明

default文件基本说明

#default vesamenu.c32    #显示所以菜单
default linux    # 默认加载一个菜单
timeout 1    # 引导时等待用户手动选择的时间,设为1可直接引导,单位为1/10秒

display boot.msg

# Clear the screen when exiting the menu, instead of leaving the menu displayed.
# For vesamenu, this means the graphical background is still displayed without
# the menu itself for as long as the screen remains in graphics mode.
# 菜单背景图片、标题、颜色等
menu clear
menu background splash.png
menu title CentOS 7
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13

# Border Area
menu color border * #00000000 #00000000 none
# Selected item
menu color sel 0 #ffffffff #00000000 none
# Title bar
menu color title 0 #ff7ba3d0 #00000000 none
# Press [Tab] message
menu color tabmsg 0 #ff3a6496 #00000000 none
# Unselected menu item
menu color unsel 0 #84b8ffff #00000000 none
# Selected hotkey
menu color hotsel 0 #84b8ffff #00000000 none
# Unselected hotkey
menu color hotkey 0 #ffffffff #00000000 none
# Help text
menu color help 0 #ffffffff #00000000 none
# A scrollbar of some type? Not sure.
menu color scrollbar 0 #ffffffff #ff355594 none
# Timeout msg
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none
# Command prompt text
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 none
# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.
menu tabmsg Press Tab for full configuration options on menu items.

menu separator # insert an empty line
menu separator # insert an empty line

# 各菜单标签并指定相应kernel和initrd.img文件
label linux    # 一个标签就是菜单页面一行选项
  menu label ^Install CentOS 7 by pxe    # 菜单选项提示文本
  menu default    # 当显示所有菜单时默认选中
  kernel vmlinuz    # 指定要启动的内核,同样要注意路径,默认是/tftpboot目录    
  append initrd=initrd.img inst.stage2=ftp://192.168.1.200 ks=ftp://192.168.1.200/pub/ks.cfg quiet
  
label test    # 测试选项
  menu label ^Memory test
  kernel memtest
  append -
View Code

ks.cfg文件基本说明

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Install OS instead of upgrade
install
# Use network installation
url --url="ftp://192.168.1.100"
# Use graphical install
graphical
# Use text mode install
#text
# Reboot after installation
reboot
# License agreement
eula --agreed
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --device=ens32 --onboot=off --ipv6=auto --no-activate
network  --hostname=node1.com

# Root password
rootpw --iscrypted $6$zhurmgLClM7b8Wte$NorlCjAoYd.Erbgf2aA9Ape2F1Z5RU55SbRr/kZ8JBib.cbysToDBuJXbxf1ftQDqpDdJpxqlzldfSfR7/a990
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
user --name=zlw --password=$6$ep2ttSloK1PEkBmn$O1XGAMDbbywK9o3DcJSzMg19NKcYBDQVrSfnEMyV5em4AL12Xv0mj1b8JNs7MLAUaMZHzex0UwL/WZxLD0BDK/ --iscrypted --gecos="zlw"
# X Window System configuration information
xconfig  --startxonboot
#skipx
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part biosboot --fstype="biosboot" --ondisk=sda --size=2
part pv.380 --fstype="lvmpv" --ondisk=sda --size=30724
part /boot --fstype="xfs" --ondisk=sda --size=1024
volgroup centos --pesize=4096 pv.380
logvol swap  --fstype="swap" --size=1024 --name=swap --vgname=centos
logvol /home  --fstype="xfs" --size=5120 --name=home --vgname=centos
logvol /  --fstype="xfs" --size=10240 --name=root --vgname=centos

%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
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
View Code

 选项和参数详见

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-syntax

posted on 2020-03-25 21:26  流年似水zlw  阅读(550)  评论(0编辑  收藏  举报

导航