FreeBSD ISO的定制的想法起源於當時在安裝完系統後,要做些重復的配置工作,浪費時間可經歷。
於是就開始查找資料,發現國內幾乎沒有這方面的資料可查,最後還是從老外的一篇文章中知道了大概的過程!
FreeBSD系統的結構相對還是比較簡單的,其目錄文件基本上分為兩類:
1、基本系統,安裝在除 /usr/local 外的位置。
2、通過pkg_add 或 使用port樹 make install 安裝在/usr/local 路徑下。
基本系統則是通過壓縮包直接解壓縮出來,並放到新系統的對應目錄中,那麼我們就可以通過修改壓縮包的內容,直接將我們修改定制好的配置內容替換原始內容,那麼新安裝的系統就和我們配置好的系統完全一致,達到安裝、配置一步完成,提高效率,同時也避免了重復勞動。
(由於這篇文章是後期整理,離實際操作已經有一段時間啦,可能有些步驟未必列出)
一、將下載的ISO文件加載到一天配置完成的模板系統上,建立模板系統存放路徑,如:/var/custom-iso 將ISO內的所有文件復制到目錄中。
將配置好的文件替換掉解壓縮出來的目錄中的相應文件,當然也可以添加原系統中沒有的文件,
下面是重新打包壓縮的過程
1、生成 base 目錄文件的步驟
cd /8.0-Release-src-file
mtree -c -K md5digest -p ./base/ > base.tar/base.mtree
cd /8.0-Release-src-file/base
tar -czpf - ./* | split -b 4M
rm -f ../base.tar/
mv x?? ../base.tar
cd /8.0-Release-src-file/base.tar
find ./ -type f -depth 1 -name 'x??' |sed s/'.\/x'//g | awk '{MV="mv "};{PRE="base."};{SRC="x"};{print MV SRC$0, PRE$0}' | sh
echo "Pieces =`ls -l base.?? | wc -l`" > base.inf
cksum base.?? |sed s/base/cksum/g | awk -F" " '{printf("%s = %s %s\n", $3, $1, $2)}' >> base.inf
cksum base.aa | awk -F" " '{printf("%s = %s %s\n", $3, $1, $2)}'
生成目錄樹的MD5碼
cat /dev/null > CHECKSUM.MD5
cat /dev/null > CHECKSUM.SHA256
md5 * | grep -v CHECKSUM > CHECKSUM.MD5
sha256 * | grep -v CHECKSUM > CHECKSUM.SHA256
rm -f /8.0-Release/8.0-RELEASE/base/*
cp * /8.0-Release/8.0-RELEASE/base/
修改自動安裝腳本INSTALL.CFG的步驟(實現系統的自動安裝、自動分區、及其他,安裝過程可不需要人工輸入)
由於 install.cfg 包含在mfsroot.gz包內,通過下面的步驟將其掛載到當前的系統的 /dist 下。
cd /8.0-Release/boot
gzip -d mfsroot.gz
mdconfig -a -t vnode -u0 -f mfsroot
mount /dev/md0 /dist
vim /dist/install.cfg #編輯自動安裝腳本
#修改完成後將文件重新打包進 mfsroot包中
umount /dist
cd /8.0-Release/boot
mdconfig -d -u0
gzip mfsroot
#創建定制完成的iso文件
mkisofs –R –no-emul-boot –b ~/freebsd/boot/cdboot –o freebsdautoinstall.iso ~/freebsd
#ISO文件創建完成後就是實際安裝驗證是否正確啦
#我是將該ISO傳到vmware exsi 的虛擬系統中,通過安裝虛擬機的方式驗證
echo 'password' | scp /fb8-amd64-hapa.iso root@vmwareexs4:/vmfs/volumes/4aaa839c-7791b8bf-280b-002219bf7965
#沒有問題的話就可以刻錄光盤啦
burncd –f /dev/acd0 freebsdautoinstall.iso fixate