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-x4rootroot4096May42010images
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,讓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
本文出自 “706737” 部落格,謝絕轉載!