Читать книгу Raspberry Pi® a fondo para desarrolladores - Derek Molloy - Страница 11

Оглавление

Capítulo

2

El software del Raspberry Pi

En este capítulo se nos presenta el sistema operativo Linux junto con herramientas software que podremos utilizar con el Raspberry Pi (RPi). El objetivo de este capítulo es aprender a conectar nuestra placa a una red o conexión serie y controlarla mediante comandos de Linux básicos. Asimismo, se examinan herramientas de configuración específicas para personalizar el RPi y para actualizar el software de la placa. Tras completar el capítulo, el lector debería ser capaz de controlar un LED del sistema en la placa a través de comandos Linux que habrá aprendido siguiendo un tutorial paso a paso. Este ejemplo le mostrará cómo enviar comandos del shell de Linux a través de una ventana de terminal. El capítulo finaliza con un análisis de la mejor manera de apagar y reiniciar la placa correctamente y con seguridad.

Materiales necesarios para este capítulo:

❏Una placa Raspberry Pi (idealmente RPi3, 2, o B+).

❏Un cable de alimentación USB y una fuente de alimentación.

❏Una tarjeta micro-SD (a partir de 8 GB e idealmente de Clase 10 o superior).

❏Infraestructura y cableado de red, cable serie o adaptador WiFi.

Puede encontrar más detalles sobre este capítulo en la dirección:

www.exploringrpi.com/chapter2/.

Linux en el Raspberry Pi

Una Linux distribution es una versión de dominio público de Linux que contiene un conjunto determinado de herramientas y programas. Existen numerosísimas distribuciones diferentes de Linux, que suelen estar orientadas a distintas aplicaciones. Por ejemplo, los propietarios de servidores de alto nivel pueden instalar las distribuciones Red Hat Enterprise, Debian u OpenSUSE; los usuarios de ordenadores personales, Ubuntu, Debian, Fedora o Linux Mint. El alma común a todas las distribuciones es el núcleo (kernel) de Linux, concebido y desarrollado por Linus Torvalds en 1991.

A la hora de decidirnos por una u otra distribución de Linux para nuestro sistema empotrado, lo más sensato sería optar por una que cumpliera los siguientes requisitos:

❏Una distribución estable y con buen soporte.

❏Una distribución que incluya un gestor de paquetes de calidad.

❏Que sea compacta y pensada para ocupar poco espacio de almacenamiento.

❏Que cuente con el soporte de una buena comunidad de usuarios para nuestro dispositivo concreto.

❏Que incluya buenos controladores para los periféricos que vayamos a usar.

Distribuciones de Linux para el RPi

En esencia, las abundantes distribuciones Linux para sistemas empotrados utilizan todas el mismo núcleo estándar de Linux. Sin embargo, cada una incluye un conjunto de herramientas y configuraciones que resultan en experiencias de usuario muy diferentes. Las principales distribuciones de Linux de código abierto empleadas por la comunidad de usuarios de RPi son Raspbian, Ubuntu, OpenELEC y Arch Linux.

Raspbian es una versión de Debian concebida específicamente para el RPi. Debian (una abreviación de Debbie e Ian) es una distribución Linux dirigida por su comunidad de usuarios, que pone mucho énfasis en el desarrollo de código abierto. Ninguna organización comercial participa en el desarrollo de Debian. Raspbian amplía Debian con herramientas y paquetes de software, por ejemplo Java, Mathematica o Scratch, específicos para el RPi. En la actualidad tenemos disponibles tres versiones de Raspbian para descargar desde la web de Raspberry Pi:

❏Raspbian Jessie: es una imagen basada en Debian Jessie (Debian versión 8.x) con soporte completo de escritorio. (Tamaño de imagen: sobre 1,3 GB comprimida y unos 4 GB descomprimida).

❏Raspbian Jessie Lite: una imagen con tamaño mínimo basada también en Debian Jessie. Cuenta con un soporte de escritorio limitado, pero que se le puede ampliar fácilmente más adelante. (Tamaño de imagen: sobre 375 MB comprimida y unos 1,4 GB descomprimida).

❏Raspbian Wheezy: una imagen antigua basada en Debian Wheezy (Debian versión 7.x) que está disponible por motivos de compatibilidad con ciertos paquetes de software. Siempre que nos sea posible elegiremos la imagen Jessie, en particular si pretendemos realizar compilación cruzada de aplicaciones.

NOTA Raspbian (Jessie) se utiliza en los ejemplos paso a paso de este libro y, por tanto, es la distribución que recomendamos con insistencia. Asimismo, Debian es la distribución Linux de escritorio que utilizamos en el libro porque ofrece un excelente soporte para el desarrollo multiplataforma gracias a sus toolchain para compilación cruzada (www.debian.org).

Ubuntu es una distribución íntimamente relacionada con Debian. De hecho, la siguiente descripción es la de la propia web de Ubuntu (www.ubuntu.com): "Debian es la piedra sobre la que se edifica Ubuntu." Ubuntu es una de las distribuciones Linux más populares para el escritorio, sobre todo por su empeño en hacer Linux más accesible a los nuevos usuarios. Resulta fácil de instalar, tiene un soporte de controladores para escritorio excelente y también ofrece distribuciones binarias para el RPi. La baza principal de Ubuntu es la experiencia de usuario de su escritorio. Si se va a usar el RPi como dispositivo de computación de propósito general (véase el capítulo 14) Ubuntu puede ser la distribución que mejor se adapte a esa tarea.

OpenELEC (www.openelec.tv) se centra particularmente en las aplicaciones multimedia y sobre todo en Kodi (www.kodi.tv). Si desea utilizar el RPi como dispositivo multimedia para el hogar (home media center), esta distribución ofrece seguramente el mejor rendimiento. Las distribuciones OpenELEC utilizan generalmente un sistema de archivos de solo lectura, como squashfs (squash file system o squashFS), para un mayor rendimiento y fiabilidad. Sin embargo, tales optimizaciones dificultan el trabajo de prototipado y desarrollo.

Arch Linux (www.archlinuxarm.org) es una distribución de Linux ligera y flexible que persigue la simplicidad como objetivo principal. Su público son los usuarios de Linux de nivel medio o avanzado a los que ofrece control total, con la responsabilidad que conlleva, de la configuración del sistema. Hay disponibles versiones de Arch Linux ya compiladas y listas para el RPi. Sin embargo, comparada con otras distribuciones, en la actualidad ofrece menos soporte a los usuarios nuevos de Linux en la plataforma RPi.

La RPi Foundation desarrolló un instalador de Linux para usuarios nuevos llamado NOOBS, que contiene Raspbian pero ofrece la facilidad de descarga e instalación de otras distribuciones Linux. Numerosos kits incluyen una tarjeta SD con NOOBS junto con el hardware RPi. Sin embargo, si optamos por descargar e instalar una imagen Raspbian, deberíamos descargar directamente la imagen siguiendo las instrucciones de la sección siguiente.

Asimismo, han comenzado a aparecer otras soluciones no Linux, como Windows 10 IoT Core y RISC OS, para el RPi. Se trata de desarrollos muy interesantes y sin duda bienvenidos. Sin embargo, en la actualidad tienen un soporte limitado para dispositivos y requisitos de programación muy específicos si se los compara con Linux. Para seguir el libro, que se centra como sabemos en soluciones Linux, es mejor obviar dichas distribuciones.

Cómo crear una imagen Linux en una tarjeta SD para el RPi

La manera más fácil de configurar una tarjeta SD para iniciar con ella el RPi consiste en descargar el archivo de imagen de una distribución Linux (archivo con extensión .IMG , generalmente comprimido a su vez en formato .zip) desde el sitio web

www.raspberrypi.org/downloads y grabarlo en una tarjeta SD mediante una utilidad de grabación de imágenes. Las siguientes utilidades para grabación de imágenes convierten este proceso en algo sencillo y directo.

ADVERTENCIA Cuando grabamos el archivo de imagen de una distribución Linux en una tarjeta SD, se pierde todo el contenido anterior de la misma. Asegúrese de grabar la imagen descargada en el dispositivo correcto cuando utilice las herramientas aquí descritas.

❏Windows: Use Win32DiskImager (disponible en tiny.cc/erpi202). Introduzca la tarjeta SD antes de iniciar la aplicación y asegúrese bien de seleccionar la tarjeta SD correcta.

❏Mac OS y Linux: Utilice, con sumo cuidado, la herramienta para clonar discos dd. En primer lugar, identifique el dispositivo. Debería mostrarse como /dev/mmcblkXp1 o /dev/sddX en Linux, o bien /dev/rdiskX en Mac OS, donde la X es un número. Asegúrese de que X haga referencia a la tarjeta SD en la que desea escribir el archivo de imagen. Para ello puede comprobar, por ejemplo, que el espacio disponible en el dispositivo (escriba cat /proc/partitions) se corresponde con el tamaño de la tarjeta SD. Luego, desde una ventana de terminal, escriba el comando dd con privilegios de root (groso modo, equivalente a una cuenta de administrador de Windows, solo que en el mundo Linux es más apropiado aquel término), donde if será el nombre del archivo de entrada (input file) y of será el nombre del dispositivo de salida (un tamaño de bloque bs de 1M debería ser suficiente):

molloyd@desktop:~$ sudo dd bs=1M if=RPi_image_file.img of=/dev/XXX

NOTA Tanto el programa Win32DiskImager como el comando dd crearán una partición en la tarjeta SD del tamaño justo para grabar la imagen del sistema operativo, con independencia del espacio nominal de la misma. Este tema se tratará más adelante en este mismo capítulo.

