Come aggiungere una voce di menu GRUB2 per l'avvio di Ubuntu installato su un'unità USB?


23

Non sto chiedendo come avviare il LiveCD da una USB.

Ho 2 installazioni di Ubuntu, una sul disco rigido interno del mio computer e un'altra su un'unità USB.

C'è un modo per aggiungere una voce di menu GRUB2 (a GRUB sul mio disco rigido interno) per avviare il sistema operativo Ubuntu che ho installato sull'unità flash USB e fare in modo che questa stessa voce di menu funzioni ancora dopo aver aggiornato il kernel Linux sull'installazione USB?

Risposte:


33

Ogni volta che si aggiorna il kernel su esterno, è possibile eseguirlo per aggiornare la stanza di avvio in grub sull'unità interna.

sudo update-grub

Ma puoi anche aggiungere una stanza di boot a 40_custom di grub2 che avvia la partizione, non il kernel specifico. Ubuntu installa i collegamenti in / (root) per avviare l'installazione più recente. Adeguare l'esempio di seguito, se necessario, per l'unità e la partizione. L'unità di avvio con grub è sempre hd0, ma altre unità sono nell'ordine riportato dal BIOS che può variare.

Modifica con:

gksudo gedit /etc/grub.d/40_custom

quindi aggiungi:

menuentry "Install on sdb1" {
    set root=(hd1,1)
    linux /vmlinuz root=/dev/sdb1 ro quiet splash
    initrd /initrd.img
}

Mentre sopra funziona, trovo che l'unità può cambiare quando si collega un'unità flash o qualsiasi altro dispositivo USB. Quindi mi sto convertendo per usare le etichette.

menuentry "Cosmic 18.10 on sdb12 test" {
    search --set=root --label cosmic_b --hint hd2,gpt12
    configfile /boot/grub/grub.cfg 
}

1
Esiste un modo per utilizzare l'UUID della partizione anziché /dev/sdb1?
Kiri,

sudo update-grub ha funzionato benissimo, grazie!
Sergiy Migdalskiy,

2
come dovresti capire cosa dovrebbe essere al posto di (hd1,1)? da dove prendi questi numeri per adattarli? Potrei aver bisogno di questo per chiarire
matt

4
Il primo numero è l'unità come riportato dal BIOS. Ma l'unità di avvio è sempre hd0, quindi l'ordine dell'unità può cambiare. Quindi il secondo numero è il numero di partizione. Dove sda3 è hd0,3 se si avvia dall'unità che è sda. Ma se fai il boot da sdb, allora potrebbe essere hd1,3. A volte devi solo sperimentare.
oldfred

sudo update-grub funziona anche con l'aggiunta di voci di windows
superl2,

9

Ho scoperto come utilizzare l'UUID dell'unità, utile se hai più unità collegate al momento dell'avvio. Ringraziamenti a oldfred per la sua nota /vmlinuxe collegamenti /initrd.imgsimbolici.

Aggiungi questo al file /etc/grub.d/40_custom, sostituendolo UUID=XXXX-YYYYcon l'UUID della partizione (ottieni UUID con comando blkid)

menuentry "Boot from USB Drive" {
    set root=UUID=XXXX-YYYY
    linux /vmlinuz root=UUID=XXXX-YYYY ro quiet splash
    initrd /initrd.img
}

8
Questa non è sicuramente la risposta alla domanda sopra. Avresti dovuto accettare la risposta di oldfred.
Demis Palma ツ

1
@kiri: è considerata una cattiva pratica copiare la risposta di qualcun altro e darne credito. Sì, anche se hai aggiunto la parte UUID.
Lennart Rolland,

2

Per eseguire l'avvio da Ubuntu Live USB, la voce di menu in /etc/grub.d/40_customdovrebbe apparire come quella ( Sostituisci DRIVE_UUIDcon il uuid della tua partizione ):

menuentry "Boot from LIVE USB Drive" {
   search --set=root --fs-uuid DRIVE_UUID
   linux ($root)/casper/vmlinuz boot=casper quiet splash --
   initrd ($root)/casper/initrd.lz
}

Per applicare le modifiche eseguite:

sudo update-grub
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.