我已在一個具有兩個 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 屬性設為「」。到這裡,你就完成了。