FreeBSD makeworld的過程

去小惡魔學園沒找到, 只好自己翻譯一下, 和原版有些出入, 加上一些自己的理解, 有誤還請指出
英文原版file:///usr/share/doc/en/books/handbook/makeworld.html

注意事項

* 備份系統, 備份一下總不至於吃虧
* 訂閱對應郵件列表, 希望你的英文不至於太差, 在對應郵件列表上貼上你問題的描述, 描述清楚出現的問題及受影響的系統

STABLE: [email protected]
CURRENT: [email protected]

升級步驟(假設你已經同步到要升級的代碼)

1. 讀一下/usr/src/UPDATING, 上面由一些你可能需要注意的事項, 一定要讀一下, 但並不代表這一定比從郵件列表上得到的信息有用, 所以推薦訂閱郵件列表

2. 檢查/etc/make.conf, 查看/etc/make.conf和/etc/default/make.conf的不同之處, /etc/default/make.conf中包含一些缺省定義, 不過大部分都被註釋掉了, 可以考慮把它們加入到/etc/make.conf中, 不過要記得/etc/make.conf所有的make命令都起作用

3. 更新/etc下的文件, /etc下存放配置和啓動腳本, 有些文件在不同的版本中是不同的, 所以需要進行更新, 從FreeBSD 開始可以在編譯前使用命令 mergemaster 加上 -p 選項. 它將檢查爲了正常運行buildworld和installworld而需要更新的文件, 命令如下:

# cd /usr/src/usr.sbin/mergemaster
# ./mergemaster.sh -p

4. 進入單用戶模式, 避免多用戶系統帶來的文件升級不成功問題, 還有一種方法就是在多用戶模式下編譯, 單用戶下升級安裝, 命令如下

# shutdown now

重啓後使用boot -s 進入單用戶模式

# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a

加入升級前系統使用本地時間而沒有使用GMT, 必須打入命令

# adjkerntz -i

調整時區等設置, 保證系統的正常安裝

5. 移除/usr/obj

# cd /usr/obj
# chflags -R noschg *
# rm -rf *

6. 編譯
a 保存編譯輸出, 注意不要存在/tmp目錄下, /tmp下的文件可能在重啓後被清除

# script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
# make TARGET
... compile, compile, compile ...
# exit
Script done, ...

b 編譯

# cd /usr/src
# make -j4 -DNOPROFILE buildworld #或者在/etc/make.conf加上NOPROFILE=true

FreeBSD 2.2.5後make world分成make buildworld和make installworld, 注意這裏只作make buildworld
c 耗時: PIII500/128M RAM大約需要2個鐘頭左右

7. 編譯安裝新內核

# cd /usr/src
# make buildkernel
# make installkernel

編譯使用GENERIC配置的內核, 推薦編譯一個, 以免以後編譯內核後無法使用新內核啓動沒有make installworld前定製編譯新內核使用下面的命令

# /usr/obj/usr/src/usr.sbin/config/config KERNELNAME

8. 以新內核重啓到單用戶模式

9. 升級系統, 注意要使用和make buildworld使用的-D選項, 並且絕對不能使用-j選項

# cd /usr/src
# make installworld

假如編譯時:

# make -DNOPROFILE=true buildworld

安裝時就應該:

# make -DNOPROFILE=true installworld

10. 升級那些沒有被make world升級的文件, 如/etc下的文件, 可以使用mergemaster或者手工升級, 這一點請參見mergemaster的手冊, 在升級前建議備份/etc目錄.

11. 更新/dev 通常使用mergemaster, 就會重建/dev, 或使用命令 sh MAKEDEV 建立

12. 更新/stand

# cd /usr/src/release/sysinstall
# make all install

13. 再次重啓

# fastboot

14. 結束升級, 加入有些程序無法運行的話可以重新編譯安裝, 例如

# cd /usr/src/usr.bin/file
# make all install
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章