Introduzca la tarjeta SD en el RPi, conecte el cable de red y enchufe el cable de alimentación micro-USB de 5 V. También podemos conectar un teclado y un ratón USB y un monitor con su cable HDMI al RPi para usarlo como dispositivo de computación de propósito general (véase el capítulo 14). No obstante, para proyectos de electrónica, el RPi se emplea como dispositivo empotrado independiente que se comunica a través de la interfaz de red. Por lo tanto, los pasos siguientes indican cómo conectar el RPi a una red para establecer comunicación con él.

Cómo conectarse a una red

Hay dos maneras principales de conectarnos y comunicar con el RPi mediante una red: con un cable Ethernet estándar o con un cable Ethernet cruzado. Conectar el RPi a una red puede resultar engorroso para los principiantes. Generalmente es algo sencillo de hacer en casa, donde uno tiene el control total de su propia red. Sin embargo, en redes locales complejas, como las de las universidades, podemos enfrentarnos a múltiples subredes para comunicaciones tanto por cable como inalámbricas. En redes tan complejas, las restricciones de enrutamiento pueden dificultar, si no hacer imposible, conectarse a un RPi mediante un cable Ethernet estándar. Ambos métodos resultan aptos para conectar nuestro RPi a Windows, a un Mac o a una máquina con Linux.

Cable Ethernet estándar

Cuando hablamos de usar un "cable Ethernet estándar", queremos decir que vamos a utilizar uno para conectar el RPi a una red local del mismo modo que haríamos con un ordenador de sobremesa o un portátil. Tanto para el usuario doméstico como para el usuario avanzado, una conexión estándar Ethernet a una red local es probablemente la mejor solución para las comunicaciones en red de su RPi. La tabla 2-1 relaciona las ventajas y desventajas que se presentan al utilizar este tipo de conexión. El problema principal reside en la complejidad de la red local. Si el lector comprende bien la configuración de su red y tiene acceso a los ajustes del router, esta es la mejor opción de lejos. Si el router de su red está instalado lejos de su ordenador de sobremesa, podría adquirir un pequeño switch para la red (entre 10 y 20 euros) o bien un punto de acceso inalámbrico con un router multipuerto integrado (por unos 30 euros). La segunda opción resulta muy útil para aplicaciones inalámbricas que empleen los dispositivos RPi 3, Zero o A+, así como para ampliar el alcance de su red inalámbrica.

NOTA Este análisis es asimismo relevante para la conectividad en red inalámbrica. Si se ve obligado a utilizar una conexión inalámbrica, por ejemplo para el RPi Zero, lea la sección "Comunicaciones por WiFi" al principio del capítulo 13 y, luego, vuelva a este punto. Para modificar los archivos de configuración de un adaptador WiFi puede utilizar un cable USB a TTL, que se describe en la sección siguiente. Asimismo, puede montar la tarjeta micro-SD destinada a la placa RPi en un ordenador con Linux, o en otra RPi, y hacer los cambios necesarios directamente en dichos archivos.

Tabla 2-1: Ventajas y desventajas de una conexión Ethernet estándar para el RPi.

VentajasDesventajas
Tenemos control total sobre la configuración de las direcciones IP, así como de la configuración de las IP estáticas/dinámicas.Podríamos necesitar privilegios de administrador, así como el conocimiento adecuado de la infraestructura de la red.
Podemos interconectar numerosas placas RPi a una sola red, incluidos dispositivos inalámbricos.El RPi necesita una fuente de alimentación, que puede ser un cable de corriente con adaptador, o bien alimentación PoE (Power over Ethernet) (véase el capítulo 12).
El RPi se puede conectar a Internet sin que haga falta que un ordenador lo esté.La configuración resulta más difícil para los principiantes si la estructura de la red es compleja.

El primer desafío de esta configuración es dar con nuestro RPi en la red. De forma predeterminada, el RPi se configura para solicitar una dirección IP al servidor DHCP (Dynamic Host Configuration Protocol, protocolo de configuración dinámica de Host). En un entorno de red local doméstica, este servicio lo provee generalmente un servidor DHCP integrado en el propio router (el aparato que todos tenemos en casa y que es router, módem, cortafuegos, elemento de red local y, en la actualidad, WiFi) que la conecta a Internet a través de nuestro ISP (Internet Service Provider, proveedor de servicio de Internet).

Los servidores DHCP asignan direcciones IP dinámicamente desde un grupo (pool) de direcciones para un intervalo fijo de tiempo llamado "tiempo de cesión" (lease time), que se especifica en la configuración del servidor DHCP. Este tipo de direcciones IP se denominan dinámicas. Una vez que expira el tiempo de cesión, nuestro RPi recibe una nueva dirección IP cuando vuelve a conectarse a la red local. Este cambio puede resultar frustrante porque podríamos tener que volver a buscar el RPi en la red local. El capítulo 13 describe cómo configurar la dirección IP de nuestro RPi para que sea la misma, es decir, para que sea una dirección IP estática, cada vez que la placa se conecte a la red.

Podemos usar cualquiera de los métodos siguientes para identificar la IP dinámica de nuestro RPi:

❏Navegador web: utilice un navegador web para acceder al router de su red local doméstica (generalmente la dirección de acceso es una de estas: 192.168.1.1, 192.168.0.1 o 10.0.0.1). Inicie sesión y busque la opción para acceder al estado de la tabla DHCP. Debería llegar a una entrada que detalle las direcciones IP asignadas, las direcciones físicas MAC y el tiempo de cesión restante para un dispositivo llamado "raspberrypi". El nombre de host de mi placa es "erpi", como ya sabemos, así que:

DHCP IP Assignment Table

IP Address MAC Address Client Host Name Leased Time

192.168.1.116 B8-27-EB-F3-0E-C6 erpi 12:39:56

❏Herramienta de escaneo de puertos: utilice una herramienta como nmap, en Linux, o bien Zenmap, que es una versión con interfaz gráfica de usuario (en adelante GUI, Graphical User Interface), disponible para Windows (diríjase a tiny.cc/erpi203). Para buscar dispositivos en una subred, escribimos nmap -T4 -F 192.168.1.*. Buscamos una entrada que tenga abierto el puerto 22 para SSH. Debería identificarse a sí mismo con la Raspberry Pi Foundation (véase la figura 2-1(a)) como resultado del rango de direcciones MAC asignado a la fundación. Después podrá hacer un ping para comprobar la conexión de red (véase la figura 2-1(b)).


Figura 2-1: (a) Zenmap escanea la red para localizar el RPi. (b) Un ping de prueba desde el ordenador.

❏Zeroconf (resolución de nombres de host con configuración cero): Zeroconf es un conjunto de herramientas para resolución de nombres de host, direccionamiento automático y descubrimiento de servicios. De forma predeterminada, la distribución Raspbian del RPi utiliza un servicio avahi para dar soporte a Zeroconf en nuestra red local, lo que permite que el nombre del host sea visible. Por ejemplo, el nombre de host de mi placa es "erpi". Así, es posible conectarse al RPi utilizando la cadena erpi.local:

pi@erpi:~$ systemctl status avahi-daemon

• avahi-daemon.service - Avahi mDNS/DNS-SD Stack

Loaded: loaded (/lib/systemd/system/avahi-daemon.service; enabled)

Active: active (running) since Thu 2015-12-17 21:53:46 GMT; 8h ago

Main PID: 385 (avahi-daemon)

Status: "avahi-daemon 0.6.31 starting up."

CGroup: /system.slice/avahi-daemon.service

├─385 avahi-daemon: running [erpi.local]

└─419 avahi-daemon: chroot helper

NOTA Las máquinas Windows no soportan Zeroconf de forma predeterminada. Puede instalar el software Bonjour Print Services for Windows (o bien iTunes) desde el enlace tiny.cc/erpi204. Si tiene éxito, ahora debería poder realizar un ping de prueba (de forma predeterminada el nombre es raspberrypi.local):

C:\Users\Derek> ping erpi.local

Pinging erpi.local [fe80::9005:94c0:109e:9ecd%6] with 32 bytes of data:

Reply from fe80::9005:94c0:109e:9ecd%6: time=1ms ...

❏Conexión serie USB a TTL: una última opción consiste en establecer una conexión serie USB a TTL con el RPi y escribir ifconfig para averiguar la dirección IP. La dirección es la “inet addr” asociada al adaptador eth0.

Cable Ethernet cruzado

Un cable Ethernet cruzado es un cable que ha sido modificado para facilitar la conexión y la comunicación directa de dos dispositivos sin necesidad de un switch intermedio. Es posible comprar el cable cruzado como tal, o bien adquirir un adaptador. La tabla 2-2 relaciona las ventajas y desventajas que se presentan al utilizar este tipo de conexión.

Tabla 2-2: Ventajas y desventajas de utilizar un cable de red cruzado.

VentajasDesventajas
Podremos conectar nuestro RPi a la red local aunque carezcamos de acceso a la infraestructura hardware de la misma.Si nuestro ordenador no tiene más que una conexión de red, no será posible conectarlo a Internet a través de la red cableada. Es más conveniente utilizarlo con un dispositivo que cuente con múltiples adaptadores.
El RPi puede gozar de acceso a Internet siempre que el ordenador posea dos adaptadores de red y que tenga activada la opción de compartir.El RPi seguirá precisando de una fuente de alimentación externa, que puede ser un cable con adaptador de corriente.
Proporciona una configuración de red local razonablemente estable.Podría requerir un cable Ethernet cruzado o adaptador especializados. Sin embargo, lo más probable es que nuestro ordenador tenga Auto-MDIX.

