話說大神在他 blog 有開示說要如何從 4.x 遠端升級到 5.x,照著做當然是一切順利,但是 5.x 升級到 6.x 這種他認為像吃飯一樣容易的問題對我這種沒經驗的人來說就是一堆問題,所以測試成功了就要來寫篇心得筆記來提醒自己 :Q
首先請按照上面連結的文章把你的機器升級到 5.x,我是在 VMware 上面用 4.11-miniinst 裝好以後先升級到 4.11-RELEASE-p25 (RELENG_4_11) 再升級到 5.5-STABLE (RELENG_5)。如果你也像我一樣無聊想練習,記得裝 miniinst 的時候除了要裝 base 之外,把 src/base, ports, crypto 都裝上去,這些都可以用 CD-ROM 來安裝 (5.x 以後的 bootonly 就得用網路裝了)。特別是 crypto 要裝,不然你就不要想用 ssh login。另外,用 package 把 cvsup-without-gui 和 joe (如果你也用 joe 的話) 裝起來,你應該不會想為此用 ports 從 ezm3 一路裝上去 (cvsup),那會要等很久的。
假設你已經升級到 5.5-STABLE 了,首先請再次 make update 到 RELENG_6_1 (或是 RELENG_6,雖然說最近也是在準備 6.2-PRERELEASE…)。接著:
- 把 /usr/obj/ 砍掉
- 在 env 裡面設定 MAKEOBJDIRPREFIX 到 /usr/obj
- 在 /lib/ 裡面建立 libc.so.6 和 libm.so.4 的 symbolic link 指向 libc.so.5 和 libm.so.3
(大神是說拿別台機器的,但是我沒有別台 i386 是跑 6.x 可以拿這兩個檔案,結果發現這個更鳥的方法也可以 work XD) - make buildworld
- make kernel
(如果你沒在 make.conf 裡面指定 KERNCONF 的話記得要自己加在後面) - mergemaster -p
- make installworld
- make delete-old
- mergemaster -i
- reboot
然後祈禱會正常開起來 :p
我一共實驗了三次,第一次有成功升級,但是好像是因為多弄了 make delete-old-libs 把一堆 lib 給弄丟了,升級後程式都爛光了;第二次在 4.x -> 5.x 的 make buildworld 完的時候手賤把 COMPT4X 加進去 make.conf 裡面,結果在 installworld 的時候整個爛掉 (因為沒有編進去咩),連 vi 都不能用;第三次就是這次。所以說,如果有人照上面的作然後失敗,請不要打我 XD
Sophia & Twins & Peter » Blog Archive » [IT] upgrade freebsd said
[...] remote upgrade from 5.x to 6.x [...]