2011年4月15日 星期五

自訂CentOS安裝片

為啥要自訂安裝片呢,起因於LAMP環境需要用好幾片CD光碟,怎不用DVD呢....因為老舊的IBM Server沒有DVD,所以當時都用第一片做最小安裝(就是不會討其他片才能完成的),然後再用yum來安裝所需要的PHP、Apache跟Mysql,久而久之也就習慣了,而且還養成了一種怪僻=>只做最小安裝,直到最近TIPC完成後需要大量佈署到機器上,如果一台一台裝常常會忘東忘西的,還好有寫安裝command筆記的習慣,就慢慢的把這些command寫成script,因為看到另一款軟體使用kickstart來自動安裝完全不需要人工介入(當然還是需要人把光碟片放進去啦),不過是DVD版的全安裝,這讓小弟很無法忍受,於是利用閒暇時間爬文找出如何自訂安裝光碟內容(包含新增移除套件)

必備項目
1.UltraISO Premium Edition
2.CentOS 安裝光碟CD1 or DVD
3.VBOX虛擬機器
4.一點閒暇時間XD
5.具有網路連線(非必要)

一、首先先在VBOX中安裝CentOS,安裝完畢後在/root的底下有個install.log這是這次安裝的rpm套件list,接著掛載安裝光碟到/mnt,然後使用下面的shell script把安裝中真正需要用到RPM複製到硬碟中
#!/bin/sh
if [ "$#" != "3" ];then
        echo "$0 install.log src_rpmdir dst_rpmdir";
        exit 1;
fi

cat $1|grep Installing|awk -F '[ :]' '{system("if [ -f '$2'"$NF".rpm ];then cp -f '$2'"$NF".rpm '$3';else echo '"Can Not find"' "$NF";fi;")}';

使用方式 ./mvrpm.sh /mnt/CentOS /root/mycd/CentOS

接著複製原始的repodata
cp -R /mnt/repodata /root/mycd


二、更新或加入套件(非必要)
如果說安裝後不想更新想預先把新版RPM置換掉可以利用yum的downloadonly插件來下載RPM,取代就是把現有CentOS目錄中舊版本的RPM刪掉再把新版放進去(此人工動作十分耗時,請量力而為)
yum --downloadonly --downloaddir=/root/new update


三、重製repodata
createrepo -g repodata/comps.xml .

這是一個很神奇的步驟,這步小弟就搞了兩個禮拜,務必換到repodata的上一層目錄,並同時可以看到repodata與CentOS(放置RPM)的目錄,如果沒有createrepo這個command請自行安裝

四、編輯ISO
現在回到Windows把原本安裝那片ISO使用工具打開然後清空CentOS目錄的內容,在把剛剛在VBOX中的/root/mycd/CentOS中的RPM放進來,接著把剛剛重建的repodata也覆蓋掉光碟中的版本
如果要使用kickstart可以複製到光碟根目錄中然後再修改isolinux目錄底下的isolinux.cfg將第一行的預設參數改成
default linux ks=cdrom:/ks.cfg


五、測試
在經過幾次1-4的步驟與反覆的測試安裝過程後呢,安裝光碟應該可以如預期的行為運作了,最後加上光碟本身的驗證碼讓光碟的自我檢測功能是可以使用的
/usr/lib/anaconda-runtime/implantisomd5 --force /root/my-centos.iso