Correr Raspberry Pi desde un disco USB


Raspberry Pi - USB Hard drive

Estuve probando unos días mi Rasberry Pi con una mermoria SD clase 4 marca Kingston que me compré, pero que la misma decidió morir (desde el primer día que quemé la imagen de Raspberry ya se había puesto algo problemática).  Como no tenía otra SD de 2GB o más, decidí investigar un poco para ver si se podía usar la primera partición /boot como arranque y una partición de un disco duro externo USB de 320 GB que tengo. Efectivamente se puede hacer y describo aquí los pasos.

Imagen Raspbian Wheezy

Decidí usar la imagen Raspbian 2013-02-09-wheezy-raspbian.img, pero primero tuve que hacer un truco: volqué la imagen en un pendrive de 8GB para poder separar la partición /boot y el resto del sistema operativo.

Volcado de Raspbian al pen drive

Hacemos como si volcaramos la imagen de Raspbian en la tarjeta SD pero en vez de hacerlo sobre /dev/mmcblk0 lo hacemos sobre el pendrive:

# dd bs=4M if=/home/lgallard/Projects/RaspberryPi/2013-02-09-wheezy-raspbian.img of=/dev/sdb

Extracción de la imagen boot

Para extraer solo el boot de Raspbian basta con volcar solo la primera partición del pendrive:

# dd if=/dev/scb1 of=/home/lgallard/Projects/RaspberryPi/2013-02-09-wheezy-raspbian.boot.img

Extracción del sistema operativo

Y hacemos lo mismo con la segunda prtición de sistema operativo para extraerlo:

# dd  if=/dev/sdc2 of=/home/lgallard/Projects/RaspberryPi/2013-02-09-wheezy-raspbian.fsext4.img

Tarjeta SD con el /boot

Aun requeriremos de una tarjeta SD para iniciar el Raspberry, pero ya no será necesario que sea de 2 GB, ya que puede ser de muchísimo menos, incluso hasta 64 MB (yo lo hice con una de 1 GB que encontré). Para eso podemos crear una partición con GParted de 60 MB como se muestra en la siguiente figura:

GParted - SD Card

Ahora copiamos el contenido de la imagen boot que sacamos previamente:

# dd if=/home/lgallard/Projects/RaspberryPi/2013-02-09-wheezy-raspbian.boot.img of=/dev/sdb1

Un vez que se haya copiado los datos, se debe montar esta partición, y  editar el archivo /media/usb0/cmdline.txt (cambiar /media/usb0 de acuerdo al punto de montaje), y colocar lo siguiente:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline rootwait

Aquí es importante colocar  root=/dev/sda1 para que al momento de iniciar el Raspberry Pi se use la primera partición del disco duro externo USB como la partición raíz, es decir, el directorio “/”.

Particionado del disco duro externo

Conectamos el disco duro externo a un PC y hacemos dos particiones como se muestra en la siguiente figura. La primera partición contendrá el sistema de archivos raíz, mientras que la segunda será de datos (se puede definir luego en /etc/fstab del Raspberry Pi).

GParted - hard drive

Sistema de archivo raíz “/”

Ahora procedemos a volcar la imagen que extrajimos de la imagen Rasbian en la primera partición del disco USB. Para ello hacemos lo siguiente:

# dd if=/home/lgallard/Projects/RaspberryPi/2013-02-09-wheezy-raspbian.fsext4.img of=/dev/sdc1

Ajuste del tamaño de la partición

Como se puede ver en la imagen anterior, la partición que se creó fue de casi 9 GB, pero si se monta la partición se mostrará como si fuese de 2 GB ya que la imagen de Rasbian por omisión es de ese tamaño.  Para solventar esto debemos desmontar esa la partición y hacer el ajuste del tamaño a nivel del sistema de archivos, es decir:

# umount /dev/sdc1
# e2fsck -f /dev/sdc1
e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Raspbian: 66488/114688 files (0.1% non-contiguous), 346538/458240 blocks
# resize2fs /dev/sdc1
resize2fs 1.42.5 (29-Jul-2012)
Resizing the filesystem on /dev/sdc1 to 2304000 (4k) blocks.
The filesystem on /dev/sdc1 is now 2304000 blocks long.

Luego consultamos el espacio disponible veremos algo como esto:

# df -h
/dev/sdc2 285G 191M 271G 1% /media/Data
/dev/sdc1 8.7G 1.3G 7.0G 16% /media/Raspbian

Si sigues estos paso al pie de la letra tendrás tu Raspberry Pi iniciando desde un disco duro externo.

Comentarios finales

  • Si bien es cierto que un disco duro es más caro que una tarjeta SD hay que considerar que tanto sufrirá esta, ya que tener un sistema de archivos con journals puede llevara a su vida útil antes de lo esperado por lo que no es descabellado pensar en un disco duro externo.
  • El disco duro que usé no es alimentado, pero mi Raspberry lo maneja sin problemas junto con un teclado. Eso si, al conectar algo más, como por ejemplo un ratón, no da más y se reinicia.
  • Usando un disco duro puedes olvidarte de la compatibilidad de las tarjeta SD (la cual recomiendan que sea clase 6). En mi caso usé una Sandisk de 1 GB clase 4 y me funcionó a la perfección.
  • Probablemente se puede usar dd para extraer las particiones /boot y la del sistema operativo, pero como no sabía el tamaño exacto y fui algo flojo decidí volcarla la imagen de Rasbian en un pen drive y extraer de allí dichas imágenes.

