拿到一张linux发行版安装系统时的步骤:

  1. 首先自然是开机加电自检POST

  2. 自检完成根据BIOS设定的boot sequence依次寻找可引导(bootable)设备,这里就定为cdrom了

  3. 加载光盘的MBR,然后加载根据isolinnux.cfg加载isolinux.bin提供一个安装操作系统选项的菜单,选择相应的选项后加载linux内核vmlinuz,和initrd文件

  4. 光盘内的linux内核加载到内存运行起来后就可以加载anacoda(红帽系使用的系统安装程序),anacoda会根据用户的定制生成一个kickstart文件,之后的安装过程就是根据kiskstart文件来确定如何分区格式化,安装前执行哪些操作,安装哪些软件包,安装完成后要执行什么操作等。


到这里就应该明白了整个过程要完成无人值守安装的关键过程就是这个kickstart文件了,只要有了这kickstart文件,那么一切好像都是那么行云流水般了。

  • 你可以直接在kickstart中指定光盘为安装源

  • 你也可以在kickstart中指定其他可访问的通过http,ftp,nfs等方式提供的源,这种情况下光盘文件就只需要实现引导就可以了。

  • 当然也可以通过pxe方式引导,连光盘都省了


每个系统安装完都会在root家目录下生成/root/anaconda.cfg 这个文件即是此系统在安装时候使用的安装选项而生成的kickstart文件,以后制作kickstart文件可以直接使用这个文件或者以此基础上做些修改。

自己直接手动编辑一个kickstart文件还是比较麻烦的,可以yum install system-config-kickstart安装这个软件实现图形化工具编辑。


安装完成后可以在Xshell上执行下面命令把图形通过xmanager输出到windows上来操作 &表示后台运行

[root@node1 isolinux]# system-config-kickstart & 

可以File --> open 打开一个现有的kickstart文件编辑

kickstart无人值守安装linux原理_第1张图片


Kickstart的文件结构:详细信息可参考redhat官方文档https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html

  • 命令段:用于配置系统

    • install | upgrade 设定是安装系统还是升级系统

    • keybord us 设置键盘

    • lang en_US    语言

    • timezone    Asia/Shanghai 时区

    • rootpw --iscrypted (PASSWORD)    密码

    • cdrom 从cdrom安装系统

    • harddrive --partition=hda2 --dir=/data/centos6 从硬盘安装

    • nfs --server=ks.mydomain.com --dir=/data/centos6 从nfs服务器安装

    • url --url=http://ks.mydomain.com/centos6 http方式安装,如果有谁要指定用户名密码 url --url=username:[email protected]/centos6 这四种安装源指定一个即可,指定的路径要是有效的安装树

    • text | graphical 文本界面or图形界面安装

    • firewall --diable | --enable

    • network --bootproto=dhcp 或 network --bootproto=static --ip=172.16.100.1 --netmask=255.255.0.0 --gateway=172.16.0.1 --nameserver=172.16.0.1


  • 软件包段:选择要安装的软件包组及软件包    

    • @Base    Base软件包组

    • lftp    安装lftp

    • -zsh    不安装zsh软件包,但是如果zsh被已经选择安装的软件所依赖仍然会被安装


  • 脚本段

    • %pre    系统安装前执行的脚本,安装前运行的是光盘的小Linux系统,shell比较精简,只能执行较简单的脚本

    • %post   系统安装完成后执行的脚本,这时系统已经安装完成,全面支持shell各种脚本功能

     

使用Kickstart文件安装系统的几种方式

  1. 直接使用系统安装光盘,在进入菜单选项时按ESC进入到boot:命令行下,手动指定kickstart文件地址,此情景需要事先把kickstart文件共享出来