La mayoría de los ordenadores actuales son capaces de detectar automáticamente una conexión cruzada (es decir, host a host) gracias a la funcionalidad Auto-MDIX, lo que permite utilizar un cable Ethernet estándar. La interfaz de red del RPi también ofrece funcionalidad Auto-MDIX, de manera que se puede utilizar cuando se carezca de acceso a la infraestructura de la red local. Si dispone de dos adaptadores de red, por ejemplo una toma de red Ethernet y una tarjeta de red inalámbrica, podrá compartir fácilmente la conexión a Internet con su RPi estableciendo un puente entre ambos adaptadores. Como ejemplo, veamos los pasos necesarios para hacerlo en Windows:

1. Conecte uno de los extremos de un cable de red Ethernet estándar, o bien de uno cruzado, al RPi, y el otro a la toma de red de su ordenador.

2. Encienda el RPi conectando un cable de alimentación micro-USB.

3. Establezca ahora el puente entre ambas conexiones de red. En Windows, seleccione "Redes e Internet" y, luego, "Conexiones de red". Seleccione los dos adaptadores de red, tanto el cableado como el inalámbrico, al mismo tiempo. Haga clic con el botón derecho y seleccione la opción para puentear las conexiones. Pasado algún tiempo, las dos conexiones deberían aparecer habilitadas y puenteadas. Asimismo, la ventana de redes de Windows debería mostrar el puente de conexión (véase la figura 2-2).

4. Reinicie el RPi. De forma ideal, debería emplear un cable serie USB a TTL para hacer esto, o también el botón de reinicio descrito en el capítulo 1. Una vez reiniciado el RPi, debería ser capaz de obtener una dirección IP directamente desde el servidor DHCP de nuestra red local.

Después podrá comunicar directamente con el RPi desde cualquier terminal de su red local (incluyendo su propio ordenador principal) siguiendo los pasos descritos en la sección siguiente. La figura 2-2 muestra un ejemplo de configuración a partir de los datos mostrados dicha sección. Podemos observar cómo el servidor DHCP asigna al ordenador portátil la dirección IP 192.168.1.111, y al RPi, la 192.168.1.115. Por lo tanto, una sesión SSH desde el ordenador de sobremesa, que tiene la dirección IP 192.168.1.4, hacia el RPi ofrece la siguiente interacción:

molloyd@desktop:~$ ssh pi@192.168.1.115

pi@192.168.1.115's password: raspberry

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

pi@erpi ~ $ echo $SSH_CLIENT

192.168.1.4 60898 22

pi@erpi ~ $ ping www.google.com

PING www.google.com (213.233.153.230) 56(84) bytes of data.

64 bytes from www.google.com (213.233.153.230):icmp_seq=1 ttl=61 time=13.6ms


Figura 2-2: Un ejemplo de configuración con cable Ethernet cruzado.

Los iconos de la imagen fueron creados por los artistas del proyecto GNOME (GNU GPL CC-BY-SA-3.0).

Este tipo de conexión es particularmente útil en el seno de una red local compleja, por ejemplo la de una universidad, porque así el portátil se puede conectar directamente con el RPi. Asimismo, el RPi podrá, a su vez, conectarse a Internet, como queda ilustrado en este ejemplo por su capacidad para enviar un ping al servidor web de Google.

Cómo comunicarse con el RPi

Después de conectar el RPi a la red, lo siguiente sería comunicarnos con él. Podemos conectar con el RPi usando, o bien una conexión serie USB a TTL, o bien una nueva conexión de red, como se ha descrito anteriormente. La conexión de red debería ser nuestro objetivo principal porque es el tipo de conexión que proporciona acceso pleno a Internet al RPi. La conexión serie sirve generalmente como conexión de respaldo para el caso de que surjan problemas con la de red. Por tanto, el lector puede obviar si lo desea la sección siguiente, pero la información estará ahí como referencia.

NOTA La cuenta de usuario predeterminada de la imagen Raspbian es: username pi (nombre de usuario pi) y password raspberry (contraseña raspberry).

Conexión serie con el cable USB a TTL de 3,3 V

Las conexiones serie resultan especialmente útiles cuando tenemos el RPi muy cerca de nuestro ordenador y conectado mediante un cable USB a TTL (como vimos en la figura 1-7(a) del capítulo 1). Es un método de comunicación de seguridad habitual para el caso de que fallen las comunicaciones a través de la red o los servicios en el RPi. También sirve para configurar la conectividad de red inalámbrica en un dispositivo RPi que carezca de toma para cable de red. Podemos conectar el cable al RPi, como se mostró en la figura 1-7(b) del capítulo 1.

Para conectarse al RPi a través de la conexión serie, necesitamos un programa de terminal. Existen varias aplicaciones de este tipo para Windows, por ejemplo RealTerm (tiny.cc/erpi205) o PuTTY (www.putty.org). La mayoría de las distribuciones Linux incluyen un programa de terminal. En Debian pulse Ctrl+Alt+T o Alt+F2 y escriba: gnome-terminal. Mac OS X incluye un emulador de terminal de forma predeterminada, donde puede escribir, por ejemplo, el comando screen /dev/cu.usbserial-XXX 115200). También puede instalar el programa Z-Term (véase dalverson.com/zterm/).

Para conectarse al RPi a través de la conexión serie USB a TTL, necesitamos la información siguiente:

❏Número de puerto: para averiguarlo en Windows, abra el gestor de dispositivos o equivalente según versiones y busque en la sección "Puertos". En la figura 2-3(a) podemos observar una ventana de ejemplo del gestor de dispositivos, donde el dispositivo aparece como puerto COM11. Esta información será diferente en cada ordenador

❏Velocidad de conexión: de forma predeterminada, introduciremos 115.200 baudios para conectar con el RPi.

❏Otra información que podría ser necesaria para otros programas de terminal: Data bits (bits de datos) = 8, Stop bits (bits de parada) = 1, Parity (paridad) = none y Flow control (control de flujo) = XON/XOFF.


Figura 2-3: (a) Identificación de dispositivo en el gestor de dispositivos de Windows.

(b) Una configuración de conexión serie con PuTTY. (c) Un adaptador USB a TTL de bajo coste.

Guarde la configuración con un nombre de sesión, por ejemplo "RPi USB-to-TTL", como se puede ver en la figura 2-3(b), de manera que esté disponible cada vez que desee utilizarla. Haga clic en "Abrir" y, luego, pulse Intro cuando aparezca la ventana. Esto es muy importante. Cuando se conecte a Raspbian, debería observar la salida siguiente:

Raspbian GNU/Linux 8 erpi ttyAMA0

erpi login: pi

Password: raspberry

Last login: Fri Dec 18 02:12:32 GMT 2015 from ...

Linux erpi 4.1.13-v7+ #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015 armv7l

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

pi@erpi:~$

El proceso de conexión nos permite conectar con el nombre de usuario "pi" y la contraseña "raspberry". Observe cómo, cuando reinicia la placa, también puede ver toda la salida por la consola durante el inicio del RPi. Esta es la conexión de respaldo definitiva, puesto que nos permite observar lo que sucede durante el proceso de inicio, como veremos en el capítulo 3.

NOTA Existen alternativas baratas al cable USB a TTL de 3,3 V, por ejemplo el dispositivo USB mostrado en la figura 2-3(c), que cuesta alrededor de un euro. Sin embargo, en general carecen de carcasa o proteción de seguridad alguna. En todo caso, antes de comprar un dispositivo de este tipo, asegúrese de que soporta niveles lógicos TTL de 3,3 V. El que aparece en la figura 2-3(c) incorpora un conmutador que permite intercambiar los niveles lógicos entre 3,3 y 5 V. Estos dispositivos se emplean en el capítulo 9 para ampliar el número de dispositivos UART disponibles en el RPi.

En un ordenador con Linux, podrá instalar el programa Screen y conectarse con el dispositivo USB a TTL con los comandos siguientes:

molloyd@debian:~$ sudo apt-get install screen

molloyd@debian:~$ screen /dev/cu.usbserial-XXX/ 115200

Conexión segura con SSH (Secure Shell)

El protocolo de red SSH (Secure Shell) se emplea para establecer conexiones cifradas seguras entre dispositivos en una red. Podemos utilizar un cliente de terminal SSH para conectar con un servidor SSH a través del puerto 22 del RPi, lo que nos permitirá hacer lo siguiente:

❏Conectar en remoto con el RPi y ejecutar comandos.

❏Transferir archivos desde y hacia el RPi usando el protocolo SFTP (SSH File Transfer Protocol, protocolo de transferencia de archivos SSH).

❏Redireccionar conexiones X11, lo que permite la computación en redes virtuales.

De forma predeterminada, las distribuciones Linux para RPi ejecutan un servidor SSH (sshd en Debian) vinculado al puerto 22. Contar con un servidor SSH disponible como medio predeterminado para iniciar sesión remota en el RPi tiene ciertas ventajas.

En particular, nos permite abrir el puerto 22 del RPi a Internet mediante la funcionalidad de redirección de puertos (port forwarding) de nuestro router. Por favor, asegúrese de modificar la contraseña predeterminada para la cuenta de usuario "pi" antes de hacerlo. Después podremos iniciar sesión en nuestro RPi de forma remota desde cualquier lugar del mundo, siempre que conozcamos su dirección IP. El servicio de DNS dinámico (Dynamic DNS, DDNS o DynDNS), permite a la los routers que lo ofrecen (la mayoría) registrar su dirección IP más reciente en un servicio en línea. Acto seguido, dicho servicio en línea hace corresponder un nombre de dominio de nuestra elección con la última dirección IP que nuestro proveedor de acceso nos haya asignado, es decir, los mapea. El servicio de DNS dinámico suele tener un coste anual, a cambio del que obtendremos una dirección con la forma dereksRPi.servicename.com.

