¿Cómo agregar una entrada de menú GRUB2 para iniciar Ubuntu instalado en una unidad USB?

23

No estoy preguntando cómo iniciar el LiveCD desde un USB.

Tengo 2 instalaciones de Ubuntu, una en el disco duro interno de mi computadora y otra en una unidad USB.

¿Hay alguna manera de agregar una entrada de menú GRUB2 (a GRUB en mi disco duro interno) para iniciar el sistema operativo Ubuntu que he instalado en la unidad flash USB y que esta misma entrada de menú todavía funcione después de haber actualizado el kernel de Linux en la instalación USB?

kiri
fuente

Respuestas:

33

Cada vez que actualiza el kernel en externo, puede ejecutar esto para actualizar la stanza de arranque en grub en la unidad interna.

sudo update-grub

Pero también puede agregar una estrofa de arranque a 40_custom de grub2 que inicia la partición, no el núcleo específico. Ubuntu instala enlaces en / (root) para iniciar la instalación más reciente. Ajuste el ejemplo a continuación si es necesario para su unidad y partición. La unidad de arranque con grub siempre es hd0, pero luego otras unidades están en el orden de BIOS que puede variar.

Editar con:

gksudo gedit /etc/grub.d/40_custom

Luego añade:

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

Si bien lo anterior funciona, creo que la unidad puede cambiar al enchufar una unidad flash o cualquier otro dispositivo USB. Así que me estoy convirtiendo para usar etiquetas.

menuentry "Cosmic 18.10 on sdb12 test" {
    search --set=root --label cosmic_b --hint hd2,gpt12
    configfile /boot/grub/grub.cfg 
}
oldfred
fuente
1
¿Hay alguna forma de usar el UUID de la partición en lugar de hacerlo /dev/sdb1?
kiri
sudo update-grub funcionó muy bien, ¡gracias!
Sergiy Migdalskiy
2
¿Cómo debes calcular qué debería estar en lugar de (hd1,1)? ¿De dónde sacas estos números para que quepan? Es posible que necesite esto para solucionar un problema diferente: askubuntu.com/questions/573502/…
mate
44
El primer número es la unidad según lo informado por el BIOS. Pero la unidad de arranque siempre es hd0, por lo que el orden de la unidad puede cambiar. Entonces el segundo número es el número de partición. Donde sda3 es hd0,3 si arranca desde la unidad que es sda. Pero si arranca desde sdb, entonces puede ser hd1,3. A veces solo tienes que experimentar.
oldfred
sudo update-grub también funciona con la adición de entradas de Windows
superl2
9

Descubrí cómo usar el UUID de la unidad, útil si tienes varias unidades conectadas en el momento del arranque. Créditos a oldfred por su nota /vmlinuxy /initrd.imgenlaces simbólicos.

Agregue esto al archivo /etc/grub.d/40_custom, reemplazando UUID=XXXX-YYYYcon el UUID de partición (obtenga 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
}
kiri
fuente
8
Esta definitivamente no es la respuesta a la pregunta anterior. Deberías haber aceptado la respuesta de Oldfred.
Demis Palma ツ
1
@kiri: se considera una mala práctica copiar la respuesta de otra persona y darse crédito por ello. Sí, incluso si agregó la parte UUID.
Lennart Rolland
2

Para iniciar desde Ubuntu Live, la entrada del menú USB /etc/grub.d/40_customdebería verse así ( Reemplazar DRIVE_UUIDcon el uuid de su partición ):

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
}

Para aplicar los cambios, ejecute:

sudo update-grub
wiktor.2200
fuente