2011年1月10日 星期一

FreeBSD 更新、升級系統(8.0-RELEASE升級到8.1-RELEASE為例)

FreeBSD 更新、升級系統

之前,所分享的更新FreeBSD Port Tree是利用csup,可以參考[FreeBSD]使用csup更新port tree,現在,要分享的是如何更新FreeBSD的版本,例如要從8.0-RELEASE升級到8.1-RELEASE,FreeBSD從最早在1995年的2.0-RELEASE開始到現在8.1-RELEASE及9.0-CURRENT,在開發每個版本都會增加新功能,但是,有時候升級到最新的版本並不是最好的,如果在目前使用的版本上沒有太大的問題,還是要經過詳細考慮過比較好,畢竟,升級版本會動到核心的部份。


1.複製standard-supfile到/usr下
# cp /usr/share/examples/cvsup/standard-supfile /usr/


2.複製GENERIC
為了防止修改的GENERIC有問題,導致主機無法開機,可以先將原本正常的GENERIC複製一份出來
# cd /usr/src/sys/i386/conf
# cp GENERIC GENERIC.old


3.修改/usr/standard-supfile
# vi /usr/standard-supfile
修改以下內容
*default release=cvs tag=RELENG_8_1
                                          
備註:RELENG_8_1為版本名稱

4.將8.1的原始碼下載下來
# cd /usr/
# csup -g -L 2 standard-supfile

3.進行編譯核心
# cd /usr/src/
# make buildworld       //編譯系統中的程式
# make buildkernel KERNCONF=GENERIC > /home/aming/20100810buildker.log &  
//編譯新的核心

備註:GENERIC為核心設定檔的檔名

4.安裝新編譯的核心
# make installkernel KERNCONF=GENERIC > /home/aming/20100810installker.log &

5.重開機,並且進入單人模式
# mount -u /       //指定將根目錄掛載
# mount -a -t ufs        //將/etc/fstab裡的設定全部掛載起來
# mergemater -p       //更新設定檔
此時,系統會先將新的檔案暫存在/var/tmp/temproot,然後去跟舊的檔案進行比對
# make installworld > /home/aming/20100810.installwor.log &
# mergemaster
# reboot

補充1:
如遇到新核心經過編譯後,無法正常開機,以舊核心進行開機。
# unload kernel
# boot /boot/kernel.old/kernel

補充2:
在下mergemaster時,會跳出詢問
d:表示要保留舊的檔案,不使用新的設定檔
i:用新的檔案,將舊的檔案覆蓋掉
m:會將兩份新舊檔案顯示在左右兩邊,再進行詢問
v:會再看一次新舊檔案的比較

另外,mergemaster的選擇部份可以參考雄的FreeBSD筆記系統升級-make world 3-5部份

沒有留言:

張貼留言