1案例描述

思路的起源来自两个,一个是CactiEZ的安装盘,感觉很牛X,起初没考虑到自己定制;后来肖景海提出我们自己是否也可以发行我们自己的Linux,系统盘里打包好了我们的程序,用户拿到光盘可以直接安装,减去我们软件的安装过程。后来度娘了一下,发现可行。

2案例分析

整个过程基本分为,创建一个文件夹,用于放置光盘内容;然后根据要安装的包进行提取;打包第三方软件包,然后开始制作,详细旅程请参考“解决过程

3解决过程

3.1准备工作

根据我们生产环境,我们使用的linuxCentOS5.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文件根据实际安装要求创建,一般可以使用Kickstartsystem-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,让linuxks这个脚本启动,修改后内容;

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

参考:GUNcptar拷贝文件速度比较

http://liuyu.blog.51cto.com/183345/150408

CentOS6.2X86_64系统定制文档详细版

http://www.osedu.net/article/linux/2012-05-30/411.html