1.什么是KickStart:
KickStart是自动化安装系统的一种方式。一般在安装操作系统的过程中,需要和服务器进行大量的交互操作。
但使用KickStart,只需要事先定义好一个KickStart自动应答配置文件ks.cfg(通常存放于安装服务器上),
并指明其配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,避免大量的交互操作,从而实现
无人值守的自动化安装。
ps:此次使用的环境为:CentOS 6.9 x86_64的最小安装
2.安装引导选项ks:指明KickStart文件的位置
ks=
DVD drive(DVD光盘):ks=cdrom:/PATH/TO/KICKSTART_FILE
hard drive(硬盘): ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
HTTP Server:ks=http://HOST[:PORT]/PATH/TO/KICKSTART_FILE
FTP Server: ks=ftp://HOST[:PORT]/PATH/TO/KICKSTART_FILE
HTTPS Server: ks=https://HOST[:PORT]/PATH/TO/KICKSTART_FILE
1.Centos6.9的KickStart文件
[root@test ~]# cat anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
cdrom
lang zh_CN.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw --iscrypted $6$qq6gtH/WtyK5QcBW$uFOLygsfDYcNEkgE/ApkZTq3w3oLdaObu.CpjCb0.7ard09hJB08qJChusRGtaG0wdNhzDk34wSFHZnrH7cW30
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512 "基础shadow文件,使用sha512算法"
selinux --enforcing
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" "附加内核参数"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --none --drives=sda
#part /boot --fstype=ext4 --size=500
#part pv.008002 --size=61200
#volgroup vg_test --pesize=4096 pv.008002
#logvol / --fstype=ext4 --name=lv_root --vgname=vg_test --size=25000
#logvol swap --name=lv_swap --vgname=vg_test --size=2000
#logvol /usr --fstype=ext4 --name=lv_usr --vgname=vg_test --size=12000
#logvol /var --fstype=ext4 --name=lv_var --vgname=vg_test --size=15000
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
%packages
@chinese-support
@core
@server-policy
@workstation-policy
2.KickStart文件的格式
1)命令段:指定各种安装前配置选项,如键盘类型等
1.必备命令
2.可选命令
2)程序包段:指明要安装程序包,以及包组,也包括不安装的程序包
1.%packages
2.@group_name(安装一个包组)
3.packge(单个程序包)
4.-package(指明不安装的程序包,但由于依赖关系也可能会自动安装)
5.%end
3)脚本段:安装前脚本及安装后脚本
1.%pre:安装前脚本
运行环境:运行安装介质上的微型linux系统环境
2.%post:安装后脚本
运行环境:安装完成的系统
3.命令段中的必备命令
" 1.authconfig:用户认证方式配置"
authconfig --enableshadow --passalgo=sha512
"2.bootloader:定义bootloader的安装位置及相关配置"
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
"3.keyboard:设置键盘类型"
keyboard us
"4.lang:语言类型"
lang zh_CN.UTF-8
"5.part:分区布局"
part /boot --fstype=ext4 --size=500
part pv.008002 --size=61200 (008002为物理卷编号,创建卷组时使用此编号)
"6.rootpw:管理员密码"
rootpw --iscrypted $6$qq6gtH/WtyK5QcBW$uFOLygsfDYcNEkgE/ApkZTq3w3oLdaObu.CpjCb0.7ard09hJB08qJChusRGtaG0wdNhzDk34wSFHZnrH7cW30
"7.timezone:时区"
timezone Asia/Shanghai
补充,分区相关的其他指令
"1.clear:清除分区"
clearpart --none --drives=sda:清空磁盘分区
"2.volgroup:创建卷组"
volgroup vg_test --pesize=4096 pv.008002
"3.logvol:创建逻辑卷"
logvol / --fstype=ext4 --name=lv_root --vgname=vg_test --size=25000
"4.生成加密密码的方式"
openssl passwd -1 -salt `openssl rand -hex 4`
4.可选命令
"1.install 或 upgrade:安装或升级"
"2.text:安装界面类型,text为tui(命令行界面),默认为GUI(图形界面)"
"3.network 配置网络接口:network --onboot yes --device eth0 --bootproto dhcp --noipv6"
"4.firewall 防火墙:firewall --disabled"
"5.selinux:selinux --disabled"
"6.halt、poweroff或reboot:安装完成之后的行为"
"7.repo:指明安装时使用的repository"
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
"8.url:指明安装时使用的repository"
url --url=http://hostname//PATH/TO/KICKSTART_FILE
5.系统安装完成之后禁用防火墙:
Centos6:
service iptables stop
chkconfig iptables off"
Centos7:
systemctl stop firewalld.service
systemctl disable firewalld.service
6.系统安装完成之后禁用selinux:
1.编辑/etc/sysconfig/selinux或/etc/selinux/config文件,修改SELINUX参数为:permissive或disabled
2.立即生效:getenforce,setenforce 0
7.定制kickstart文件:使用软件编辑
1) yum install system-config-kickstart
2)检查是否语法错误: ksvalidator
8.创建光盘镜像
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/
1.下载system-config-kickstart,即可打开如下界面
[root@grub6 ~]# yum install system-config-kickstart -y
[root@grub6 ~]# system-config-kickstart &
2.可使用ctrl+o,根据刚创建系统时的anaconda-ks.cfg进行更改配置
3.设定基本配置,指向阿里云此位置即可
4.设置bootloader相关选项
5.设置分区信息
6.网络配置
7.禁用防火墙及selinux
8.选择需要的包
9.设置安装后脚本,并保存文件
10.在本机打开httpd服务,并将ks.cfg上传至网页
[root@grub6 ~]# service httpd restart
[root@grub6 ~]# service iptables stop
[root@grub6 ~]# setenforce 0
[root@grub6 ~]# mv ks.cfg /var/www/html/ks.cfg
确认已经可以访问到
11.开启新虚拟机进行访问
1)设置为光盘引导
2)网卡设置为桥接模式
3)进入光盘引导界面后按下tab后输入
linux ip=192.168.3.35 netmask=255.255.255.0
gateway=192.168.3.1 dns=114.114.114.114 ks=http://192.168.3.20/ks.cfg
12.可以看到已经自动安装了
ps:此次过程由于是使用导入模板更改的,导致即使使用了网络引导,带ks文件还是保留了之前模板的repo --name=“CentOS” --baseurl=cdrom:sr0 --cost=100这行,导致安装程序包步骤时出错,注释掉此行后故障消失。
13.可以看到用户及分区创建成功
ps:centos7在创建ks文件时会出现如下状况,需要将repo仓库的base源改为development即可解决
1.创建光盘镜像
[root@grub6 ~]# mkdir myboot
[root@grub6 ~]# cd myboot
[root@grub6 myboot]# mount /dev/sr0 /media/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@grub6 myboot]# ls /media/
CentOS_BuildTag images repodata RPM-GPG-KEY-CentOS-Testing-6
EFI isolinux RPM-GPG-KEY-CentOS-6 TRANS.TBL
EULA Packages RPM-GPG-KEY-CentOS-Debug-6
GPL RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Security-6
[root@grub6 myboot]# cp -r /media/isolinux/ .
[root@grub6 myboot]# ls
isolinux
由于isolinux下的文件都为只读文件,为其增加写权限
[root@grub6 myboot]# ll isolinux/
总用量 45324
-r--r--r--. 1 root root 2048 5月 27 15:24 boot.cat
-r--r--r--. 1 root root 84 5月 27 15:24 boot.msg
-r--r--r--. 1 root root 321 5月 27 15:24 grub.conf
-r--r--r--. 1 root root 41587792 5月 27 15:24 initrd.img
-r--r--r--. 1 root root 24576 5月 27 15:24 isolinux.bin
-r--r--r--. 1 root root 923 5月 27 15:24 isolinux.cfg
-r--r--r--. 1 root root 183012 5月 27 15:24 memtest
-r--r--r--. 1 root root 151230 5月 27 15:24 splash.jpg
-r--r--r--. 1 root root 2215 5月 27 15:24 TRANS.TBL
-r--r--r--. 1 root root 163728 5月 27 15:24 vesamenu.c32
-r-xr-xr-x. 1 root root 4274992 5月 27 15:24 vmlinuz
[root@grub6 isolinux]# chmod +w *
编辑一下bootloader第二阶段的配置文件,在label linux中加入了(kasumi test),方便一会测试
[root@grub6 ~]# vim myboot/isolinux/isolinux.cfg
[root@grub6 isolinux]# cd ..
[root@grub6 myboot]# cp /root/ks.cfg . "将之前编辑的ks文件复制至此目录"
[root@grub6 myboot]# ls
isolinux ks.cfg
[root@grub6 myboot]# cd
[root@grub6 ~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "Centos 6.9 boot test" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/
[root@grub6 ~]# ll -h boot.iso
-rw-r--r--. 1 root root 45M 5月 27 15:59 boot.iso
ps:相关注意事项
1.-c isolinux/boot.cat:表示指定其cat工具,相当于bootloader
2.-b isolinux/isolinux.bin:表示bootloader的第二段
3.-o /root/boot.iso:表示创建完保存位置
4.使用myboot/为根
5.需要切换出myboot目录
3.开启虚拟机可看到刚添加的标签,并输入如下配置
linux ip=192.168.3.36 netmask=255.255.255.0 gateway=192.168.3.1 dns=114.114.114.114 ks=cdrom:/ks.cfg
1.在制作镜像文件之前,,若当前环境存在dhcp服务器,可以在ks配置文件中添加,使其在本地加载ks文件后,自动获取ip进行安装
network --onboot yes --device eth0 --bootproto dhcp --noipv6
2.并在isolinux.cfg配置文件中添加ks=cdrom:/ks.cfg
3.使用新制作的镜像进行启动,此时不用附加任何参数也能自动安装