upgrade FreeBSD from 9.2 to 10.0

剛剛在翻FreeBSD Man Pages的時候意外發現10.0開始的uname多了不同的參數

  • -K Write the FreeBSD version of the kernel.
  • -U Write the FreeBSD version of the user environment.

剛好手上有份程式需要取一些環境資訊,所以想來試試看加上這兩個參數實際的輸出結果,順便紀錄一下升級過程

確認目前系統已經升級到最新的狀態
# freebsd-update fetch install
開始進行升級動作
# freebsd-update upgrade -r 10.0-RELEASE
沒想到…

Looking up update.tw.FreeBSD.org mirrors… none found.
Fetching metadata signature for 9.2-RELEASE from update.tw.FreeBSD.org… done.
Fetching metadata index… done.
Inspecting system… done.

The following components of FreeBSD seem to be installed:
kernel/generic src/src world/base world/doc world/games world/lib32

The following components of FreeBSD do not seem to be installed:

Does this look reasonable (y/n)? y

Fetching metadata signature for 10.0-RELEASE from update.tw.FreeBSD.org… done.
Fetching metadata index… fetch: http://update.tw.FreeBSD.org/10.0-RELEASE/amd64/t/22ddc0a585da6d2e29a6745f3c8182f9e987049aa120a0d28bd0ae57aa3b5126: Not Found
failed.

試了兩三次還是一樣,本來以為台灣freebsd mirror沒有提供完整的鏡像,不過開瀏覽器連上http://update.tw.freebsd.org/10.0-RELEASE/amd64/t/看起來卻能連的到,不知道問題在哪~之前patch升級也都沒問題呀! 只好先把update server改回預設的設定(參考“設定FreeBSD update&ports&package使用local mirror server”),然後就可以了@@”

#freebsd-update upgrade -r 10.0-RELEASE
Looking up update.FreeBSD.org mirrors… 5 mirrors found.
Fetching metadata signature for 9.2-RELEASE from update2.freebsd.org… done.
Fetching metadata index… done.
Inspecting system… done.

The following components of FreeBSD seem to be installed:
kernel/generic src/src world/base world/doc world/games world/lib32

The following components of FreeBSD do not seem to be installed:

Does this look reasonable (y/n)? y

Fetching metadata signature for 10.0-RELEASE from update2.freebsd.org… done.
Fetching metadata index… done.
Fetching 1 metadata patches. done.
Applying metadata patches… done.
Fetching 1 metadata files… done.
Inspecting system… done.
Fetching files from 9.2-RELEASE for merging… done.
Preparing to download files… done.
Fetching 38462 patches…..10….20….30….40….50….60….70….80….90….100….110….120….130….140..
..150….160….170….180….190….200….210….220….230….240….250….260….270….280….290….

上面過程要等滿久的,可能一方面站台在國外的關係,總之等了很久,所以跑到一半就去吃飯了…

過程中可能會出現一些無法自動合併的更新,其實大部分都是comments的部分,很快就能處理好了

等這一段跑完就會出現提示訊息要跑一次freebsd-update install,這次跑完就可以做第一次重開機了

重開機後就重複最後兩個動作…再跑一次freebsd-update install,重開機…

開好之後檢查一下各service有正常起來,功能沒問題就可以先收工了~ (如果之前沒改用pkgng來館套件的話還要進行轉換就是了)

reference:
FreeBSD 10.0-RELEASE Installation Instructions

設定 FreeBSD update & ports & package 使用 local mirror server

2016/1/20更新:
今天測試, freebsd-update,portsnap 和 pkg 的 tw mirror 已經失效

( 在 Facebook FreeBSD Taiwan 社團看到 消息 表示已經有自動台灣分流了,只是不知道為什麼我都會看到從 aws ec2 抓檔案 )
至於 make.conf 的部份還是可以繼續使用 (也強烈建議使用),在 build ports 的時候對下載 source code 的速度幫助很大!

FreeBSD 上常用來更新系統以及套件的工具的 mirror 設定:

設定檔位置:
/etc/freebsd-update.conf
/etc/portsnap.conf (使用portsnap更新ports才會有)
/etc/pkg/FreeBSD.conf (使用pkgng管套件才會有)
/etc/make.conf (可能需要自行建立)

/etc/make.conf 的部分,自行加入或修改現有的 MASTER_SITE_OVERRIDE / MASTER_SITE_BACKUP:
(這部份是在編 ports 的時候拉 src / tarball 會用到)

MASTER_SITE_BACKUP?= \
http://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}

/etc/freebsd-update.conf 的部分 (freebsd-update):
ServerName update.FreeBSD.org
改成
ServerName update.tw.FreeBSD.org

/etc/portsnap.conf 的部分 (portsnap):
SERVERNAME=portsnap.FreeBSD.org
改成
SERVERNAME=portsnap.tw.FreeBSD.org

 

/etc/pkg/FreeBSD.conf 的部分:
url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
改成
url: "pkg+http://pkg.tw.FreeBSD.org/${ABI}/latest",

tw 的部分看所在地區再做調整即可,台灣地區 mirror list 可以參考:
http://wiki.tw.freebsd.org/doc/freebsd_taiwan_mirror_sites

FreeBSD 官方放的 mirror list 可以參考這一份:
http://www.freebsd.org/doc/handbook/mirrors-ftp.html

設好 mirror 之後要裝套件速度真的會快很多!