Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

新內核編譯後無法掛載根分區:reiserfsck 訊號 6 錯誤排查實錄

編輯:Linux 教學

故障現場

  • 原內核:RH9 預設 2.4.20
  • 新內核:2.4.20 打補丁至 2.4.21-pre6
  • 分區佈局:單 / (reiserfs, /dev/hdb3) + swap (/dev/hdb4)
  • reiserfs 已編譯內建 (Y),非模組
  • GRUB 配置正確指向 root=/dev/hdb3

錯誤訊息


VFS: Cannot open root device "hdb3" or unknown-block(0,0)
...
reiserfsck could not open filesystem on /dev/hdb3
fsck.reiserfs for device exited with signal 6

關鍵配置檢視

/etc/fstab


/dev/hdb3 / reiserfs defaults 1 1
/dev/hdb4 swap swap defaults 0 0

/boot/grub/grub.conf


default=1
timeout=10
splashimage=(hd1,2)/boot/grub/splash.xpm.gz

title Red Hat Linux (2.4.21-pre6)
root (hd1,2)
kernel /boot/vmlinuz-2.4.21-pre6 ro root=/dev/hdb3 hdc=ide-scsi hdd=ide-scsi
initrd /boot/initrd-2.4.21-pre6.img

title Red Hat Linux (2.4.20-8)
root (hd1,2)
kernel /boot/vmlinuz-2.4.20-8 ro root=/dev/hdb3 hdc=ide-scsi hdd=ide-scsi
initrd /boot/initrd-2.4.20-8.img

排查思路與可能成因

1. IDE/SCSI 模擬參數干擾

hdc=ide-scsi hdd=ide-scsi 會將 IDE 光碟/燒錄器模擬為 SCSI 裝置,可能導致 IDE 磁碟編號漂移或驅動載入順序改變。
建議:新內核測試時移除此兩參數,或確認 CONFIG_BLK_DEV_IDESCSI 設為 M 並由 initrd 載入。

2. initrd 缺少 reiserfs / IDE 控制器模組

雖然 reiserfs 設為 Y,但若根分區所在的 IDE 控制器驅動 (如 piix、via82cxxx) 為 M,且 initrd 未包含該模組,內核無法存取磁碟。
驗證:lsinitrd /boot/initrd-2.4.21-pre6.img | grep -E '(reiserfs|ide|piix|via)'。
對策:將 IDE 控制器驅動設為 Y,或重建 initrd:mkinitrd -f /boot/initrd-2.4.21-pre6.img 2.4.21-pre6。

3. 磁碟裝置命名變更 (hdb vs sdb)

2.4 內核啟用 CONFIG_IDE 時裝置為 hda/hdb;若誤啟用 CONFIG_SCSI + CONFIG_BLK_DEV_SD 且 IDE 控制器由 SCSI 中層接管,裝置可能變為 sda/sdb。
對策:內核配置確保 CONFIG_IDE=y、CONFIG_BLK_DEV_IDE=y、對應晶片組驅動 =y;CONFIG_SCSI 僅在有真實 SCSI/SATA 裝置時啟用。

4. reiserfs 超級塊損壞或版本不匹配

signal 6 (SIGABRT) 通常源於 reiserfsck 內部斷言失敗。可能原因:
① 內核 reiserfs 代碼與磁碟上檔案系統版本不兼容(2.4.21-pre6 引入新格式)。
② 磁碟確有壞塊(雖用戶聲稱無壞道)。
驗證:用原內核 (2.4.20) 啟動,執行 reiserfsck --check /dev/hdb3;若通過,說明新內核 reiserfs 代碼有問題。

5. GRUB root 裝置映射錯誤

root (hd1,2) 對應 /dev/hdb3 (第 2 顆硬碟第 3 分區)。若 BIOS 磁碟順序與 Linux 偵測順序不一致,可能映射錯誤。
驗證:GRUB 命令列下 geometry (hd1) 確認分區表。

建議解決步驟

  1. 簡化內核參數:移除 hdc=ide-scsi hdd=ide-scsi,重建 initrd。
  2. 確認 IDE 控制器驅動內建:make menuconfig → Device Drivers → ATA/ATAPI/MFM/RLL support → 對應晶片組 [*]。
  3. 重建 initrd:mkinitrd -f /boot/initrd-2.4.21-pre6.img 2.4.21-pre6。
  4. 若仍失敗:暫時在 GRUB 參數加入 root=/dev/hdb3 rootfstype=reiserfs 強制指定。
  5. 最終手段:對比 .config 與原內核 config-2.4.20-8,逐項核對儲存/IDE/檔案系統選項。

避坑總結

  • 舊版內核 (2.4 系列) 對 IDE/SCSI 驅動載入順序極度敏感,根分區驅動務必內建 (Y)。
  • 打補丁升級內核版本時,務必 make mrproper 後再配置,避免舊 .config 殘留導致選項衝突。
  • reiserfs 在 2.4 後期版本有較多變更,生產環境建議改用 ext3/xfs 或升級至 2.6+ 內核。
  • 保留可用的舊內核 GRUB 項目,確保回滾路徑暢通。
Copyright © Windows教程網 All Rights Reserved