Centos7.2 kickstart批量装机

本次试用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启动

wKioL1lQZR3yKezwAAAchOgc_9E041.png-wh_50

wKiom1lQZoeh8o15AAK95XJwhIM170.png-wh_50

当安装完后会自动重启并且默认启动项是从本地内核引导

wKiom1lQa1-SNS5AAAAfbRCIwuA537.png-wh_50

进入系统后查看是否创建了/root/test

wKioL1lQbBjQ2wS5AAAYPVmy0sg048.png-wh_50

至此完成本次实验。

注 若在安装过程中报

wKioL1mVFerSI_y9AACTmExQWbk344.png

此时把 内存调成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/

相关文章

linux下开机自启: 在/etc/init.d目录下新建文件elasticsear...
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以...
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用...
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一...
设置时区(CentOS 7) 先执行命令timedatectl status|grep &...
vim&#160;/etc/sysconfig/network-scripts/ifcfg-eth0 B...