Trucos para la RaspBerry Pi

TRUCOS:



FORMATEAR Y MONTAR UN PENDRIVE

Para almacenar ficheros (por ejemplo, las descargas de Transmission) viene muy bien utilizar un pendrive. Haciéndolo, evitaremos saturar la tarjeta SD tanto de datos como de carga de trabajo, aparte de poder llevar los ficheros de un ordenador a otro sin tener que apagar la Raspberry. Veamos el proceso para montar un pendrive en ella y hacer que se monte luego automáticamente cada vez que iniciemos el sistema.
Lo primero que tenemos que hacer es insertar el pendrive y averiguar el nombre del dispositivo, es decir, el nombre que le asigna Linux (Raspbian en este caso). Lo haremos con este comando:
sudo fdisk -l
Al final (en la parte de abajo de la pantalla) aparecerá el nombre. Si no tenemos ningún otro dispositivo USB conectado, muy probablemente será sda1.
A continuación formatearemos el pendrive. Para usarlo con Raspbian (o cualquier otra distribución de Linux) lo mejor es hacerlo con el sistema de ficheros ext3 o ext4. Podemos realizarlo fácilmente desde la propia consola de comandos de la RasPi con la siguiente orden:
sudo mkfs.ext4 /dev/sda1
Concluido el formateo, hay que crear un punto de montaje para nuestro pendrive, que será la carpeta desde la que accederemos a él. Para ello, crearemos un carpeta llamada, por ejemplo, pen dentro del directorio /media y luego le damos todos los permisos mediante chmod:
cd /media
sudo mkdir pen
sudo chmod 777 pen
En este momento, ya podemos montar el pendrive en dicha carpeta con el comando sudo mount /dev/sda1 /media/pen. Pero para no tener que hacer esto cada vez que iniciemos el sistema, lo mejor es lograr que se monte automáticamente al arrancar la Raspberry. Para hacerlo, tenemos que modificar el fichero /etc/fstab:
sudo nano /etc/fstab
Añadiremos al final del mismo una nueva línea, en la que indicaremos el nombre del dispositivo, la carpeta de montaje y el sistema de ficheros usado. La línea debe quedar así (los espacios se insertan con el tabulador):
     /dev/sda1    /media/pen    ext4    defaults     0  0
Guardamos el fichero (Ctrl+o, Intro, Ctrl+x) y reiniciamos el sistema:
sudo reboot
A partir de ahora, cada vez que el sistema se inicie, el pendrive se montará automáticamente en la carpeta indicada.
Hecho lo anterior, ya podemos crear las subcarpetas que necesitemos dentro de la carpeta/media/pen. Para hacerlo, nos situamos en ella y creamos, por ejemplo, una carpeta para descargar los torrents. Finalmente, le damos todos los permisos a dicha carpeta:
cd /media/pen
sudo mkdir torrent
sudo chmod 777 torrent

USAR EL FORMATO NTFS DE WINDOWS

Formatear el pendrive en ext3/ext4 tiene el problema de que dicho formato no es reconocido por Windows, de manera que no podremos extraer el dispositivo y conectarlo en el PC con Windows para, por ejemplo, copiar archivos directamente. Para solucionar esto podríamos usar FAT32, pero este formato es antiguo y no acepta ficheros de más de 4 GB. Lo ideal entonces, si queremos usar el pendrive en el sistema operativo de Microsoft, es formatearlo en NTFS, bien con la herramienta GParted de Linux o desde el propio Windows.
Para hacerlo desde la propia Raspberry, antes hay que instalar el paquete ntfsprogs:
sudo apt-get install ntfsprogs
Y entonces ya podremos proceder al formateo:
sudo mkfs.ntfs /dev/sda1
Una vez formateado el pendrive con el nuevo formato, debemos instalar después en la Raspberry el paquete que le permitirá trabajar con el sistema de ficheros NTFS:
sudo apt-get install ntfs-3g
Luego tendremos que modificar adecuadamente el fichero /etc/fstab para adaptarlo al nuevo formato del pendrive. Por lo tanto, cambiaremos la línea
  /dev/sda1    /media/pen    ext4    defaults     0  0
por esta otra:
  /dev/sda1    /media/pen    ntfs-3g    defaults   0   0
