CentOS(Redhat)提供了一套完整的自动化安装机制,利用该机制,咱们能够本身定制无人值守的自动安装光盘,也能够进行系统裁减,甚至能够以CentOS为基础制做本身软件系统的系统安装盘。
如下所有内容以CentOS 5.1版本为准
自定制安装盘主要有如下几个步骤
一、选取必要服务,去除没必要要的RPM包
二、定制自动安装过程
三、定制安装界面(可选)
四、生成新安装盘
1 建立源盘
首先咱们须要从CentOS 5.1的完整dvd版本建立源盘,假设咱们已经有一个完整的CentOS5.1的dvd放在光驱中,源盘的位置为/disk,则执行如下操做
1. mount dvd
#mkdir /cdrom
#mount –o loop /dev/cdrom /cdrom
2.复制光盘内容
#mkdir /disk
#cp –R /cdrom/. /disk
3.清除非必须的RPM
注意,此时/disk目录下其实是一个DVD的备份景象,咱们须要根据第5节的内容选取自定义安装盘所需的RPM包,而后在/disk/CentOS目录里删除全部没必要要的RPM,以减少安装盘容量。
上述步骤完成后,咱们已经有了一个与原版DVD基本相同,可是彻底去除了无用RPM包的源盘,后续的定制工做将在该路径中进行。
典型的CentOS安装盘中,与光盘定制有关的主要有如下几个目录和文件:
/CentOS
/isolinux
/repodata
.discinfo
ks.cfg(此时还没有建立)
CentOS目录存放全部在安装过程当中须要使用的RPM包
isolinux目录存放光盘启动时的安装界面信息
repodata目录是与RPM包安装相关的依赖信息
.discinfo是CentOS的识别信息,直接从CentOS DVD版本中获取,若是该文件丢失,会致使安装过程当中,系统提示找不到CentOS光盘
ks.cfg是自动安装过程的主控配置文件
CentOS的自动安装过程以下:
一、光盘自动引导,调用isolinux中的信息生成启动界面
二、根据用户输入,选择ks.cfg做为安装控制文件
三、进入自动安装过程,根据ks.cfg安装RPM包、配置网络、进行硬盘分区等等
四、系统安装完成后,根据ks.cfg进行用户自定义的安装过程
五、安装完成,系统重起
2 自定义启动界面
在isolinux里面有三个文件和自定义安装界面有关
boot.msg是定义启动界面如何显示
isolinux.cfg决定如何处理用户的输入,并执行对应的安装过程
splash.lss是启动界面的背景图片
2.1 boot.msg
boot.msg内容大体以下:
^L
^Xsplash.lss
- XXXX auto-instiall, press the ^O0f<ENTER>^O07 key to begin.
文档中的^X用ctrl+X输入
^Xsplash.lss表示使用splash.lss做为启动界面的背景图片
后面就是启动时界面下的提示信息^O0f和^O07之间的内容做为高亮显示
2.2 isolinux.cfg
isolinux.cfg设置进入启动页面后,系统如何处理用户输入。
主要内容以下:
default auto
默认执行auto段的安装进程
prompt 1
timeout 6000
设置用户输入的超时时间,单位:秒。超时未输入则执行默认的安装进程
display boot.msg
将boot.msg做为显示的启动界面
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label auto
kernel vmlinuz
append ks=cdrom:/ks.cfg initrd=initrd.img ramdisk_size=8192 acpi=off noapic skipddc
标记auto段,使用光驱根目录下的ks.cfg文件做为kickstart的配置文件
label manual
kernel vmlinuz
append ks=cdrom:/ks_manual.cfg initrd=initrd.img ramdisk_size=8192 acpi=off noapic skipddc
标记manual段,使用光驱根目录下的ks_manual.cfg文件做为kickstart的配置文件。若是用户在启动界面输入manual,则执行该段
2.3 splash.lss
splash.lss是启动界面的背景图片,该图形文件比较特殊,只能使用14色(标准16色除去黑白两色)的原始图片来生成。
首先建立一个16色(包含黑白两色)的gif文档,名为splash.gif
将该文件转换为lss格式
#giftopnm < splash.gif | ppmtolss16 > splash.lss
3 自定义安装过程
CentOS的安装主要是由anaconda来实现的,它经过kickstart配置文件来控制整个安装进程,以到达无人值守安装的效果。
kickstart文件具体配置能够参看:
http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/en-US/RHEL510/Installation_Guide/ch-kickstart2.html
进行配置前,须要建立目标ks文件
#cd /disk
#vi ks.cfg
ks文件主要分为三个部分
一、系统安装及配置
二、自定义安装准备(%post --nochroot)
三、用户自定义安装(%post)
3.1 系统安装及配置
kickstart文件首先进行系统的设置,好比机器语言、时区、键盘等参数的设置,而后检查安装所需RPM是否都完整,而后根据分区信息进行格式化。
这部分配置信息写在ks文件的最前面,以“%post --nochroot”为结束,典型的配置信息以下:
#System language
#系统语言 简体中文
lang zh_CN
#Language modules to install
#要安装的语言模块以及默认语言
langsupport zh_CN --default=zh_CN
#System keyboard
#系统键盘类型
keyboard us
#System mouse
mouse
#Sytem timezone
#系统时区
timezone Asia/Shanghai
#Root password
#管理员密码,值为已加密字符串
rootpw --iscrypted $1$MGv8U4W0$BS7JLb3MZT70Z30mutWwO1
#Reboot after installation
#安装完成后是否自动重起
reboot
#Use text mode install
#使用文本安装界面
text
#Install OS instead of upgrade
install
#Use CDROM installation media
#使用光盘做为安装媒体
cdrom
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
#清除原有分区信息
clearpart --all --initlabel
#Disk partitioning information
#创建一个200-500M的引导区,一个300-500M的交换区,剩余磁盘空间划分给根路径/
part /boot --fstype ext3 --size 200 --grow --maxsize 500
part swap --size 300 --grow --maxsize 500
part / --fstype ext3 --size 1 --grow
#System authorization information
#设置系统验证方式
auth --useshadow --enablemd5
#Network information
#使用dhcp获取ip
network --bootproto=dhcp --device=eth0
#Firewall configuration
#关闭防火墙
firewall --disabled
selinux --disabled
#Do not configure XWindows
#不设置xwindows
skipx
#Package install information
%packages –resolvedeps
#如下所有是系统须要安装的rpm包,咱们假设此时已经知道全部须要的包,而且所有放在/CentOS路径下
kernel
#autoconf
#e2fsprogs
#fonts-chinese
#...
请注意必须保证要安装的RPM包以及被依赖的RPM都存放在/CentOS目录下,在ks配置文件里只须要写要安装的RPM包名便可,anaconda会解析依赖关系并自动安装关联的包,若是没有须要的包,则会报错并终止安装。
3.2 自定义安装准备
自定义安装准备部分以“%post --nochroot”做为开始,以“%post”做为结束。该部分脚本使用bash语法,一般在这一段脚本中将用户本身的安装包从安装光盘复制到已经安装好的系统上。
这一阶段的脚本编写须要注意两个问题
一、此时要访问磁盘路径,则要在目标路径前增长“/mnt/sysimage”,例如要将某个文件复制硬盘的/var/log,则脚本应为#cp somefile /mnt/sysimage/var/log。
二、若是要从光盘复制文件到硬盘,须要先将光驱mount到系统,可是根据主板不一样,此时的光盘设备名不必定是/dev/cdrom,因此可能须要根据本身的状况建立一个link,以便进行mount,如:
#mkdir /mnt/cdrom/
光驱为usb外接光驱,创建连接
#ln -s /dev/scd0 /dev/cdrom
mount设备为只读
#mount /dev/cdrom /mnt/cdrom/ -o ro
3.3 自定义安装
自定义安装部分以“%post”做为开始,在前一部分将自定义安装包复制到硬盘以后,就能够在这里使用bash脚本进行软件的安装控制了。惟一须要注意的是,此时访问磁盘路径已经不须要添加“/mnt/sysimage”,直接访问便可,如
#cp somefile /var/log
此外,由于此时尚未设置用户的环境路径,因此调用系统命令时最好尽可能带上完整地路径名,如:
/usr/sbin/groupadd xxxx
/usr/sbin/adduser xxxx -g xxxx
4 生成安装盘
如今咱们已经完成了自定义安装光盘的所有调整,就能够制做光盘镜像了。生成安装盘ISO镜像,须要先在系统安装好createrepo和mkisofs两个软件包。
首先,必须同步光盘中RPM包的查询信息,不然安装过程当中会提示找不到RPM包
# createrepo -g /disk/repodata/comps.xml /disk/
comps.xml是CentOS自带的RPM所属功能组以及依赖关系的信息,createrepo须要根据该文件来同步信息,最好不要手动修改该文件。
同步成功以后,就能够进行iso的建立了,咱们假定光盘标签为sample,输出iso文件名为/sample.iso
#cd /disk
#mkisofs -o /sample.iso -A ‘sample’ -V ‘sample’ -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -allow-leading-dots -allow-m html