Carica a catena due installazioni di Grub2


14

Questo mi sta davvero abbattendo. Ho Gentoo e Ubuntu, entrambi con Grub2. Gentoo ha una /bootpartizione dedicata , mentre Ubuntu no. Ho un menuentryin Gentoo /etc/grub.d/40_customper avviare Ubuntu (e Ubuntu si avvia OK).

Poiché Ubuntu viene fornito con Grub, voglio caricarlo in quello, invece di mantenere la mia voce che imposta root, kernel, initrd e cose simili. Questo è quello che ho per il chainloader (Ubuntu è acceso /dev/sda4e ho già installato Grub lì):

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

Mi sta dando error: Invalid signaturee non ho trovato alcuna soluzione disponibile. Qualcuno può indicare qualcosa?

Questo è il risultato di </dev/sda4 head -c 512 | hd

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

Questo è il risultato di fdisk -l. /dev/sda1è /bootdi Gentoo, Gentoo è dentro /dev/sda2, Ubuntu è dentro /dev/sda4. Anche Ubuntu /bootè presente /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

Non ci sono errori con 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.

Chiaramente non hai installato un bootloader /dev/sda4. Hai più di un disco? Qual è la tua tabella delle partizioni? Si prega di pubblicare l'output di fdisk -le i messaggi da grub-install /dev/sda4 --no-floppy --force.
Gilles 'SO- smetti di essere malvagio' il

sì, ho aggiornato la domanda
phunehehe,

Risposte:


4

Puoi caricare GRUB2 a catena da GRUB2, l'ho appena provato come descritto e funziona. Tuttavia, le informazioni fornite fanno sembrare che l'immagine di avvio non sia stata incorporata nell'MBR del disco (o non sarebbe tutta a zero).

Vorrei provare questo, anche se non utilizza esattamente GRUB2 da Ubuntu (è solo il file di configurazione). Puoi creare una voce di menu nel file di configurazione di Gentoo GRUB2 che carica il file di configurazione di Ubuntu. Ci sono due modi in cui vedo farlo.

Quello che vorrei usare è con il comando normale , che consente di specificare un file di configurazione da caricare per la modalità normale. Se segui questa strada, c'è un comando chiamato normal_exit che potresti aggiungere come elemento personalizzato nella tua configurazione di Ubuntu che ti permetterebbe di tornare alla tua configurazione di Gentoo.

L'altra opzione è il comando configfile , che consente di specificare un file di configurazione alternativo da caricare. Sembra però che sarebbe più difficile "ritirarsi" da questa opzione.

Ulteriori informazioni su questi comandi sono disponibili qui .


3

La parte iniziale del processo di avvio consiste nel caricamento del codice dal primo settore del disco rigido, il cosiddetto Master Boot Record (MBR) . Normalmente, Grub è scritto in questo primo settore del disco rigido e non nel primo settore della partizione holding / boot. Tuttavia, è possibile modificarlo normalmente durante l'installazione di Linux, ma nelle routine di installazione moderne, questo è spesso nascosto.

Dici di avere Grub installato in / dev / sda4, tuttavia la tua configurazione sembra corretta e il messaggio di errore che hai postato suggerisce che Grub potrebbe non essere installato correttamente nella partizione che vuoi caricare in catena. Dovresti avviare Gentoo, quindi chroot nella partizione Ubuntu. Assicurati che / boot ora punti correttamente su Ubuntu- / boot e non su Gentoo! Ora installare Grub 2 nel primo settore del Ubuntu-partizione / dev / sda4: grub-install /dev/sda4 --no-floppy.

Come sempre quando giocherelli con MBR e partizioni, assicurati di avere un backup funzionale e aggiornato prima di iniziare.


fa differenza se avvio in Ubuntu ed eseguo grub-install? perché è quello che ho fatto e non funziona :(
phunehehe

Pensavo che non fosse possibile avviare Ubuntu perché il chainloading non funziona? Ma no, non dovrebbe fare la differenza se avvii Ubuntu o ti chroot.
fschmitt,

@phunehehe: il messaggio di errore indica che Grub non ha trovato una firma del bootloader nel primo settore di /dev/sda4(gli ultimi due byte devono essere 0x55 0xaa). Potresti pubblicare l'output di </dev/sda4 head -c 512 | hd?
Gilles 'SO- smetti di essere malvagio' il

@Gilles: ho aggiunto il risultato alla domanda. Non sembra corretto, vero?
phunehehe,

in realtà devo correre grub-install /dev/sda4 --no-floppy --force, altrimenti ci saranno alcune lamentele sulle blocklist
phunehehe,

-1

Sda4 non sarà (hd0,3) in grub, o questo genere di cose è cambiato in grub2?


sì, sono sicuro che / dev / sda4 diventerà (hd0,4) perché è quello che ho usato per avviare Ubuntu
phunehehe

3
Sì, Grub 0.97 ha iniziato a contare i dischi rigidi e le partizioni con 0. Grub 2 inizia ancora a contare i dischi con 0 ma inizia a contare le partizioni con 1. Quindi / dev / sda4 è hd0,3 in Grub 0.97 e hd0,4 in Grub 2.
fschmitt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.