
У меня довольно простая установка ArchLinux в VirtualBox, которую я регулярно копирую на USB-накопитель для загрузки на реальной машине. Все работало нормально в течение последних нескольких месяцев, но после последнего обновления (8 октября 2018 г.) GRUB2 больше не распознает мой системный раздел, зашифрованный LUKS, при загрузке с USB-накопителя и перебрасывает меня в аварийную оболочку. Запуск blkid
в этой оболочке показывает, что GRUB2 даже не распознает USB-накопитель, с которого он загружается.
Вот небольшой обзор того, что работает (работало) и что не работает, предполагающий, что проблема не в моем компьютере или USB-накопителе, а в моей системе 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, смонтировав все разделы (флешки), arch-chroot
войдя в систему, проверив /etc/mkinitcpio.conf
и /etc/default/grub
запустив . Загрузка все равно невозможна... Я также попытался перезаписать флешку обновленной и все еще работающей системой с виртуального жесткого диска, но mkinitcpio -p linux
тоже grub-mkconfig -o /boot/grub/grub.cfg
безуспешно.
Есть ли у кого-нибудь подсказка, что может быть причиной такого поведения, или какие-либо указания, где мне следует искать проблемы?Это не может быть связано с шифрованием диска, поскольку система на виртуальном жестком диске все еще работает после обновления (и, к сожалению, у меня нет резервной копии до обновления).
ОБНОВЛЯТЬ:Загрузка с резервным initramfs работает нормально во всех случаях (vbox, usb в vbox, usb на машине). Возможно, в mkinitcpio.conf отсутствуют некоторые хуки.
Вот некоторые подробности о моей системе Arch: это система EFI с диском в формате GPT, содержащим всего два раздела, раздел FAT32 размером 200 МБ с GRUB2 на нем и контейнер LUKS размером 15,8 ГиБ, содержащий системный раздел ext4, без участия 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
хука решает проблему, теперь я могу загрузить систему без использования резервного образа.