¿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?
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.
¿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
}
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
}
/dev/sdb1
?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
/vmlinux
y/initrd.img
enlaces simbólicos.Agregue esto al archivo
/etc/grub.d/40_custom
, reemplazandoUUID=XXXX-YYYY
con el UUID de partición (obtenga UUID con comandoblkid
)fuente
Para iniciar desde Ubuntu Live, la entrada del menú USB
/etc/grub.d/40_custom
debería verse así ( ReemplazarDRIVE_UUID
con el uuid de su partición ):Para aplicar los cambios, ejecute:
fuente