• Agregar una entrada de Grub para bootear Ubuntu

    Se puede añadir una entrada en grub (por ejemplo el instalado en debian) para bootear una partición en la que previamente hayamos instalado Ubuntu, agregando lo siguiente al archivo /etc/grub.d/40_custom:

    menuentry "Ubuntu" {
      insmod part_gpt
      insmod ext2
      search --no-floppy --set=root --fs-uuid 99bba20e-3444-442f-887d-b0af5fff15d6
      linux /boot/vmlinuz-5.19.0-38-generic root=UUID=99bba20e-3444-442f-887d-b0af5fff15d6 ro 
      initrd /boot/initrd.img-5.19.0-38-generic
    }
    

    Esa entrada bootearía una versión específica del kernel de Ubuntu con su correspondiente initramfs. Si, a posteriori, actualizaramos ese Ubuntu, esa entrada dejaría de funcionar.

    Por ello, sabiendo que existen archivos que son accesos directos al último kernel instalado en las particiones de Ubuntu, es mejor crear una entrada que apunte a este:

    menuentry "Ubuntu (Último kernel)" {
      insmod part_gpt
      insmod ext2
      search --no-floppy --set=root --fs-uuid 99bba20e-3444-442f-887d-b0af5fff15d6
      linux /boot/vmlinuz root=UUID=99bba20e-3444-442f-887d-b0af5fff15d6 ro
      initrd /boot/initrd.img
    }

    En ambas entradas se da por sentado que conocemos el UUID de la partición donde Ubuntu está instalado. Sin embargo, se puede dar el caso que no conozcamos el UUID, pero si la etiqueta de la partición y qué número de partición es. En ese caso podríamos agregar la siguiente entrada:

    menuentry "Ubuntu (Último kernel)" {
      insmod part_gpt
      insmod ext2
      search --no-floppy --set=root --label Ubuntu --hint hd0,gpt6
      linux /boot/vmlinuz root=/dev/nvme0n1p6 ro
      initrd /boot/initrd.img
    }

    Esta entrada buscaría una partición con la etiqueta «Ubuntu», la configuraría como la partición root y cargaría el kernel y el initramfs por defecto que encontraría en la carpeta /boot de esa partición, indicándole al kenel que debería considerar la partición /dev/nvme0n1p6 como la partición root de ese kernel a bootear. Si encontrase más de una partición con la etiqueta Ubuntu, cargaría la que está en la sexta partición GPT del primer disco duro.

    También es posible que conozcamos la etiqueta de la partición, pero no que número de partición es. En ese caso:

    menuentry "Ubuntu (Último kernel)" {
      insmod part_gpt
      insmod ext2
      search --no-floppy --set=root --label Ubuntu --hint hd0,gpt6
      linux /boot/vmlinuz root=/dev/disk/by-label/Ubuntu ro
      initrd /boot/initrd.img
    }

     

    O bien, en vez de meter en el archivo 40_custom la carga directa del kernel desde el grub.cfg de nuestro sistema operativo actualmente en ejecución, podemos agregar una entrada para que busque el grub.cfg que está dentro de la propia partición de ese Ubuntu instalado:

    menuentry "Ubuntu (Cargando su propio grub.cfg)" {
      search --set=root --label Ubuntu --hint hd0,gpt6
      configfile /boot/grub/grub.cfg 
    }

    Esta última entrada buscaría una partición con la etiqueta «Ubuntu», la configuraría como la partición root y cargaría el archivo grub.cfg de esa partición, que estaría ubicado en /boot/grub/grub.cfg.

    Lógicamente, después de todos estos cambios deberíamos actualizar grub ejecutando como root:

    update-grub


    Deja una respuesta