我们接着上篇继续来说CentOS系统安装的这点事,上篇我们己经实现了通过网络来安装操作系统,安装操作系统需要人机交互,如果机器量少还好,如果量比较多的话,就比较累人了.幸好redhat给我们提供了一个好用的工具,Kickstart

   那什么时Kickstart呢?
   简单来说,Kickstart创建一个名为ks.cfg的文件,这个文件里面包含了安装过程中所有人机交互所需要的配置参数,在一个典型安装过程中,只需要告知安装程序ks.cfg文件的位置,安装程序在需要进行人机交互的时候,就会去ks.cfg文件中查找对应的配置参数.以实现自动化安装
   最基本的ks.cfg文件由Command section(命令部分)和%packages section(软件安装部份)两部分组成,Command部分在前,%Packages部分在后.

   ks.cfg文件,以项目列表的形式展现,每个项目以关键字来识别

创建ks.cfg文件

   当你安装完系统,在root的家目录下,会有一个名为anaconda-ks.cfg的文件,它会自动记录,你安装过程中所使用的选项参数,话不多说,我们就以这个文件,为模板文件,来创建我们的ks.cfg文件

  为了便于记忆,我尽量安照正常安装的过程来进行选项排列


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#告知安装程序,这是一次全新安装,而不是升级
install
#告知安装程序,这是一个网络安装,使用FTP来提供安装所需的资源
#我这边是使用匿名方式,还可以使用用户名/密码
#url --url ftp://<username>:<password>@<server>/<dir>
url --url="ftp://192.168.80.3/pub"
#使用文本模式安装
text
#默认语言是英语
lang en_US.UTF-8
#使用美式键盘
keyboard us
#清空mbr
zerombr
#指定bootloader的安装位置及参数
#--location 指定boot record位置,我们这边不做多系统,因此直接写在mbr里面
#--driveorder 指定第一开机装置
#--append 指定内核参数,这边我用的默认值,没有做更改
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
#设置安装完成后的主机网络,关键字是 network
#这边参数都比较常见,我就不一个个解释了
network --bootproto=static --ip=192.168.80.8 --netmask=255.255.255.0 --gateway=192.168.80.2 --hostname=CentOS6 --noipv6
#设置时区
#--utc 设定使用UTC
timezone --utc Asia/Shanghai
#设置密码加密方式为sha512 启用shadow文件
auth --useshadow --passalgo=sha512
#设定root的密码
#--iscrypted 如果root密码是已加密过,就必须使用这个参数,如何获得这个加密后的密码,详见本文附1
rootpw --iscrypted $6$qQaMyYyZMjz/tpqH$cjMWaGj8xpZK4jplrbUCnXD/8jesH7WTSBAefkL6HYcgFmKFUd/pbWtC75Q62d3PI8IYclNulf750Q7C7iYs.1
#清空所有分区
#--all 从系统中清除所有分区
#--initlable 初始化磁盘标签,例如我的虚拟机是x86架构的,通常是初始化为MSDOS
clearpart --all --initlabel
#新建磁盘分区
#新建/boot分区
part /boot--fstype=ext4 --size=500
#新建3个pv,每个pv大小为10G
part pv.008002 --size=10240
part pv.008003 --size=10240
part pv.008005 --size=10240
#新建一个VG,名为vg_root 包含了刚才创建的3个PV
volgroup vg_root --pesize=4096 pv.008002 pv.008003 pv.008005
#创建LV
logvol /home--fstype=ext4 --name=lv_home --vgname=vg_root --size=2048
logvol /opt--fstype=ext4 --name=lv_opt --vgname=vg_root --size=2048
logvol / --fstype=ext4 --name=lv_root --vgname=vg_root --size=6116
logvol /tmp--fstype=ext4 --name=lv_tmp --vgname=vg_root --size=4096
logvol /var--fstype=ext4 --name=lv_var --vgname=vg_root --size=4096
logvol swap --name=lv_swap --vgname=vg_root --size=2048
#禁止firstboot,firstboot就是我们使用图形化安装完系统,重启后有一个初始设置
firstboot --disable
#禁止selinux
selinux --disabled
#禁止防火墙
firewall --disabled
#设定安装过程中的日志级别
logging --level=info
#设定安装完成后关机
poweroff
#安装包我选择的是Basic模式,添加了中文支持
%packages
@base
#中文支持
@chinese-support
@console-internet
@core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
%end
ks.cfg文件编写好了,下面还有两件事要做
1.把ks.cfg文件放到vsFTP的根目录下
1
2
3
# cd /var/ftp/
# ls
ks.cfg pub
2.告诉安装程序ks.cfg文件在哪里
1
2
3
4
5
6
7
8
# pwd
/var/lib/tftpboot/pxelinux.cfg
# vim default
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.80.3/ks.cfg
找到 "Install or upgrade an existing system" 这个选项中的append那一行,添加ks=ftp://192.168.80.3/ks.cfg告知安装程序ks.cfg文件所在位置



