kickstart介绍

Kickstart是一种无人值守的安装方式之一 他的工作原理就是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填写参数的情况,安装程序就会首先去查找ks.cfg文件,如果找到合适的参数,就采用所找的参数;如果没有找到,便弹出对话框让安装着手动书写。所以,ks.cfg文件涵盖了所有安装过程中需要填写的参数。那么安装者现在只需要告诉安装程序从何处下载ks.cfg文件,剩下的交给kickstart就可以完成安装操作系统这个事情。等安装完毕之后,安装程序根据ks.cfg中设置的重启/关闭系统,并结束安装。

kickstart模块

kickstart它只是一种安装方式,与硬盘安装和磁盘安装没有区别,可以说是同等概念的一种安装方式。磁盘和硬盘安装都是需要iso文件的,那么kickstart这种安装方式的操作系统文件从哪里来?由通过什么样的方式或者说过程把系统安装上?下面写一个公式:kickstart=dhcp+tftp+ftp(nfs或者http等)+pxe+ks.cfg

  • DHCP :动态主机配置协议。DHCP服务器可以给DHCP用户分配IP地址,这个IP地址是临时的。有一个租用期,由DHTP服务器通过配置决定。
  • TFTP :基于UDP(用户数据包协议)一种简单文本传输协议.(和FTP大同小异)如果想用linux搭建TFTP服务器用TFTP传输协议来传输数据的话,就必须在linux上安装TFTP服务软件,并做响应的配置。
  • FTP : 基于TCP(传输控制协议)的文本传输协议。在进行文本传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:控制连接和数据连接。控制连接在整个会话过程中一直保持打开,FTP客户所发出的传送请求通过控制连接发送给服务器端的控制进程,但是控制连接并不用来传送文件。当控制进程在接收到FTP客户发来的文件传输请求之后,穿件一个“数据传输进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。数据传输进程用于完成文件的传送。在传送完毕后关闭“数据连接”并结束进程的运行。
  • PXE : 属于硬件自带的预启动执行环境。Inter研发的一门技术,基于Client/Server的网络模式(即客户端与服务器),其被写入了Inter的CPU,只要是使用Inter的CPU,则BIOS里都支持PXE技术。支持远程主机通过网络从远程服务器下载镜像(下载后存储到了客户端主机的存储空间中),并由此支持通过网络启动操作系统。即:PXE可以引导和安装Linux ,windows等操作系统。