Lo guardamos con la modificación hecha (Ctrl-o, Intro, Ctrl+x) y reiniciamos la Raspberry:
sudo reboot
Recordemos que habrá que crear de nuevo la carpeta torrent en el pendrive y otorgarle todos los permisos:
cd /media/pen
sudo mkdir torrent
sudo chmod 777 torrent



HACER BACKUP DE LA TARJETA SD EN WINDOWS

Cuando tengamos la Raspberry configurada a nuestro gusto y todo funcione correctamente, es el momento perfecto de hacer un backup o copia de seguridad de la tarjeta SD. Así, si el sistema deja de funcionar bien o la tarjeta se estropea, podremos coger otra SD y volcar en ella la copia de seguridad, de manera que en unos minutos tendremos nuestro sistema funcionando de nuevo a la perfección.
Para ello emplearemos la utilidad Win32DiskImager, la misma con la que creamos la imagen del sistema Raspbian en la tarjeta SD, y cuyo aspecto es el siguiente:
El proceso completo, paso a paso, lo haremos del siguiente modo:
  1. 1.) Insertamos la tarjeta SD de la Raspberry en el lector de tarjetas de nuestro PC.
  2. 2.) Creamos un fichero vacío con extensión img (por ejemplo, backupSD.img) en una carpeta del PC.
  3. 3.) Arrancamos el programa Win32DiskImager como administrador. Nos aparecerá la pequeña ventana de la aplicación, igual a la de la imagen anterior.
  4. 4.) En Device seleccionamos la letra de la unidad de la tarjeta SD. ¡Atención! Comprueba muy bien que has elegido correctamente la letra de la unidad o podrás formatear por error el disco duro.
  5. 5.) En Image File seleccionamos el fichero con extensión img que hemos creado en el paso 2.
  6. 6.) Pulsamos en el botón Read y empezará el proceso de copia de la imagen de la tarjeta SD en el fichero.
  7. 7.) Terminado el proceso, pulsamos en Exit para salir del programa.
  8. 8.) Ya sólo nos queda desmontar el lector y extraer la tarjeta SD.
En el fichero backupSD.img tendremos guardada ahora una imagen de la tarjeta SD tal y como estaba en el momento de hacer el backup, lista para recuperarla cuando lo necesitemos.


HACER BACKUP DE LA TARJETA SD DESDE LA RASPI

Para quien use Linux habitualmente, en lugar de Windows, realizar una copia de seguridad de la tarjeta SD, con el sistema ya instalado y configurado a nuestro gusto, es una tarea aún más fácil y rápida. Realizaremos la copia en un pendrive conectado a la RasPi y montado en /media/pen. En él hemos creado un directorio llamado backups para guardar las copias de seguridad. El proceso lo haremos desde la propia Raspberry, sin necesidad de salir de Raspbian, y en sólo dos pasos:
Primero desmontamos las dos particiones de la tarjeta SD:
sudo umount /dev/mmcblk0p1 && sudo umount /dev/mmcblk0p2
Y luego hacemos el backup propiamente dicho. Para ello emplearemos el comando dd, que usa varios argumentos: if (el origen de la copia), of (el destino) y bs (el tamaño de los bloques):
sudo dd if=/dev/mmcblk0 of=/media/pen/backups/raspbian.img bs=1M
El proceso no muestra nada por pantalla y puede tardar bastante, dependiendo de la capacidad de la tarjeta SD. Para ver su evolución, podemos abrir otra sesión de SSH y escribir este comando:
watch -n 10 kill -USR1 `pidof dd`
Entonces, en la primera sesión, el comamdo dd ya comenzará a mostrar la evolución del proceso de copia.
Una vez terminado, en el directorio /media/pen/backups tendremos una copia de seguridad del sistema, lista para usar cuando la necesitemos. Para recuperarla, sólo tendremos que realizar de nuevo los dos pasos anteriores, teniendo en cuenta que en el segundo el proceso será inverso:
sudo umount /dev/mmcblk0p1 && sudo umount /dev/mmcblk0p2
sudo dd if=/media/pen/backups/raspbian.img of=/dev/mmcblk0 bs=1M



MOVER EL SISTEMA OPERATIVO A UN HD EXTERNO

