Załaduj dwie instalacje Grub2


14

To mnie naprawdę denerwuje. Mam Gentoo i Ubuntu, oba z Grub2. Gentoo ma dedykowaną /bootpartycję, podczas gdy Ubuntu nie. Mam menuentryGentoo /etc/grub.d/40_customdo uruchomienia Ubuntu (a Ubuntu uruchamia się OK).

Ponieważ Ubuntu zawiera Grub, chcę do niego załadować, zamiast utrzymywać mój wpis, który ustawia root, jądro, initrd i inne. Oto, co mam dla programu ładującego łańcuch (Ubuntu jest włączony /dev/sda4i już tam zainstalowałem Grub):

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

Daje mi error: Invalid signaturei nie znalazłem rozwiązania. Czy ktoś może coś wskazać?

To wynik </dev/sda4 head -c 512 | hd

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

To wynik fdisk -l. /dev/sda1jest /bootz Gentoo, Gentoo jest w /dev/sda2, Ubuntu jest w /dev/sda4. Ubuntu też /bootjest /dev/sda4gotowe.

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

Nie ma błędu z 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.

Najwyraźniej nie zainstalowałeś bootloadera /dev/sda4. Czy masz więcej niż jeden dysk? Jaka jest twoja tabela partycji? Proszę zamieścić dane wyjściowe fdisk -li wiadomości z grub-install /dev/sda4 --no-floppy --force.
Gilles „SO- przestań być zły”

tak, zaktualizowałem pytanie
phunehehe

Odpowiedzi:


4

Możesz załadować GRUB2 z GRUB2, po prostu wypróbowałem go w sposób opisany i działa. Jednak podane informacje sprawiają, że wygląda na to, że obraz rozruchowy nie został osadzony w MBR dysku (inaczej nie byłyby to same zera).

Spróbowałbym tego, chociaż nie używa GRUB2 z Ubuntu (tylko plik konfiguracyjny). Możesz utworzyć pozycję menu w pliku konfiguracyjnym Gentoo GRUB2, który ładuje plik konfiguracyjny Ubuntu. Są dwa sposoby, aby to zrobić.

Ten, którego użyłbym, to normalne polecenie, które pozwala określić plik konfiguracyjny do załadowania w trybie normalnym. Jeśli pójdziesz tą drogą, istnieje polecenie o nazwie normal_exit, które możesz dodać jako niestandardowy element w konfiguracji Ubuntu, który pozwoli ci powrócić do konfiguracji Gentoo.

Inną opcją jest polecenie configfile , które pozwala określić alternatywny plik konfiguracyjny do załadowania. Wydaje się jednak, że trudniej byłoby „wycofać się” z tej opcji.

Więcej informacji na temat tych poleceń można znaleźć tutaj .


3

Początkowa część procesu rozruchu polega na załadowaniu kodu z pierwszego sektora dysku twardego, tzw. Master Boot Record (MBR) . Zwykle Grub jest zapisywany w tym pierwszym sektorze dysku twardego, a nie w pierwszym sektorze wstrzymania / rozruchu partycji. Można to jednak normalnie zmienić podczas instalacji Linuksa, ale w nowoczesnych procedurach instalacyjnych jest to często ukryte.

Mówisz, że masz gruba zainstalowanego na / dev / sda4, jednak twoja konfiguracja wygląda poprawnie, a wysłany komunikat o błędzie sugeruje, że Grub może nie być poprawnie zainstalowany na partycji, którą chcesz załadować. Powinieneś uruchomić system na Gentoo, a następnie chroot na partycję Ubuntu. Upewnij się, że / boot poprawnie wskazuje teraz Ubuntu- / boot, a nie Gentoo! Teraz zainstalować Grub 2 w pierwszym sektorze partycji Ubuntu / dev / sda4: grub-install /dev/sda4 --no-floppy.

Jak zawsze, majstrując przy MBR i partycjach, przed rozpoczęciem upewnij się, że masz funkcjonalną i aktualną kopię zapasową.


czy robi to różnicę, jeśli uruchomię system Ubuntu i uruchomię grub-install? bo tak właśnie zrobiłem i to nie działa :(
phunehehe 14.10.10

Myślałem, że nie możesz uruchomić systemu Ubuntu, ponieważ ładowanie łańcuchowe nie działa? Ale nie, nie powinno to mieć znaczenia, jeśli uruchomisz system Ubuntu lub uruchomisz na nim chroot.
fschmitt

@phunehehe: Komunikat o błędzie oznacza, że ​​Grub nie znalazł sygnatury programu ładującego w pierwszym sektorze /dev/sda4(ostatnie dwa bajty muszą być 0x55 0xaa). Czy możesz opublikować wynik </dev/sda4 head -c 512 | hd?
Gilles „SO- przestań być zły”

@Gilles: Dodałem wynik do pytania. Nie wygląda poprawnie, prawda?
phunehehe

właściwie muszę biec grub-install /dev/sda4 --no-floppy --force, w przeciwnym razie będą jakieś skargi na listy
blokujące

-1

Czy sda4 nie będzie (hd0,3) w grub, czy też coś takiego zmieniło się w grub2?


tak, jestem pewien, że / dev / sda4 stanie się (hd0,4), ponieważ tego właśnie użyłem do uruchomienia Ubuntu
phunehehe 14.10.10

3
Tak, Grub 0.97 zaczął zliczać dyski twarde i partycje z 0. Grub 2 nadal zaczyna zliczać dyski z 0, ale zaczyna zliczać partycje z 1. Więc / dev / sda4 ma hd0,3 w Grub 0.97 i hd0,4 w Grub 2.
fschmitt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.