安装CentOS操作系统,一般会选择通过光盘安装,光盘中有Packages所有的rpm包文件、repodata所有包的元数据文件、以及RPM-GPG-KEY-CentOS-#(版本)的公钥文件(主要作用就是验证RPM包的来源性和数据完整性验证)等。
其中的isolinux目录下文件vmlinuz和initrd.img是特殊的内核和引导文件,光盘中的bootloader程序会识别别加载vmlinuz和initrd.img使之成为一个临时的OS接下来会启动anaconda这个自动安装程序,自动去安装树上查找配置文件,完成操作系统的安装。就像你通过你的PE去安装Windows OS一样,PE也是一个小的OS,PE启动后你就可以把你的U盘拔出来了,那个简陋的OS照样运行,因为它已经在跑在你的内存中了。
anaconda这个自动安装程序会把接下来的安装过程大致分为三个阶段:
第一阶段:安装前配置
主要是语言选择、keyboard选择、管理员密码等。
第二阶段:安装阶段
主要是对分区后的硬盘进行格式化、生成bootloader、生成initrmfs文件(这个文件的作用就是当OS第一次启动的时候帮助内核挂载/目录,因为kernel中可能没有硬盘的驱动,根本就不可能以ro挂载/,而Linux Release会在第一次安装OS的时候提取出initrmfs文件,帮助内核识别)、重启等。
第三阶段:第一次启动之后的配置阶段
主要是配置iptables、selinux等。
以上的过程可以通过iso镜像文件安装CentosOS仔细体会。
如果想要制作一个自行安装CentosOS的工具的话,只要制作出能够让anaconda支持的配置脚本就可以了,通过此脚本anaconda就可以完成自动化安装,这个脚本就是kickstart,你可以通过安装yum install system-config-kickstart来安装这个生成脚本的工具,这是一个GUI程序,给你提供选择窗口。
如果你当前的CentOS就是你想要批量安装的模板OS,你也可以通过把root家目录下的anaconda-ks.cfg文件导入system-config-kickstart继续修改一下制作成kickstart文件,或者直接复制它也可以,因为anaconda-ks.cfg就是操作系统安装过程的所有配置信息,由anaconda安装程序生成。
你可以自己查看anaconda-ks.cfg文件,大致由命令段、程序包段(%packages %end)脚本段(%pre %post)等,都是有特殊语法的,可以通过查看CentOS官网文档来完成操作。
你可以把你的kickstart文件放到任何安装程序能够读取到的地方即可,可以是iso镜像文件中,也可以是网络文件服务器中,指明获取kickstart文件的路径如下:
ks=
DVDdrive ks=cdrom:/path/to/kickstart_file
HTTPServer ks=http://server_ip:port/path/to/kickstart_file
HTTPSServer ks=https://server_ip:port/path/to/kickstart_file
FTPServer ks=ftp://serverip:port/path/to/kickstart_file
NFSServer ks=nfs:server_ip:/path/to/kickstart_file
前提是,这些命令需要你附加在启动程序中,不是你随便添加的。
下面以创建一个引导光盘仅能启动安装过程,安装树指向网络中的服务器来解决。
(1)、提取发行光盘的isolinux目录至本地的/tmp/pan.iso中,并把你制作的kickstart文件wangks.cfg也放入该目录,如图1
图1
(2)、要把pan.iso做成光盘引导文件,所以必须在其父目录下通过mkiso工具制作光盘镜像文件,必须对isolinux目录有w权限,如图2(注:这个是我之前没有添加kickstart文件时的截图,压缩命令效果不变)
图2
(3)、把光盘镜像文件导入虚拟机启动,在选择菜单通过“esc”键到boot交互命令接口,通过linux ks=cdrom:/wangks.cfg就可以自动话安装了,安装包的生成树指定网络的生成树。如图3
图3
(4)上文说过安装光盘中的isolinux目录下的文件负责引导程序,其实安装时候isolinux目录中的boot.cat和isolinux.bin会读取isolinux.cfg配置文件来启动界面菜单,也就是图4,图5是isolinux.cfg的内容,可以通过cat命令获取,对比两图看看。
图4
图5
注意:所以,在boot交互命令中输入的linux,其实就是图4菜单当中的第一项,boot:linuxks=cdrom:/wangks.cfg也就是在label linux下append(中文:追加的意思)后加入ks=cdrom:/wangks.cfg,如果你在isolinux.cfg中修改,那么直接可以通过选择第一个菜单,直接安装。
因为Linux没有注册表的概念,所以,相对Winodows来说原理是简单的,因为没有这个配置文件我就创造一个,没有什么我就临时加入一个,这也就相当于linux的单内核设计,虽然理论上不如微内核,但是通过模块化的设计,反而赢得更多人的青睐,你用什么,什么没有,ok,制作成内核模块添加,www.kernel.org上面已经发布了4.0版本,根本不用重启你的linux OS就可以打补丁安装内核模块等,这也就是魅力所在吧!