La Raspberry está diseñada para arrancar imperativamente desde el lector de tarjetas SD que incorpora. Esto no podemos cambiarlo, pero sí podemos lograr que el sistema operativo Raspbian se ejecute en un disco duro USB. Para ello es necesario hacer una serie de modificaciones. Técnicamente lo que tenemos que hacer es cambiar de sitio la partición /dev/root de nuestro sistema (que se encuentra en la partición 2 de la tarjeta SD) para que resida en el dispositivo USB externo. Lo haremos siguiendo estos pasos:
  1. 1.) Arrancamos desde un Live CD de Linux (por ejemplo, Ubuntu).
  2. 2.) Conectamos la tarjeta SD (con Raspbian ya instalado y configurado a nuestro gusto) y el HD externo al PC.
  3. 3.) Ejecutamos el programa Gparted y esperamos unos segundos a que reconozca las unidades conectadas.
  4. 4.) Seleccionamos la unidad de HD externo en el desplegable de arriba, a la derecha (¡Atención! Asegúrate de no seleccionar el disco duro del PC).
  5. 5.) Borramos todo el HD (botón derecho, “Eliminar”. Si no aparece esta opción, desmontar la unidad).
  6. 6.) Seleccionamos ahora la unidad de la tarjeta SD.
  7. 7.) Marcamos la partición ext4 de la SD y, con el botón derecho, elegimos “Copiar”.
  8. 8.) Volvemos a la unidad de HD externo. En el espacio vacío, hacemos clic con el botón derecho y elegimos “Pegar”.
  9. 9.) Vamos al menú “Editar” y aplicamos todos los cambios.
  10. 10.) En la unidad de HD externo, seleccionamos la partición copiada antes (ext4) y con el botón derecho la redimensionamos al tamaño deseado (podemos hacer que ocupe todo el espacio libre o bien crear una partición del tamaño que queramos).
  11. 11.) Aplicamos los cambios de nuevo en el menú "Editar" y cerramos GParted.
  12. 12.) En la partición FAT de la SD, abrimos el fichero cmdline.txt y la parte que poneroot=/dev/mmcblk0p2 la cambiamos por root=/dev/sda1 y guardamos el fichero.
  13. 13.) En la partición no FAT de la SD, vamos al fichero /etc/fstab y lo editamos. Aparecerán estas tres líneas:
    proc  /proc proc defaults 0 0
    /dev/mmcblk0p1  /boot  ext4  defaults 0 2
    /dev/mmcblk0p2  /  ext4    defaults 0 1
    
    En la última línea cambiamos la parte que comienza por /dev/mmcblk0p2, sustituyéndola por/dev/sda1, de manera que la línea quede así (los espacios se ponen con la tecla de tabulador):
    /dev/sda1 /  ext4    defaults 0 1 
  14. 14.) Salimos del Live CD de Linux.
  15. 15.) Insertamos la tarjeta SD en la Raspberry, conectamos el HD externo y la fuente de alimentación. Cuando el sistema arranque, veremos mediante el comando df -h que la partición /dev/root está ahora en el HD externo, en la partición creada y redimensionada antes.
Como el disco duro externo contiene ahora la partición de Linux, es necesario que este dispositivo esté conectado a la placa. Y lo mismo ocurre con la tarjeta SD: no podemos prescindir de ella; hay que tenerla insertada para que se pueda realizar el arranque, pues la partición /boot debe residir forzosamente en la SD.


APT-GET UPGRADE Y LOS PAQUETES RETENIDOS

Algunas veces, cuando actualizamos el sistema operativo Raspbian mediante los comandos
apt-get update
apt-get upgrade
obtenemos un mensaje que nos indica que ciertos paquetes están retenidos:
Los siguientes paquetes se han retenido:
[lista de paquetes]
Esto significa que hay una versión del kérnel lista para actualizarse. Sin embargo, para hacerlo no basta con ejecutar apt-get upgrade. La solución es teclear el siguiente comando para actualizar completamente la distribución:
sudo aptitude full-upgrade
Hecho esto, ya no tendremos ningún paquete retenido.


CONEXIÓN SSH MEDIANTE CLAVE PÚBLICA

