但是剛出來的 code,總是有點 bug,而不幸的是,我剛好踫上了!
make world; make kernel; reboot 之後,機器就卡在 boot loader 的過程,
因為是 load boot loader 階段,所以連進去 boot loader 去 bypass 的機會都沒有。
更難堪的是,跑在小機器上,M2 規格只有一個,不可能裝另外一個 SSD,然後把原本的掛上去偷天換日。
所以想了一下,大概就是用 bootable cd,開起來之後進去 shell 裡面去處理。
因為現在其實很少人會還有燒錄機這種東西,而我也討厭用 usb 去 boot,
所以 N 年前就在同事建議之下,買了拉麵外接盒 (https://24h.pchome.com.tw/prod/DRAB5S-A9005B1NK)
可以直接將 iso 丟進去,讓他模擬成 bootable cd,很環保。
下面是一些步驟,是為了以後遇到同樣的問題,我自己會忘記而記錄下來的。
- 用 install cd 開機之後,dialog 選 shell,然後用 root login。
- dmesg 看一看,可以查到自己的硬碟在哪個裝置上(我的機器上是 nvd0)
- gpart show nvd0
- 可以列出這個硬碟上面有哪些 partition。
- 我是把系統都裝在 zfs 上。
- 理論上第一個應該是 efi,第二個是 freebsd-boot,第三個是 freebsd-swap,第四個就是 freebsd-zfs 了。
- 再來就是用 gpart 來安裝 boot loader
- gpart bootcode -b /boot/pmbr -p /boot/loader.efi -i 2 nvd0
- index 是 2 的原因是, 1 => efi, 2 => freebsd-boot
- 重開機,boot loader 就是比較舊版本的那個了。
Ref: https://ashish.blog/2018/06/freebsd-uefi-boot/