initramfs 中的空 fstab 引導問題
我最近從 USB 重新安裝了我的 Linux Mint 19.2,一切正常。但是,在啟動系統時,它會卡在 initramfs 中。以上狀態的錯誤消息
Mount: mounting /dev on /root/dev failed: no such file or directory Mount: mounting /run on /root/run failed: no such file or directory run-init: opening console: No such file or directory Target: filesystem doesn't have requested /sbin/init. Try passing init= bootarg.
從 initramfs 我對我的根分區 sda2 進行了 fsck,結果很乾淨。我用 e2fsck 重複了它,結果相同。我再次啟動到 USB 上的 Live-System,安裝了 sda1(我的 EFI 啟動分區)和 sda2,並檢查了 grub 和 fstab 中的 UUID 值是否一致。現在我再次陷入 initramfs 並查看 /etc 的內容,發現 fstab 的大小為 0 字節。
(initramfs) ls -la /etc/fs* -rw-r--r-- 1 0 /etc/fstab
因此掛載 /dev/sda2 是不可能的(在 fstab 中沒有條目)。現在,我不確定此時是否應該包含任何內容,因為這顯然不是位於 /etc 中 /dev/sda2 上的 fstab,但坦率地說,我不知道還有什麼可能導致系統沒有找到根分區,當 grub 和 fstab 從 live 系統中看到時似乎沒問題。
順便說一句,這是我第一次在具有 EFI 的系統上安裝,其 EFI 引導分區 (vfat) 為 1GB (sda1)。我確保在安裝之前以 EFI 模式啟動到實時系統(實際上我在 BIOS 中禁用了傳統模式,因此它只會顯示 EFI 可啟動作業系統)。是否有任何其他設置我應該知道可能導致系統找不到它的根分區?在 init= 之後我可能會傳遞給引導載入程序的值是多少?
如果這有助於確定這裡有什麼問題,請隨時詢問其他資訊。謝謝!
補充:在 sda1 上,/EFI/ubuntu 中有一個 grub.cfg,內容如下:
search.fs_uuid 734be585-8baf-408e-850a-69555c89c955 root hd0,gpt2 set prefix=($root)'/boot/grub' configfile $prefix/grub.cfg
在 /boot/grub 文件夾中的 sda2 上有引用的 grub.cfg,其中包含以下內容:
export linux_gfx_mode menuentry 'Linux Mint 19.2 Cinnamon' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-734be585-8baf-408e-850a-69555c89c955' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_gpt insmod ext2 set root='hd0,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 734be585-8baf-408e-850a-69555c89c955 else search --no-floppy --fs-uuid --set=root 734be585-8baf-408e-850a-69555c89c955 fi linux /boot/vmlinuz-4.15.0-54-generic root=UUID=734be585-8baf-408e-850a-69555c89c955 ro ignore_bootid live-media-path=/multibootusb/linuxmint-19.2-cinnamon-64bit/casper floppy.allowed_drive_mask=0 ignore_uuid root=UUID=759A-1D86 quiet splash $vt_handoff initrd /boot/initrd.img-4.15.0-54-generic }
sda 的 blkid 提供以下資訊:
/dev/sda1: UUID="EE9A-4B64" TYPE="vfat" PARTLABEL="boot" PARTUUID="33a95580-f254-4f54-937e-143da0e1e37c" /dev/sda2: LABEL="/" UUID="734be585-8baf-408e-850a-69555c89c955" TYPE="ext4" PARTLABEL="/" PARTUUID="92a4ec7f-d1f6-441b-abdf-0bc0a9970d0b" /dev/sda4: LABEL="home" UUID="7b3b371b-6447-4e33-822d-d2535215b863" TYPE="ext4" PARTUUID="70686b24-b09d-4f83-a715-73fb1e4224d1"
sda3應該是swap分區,不知道這裡不出現是否正常。
在啟動過程中,直到 grub 之前我都很好。只有在選擇了上述條目或隨附的“擴展選項”條目之後,我才會以 initramfs 而不是登錄名結束。
Mount: mounting /dev on /root/dev failed: no such file or directory Mount: mounting /run on /root/run failed: no such file or directory run-init: opening console: No such file or directory Target: filesystem doesn't have requested /sbin/init.
看起來像正在掛載的任何內容,因為根文件系統沒有正確的掛載點目錄……
這是引導條目的核心行,為清楚起見,每個引導選項都位於單獨的行中。
linux /boot/vmlinuz-4.15.0-54-generic \ root=UUID=734be585-8baf-408e-850a-69555c89c955 \ ro \ ignore_bootid \ live-media-path=/multibootusb/linuxmint-19.2-cinnamon-64bit/casper \ floppy.allowed_drive_mask=0 \ ignore_uuid \ root=UUID=759A-1D86 \ quiet \ splash
現在您可能會看到:您有兩個
root=
選擇。後者將覆蓋前者。並且基於第二個“UUID”的簡短性,看起來你最終會嘗試使用一些 FAT 文件系統作為你的根文件系統。不過,這不是你的/dev/sda1
。
live-media-path
如果您嘗試啟動已完全安裝在 HDD 上的作業系統,該選項看起來也很奇怪。第一個
root=UUID=734be585-8baf-408e-850a-69555c89c955
正確地引用了您的 UUID/dev/sda2
,因此它是正確的。我的猜測是,這
root=UUID=759A-1D86
可能是指您安裝系統的 USB。UEFI 引導載入程序的安裝過程可能出錯:它無法辨識這是從安裝介質root=UUID=759A-1D86
引導的選項的一部分,不應將其複製到完成的安裝中。如果存在,您應該從您的引導選項中刪除
root=UUID=759A-1D86
並且可能也live-media-path=/multibootusb/linuxmint-19.2-cinnamon-64bit/casper
從其中刪除,即 from/boot/grub/grub.cfg
和 from/etc/default/grub
in/dev/sda2
。前者應該解決眼前的問題;後者應該可以防止在您安裝核心更新或update-grub
出於任何其他原因執行時再次發生該問題。
/multibootusb
選項中的選項讓我覺得您可能已經使用MultiBootUSBlive-media-path=
之類的東西完成了安裝,而不是使用“香草”Mint 19.2 安裝介質。此類自動化解決方案需要重建引導載入程序配置以建構其引導菜單,並且並不總是能夠完美地做到這一點。
ignore_uuid
用於casper
未與安裝了 HDD 的作業系統一起使用的實時媒體實用程序,並且ignore_bootid
似乎也與casper
. 只是告訴核心跳過磁片驅動器檢測,這floppy.allowed_drive_mask=0
在通常情況下可能會加快啟動速度大約 3 秒左右。(在一些具有非傳統磁片驅動器設置的舊筆記型電腦上,可能需要防止啟動時掛起。)您很可能會刪除所有這三個引導選項,但為了安全起見,當系統在 GRUB 引導菜單中時,按下
E
以編輯目前引導條目(僅針對此特定引導)並刪除那裡的那些引導選項。如果您可以成功啟動,您知道您可以從實際配置文件中刪除它們 - 如果系統在沒有這些選項的情況下在啟動時掛起,只需重置系統,它將再次正常啟動。