本次试用Centos7.2作为PXE服务端批量安装操作系统。之前尝试过使用centos6.x做为服务端批量安装操作系统。本人表示Centos7.2批量装机“坑”不少最终百度无果无奈去google最终完成此实验。故此做此博客来Mark下本次实验过程。
查看操作系统版本并且确定selinux和iptables已经关闭
[root@controller01~]#cat/etc/redhat-release CentOSLinuxrelease7.2.1511(Core) [root@controller01~]#getenforce Disabled [root@controller01~]#iptables-L ChainINPUT(policyACCEPT) targetprotoptsourcedestination ChainFORWARD(policyACCEPT) targetprotoptsourcedestination ChainOUTPUT(policyACCEPT) targetprotoptsourcedestination Chainnova-api-FORWARD(0references) targetprotoptsourcedestination Chainnova-api-INPUT(0references) targetprotoptsourcedestination Chainnova-api-OUTPUT(0references) targetprotoptsourcedestination Chainnova-api-local(0references) targetprotoptsourcedestination Chainnova-filter-top(0references) targetprotoptsourcedestination [root@controller01~]#
安装相关法服务
[root@controller01~]#yuminstalldhcptftptftp-serversyslinuxhttpdxinetd-y 1、首先配置dhcpd服务器 [root@controller01~]#egrep-v"^$|^#"/etc/dhcp/dhcpd.conf optiondomain-name"example.org"; optiondomain-name-serversns1.example.org,ns2.example.org; default-lease-time600; max-lease-time7200; log-facilitylocal7; subnet10.1.1.0netmask255.255.255.0{ } subnet10.1.1.0netmask255.255.255.0{ range10.1.1.2610.1.1.200; optiondomain-name-serversns1.internal.example.org; optiondomain-name"internal.example.org"; optionrouters10.1.1.100; default-lease-time600; max-lease-time7200; next-server10.1.1.100;##tftp的ip地址 filename"/pxelinux.0";##tftp的应答文件 } 指定dhcp服务监听到哪块网卡 [root@controller01~]#grep^[^#]/etc/sysconfig/dhcpd DHCPDARGS=eth1#指定监听网卡 启动dhcpd服务 [root@controller01~]#systemctlstartdhcpd [root@controller01~]# 2、配置tftpfp服务 [root@controller01~]#cat/etc/xinetd.d/tftp #default:off #description:Thetftpserverservesfilesusingthetrivialfiletransfer\ # protocol.Thetftpprotocolisoftenusedtobootdiskless\ # workstations,downloadconfigurationfilestonetwork-awareprinters,\ # andtostarttheinstallationprocessforsomeoperatingsystems. servicetftp { socket_type =dgram protocol =udp wait =yes user =root server =/usr/sbin/in.tftpd server_args =-s/var/lib/tftpboot##默认的放置配置文件的位置 disable =no##把yes改为no per_source =11 cps =1002 flags =IPv4 } [root@controller01~]#
拷贝必须的网络引导文件到tftp的目录
[root@controller01~]#cp-v/usr/share/syslinux/controller01linux.0/var/lib/tftpboot [root@controller01~]#cp-v/usr/share/syslinux/menu.c32/var/lib/tftpboot [root@controller01~]#cp-v/usr/share/syslinux/memdisk/var/lib/tftpboot [root@controller01~]#cp-v/usr/share/syslinux/mboot.c32/var/lib/tftpboot [root@controller01~]#cp-v/usr/share/syslinux/chain.c32/var/lib/tftpboot [root@controller01~]# [root@controller01~]#mkdir/var/lib/tftpboot/pxelinux.cfg [root@controller01~]#mkdir/var/lib/tftpboot/networkboot root@controller01~]#
3、挂载光盘到httpd的默认路径下
[root@controller01~]#mount/dev/cdrom/var/www/html/Centos7.2
4、配置tftp的配置
[root@controller01pxelinux.cfg]#pwd /var/lib/tftpboot/pxelinux.cfg [root@controller01pxelinux.cfg]#catdefault defaultmenu.c32##展示风格 prompt0 timeout150##�Y等该用户选择的超时时间 MENUTITLELinuxTechi.comPXEMenu #LABELlcoal MENULABELlolcal##设置第一项为本地引导防止被勿安装了操作系统当然这是个可选项 LABELlocal MENULABEL^1)BootLocalHardDrive LOCALBOOT0 # LABELcentos7_x64###安装Centos7.2的操作系统 MENULABELCentOS7_X65 menulabel^2)InstallCentOS7x64 KERNEL/networkboot/vmlinuz appendinitrd=/networkboot/initrd.imgks=http://10.1.1.100/centos7-ks.cfgquiet###安装操作系统的应答文件位置 # LABELcentos6_x64 MENULABELCentOS6_X65 menulabel^3)InstallCentOS6x64 kernelcentos6/vmlinuz###这的相对位置为/var/lib/tftpboot/即kernal的位置为/var/lib/tftpboot/centos6 appendinitrd=initrd.imgks=http://10.1.1.100/centos6-ks.cfg
4、拷贝vmlimz和initrd.img到/var/lib/tftpboot/networkboot/下
[root@controller01tftpboot]#cp/var/www/html/Centos7.2/isolinux/vmlinuznetworkboot/ cp/var/www/html/Centos7.2/isolinux/initrd.imgnetworkboot/
5、生成pxe的应答文件可以安装[root@controller01 ~]# yum -y install system-config-kickstart.noarch此过程省略下面直接看我们已经做好的应答文件
[root@controller01~]#cat/var/www/html/centos7-ks.cfg #platform=x86,AMD64,orIntelEM64T #version=DEVEL #Firewallconfiguration firewall--disabled #InstallOSinsteadofupgrade install #UseFTPinstallationmedia url--url="##文件下载的位置 #Rootpassword rootpw--iscrypted$1$lgzpzCCE$Y6xpvPBLom/J4zAipUjfr.##此密码为123.com #Systemauthorizationinformation authuseshadowpassalgo=sha512 #Usegraphicalinstall graphical firstbootdisable #Systemkeyboard keyboardus #Systemlanguage langen_US #SELinuxconfiguration selinuxdisabled #Installationlogginglevel logginglevel=info #Systemtimezone timezoneEurope/Amsterdam #Systembootloaderconfiguration #Rebootaferinstalling reboot##一定要有此选项否则操作系统安装完后不会自动重启。 ###### bootloaderlocation=mbr clearpart--all--initlabel partswap--asprimary--fstype="swap"--size=1024 part/boot--fstypexfs--size=300 partpv.01--size=1--grow volgrouproot_vg01pv.01 logvol/--fstypexfs--name=lv_01--vgname=root_vg01--size=1--grow %packages###要安装的包 @^minimal @core acpid iputils man net-tools ntp ntpdate parted vim-enhanced wget %end###以%end结尾 #%addoncom_redhat_kdump--disable--reserve-mb='auto' #%end %post#--nochroot--log=/mnt/sysimage/var/log/ks.post01.log mkdir/root/test %end [root@controller01~]#
下面说下pxe应答文件没一项的意义
##软件包段### %packages @groupname指定安装的包组 package_name指定安装的包 -package_name指定不安装的包 ###脚本段(可选)##### %pre:安装系统前执行的命令或脚本(由于只依赖于启动镜像支持的命令很少) %post:安装系统后执行的命令或脚本(基本支持所有命令) ## 关键字含义 install告知安装程序这是一次全新安装而不是升级upgrade。 url--url=""通过FTP或HTTP从远程服务器上的安装树中安装。 url--url="http://10.0.0.7/CentOS-6.7/" url--urlftp://<username>:<password>@<server>/<dir> nfs从指定的NFS服务器安装。 nfs--server=nfsserver.example.com--dir=/tmp/install-tree text使用文本模式安装。 lang设置在安装过程中使用的语言以及系统的缺省语言。langen_US.UTF-8 keyboard设置系统键盘类型。keyboardus zerombr清除mbr引导信息。 bootloader系统引导相关配置。 bootloader--location=mbr--driveorder=sda--append="crashkernel=autorhgbquiet" --location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。 --driveorder,指定在BIOS引导顺序中居首的驱动器。 --append=,指定内核参数.要指定多个参数,使用空格分隔它们。 network为通过网络的kickstart安装以及所安装的系统配置联网信息。 network--bootproto=dhcp--device=eth0--onboot=yes--noipv6--hostname=CentOS6 --bootproto=[dhcp/bootp/static]中的一种缺省值是dhcp。bootp和dhcp被认为是相同的。 static方法要求在kickstart文件里输入所有的网络信息。 network--bootproto=static--ip=10.0.0.100--netmask=255.255.255.0--gateway=10.0.0.2--nameserver=10.0.0.2 请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。 --ip=,要安装的机器的IP地址. --gateway=,IP地址格式的默认网关. --netmask=,安装的系统的子网掩码. --hostname=,安装的系统的主机名. --onboot=,是否在引导时启用该设备. --noipv6=,禁用此设备的IPv6. --nameserver=,配置dns解析. timezone设置系统时区。timezone--utcAsia/Shanghai authconfig系统认证信息。authconfig--enableshadow--passalgo=sha512 设置密码加密方式为sha512启用shadow文件。 rootpwroot密码 clearpart清空分区。clearpart--all--initlabel --all从系统中清除所有分区--initlable初始化磁盘标签 part磁盘分区。 part/boot--fstype=ext4--asprimary--size=200 partswap--size=1024 part/--fstype=ext4--grow--asprimary--size=200 --fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat。 --asprimary,强迫把分区分配为主分区,否则提示分区失败。 --size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。 --grow,告诉分区使用所有可用空间(若有),或使用设置的最大值。 firstboot负责协助配置redhat一些重要的信息。 firstboot--disable selinux关闭selinux。selinux--disabled firewall关闭防火墙。firewall--disabled logging设置日志级别。logging--level=info reboot设定安装完成后重启,此选项必须存在不然kickstart显示一条消息并等待用户按任意键后才重新引导也可以选择halt关机。
5、重启xinetd、httpd服务
[root@controller01~]#systemctlrestartxinetd [root@controller01~]#systemctlrestarthttpd
6、下面用客户端PXE启动
当安装完后会自动重启并且默认启动项是从本地内核引导
进入系统后查看是否创建了/root/test
至此完成本次实验。
注 若在安装过程中报
此时把 内存调成2G 方可解决
参考文档
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html#sect-kickstart-postinstall
https://www.linuxtechi.com/configure-pxe-installation-server-centos-7/原文链接:https://www.f2er.com/centos/377054.html