Conexiones SSH (Secure Shell) mediante PuTTY

Anteriormente mencionamos PuTTY como un método para conectar con el RPi a través de una conexión serie. PuTTY es una pequeña aplicación, gratuita y de código abierto, emuladora de terminal, consola serie y cliente SSH, que podemos emplear para conectar con el RPi a través de una red local. PuTTY posee varias características útiles:

❏Admite conexiones serie y SSH.

❏Instala una aplicación llamada psftp que permite transferir archivos hacia y desde el RPi por la red desde nuestro ordenador.

❏Acepta el redireccionamiento SSH X11 (exigido en el capítulo 14).

La figura 2-4 muestra los ajustes de configuración de PuTTY. Seleccione SSH como tipo de conexión, introduzca la dirección IP de su RPi (o el nombre de Zeroconf), acepte el puerto 22 (predeterminado) y guarde la sesión con un nombre significativo. Haga clic en "Open" ("Abrir") e inicie sesión con su nombre de usuario y contraseña. Si observa una alerta de seguridad que le advierte de posibles "ataques de intermediario" (man-in-the-middle attacks), que pueden resultar preocupantes en redes inseguras, acepte la huella de clave (fingerprint) ofrecida y continúe. Los usuarios de Mac OS X pueden abrir la aplicación Terminal con una configuración similar (por ejemplo, ssh -XC pi@192.168.1.116 o ssh -XC pi@raspberrypi.local).


Figura 2-4: Ajustes de configuración SSH de PuTTY sobre una ventana de conexión de terminal SSH.

Más adelante en este mismo capítulo veremos los comandos básicos que se pueden enviar al RPi, pero antes es necesario examinar cómo podemos transferir archivos desde y hacia el RPi.

Chrome Apps: cliente Secure Shell

El navegador web Chrome de Google permite la instalación de Chrome Apps. Se trata de aplicaciones que operan igual que las instaladas en el propio ordenador (nativas), pero escritas en HTML5, JavaScript y CSS. Muchas de estas aplicaciones utilizan el cliente nativo Google Native Client (NaCl), que no es otra cosa que una tecnología de aislamiento de procesos, sandbox para abreviar, que permite ejecutar aplicaciones compiladas C/C++ directamente en el navegador, con independencia del sistema operativo (SO) subyacente. La ventaja de NaCl es que posibilita que las aplicaciones alcancen niveles de rendimiento casi iguales a las nativas del SO, puesto que pueden contener código fuente capaz de utilizar instrucciones de bajo nivel.

Existe una aplicación Chrome App capaz de emular un terminal SSH que resulta extremadamente útil. Para instalarla en Chrome, abra una nueva pestaña y haga clic en el icono "Apps". Si en su versión de Chrome no aparece el acceso a Chrome Web Store, escriba "chrome web store" en la barra de direcciones y pulse Intro. En el campo de búsqueda de dicha página, escriba "Secure Shell". Localice la App e instálela. Acabado el proceso, la App Secure Shell aparecerá junto con las demás aplicaciones para Chrome. Si no puede acceder a ellas por su versión o configuración de Chrome, escriba "chrome://apps" en la barra de direcciones y podrá acceder a sus iconos. Cuando inicie la App Secure Shell deberá configurar los ajustes de conexión como en la figura 2-4 y la aplicación se ejecutará en una pestaña como en la figura 2-5.


Figura 2-5: La App Secure Shell para Chrome.

Como transferir archivos mediante PuTTY/psftp sobre SSH

La instalación de PuTTY incluye también compatibilidad con el protocolo FTP (File Transfer Protocol) de transferencia de archivos. Este nos permite transferir archivos hacia y desde el RPi utilizando nuestra conexión de red. Puede iniciar la aplicación PuTTY Secure File Transfer Protocol escribiendo psftp en el intérprete de comandos de Windows. No olvide que para que esto funcione debe incluir el directorio del ejecutable putty.exe en la variable de entorno PATH de su sistema.

En el prompt psftp> , escriba open pi@raspberrypi.local (o la dirección IP) para conectar con el RPi. Nuestro ordenador se identifica ahora como máquina local, local machine, y el RPi, como máquina remota (remote machine). Cuando emita un comando, normalmente lo hará en la máquina remota. Después de conectar, nos encontraremos en la carpeta de usuario (o directorio home directory) de la cuenta que hayamos utilizado. Por lo tanto, bajo la distribución RPi Raspbian, si nos conectamos como "pi", estaremos en el directorio /home/pi/.

Para transferir un solo archivo c:\temp\test.txt desde el ordenador local hasta el RPi, seguiremos los pasos que se detallan a continuación:

psftp: no hostname specified; use "open host.name" to connect

psftp> open pi@erpi.local

Using username "pi".

pi@erpi.local's password: raspberry

Remote working directory is /home/pi

psftp> lcd c:\temp

New local directory is c:\temp

psftp> mkdir test

mkdir /home/pi/test: OK

psftp> cd test

Remote directory is now /home/pi/test

psftp> put test.txt

local:test.txt => remote:/home/pi/test/test.txt

psftp> dir test.*

Listing directory /home/pi/test

-rw-r--r-- 1 pi pi 8 Dec 18 16:45 test.txt

psftp>

Los comandos que contienen el prefijo l se dirigen a la máquina local, por ejemplo lcd (local change directory) para cambiar el directorio local o lpwd (local print working directory) para el directorio de impresión local. Para transferir un solo archivo desde la máquina local a la máquina remota, empleamos el comando put. Para realizar la operación inversa, traer un archivo de la máquina remota a la máquina local, usamos get. Para enviar o traer múltiples archivos están los comandos mput y mget. Si nos olvidamos de un comando, escribimos help para obtener ayuda.

Si utilizamos una máquina cliente con Linux, podemos emplear el comando sftp en lugar de psftp. Casi todo lo demás queda igual. La aplicación cliente sftp también está instalada en la distribución del RPi de manera predeterminada, así que podrá invertir el orden de las comunicaciones, es decir: podremos hacer que el RPi actúe como servidor y otra máquina como cliente.

Aquí mostramos algunos trucos y consejos útiles para el uso de los comandos psftp y sftp :

❏El comando mget -r * realiza una recuperación recursiva de todo un directorio. Esto resulta útil cuando queremos transferir una carpeta que contenga a su vez varias carpetas. También podemos utilizar la opción -r con los comandos get, put y mput.

❏El comando dir *.txt aplica un filtro para mostrar solo los archivos acabados en ".txt" del directorio actual.

❏El comando mv mueve un archivo o directorio de la máquina remota a una nueva ubicación en la propia máquina remota.

❏El comando reget reinicia una recuperación de archivos que se hubiera interrumpido. El archivo recuperado parcialmente debe continuar existiendo en la máquina local.

El comando psftp se puede enviar como una sola línea o como un script local desde el símbolo del sistema. Puede crear un archivo de prueba, test.scr, que contenga un conjunto de comandos psftp que necesite enviar. Ejecute después psftp desde el símbolo del sistema, pasando la contraseña con -pw y el archivo de script con -b (o -be para continuar aun con errores y -bc para mostrar los comandos a medida que se ejecutan), del siguiente modo:

c:\temp>more test.scr

lcd c:\temp\down

cd /tmp/down

mget *

quit

c:\temp>psftp pi@erpi.local -pw mypassword -b test.scr

Using username "pi".

Remote working directory is /home/pi ...

Control del Raspberry Pi

En este punto, deberíamos ser capaces de comunicarnos con el RPi mediante una aplicación cliente SSH. Esta sección analiza los comandos que podemos emitir para interaccionar con el RPi.

Comandos básicos de Linux

Cuando se conecte por primera vez con el RPi mediante SSH, se le pedirá que inicie sesión. Podrá hacerlo la primera vez con el usuario "pi" y la contraseña "raspberry":

login as: pi

pi@erpi.local's password: raspberry

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

pi@erpi:~$

Ya estamos conectados al RPi y tenemos la ventana de terminal en Linux lista para recibir los comandos. El símbolo del sistema, $ ,indica que hemos iniciado sesión como un usuario estándar. Por su parte, # indica que hemos iniciado la sesión en la cuenta de superusuario o root (véase el capítulo 3). Para un nuevo usuario de Linux, este paso puede resultar un desafío, puesto que es difícil hacerse con todo el arsenal de comandos a nuestra disposición. En esta sección intentaremos que el lector alcance un nivel de Linux suficiente para empezar con confianza. Se ha escrito como referencia y acompañada de ejemplos, de manera que pueda regresar a ella cuando necesite ayuda.

Primeros pasos

Lo primero que podríamos hacer nada más conectarnos es averiguar la versión de Linux que estamos ejecutando. Esta información resulta muy útil a la hora de publicar preguntas en foros de usuario.

pi@erpi ~ $ uname -a

Linux erpi 4.1.13-v7+ #826 SMP PREEMPT Nov 13 20:19:03 2015 armv7l GNU/Linux

Hemos utilizado Linux 4.1.13, compilado para la arquitectura ARMv7 en la fecha listada.

