一、kickstart是什么
我们在安装时,机器启动时,先加电自检post,,加电自检后就加载主板上的boot sequence,如果是已经安装了的机器,则一般是正常地启动硬盘上的内核及ramdisk,但是在安装时,我们的硬盘是空的,这就需要我们调整boot sequence,将下一步改为到其他地方找内核和ramdisk启动机器给我们干活。安装一般是用光盘。rhel系的发行光盘上事先内置了一个最基本的linux内核和ramdisk(相当于windows的PE),为什么要内置这个?这是为了让这台机器能先以最简陋的方式驱动硬件,以方便随后加载安装程序anaconda进行完整的安装过程的。anaconda启动后,会让我们对刚才linux探测到的硬件以及随后需要进行的完整程序安装进行配置,配置完成后,就根据你的配置进行完整的安装。同时,anaconda会生成一个配置文件,名字就叫 kickstart,一般保存在管理员家root目录下,(我的虚拟机linux里的是 /root/anaconda-ks.cfg).
也就是说,只要有kickstart文件,我们就能知道一台机器安装时的所有配置信息了,kickstart文件决定了一台机器安装系统后是什么样子了。
二、kickstart作用
kickstart存有了设置好的完整安装过程的系统配置信息,所以我们只要有提供anaconda程序环境,就可以直接调用kickstart一步式安装,省去连续安装相同配置机器的重复配置操作,简化安装过程,缩减多台机器同时安装时的安装时间。
三、kickstart配置文件解析
文件的组成:
1、命令段
2、程序包段:%packages, %end
@group:需要安装的包组
3、脚本段:
(1)%pre
安装前脚本:安装过程开始之前要执行的脚本;
注意:此时的Linux系统环境为微缩版环境,因此脚本应该较简单;
(2)%post
安装后脚本:安装过程完成之后要执行的脚本,系统安装好后需要做的一些配置放这;
下面以安装好linux后生成的anaconda-ks.cfg作说明
要能自己制作kickstart并包装好一个iso光盘镜像文件,需要先知道一个正统的rhel系统启动光盘是如何工作的。
kickstart可以和光盘(存有引导安装程序)在一起,也可以放在一台服务器上。机器加电自检后,boot sequence设置好优先找光盘镜像文件,找到后,通过光盘上的引导安装程序(boot.cat和isolinux.bin,后者就像一个grub一样)启动光盘上的最基本的内核和ramdisk,启动完后,调用同目录下的isolinux.cfg文件,这个文件里的配置能让内核找到anaconda并启动之,然后anaconda就可以让我们手动配置或者我们先前设置好的配置文件了。
三、制作
1、环境:
vmware workstation 11,CentOS-6.6-x86_64-bin-DVD1
2、配置过程
(一)、光盘引导文件制作
1、导入光盘,并挂载
2、创建工作目录,复制过去后,重新修改文件权限
3、用重新封装isolinux光盘引导部分
# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 X86_64 boot disk" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso cdrom/
这个命令一定要在光盘目录cdrom的外面键入执行
--no-emul-boot:不模拟引导过程
--boot-load-size 4:自己引导时要装载的大小为4
--boot-info-table:引导时加上其表格
-V "CentOS 6.6 X86_64 boot disk":指明光盘标签为”CentOS 6.6 X86_64 boot disk“
-b isolinux/isolinux.bin :把哪个文件当作引导程序,写时先-b cdrom/isolinux/isolinux.bin,可以补全,然后再删去cdrom/
-c isolinux/boot.cat :指明引导时显示菜单的文件
-o /root/boot.iso :创建完后放在哪
cdrom/ :指明对哪个文件创建,获取它目录下的所有文件
可能产生的错误:
(1)执行mkisofs命令时,提示boot p_w_picpath ‘./isolinux/isolinux.bin’ has not an allowable size.
解决办法:因为默认用的是软驱,加入: -hard-disk-boot 或者 -no-emul-boot 即可。
(2)制作以后的Linux镜像在引导的时候提示:”ISOLINUX 3.86 2010-04-01 ETCDisolinux: Image checksum error, sorry…
Boot failed: press a key to retry…”
解决办法:在执行mkisofs命令时,加入 -boot-info-table 参数。
4、创建一个新的虚拟机,然后添加cd光盘,设置好启动顺序,启动
在boot提示符后面键入的命令后(比如linux),isolinux和boot.cat共同读isolinux.cfg,通过比对isolinux.cfg的内容,得出是需要调用哪三行信息,然后执行。
图形界面是有vesamenu.c32提供的,是我们安装过程的图形菜单提供程序。
最终选择完选项后,会启动vmlinuz和initrd.img,并借助于这两个文件去获取并启动处于安装树里的anaconda程序
anaconda接手后就会完成剩下的安装过程
因此,我们只要有这个目录,并告诉程序安装树在哪,就可以制作完成自己的引导光盘了
(二)、 kickstart与安装光盘的结合
这里是以自己已经安装好的虚拟机的kickstart配置文件为模版,调用system-config-kickstart程序做适当修改后,获得anaconda-ks.cfg文件进行封装光盘的。
1、首先安装system-config-kickstart程序包
# yum install system-config-kickstart
如果没有设置好yum,可以自己到相关镜像网站去下载rpm包后手动安装
2、运行system-config-kickstart程序进行配置
# system-config-kickstart
程序会自动启用一个新的窗口,让我们对安装进行配置
在此,我是用的已经安装好的虚拟机的kickstart配置文件为模版修改后制作的,这个文件默认是放在 /root/anaconda-ks.cfg。
上面的配置结束后,可以vim打开保存的文件进行适当的修改,比如添加分区信息(anaconda是保存不了原来设置的逻辑分区信息的)
clearpart --all 后面添加下面内容,注意:现实中的磁盘容量不能比下面的小,否则出错。
part /boot --fstype=ext4 --size=200
part pv.008002 --size=61440
volgroup vg0 --pesize=8192 pv.008002
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
网络部分改成下面的:
network --bootproto=dhcp --device=eth0 --onboot=on
3、将new-ks.cfg文件cp到要制作光盘的cdrom目录下,并在isolinux.cfg的label linux的append后面添加一行“ks=cdrom:/new-ks.cfg",让系统能自动找到kscfg文件进行安装
4、压缩制作光盘
5、将光盘传输到windows目录中
6 、创建新虚拟机,以新制作的光盘为引导启动盘
安装启动后,只需要按回车就可了,不需要做什么过多的选择了。安装部分结果显示如下:
至此,kickstart及引导镜像的制作完成,DHCP联网安装成功。
如果不是DHCP联网安装,可以将源CDROM中的其他文件也一并压缩,制作成有安装树和kickstart文件的引导安装光盘,可省去不少操作步骤。