通常,在安装操作系统的过程需大量的人机交互过程,为减少交互过程,为提高安装效率,Red Hat Linux开始支持称为kickstart的功能,只需事先定义好一个kickstart自动应答配置文件(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了繁琐的人机交互,实现无人值守的自动化安装。安装好一机器,安装程序都会创建一个kickstart配置文件/root/anaconda-ks.cfg,记录真实安装配置。CentOS作为Red Hat Enterprise Linux(RHEL)的衍生版也支持此功能。
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。PXE协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。PXE在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。
PXE网络安装:客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。
tftp提供dhcp获取IP后所需要下载pxelinux.0及default、efidefault等文件的服务。修改配置文件/etc/xinetd.d/tftp:
service tftp { disable = no #默认是yes,改为no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot #-s 表示用/tftpboot作为tftp目录的根目录 per_source = 11 cps = 100 2 flags = IPv4 }重启xinetd服务:
/centos 192.168.100.0/24(ro,async,no_root_squash) /tftpboot 192.168.100.0/24(rw,async,no_root_squash)重启NFS:
/centos 192.168.100.0/255.255.255.0 /tftpboot 192.168.100.0/255.255.255.0
可以使用某台CentOS 7(注意不是6)的/root/anaconda-ks.cfg作为模板手动修改,也可以使用system-config-kickstart命令配置ks.cfg文件:
#platform=x86, AMD64, 或 Intel EM64T #version=CentOS7 # Install OS instead of upgrade #全新安装而不是升级 install # Keyboard layouts keyboard 'us' # Root password rootpw --iscrypted $改成这样不会再给我发泄密警告了吧?10 #采用加密记录 #rootpw --plaintext 12你要认为我泄漏密码,我对你智商也没辙456 #采用明文记录 # System language lang en_US # Firewall configuration #屏蔽防火墙 firewall --disabled # System authorization information #设定NIS信息 auth --useshadow --passalgo=sha512 --enablenis --nisdomain=mydomain.org --nisserver=192.168.100.254 # Use text mode install #安装方式,文本界面,图形的话graphy text # SELinux configuration #关闭SELinux selinux --disabled # Do not configure the X Window System #不配置X图形界面 skipx # Use NFS installation media #设定安装方式 nfs --server=192.168.100.254 --dir=/centos # Use http installation source #url --url=http://192.168.100.254/centos/7/ # Network information #采用DHCP获取IP network --bootproto=dhcp # Reboot after installation #安装后自动重启,如果BIOS中设置从PXE首先启动,那么会重复安装,请注意,安装后应设置为从先硬盘启动 reboot # System timezone timezone Asia/Shanghai # System bootloader configuration bootloader --location=mbr # Partition clearing information #清除原有分区 clearpart --all # Disk partitioning information part / --fstype="xfs" --size=10000 part /boot --fstype="xfs" --size=200 #part /boot/efi --fstype=efi --size=200 #UEFI引导安装时需要,传统LEGACY引导时可屏蔽此选项 part swap --fstype="swap" --size=8000 part /tmp --fstype="xfs" --grow --size=1 %packages #设定所需要的软件包,按需要调整 @base #@表示一组软件包 @network-server @performance @system-admin-tools sdparm tree tuned tuned-utils ypbind nfs-utils vim-enhanced #-表示从默认软件包的需要去除的软件包 -lvm2 -nano -pcmciautils -plymouth -rfkill -rsync -system-config-firewall-tui -system-config-network-tui -unzip -vconfig -wireless-tools %end #%packages结尾 %pre #预案装脚本,非必须 date %end #%pre结尾 %post #安装后脚本,非必须 cat >>/root/.bashrc <以上为针对集群的计算节点设置的,比如设置NIS用户信息、关闭防火墙等,请根据自己需要定制,kickstart文件说明参见: https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html>/etc/fstab %end #%post结尾
PXE启动映像文件由syslinux软件包提供,CentOS镜像中已提供。
default linux #prompt 1# 不要提示,直接进行安装 timeout 60 #提示时的等待时间 display boot.msg menu background splash.png menu title Welcome to CentOS 7.3 x86_64! label linux menu label ^Install CentOS Linux 7 x86_64 menu default #注意,这里设置默认启动 kernel vmlinuz append initrd=initrd.img inst.ks=nfs:192.168.100.254:/tftpboot/nodes/ inst.repo=nfs:192.168.100.254:/centos ip=dhcp nameserver=202.38.64.7 #append initrd=initrd.img inst.ks=nfs:192.168.100.254:/tftpboot/ks.cfg inst.repo=nfs:192.168.100.254:/centos ip=dhcp nameserver=202.38.64.7 #主要为上面设置ks文件、内核引导参数等 #以下check和local内容可不用,只要上面内容即可 label check #可选 menu label Test this ^media & install CentOS Linux 7 x86_64 # menu default #注意,需屏蔽掉此项默认启动 kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet label local #可选项,设置从硬盘启动 menu label Boot from ^local drive localboot 0inst.ks可以为以下两者之一:
default=0 timeout=1 splashimage=(nd)/splash.png title Install CentOS-7.3-x86_64 (UEFI) use Kickstart File root (nd) kernel /vmlinuz initrd=initrd.img inst.ks=nfs:192.168.100.254:/tftpboot/nodes/ inst.repo=nfs:192.168.100.254:/centos ip=dhcp nameserver=202.38.64.7 #initrd=initrd.img inst.ks=nfs:192.168.100.254:/tftpboot/ks.cfg inst.repo=nfs:192.168.100.254:/centos ip=dhcp nameserver=202.38.64.7也可以添加类似传统LEGACY引导的其他内容。
default=0 splashimage=@SPLASHPATH@ timeout 1 hiddenmenu title Install CentOS Linux 7.3 menuentry 'RHEL 7.3' { linuxefi vmlinuz ip=dhcp inst.repo=nfs:192.168.100.254:/centos/ initrdefi initrd.img }
修改配置设定提供DHCP的网卡/etc/sysconfig/dhcpd:
DHCPDARGS=eth0
这里使用与客户端网络相连的eth0提供DHCP服务,此处不设置也没关系,会根据下面dhcpd.conf中的subnet使用对应的网卡。
设定DHCP分配IP段及PXE服务,修改/etc/dhcp/dhcpd.conf:
#option definitions common to all supported networks... option domain-name "mydomain.org"; #域名 option domain-name-servers ns1.ustc.edu.cn; #域名服务器 default-lease-time 600; max-lease-time 7200; subnet 192.168.100.0 netmask 255.255.255.0 { option routers 192.168.100.254; option subnet-mask 255.255.255.0; option nis-domain "mydomain.org"; option domain-name "mydomain.org"; option domain-name-servers 202.38.64.7; option time-offset -18000; # Eastern Standard Time range dynamic-bootp 192.168.100.1 192.168.100.253; default-lease-time 21600; max-lease-time 43200; host node148 { hardware ethernet a0:42:3f:33:49:5f; fixed-address 192.168.100.148; } } option space PXE; option PXE.mtftp-ip code 1 = ip-address; option PXE.mtftp-cport code 2 = unsigned integer 16; option PXE.mtftp-sport code 3 = unsigned integer 16; option PXE.mtftp-tmout code 4 = unsigned integer 8; option PXE.mtftp-delay code 5 = unsigned integer 8; option architecture-type code 93 = unsigned integer 16; # RFC4578 class "pxeclients" { match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 192.168.100.254; if option architecture-type = 00:07 { filename "shim.efi"; #x86_64 UEFI引导 # } else if option architecture-type = 00:06 { # filename "bootia32.efi"; #ia32 UEFI引导,本文后面未涉及 } else { filename "pxelinux.0"; #传统LEGACY引导 } }
如不知道客户端MAC地址,不设置固定IP,那么将会自动分配随机地址,客户端系统装好后可以修改客户端配置设置成固定IP。
重启动DHCP服务:
出现问题时,一般需要查看系统日志,如:/var/log/messages。