Utilizar una memoria de almacenamiento externa
Introducción
La tarjeta micro SD (Secure Digital) de la Raspberry Pi ofrece a los usuarios una gran flexibilidad de uso. Basta con cambiar la tarjeta micro SD para iniciar rápidamente en otro sistema.
El arranque de la Raspberry Pi requiere, necesariamente, una tarjeta micro SD. Sin embargo, nada le impide, una vez arrancado el sistema, hacer que el sistema funcione en una memoria de almacenamiento externa, llave USB o disco duro.
Este capítulo presenta los elementos que debe tener en cuenta durante la elección de una solución, así como un ejemplo de puesta en marcha con una llave USB de 4 GB dividida en dos particiones de 2 GB. Esta descripción se aplica a los soportes externos de cualquier tamaño.
Después de la preparación de la llave USB para su uso con la Raspberry Pi, el montaje manual o automático de las particiones presentes en el soporte externo permitirá ampliar las posibilidades de la Raspberry Pi.
El uso de la línea de comandos para realizar todas las operaciones facilitará adquirir el control de este entorno, que desde un punto de vista de su uso es sencillo y habitualmente mucho más potente que las herramientas en modo gráfico. Normalmente esto no es más que una forma de ocultar la flexibilidad y riqueza del shell.
El uso de una memoria de almacenamiento masivo externa en modo gráfico, se trata en el capítulo Utilizar el modo gráfico....
¿Por qué una memoria externa?
Cuando el uso de la Raspberry Pi implica frecuentes escrituras en la tarjeta micro SD o necesita una capacidad de almacenamiento elevada, es porque la tarjeta micro SD ha alcanzado el límite de su capacidad. En ese caso, el usuario opta por otros medios de almacenamiento.
1. Características de la tarjeta microSD

La tarjeta micro SD, creada en el 2000 por Panasonic, SanDisk y Toshiba, se ha convertido en un soporte necesario para el almacenamiento de los datos en muchos dispositivos con un sistema embebido (aparatos de toma de imágenes, reproductores de música, smartphones, tabletas, etc.).
Se divide en miniSD y microSD, que mantienen las características de la tarjeta micro SD original, pero con un tamaño adaptado a la miniaturización de los dispositivos actuales.
A mediados del año 2016, la capacidad más elevada de las tarjetas micro SD disponibles habitualmente en el mercado era de 128 GB, aunque las tarjetas de 256 GB todavía están disponibles, así como las tarjetas de 512 GB.
Tecnología de las tarjetas micro SD
Las tarjetas SD están construidas a partir de EEPROM (Electrically Erasable Programmable Read-Only Memory = memoria de solo lectura programable y borrable). La escritura de los datos en estas memorias de tipo NAND (Not-AND = memoria construida a base de puertas lógicas NO-SÍ) necesita el uso de una tensión más elevada que la utilizada en lectura. Si bien la lectura de las tarjetas SD puede hacerse indefinidamente sin deterioro, las escrituras repetidas provocan a la larga una degradación de las células de memoria.
Los fabricantes implementaron procesos que administran el lugar en que se producen las escrituras en las memorias. Un componente de la tarjeta guarda el número de escrituras por zona de memoria y optimiza el uso de estas zonas.
Tiempo de vida de las tarjetas micro SD
El tiempo de vida de las tarjetas micro SD actuales se estima en alrededor de 100.000 escrituras. Esto puede parecer suficiente y sería el caso, por ejemplo, para un aparato...
Discos y particiones en Linux
En el sistema Linux, los discos no aparecen directamente en el sistema de archivos (la arborescencia) como en Windows. El acceso a los discos y particiones se hace a través de los archivos especiales, que sirven de interfaz entre el sistema y el periférico.
1. Identificación de los discos en Linux
Un disco externo USB, conectado a una máquina que funciona con Windows, se detecta y aparece como una partición en el administrador de discos. Estas particiones se llaman F:, G: u otra, según la primera letra disponible después de las reservadas para los lectores locales.
En Linux, un disco aparece en la carpeta /dev como un archivo especial que permite al sistema acceder al disco.
Los discos IDE (Integrated Drive Electronics = disco duro de integración electrónica) conectados a la placa base de los PC por una capa de 40 cables tienen el nombre de hda, hdb... en la carpeta /dev. Desde hace algunos años, se han sustituido por los discos SATA (Serial Advanced Technology Attachment = unión en serie en tecnología de puntos).
Los discos SATA o SCSI (Small Computer System Interface = interfaz para pequeños sistemas informáticos) se llaman sda, sdb... en la carpeta /dev.
2. Identificación de las particiones en Linux
En Linux, las particiones reciben un nombre que se forma con el nombre del disco duro en el que se encuentran (nombre del disco completo seguido de una cifra). Por ejemplo, un disco llamado sda y con dos particiones, se mostrará como sda1 y sda2. Las particiones están accesibles en el directorio /dev, que agrupa todos los archivos especiales del sistema Linux.
Archivos especiales
Para tener una visión general de los archivos especiales presentes en el directorio /dev de la Raspberry Pi, escriba el comando:
pi@raspberrypi ~ $ ls /dev

