FreeBSD 開機載入程式無法從正確的池引導

FreeBSD 開機載入程式無法從正確的池引導

我已在一個具有兩個 ZFS 池的系統上安裝了 FreeBSD 10.1,該系統從另一個硬碟啟動,該硬碟僅包含引導程式。主池磁碟連接到 PCI-E 卡上的 SATA 端口,而引導程式嘗試從錯誤的池(第二個池,直接連接到主機板上的 SATA 連接埠)引導。

錯誤如下:

Can't find /boot/zfsloader
FreeBSD/x86 boot
Default: storage:/boot/kernel/kernel
boot:
/
Cant't find /boot/kernel/kernel
FreeBSD/x86 boot
Default: storage:/boot/kernel/kernel
boot: 

我嘗試在 /mnt/boot/loader.conf 中設定 vfs.root.mountfrom="zfs:zpool" 或 "zfs:zpool/ROOT" 但它不起作用。

如果我拔下第二個池的磁碟,系統將正確啟動。

多謝。

答案1

好吧,我自己想出來了。

ZFS Loader 不允許設定要從中啟動的根池,但它會嘗試透過池化 BIOS 的啟動優先順序來猜測正確的根池。

為了使其從正確的池啟動,我在 BIOS 中將包含引導程式的驅動器設定為第一個啟動設備,將屬於根鏡像池的驅動器設定為第二個和第三個。

答案2

嘗試cp -r /boot從正確的池到錯誤的池。確保bootfs錯誤池上的屬性為空或設定為正確的池。

答案3

從適當的分發 CD 啟動進入「live CD」模式。以 root 身分登入。

現在,假設您的可啟動池稱為「tank」;

導入池而不安裝它 -

zpool import -N -f tank

然後適當設定 bootfs 屬性。常見的引導檔案系統名稱是“tank/ROOT/default”;

zpool set bootfs=tank/ROOT/default tank

這就是可啟動池的內容。對不可啟動池重複此操作,這次將 bootfs 屬性設為「」。到這裡,你就完成了。

相關內容