La versión del núcleo de Linux se describe por tres números, separados por puntos, de la forma: X.Y.Z. El número X cambia muy de tarde en tarde; la versión 2.0, por ejemplo, se publicó en 1996, y la 4.0, en abril de 2015. El número Y cambia un poco más a menudo, pero tampoco demasiado, cada dos años más o menos. Sin embargo, en el núcleo más reciente ha cambiado con bastante frecuencia: la versión 4.1 se publicó en junio de 2015. El número Z sí que cambia frecuentemente.

Después podemos utilizar el comando passwd para establecer una contraseña nueva para la cuenta de usuario "pi".

pi@erpi ~ $ passwd

Changing password for pi.

(current) UNIX password: raspberry

Enter new UNIX password: supersecretpasswordthatImayforget

Retype new UNIX password: supersecretpasswordthatImayforget

La tabla 2-3 lista otros comandos muy útiles.

Tabla 2-3: Esos primeros comandos de Linux tan útiles.

ComandoDescripción
more /etc/issueInforma sobre la distribución Linux que se está ejecutando.
ps -p $$Informa del shell o intérprete de comandos que estamos ejecutando (por ejemplo, bash).
whoamiInforma del usuario que ha iniciado sesión en el sistema.
uptimeDevuelve el tiempo que el sistema lleva en ejecución.
topLista todos los procesos y programas en ejecución. Pulse Control+C para cerrar la vista.

Por último, podrá encontrar información concreta sobre su RPi usando la aplicación host- namectl . También sirve para consultar y realizar cambios en los ajustes del sistema, como la descripción del chasis o el nombre de host:

pi@erpi ~ $ sudo hostnamectl set-chassis server

pi@erpi ~ $ hostnamectl

Static hostname: erpi

Icon name: computer-server

Chassis: server

Machine ID: 3882d14b5e8d408bb132425829ac6413

Boot ID: ea403b96c8984e37820b7d1b0b3fbd6d

Operating System: Raspbian GNU/Linux 8 (jessie)

Kernel: Linux 4.1.18-v7+

Architecture: arm

Comandos básicos del sistema de archivos

Esta sección describe los comandos básicos que nos permiten movernos y manipular el sistema de archivos de Linux. Cuando utilizamos cuentas de usuario Raspbian/Debian y Ubuntu, a menudo debemos anteponer el modificador sudo (superuser do o substitute user do). Lo hacemos porque sudo es un programa que permite a un usuario ejecutar programas que requieran privilegios de seguridad de superusuario, o también de otras cuentas restringidas. Las cuentas de usuario se describen en el capítulo 3. La tabla 2-4 lista los comandos básicos del sistema de archivos.

Tabla 2-4: Comandos básicos del sistema de archivos.

NombreComandoOpciones y más informaciónEjemplos
Listar archivosls-a los muestra todos, incluidos los ocultos.-l muestra el formato largo.-R listado recursivo.-r listado inverso (reverse).-t ordena por la última modificación.-S ordena por tamaños.-h muestra el tamaño en formato legible.ls -alh
Directorio actualpwdIndica el directorio actual.-P muestra la ubicación física.pwd -P
Cambiar directoriocdCambia el directorio.cd e Intro o cd ~/ nos lleva al directorio raíz del usuario.cd / nos lleva al directorio raíz del sistema.cd .. nos lleva a un nivel superior en el árbol de directorios.cd /home/picd /
Crear un directoriomkdirCrea un directorio.mkdir test
Borrar un archivo o directoriormBorrar un archivo.-r borrado recursivo (se usa con directorios; sea precavido).-d borra directorios vacíos.rm bad.txtrm -r test
Borrar un archivo o directoriocp-r copia recursiva.-u copia solo si el origen es más reciente que el destino, o bien si no se encuentra el destino.-v (verbose) muestra la salida durante la copia.cp a.txt b.txtcp -r test testa
Borrar un archivo o directoriomv-i solicita confirmación antes de sobreescribir.No hay opción -r para directorios. Mover al mismo directorio cambia su nombre.mv a.txt c.txtmv test testb
Crear un archivo vacíotouchCrea un archivo vacío o actualiza la fecha de modificación de un archivo existente.touch d.txt
Ver el contenido de un archivomoreMuestra el contenido de un archivo. Usamos la barra espaciadora para pasar a la siguiente página.more d.txt
Obtener calendariocalMuestra un calendario basado en carac-teres.cal 04 2016

Con esto cubrimos lo básico, pero hay mucho más. En el capítulo siguiente hablamos de propiedad y permisos de archivos, búsquedas, redirección de la entrada/salida o E/S (input/output o I/O), etc. El propósito de esta sección no es otro que ponernos en marcha. La tabla 2-5 describe unos cuantos atajos de teclado que nos facilitan mucho la vida con la mayoría de shells de Linux.

Tabla 2-5: Algunos atajos de teclado para Linux.

AtajoDescripción
Flecha arriba (repetir)Con la primera pulsación reproduce el comando que acabamos de escribir; luego, va mostrando los anteriores.
Tecla TabAutocompleta el nombre del archivo, del directorio o incluso del comando ejecutable. Por ejemplo, para cambiar al directorio /tmp de Linux, podemos escribir cd /t y, luego, pulsar Tab, que autocompleta el comando: cd /tmp/. Si aparecen demasiadas opciones, pulse Tab de nuevo y vea todas las opciones en forma de lista.
Ctrl+ALleva el cursor al principio de la línea que estamos escribiendo.
Ctrl+ELleva el cursor al final de la línea que estamos escribiendo.
Ctrl+UElimina el texto desde el cursor hasta el principio de la línea. Ctrl+E y, luego, Ctrl+U borran toda la línea.
Ctrl+LBorra la pantalla.
Ctrl+CCierra cualquier proceso en ejecución en el momento de pulsar.
Ctrl+ZPasa el proceso actual a un segundo plano. Escribir bg después lo deja en ejecución en segundo plano, y con fg lo volvemos a traer al primer plano.

Veamos un ejemplo que utiliza varios de los comandos de la tabla 2-4 para crear un directorio llamado test en el que creamos un archivo de texto vacío llamado hello.txt. Después copiamos todo el directorio test en el directorio /tmp/test2, que cuelga del directorio /tmp:

pi@erpi ~ $ cd /tmp

pi@erpi /tmp $ pwd

/tmp

pi@erpi /tmp $ mkdir test

pi@erpi /tmp $ cd test

pi@erpi /tmp/test $ touch hello.txt

pi@erpi /tmp/test $ ls -l hello.txt

-rw-r--r-- 1 pi pi 0 Dec 17 4:34 hello.txt

pi@erpi /tmp/test $ cd ..

pi@erpi /tmp $ cp -r test /tmp/test2

pi@erpi /tmp $ cd /tmp/test2

pi@erpi /tmp/test2 $ ls -l

total 0

-rw-r--r-- 1 pi pi 0 Dec 17 04:35 hello.txt

ADVERTENCIA Linux asume que sabemos muy bien lo que hacemos. Así, puede muy bien dejarnos hacer un borrado recursivo de todo nuestro directorio raíz si hemos iniciado sesión como root. ¡Piénselo dos veces siempre antes de escribir nada cuando haya iniciado sesión como root!

NOTA A veces es posible recuperar archivos que se hayan perdido por borrados accidentales usando el comando extundelete inmediatamente después del borrado.

Lea cuidadosamente la página del manual para dicho comando y, luego, use los pasos siguientes:

pi@erpi ~ $ sudo apt install extundelete

pi@erpi ~ $ mkdir ~/undelete

pi@erpi ~ $ cd ~/undelete/

pi@erpi ~/undelete $ sudo extundelete --restore-all --restore-directory

. /dev/mmcblk0p2

pi@erpi ~/undelete $ ls -l

drwxr-xr-x 6 root root 4096 Dec 17 04:39 RECOVERED_FILES

pi@erpi ~/undelete $ du -sh RECOVERED_FILES/

100M RECOVERED_FILES/

En este ejemplo se recuperan hasta 100 MB de archivos, que suelen ser archivos temporales borrados como resultado de la instalación de paquetes de software.

Variables de entorno

Las variables de entorno (environment variables) son valores con nombre que describen la configuración de nuestro entorno Linux, por ejemplo la ubicación de archivos ejecutables o el editor de texto predeterminado. Para hacernos una idea de las variables de entorno configuradas en el RPi, ejecute el comando env y verá una lista de dichas variables en nuestra cuenta de usuario. En este caso, env se invoca en la imagen Raspbian:

pi@erpi ~ $ env

TERM=xterm

SHELL=/bin/bash

SSH_CLIENT=fe80::50b4:eb95:2d00:ac3f%eth0 2599 22

USER=pi

MAIL=/var/mail/pi

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:...

PWD=/home/pi

HOME=/home/pi ...

Puede ver y modificar las variables de entorno de acuerdo con el ejemplo siguiente, que añade el directorio /home/pi a la variable de entorno PATH:

pi@erpi ~ $ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

pi@erpi ~ $ export PATH=$PATH:/home/pi

pi@erpi ~ $ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/pi

Este cambio se perderá después de reiniciar. Establecer las variables de entorno de manera definitiva requiere modificaciones en el archivo .profile, con los shells sh, ksh o bash, y en el archivo .login cuando usemos csh o tcsh. Para ello, necesitamos saber cómo realizar una edición básica de archivos en una ventana de terminal en Linux.

Edición básica de archivos

