通常,在安装操作系统的过程需大量的人机交互过程,为减少交互过程,为提高安装效率,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服务器、启动文件等),之后请求并下载安装需要的文件。
系统概况 服务端: IP:192.168.100.254 NIS域:mydomain.org 系统:CentOS 6.8 x86_64 客户端: IP:192.168.100.0/24 NIS域:mydomain.org 系统:CentOS 7.3 x86_64 以下为服务端设置 安装所需要的软件: # yum -y install dhcp nfs-utils tftp-server 配置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服务: # service xinetd restart 配置NFS服务: 建立ks.cfg等基本引导文件所需要的公共目录/tftpboot及CentOS镜像挂载目录/centos: # mkdir /tftpboot /centos 配置NFS共享,允许192.168.100.0/24 IP地址客户端访问,修改配置文件/etc/exports:
/centos 192.168.100.0/24(ro,async,no_root_squash) /tftpboot 192.168.100.0/24(rw,async,no_root_squash)重启NFS: # service nfs restart 查看NFS状态: # exportfs 正常的话,应有类似输出:
/centos 192.168.100.0/255.255.255.0 /tftpboot 192.168.100.0/255.255.255.0配置kickstart安装文件
可以使用某台CentOS 7(注意不是6)的/root/anaconda-ks.cfg作为模板手动修改,也可以使用system-config-kickstart命令配置ks.cfg文件: 在某台CentOS 7(注意不是6)系统上安装所需包:# yum -y install system-config-kickstart 在某台CentOS 7(注意不是6)系统上运行图形界面进行设置:# system-config-kickstart 载入/root/anaconda-ks.cfg作为模板:文件->打开文件,选择/root/anaconda-ks.cfg,在此界面上进行配置并保存后,放到服务端/tftpboot/ks.cfg。
修改/tftpboot/ks.cfg或/tftpboot/nodes/<ip>-kickstart(参见后面PXE引导部分),增减所需安装的软件包等:#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 >/etc/fstab %end #%post结尾以上为针对集群的计算节点设置的,比如设置NIS用户信息、关闭防火墙等,请根据自己需要定制,kickstart文件说明参见: https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html 验证ks文件的正确性(可选): 在CentOS 7系统安装pykickstart包: # yum -y install pykickstart 在CentOS 7系统验证上传到此系统的ks文件: ksvalidator ks.cfg 如果没任何输出,表示没问题。 在CentOS 7系统查看CentOS 6与7的ks版本区别: ksverdiff -f RHEL6 -to RHEL7 PXE引导配置
PXE启动映像文件由syslinux软件包提供,CentOS镜像中已提供。 下载第一张DVD镜像:# wget http://mirrors.ustc.edu.cn/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso 挂载第一张DVD镜像:# mount -o loop CentOS-7-x86_64-DVD-1611.iso /centos 将pxelinux.0等复制到/tftpboot:# cp /centos/isolinux/{boot.cat,boot.msg,grub.conf,isolinux.bin,splash.png,TRANS.TBL,vesamenu.c32} /tftpboot 将安装光盘目录中的启动文件复制到/tftpboot:# cp /centos/images/pxeboot/{vmlinuz,initrd.img} /tftpboot 针对UEFI还需要: # rpm2cpio /centos/Packages/shim-0.9-2.el7.x86_64.rpm | cpio -dimv # rpm2cpio /centos/Packages/grub2-efi-2.02-0.44.el7.centos.x86_64.rpm | cpio -dimv 运行上面命令,将在当前目录生成一个boot目录,复制所需文件到/tftpboot,之后boot目录可删除 # cp boot/efi/EFI/centos/{shim.efi,grubx64.efi} /tftpboot 创建存放引导客户端的配置文件,具体采用哪种引导,需要在BIOS中设置,这样启动时调用相应的引导文件。如果确定使用某-种,可以只设置下面对应的那种即可。 传统LEGACY引导: # mkdir /tftpboot/pxelinux.cfg && cp /centos/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default 修改配置/tftpboot/pxelinux.cfg/default:
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可以为以下两者之一: 文件路径:如nfs:192.168.100.254:/tftpboot/ks.cfg,则每个安装都使用此配置文件,参见ks.cfg 以/结尾的目录路径:如nfs:192.168.100.254:/tftpboot/nodes/,则每个安装使用/tftpboot/nodes/分配到的IP-kickstart作为配置文件,如/tftpboot/nodes/192.168.100.148-kickstart,这样可以为每个不同的IP设置不同的安装选项,参见192.168.100.148-kickstart 注:nfs服务还可以换用http或ftp等服务提供,此时需要将nfs:<ip>:<path>替换为(注意:分隔) inst.repo=cdrom 采用cdrom inst.repo=cdrom:<device> 采用特定cdrom inst.repo=hd:<device>:<path> 采用硬盘上的目录,需要ISO文件 inst.repo=[http,https,ftp]://<host>/<path> 采用http、https 、ftp协议(注意//分隔) UEFI引导: 创建默认配置/tftpboot/efidefault:
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引导的其他内容。 创建默认配置/tftpboot/grub.conf:
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 }参见:http://media.readthedocs.org/pdf/anaconda-installer/latest/anaconda-installer.pdf 配置DHCP
修改配置设定提供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服务: # service dhcpd restart 服务端配置到此结束,下面开始客户端安装。 启动客户端进行自动安装 设置从网卡PXE启动,一般需要设置BIOS或者在启动时设置按某键(比如F12)从网卡PXE启动。 出现下面界面,表示从网卡PXE启动正常,正在申请IP,如果获取不到,请检查服务端DHCP服务或者两者之间网络是否正常
出现下面界面,表示PXE和tftp服务器正常,已经获取/tftpboot/pxelinux.0和/tftpboot/pxelinux.cfg/default或/tftpboot/shim.efi和/tftpboot/efidefault 利用<TAB>键可以查看内容引导参数是否正确,必要时可修改 问题解决出现问题时,一般需要查看系统日志,如:/var/log/messages。
Powered by Lido DAO 官网 @2013-2022 RSS地图 HTML地图
Copyright Powered by365建站 © 2013-2024