FreeBSD 8.0 Release 升級

這邊是個人的紀錄。

首先,根據網路上四處尋訪找來的資料顯示,要先把 standard-supfile 中的版本更新到 8.0。

到 /usr/share/example 下面的 standard-supfile ,將其中 RELENG_7_2 更改為 RELENG_8_0 ,然後使用以下指令下載新的程式碼回來。

# csup -g -L 2 standard-supfile

如果有特別需求的話,可以在這裡自訂一下 kernel ,參考資料。 接下來就是開始編譯。

# cd /usr/src
# make -j 2 buildworld
# make -j 2 buildkernel KERNCONF=GENERIC
# make installkernel
# reboot

建造世界! *無誤*

如果一切順利的話,順利編譯完成之後就可以重開機進入 single user mode 了。

但是…我遇到了相當腦包的問題…就是 buildworld 一直過不了,每當要編譯某個程式的時候就會噴 error stop 了Q_Q
經過仔細的研究,發現只是 /etc/make.conf 不小心多了一行空行!*崩潰*
把他去掉之後就可以編譯了…

以下是我出錯的的 make.conf 內容…

# for make install MASTER_SITE_BACKUP?= \
ftp://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp3.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
...

那個「\」表示換行,然而我在第一與第二行中間加了空白導致他抓錯然後編譯失敗…大腦包…
總之成功之後,重開機進入 single user 模式。接下來使用以下的指令:

# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a
# mergemaster -p
# make installworld
# mergemaster -Fi

fsck 先檢查磁碟,接下來把檔案磁區掛載起來,然後開 swap。接下來用 mergemaster -p 創造出一個臨時的環境,然後把程式裝起來。最後再用 mergemaster -Fi 處理設定檔。參數-F表只更新與之前不同的檔案、-i表自動安裝不存在於 /etc 下面的檔案。

這樣就大功告成了!不過話說回來,比起今天在終端機室遇到的大大小小問題,這都只是小 case 。(笑)

FreeBSD 8.0 Release 升級