Contamos con una variedad de editores de texto, pero uno de los más fáciles de usar es también el más potente: el editor GNU nano editor. Iniciamos el editor escribiendo nano seguido del nombre de un archivo existente, o bien de uno nuevo; por ejemplo, nano hello.txt muestra la vista capturada en la figura 2-6 (una vez se ha introducido el texto). Escribir nano -c hello.txt muestra el número de línea actual, lo que puede resultar muy útil durante la corrección de errores (debug). Podemos movernos libremente por el archivo mediante las teclas de cursor y modificar o escribir nuevo texto a partir de la ubicación del cursor. Puede observar algunos de los atajos de teclado en la barra que ocupa la parte inferior de la ventana del editor, pero existen muchos más, algunos de los cuales mostramos en la tabla 2-6.


Figura 2-6: El GNU nano editor en acción durante la edición de un archivo de ejemplo,

dentro de una ventana de terminal PuTTY en Linux.

Tabla 2-6: Atajos de teclado para Nano. Referencia rápida.

TeclasComandoTeclasComando
Ctrl+GAyudaCtrl+YPágina anterior
Ctrl+CEncuentra el número de línea actualCtrl+_ o Ctrl+/Va a un número de línea
Ctrl+XSalir (¿guardar archivo?)Alt+/Va al final de una línea
Ctrl+LFacilita el ajuste de líneas largasCtrl+6Comienza a marcar texto (usamos las teclas de cursor para el marcado)
Ctrl+OGuardarCtrl+K o Alt+6Corta el texto marcado
Teclas de cursorMueven el cursorCtrl+UPega texto
Ctrl+AVa al inicio de una líneaCtrl+RIntroduce el contenido de otro archivo (pide la ubicación de dicho archivo)
Ctrl+EVa al final de una líneaCtrl+WBusca una cadena de texto
Ctrl+Barra espaciadoraPalabra siguienteAlt+WEncuentra el siguiente
Alt+Barra espaciadoraPalabra anteriorCtrl+DBorra el carácter del cursor
Ctrl+VPágina siguienteCtrl+KBorra una línea entera

NOTA Ctrl+K parece eliminar toda una línea, pero en realidad la envia a un buffer desde el que podemos pegarla con el atajo Ctrl+U. Es una forma ágil de repetir múltiples Asimismo, los usuarios de Mac podrían tener que establecer una metatecla en Terminal para obtener la funcionalidad de la tecla Alt, que no tienen los Mac. Seleccione Terminal ➪ Preferencias ➪ Ajustes ➪ Teclado; luego, seleccione "Usar tecla Opción como metatecla".

¿Qué hora es?

Una pregunta tan sencilla como "¿qué hora es?" causa más problemas de los que uno puede imaginar. Por ejemplo, escribir date después del símbolo del sistema puede mostrar lo siguiente:

pi@erpi ~ $ date

Thu 17 Dec 16:26:59 UTC 2015

Que resulta ser correcto esta vez porque la placa está conectada a una red. Si fuera erróneo, podríamos preguntarnos por qué los fabricantes no han puesto en hora el reloj de la placa. La respuesta es que no pueden. A diferencia de un ordenador personal, el RPi carece de batería que asegure que los ajustes de la BIOS se conservan; de hecho, ni tiene BIOS. Este tema se examina con detalle en el capítulo siguiente, mas por el momento usaremos el protocolo NTP (Network Time Protocol, protocolo de hora de red) para establecer la hora. NTP es un protocolo de red que permite sincronizar relojes entre ordenadores. Si nuestro RPi da fecha y hora correctamente, es porque las obtiene desde la red utilizando un servicio NTP que se ejecuta en la placa:

pi@erpi ~ $ systemctl status ntp

• ntp.service - LSB: Start NTP daemon

Loaded: loaded (/etc/init.d/ntp)

Active: active (running) since Sat 2015-12-19 07:18:04 GMT; 22h ago

Process: 499 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS)

CGroup: /system.slice/ntp.service

└─544 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 107:112

El servicio NTP está configurado mediante el archivo /etc/ntp.conf, y las líneas que empiezan con la palabra server identifican los servidores con los que se está comunicando nuestro RPi para obtener la fecha y la hora actuales (de ahí el carácter ^ en la llamada a grep):

pi@erpi ~ $ more /etc/ntp.conf | grep ^server

server 0.debian.pool.ntp.org iburst

server 1.debian.pool.ntp.org iburst

server 2.debian.pool.ntp.org iburst

server 3.debian.pool.ntp.org iburst

Para ser un buen ciudadano NTP, hay que ajustar estas entradas para que hagan referencia al grupo de servidores NTP más próximo. Para ello, diríjase a la web www.pool.ntp.org (el servidor más próximo al autor es ie.pool.ntp.org, para Irlanda) y actualice las entradas según corresponda. Si desea comprobar primero los ajustes, puede instalar y ejecutar el comando ntpdate:

pi@erpi ~ $ sudo apt install ntpdate

pi@erpi ~ $ sudo ntpdate -b -s -u ie.pool.ntp.org

pi@erpi ~ $ date

Sun 20 Dec 16:02:39 GMT 2015

Después de ajustar fecha y hora, podemos establecer nuestra zona horaria. Utilice el comando siguiente, que proporciona una interfaz de usuario de texto para seleccionar nuestra ubicación. El RPi, en este caso, está configurado para Irlanda con el IST (Irish Standard Time, hora estándar de Irlanda):

pi@erpi ~ $ sudo dpkg-reconfigure tzdata

Current default time zone: 'Europe/Dublin'

Local time is now: Sun Dec 20 16:37:48 GMT 2015.

Universal Time is now: Sun Dec 20 16:37:48 UTC 2015.

NOTA Si su RPi no está conectado a Internet, puede configurar fecha y hora manualmente con la herramienta timedatectl:

pi@erpi ~ $ sudo timedatectl set-time '2017-1-2 12:13:14'

pi@erpi ~ $ date

Mon 2 Jan 12:13:16 GMT 2017

Desgraciadamente, tanto la fecha como la hora se perderán cuando reinicie el RPi. En el capítulo 8, se describe cómo conectar al RPi un reloj de tiempo real (RTC, Real Time Clock) con batería para resolver el problema.

Gestión de paquetes

Al principio de este capítulo destacamos que la presencia de un buen gestor de paquetes constituye un característica fundamental de toda distribución Linux aceptable. Un gestor de paquetes (packet manager) es un conjunto de herramientas de software que automatizan el proceso de instalación, configuración, actualización y eliminación de paquetes de software (grosso modo, los programas de aplicación) del sistema operativo Linux. Las diferentes distribuciones de Linux utilizan distintos gestores de paquetes. Ubuntu y Raspbian/Debian usan APT (Advanced Packaging Tool, herramienta avanzada de empaquetado) sobre DPKG (Debian Package Management System, sistema de gestión de paquetes Debian), mientras que Arch Linux emplea Pacman. Los comandos para manejar cada uno tienen su propia sintaxis, pero su forma de operar es prácticamente análoga. La tabla 2-7 lista algunos comandos básicos para la gestión de paquetes.

Tabla 2-7: Comandos habituales para gestión de paquetes (usando nano como paquete de ejemplo).

ComandoRaspbian/Debian/Ubuntu
Instalar un paquete.sudo apt install nano
Actualizar el índice del paquete.sudo apt update
Actualizar los paquetes en nuestro sistema.sudo apt upgrade
¿Está instalado Nano?dpkg-query -l | grep nano
¿Hay disponible un paquete con la cadena nano?apt-cache search nano
Obtener más información de un paquete.apt-cache show nanoapt-cache policy nano
Obtener ayuda.apt help
Descargar un paquete en el directorio actual.apt-get download nano
Eliminar un paquete.sudo apt remove nano
Limpiar paquetes antiguos.sudo apt-get autoremovesudo apt-get clean

NOTA Con el tiempo, el comando binario apt va integrando poco a poco las funcionalidades tanto de apt-get como de apt-cache. Este cambio debería reducir el número de herramientas necesario para la gestión de paquetes. Sin embargo, las distribuciones Linux más antiguas podrían exigir el uso del comando apt-get en lugar de apt.

Wavemon es una herramienta muy útil para configurar las conexiones WiFi (véase el capítulo 13). Si ejecutamos el comando siguiente, veremos que el paquete no se instala de manera predeterminada:

pi@erpi ~ $ wavemon

-bash: wavemon: command not found

Podemos utilizar el gestor de paquetes específico de la plataforma para instalarlo, una vez conozcamos su nombre de paquete:

pi@erpi ~ $ apt-cache search wavemon

wavemon - Wireless Device Monitoring Application

pi@erpi ~ $ sudo apt install wavemon

Reading package lists... Done

Building dependency tree ...

Setting up wavemon (0.7.6-2) ...

El comando wavemon se ejecutará ahora, pero desgraciadamente no hará nada en tanto no configuremos un adaptador inalámbrico (véase el capítulo 13).

pi@erpi ~ $ wavemon

wavemon: no supported wireless interfaces found

También merece la pena destacar que los paquetes se pueden descargar e instalar manualmente. Este método resulta útil cuando deseamos conservar una versión concreta o si necesitamos distribuir un paquete por múltiples dispositivos. Por ejmplo, el paquete Wavemon se puede eliminar, descargar manualmente como archivo .deb y, finalmente, instalarse:

pi@erpi ~ $ sudo apt remove wavemon

pi@erpi ~ $ wavemon

-bash: /usr/bin/wavemon: No such file or directory

pi@erpi ~ $ apt-get download wavemon

pi@erpi ~ $ ls -l wavemon*

-rw-r--r-- 1 pi pi 48248 Mar 28 2014 wavemon_0.7.6-2_armhf.deb

