在 FreeBSD 重新編譯內核並重啟後,系統拋出 zfs: failed with error 6 錯誤,隨後進入 mountroot> 提示符,導致無法正常啟動。這是一個較少見的錯誤代碼(常見為 2 或 19),經排查發現是因為內核配置中缺失關鍵的 GEOM 相關選項。
zfs: failed with error 6,進入 mountroot>在 /boot/loader.conf 添加:
kern.geom.label.gptid.enable="0" kern.geom.label.disk_ident.enable="0"
目的:防止磁盤以 GUID 格式顯示導致 ZFS 找不到裝置(通常會報錯 2)。但此舉無效,錯誤依舊為 6。
vfs.zfs.debug="1" boot_pause="YES"
因 USB 鍵盤不可用,僅能看到最後一行仍為 GUID 格式,說明底層幾何層仍未正常工作。
發現三項關鍵選項被註釋:
options GEOM_PART_GPT # GUID Partition Tables #options GEOM_RAID # Soft RAID functionality options GEOM_LABEL # Provides labelization
這三項與 GUID 分區表、標籤機制緊密相關,判斷是導致 geom 子系統異常的根因。
在 /boot/loader.conf 添加模組預載入:
geom_label_load="YES" geom_part_gpt_load="YES"
重啟後系統順利啟動,證實問題在於內核缺失這些模組。
編輯內核配置文件,取消註釋以下選項:
options GEOM_PART_GPT # GUID Partition Tables #options GEOM_RAID # Soft RAID functionality (視需求啟用) options GEOM_LABEL # Provides labelization
重新編譯並安裝內核:
make buildkernel KERNCONF=MYKERNEL make installkernel KERNCONF=MYKERNEL
重啟驗證,問題徹底解決。
內核中禁用了 GEOM_PART_GPT 和 GEOM_LABEL 選項,導致 GEOM 幾何層無法正常識別 GPT 分區表與標籤,ZFS 在開機掛載階段找不到根池裝置,從而拋出 error 6。FreeBSD 的存儲堆疊高度依賴 GEOM 框架,相關模組缺失會直接阻斷啟動流程。
mountroot> 且伴隨 ZFS 錯誤,優先檢查 geom_* 模組是否載入。kldstat 查看當前載入模組,kldload geom_part_gpt 手動載入測試。