Centos自动安装系统(基于kickstart)

一.KickStart

1.KickStart定义即ks

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

2.Centos6.9

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.编辑创建kickstart文件

1.下载system-config-kickstart,即可打开如下界面

[root@grub6 ~]# yum install  system-config-kickstart -y
[root@grub6 ~]# system-config-kickstart &

Centos自动安装系统(基于kickstart)_第1张图片
2.可使用ctrl+o,根据刚创建系统时的anaconda-ks.cfg进行更改配置
Centos自动安装系统(基于kickstart)_第2张图片
3.设定基本配置,指向阿里云此位置即可
Centos自动安装系统(基于kickstart)_第3张图片
Centos自动安装系统(基于kickstart)_第4张图片
4.设置bootloader相关选项
Centos自动安装系统(基于kickstart)_第5张图片
5.设置分区信息
Centos自动安装系统(基于kickstart)_第6张图片
6.网络配置
Centos自动安装系统(基于kickstart)_第7张图片
7.禁用防火墙及selinux
Centos自动安装系统(基于kickstart)_第8张图片
8.选择需要的包
Centos自动安装系统(基于kickstart)_第9张图片
9.设置安装后脚本,并保存文件
Centos自动安装系统(基于kickstart)_第10张图片
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

确认已经可以访问到
Centos自动安装系统(基于kickstart)_第11张图片
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

Centos自动安装系统(基于kickstart)_第12张图片
12.可以看到已经自动安装了
Centos自动安装系统(基于kickstart)_第13张图片
ps:此次过程由于是使用导入模板更改的,导致即使使用了网络引导,带ks文件还是保留了之前模板的repo --name=“CentOS” --baseurl=cdrom:sr0 --cost=100这行,导致安装程序包步骤时出错,注释掉此行后故障消失。
Centos自动安装系统(基于kickstart)_第14张图片
13.可以看到用户及分区创建成功
Centos自动安装系统(基于kickstart)_第15张图片
ps:centos7在创建ks文件时会出现如下状况,需要将repo仓库的base源改为development即可解决
Centos自动安装系统(基于kickstart)_第16张图片
在这里插入图片描述
在这里插入图片描述
Centos自动安装系统(基于kickstart)_第17张图片

2.制作centos6的光盘引导镜像

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目录

2.导出光盘镜像,当做新虚拟机的启动镜像
Centos自动安装系统(基于kickstart)_第18张图片

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

Centos自动安装系统(基于kickstart)_第19张图片
4.可以看到已经正常自动安装了
Centos自动安装系统(基于kickstart)_第20张图片
Centos自动安装系统(基于kickstart)_第21张图片

3.简化安装方式

1.在制作镜像文件之前,,若当前环境存在dhcp服务器,可以在ks配置文件中添加,使其在本地加载ks文件后,自动获取ip进行安装

network  --onboot yes  --device eth0  --bootproto dhcp  --noipv6

Centos自动安装系统(基于kickstart)_第22张图片
2.并在isolinux.cfg配置文件中添加ks=cdrom:/ks.cfg
Centos自动安装系统(基于kickstart)_第23张图片
3.使用新制作的镜像进行启动,此时不用附加任何参数也能自动安装
Centos自动安装系统(基于kickstart)_第24张图片
Centos自动安装系统(基于kickstart)_第25张图片

ps:若本地不存在dhcp服务器,可在isolinux.cfg配置文件中添加,指定ip地址也可以实现自动安装
Centos自动安装系统(基于kickstart)_第26张图片

你可能感兴趣的:(linux基础学习)