pi@erpi ~ $ sudo dpkg -i wavemon_0.7.6-2_armhf.deb

pi@erpi ~ $ wavemon

wavemon: no supported wireless interfaces found

NOTA Las instalaciones de los paquetes fallan a veces, tal vez porque no aparecen otros paquetes que son necesarios. Los comandos ponen a nuestra disposición opciones (force options) para obviar las comprobaciones. Por ejemplo, --force-yes del comando apt-get. Siempre que sea posible es mejor evitar estas opciones, porque vernos obligados a emplearlas es un síntoma de otros problemas. Cuando los paquetes no se instalan, puede resultar útil escribir: sudo apt-get autoremove.

Configuración del Raspberry Pi

La comunidad RPi y la Raspberry Pi Foundation han desarrollado herramientas específicas para configurar nuestra placa. Estas herramientas simplifican algunas tareas que, de otro modo, resultarían complejas, como veremos en las secciones siguientes.

La herramienta de configuración del Raspberry Pi

La herramienta de configuración del Raspberry Pi, Raspberry Pi Configuration Tool o raspi-config, resulta muy útil para los primeros pasos con nuestro RPi. La figura 2-7 muestra la interfaz de la herramienta, que podemos iniciar con un sencillo comando:

pi@erpi:~$ sudo raspi-config


Figura 2-7: La herramienta de configuración raspi-config.

Las siguientes tareas se deberían llevar a cabo casi inmediatamente después de iniciar el RPi a partir de una imagen recién grabada en una tarjeta SD:

❏Expandir el sistema de archivos para que ocupe toda la tarjeta SD: esta es la primera opción en la figura 2-7. Cuando escribimos una imagen en una tarjeta SD, suele ser más pequeña que la capacidad total de la misma. Esta opción permite expandir el sistema de archivos para que utilice el espacio de la tarjeta en su totalidad. Después de usar esta opción podemos comprobar la capacidad total del siguiente modo:

pi@erpi ~ $ df -kh

Filesystem Size Used Avail Use% Mounted on

/dev/root 15G 7.7G 6.2G 56% /

...

pi@erpi ~ $ lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

mmcblk0 179:0 0 14.9G 0 disk

├─mmcblk0p1 179:1 0 56M 0 part /boot

└─mmcblk0p2 179:2 0 14.8G 0 part /

Como puede verse, la tarjeta SD muestra ahora una capacidad de 15 GiB,1 consistente con el espacio de almacenamiento total de la misma.

❏Habilitar la cámara: si ha conectado una cámara al RPi mediante la interfaz CSI, puede habilitar su uso. Este tema se trata en profundidad en el capítulo 15.

❏Overclock: esta opción permite elevar la frecuencia de trabajo del procesador de la placa por encima de la prevista originalmente por el fabricante. Por ejemplo, el procesador del RPi 2 puede funcionar a 1 GHz en lugar de los 900 MHz que el fabricante indica como frecuencia máxima. Eso sí, acelerar el microprocesador puede acortar su vida útil así como hacer más inestable su funcionamiento. Sin embargo, muchos usuarios realizan overclocking en sus placas sin mayores problemas. Esta opción introduce cambios en el archivo /boot/config.txt.

❏Overscan (dentro de las opciones avanzadas, Advanced Options, véase la figura 2-8): nos permite ajustar la salida de vídeo a la pantalla completa de nuestra televisión. Esta opción introduce cambios en el archivo /boot/config.txt.


Figura 2-8: El menú de opciones avanzadas (Advanced Options) de la herramienta raspi-config.

❏Nombre de host (Host Name, Advanced Options): esta opción nos permite ajustar el nombre de host del RPi en la red. Asimismo, actualiza los archivos hostname y hosts y reinicia el servicio de red:

pi@erpi ~ $ cat /etc/hostname

erpi

pi@erpi ~ $ cat /etc/hosts

...

127.0.1.1 erpi

Esta entrada significa ahora que mi placa RPi se encuentra en la dirección Zeroconf erpi.local.

❏División de memoria (Memory Split, Advanced Options): la CPU y el procesador gráfico o GPU del RPi comparten la memoria DDR de la placa. Esta opción nos permite ajustar la asignación de memoria a la GPU. En general, 64 MG suele ser una cantidad correcta. Sin embargo, si vamos a utilizar la cámara CSI del RPi deberemos aumentarla, normalmente a 128 MB (véase el capítulo 15), o bien si vamos a usar la GPU para gráficos en 3D. Este valor queda establecido durante el arranque (cuando se lee del archivo /boot/config.txt) y no se puede modificar en tiempo de ejecución.

❏SSH (Advanced Options): esta opción nos permite habilitar o deshabilitar el servidor SSH en el RPi. Obviamente, nunca deberíamos desactivar el modo SSH cuando nuestro RPi esté en modo headless, sobre todo si carecemos de un modo alternativo de conectarnos a la placa. Esta opción deshabilita el servicio SSH:

pi@erpi ~ $ systemctl status sshd

• ssh.service - OpenBSD Secure Shell server

Loaded: loaded (/lib/systemd/system/ssh.service; enabled)

Active: active (running) since Thu 2015-12-17 21:53:47 GMT

Process: 628 ExecReload=/bin/kill -HUP $MAINPID

Main PID: 492 (sshd)

CGroup: /system.slice/ssh.service

└─492 /usr/sbin/sshd -D

Las restantes opciones de la figura 2-8 modifican también el archivo /boot/config.txt y se analizan en los capítulos 6 y 8. Muchas de estas opciones exigen el reinicio del RPi para que las acciones surtan efecto, puesto que se trata de ajustes de inicialización que pasan al núcleo durante el inicio.

Actualización del software del RPi

La distribución Raspbian se puede actualizar en el RPi siguiendo unos cuantos pasos sencillos. No obstante, tenga en cuenta que algunos de ellos, la actualización en particular, pueden tardar bastante en completarse, hasta varias horas, dependiendo de lo actualizada que esté la imagen y de la velocidad de nuestra red.

Una llamada a apt update descargará las listas de paquetes desde las ubicaciones de Internet identificadas en el archivo /etc/apt/sources.list. Esta acción no instala nuevas versiones del software, sino que actualiza las listas de paquetes y sus interdependencias:

pi@erpi ~ $ sudo apt update

Get:1 http://archive.raspbian.org jessie InRelease [15.0 kB]

Hit http://archive.raspberrypi.org jessie InRelease ...

Building dependency tree Reading state information... Done

Cuando se complete esta actualización, podremos descargar e instalar automáticamente las últimas versiones del software disponible usando el comando apt upgrade. Como es lógico, deberemos siempre realizar un apt update antes de un apt upgrade:

pi@erpi ~ $ sudo apt upgrade

Reading package lists... Done Building dependency tree

Reading state information... Done Calculating upgrade... Done ...

After this operation, XXXXX B of additional disk space will be used.

Do you want to continue? [Y/n]

Existe una herramienta adicional específica para el RPi que nos permite actualizar el núcleo de Linux, los controladores y las librerías del RPi. La herramienta rpi-update puede recibir llamadas directas, sin argumentos, pero también cuenta con determinados ajustes avanzados, que se describen en github.com/Hexxeh/rpi-update. Por ejemplo, estos ajustes permiten actualizar el firmware sin tener que sustituir el núcleo:

pi@erpi ~ $ sudo apt install rpi-update

pi@erpi ~ $ sudo rpi-update

*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom

This update bumps to rpi-4.1.y linux tree ...

*** Updating firmware

*** Updating kernel modules

*** depmod 4.1.15-v7+

*** Updating VideoCore libraries

*** Using HardFP libraries ...

*** A reboot is needed to activate the new firmware

pi@erpi ~ $ sudo reboot

Después de reiniciar la placa, la versión actual del núcleo debería quedar alineada con el núcleo y el firmware recién instalado:

molloyd@desktop:~$ ssh pi@erpi.local

pi@erpi ~ $ uname -a

Linux erpi 4.1.15-v7+ #830 SMP Tue Dec 15 17:02:45 GMT 2015 armv7l GNU/Linux

Salida de vídeo

La salida de vídeo del RPi se puede reconfigurar mediante la aplicación tvservice

(/opt/vc/bin/tvservice). Deberíamos conectar el cable del monitor HDMI en el RPi y utilizar la aplicación tvservice para listar los modos de conexión de la pantalla CEA (típicamente televisiones) o DMT (típicamente monitores de ordenador) conectada:

pi@erpi ~ $ tvservice --modes CEA

Group CEA has 0 modes:

pi@erpi ~ $ tvservice --modes DMT

Group DMT has 13 modes:

mode 51: 1600x1200 @ 60Hz 4:3, clock:162MHz progressive

mode 58: 1680x1050 @ 60Hz 16:10, clock:146MHz progressive

(prefer) mode 82: 1920x1080 @ 60Hz 16:9, clock:148MHz progressive

pi@erpi ~ $ tvservice --status

state 0x120006 [DVI DMT(82) RGB full 16:9], 1920x1080 @ 60.00Hz, progressive

Podemos fijar explícitamente la resolución del RPi con la misma herramienta. Por ejemplo, podemos actualizar la resolución de salida a un modo DVI 1600 × 1200, disponible en la lista de más arriba:

pi@erpi ~ $ tvservice --explicit="DMT 51"

Powering on HDMI with explicit settings (DMT mode 51)

pi@erpi ~ $ tvservice --status

state 0x120006 [DVI DMT (51) RGB full 4:3], 1600x1200 @ 60.00Hz, progressive

