Uso de Raspberry Pi OS
Jun 18, 2021 ‧ 15 min estimados ‧ #raspberry #rpi #raspian #usage |
Contenido Configuraciones del sistema operativo Config.txt (el "BIOS" de Raspberry Pi OS) Conocer la dirección IP de la Raspberry Configuraciones de autoarranque |
En este documento vamos a ver usos y configuraciones útiles que podés realizar sobre el sistema Raspberry Pi OS. Algunas de las cosas que veremos son:
Raspberry Pi OS - antes conocido como Raspbian - es el sistema operativo oficial de Raspberry Pi lanzado oficialmente en 2015 por la Raspberry Foundation, y en las versiones con entorno gráfico tiene un aspecto similar a esta imagen.
Es una distro Linux basada en Debian, y la principal diferencia respecto a otras distros Linux es que esta está optimizada para funcionar en procesadores ARM - específicamente el procesador de la Raspberry es ARMv6 - sin generar fallos ni errores y pudiendo sacar todo el potencial a estas CPUs.
Utiliza el entorno gráfico PIXEL - Pi Improved XWindow Environment, Lightweight -, una versión modificada de LXDE con un gestor de ventanas Openbox y un tema personalizado muy característico.
Además de ofrecer la configuración del sistema operativo a través de archivos, también incluye el programa raspi-config que sirve para configurar la distro muy fácilmente. Estas configuraciones pueden ser acciones como cambiar la contraseña, gestionar el arranque, actualizar paquetes, hacer overclock, entre otras.
Raspberry Pi OS se ofrece en tres versiones diferentes para que puedas elegir la que mejor se adapte a tus necesidades.
Por un lado está la edición full que incluye el entorno gráfico PIXEL, los programas básicos y una gran cantidad de software extra recomendado. Esta es la edición más completa - tiene un tamaño de 2.5 GB aproximadamente - y te permitirá tener todo lo necesario desde el primer momento sin necesidad de instalar demasiado software por tu cuenta.
Por otro lado está la edición que incluye el entorno gráfico PIXEL y los programas básicos sin software recomendado. Esta versión es más adecuada cuando querés contar con el gestor de ventanas y solo instalar el software mínimo que necesites, y tiene un tamaño de 1.1 GB aproximadamente.
Y por último está la edición Lite que es la imagen mínima basada en Debian. Tiene un tamaño aproximado de 400 MB y trae lo indispensable para que arranque el dispositivo, y es tu tarea instalar el software adicional que necesites. Esta versión requiere más conocimientos para ponerla en marcha - ya que no tiene entorno gráfico - pero a fin de cuentas es la que mejor rendimiento ofrece.
Ahora que ya conocemos algunos detalles generales, veamos qué configuraciones podemos realizar sobre el sistema operativo para que se pueda adaptar a las distintas necesidades que puedas tener.
Cuando ya tengas funcionando Raspberry Pi OS, es probable que necesites realizar algunas configuraciones para que se adapte a tus necesidades. Veamos algunas de las configuraciones posibles.
La forma más sencilla de gestionar la instalación, actualización y eliminación de software es utilizando APT (Advanced Packaging Tool) de Debian. Si un software está empaquetado para Debian - con extensión .deb - y funciona en la arquitectura ARMv6 de Raspberry Pi está disponible para que lo uses en Raspberry Pi OS.
Para gestionar paquetes necesitas que tu usuario tenga permisos de root - que por defecto el usuario pi los tiene - y que la Raspberry Pi esté conectada a internet. Así mismo debés tener suficiente espacio en la tarjeta SD para poder instalar el software. También tenés que tener en cuenta que se puede instalar de a un paquete a la vez y no varios al mismo tiempo. Veamos algunas operaciones comunes relacionadas con la instalación de paquetes.
Actualización de fuentes
La lista de fuentes de software en la Raspberry Pi está en el archivo /etc/apt/sources.list, y el primer paso para instalar un software es actualizar la lista de paquetes con este comando.
sudo apt update |
Instalación un paquete
Para instalar un paquete tenés que ejecutar el comando install de apt. Por ejemplo el siguiente comando te muestra cómo instalar la herramienta tree.
sudo apt install tree |
Al momento de ejecutar el comando te debería informar al cuánto espacio en disco ocupará el paquete y te va a solicitar la confirmación de instalación presionando ENTER o Y. De manera opcional podés agregar el flag -y para que se instale automáticamente sin pedir confirmación.
Quitar un paquete
Si quisieras quitar un paquete del sistema, simplemente tenés que ejecutar el comando remove de apt. Para seguir con el ejemplo, para eliminar la herramienta tree deberías correr el siguiente comando.
sudo apt remove tree |
Purgar un paquete
Al momento de instalar un paquete se instalan además archivos de configuración y otras dependencias que no se eliminan con el comando apt remove. Para esos casos podés usar el comando purge de apt, como podemos ver en este ejemplo.
sudo apt purge tree |
Actualización de software existente
Si hay actualizaciones de software disponibles podés correr el comando sudo apt update para actualizar la lista de fuentes, e instalar las actualizaciones con el comando sudo apt full-upgrade, que actualizará todos los paquetes instalados en el sistema. La operación anterior suele ocupar un espacio considerable en algunos casos, por lo que si sólo querés actualizar un paquete en particular podés hacerlo con sudo apt install ###.
Antes de ejecutar una actualización completa del software (sudo apt full-upgrade) es conveniente que revises el espacio disponible que tenés en la SD con el comando df -h. |
Liberación de espacio
Cuando instalás software - y principalmente cuando corrés el comando sudo apt full-upgrade - se pueden descargar muchos paquetes que pueden ocupar un espacio considerable en la memoria SD. Los paquetes primero se descargan en archivos .deb y luego se instalan en el sistema. Una vez que instalaste un paquete los archivos .deb ya no son necesarios. Para el caso de Raspberry Pi OS se almacenan en el directorio /var/cache/apt/archives, y podés eliminarlos con este comando.
sudo apt clean |
Raspi-config es una herramienta por línea de comandos que tiene como objetivo realizar cambios de configuración comunes dentro del sistema operativo. Al realizar las configuraciones desde esta interfaz, por detrás se editan archivos como /boot/config.txt y otros archivos de configuración de Linux. Esta opción es preferible si te sentís cómodo ejecutando comandos desde la terminal, y tiene un aspecto similar a esta imagen.
La manera gráfica de configurar el sistema operativo es a través de las preferencias. Para acceder, desde el entorno gráfico deberías ir al menú de inicio, seleccionar las preferencias y luego la configuración de Raspberry Pi OS, como podés ver en esta imagen.
En la configuración vas a poder editar prácticamente lo mismo que a través de raspi-config, y sus pestañas se organizan entre configuraciones de sistema, de interfaces, de performance y de localización.
La Raspberry Pi usa un archivo de configuración en lugar del tradicional BIOS de las PCs convencionales. Los parámetros de configuración del sistema, que podrías editar y almacenar en la BIOS se guardan en un archivo de texto que se encuentra en el path /boot/config.txt.
La GPU lee el archivo antes que inicien la CPU ARM y el sistema operativo, y por esta razón debe estar ubicado en la primera partición (de arranque) de la tarjeta SD, junto con bootcode.bin y start.elf.
Cualquier cambio que realices tendrá efecto después que reinicies la Raspberry Pi. Después de que Linux se haya iniciado, podés ver las configuraciones usando el comando vcgencmd get_config <config>. Veamos algunos ejemplos en los siguientes comandos:
# Muestra la config de la frecuencia del CPU |
El archivo config.txt es leído por el firmware de arranque de la etapa inicial, por lo que tiene un formato de archivo muy simple con una forma de declaración propiedad = valor en cada línea, donde el valor puede ser un número entero o un string. Se pueden agregar comentarios, o se pueden comentar los valores de configuración existentes con el carácter #. Hay un límite de 80 caracteres cada línea y cualquier carácter que supere este límite será ignorado. Veamos un ejemplo de este archivo.
# Force monitor to HDMI mode so that sound will be sent over HDMI cable |
El archivo de configuración está dividido en rangos que tienen opciones de configuración relacionadas a la memoria, codecs y llaves, video y displays, audio, cámara, booteo, puertos y árbol de dispositivos, GPIOs, overclocking, filtros y otros. Si querés saber más al respecto podés dirigirte a la documentación oficial en este link.
Las configuraciones que vimos hasta ahora son las más comunes que te podés encontrar a la hora de trabajar con Raspberry Pi OS, aunque hay muchísimas más que podés controlar para configurar el sistema operativo a tus necesidades. Para esos casos podés referirte a la documentación oficial, donde siempre vas a encontrar las últimas actualizaciones. Más allá de esto, a continuación te listamos algunas configuraciones interesantes que podés realizar.
Ahora que ya tenés un mejor entendimiento del sistema operativo, cómo está estructurado, cómo mantener el software y dónde realizar las configuraciones más específicas, veamos algunas formas de acceder a la Raspberry Pi de manera remota que te van a facilitar mucho las tareas de desarrollo y la operatoria.
El primer paso para acceder de manera remota a la Raspberry Pi, es conocer su dirección IP. Veamos algunas formas de conocer la IP.
Conexión con monitor, teclado y mouse
Si tenés conectado un monitor y teclado a la Raspberry y ya está conectada a una red, lo más fácil es abrir una terminal y ejecutar el comando ifconfig. Esto determinará la IP local asignada por el router, que como vemos en esta imagen es 192.168.0.255.
Usando nmap
En caso que la Raspberry no esté conectada a un monitor, ni teclado y mouse, podés instalar la herramienta nmap, que escanea los hosts dentro de un rango de red especificado. La instalación puede realizarse en cualquier sistema operativo.
Una vez que instales nmap, necesitas conocer la IP que el router le asignó a tu host. Para esto, podés correr con el comando ifconfig que vimos para la Raspberry si estás en Linux, y sino correr el comando ipconfig si estás en Windows. Una vez que sepas tu IP podés determinar la subnet dentro de la que se encuentra.
Para poner un ejemplo, supongamos que la IP de tu host es 192.168.1.9, entonces podés determinar que el rango de direcciones que asigna el router es 192.168.1.X. Siendo así, podés correr el comando nmap -sn 192.168.1.0/24 que arrojará los hosts conectados a esa subnet, como por ejemplo una salida similar a la siguiente.
Starting Nmap 6.40 ( http://nmap.org ) at 2014-03-10 12:46 GMT Nmap scan report for hpprinter (192.168.1.2) Host is up (0.00044s latency). Nmap scan report for Gordons-MBP (192.168.1.4) Host is up (0.0010s latency). Nmap scan report for ubuntu (192.168.1.5) Host is up (0.0010s latency). Nmap scan report for raspberrypi (192.168.1.8) Host is up (0.0030s latency). Nmap done: 256 IP addresses (4 hosts up) scanned in 2.41 seconds |
De esta forma, podemos determinar que la Raspberry Pi tiene asignada la IP 168.168.1.8 que te va a servir para conectarte luego. Para más información sobre el uso de nmap, podés consultar la documentación oficial.
A veces no es conveniente trabajar directamente en la Raspberry Pi y tal vez sea útil trabajar en el sistema desde otro dispositivo. VNC es un sistema gráfico compartido que te permite controlar de forma remota el escritorio de una computadora - que ejecuta un VNC Server - desde otro dispositivo que ejecuta un VNC Viewer. El Viewer transmite las acciones de teclado y mouse al VNC Server, y recibe actualizaciones en la pantalla provenientes del sistema remoto como si estuvieras trabajando en la propia Raspberry Pi. En esta imagen podemos ver cómo se vería.
VNC Connect - que incluye tanto VNC Server como VNC Viewer - viene instalado de manera nativa en Raspberry Pi OS. El VNC Server te permite controlar la Raspberry Pi de forma remota, y VNC Viewer te permite controlar otras computadoras desde la Raspberry Pi.
Habilitar la interfaz VNC
Para poder utilizar esta utilidad es necesario que la interfaz de VNC esté habilitada en el sistema, para eso tenés que habilitarla desde Preferences->Raspberry Pi Configuration->Interfaces y tildar el botón de VNC, como vemos en esta imagen.
También podés habilitar la opción de VNC desde la herramienta raspi-config. En cualquiera de los dos casos, es necesario que reinicies el sistema una vez que habilites la opción para que tenga efecto.
Conexión desde un cliente VNC
Ahora que la interfaz está habilitada en la Raspberry es hora de conectarte de manera remota. Para ello podés descargar el VNC Viewer para tu sistema operativo en este link. Una vez que lo tengas, ingresá la IP de la Raspberry como vimos anteriormente. En el proceso de conexión te va a pedir que ingreses el usuario y contraseña del sistema que por defecto es pi y la contraseña raspberry. Cuando la conexión se haya establecido verás una pantalla como esta, que seleccionandola te abrirá el escritorio de la Raspberry Pi.
Si querés saber todo lo que se puede hacer usando VNC es recomendable que leas la documentación oficial en este link.
Conectarte por SSH a la Raspberry Pi es probablemente el mejor método para que puedas controlarla desde tu máquina de desarrollo. El primer paso necesario para conectarte por SSH a la Raspberry es que habilites la interfaz. Para ello tenés que hacerlo desde Preferences->Raspberry Pi Configuration->Interfaces y tildar el botón de SSH, como vemos en esta imagen.
También podés habilitar la opción de SSH desde la herramienta raspi-config. En cualquiera de los dos casos, es necesario que reinicies el sistema una vez que habilites la opción para que tenga efecto.
Una vez que esté habilitado en la Raspberry vas a tener que conectarte desde un cliente. La mayoría de las distribuciones modernas de Linux y MacOS vienen con la herramienta instalada, y en el caso de Windows podés usar un cliente como Putty.
En cualquier caso deberías ingresar la IP de la raspberry y el usuario con el cual te vas a loggear. Por ejemplo, podés correr este comando que se conecta a la IP 192.168.1.8 con el usuario pi.
ssh pi@192.168.1.8 |
Si es la primera vez que te conectas te mostrará un cartel para agregarlo a los hosts conocidos. Escribí "YES" y ya vas a estar conectado a la raspberry. A partir de ese momento te podés manejar por la consola como si estuvieras manejandola de manera local.
Si querés saber todo lo que se puede hacer usando SSH es recomendable que leas la documentación oficial en este link.
Si querés enviar y recibir archivos entre tu máquina de trabajo y la Raspberry, podés hacerlo a través de varios métodos. Algunos de ellos son usando SCP (Secure Copy) y FTP (File Transfer Protocol).
SCP
Para conectarte por scp es similar a cómo lo hicimos por SSH. Supongamos que queremos enviar el archivo config.json a la raspberry y queremos guardarlo dentro del directorio projects/config, en la Raspberry. Para ello deberíamos ejecutar un comando como el siguiente.
scp config.json pi@192.168.1.8:projects/config |
Del mismo modo, podemos copiar un archivo desde la Raspberry a nuestra estación de desarrollo. Para este ejemplo vamos a traer todas las imágenes del directorio project/images en la Raspberry y la vamos a guardar en el directorio actual.
scp -r pi@192.168.1.8:projects/images . |
FTP
La transferencia de archivos y directorios por consola no es lo más práctico si tenés que copiar varios ítems desde y hacia la Raspberry. Para esto, es conveniente usar FTP. Hay muchas formas de realizar esta tarea con programas dedicados como FileZilla. En cualquier programa que uses es necesario que una vez que lo instales accedas a la Raspberry ingresando la IP, el usuario y contraseña correspondientes.
Otra opción útil - que funciona al menos en sistemas Linux basados en Debian - es usar directamente el gestor de ventanas del sistema para conectarte a la Raspberry y acceder a su sistema de archivos como si lo estuvieras haciendo de manera local. Ingresando en la barra de búsqueda superior el protocolo, la IP y el usuario es posible conectarte a la Raspberry. Por ejemplo al ingresar esta dirección sftp://pi@192.168.1.8 el gestor de ventanas te pedirá la contraseña de acceso y luego podrás manejar la Raspberry desde el gestor de archivos como si fuera de manera local.
Lo que vimos hasta ahora fueron los métodos más comunes que hay para acceder a la Raspberry de manera remota. Lo cierto, es que en la mayoría de los casos te va a convenir controlarla de esta manera antes que hacerlo desde un monitor con teclado y mouse. Si bien los métodos que vimos resultan muy útiles, tal vez necesites acceder de otras maneras. Por eso es conveniente que veas la documentación oficial y explores todas las opciones disponibles.
En la mayoría de los casos, todas las opciones de configuración y acceso remoto que vimos hasta ahora te van a alcanzar para las tareas del día a día y que puedas lograr proactividad en el uso del sistema operativo. En esta sección te listamos algunas utilidades extra que te pueden servir a la hora de manejar la Raspberry.
Si estuviste desarrollando una aplicación en la Raspberry - como por ejemplo un dashboard de datos - y querés que la placa únicamente cumpla esa función, es necesario que configures la ejecución de tu aplicación en el arranque del sistema sin esperar que la inicies manualmente. Para ello es necesario editar el autorranque del sistema. En el siguiente snippet te mostramos la configuración de inicio para no mostrar el splash screen (la pantalla de colores) y ejecutar un script propio llamado my_autostart.sh cuando el sistema operativo esté listo.
@lxpanel --profile LXDE-pi |
Una vez que tengas un script que tengas el autostart configurado, es necesario realizar algunas tareas para que tu aplicación se visualice correctamente. Imaginando que la aplicación es un servidor web en python que ejecuta el dashboard, y querés abrirlo en el navegador, tu script de inicialización debería ser similar al siguiente.
#!/bin/sh |
En este documento abarcamos gran cantidad de información sobre el uso de Raspberry Pi OS, cómo manejar el sistema de forma remota y algunas utilidades adicionales. Esto es el comienzo de un apasionante camino sobre el mundo de Raspberry Pi, donde vas a encontrar miles de casos de uso. Para hacer un resumen, vimos los siguientes temas:
Este material es distribuido bajo licencia Creative Commons BY-SA 4.0. Podés encontrar detalles sobre el uso del material en este link.