• Reparación de Grub desde un LiveCD de Debian para BIOS MBR

    Pasa muchísimas veces que antes, durante, o después de las instalaciones sucesivas de Debian en nuestra PC, Grub se acaba jodiendo y no sabemos como repararlo. En este artículo voy a tratar dos supuestos. El supuesto A es que la instalación de otro sistema operativo te rompió el Grub de Debian y no puedes arrancarlo. El supuesto B es que una mala instalación de Debian te dejó sin Grub instalado, o se te borró el grub al mismo tiempo que el archivo /boot/grub/grub.cfg y no tienes configuraciones de arranque reconocibles. Vamos al supuesto A:

    SUPUESTO A (Instalación de otro S.O)

    Bien, una vez iniciado Debian desde el LiveCD abrimos una cli (es más rápido con Ctrl+Alt+T) y ejecutamos:

    sudo fdisk -l

    Ubicamos entonces cuál es la partición donde está instalado Debian. En mi caso es /dev/sda2 así que vamos a montarla para poder trabajar con ella. Pero antes creamos una carpeta para montarla con:

    sudo mkdir /partdebian

    Y luego efectivamente la montamos con:

    sudo mount -t auto -v /dev/sda2 /partdebian

    Ahora que ya está montada vamos a instalar Grub de la forma correcta en esa partición. Pero antes tenemos que instalar el paquete grub2 porque Debian Live no lo trae integrado. Lo hacemos con:

    sudo apt-get update && sudo apt-get -y install grub2

    Puede que la instalación de grub2 tarde un buen rato. Déjalo unos 5 minutos. Una vez instalado ya podemos proceder a meter grub en la partición, pero eligiendo correctamente el target. Los posibles targets son:

    • default=x86_64-efi]
    • arm-coreboot
    • arm-efi
    • arm-uboot
    • arm64-efi
    • i386-coreboot
    • i386-efi
    • i386-ieee1275
    • i386-multiboot
    • i386-pc
    • i386-qemu
    • i386-xen
    • i386-xen_pvh
    • ia64-efi
    • mips-arc
    • mips-qemu_mips
    • mipsel-arc
    • mipsel-loongson
    • mipsel-qemu_mips
    • powerpc-ieee1275
    • riscv32-efi
    • riscv64-efi
    • sparc64-ieee1275
    • x86_64-efi
    • x86_64-xen

    Lógicamente, como este hack es para MBR, pusimos como target elegiremos i386-pc:

    sudo grub-install --target=i386-pc --boot-directory=/partdebian/boot /dev/sda
    sudo grub-install --target=i386-pc --root-directory=/partdebian /dev/sda
    

    Reiniciamos el ordenador y al reinciar debería estar solucionado.

    NOTA: Si la instalación de grub2 no termina nunca y la cli se queda ejecutando la instalación, simplemente abre otra cli y ejecuta los comandos de arriba.

    SUPUESTO B (Mala instalación de Debian)

    Una vez iniciado Debian desde el LiveCD abrimos una cli (es más rápido con Ctrl+Alt+T) y ejecutamos:

    sudo fdisk -l

    Ubicamos entonces cuál es la partición donde está instalado Debian. En mi caso es /dev/sda2 así que vamos a montarla para poder trabajar con ella. Pero antes creamos una carpeta para montarla con:

    sudo mkdir /partdebian

    Y luego efectivamente la montamos con:

    sudo mount -t auto -v /dev/sda2 /partdebian
    sudo mount --bind /dev /partdebian/dev
    sudo mount --bind /proc /partdebian/proc
    sudo mount --bind /sys /partdebian/sys
    sudo mount --bind /usr/ /partdebian/usr
    sudo chroot /partdebian

    Ahora, ya como root, actualizamos Grub, pero eligiendo correctamente el target. Los posibles targets son:

    • default=x86_64-efi]
    • arm-coreboot
    • arm-efi
    • arm-uboot
    • arm64-efi
    • i386-coreboot
    • i386-efi
    • i386-ieee1275
    • i386-multiboot
    • i386-pc
    • i386-qemu
    • i386-xen
    • i386-xen_pvh
    • ia64-efi
    • mips-arc
    • mips-qemu_mips
    • mipsel-arc
    • mipsel-loongson
    • mipsel-qemu_mips
    • powerpc-ieee1275
    • riscv32-efi
    • riscv64-efi
    • sparc64-ieee1275
    • x86_64-efi
    • x86_64-xen

    Lógicamente, como este hack es para MBR, pusimos como target elegiremos i386-pc:

    update-grub
    grub-install --target=i386-pc /dev/sda

    Salimos de chroot con Ctrl+D y luego desmontamos todos previamente montado con:

    sudo umount /mnt/dev
    sudo umount /mnt/proc
    sudo umount /mnt/sys
    sudo umount /mnt/usr
    sudo umount /mnt
    exit
    umount /dev/sda2

    Ahora tan solo nos queda reiniciar el sistema y estará el tema solucionado. Si quieres reinícialo desde la cli misma con:

    sudo shutdown -r now

    Oh yeah!