[

](https://blog.csdn.net/My_name_is_ZwZ/article/details/83961958)

kickstart工作流程

客户机先从网络上启动,执行PXE程序,再向DHCP服务器请求IP地址,获得到DHCP服务器发来的IP地址后,会请求引导文件pxelinux.0,服务器发送引导文件;客户机引导成功后,再向服务器请求配置文件pxelinux.cfg,服务器发送配置文件,再请求内核文件vmlinuz,发送内核文件,请求传送根文件系统initrd.img,然后内核启动,请求ks.cfg,安装程序会根据ks.cfg中的选项来安装系统。
[

](https://blog.csdn.net/My_name_is_ZwZ/article/details/83961958)
image.png

kickstart安装步骤

  • 前提

    1. systemctl stop firewalld && systemctl disable firewalld
    2. sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    3. reboot
  • 生成ks.cfg配置文件

默认在家目录下有个anaconda-ks.cfg,该文件可用于ks.cfg,为了避免更改错误,建议使用system-config-kickstart这个程序来生成。

  1. yum install -y system-config-kickstart

image.png
由于centos7的system-config-kickstart有bug,需要更改一下,否则选择安装包(Package Selection)的时候没有内容。

  1. vim /etc/yum.repos.d/CentOS-Base.repo
  2. 修改仓库名称为[development]

Basic Configuration页面

Time Zone项选择Asia/Shanghai, Root Password项填入安装完成后的系统密码,勾上Reboot system after installationPerform installation in text mode(graphical is default),这两项是让系统安装以文本模式进行,以及安装完成后重启。
image.png
Installation Method页面

勾选Perform new installation,并且Installation source中选择HTTP , HTTP Server为实际yum源r地址,HTTP Directory为yum源的路径
image.png
Boot Loader Options页面

Install Type选择Install new boot loaderInstall Options 选择Install boot loader on Master Boot Record(MBR)
Kernel parameters可以填上内核参数,如selinux=0这样安装完成,selinux默认禁用。
image.png
Partition Information页面

Master Boot Record选择Clear Master Boot RecordPartitions选择Remove all existing partitionsDisk label选择
Intialize the disk labelLayout点击“Add”去添加分区
image.png
Network Configuration页面

点击“Add Network Device” ,Network Device填网卡名称,Network Type可以根据需求选择
image.png
Authentication Configuration页面正常不用改,保持默认

Firewall Configuration页面

SElinux选择disabledSecurity level选择disable firewall
image.png
Display Configuration页面不用更改,保持默认

Package Selection页面根据需求选择

Pre-Installation Script页面
这个页面是安装前执行脚本,一般不用填内容
Post-Installation Script页面
这个页面是安装完成后执行的脚本,可以根据需求填写.例如:

  1. systemctl disable inital-setup-service #如果图形安装系统,结束后会提示license相关,禁止这项。
  2. systemctl set-default multi-user.target #如果图形安装系统,设置默认不以图形界面启动
  3. useradd test #创建用户
  4. echo 123456 | passwd --stdin test #为刚创建的用户设置密码

image.png
点击“File”—-“Save”生成配置文件并保存。

  • 制作yum源

安装启动apache

  1. yum install -y httpd
  2. systemctl enable --now httpd
  3. mkdir /var/www/html/centos7

挂载光盘

  1. /dev/sr0 /var/www/html/centos7 iso9600 defaults 0 0
  2. echo '- - -'>/sys/class/scsi_host/host2/scan #如果挂载df没有识别到的话执行
  3. mount -a
  4. df
  5. systemctl restart httpd

重新加载yum源文件

  1. cp /var/www/html/centos7/repodata/*.xml /root/ #将xml文件备份出来,xml文件为yum包列表
  2. rm -rf /var/www/html/centos7/repodata/* #清空repodata下所有内容
  3. cp /root/*.xml /var/www/html/centos7/repodata/ #将xml复制回原来目录
  4. createrepo -g *.xml . #更新yum列表
  5. find -name TRANS.TBL #无用文件,找到后删除
  6. find -name TRANS.TBL -exec rm {}\; #找到后删除
  7. yum clean all && yum makecache

访问 IP/centos7,如果能访问,则正常
image.png

  • 安装配置DHCP

安装DHCP

  1. yum install -y dhcp

配置DHCP

  1. cp /usr/share/doc/dhcp-4.2.5/dchpd.conf.example /etc/dhcpd/dhcpd.conf
  2. vim /etc/dhcpd/dhcpd.conf
  3. option domain-name-server 192.168.153.2 #设置全局dns
  4. option routers 192.168.153.2 #设置全局网关
  5. defualt-lease-time 86400 #设置租期
  6. max-lease-time 10000 #client主动获取租期最大时间
  7. subnet 192.168.153.0 netmask 255.255.255.0{ #设置网段
  8. range 192.168.153.10.192.168.153.100; #设置dhcp获取ip范围
  9. option routers 192.168.153.2; #设置网关
  10. option domain-name-servers 192.168.153.2; #设置dns
  11. net-server 192.168.153.100; #设置dhcp的服务器地址
  12. filename "pxelinux.0"; #指定引导文件

image.png
启动DHCP

  1. systemctl enable --now dhcp
  • 安装启动tftp-server

    1. yum install -y tftp-server
    2. systemctl enable --now tftp

    测试tftp

    1. touch f1 /var/lib/tftpboot #在tftp工作目录生成一个文件
    2. tftp 192.168.153.100 #在另外一台机器登录上tftp-server
    3. get f1 #在client上下载f1
  • 放置ks.cfg

    1. mkdir /var/www/html/ksdir7
    2. cp ks.cfg /var/www/html/ksdir7/
  • 配置PXE

安装syslinux xinetd

  1. yum install -y syslinux xinetd #需要用到软件里的文件

拷贝文件至指定目录

  1. mkdir /var/lib/tftpboot/pxelinux.cfg
  2. cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #拷贝引导文件
  3. cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/ #拷贝菜单
  4. mkdir /var/lib/tftpboot/centos7/
  5. cp /var/www/html/centos7/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7 #拷贝内核文件
  6. cp /var/www/html/centos7/isolinux/isolinux.cfg /var/lib/tftpboot/pexlinux.cfg/default #复制isolinux配置文件

编辑pxelinux.cfg

  1. vim /var/lib/tftpboot/pxelinux.cfg/default
  2. 只保留以下内容,其他均删除
  3. defualt menu.c32 #背景图片
  4. timeout 600 #默认的时间,如果不动,60s后会进入光标所在项
  5. menu title CentOS Auto Install #可自定义的标签名称
  6. label linux 15 #可自定义的菜单项
  7. menu label ^Install CentOS 15 #标签名称,^表示按I可以跳到这个选项
  8. kernel vmlinuz
  9. append imitrd=initrd.img ks=http://192.168.153.100/ksdir7/ks7.cfg #ks.cfg路径
  10. label linux 22
  11. menu label ^Install CentOS 22
  12. kernel vmlinuz
  13. append imitrd=initrd.img ks=http://192.168.153.100/ksdir7/ks9.cfg
  14. label local #本地硬盘启动
  15. menu label Boot from ^local drive
  16. menu default
  17. localboot 0xffff
  18. menu end

image.png

测试验证

重新分配一台机器,网卡启动验证
image.png
选择一个进行安装,过程如下

image.png

image.png

image.png

image.png

image.png
至此,kickstart自动安装系统完成!