[root@node1 ~]# yum install vsftpd
[root@node1 ~]# chkconfig vsftpd on
[root@node1 ~]# service vsftpd start
[root@node1 ~]# cp ks.cfg /var/ftp/pub/
[root@node1 ~]# service vsftpd start
[root@node1 ~]# lftp localhost
lftp localhost:~> ls pub          
-rw-r--r--    1 0        0            1400 Aug 26 15:22 ks.cfg

在此界面时按下ESC,进入boot:命令行

kickstart无人值守安装linux原理_第2张图片

在boot:命令行下 ip= netmask= 配置IP地址 ks=ftp:// 指定ks文件位置

wKioL1P-2Q-CFOp-AABOipVc4XU983.jpg

看到上面圈出来的linux,为什么这里要写个linux?

进到光盘目录下的isolinux/目录下 打开isolinux.cfg文件可以看到下面的label linux,boot里输入的linux 就是这里的label名字,后面会实际演示一下这个效果,代表选择了这个选项,然后后面的 ip= ks=就是给这个选项的内核传参数

wKiom1P-2NPygaqEAAB4XZcELsw715.jpg

下面就是正常的安装过程启动,完全不用人工干涉

kickstart无人值守安装linux原理_第3张图片


2、自己重新制作一个光盘镜像文件,把kickstart文件做进去,在boot.cfg把ks文件作为内核参数传进去,安装树的源可以做进光盘也可以通过网络共享输出

[root@node1 ~]# mkdir boot
[root@node1 ~]# cd boot
[root@node1 ~]# rsync -rl /var/ftp/pub/centos/isolinux ./    # 注意前面isolinux后面不要加/ 这样会把整个isolinuxh目录同步过来
[root@node1 boot]# ls
isolinux
[root@node1 ~]# cd isolinux
[root@node1 isolinux]# ls
boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz
boot.msg  initrd.img  isolinux.cfg  splash.jpg  vesamenu.c32
[root@node1 isolinux]# cp ../ks.cfg ./
[root@node1 isolinux]# ls
boot.cat  grub.conf   isolinux.bin  ks.cfg   splash.jpg  vesamenu.c32
boot.msg  initrd.img  isolinux.cfg  memtest  TRANS.TBL   vmlinuz
[root@node1 boot]# chmod u+w isolinux.cfg    # 加上写权限
[root@node1 isolinux]# vim isolinux.cfg 
menu title Welcome to CentOS 6.4 Customed by Bob    # 这边我修改了一下标题以验明效果
label windows    # 为了验明一下效果我把这里label改为windows
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ip=172.16.100.100 netmask=255.255.0.0 ks=ftp://172.16.100.11/pub/ks.cfg    # append 后面加上ks路径作为参数传给内核 
  
[root@node1 isolinux]# cd                          
[root@node1 ~]# pwd
/root
# 下面的命令把isolinux这个目录下的文件做成boot.iso光盘镜像文件
[root@node1 ~]# mkisofs -R -J -T -v -no-emul-boot -boot-load-size 4 -boot-info-table -V "MageEdu Testing Image" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /tmp/boot.iso boot/           
[root@node1 ~]# ls /tmp/boot.iso 
/tmp/boot.iso


# 可以用xshell自带的sftp工具把文件传输到宿主机

kickstart无人值守安装linux原理_第4张图片


kickstart无人值守安装linux原理_第5张图片

虚拟机的光盘改为刚制作的

kickstart无人值守安装linux原理_第6张图片

启动虚拟机:标题改了,背景图片我随便整了个图片也给换了,根据自己需要只要把splash.jpg替换成你自己的图片即可,尺寸为640*480像素

kickstart无人值守安装linux原理_第7张图片

欧了,输入windows,同样的也启动了linux内核加载过程

kickstart无人值守安装linux原理_第8张图片


以上只是为了粗糙的加深对于光盘安装系统过程及kickstart无人值守安装进行原理过程,实际生产环境面对众多服务器时自然不会来用刻光盘方式来安装,下一篇会介绍PXE实现网络自动化安装部署系统。