Вопрос или проблема
У меня есть установка Arch Linux с использованием LVM, которую я обновлял нормально в течение нескольких лет до двух недель назад. Когда я обновился две недели назад, я запустил команду lvremove для старого снимка моего корневого тома, и команда зависла. Я выключил машину, и с тех пор она не загружается. Я только что загрузился через live USB, чтобы попытаться понять, что происходит. Вывод fdisk -l показывает /dev/nvme0n1 (это мой единственный диск) с разделами p1, p2, p3, где p1 – это мой EFI-раздел, p2 – загрузочный раздел, а p3 – это LVM-раздел.
Поэтому я сделал следующее после загрузки в live USB, чтобы смонтировать и выполнить chroot в свою систему:
vgchange -ay
mount /dev/vg0/lv_root /mnt
mount /dev/nvme0n1p2 /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot/efi
mount /dev/vg0/lv_home /mnt/home
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt /bin/bash
Внутри все выглядит “нормально” (то есть, в моем домашнем каталоге все файлы, в основном так, как если бы я загрузился нормально). Поскольку я не знаю, почему система не загружается, я попытался переустановить grub с помощью grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck
, но эта команда выдает ошибку:
”
Переменные EFI не поддерживаются в этой системе
Переменные EFI не поддерживаются в этой системе
grub-install: ошибка: efibootmgr не удалось зарегистрировать загрузочный элемент: Нет такого файла или каталога
“
(да, первое сообщение об ошибке появляется дважды). Во-первых, выполнение grub-install похоже на метод “угадай и проверяй” (но я не знаю, что еще попробовать)… и во-вторых, когда я гуглил эту ошибку, большинство результатов предполагают, что я, возможно, загрузился в режиме совместимости, но я вижу значение 64, если выполню cat /sys/firmware/efi/fw_platform_size
, так что я знаю, что это не так (и когда я загрузился в живую среду, она также показала UEFI в скобках), поэтому я не понимаю, почему я не могу выполнить grub-install (я не уверен, что это исправит ситуацию, но стоит попробовать, так как я не знаю, что еще проверить).
Редактирование 1:
Нашел эту тему Переменные EFI не поддерживаются в этой системе и заставил grub-install выполниться, передав флаг --no-nvram
, затем выполнил grub-mkconfig -o /boot/grub/grub.cfg
(не заметил особой разницы в сгенерированном grub.cfg по сравнению с предыдущим). К сожалению, все равно не могу загрузиться, когда я пытаюсь загрузиться с моего диска, он сразу возвращается в меню BIOS, не знаю, как узнать “ошибки” того, что происходит…
Ответ или решение
Проблема с загрузкой Arch Linux и установка GRUB из среды chroot
Проблема, с которой вы столкнулись, связана с неправильно настроенным загрузчиком GRUB после неудачного удаления снимка логического тома. Это могло привести к повреждению конфигурации загрузчика и утрате возможности его дальнейшей установки. Давайте рассмотрим все возможные шаги для решения данной проблемы.
Шаг 1: Подготовка к chroot
Ваши начальные действия по загрузке с Live USB и изменения состояния логических томов через vgchange -ay
были верными. Вы правильно монтируете необходимые файловые системы:
mount /dev/vg0/lv_root /mnt
mount /dev/nvme0n1p2 /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot/efi
mount /dev/vg0/lv_home /mnt/home
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt /bin/bash
Эти команды обеспечили корректный переход в среду вашего установленного Arch Linux.
Шаг 2: Установка GRUB
Ошибка, с которой вы столкнулись lors выполнения команды grub-install
, указывает на проблемы с доступом к EFI-переменным. Практически, это может произойти из-за:
-
Неисправной конфигурации UEFI: Проверьте, действительно ли ваше устройство загружается в UEFI-режиме. Вы можете использовать команду
ls /sys/firmware/efi/efivars
, чтобы убедиться, что EFI-переменные доступны. -
Настройки BIOS/UEFI: Убедитесь, что в настройках BIOS вашего компьютера установлен режим UEFI, а не Legacy или CSM (Compatibility Support Module).
Решение ошибки с установкой GRUB
Вы уже нашли способ обойти проблему с EFI-переменными, используя флаг --no-nvram
. Это приемлемый временный шаг, но важно понимать, что GRUB, вероятно, не регистрирует вашу загрузочную запись в NVRAM из-за вышеупомянутых ограничений. Попробуйте выполнить следующие команды после установки GRUB:
grub-mkconfig -o /boot/grub/grub.cfg
После выполнения команд проверьте содержимое /boot/grub/grub.cfg
. Убедитесь, что настройки вашего ядра и файловой системы корректны.
Шаг 3: Проверка конфигурации GRUB
Убедитесь, что в файле конфигурации /boot/grub/grub.cfg
указаны правильные параметры для загрузки. Иногда GRUB может отсутствовать при загрузке из-за неверных путей к ядру или образу initramfs.
Примерный блок инициализации:
menuentry 'Arch Linux' {
set root='hd0,gpt2'
linux /vmlinuz-linux root=/dev/vg0/lv_root rw
initrd /initramfs-linux.img
}
Шаг 4: Устранение неполадок
Если после выполнения всех вышеуказанных шагов система по-прежнему не загружается и возвращает в меню BIOS, рассмотрите следующие действия:
-
Запуск системы в безопасном режиме: Попробуйте загрузить систему с помощью дополнительных параметров (например,
nomodeset
). -
Проверка блокировок томов: Используйте
lvscan
иvgscan
для проверки состояния логических томов. -
Проверка ошибок: Зайдите в
journalctl
после попытки загрузки через Live USB для получения детализированной информации об ошибках.
Заключение
Данное руководство должно помочь вам определить и устранить проблемы с загрузкой Arch Linux и установкой GRUB. Возможно, потребуется немного детальным изучением конфигурации BIOS/UEFI и GRUB. Если после выполнения всех шагов система все еще не загружается, рассмотрите возможность создания резервной копии данных и переустановки системы.