Kickstart 全自动安装部署CentOS 7.4

一、准备工作
Centos 7.4(图形化界面) 虚拟机1台,内存最少2G。
 软件:
figlet-2.2.5.tar.gz ,其他(dhcptftpApache通过YUM安装)
dhcp 服务器用来提供IP信息,以及tftp(存放有pxelinux.0引导程序以及内核文件、参数文件)服务器地址。
Apache 服务器用来存放安装源和应答文件。
可以把这几个服务安装在不同的服务器上,也可以装在同一台服务器。
本次实验是将这些服务安装在同一台服务器上。
二、配置DHCP
    安装dhcp
yum install dhcp -y
rpm -ql dhcp |grep example 查找dhcp的实例配置文件
cat /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example >/etc/dhcp/dhcpd.conf
把实例配置文件内容写到dhcp的配置文件
vim /etc/dhcp/dhcpd.conf
删除注释行,只保留最多的那一个subnet
这里面的网关为什么是189.2,因为本实验用的是Net8网卡,默认是NAT网络,Net8的网卡地址,189.1,NAT的IP是,189.2,所以NAT网络的客户端的网关都是189.2,终端数据都是通过189.2,发给189.1再出去。


systemctl start dhcpd
systemctl enable dhcpd
三、配置tftp
yum install tftp tftp-server xinetd -y
vim /etc/xinetd.d/tftp
把disable 这一项的yes 改为no,默认是yes 。

 
systemctl restart xinetd
systemctl enable xinetd
systemctl start tftp
systemctl enable tftp

四、拷贝引导程序、内核文件到tftp 根目录下。
4.1、引导程序

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
如果没有就安装相应的包。
yum install syslinux -y
rpm -ql syslinux|grep pxelinux.0

4.2、内核文件
vmlinuz initrd.img 这两个文件在光盘里面有,直接挂载光盘,拷贝。

这个文件夹是用来存放pxe的配置文件的,而且必须是这个名字。


 


vim /var/lib/tftpboot/pxelinux.cfg/default





4.3、其他文件
引导菜单配置文件: isolinux.cfg
系统自带的两种窗口模块之一:vesamenu.c32
窗口提示信息文件:boot.msg
窗口背景图片:splash.png


 

五、安装httpd
yum install httpd -y
mkdir -p /var/www/html/dvd
把光盘内容拷贝到这个文件夹下面
cd /var/www/html/dvd
cp -r /mnt/cdrom/* .
修改httpd.conf
vim /etc/httpd/conf/httpd.conf






启动服务,设置开机启动。
systemctl start httpd
systemctl enable httpd
六、配置应答文件
   6.1、配置本地YUM源。

这里的标题一定要写成[development],在图形化界面配置应答文件的时候,软件安装包选项,才会有内容。





  6.2、安装kiskstart
yum install system-config-kickstart -y
进入控制台,打开终端
system-config-kickstart &

 

 

 

 

 在这里,先添加标准的分区,等一下在配置文件里面去改成LVS分区。
 

 

 

 

 

 

 

 

 
本次实验,选择的是最小化安装,这里可以根据自已的需要,选择不同的软件包。
 
 

 

 

 
还可以在配置文件里面去添加 要执行的脚本内容。
 保存配置
 

 

 
cp /root/ks.cfg /var/www/html/
七、修改ks.cfg
   vim /var/www/html/ks.cfg
   7.1、把原来标准分区,改为LVS分区,按百分比来分配空间。
 
     修改成下面内容:
 
 
   7.2、修改安装完成后的脚本。
        vim /var/www/html/ks.cfg
 
++++++++++++++++++++++++++++++++++++++++++++++++++
%post
IP=`ifconfig ens33 | awk -F'[: ]+' 'NR==2{print $3}'`
Netm=`ifconfig ens33 | awk -F'[: ]+' 'NR==2{print $5}'`
Gw=`route -n | awk -F'[: ]+' 'NR==3{print $2}'`
DN=`cat /etc/resolv.conf |grep "nameserver"|awk -F' ' 'NR==1{print $2}'`
cp /etc/resolv.conf /etc/resolv.conf.bak
cd/etc/sysconfig/network-scripts/ 
cat >ifcfg-eth0 <<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0 DEVICE=eth0
ONBOOT=yes
IPADDR=$IP
NETMASK=$Netm
GATEWAY=$Gw
DNS1=$DN
EOF
rm -rf /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
%end

以上这一段脚本功能是,把默认网卡名称:ens33 改成 eth0,IP配置改成静态。

上图中的脚本功能是,不改网卡名称,IP配置改成静态。
++++++++++++++++++++++++++++++++++++++++ 
ks.cfg全部内容
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$Dueb030O$WQvGz.dKGLSL.wl9qn4ZH.
# Use network installation
url --url="http://192.168.189.132/dvd"
# System language
lang zh_CN
# Firewall configuration
firewall --disabled
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
#在开始安装的时候,把网卡名称改成eth0
bootloader --append=" net.ifnames=0 biosdevname=0 crashkernel=auto" --location=mbr
# Network information
network --bootproto=dhcp --device=eth0
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=512
#LVS分区配置
part pv.01 --size=1 --grow
volgroup vg01 pv.01
logvol / --vgname=vg01 --percent=90 --name=lv01
logvol swap --vgname=vg01 --percent=5 --name=lv02
%packages
@base
@core
%end
%post
useradd tom
echo windows@123 | passwd --stdin tom
yum install vim lrzsz wget gcc gcc-c++ tigervnc tigervnc-server -y
#这里 变量获取 IP,还是要查看原来的名称
#因为这时系统装完了,并没有重启,这时的IP信息还是保存在原来的ifcfg-ens33里面的
IP=`ifconfig ens33 | awk -F'[: ]+' 'NR==2{print $3}'`
Netm=`ifconfig ens33 | awk -F'[: ]+' 'NR==2{print $5}'`
Gw=`route -n | awk -F'[: ]+' 'NR==3{print $2}'`
DN=`cat /etc/resolv.conf |grep "nameserver"|awk -F' ' 'NR==1{print $2}'`
cp /etc/resolv.conf /etc/resolv.conf.bak
cd /etc/sysconfig/network-scripts/
cat >ifcfg-eth0 <<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=$IP
NETMASK=$Netm
GATEWAY=$Gw
DNS1=$DN
EOF
rm -rf /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
%end
八、美化boot.msg
    8.1、下载安装figlet-2.2.5.tar.gz
wget ftp://ftp.figlet.org/pub/figlet/program/unix/figlet-2.2.5.tar.gz
 需要安装gcc
yum install gcc -y
tar zxvf figlet-2.2.5.tar.gz
cd figlet-2.2.5/
make && make install




 
把上面生成的内容,直接复制到boot.msg里面。
vim /var/lib/tftpboot/boot.msg

 
九、测试,vmware workstation 14 虚拟机,自动安装系统。
    需要把虚Vmware 对应的网卡的DHCP关掉。本实验用的是Net8(NAT)

 


 

 

 

 

 

 

 

 
自动重新启动

 

 

 

 
———————————— END ———————————————