Adiós IDE, hola traslado de boot y grub

Vamos a ver como solucionar un problema concreto, al cambiar de placa y encontrarnos sin conexiones IDE, perdiendo un disco duro con el sector de arranque, la partición de /boot, y la unidad de CD-DVD,pero intentando conservar los otros discos duros y el sistema tal cual estaba.

Como a todos los aparatos un día uno de nuestros ordenadores dice basta.
La llegada del calor puede ser un buen motivo aunque hagamos limpieza cada primavera en los ordenadores.

Si la placa era una muy antigua tendremos que cambiar: placa, procesador y memoria.

El problema surge al comprobar que las placas nuevas no suelen llevar conexiones para discos IDE sino sólo para los SATA.

Al no tener la unidad de DVD que es IDE tampoco podemos hacer todo esto desde un CD de arranque, aunque podríamos crear una memoria usb, esta vez no lo vamos a hacer así.

Arrancar el sistema con carcasa USB

Pedir una con estas conexiones es retrasar lo inevitable: el disco IDE hace las maletas, mejor dicho va a una maleta de aluminio con conexión USB.

Aunque digan que no se puede arrancar desde un disco externo USB no es cierto.

El único problema que he encontrado es que no se queda guardado en la BIOS, pero entrando en la BIOS hay que decirle que haga un inicio completo de los dispositivos USB y aparece el disco. OJO porque hay que elegir el que viene con el nombre sólo, ya que viene otro con UEFI delante que no arrancará.

A pesar de que la partición boot esté en ese disco arranca desde el disco IDE metido en la carcasa USB gracias a que en GRUB tiene el UUID (el identificador de las particiones) y eso no cambia aunque se haya trasladado de sitio y ya no sea /dev/sda, por ejemplo.

Bueno una vez hemos arrancado el sistema viene el tema de conseguir que todo funcione como antes con los discos que quedan, sin tener que entrar siempre en la BIOS.

Yo siempre intento tener los directorios importantes en distintas particiones al instalar por primera vez para poder conservar esas particiones en caso de instalación completa, pero no siempre es así.

Traslado del sistema

El problema es que una de las particiones del disco sea /boot

La cosa es fácil aunque hay que tener sangre fría y hacer copias de lo que vayáis a necesitar por si las moscas.

Haciendo hueco para las nuevas particiones

Lo primero es ver las particiones. Para eso he usado gparted que funciona muy bien.

Si no lo tenéis instalado yo en sistemas tipo debian uso:

sudo apt-get install gparted

luego se inicia con

sudo gparted

Al arrancar inicia una ventana donde se puede ver todos los discos con sus particiones:

gparted-main-window

En blanco, dentro de cada partición se ve el espacio que queda libre.

Buscamos una partición que tenga suficiente espacio libre para la partición boot y que no sea de sistema para que no dé problemas (ni /var, ni / y cosas así por si acaso), una de datos o de windows estaría bien.

Simplemente se le pulsa con el botón derecho del ratón y aparece un menú para esa partición, elijes “redimensionar/mover” para dejar hueco para una partición del tamaño de la que se va a trasladar (se le puede decir directamente que deje ese hueco detrás) y creas una nueva en el hueco del tipo que se quiera (ext4) y se le da la etiqueta “boot” para reconocerla.

Todos los trabajos se van añadiendo en la parte de abajo de la ventana de gparted y cuando ya lo tenéis todo se pulsa “aplicar todo” y ya está.

Copiar datos a las nuevas particiones

Ahora se puede montar esta nueva partición, desde el propio gparted se puede, y copiar todo lo de la partición antigua en la nueva:

sudo cp -afv /boot/* /media/user/_boot

Ojo con la “/” del final porque no queremos que cree un directorio boot dentro de boot 😉

Actualización del sistema de ficheros

Ahora en vez del nombre de las particiones que se usaban antes tipo /dev/sdaX (SATA o SCSI) o /dev/hdaX (IDE) ahora se usan los UUID que son un código identificativo de cada partición del disco y que nos ha venido muy bien antes para arrancar.

Para saber el UUID de cada unidad antigua y nueva usamos:

ls -l /dev/disk/by-uuid/

Para saber qué se está usando en el sistema yo uso el “monitor de sistema” que viene con ubuntu por defecto y en la pestaña “Sistemas de archivos” puedes ver qué particiones están en uso y a qué corresponde cada una.

Lo siguiente es entrar a cambiar la partición que se usará como /boot a partir de ahora usando tu editor preferido:

sudo vi /etc/fstab

Ahí cambiamos la antigua UUID por la nueva y salimos.

Actualización de grub con las nuevas particiones

Para instalar grub en la unidad nueva (en nuestro caso /dev/sda) basta con:

sudo grub-install /dev/sda

pero el problema es que se instalará un arranque antiguo, que intentará acceder al disco que hemos tenido que quitar, para buscar el núcleo del sistema (/boot/…). Si /boot no estuviese en ese disco que hemos quitado con eso bastaría.

En este caso lo que hay que hacer es volver a iniciar el gparted, y al pulsar con el botón de la derecha del ratón en la partición nueva, nos sale un apartado “montar” y dentro “boot” con lo que al pulsar monta la nueva partición como boot y se desmonta la antigua.

Ahora entramos a cambiar grub para que apunte en la nueva partición:

sudo dpkg-reconfigure grub-pc

Ahí nos sale una ventana con las opciones de arranque. Vamos a la siguiente y nos salen las particiones que tenemos montadas para elegir la que tiene boot. Escogemos la nueva y seguimos. Aceptar y al salir queda con todo bien.

Podemos entrar en /boot/grub/grub.cfg y buscar la cadena del UUID antiguo y el nuevo para ver que se ha cambiado.

Para terminar instalamos grub en el disco que arrancará a partir de ahora:

sudo grub-install /dev/sda

Al reiniciar tendremos todo funcionando como si no hubiese pasado nada. Bueno, faltará la disquetera y el lector de DVD

Espero que os sirva.

Un saludo a todos y suerte.