1案例描述
思路的起源来自两个,一个是CactiEZ的安装盘,感觉很牛X,起初没考虑到自己定制;后来肖景海提出我们自己是否也可以发行我们自己的Linux,系统盘里打包好了我们的程序,用户拿到光盘可以直接安装,减去我们软件的安装过程。后来度娘了一下,发现可行。
2案例分析
整个过程基本分为,创建一个文件夹,用于放置光盘内容;然后根据要安装的包进行提取;打包第三方软件包,然后开始制作,详细旅程请参考“解决过程”。
3解决过程
3.1准备工作
根据我们生产环境,我们使用的linux是CentOS5.564位系统,我们这次文档以生产环境为例进行操作。下面开始准备工作。
3.1.1准备环境和挂载镜像
安装一个CentOS5.564位系统,以该系统为环境来完成本次案例。将CentOS5.564镜像文件上传到系统“/opt”下,然后将镜像挂载在“/mnt/CentOS-5.5-x86_64”目录下,用于配制yum源和提取制作光盘需要文件。
挂载操作,用vim编辑/etc/fstab文件,在最后一行添加如下行:
/opt/CentOS-5.5-x86_64-bin-DVD-1of2.iso/mnt/CentOS-5.5-x86_64iso9660loop,defaults00
保存fstab文件,执行“mount-a”挂载光盘,后续系统启动会自动挂载光盘。
3.1.2配置yum源及安装需要软件
配制yum源,安装创建镜像需要的软件。
备份系统repo文件,并创建自定义repo文件,操作如下:
mkdir/etc/yum.repos.d/bak
mv/etc/yum.repos.d/*.repo/etc/yum.repos.d/bak/
touch/etc/yum.repos.d/myrepo.repo
在myrepo.repo文件内插入如下内容:
[base]
name=CentOS-5.5-x86_64
baseurl=file:///mnt/CentOS-5.5-x86_64
gpgcheck=0
安装需要的组件包(createrepo:创建yum仓库的软件包的comps.xml文件;mkisofs:创建ISO文件):
yum-yinstallcreaterepomkisofs
3.2提取镜像需要文件和rpm包文件
3.2.1创建光盘文件夹及同步文件
在/opt目录下创建一个文件夹“MyCentOS”用于存放生成光盘文件,然后从挂载目录下同步文件到光盘目录,操作如下:
rsync-av--exclude=CentOS/mnt/CentOS-5.5-x86_64//opt/MyCentOS/
然后删除MyCentOS下不必要的文件,并创建一个目录CentOS用于存放rpm包,保留如下内容(7个文件或目录):
#ll-a
total108
drwxr-xr-x6rootroot4096Jun2510:34.
drwxr-xr-x3rootroot4096Jun2509:24..
drwxr-xr-x2rootroot36864Jun2509:23CentOS
-rw-r--r--1rootroot106May42010.discinfo
drwxr-xr-x4rootroot4096May42010p_w_picpaths
drwxr-xr-x2rootroot4096May42010isolinux
drwxr-xr-x2rootroot4096May62010repodata
-r--r--r--1rootroot7048May62010TRANS.TBL
-rw-r--r--1rootroot417Apr272010.treeinfo
3.2.2根据install.log文件生成安装文件列表
install.log文件是系统安装时安装包日志文件,实际在使用时根据需要在安装的系统中取得,命令如下:
cat/root/install.log|grepInstalling|awk'{print$2}'|awk-F':''{if(NF==2){print$2}else{print$1}}'>/opt/packages.list
3.2.3根据文件列表到挂载光盘中拷贝rpm包
根据文件列表使用for语句将rpm拷入CentOS目录,命令如下:
foriin`cat/opt/packages.list`;docp-pv-f/mnt/CentOS-5.5-x86_64/CentOS/"$i"*/opt/MyCentOS/CentOS/;done
3.3制作光盘
3.3.1更新安装包的xml文件
用createrepo程序更新repodata下的comps.xml文件
createrepo-g/opt/MyCentOS/repodata/comps.xml/opt/MyCentOS/CentOS/
3.3.2创建自动化安装的ks文件
制作ks文件,ks文件根据实际安装要求创建,一般可以使用Kickstart(system-config-kickstart)程序来生成,也可以从root目录下拷贝“anaconda-ks.cfg”(系统安装过程中自动生成)直接使用,本次直接使用root下文件,拷贝文件并改名:
cp/root/anaconda-ks.cfg/opt/MyCentOS/isolinux/ks.cfg
ks文件需要将分区部分内容取消注释后才可使用,修改后如下:
#Thefollowingisthepartitioninformationyourequested
#Notethatanypartitionsyoudeletedarenotexpressed
#heresounlessyouclearallpartitionsfirst,thisis
#notguaranteedtowork
clearpart--linux--drives=sda
part/boot--fstypeext3--size=100--ondisk=sda
partpv.2--size=0--grow--ondisk=sda
volgroupVolGroup00--pesize=32768pv.2
logvol/--fstypeext3--name=LogVol00--vgname=VolGroup00--size=1024--grow
logvolswap--fstypeswap--name=LogVol01--vgname=VolGroup00--size=1000--grow--maxsize=4000
为安装过程不提示分区操作,需将“clearpart”行改为如下内容:
clearpart--all–initlabel
在实际制作光盘过程中,ks文件的修改是关键,需要单独研究一下才使用的比较顺手,ks文件可以使用“ksvalidator”命令来检验文件是否有明显语法错误。
3.3.3修改系统安装方式
修改镜像的默认安装方式,实现自动化安装,这里,修改/opt/MyCentOS/isolinux/isolinux.cfg这个文件,达到我们的目标,值得注意的是,isolinux.cfg文件是只读的,要想修改,需要为其赋予可写权限:
chmod+w/opt/MyCentOS/isolinux/isolinux.cfg
vim/opt/MyCentOS/isolinux/isolinux.cfg
修改如下内容:
default行:此处默认为linux,修改为ks,让linux从ks这个脚本启动,修改后内容;
defaultks
timeout行:此处默认600,即等待一分钟,改为6秒钟,即60,修改后内容:
timeout60
“labelks”部分内容的append行内容,修改后内容:
appendks=cdrom:/isolinux/ks.cfginitrd=initrd.imgtext
保存文件,下面正式开始制作光盘。
3.3.4生成ISO文件
制作光盘
mkisofs-R-J-T-r-l-d-allow-multidot-allow-leading-dots-no-bak-o/opt/MyCentOS-0.1-x64.iso-bisolinux/isolinux.bin-cisolinux/boot.cat-no-emul-boot-boot-load-size4-boot-info-table/opt/MyCentOS/
生成ISO文件在/opt目录下,然后可以安装测试下实际效果。
4解决结果
很方便的制作自己需要的系统盘,系统安装过程不需要人工干预,把其他需要配置的地方一起做了,对后续使用方便很多。
5总结
在日常使用其他软件时一般都会有些新的方法或思路,如果善于发现,积极实践运用到我们日常运维中来还是很不错的!
6参考:
定制自己的CentOS发行版:
http://www.osedu.net/article/linux/2012-05-30/407.html
定制CentOS6.0精简的自动安装版:
http://kerry.blog.51cto.com/172631/646549/
定制centos的制作:
http://blog.chinaunix.net/uid-9040470-id-1939673.html
参考:GUNcp与tar拷贝文件速度比较
http://liuyu.blog.51cto.com/183345/150408
CentOS6.2X86_64系统定制文档详细版
http://www.osedu.net/article/linux/2012-05-30/411.html