天天看點

定制自己的CentOS發行版

1案例描述

思路的起源來自兩個,一個是cactiez的安裝盤,感覺很牛x,起初沒考慮到自己定制;後來肖景海提出我們自己是否也可以發行我們自己的linux,系統盤裡打包好了我們的程式,使用者拿到CD光牒可以直接安裝,減去我們軟體的安裝過程。後來度娘了一下,發現可行。

2案例分析

整個過程基本分為,建立一個檔案夾,用于放置CD光牒内容;然後根據要安裝的包進行提取;打包第三方軟體包,然後開始制作,詳細旅程請參考“解決過程”。

3解決過程

根據我們生産環境,我們使用的linux是centos5.564位系統,我們這次文檔以生産環境為例進行操作。下面開始準備工作。

安裝一個centos5.564位系統,以該系統為環境來完成本次案例。将centos5.564鏡像檔案上傳到系統“/opt”下,然後将鏡像挂載在“/mnt/centos-5.5-x86_64”目錄下,用于配制yum源和提取制作CD光牒需要檔案。

挂載操作,用vim編輯/etc/fstab檔案,在最後一行添加如下行:

/opt/centos-5.5-x86_64-bin-dvd-1of2.iso/mnt/centos-5.5-x86_64iso9660loop,defaults00

儲存fstab檔案,執行“mount-a”挂載CD光牒,後續系統啟動會自動挂載CD光牒。

配制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

在/opt目錄下建立一個檔案夾“mycentos”用于存放生成CD光牒檔案,然後從挂載目錄下同步檔案到CD光牒目錄,操作如下:

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

install.log檔案是系統安裝時安裝包日志檔案,實際在使用時根據需要在安裝的系統中取得,指令如下:

cat/root/install.log|grepinstalling|awk'{print$2}'|awk-f':''{if(nf==2){print$2}else{print$1}}'>/opt/packages.list

根據檔案清單使用for語句将rpm拷入centos目錄,指令如下:

foriin`cat/opt/packages.list`;docp-pv-f/mnt/centos-5.5-x86_64/centos/"$i"*/opt/mycentos/centos/;done

用createrepo程式更新repodata下的comps.xml檔案

createrepo-g/opt/mycentos/repodata/comps.xml/opt/mycentos/centos/

制作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

在實際制作CD光牒過程中,ks檔案的修改是關鍵,需要單獨研究一下才使用的比較順手,ks檔案可以使用“ksvalidator”指令來檢驗檔案是否有明顯文法錯誤。

修改鏡像的預設安裝方式,實作自動化安裝,這裡,修改/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

儲存檔案,下面正式開始制作CD光牒。

制作CD光牒

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