這篇將提到如何把 FreeBSD 從舊 PC 轉移到新 PC,以及如何從 SATA 硬碟轉移到 NVME SSD。
轉移的目標是 ASUS PN41。
另外也會提一下這幾年的使用心得。不想看的可以先跳過。
其實之前就想寫這篇。偷懶的結果就是昨天多花了不少時間搞。
原本我在各長居地都有架設個小 server,順便當對外防火牆。反正 loading 不會高到哪,找個普普機器就好,其實蠻方便的。
最早是自組的,通常就是淘汰的舊電腦,或是隨便買個便宜板子和便宜 CPU 上。後來經濟狀況好一點覺得這樣子太醜了,用久了便成一團灰,所以就改買便宜 PC。於是幾年前開始噵入ASUS VM60。最近覺得時間到了 (從 2014 用到今年吧?),追求成本更便宜又換成 ASUS PN41。
VM60一路上用來其實算是穩定,唯一也最常遇到的問題就是風扇不轉罷工。但是處理方式也很簡單,就是拆下滴針車油。後幾年大概就是大約一年左右要滴一次。其實本來是想換風扇,但是實在找不到便宜料就打消念頭了。
最近開始換成 ASUS PN41,有一方面也是覺得做這動作很累。但更大部分是 PN41 更適合我目前的使用情境。低工作瓦數 (Pentium N6005 TDP 10W),具備 NVME 和 SATA,可自行擴充的 RAM 插槽。
我用的版本是 Pentium N6005 CPU 的乞丐版。從中國買的,價錢大約都是折合台幣6,000出頭。不包含 RAM、硬碟甚至連無線網卡都沒有。畢竟這些我都有汰換的可以用。
前話聊完,再來講重點。
主機轉移的概念很簡單,就是
1. 把舊主機斷網
2. 舊主機裝上新 NVME SSD
3. 然後把資料都複製上 NVME SSD 後
4. 修改一下新 NVME SSD 上的/etc/fstab 讓他換主機能 mount 正確的 partitions。
5. 拿到新主機裝上,插網路線後開機。收工!
簡單幾個步驟。實際上有些魔鬼 (?) 細節。
步驟 0,For PN41 ONLY! 先 pkg install realtek-re-kmod。為啥要先安裝 realtek-re-kmod 這個 package?這後面會講。另外這個步驟兩台主機都是 amd64 架構。如果是 x86 32 轉上來,我沒把握可以這樣搞。
步驟 1 是為了預防複製到一半又收到 mail 之類導致備份不完整。這個步驟的做法很簡單,就是直接拔掉網路線。
步驟 2 其實也還好。舊主機不支援 NVME,所以就是拿 NVME SSD + 外接盒接上。舊主機是 MBR,新主機我打算用 GPT。還有 PN41 只能用 EFI 方式開機,所以也不得不弄 GPT 搞 EFI
我原本用的分區方式是 / 跟 /usr 兩個分區。所以先在 NVME SSD (這邊變成USB 磁碟) 上建立 GPT。
因為我用的 NVME SSD 也是汰換的 (以前買筆電隨機的 256G NVME SSD),所以
#確定 NVME SSD 的 dev 名稱。在我的例子是 /dev/da0,操作上就用 da0
gpart show
# 先砍掉原本的
gpart destroy -F da0
# 建立新的
gpart create -s GPT da0
# boot partition
gpart add -b 40 -s 128 -t freebsd-boot da0
# EFI partition
gpart add -s 81752 -t efi da0
# UFS root, / 。這裡 -l 代表的是 label。-s 代表大小,沒設定會用光剩下的
gpart add -s 68G -t freebsd-ufs -l root da0
gpart add -t freebsd-ufs -l usr da0
#稍微檢視一下
gpart show -l da0
應該會看到
=> 40 500118112 da0 GPT (238G)
40 128 1 (null) (64K)
168 81752 2 (null) (40M)
81920 142606336 3 root (68G)
142688256 357429896 4 usr (170G)
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 da0
newfs_msdos -F 32 -c 1 /dev/da0p2
mount -t msdosfs /dev/da0p2 /mnt
# -i 3 代表 index 3。對應到前面 gpart show 顯示的。我們想弄的是 root
=> 40 500118112 da0 GPT (238G)
40 128 1 (null) (64K)
168 81752 2 (null) (40M)
81920 142606336 3 root [bootme] (68G)
142688256 357429896 4 usr (170G)
# da0pX X會對應到前面建立的 index。我們要弄全部的 UFS
#再來 mount
#建立 usr 掛載點
mkdir /mnt/usr
#建立下面三個目錄,因為之後不複製這三個
mkdir /mnt/proc
mkdir /mnt/dev
mkdir /mnt/mnt
#現學現賣 XD 用 /dev/da0p3 也可以
mount /dev/gpt/root /mnt
mount /dev/gpt/usr /mnt/usr
因為用的是 PN41,要順便編輯一下 /mnt/boot/loader.conf,加上
umount /mnt/usr
umount /mnt