Как мне настроить grub для загрузки другой linux-дистрибуции с раздела lvm?

Вопрос или проблема

(У меня больше нет этой настройки, так что я не могу протестировать новые ответы, извините. Мне пришлось сменить компьютер, и теперь я использую только Arch; я оставлю вопрос как есть, так как мне бы хотелось узнать решение, если это повторится, grub был очень недружелюбен ко мне в последние несколько месяцев) У меня Fedora 23 в качестве основной ОС с пользовательским разделением (все физические разделы) /boot/efi=/dev/sda1 root=/dev/sda3. Затем на /dev/sda2 я просто настроил физический раздел LVM, создал группу LVM (arch) и том (root), а затем установил Arch Linux (без загрузчика) на /dev/arch/root.

У меня есть /dev/sda (GPT), /dev/sdb (GPT), и затем grub также, похоже, обнаруживает hd2 и выдает ошибки о том, что не может его загрузить (я предполагаю, что это физический раздел LVM). В любом случае, я использую os-prober и grub2-mkconfig, чтобы обнаружить свою установку Arch, что он успешно делает (и делает это дважды, у меня два пункта меню для него); но когда я пытаюсь загрузить его, я получаю следующие ошибки:

ошибка: сбой чтения сектора 0x0fc с 'hd2'.
ошибка: сбой чтения сектора 0x0e0 с 'hd2'.
ошибка: сбой чтения сектора 0x0 с 'hd2'.
ошибка: не удается найти команду 'linux'.
ошибка: не удается найти команду 'initrd'.

Я получаю ошибки чтения секторов только при первой попытке загрузки (для справки, fsck сообщает, что диск чист). Любые повторные попытки только дают мне ошибки “не удается найти команду”. Вот меню grub.conf:

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Arch (на /dev/mapper/arch-Root)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-38305dfb-279b-4490-948b-480b81fef81f' {
    insmod part_gpt
    insmod lvm
    insmod ext2
    set root="lvmid/6ZmQFy-ijXr-mYra-3Gp9-l0dh-J4Wi-GSHXhd/WGN2VN-t34t-rYWi-kvje-2BfF-WoD4-4NinnP"
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint="lvmid/6ZmQFy-ijXr-mYra-3Gp9-l0dh-J4Wi-GSHXhd/WGN2VN-t34t-rYWi-kvje-2BfF-WoD4-4NinnP"  38305dfb-279b-4490-948b-480b81fef81f
    else
      search --no-floppy --fs-uuid --set=root 38305dfb-279b-4490-948b-480b81fef81f
    fi
    linux /boot/vmlinuz-linux root=UUID=38305dfb-279b-4490-948b-480b81fef81f rw quiet
    initrd /boot/initramfs-linux.img
}

У кого-нибудь есть идеи, как это исправить? Любое решение, которое позволит мне загрузиться в Arch (кроме переустановки загрузчика с Arch вместо Fedora), будет приемлемо; мне не страшно грязными руками редактировать файл grub.cfg вручную.

Я установил Debian без разделения LVM, а рядом с ним установил Fedora, который установился с LVM, когда использовал управляемое разделение на оставшемся пространстве диска. Поскольку Debian был установлен без LVM, он не мог прочитать разделы Fedora, чтобы добавить для них запись grub при выполнении grub2-mkconfig. Что сработало для меня, так это установка пакета lvm2 на Debian и выполнение update-grub.

Вы сказали, что установили Arch без загрузчика. Ошибки, которые вы указали, намекают на то, что валидного загрузочного сектора вообще нет. Если бы я был вами, я бы установил Arch Linux, а затем установил Fedora 23. Установщик Fedora перезапишет загрузочный сектор своим grub, и в худшем случае вы можете использовать пользовательский пункт grub для цепной загрузки Arch.

Я довольно далек от того, чтобы быть экспертом по grub, но я только что заставил свой ноутбук загружаться Windows 7, Solaris 11, CentOS 7 и Ubuntu 14.04 😀 Мне пришлось немного попотеть!

Ответ или решение

Настройка загрузчика GRUB для загрузки другой Linux-дистрибутив на разделе LVM может быть непростой задачей, особенно если у вас возникли проблемы с конфигурацией и обнаружением ваших разделов. В данном руководстве мы рассмотрим шаги по настройке GRUB для вашей системы, основываясь на ситуации с Fedora 23 и Arch Linux, с использованием логического уровня управления (LVM).

1. Убедитесь в корректной установке LVM

Первым делом проверьте, установлен ли пакет lvm2 на вашем дистрибутиве Fedora. Этот пакет необходим для того, чтобы GRUB мог управлять LVM, и он может отсутствовать, если вы устанавливали Arch Linux без загрузчика.

sudo dnf install lvm2

2. Проверьте наличие необходимых модулей GRUB

Убедитесь, что загрузчик GRUB включает необходимые модули для работы с LVM и GPT. Обычно, это модули part_gpt и lvm. Чтобы проверить и добавить их, выполните команду:

grub2-install /dev/sda  # или другой диск, где стоит загрузчик

3. Настройка конфигурации GRUB

Теперь вам нужно настроить конфигурацию GRUB для вашего Arch Linux. Откройте файл конфигурации, обычно это /etc/grub.d/30_os-prober. Убедитесь, что его содержимое соответствует следующему шаблону, и при необходимости отредактируйте пути до вашего ядра и initramfs:

menuentry 'Arch Linux (on LVM)' --class gnu-linux --class gnu --class os {
    insmod part_gpt
    insmod lvm
    insmod ext2
    set root="lvmid/6ZmQFy-ijXr-mYra-3Gp9-l0dh-J4Wi-GSHXhd/WGN2VN-t34t-rYWi-kvje-2BfF-WoD4-4NinnP"
    linux /boot/vmlinuz-linux root=/dev/mapper/arch-root rw quiet
    initrd /boot/initramfs-linux.img
}

Убедитесь, что вы заменили lvmid/... на правильный идентификатор вашего LVM, а root=/dev/mapper/arch-root указывает на правильный корневой раздел.

4. Обновите конфигурацию GRUB

После внесения всех изменений, обновите конфигурацию GRUB:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

5. Перезагрузите и проверьте

Теперь перезапустите компьютер, и вы должны увидеть опцию загрузки для Arch Linux в меню GRUB. Если возникли ошибки, такие как "can’t find command ‘linux’" или "can’t find command ‘initrd’", это может означать, что пути к файлам ядра и initramfs неправильно указаны или ещё не были загружены требуемые модули.

6. Диагностика проблемы

Если после всех шагов Arch Linux все еще не загружается, сделайте следующее:

  • Проверьте, действительно ли установлены необходимые модули с помощью ls /boot для поиска vmlinuz-linux и initramfs-linux.img.
  • Убедитесь, что ваш LVM настроен верно, выполнив команду lvdisplay для проверки логических объемов.
  • Если GRUB все еще показывает ошибки, попробуйте временно загрузить Arch Linux с Live USB и перепроверить все настройки.

Следуя этому руководству, вы сможете конфигурировать GRUB для загрузки другой Linux-дистрибутив с LVM. Если проблемы останутся, возможно, стоит рассмотреть возможность переустановки GRUB из Arch или использования загрузчика, который уже установлен на другом разделе.

Оцените материал
Добавить комментарий

Капча загружается...