最近由于工作原因接触到使用pxe去给大量服务器装系统,于是做了一些简单的学习笔记。
一、原理
PXE client在网卡的ROM中,被安装的机器从自己的PXE网卡启动,向网络中的DHCP服务器请求ip,并搜寻引导文件(bootstrap文件,在centos中,叫pxelinux.0),DHCP server返回给client端ip以及引导文件的位置(一般放在ftp server上),client端向TFTP server索取引导文件,引导程序读取配置文件pxelinux.cfg,获取系统初始化信息。PXE client在工作过程中需要三个二进制文件:pxelinux.0,linux内核,linux根文件系统initrd,这三个文件都放在tftp服务器目录中,最后,系统启动开始安装。
二、具体配置
(1)dhcp配置
next-server为ftp服务器地址,filename为PXE引导程序文件名。
(2)拷贝文件
将安装光盘上pxelinux.0,initrd,liunx内核文件拷贝到/var/lib/tftpboot目录下,创建pxelinux.cfg文件夹,将isolinux.cfg文件拷贝到pxelinux.cfg下,命名为default。
(3)配置pxelinux.cfg/default文件
prompt为1表示:显示“boot:”提示符。
default netinstall表示:启动netinstall标记的内核,默认是install启动。
ks=表示ks文件地址(4)配置kickstart
为了减少安装OS大量的人机交互过程,这里使用kickstart功能,只需提前写好配置文件,安装时就可以按照配置文件来进行自动安装。通过修改系统生成的anaconda-ks.cfg文件,命名为ks.cfg:
# Use graphical install
graphical 在图形模式下根据kickstart进行安装
# Run the Setup Agent on firstboot
firstboot –enable 安装后第一次启动给出手动配置界面
ignoredisk --only-use=sda 指定忽略的磁盘
# Keyboard layouts
keyboard --vckeymap=us--xlayouts='us' 键盘类型
# System language
lang en_US.UTF-8 语言类型
# Network information
network --hostname=localhost.localdomain 指定主机名
# System services
services--disabled="chronyd" 设置开机自启服务
# System timezone
timezone Asia/Hong_Kong--isUtc –nontp 指定时区
# System bootloaderconfiguration
bootloader --append="crashkernel=1G" --location=mbr --boot-drive=sda 指定内核参数,grub安装的分区以及引导程序的位置,默认mbr
# Partition clearinginformation
clearpart --all --initlabel--drives=sda 清除所有分区,initlabel是创建标签的意思,对于没有mbr或者gpt的新硬盘是必须的
# Disk partitioninginformation 创建分区
part swap--fstype="swap" --ondisk=sda --size=5120
part /home--fstype="xfs" --ondisk=sda --size=102400
part /--fstype="xfs" --ondisk=sda --size=102400 --grow
%packages 需要安装的软件包
@core
vim
kexec-tools
ipmitool
tcpdump
net-tools
%end
(5)设置机器为网卡(PXE)启动方式
ipmitool -I lanplus-H xxx.xxx.xx.xx -L ADMINISTRATOR -U root -P xxx chassis bootdev pxe
ipmitool -I lanplus-H xxx.xxx.xx.xx -L ADMINISTRATOR -U root -P xxx power reset
等待20分钟即可装好。