Ya que habitualmente nos conectamos a la Raspberry Pi por medio de SSH, puede que nos interese hacerlo sin tener que recordar y teclear cada vez la contraseña. El truco consiste en generar un par de llaves (o claves), pública y privada, y copiar la primera en la RasPi, de manera que tenga constancia permanente de nuestra identidad y no nos pida la contraseña en cada conexión.
Si utilizamos alguna versión de Linux o de OSX en nuestro PC, el que usamos habitualmente para conectarnos por SSH, podremos generar las dos claves desde el mismo y enviar la clave pública a la Raspberry. Lo haremos de esta forma:
cd .ssh
ssh-keygen -b 2048 -t rsa -f id_rsa -P ""
ssh pi@192.168.1.33 < ~/.ssh/id_rsa.pub 'mkdir -p .ssh && cat >> .ssh/authorized_keys'
En las líneas anteriores lo que hemos hecho es ir al directorio oculto .ssh de nuestro PC, generar un par de claves RSA de 2048 bits y luego enviar a la Raspberry (cuya IP local es 192.168.1.33) la clave pública. A partir de ahora, para acceder por SSH, sólo tenemos que escribir esto:
ssh pi@192.168.1.33
y ya no será necesario escribir la contraseña.


VARIAS TERMINALES EN UNA SOLA PANTALLA

Cuando trabajamos en la terminal, con la línea de comandos, es muy útil tener la posibilidad de usar varias terminales al mismo tiempo. Esto podemos hacerlo de varias formas: por ejemplo, abriendo varias sesiones de SSH. Pero hay una forma mejor y más práctica: instalar la utilidad tmux, que es lo que se denomina un multiplexor de terminales. Con ella podemos dividir la pantalla de nuestra terminal en varias terminales más pequeñas, crear nuevas pantallas (o ventanas) que contengan, a su vez, varias terminales y saltar de una a otra con una simple combinación de teclas.
Así pues, vamos a instalar esta utilidad:
sudo apt-get install tmux
Una vez terminada la instalación, ya tenemos tmux listo para usar. Lo lanzamos:
tmux
y lo usamos empleando la combinación de teclas Ctrl+b seguida de otra tecla. He aquí las más comunes:
Ctrl+b %  ->  divide en horizontal 
Ctrl+b "  ->  divide en vertical  
Ctrl+b o  ->  cambia de una a otra  
Ctrl+b flechas  ->  cambia a la terminal donde apunte la flecha  
Ctrl+b x  ->  cierra una terminal [abajo, izquierda, aparece (y/n)]
Ctrl+b c  ->  crea una nueva ventana
Ctrl+b p  ->  vuelve a la ventana anterior
Ctrl+b n  ->  pasa a la ventana siguiente
Ctrl+b &  ->  cierra ventana actual [abajo, izquierda, aparece (y/n)]
Este es el resultado de dividir una pantalla en cuatro terminales:



ENVIAR CORREOS DESDE LA LÍNEA DE COMANDOS

Ya que utilizamos la Raspberry casi siempre en modo texto, puede que en algún momento nos interese enviar un correo a alguien sin tener que cambiar al modo gráfico, sino haciéndolo directamente desde la propia línea de comandos. Pues bien, podremos hacerlo fácilmente en dos pasos. Primero instalamos estos dos paquetes:
sudo apt-get install ssmtp
sudo apt-get install mailutils
En segundo lugar editamos el fichero de configuración:
sudo nano /etc/ssmtp/ssmtp.conf
y comprobamos que están presentes estas cinco líneas (las que no estén las añadiremos al final del fichero):
AuthUser=tudirección@gmail.com
AuthPass=tucontraseña
FromLineOverride=YES
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
En las dos primeras líneas debemos poner, lógicamente, los datos de nuestra cuenta. Y si la dirección de correo que vamos a usar no es de Gmail, cambiaremos las dos últimas líneas por los valores que correspondan.
Guardamos los cambios (Ctrl+o, Intro, Ctrl+x) y a partir de ahora, cuando queramos enviar un correo, sólo tenemos que teclear lo siguiente:
echo "Texto del mensaje" | mail -s "Asunto" usuario@dominio.com
Si necesitamos enviar un mensaje más extenso, que incluya saltos de línea, tendremos que crear un archivo con el editor de textos. Por ejemplo:
nano correo.txt
Escribimos en este archivo el contenido del mensaje y lo guardamos. Ahora lo enviamos así:
cat correo.txt | mail -s "Asunto" usuario@dominio.com
Sea cual sea el método elegido, si además deseamos enviar el correo a varios destinatarios, sólo tenemos que separar, al final, las distintas direcciones de email por comas.


