Завантажте дві установки Grub2


14

Це справді мене збиває. У мене є Gentoo та Ubuntu, обидва з Grub2. У Gentoo є виділений /bootрозділ, а Ubuntu - ні. У мене є menuentryGentoo /etc/grub.d/40_customдля завантаження Ubuntu (і Ubuntu завантажує OK).

Оскільки Ubuntu поставляється з Grub, я хочу запустити ланцюжок у цю, замість того, щоб підтримувати свій запис, який встановлює корінь, ядро, 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знаходиться /bootв Gentoo, Gentoo знаходиться в /dev/sda2, Ubuntu знаходиться в /dev/sda4. Ubuntu це /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.

Очевидно, що ви не встановили завантажувач /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 , яка дозволяє задати альтернативний файл конфігурації для завантаження. Схоже, було б важче "відмовитися" від цього варіанту, хоча.

Більше інформації про ці команди можна знайти тут .


3

Початкова частина процесу завантаження складається з завантаження коду з першого сектора жорсткого диска, так званого Master Boot Record (MBR) . Зазвичай Grub записується в цей перший сектор жорсткого диска, а не в перший сектор утримування / завантаження розділів. Тим не менш, ви можете звичайно змінити це під час встановлення Linux, але в сучасних процедурах установки це часто приховується.

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

Як завжди, коли ви знайдете MBR та розділи, перед початком роботи переконайтесь, що у вас є функціональна, сучасна резервна копія.


чи має значення, якщо я завантажуюся в Ubuntu і запускаю grub-install? Тому що це я зробив, і це не працює :(
phunehehe

Я думав, ви не можете завантажуватися в Ubuntu, оскільки завантаження ланцюга не працює? Але ні, це не повинно змінити значення, якщо ви завантажуєтесь в Ubuntu або chroot в нього.
fschmitt

@phunehehe: Повідомлення про помилку означає, що Grub не знайшов підпису завантажувача в першому секторі /dev/sda4(останні два байти повинні бути 0x55 0xaa). Чи можете ви розмістити вихід </dev/sda4 head -c 512 | hd?
Жил "ТАК - перестань бути злим"

@Gilles: Я додав результат до питання. Це не виглядає правильно, чи не так?
phunehehe

насправді мені доведеться бігти grub-install /dev/sda4 --no-floppy --force, інакше будуть скарги на
блокові списки

-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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.