安装过程

剩下要做的就是把想要装系统的主机,配置成网络启动,然后一切交给kickstart吧,过会回来,系统就以经装好了.^_^

下面是安装过程中截的几个图

CentOS --kickstart服务器搭建(二) _关键字


CentOS --kickstart服务器搭建(二) _关键字_02


安装完成,系统自动关闭

CentOS --kickstart服务器搭建(二) _服务器_03


安装完成后的验证

主机操作系统安装好了,我们来实际看一下,是否符合我们的预期
主要看三个方面
1.网络

1
2
3
4
5
6
7
8
9
10
11
12
[root@CentOS6 ~]# hostname
CentOS6
[root@CentOS6 ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:43:C4:B7
inet addr:192.168.80.8 Bcast:192.168.80.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe43:c4b7/64Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6788 (6.6 KiB) TX bytes:6625 (6.4 KiB)
Interrupt:18 Base address:0x2000

2.文件系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@CentOS6 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2vg_root lvm2 a-- 10.00g 24.00m
/dev/sda3vg_root lvm2 a-- 10.00g 2.00g
/dev/sda5vg_root lvm2 a-- 10.00g 8.00g
[root@CentOS6 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_root 3 6 0 wz--n- 29.99g 10.02g
[root@CentOS6 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_home vg_root -wi-ao--- 2.00g
lv_opt vg_root -wi-ao--- 2.00g
lv_root vg_root -wi-ao--- 5.97g
lv_swap vg_root -wi-ao--- 2.00g
lv_tmp vg_root -wi-ao--- 4.00g
lv_var vg_root -wi-ao--- 4.00g
[root@CentOS6 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root
5.9G 1.9G 3.7G 34% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1485M 33M 427M 8% /boot
/dev/mapper/vg_root-lv_home
2.0G 67M 1.9G 4% /home
/dev/mapper/vg_root-lv_opt
2.0G 68M 1.9G 4% /opt
/dev/mapper/vg_root-lv_tmp
4.0G 136M 3.7G 4% /tmp
/dev/mapper/vg_root-lv_var
4.0G 181M 3.6G 5% /var

3.防火墙,SELinux和时区

1
2
3
4
5
6
[root@CentOS6 ~]# service iptables status
iptables: Firewall is not running.
[root@CentOS6 ~]# getenforce
Disabled
[root@CentOS6 ~]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"

可以看到,我们在ks.cfg中的设定都满足了,Kickstart还是相当棒的吧


最后用一张图简单描述一下普通光盘安装和kickstart安装的区别,左手边是普通的光盘安装,右手边是通过Kickstart安装

CentOS --kickstart服务器搭建(二) _关键字_04


附1:获取加密过的root密码

1
2
3
4
# grub-crypt
Password:
Retype password:
$6$qGUmNKeF6lbOgLDH$tojze8BnPBJE1f8xQdAcv9pjoOK.hNtYlCNWODWhwSgF/GsWihvgSLPWXMqX0U/N8DKfoAa9An2zrU4CkzWrU/

重复两遍密码后,系统输出的那串字符串,就是我们需要的加密后的密码

本文出自 “月白白” 博客,请务必保留此出处http://yuebaibai222.blog.51cto.com/2535988/1335654