Comment ajouter une entrée de menu GRUB2 pour démarrer Ubuntu installé sur une clé USB?

23

Je ne demande pas comment démarrer le LiveCD à partir d'une clé USB.

J'ai 2 installations Ubuntu, une sur le disque dur interne de mon ordinateur et une autre sur une clé USB.

Existe-t-il un moyen d'ajouter une entrée de menu GRUB2 (au GRUB sur mon disque dur interne) pour démarrer le système d'exploitation Ubuntu que j'ai installé sur le lecteur flash USB et que cette même entrée de menu fonctionne toujours après avoir mis à niveau le noyau Linux sur l'installation USB?

kiri
la source

Réponses:

33

Chaque fois que vous mettez à niveau le noyau sur un serveur externe, vous pouvez l'exécuter pour mettre à jour la strophe de démarrage dans grub sur le lecteur interne.

sudo update-grub

Mais vous pouvez également ajouter une strophe de démarrage à 40_custom de grub2 qui démarre la partition, pas le noyau spécifique. Ubuntu installe des liens dans / (root) pour démarrer l'installation la plus récente. Ajustez l'exemple ci-dessous si nécessaire à votre lecteur et à votre partition. Le lecteur de démarrage avec grub est toujours hd0, mais les autres lecteurs sont dans l'ordre indiqué par le BIOS, qui peut varier.

Modifier avec:

gksudo gedit /etc/grub.d/40_custom

puis ajouter:

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

Pendant que ci-dessus fonctionne, je trouve que le lecteur peut changer lors de la connexion d'un lecteur flash ou de tout autre périphérique USB. Je me convertis donc pour utiliser des étiquettes.

menuentry "Cosmic 18.10 on sdb12 test" {
    search --set=root --label cosmic_b --hint hd2,gpt12
    configfile /boot/grub/grub.cfg 
}
Oldfred
la source
1
Existe-t-il un moyen d'utiliser l'UUID de la partition plutôt que /dev/sdb1?
kiri
sudo update-grub a très bien fonctionné, merci!
Sergiy Migdalskiy
2
comment déterminer ce qui devrait remplacer (hd1,1)? d'où prenez-vous ces chiffres pour qu'ils correspondent? J'aurai peut-être besoin de cela pour régler directement un problème différent: askubuntu.com/questions/573502/…
matt
4
Le premier numéro est le lecteur tel que rapporté par le BIOS. Mais le lecteur de démarrage est toujours hd0, donc l'ordre des lecteurs peut changer. Ensuite, le deuxième numéro est le numéro de partition. Où sda3 est hd0,3 si vous démarrez à partir du lecteur sda. Mais si vous démarrez depuis sdb, il peut s'agir de hd1,3. Parfois, il suffit d'expérimenter.
oldfred
sudo update-grub fonctionne également avec l'ajout d'entrées Windows
superl2
9

J'ai découvert comment utiliser l'UUID du disque, utile si vous avez plusieurs disques branchés au démarrage. Remerciements à oldfred pour sa note /vmlinuxet ses /initrd.imgliens symboliques.

Ajoutez ceci au fichier /etc/grub.d/40_custom, en le remplaçant UUID=XXXX-YYYYpar l'UUID de partition (obtenez l'UUID avec la commande blkid)

menuentry "Boot from USB Drive" {
    set root=UUID=XXXX-YYYY
    linux /vmlinuz root=UUID=XXXX-YYYY ro quiet splash
    initrd /initrd.img
}
kiri
la source
8
Ce n'est certainement pas la réponse à la question ci-dessus. Vous auriez dû accepter la réponse d'Oldfred.
Demis Palma
1
@kiri: Il est considéré comme une mauvaise pratique de copier la réponse de quelqu'un d'autre et de vous en attribuer le mérite. Oui, même si vous avez ajouté la partie UUID.
Lennart Rolland
2

Pour démarrer à partir de l'entrée de menu USB d'Ubuntu Live, cela /etc/grub.d/40_customdevrait ressembler à cela ( remplacez-le DRIVE_UUIDpar l'uuid de votre partition ):

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
}

Pour appliquer les modifications, exécutez:

sudo update-grub
wiktor.2200
la source