
我在 VirtualBox 中有一個非常基本的 ArchLinux 設置,我經常將其複製到 USB 記憶棒上以在真機上啟動。在過去的幾個月裡它運行良好,但在上次更新(2018 年10 月8 日)之後,當從USB 記憶棒啟動時,GRUB2 不再識別我的LUKS 加密系統分區,並將我置於緊急shell 中。在該 shell 中運行blkid
表明 GRUB2 甚至無法識別加載它的 USB 記憶棒。
以下是對有效和無效的事情的一些總結,表明問題既不是我的電腦也不是我的 U 盤,而是我的 Arch 系統:
| ArchLinux | Fresh install of
| before update | after update | fresh reinstall | Ubuntu 18.04.1
--------------------------+-----------------+----------------+------------------+--------------------
Booting from virtual hard | worked | works | works | works*
disk in VirtualBox | | | |
--------------------------+-----------------+----------------+------------------+--------------------
Booting from USB | worked | NOT WORKING | NOT WORKING | works*
in VirtualBox | | | |
--------------------------+-----------------+----------------+------------------+--------------------
Booting from USB | worked | NOT WORKING | NOT WORKING | works*
on a computer | | | |
* with and without full disk encryption (LVM on LUKS)
當然,我嘗試透過啟動 Arch-iso、安裝(USB 記憶棒的)所有分區、arch-chroot
進入系統、檢查/etc/mkinitcpio.conf
並/etc/default/grub
運行mkinitcpio -p linux
來解決此問題grub-mkconfig -o /boot/grub/grub.cfg
。仍然無法啟動...我還嘗試使用虛擬硬碟中更新且仍在運行的系統覆蓋 USB 記憶棒,但也沒有成功。
有人知道可能導致此行為的原因或有任何提示我需要在哪裡尋找問題嗎?不可能是磁碟加密,因為更新後虛擬硬碟上的系統仍然可以工作(遺憾的是我沒有更新前的備份)。
更新:使用後備 initramfs 啟動在所有情況下都可以正常工作(vbox、vbox 中的 USB、機器上的 USB)。 mkinitcpio.conf 中可能缺少一些掛鉤。
以下是關於我的Arch 系統的一些細節:它是一個EFI 系統,具有GPT 格式的磁碟,僅包含兩個分割區、一個帶有GRUB2 的200 MiB FAT32 分割區和一個儲存ext4 系統分割區的15.8 GiB LUKS 容器,不涉及LVM。以下是設定檔的摘要。如果您需要更多,請告訴我。
# /etc/mkinitcpio.conf
[...]
HOOKS=(base udev autodetect keyboard keymap modconf block encrypt filesystems fsck)
[...]
# /etc/default/grub
[...]
GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=/dev/disk/by-uuid/UUID_OF_LUKS_CONTAINER:cryptosystem"
GRUB_CMDLINE_LINUX=""
[...]
#GRUB_DISABLE_LINUX_UUID=true
[...]
#GRUB_ENABLE_CRYPTODISK=y
[...]
# /boot/grub/grub.cfg
[...]
linux /vmlinuz-linux root=UUID=UUID_OF_FS_INSIDE_LUKS rw cryptdevice=/dev/disk/by-uuid/UUID_OF_LUKS_FS:cryptosystem quiet
[...]
標籤: USB, arch-linux, grub2
答案1
刪除autodetect
掛鉤解決了問題,現在我可以在不使用後備映像的情況下啟動系統。