INFORMACIÓN METEOROLÓGICA DESDE LA TERMINAL

Para conocer las condiciones meteorológicas existentes en nuestra ciudad (o en cualquier otra del mundo), vamos a instalar en la RasPi una utilidad que podremos usar desde la propia terminal tecleando un simple comando. Se trata de la aplicación weather-util:
sudo apt-get install weather-util
Una vez instalada, para usarla necesitamos conocer el código de la ciudad que nos interesa. Lo podemos encontrar en la web del National Weather Service. En International Weather Conditionsseleccionamos el país, hacemos clic en el botón Go y luego, en Current Weather Conditions, elegimos la ciudad. Junto a la localización aparecerá el código correspondiente, como se muestra en la imagen:
Para conocer los datos meteorológicos, teclearemos en la terminal el comando weather seguido del código:
weather LEMG
El resultado será similar a este:

También podemos obtener una previsión de varios días. Sólo tenemos que añadir el parámetro --forecast en la ejecución del comando:
weather --forecast LEMG
El problema es que no todas las ciudades tienen activa esta posibilidad, por lo que es muy posible que obtengamos un mensaje de error.


REPRODUCIR VÍDEOS DESDE LA TERMINAL

oxmplayer es un reproductor multimedia que se puede ejecutar desde la línea de comandos, lo que nos permite utilizarlo también desde una conexión SSH. Es capaz de reproducir vídeo en calidad 1080p. Puesto que viene preinstalado en Raspbian, no es necesario instalar nada, sólo ejecutarlo. Lo que sí tenemos que hacer es ampliar la memoria de la GPU a al menos 64 MB. Para ello, ejecutamos la herramienta de configuración del sistema:
sudo raspi-config
Nos desplazamos a Avanced Options - Memory Split y ahí hacemos el cambio.
Lo habitual será que queramos ver los vídeos o las películas en una TV o en un monitor (con altavoces incorporados) conectados al puerto HDMI de la Raspberry, así que esto será lo que debemos escribir para conseguirlo:
oxmplayer -o hdmi [path/ruta del archivo]
También podemos reproducir vídeos en streaming desde Internet:
oxmplayer [URL del servicio RTMP]
Estas son las teclas más usuales para manejar el reproductor:
j  # anterior canal de audio
k  # siguiente canal de audio
n     # anterior idioma de subtítulos
m  # siguiente idioma de subtítulos
s  # cambiar subtítulos
[espacio] # pausar/reanudar
-  # bajar volumen
+    # subir volumen
<- strong="">  # retroceder 30 segundos
->  # avanzar 30 segundos
q  # cerrar el reproductor



CONECTAR UN DISCO DURO USB

Los primeros modelos de la RasPi no admitían la conexión de un disco duro USB de 2,5 pulgadas (que no suelen tener fuente de alimentación); pero a partir del modelo B+ esto ya sí es posible. Para que funcione es necesario hacer dos cosas: modificar el fichero config.txt y utilizar una fuente de 5V y 2A para la Raspberry Pi. Así pues, lo primero que haremos será editar el fichero al que acabamos de referirnos:
cd /boot
sudo nano config.txt
añadiendo al final del mismo estas dos líneas:
safe_mode_gpio=4
max_usb_current=1
Al hacer esta modifiación, las salidas de los puertos USB pueden dar hasta 1,2A, lo que, sumado a los aproximadamente 800mA de consumo medio de la Raspberry, nos da un total de 2A. Y este es el motivo por el que es necesario usar una fuente de al menos 2A.

En cuanto al sistema de ficheros más adecuado para nuestro disco USB, lo ideal sería usar ext4. Para más información, véase lo que dijimos al principio de esta página sobre el formateo y montaje de un pendrive.

Comentarios

Entradas populares de este blog

Orange Pi IoT 2G Flashear memoria NAND

Usar datos gratis para proyectos IoT FreedomPop y Orange Pi 2G IoT (también Simyo).

Configurar modem GSM en la Orange Pi 2G IoT (Orange España)