Esto son cerca de 160 archivos especiales que existen en /dev. Es aquí donde aparecen los discos y particiones que nos interesan.
Nomenclatura de los archivos especiales
La tarjeta micro SD se identifica con el nombre mcblk0 (Memory Card Block) y sus particiones mcblk0p1 (partición 1) a mcblk0p6 (partición 6).
La llave USB aparece como sda. Está en la categoría de los discos SCSI/SATA (sd = SCSI Disk) y como es el primer disco tiene la letra a. Un segundo disco conectado a un puerto USB de la Raspberry Pi toma el nombre sdb. Las particiones...
Definir un punto de conexión
En Windows, cada partición se identifica con una letra distinta C:, D:, etc. En Linux las particiones simplemente se "cuelgan" en la arborescencia general del sistema, con un "Punto de conexión".
1. La arborescencia en Linux
En Linux, el sistema de archivos se organiza en forma de árbol (consulte el capítulo Usar la línea de comandos).
pi@raspberrypi ~ $ ls /
bin dev home lost+found mnt proc run selinux sys usr
boot etc lib media opt root sbin srv tmp var
Hay dos directorios que nos interesan particularmente:
-
/media destinado a la conexión de los medios extraíbles.
-
/mnt habitualmente utilizado para la conexión temporal de sistemas de archivos.
Para acceder a las particiones de la llave USB, es necesario crear un directorio a partir del cual el sistema operativo podrá acceder al sistema de archivos presente en el soporte.
Este directorio se puede situar en cualquier parte del árbol, pero una buena práctica consiste en usar los directorios previstos para este efecto.
Para probar las etapas de conexión/desconexión de un sistema de archivos, /mnt es el directorio adecuado.
2. Crear un punto de conexión
La creación de un punto de conexión se resume en la creación de un directorio /mnt/partition1, destinado a acoger el sistema de archivos situado...
Utilizar una memoria externa
Tan pronto como se han creado los directorios que van a servir de punto de conexión, es posible colgar sistemas de archivos externos a la arborescencia de la Raspberry Pi.
1. Conexión manual de la llave USB
Después de crear los puntos de conexión, es necesario montar las particiones en estos directorios para que aparezcan en el sistema de archivos de la Raspberry Pi. El comando mount realiza esta operación.
La partición presente en la llave USB, llamada /dev/sda1 por el sistema, se conecta en el punto de conexión /mnt/partition1 con el comando:
pi@raspberrypi /mnt $ sudo mount -t ext4 /dev/sda1
/mnt/partition1
Sintaxis
El comando mount recibe tres argumentos:
-
-t ext4 indica el tipo de partición a montar. Los tipos de partición reconocidos son muchos (ext, ext2, ext3, ext4, hpfs, msdos, vfat, nfs, iso9660, smbfs, etc.). De esta manera, es posible montar una gran variedad de soportes de memoria de almacenamiento en el sistema de archivos de la Raspberry Pi.
-
/dev/sda1 es la partición que es necesario montar en el punto de conexión.
-
/mnt/partition1 es el directorio en el que aparecerá /dev/sda1.
El comando mount también acepta opciones con argumentos -o, entre los que figuran:
-
ro autoriza únicamente la lectura en el sistema de archivos montado.
-
rw autoriza la lectura y la escritura en el sistema de archivos montado.
-
user autoriza a los usuarios normales (los que no son root) a montar un sistema de archivos.
Monte la segunda partición de la llave USB en el directorio /mnt/partition2 y dele permisos de solo lectura. Compruebe con el comando mount que la opción ro se ha aplicado correctamente en /mnt/partition2. El comando mount utilizado solo muestra la lista de los archivos montados.
/dev/sda1 on /mnt/partition1 type ext4 (rw,relatime,data=ordered)
/dev/sda2 on /mnt/partition2 type ext4 (ro,relatime,data=ordered)
La conexión manual de las particiones da una gran flexibilidad para administrar memorias de almacenamiento externas. Sin embargo, el sistema Linux utiliza un sistema que ahorra las transferencias USB. Cuando escribe en la llave, el sistema guarda los archivos en la memoria RAM de la Raspberry y solo escribe en la llave USB si el tamaño de los datos a escribir es suficiente, o para garantizar una desconexión correcta.
Esto significa que entre el momento en que escribe...
Modificación de los permisos
Durante la preparación de la llave USB se aplican los permisos del administrador. Para que un usuario normal pueda usar el periférico, es necesario modificar los permisos de acceso.
Aplicar el permiso 777 al conjunto del disco puede parecer sencillo, pero resulta peligroso porque abre el disco a cualquier acceso sin ningún control.
1. Partición FAT o NTFS
Para una partición FAT o NTFS es mejor crear un grupo que tenga acceso al disco y darle los permisos al conjunto del disco. Basta con añadir a continuación los usuarios a este grupo para asignarles dichos permisos. Estos usuarios pueden ser usuarios reales o usuarios establecidos por las aplicaciones.
Cree el grupo diskuser, autorizado a usar el disco:
pi@raspberrypi ~ $ sudo groupadd diskuser
A continuación hay que añadir el usuario pi, y el resto que desee, al grupo diskuser:
pi@raspberrypi ~ $ sudo usermod -a -G diskuser pi
Añada ahora la siguiente línea al archivo /etc/fstab, para montar automáticamente la partición FAT:
/dev/sda2 /mnt auto auto,async,gid=diskuser,umask=007 0 2
El argumento umask elimina los permisos indicados. Aquí, el valor 7 indica que los usuarios que no son ni propietarios ni miembros del grupo propietario no tendrán ningún permiso. Este valor es opcional.
Una vez se ha montado la partición, todas las carpetas y archivos de la partición...
Conclusión
El uso de una tarjeta micro SD limita la cantidad de memoria disponible. El uso de una memoria de almacenamiento externo da acceso a capacidades de almacenamiento más extendidas, particularmente considerables si la Raspberry Pi se usa como centro multimedia.