Загрузка двух установок Grub2

14

Это действительно меня расстраивает. У меня есть Gentoo и Ubuntu, оба с Grub2. Gentoo имеет выделенный /bootраздел, а Ubuntu - нет. У меня есть menuentryв Gentoo /etc/grub.d/40_customдля загрузки Ubuntu (и Ubuntu загружается нормально).

Поскольку Ubuntu поставляется с Grub, я хочу добавить туда цепочку, вместо того, чтобы поддерживать мою запись, которая устанавливает root, kernel, initrd и прочее. Вот что у меня есть для загрузчика цепочек (Ubuntu включена, /dev/sda4и я уже установил Grub там):

menuentry 'Chainloader' {
    insmod chain
    set root=(hd0,4)
    chainloader +1
}

Это дает мне, error: Invalid signatureи я не нашел доступного решения. Кто-то может указать на что-то?

Это результат </dev/sda4 head -c 512 | hd

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

Это результат fdisk -l. /dev/sda1есть /bootGentoo, есть Gentoo, есть /dev/sda2Ubuntu /dev/sda4. У Убунту тоже /bootесть /dev/sda4.

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe001152b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           9       72261   83  Linux
/dev/sda2              10       13064   104864287+  8e  Linux LVM
/dev/sda4   *       18152       19457    10490445   83  Linux

Там нет ошибки с grub-install /dev/sda4 --no-floppy --force

/usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea..
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.
phunehehe
источник
Очевидно, вы не установили загрузчик /dev/sda4. У вас есть более одного диска? Какая у вас таблица разделов? Пожалуйста, опубликуйте результаты fdisk -lи сообщения от grub-install /dev/sda4 --no-floppy --force.
Жиль "ТАК - перестань быть злым"
да, я обновил вопрос
phunehehe

Ответы:

4

Вы можете загружать GRUB2 из GRUB2, я только что попробовал, как вы описали, и он работает. Однако из-за предоставленной вами информации создается впечатление, что загрузочный образ не был встроен в MBR диска (или это были бы не все нули).

Я бы попробовал это, хотя он не совсем использует GRUB2 из Ubuntu (просто это файл конфигурации). Вы можете создать пункт меню в файле конфигурации Gentoo GRUB2, который загружает файл конфигурации Ubuntu. Есть два способа сделать это.

Тот, который я использовал бы, с нормальной командой, которая позволяет вам указать файл конфигурации для загрузки в обычном режиме. Если вы идете по этому пути, есть команда normal_exit, которую вы можете добавить в качестве пользовательского элемента в вашей конфигурации Ubuntu, которая позволит вам вернуться к вашей конфигурации Gentoo.

Другой вариант - команда configfile , которая позволяет вам указать альтернативный файл конфигурации для загрузки. Кажется, что было бы сложнее «отказаться» от этой опции, хотя.

Более подробную информацию об этих командах можно найти здесь .

silvein
источник
3

Начальная часть процесса загрузки состоит из загрузки кода из первого сектора жесткого диска, так называемой основной загрузочной записи (MBR) . Обычно Grub записывается в этот первый сектор жесткого диска, а не в первый сектор раздела, в котором хранится / загружается. Однако вы можете изменить это во время установки Linux, но в современных процедурах установки это часто скрыто.

Вы говорите, что у вас установлен Grub в / dev / sda4, однако ваш конфиг выглядит корректно, а выложенное сообщение об ошибке наводит на мысль, что Grub может быть неправильно установлен в раздел, который вы хотите загрузить по цепочке. Вы должны загрузиться в Gentoo, затем выполнить chroot в разделе Ubuntu. Убедитесь, что / boot теперь правильно указывает на Ubuntu- / boot, а не на Gentoo! Теперь установите Grub 2 в первый сектор Ubuntu-Partition / DEV / sda4: grub-install /dev/sda4 --no-floppy.

Как всегда при работе с MBR и разделами, убедитесь, что у вас есть функциональная, актуальная резервная копия, прежде чем начать.

fschmitt
источник
имеет ли значение, если я загружаюсь в Ubuntu и запускаю grub-install? потому что это то, что я сделал, и это не работает :(
phunehehe
Я думал, что вы не можете загрузиться в Ubuntu, потому что не работает загрузка по цепочке? Но нет, это не должно иметь значения, если вы загрузитесь в Ubuntu или загрузитесь в него.
fschmitt
@phunehehe: Сообщение об ошибке означает, что Grub не обнаружил подпись загрузчика в первом секторе /dev/sda4(последние два байта должны быть 0x55 0xaa). Не могли бы вы опубликовать вывод </dev/sda4 head -c 512 | hd?
Жиль "ТАК - перестать быть злым"
@ Жиль: я добавил результат к вопросу. Не выглядит правильно, не так ли?
phunehehe
на самом деле я должен бежать grub-install /dev/sda4 --no-floppy --force, в противном случае будут некоторые жалобы на блок-листы
phunehehe
-1

Разве sda4 не будет (hd0,3) в grub или такие вещи изменились в grub2?

Нил
источник
да, я уверен, что / dev / sda4 станет (hd0,4), потому что это то, что я использовал для загрузки Ubuntu
phunehehe
3
Да, Grub 0.97 начал считать жесткие диски и разделы с 0. Grub 2 все еще начинает считать диски с 0, но начинает считать разделы с 1. Таким образом, / dev / sda4 равен hd0,3 в Grub 0.97 и hd0,4 в Grub 2.
fschmitt