pi@erpi ~ $ fbset -depth 8 && fbset -depth 16

La última línea fuerza un refresco del buffer de cuadro o frame buffer (una área de la memoria de vídeo) para actualizar la pantalla. Después de comprobar la nueva resolución, podemos establecer de forma explícita el valor en el archivo /boot/config.txt, donde hdmi_group=1 establece un modo CEA, y hdmi_group=2 un modo DMT:

pi@erpi /boot $ more config.txt | grep ^hdmi

hdmi_group=2

hdmi_mode=51

Si no estamos usando la salida HDMI, podemos desconectarla completamente. Ello nos permitiría ahorrar una corriente de entre 25 y 30 mA.

pi@erpi ~ $ tvservice --off

Powering off HDMI

Existen herramientas adicionales también diseñadas para el RPi que permiten capturar datos de imagen y vídeo, que describiremos con detalle en el capítulo 15.

Interacción con los LED de la placa

Esta sección describe cómo podemos alterar el comportamiento de los LED incorporados a la placa del RPi. Estos LED están en la esquina superior izquierda de la placa del RPi 2 y en la parte inferior izquierda de la del RPi 3. Ambas placas incorporan dos LED que sirven para dar información del estado de las mismas.

❏El ACT LED (llamado OK en los modelos antiguos) parpadea de forma predeterminada durante la actividad de la tarjeta micro-SD. Desde Linux nos referimos a ese LED como led0.

❏El PWR LED se ilumina cuando el RPi está encendido. Desde Linux, este LED se conoce como led1 en algunos modelos, como el RPi 2, pero en modelos más antiguos está soldado directamente a la entrada de alimentación.


Figura 2-9: Los LED de actividad y alimentación de los RPi.

Podemos cambiar el comportamiento de estos LED para que se ajusten a nuestras necesidades, pero durante ese tiempo perderemos estas útiles informaciones de estado y alimentación del dispositivo.

NOTA Observe que el RPi Zero carece de PWR LED físico (led1), a pesar de que existan entradas en archivos de Linux que indiquen lo contrario. Podemos programar el disparador del ACT LED (led0) como se describe más adelante. Observe que la polaridad del LED está invertida. En modo disparador (trigger mode) "none" (ninguno), un valor de "0" para el brillo enciende el LED, mientras que un valor de "1" lo apaga. Este comportamiento se puede ajustar a lo largo del tiempo.

Sysfs es un sistema de archivos virtual disponible en las versiones más recientes del núcleo de Linux. Nos proporciona acceso a dispositivos y controladores que de otro modo solo serían accesibles en un espacio restringido del núcleo. Este tema se trata en profundidad en el capítulo 6. Sin embargo, en este punto, resultaría útil explorar brevemente la manera de usar sysfs para modificar el comportamiento de los LED de la placa.

Usando el cliente SSH, nos conectamos al RPi y navegamos hasta el directorio /sys/class/leds/. La salida que mostramos a continuación es para el RPi 2:

pi@erpi ~ $ cd /sys/class/leds/

pi@erpi /sys/class/leds $ ls

led0 led1

NOTA Las ubicaciones del directorio de sysfs varían ligeramente entre las distintas versiones del núcleo de Linux, así como entre las diferentes versiones.

Puede observar el mapeo de ambos LED en sysfs: led0 and led1. Es posible cambiar el directorio para modificar las propiedades de uno de los LED. Por ejemplo, para modificar el comportamiento del ACT LED (led0):

pi@erpi /sys/class/leds $ cd led0

pi@erpi /sys/class/leds/led0 $ ls

brightness device max_brightness subsystem trigger uevent

Aquí vemos varias entradas de archivo diferentes que nos aportan más información y acceso a los ajustes. Observe que esta sección utiliza algunos comandos que veremos detalladamente en el capítulo siguiente.

Para determinar el estado de un LED escribiremos lo siguiente:

pi@erpi /sys/class/leds/led0 $ cat trigger

none [mmc0] timer oneshot heartbeat backlight gpio cpu0 cpu1 cpu2

cpu3 default-on input

donde se observa que el ACT LED está configurado para mostrar actividad en el dispositivo mmc0, la tarjeta micro-SD. Para anular este disparador, escribimos:

pi@erpi /sys/class/leds/led0 $ sudo sh -c "echo none > trigger"

pi@erpi /sys/class/leds/led0 $ cat trigger

[none] mmc0 timer oneshot heartbeat backlight gpio cpu0 cpu1 ...

Veremos que el LED deja de parpadear por completo. Utilizaremos cat trigger para ver el nuevo estado. Ahora que el disparador del LED está apagado, podemos conectar o desconectar completamente el ACT LED mediante:

NOTA sudo sh -c sirve para ejecutar un comando del shell desde un comando de cadena de caracteres que requiera acceso de superusuario. No es posible ejecutar el comando utilizando la instrucción "sudo" únicamente, puesto que también se hace uso de la redirección (>)

del comando echo hacia un archivo (por ejemplo, brightness). Este tema se trata en el capítulo 3.

pi@erpi /sys/class/leds/led0 $ sudo sh -c "echo 1 > brightness"

pi@erpi /sys/class/leds/led0 $ sudo sh -c "echo 0 > brightness"

Incluso podemos establecer el intervalo que nos convenga para que el LED parpadee. Si observamos cuidadosamente, observaremos la naturaleza dinámica de sysfs. Si ejecutamos el comando ls en este punto, el directorio aparecerá como sigue, pero cambiará en breve:

pi@erpi /sys/class/leds/led0 $ ls

brightness device max_brightness subsystem trigger uevent

Para que el LED parpadee, debemos configurar el disparador en modo temporizador con el comando echo timer > trigger. Verá cómo el LED ACT parpadea a intervalos de 1 segundo. Observe las nuevas entradas delay_on y delay_off en el directorio led0:

pi@erpi /sys/class/leds/led0 $ sudo sh -c "echo timer > trigger"

pi@erpi /sys/class/leds/led0 $ ls

brightness delay_off delay_on device max_brightness subsystem

trigger uevent

El temporizador del LED emplea los tiempos definidos en ambas entradas. Puede encontrar más información sobre estos valores empleando el comando concatenate (concatenar). Por ejemplo, las líneas siguientes informan del retardo en milisegundos:

pi@erpi /sys/class/leds/led0 $ cat delay_on

500

pi@erpi /sys/class/leds/led0 $ cat delay_off

500

Para que el ACT LED parpadee con una frecuencia de 5 Hz (100 milisegundos encendido y 100 apagado), escribiremos:

pi@erpi /sys/class/leds/led0 $ sudo sh -c "echo 100 > delay_on"

pi@erpi /sys/class/leds/led0 $ sudo sh -c "echo 100 > delay_off"

El comando echo mmc0 > trigger devuelve el LED a su estado predeterminado, lo que provoca la desaparición de las entradas delay_on y delay_off:

pi@erpi /sys/class/leds/led0 $ sudo sh -c "echo mmc0 > trigger"

pi@erpi /sys/class/leds/led0 $ ls

brightness device max_brightness subsystem trigger uevent


Apagado y reinicio

ADVERTENCIA Desconectar el cable de alimentación sin que el núcleo de Linux pueda desmontar la tarjeta micro-SD puede corromper el sistema de archivos.

Por último, vamos a analizar el procedimiento correcto para apagar el RPi. Una desconexión inapropiada puede corromper el sistema de archivos ext4 o, como poco, prolongar los tiempos de inicio a causa de las comprobaciones del mismo. Veamos algunos puntos importantes a la hora de encender, apagar o reiniciar el RPi:

❏Escribir sudo shutdown -h now apaga la placa de forma correcta. Si escribimos sudo shutdown -h +5 retrasaremos el apagado cinco minutos.

❏Escribir sudo reboot reiniciará correctamente la placa.

Si el diseño de nuestro proyecto contempla una carcasa para el RPi y necesitamos un medio para apagarlo correctamente desde el exterior, es posible cablear un botón externo a la cabecera GPIO y escribir un script que se ejecute durante el inicio y que solicite una entrada a la GPIO. Si se detecta esa entrada, se podrá llamar directamente a /sbin/shutdown -h now.

Resumen

Después de leer este capítulo debería ser capaz de hacer lo siguiente:

❏Comunicarse con el RPi desde su ordenador mediante una conexión de red.

❏Comunicarse con el RPi usando una conexión de respaldo serie mediante un cable USB a TTL de 3,3 V.

❏Interaccionar con el RPi y controlarlo mediante sencillos comandos de Linux.

❏Realizar la edición básica de archivos desde una ventana de terminal del intérprete de comandos de Linux.

❏Gestionar los paquetes de software de Linux y establecer la fecha y la hora del sistema.

❏Emplear utilidades específicas para la configuración avanzada del RPi.

❏Utilizar el sysfs de Linux para modificar el estado de los LED de la placa del RPi.

❏Iniciar y apagar el RPi con seguridad.

1 Las tarjetas SD y los discos duros se comercializan generalmente con un valor ajustado de 1 gigabyte (GB) a 1.000.000.000 de bytes (es decir, 1.0003 bytes). Linux utiliza el gigabyte con potencias de dos (técnicamente GiB, o Gibibyte), es decir, 1.0243 bytes. Así pues, se produce una discrepancia cuando formateamos una tarjeta SD; por ejemplo, una tarjeta de 16 GB mostrará un espacio máximo de 14,901 GiB, es decir, 16 × 109/1.0243, una vez formateada.

Raspberry Pi® a fondo para desarrolladores

Подняться наверх