Вопрос или проблема
(У меня больше нет этой настройки, так что я не могу протестировать новые ответы, извините. Мне пришлось сменить компьютер, и теперь я использую только 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 или использования загрузчика, который уже установлен на другом разделе.