本教程主要详细写出安装的过程,具体原理及相关代码解释请看下面的文章。
KICKSTART无人值守安装
kickstart实现批量安装CentOS7.x系统
kickstart 配置文件说明
CentOS7(即服务器S2),最小系统安装(基本开发工具环境);内存、硬盘、网络模式,如下所示
采用桥接网络模式,并关闭虚拟机的DHCP
关闭防火墙:
systemctl stop firewalld.service
禁止防火墙开机启动:
systemctl disable firewalld.service
查看防火墙状态:
firewall-cmd --state
vi /etc/selinux/config
“SELINUX=enforcing”改为“SELINUX=disabled”
重启服务器S2,再检查SELINUX的状态:
reboot
getenforce
查看虚拟机服务器S2的网卡标识:
ip addr
服务器S2网卡标识为ens33,开始设置网卡的静态IP:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将上图的网络配置改为:
(在桥接模式下,服务器S2的IP要与物理主机的IP同一网段,但不能相同)
(改动的地方有:BOOTPROTO=static,ONBOOT=yes,再加上IPADDR,GATEWAY,NETMASK)
配置完IP后,重启网络服务
service network restart
利用Xshell就可以复制粘贴代码到服务器S2了,以下操作均在Xshell上进行。
在上一步设好服务器静态IP后,进行连接互联网测试:
ping baidu.com
若ping失败,出现以下内容:
ping: baidu.com: 未知的名称或服务
但是ping自己的物理主机IP或百度的IP却没问题
则编辑:
vi /etc/resolv.conf
补充内容:
search localdomain
nameserver 8.8.8.8
再次重启网络服务:
service network restart
继续ping baidu.com
,没问题就可以了
yum -y install dhcp
vi /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
subnet 10.214.129.0 netmask 255.255.255.0 {
range 10.214.129.100 10.214.129.200; #可分配的IP范围
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.214.129.123; # 告知客户机TFTP服务器的IP
filename "/pxelinux.0";
}
(上面的range必须包含服务器S2的IP;next-server就是S2的IP)
启动DHCP服务:
systemctl restart dhcpd.service
开机自启动设置(可选):
systemctl enable dhcpd
查看其状态是否正常:
systemctl status dhcpd.service
新建空白虚拟机C1(运行内存不能少于2G,使用桥接网络),看DHCP服务是否正常工作。
客户机C1已分配到IP,并且来源DHCP的IP正确,证明DHCP服务器工作正常。
yum -y install tftp-server
将“disable= yes”改成“disable= no”
vi /etc/xinetd.d/tftp
启动TFTP服务
systemctl restart tftp.service
开机自启动设置(可选):
systemctl enable tftp
查看其状态是否正常:
systemctl status tftp.service
重启客户机C1,看TFTP服务是否正常工作。
TFTP已正常工作,只是在TFTP目录下找不到pxelinux.0文件
yum -y install httpd
vi /etc/httpd/conf/httpd.conf
启动HTTP服务:
systemctl restart httpd.service
开机自启动设置(可选):
systemctl enable httpd
查看其状态是否正常:
systemctl status httpd.service
若HTTP服务状态出现以下情况,检查上面的“2. 配置”
mkdir /var/www/html/CentOS7
挂载镜像:
mount /dev/cdrom /var/www/html/CentOS7
检查挂载情况:
df -h
在物理主机的浏览器中输入:
http://10.214.129.123/CentOS7/
出现以下网页为正常结果:
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/CentOS7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
此时tftpboot文件夹下的文件目录如下:
ls -R /var/lib/tftpboot/
这里使用文本编辑器创建ks.cfg文件,首先生成客户机root加密密码:
python -c 'import crypt; print(crypt.crypt("123456"))'
复制所生成的密码,等会用于ks.cfg文件的rootpw。
下面开始创建自动安装配置文件CentOS7-ks.cfg
mkdir /var/www/html/ks_config
vi /var/www/html/ks_config/CentOS7-ks.cfg
以下代码移植只需改动IP,更多改动请看前言链接
#
# Adapted by LG 20181216
# No boot-up optimization settings for the time being
install
url --url="http://10.214.129.123/CentOS7/"
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $6$ZOqJtEcGR3A0Hf75$o8dcPt/F8V3Cu6pBXuUAY/10H5mUVPJbLNFnOH.TFew1xmcTVzKASukpv5nVFA/Cuv1mCEVj2sEtjvXquU/bJ0
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%end
打开default文件,并将原有内容删除:
vi /var/lib/tftpboot/pxelinux.cfg/default
改为以下内容:
default ks
prompt 0
label ks
kernel vmlinuz
append initrd=initrd.img ks=http://10.214.129.123/ks_config/CentOS7-ks.cfg
模拟批量自动安装CentOS7,下面为成功安装的客户机C1,C2,C3
成功安装后,检查一下预设的磁盘分区情况
没问题!
(与虚拟环境实验相同)
(与虚拟环境实验相同)
由指令ip addr
查询到,服务器网卡标识为p4p1
修改网络配置(和虚拟机部分类似):
vi /etc/sysconfig/network-scripts/ifcfg-p4p1
(与虚拟环境实验相同)
因为HTTP服务测试时需要复制镜像文件,所以先将镜像放进U盘;
同时为了减少手动输入配置文件的失误,我们可以先把需要输入的配置文件dhcpd.conf、CentOS7-ks.cfg、default,也放进U盘。(需要先通过虚拟机中的S2与Xshell导出配置文件,才能直接用在实际的服务器S2)
U盘的文件系统格式有FAT32和NTFS,我的镜像文件8.8G,FAT32文件系统的U盘装不下,所以将U盘格式化为NTFS文件系统。
创建一个待挂载的目录:
mkdir /mnt/usb
插入U盘,获取U盘的设备标识:
fdisk -l
对于FAT32文件系统的U盘,直接用指令进行挂载:mount -t vfat /dev/sdc1 /mnt/usb
对于NTFS文件系统的U盘,由于CentOS默认不支持NTFS,需要通过ntfs3g。又因为CentOS默认源里没有ntfs3g,所以选择加源yum安装。
先安装wget:
yum -y install wget
再安装:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
如果出现:
wget: unable to resolve host address
则vi /etc/resolv.conf
,加上nameserver 8.8.4.4
接着安装ntfs3g:
yum install ntfs-3g
实现挂载:
mount -t ntfs-3g /dev/sdc1 /mnt/usb
DHCP安装,配置,启动;(除了配置可以从/mnt/usb复制dhcpd.conf,其它与虚拟环境实验相同)
TFTP安装,配置,启动;(与虚拟环境实验相同)
HTTP安装,配置,启动;(与虚拟环境实验相同)
HTTP服务测试:
创建网页目录:
mkdir /var/www/html/CentOS7
从U盘挂载目录中复制镜像文件到网页目录:
cp /mnt/usb/CentOS-7-x86_64-Everything-1804.iso /var/www/html/CentOS7
解压镜像文件到网页目录:
mount -t iso9660 -o loop /var/www/html/CentOS7/CentOS-7-x86_64-Everything-1804.iso /var/www/html/CentOS7
用局域网内的电脑浏览器访问:http://192.168.1.102/CentOS7/
出现以下结果为正常
(与虚拟环境实验相同)
创建网页目录:
mkdir /var/www/html/ks_config
从U盘挂载目录中复制CentOS7-ks.cfg到网页目录:
cp /mnt/usb/CentOS7-ks.cfg /var/www/html/ks_config
从U盘挂载目录中复制default到网页目录:
cp /mnt/usb/default /var/lib/tftpboot/pxelinux.cfg/default
客户机C1,C2开机,手动进入BIOS模式,选择从网卡开始引导(Onboard NIC)
开始自动安装: