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文件基本说明
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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 -
ks.cfg文件基本说明
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#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
选项和参数详见