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)
kickstart安装步骤
前提
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
reboot
生成ks.cfg配置文件
默认在家目录下有个anaconda-ks.cfg,该文件可用于ks.cfg,为了避免更改错误,建议使用system-config-kickstart这个程序来生成。
yum install -y system-config-kickstart
由于centos7的system-config-kickstart有bug,需要更改一下,否则选择安装包(Package Selection)的时候没有内容。
vim /etc/yum.repos.d/CentOS-Base.repo
修改仓库名称为[development]
Basic Configuration页面
Time Zone项选择Asia/Shanghai, Root Password项填入安装完成后的系统密码,勾上Reboot system after installation和Perform installation in text mode(graphical is default),这两项是让系统安装以文本模式进行,以及安装完成后重启。
Installation Method页面
勾选Perform new installation,并且Installation source中选择HTTP , HTTP Server为实际yum源r地址,HTTP Directory为yum源的路径
Boot Loader Options页面
Install Type选择Install new boot loader,Install Options 选择Install boot loader on Master Boot Record(MBR)
Kernel parameters可以填上内核参数,如selinux=0这样安装完成,selinux默认禁用。
Partition Information页面
Master Boot Record选择Clear Master Boot Record,Partitions选择Remove all existing partitions,Disk label选择
Intialize the disk label,Layout点击“Add”去添加分区
Network Configuration页面
点击“Add Network Device” ,Network Device填网卡名称,Network Type可以根据需求选择
Authentication Configuration页面正常不用改,保持默认
Firewall Configuration页面
SElinux选择disabled,Security level选择disable firewall
Display Configuration页面不用更改,保持默认
Package Selection页面根据需求选择
Pre-Installation Script页面
这个页面是安装前执行脚本,一般不用填内容
Post-Installation Script页面
这个页面是安装完成后执行的脚本,可以根据需求填写.例如:
systemctl disable inital-setup-service #如果图形安装系统,结束后会提示license相关,禁止这项。
systemctl set-default multi-user.target #如果图形安装系统,设置默认不以图形界面启动
useradd test #创建用户
echo 123456 | passwd --stdin test #为刚创建的用户设置密码
点击“File”—-“Save”生成配置文件并保存。
- 制作yum源
安装启动apache
yum install -y httpd
systemctl enable --now httpd
mkdir /var/www/html/centos7
挂载光盘
/dev/sr0 /var/www/html/centos7 iso9600 defaults 0 0
echo '- - -'>/sys/class/scsi_host/host2/scan #如果挂载df没有识别到的话执行
mount -a
df
systemctl restart httpd
重新加载yum源文件
cp /var/www/html/centos7/repodata/*.xml /root/ #将xml文件备份出来,xml文件为yum包列表
rm -rf /var/www/html/centos7/repodata/* #清空repodata下所有内容
cp /root/*.xml /var/www/html/centos7/repodata/ #将xml复制回原来目录
createrepo -g *.xml . #更新yum列表
find -name TRANS.TBL #无用文件,找到后删除
find -name TRANS.TBL -exec rm {}\; #找到后删除
yum clean all && yum makecache
访问 IP/centos7,如果能访问,则正常
- 安装配置DHCP
安装DHCP
yum install -y dhcp
配置DHCP
cp /usr/share/doc/dhcp-4.2.5/dchpd.conf.example /etc/dhcpd/dhcpd.conf
vim /etc/dhcpd/dhcpd.conf
option domain-name-server 192.168.153.2 #设置全局dns
option routers 192.168.153.2 #设置全局网关
defualt-lease-time 86400 #设置租期
max-lease-time 10000 #client主动获取租期最大时间
subnet 192.168.153.0 netmask 255.255.255.0{ #设置网段
range 192.168.153.10.192.168.153.100; #设置dhcp获取ip范围
option routers 192.168.153.2; #设置网关
option domain-name-servers 192.168.153.2; #设置dns
net-server 192.168.153.100; #设置dhcp的服务器地址
filename "pxelinux.0"; #指定引导文件
启动DHCP
systemctl enable --now dhcp
安装启动tftp-server
yum install -y tftp-server
systemctl enable --now tftp
测试tftp
touch f1 /var/lib/tftpboot #在tftp工作目录生成一个文件
tftp 192.168.153.100 #在另外一台机器登录上tftp-server
get f1 #在client上下载f1
放置ks.cfg
mkdir /var/www/html/ksdir7
cp ks.cfg /var/www/html/ksdir7/
配置PXE
安装syslinux xinetd
yum install -y syslinux xinetd #需要用到软件里的文件
拷贝文件至指定目录
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #拷贝引导文件
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/ #拷贝菜单
mkdir /var/lib/tftpboot/centos7/
cp /var/www/html/centos7/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7 #拷贝内核文件
cp /var/www/html/centos7/isolinux/isolinux.cfg /var/lib/tftpboot/pexlinux.cfg/default #复制isolinux配置文件
编辑pxelinux.cfg
vim /var/lib/tftpboot/pxelinux.cfg/default
只保留以下内容,其他均删除
defualt menu.c32 #背景图片
timeout 600 #默认的时间,如果不动,60s后会进入光标所在项
menu title CentOS Auto Install #可自定义的标签名称
label linux 15 #可自定义的菜单项
menu label ^Install CentOS 15 #标签名称,^表示按I可以跳到这个选项
kernel vmlinuz
append imitrd=initrd.img ks=http://192.168.153.100/ksdir7/ks7.cfg #ks.cfg路径
label linux 22
menu label ^Install CentOS 22
kernel vmlinuz
append imitrd=initrd.img ks=http://192.168.153.100/ksdir7/ks9.cfg
label local #本地硬盘启动
menu label Boot from ^local drive
menu default
localboot 0xffff
menu end
测试验证
重新分配一台机器,网卡启动验证
选择一个进行安装,过程如下
至此,kickstart自动安装系统完成!