Raspberry Pi, Cómo arrancar desde un disco duro

La Raspberry Pi sólo arranca desde la SD así que es imposible que hacerla arrancar desde un disco duro. Lo que si es posible es trasladar la partición de arranque a un disco duro obteniendo un aumento significativo de la velocidad y de la «confiabilidad» del equipo (las SD suelen acabar fallando tras un número elevado de ciclos lectura/escritura, mucho antes de que un disco con la misma carga).

Esta configuración es especialmente recomendable al usar la Pi como servidor de ficheros, media server o para usar una base de datos.

¿ Cómo se arranca desde un disco duro ?

Los pasos básicos son:

  • Instalar el sistema operativo de la RPi en la tarjeta SD
  • Conectar el disco duro
  • Preparar el disco con las particiones y formatos adecuados
  • Copiar el sistema desde la SD al disco duro
  • Modificar el arranque para que acceda al disco y no a la tarjeta

Partimos de la base que el sistema está instalado y la Raspberry Pi funciona perfectamente y que tiene acceso a Internet.

1) Actualizar

El primer paso es actualizar el software y el firmware. Para ello en la consola usaremos los siguientes comandos, contestando si (yes) en caso que nos indique que descargará ficheros:

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo reboot

El proceso completo puede tardar algunos minutos.

2) Conectar el disco duro

Tan simple como conectar el disco al puerto USB, pero ojo, la RPi no tiene potencia por si sola para alimentar un disco duro externo (o a casi ningún disco externo, que puede que con suerte alguno si que funcione). Es necesario usar un disco con alimentación propia o bien un concentrador USB activo (con su propia fuente de alimentación). Si se usa directamente un disco sin alimentación puede que funcione pero tarde o temprano se producen errores de lectura o resets de la propia RPi.

3) Particionar y formatear

Con el disco correctamente conectado ejecutamos:

sudo fdisk -l

Se nos mostrarán las particiones de la SD y las del disco duro.  Lo mas probable es que la SD y el HD aparezcan respectivamente como

/dev/sda y /dev/mmcblk0

Crearemos en el disco como mínimo tres particiones : la de arranque, la de intercambio (swap) y la de trabajo. (Por supuesto son posibles más combinaciones, dejar el swap en la SD, mantener arranque y trabajo en la misma partición, crear varias particiones para datos, … no es muy difícil modificar estas instrucciones para adaptarse a otro escenario. En este caso nos enfocamos en la primera opción descrita).

¡Ojo! Se borrarán todos los datos del disco duro. Si el disco contiene información que quieras guardar haz una copia en otro sitio primero.

Ejecuta

sudo fdisk /dev/sda

Entra «p» para ver las particiones existentes en el disco. Si existen particiones bórralas de una en una con «d» e indicando en número de partición.

En cuanto no existan particiones (o directamente si en disco no tenía ninguna definida) entra «n» para crear la primera partición.

Esta será la partición del sistema, entra «p» (primaria) y «1» como número de partición. Como sector de inicio deja el que el sistema propone y como sector de fin entra «+8GB».  (Puedes indicar cualquier otro tamaño siempre y cuando tenga como mínimo el mismo tamaño que la tarjeta SD) .

Entra «n» de nuevo, para la segunda partición, esta vez la de intercambio (swap) a la que daremos un tamaño de 2GB. Como antes tipo «p», número de partición «2», sector de inicio el propuesto por el sistema y sector de fin «+2GB».

Por último creamos la partición de trabajo. Entra «n», «p», partición «3»  y deja los valores por defecto para el sector de inicio y de fin.

Con «p» se muestra el listado de las particiones que hemos creado y si está todo a tu gusto entra «w» para que los cambios sean permanentes y salir.

Formateamos la partición de trabajo y la de intercambio respectivamente con los comandos:

sudo mkfs.ext4 /dev/sda3
sudo mkswap /dev/sda2

La partición del sistema se formatea «sola» al copiar el contenido de la SD, así que no tenemos que hacer nada ahora.

4) Copiar el sistema al disco duro

Primero veamos donde está la partición de arranque en la SD. Para ello ejecuta

cat /boot/cmdline.txt

Busca donde pone «root=» y toma nota de lo que aparece detrás  (en mi caso root=/dev/mmcblk0p6)

Para copiar la partición de arranque al disco duro:

sudo dd if=/dev/mmcblk0p6 of=/dev/sda1 bs=32M conv=noerror,sync

(modifica el primer parámetro, lo que está después del «if=», para que ponga lo que acabas de anotar)

Comprueba que no hay errores:

e2fsck -f /dev/sda1

y amplia la partición para ocupar todo el espacio disponible

resize2fs /dev/sda1

5) Configurar el arranque

Lo primero es hacer una copia de la configuración actual:

sudo cp /boot/cmdline.txt /boot/cmdline.old

Ahora editamos la configuración modificando el fichero cmdline.txt para ello ejecutamos

sudo nano /boot/cmdline.txt

y modificamos el contenido poniendo /dev/sda1 donde ahora pone /dev/mmcblk0p6

Con Control+O y Control+X guardas los cambios y sales del editor.

Modificaremos ahora la configuración de carga de discos del nuevo sistema. Para ello, montamos el arranque del disco duro

sudo mount /dev/sda1  /mnt

y modificamos los parámetros de carga de los discos, de modo que se carguen de forma automática las particiones de swap y datos que están en el disco duro:

sudo nano /mnt/etc/fstab

Donde pone «/dev/mmcblk0p6″ pon «/dev/sda1″  (sin las comillas) y añade después dos líneas debajo

/dev/sda2       none         swap        sw          0         0   
/dev/sda3       /mnt/wrk     ext4        defaults    0         0 

Contenido fichero fstab

Control+O y Control+X para guardar y salir del editor.

Crearemos ahora el punto de montaje para la partición de datos

sudo mkdir /mnt/wrk

y borraremos el fichero de swap

sudo rm  /etc/rc2.d/S02dphys-swapfile

Para terminar, nos aseguramos de que todo queda grabado y reiniciamos:

sync
sudo reboot

 

La Raspberry Pi arrancará desde la SD para cargar el sistema desde el disco duro.

 

Este tutorial está basado en los que están enlazados mas abajo, ninguno ha sido herido en la elaboración de este documento.
http://www.blogdugas.net/?p=269
http://www.raspberrypi.org/forums/viewtopic.php?f=26&t=26751
http://tech.enekochan.com/en/2013/11/02/make-raspbian-run-from-an-external-usb-hard-drive-or-usb-memory-stick/
http://raspberrypihobbyist.blogspot.com.es/2013/07/running-from-external-hard-drive.html

3 Responses to Raspberry Pi, Cómo arrancar desde un disco duro

  1. Mario Cortés 04/18/2014 at 17:45 #

    Muy útil. Gracias

  2. copypaste 10/01/2014 at 13:47 #

    Podrías indicar la fuente sobre la que te has basado.
    http://raspberrypihobbyist.blogspot.com.es/2013/07/running-from-external-hard-drive.html

Deja un comentario