, , , ,

  1. #1 by Luis Gallardo on 17/12/2013 - 9:41

    @sebastian Te recomiendo mejor que uses Raspbmc que está mucho mejor y que tiene todos esto paso automatizados. Respecto a cómo quemar la imagen en Windows si que no sabría ayudarte porque yo solo uso Linux. Saludos!

  2. #2 by sebastian on 16/12/2013 - 8:45

    solo quiero ver archivos mp4…me estoy bajado est magen pero desde windows luego como sigo ????

  3. #3 by Luis Gallardo on 26/07/2013 - 3:31

    @Angel suerte con eso. Saludos!

  4. #4 by Angel on 26/07/2013 - 2:56

    Luis muchas gracias!!!
    voy a intentarlo con XBian 1.0 Beta 1.1 con un usb de 2Gb a ver que tal va….

  5. #5 by Luis Gallardo on 27/05/2013 - 9:44

    @David Podrías volcar tu SD donde hiciste todas las configuraciones en el disco duro o pendrive usb, y luego extender la partición como se explica en este artículo. Las rutas dependerán de cómo vea tu Raspberry los dispositivos. Otra opción que se me ocurre es que hagas las cosas desde cero, y luego copies las configuraciones que tienes en tu tarjeta SD al destino final.

    Por otro lado, la fluidez no te lo va a dar el hecho de que esté en la SD o en USB. Recuerda que este hardware es algo limitado, y si bien XBMC corre lo hace al límite (por debajo).

    Saludos!

  6. #6 by David on 27/05/2013 - 5:04

    Hola, después de ver tu tutorial tengo una duda.

    Yo tengo instalado raspbian y todo los programas que queria configurados después de muchos esfuerzos e intentos (soy totalmente novato en Linux y no tenia ni idea de programar).

    Tengo XBMC con pelisalacarta, samba, transmission, no-ip, disco hdd y usb automontados… Mi pregunta es:

    ¿Como puedo hacer para que tal como tengo ahora configurado todo mi raspberry inicie desde usb? Tengo que hacer una imagen de mi SD y seguir los pasos que das? Es posible? Como lo puede hacer? Cuales serian las rutas?

    Agradecería mucho tu ayuda ya que me ha costado muchísimo instalar todo y empezar desde cero por tenerlo en USB creo que no me merece la pena. Básicamente quiero llevarlo a USB para que vaya todo más fluido como centro multimedia.

    Muchas gracias!!

  7. #7 by Luis Gallardo on 20/05/2013 - 9:25

    @miguel debes seguir los pasos como explico. Saludos!

  8. #8 by miguel pavon vagon on 20/05/2013 - 6:45

    pringao no lo añade

  9. #9 by Luis Gallardo on 07/04/2013 - 10:18

    @Martín si se mejora el rendimiento, por ejemplo al iniciar el sistema se nota la diferencia. En general, debes ver una mejora en rendimiento en operaciones que sean de escritura al disco. En lectura, la SD debería tener mejor desempeño. Sería interesante hacer pruebas de rendimiento con herramientas como hardwareinfo o cualquier otro. Por cierto, como consejo, en la medida de lo posible trata de disminuir el número de servicios necesarios que tengas corriendo (ejemplo CUPS) para que no te consuman CPU y RAM. Por otro lado, recuerda que SMB/CIF no es el protocolo más eficiente para transferencia de archivos. Gracias por tus comentarios. Saludos!

  10. #10 by Martín Pardiñas on 07/04/2013 - 2:14

    Hola Luís

    He leído tu tutorial y me ha parecido muy clarificador y didáctico. Me queda una pregunta, que me gustaría que me contestaras, si eres tan amable. Al grano:

    Tengo instalada la distribución Squeezeplug instalada en mi raspberry. Yo utilizo este dispositivo como servidor de backup por ssh o ftp y como centro multimedia, tanto con Samba como DLNA, tanto con audio como para vídeo. Todos los ficheros, salvo el sistema operativo, alojados en un disco duro externo de 1 tb, en ntfs.
    Lo que noto es bajo rendimiento al cargar archivos desde un cliente de otro dispositivo en Samba. Con DLNA funciona con soltura.
    Notas una mejora en el rendimiento al tener instalada la distribución en el disco externo?

  11. #11 by Luis Gallardo on 18/03/2013 - 9:39

    @Jose gracias por tus comentarios. Respecto a tu duda, si no hiciste las imágenes con Clonezilla o algo similar no podrás restaurar esa partición de rescate porque el botón de restauración de Windows hace una llamada a una posición específica de esa partición. Saludos!

  12. #12 by Jose V. Salazar on 17/03/2013 - 10:33

    Que tal Luis pronto me comprare mi raspberry y me pongo a experimentar, soy seguidor tuyo desde hace tiempo, desde cuando tenias la lenovo s10e, bueno queria hacerte una pregunta referente a la maquina (el post relacionado tiene los comentarios deshabilitados) ya que todavia la tengo y bueno yo le vole todas las particiones para instalarme el debian pero me gustaria recuperar la que tenia de quickstar os no me percate de eso y nose si te acuerdas pero esa tenia una particion dedicada para eso o estaba metida dentro de guindox de verdad no me acuerdo y estoy retomando la laptop para trabajo ya que la tenia llevando polvo, gracias y disculpa por escribir en donde no es.

Los Comentarios están cerrados