2006-06-16

更換 FreeBSD 系統硬碟

簡單紀錄一下 FreeBSD 直接更換系統硬碟的方法, 以免每次都要重灌的麻煩, 或許哪天會用得到.

1. 將準備替換的備用硬碟 (假設是 ad1) 裝上, 用原有的系統 (ad0) 進入 single mode, 並且 mount 所有 slice
# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a

2. 在備用硬碟上建立 slice, 使用比較簡單的 /usr/sbin/sysinstall (*1) 來處理
"Configure" --> "Fdisk", 為了省麻煩選擇 "A" 只切一個 Partition 後選擇 "Q" 離開. Boot Manager 選擇 "Standard" 就可以了
"Configure" --> "Label" , 手動建立 slice, 結果大概像是這樣

ad1s1a /mnt 512MB (UFS2)
ad1s1b swap 2048MB (swap)(設定為 RAM 的 4倍大)
ad1s1d /mnt/var 4096MB (UFS2 + Softupdates)
ad1s1e /mnt/usr 8192MB (UFS2 + Softupdates)
ad1s1f /mnt/home 8192MB (UFS2 + Softupdates)


(這邊要注意, 先把 mount point 設定成 / , 再用 "M" 選項手動改成 /mnt, 才有辦法搞出 ad1s1a)

完成後以 "W" 寫入, 使用 "Q" 離開 Disklabel Editor, 並跳出 sysinstall

3. 檢查替代硬碟是否已經 mount, 沒有的話執行下列指令手動 mount 到現有的系統上
# mount /dev/ad1s1a /mnt
# mount /dev/ad1s1e /mnt/usr
...


4. 開始複製所有檔案到新硬碟上 (*2)
# tar cf - --one-file-system -C / --exclude='mnt/*' . | tar xpvf - -C /mnt
# tar cf - --one-file-system -C /var . | tar xpvf - -C /mnt/var
# tar cf - --one-file-system -C /usr . | tar xpvf - -C /mnt/usr
# tar cf - --one-file-system -C /home . | tar xpvf - -C /mnt/home


5. 以上動作完成後, 關閉電腦, 將原來的系統硬碟換成剛剛處理完成的替代硬碟

6. 掛上新的系統硬碟 (記得調整成 ad0) , 開機進入 single mode, 檢查檔案系統掛載是否正常
# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a
# mount


正常的話可以看到以下的列表

/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1d on /var (ufs, local, soft-updates)
/dev/ad0s1e on /usr (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)


7. 確認檔案系統掛載正常後, 重開機, 檢查開機訊息確認系統正常運作

==
*1. FreeBSD 6.x 的 sysinstall 位置改了, 4.x 以前是放在 /stand/sysinstall
*2. tar 有很多選項在 6.x 分成兩種, 所以和 4.x 不太一樣, 得下完整的選項, 像是 --one-file-system--exclude='mnt/*'
(wordpress 會自動置換字串...orz
這兩個指令前面都是兩個 "-" 而不是只有一個)

資料來源: FreeBSD Cheat Sheets (這網站關了...)

沒有留言:

張貼留言