Archivo de la categoría: Raspbian

Raspberry Pi OS

El Sistema Operativo oficial de Raspberry Pi se denomina Raspberry Pi OS. Raspberry Pi OS (anteriormente llamado Raspbian) es el sistema operativo oficial compatible de Raspberry Pi.

Web: https://www.raspberrypi.org/software/ 

Raspberry Pi Imager es la forma rápida y fácil de instalar Raspberry Pi OS y otros sistemas operativos en una tarjeta microSD, lista para usar con su Raspberry Pi.

Para instalar Raspberry Pi, usar Raspberry Pi Imager: https://www.raspberrypi.org/blog/raspberry-pi-imager-imaging-utility/ 

Versiones de Raspberry Pi OS (32 bit y 64 bit):

  • Raspberry Pi OS (con desktop environment)
  • Raspberry Pi OS Lite (sin desktop environment)
  • Raspberry Pi OS Full (desktop environment y aplicaciones recomendadas)

Nueva versión basada en Debian Bullseye (Debian 11) y la anterior es Debian Buster (Debian 10)

Versiones de Debian: https://www.debian.org/releases/ 

Raspberry Pi OS:

Software quickstart: https://www.raspberrypi.org/learning/software-guide/quickstart/ 

Guías de iniciación:

Raspberry Pi OS 64 bits

Las versiones de HW desde Raspberry Pi 3B tienen procesador de 64 bits, pero hasta la versión oficial de Raspberry Pi Bullseye basada en Debian 11, no había una versión estable de Raspberry Pi OS de 64bits.

Ya tenemos versión de Raspberry Pi OS 64bits oficial: https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit desde la versión bullseye basada en debian 11

Solo compatible con los modelos:

Que raspberry Pi OS instalar 32 bit o 64 bit: https://raspberrytips.com/raspberry-pi-os-64-bits-vs-32-bits/ 

Más información:

Raspbian con Kernel 64bits cuando no había versión oficial: https://raspberryparanovatos.com/noticias/raspbian-actualizacion-kernel-64bits/ 

Documentación

Disponemos de una amplia documentación de Raspberry Pi OS: https://www.raspberrypi.com/documentation/computers/os.html 

Getting Started: https://www.raspberrypi.com/documentation/computers/getting-started.html 

Configuración: https://www.raspberrypi.com/documentation/computers/configuration.html 

Acceso Remoto: https://www.raspberrypi.com/documentation/computers/remote-access.html 

Fundamentos de Linux: https://www.raspberrypi.com/documentation/computers/using_linux.html 

Hardware: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html 

Más sobre Raspberry Pi OS:

Hacer Copia de Seguridad de Raspberry Pi OS

Si vamos a instalar de cero una Raspberry Pi que ya estaba funcionando, por ejemplo, con una versión antigua de Raspberry Pi OS o de Raspbian, es aconsejable hacer una copia de seguridad de nuestra tarjeta microSD.

En windows usar Win32DiskImager, no solo se puede copiar una imagen sino guardar una imagen de una tarjeta SD: Descarga https://sourceforge.net/projects/win32diskimager/

En Linux Terminal usar estos comandos:

  • backup: dd if=/dev/sdb of=sd.img bs=4M
  • restore: dd if=sd.img of=/dev/sdb bs=4M

Los comandos que usado en Linux o MAC:

  • df -h
  • sudo diskutil unmount /dev/disk2s1
  • sudo dd if=/dev/rdisk2 of=~/sd.img bs=1m

En MAC OS puedes usar apple pi baker: https://www.tweaking4all.com/software/macosx-software/applepi-baker-v2/

Formatear la tarjeta SD de la forma correcta.

Uno de los errores más frecuentes de los usuarios de tarjetas de memoria SD está en creer que este tipo de memorias funcionan igual que una memoria USB o un disco duro y se pueden formatear con las utilidades del sistema operativo. A diferencia de otros dispositivos de almacenamiento, las tarjetas SD incluyen una zona especial denominada “Protected Area”, empleada para temas de seguridad, que requiere un tratamiento especial. Adicionalmente – y dependiendo de la configuración y el tipo de tarjeta – es necesario un formateo ajustado al tipo de tarjeta.

Descargar e instalar la utilidad “SD Card Formatter” provista por la SD Association, los mismos que definen los estándares de este medio de almacenamiento. Después de instalada, se debe proceder a formatear la tarjeta SD antes de utilizarla. De esta forma se garantiza que se usará todo el espacio disponible de la tarjeta y se optimizará su desempeño y almacenamiento de acuerdo con las especificaciones del fabricante.

Descarga https://www.sdcard.org/downloads/formatter_4/eula_windows/index.html 

Instalar Raspbian en Disco Externo o Memoria USB

Con la capacidad de las Raspberry Pi de arrancar desde USB, es posible hacer funcionar una Raspberry Pi con una memoria USB o mejor aun con un disco externo.

Modos de arranque: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#usb-boot-modes 

Arranque desde disco duro USB: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#usb-mass-storage-boot

Arranque desde red: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#network-booting 

Raspberry Pi con SSD: https://www.youtube.com/watch?v=gp6XW-fGVjo

Instalar Imagen Raspberry Pi OS

Instalación recomendada usando Raspberry Pi Imager: https://www.raspberrypi.org/software/

Raspberry Pi Imager es la forma rápida y fácil de instalar Raspberry Pi OS y otros sistemas operativos en una tarjeta microSD, lista para usar con su Raspberry Pi. Vídeo: https://www.youtube.com/watch?v=J024soVgEeM 

Descargue e instale Raspberry Pi Imager con un lector de tarjetas SD. Coloque la tarjeta SD que usará con su Raspberry Pi en el lector y ejecute Raspberry Pi Imager.

Seleccionar Raspberry Pi OS (64-bit) y la SD card.

Pulsar en la rueda dentada y configurar:

  • Hostname
  • Habilitar SSH
  • Configurar el usuario y contraseña (usuario pi por defecto)
  • Configurar la wifi (WLAN country: ES)
  • Configurar locales (Europe/Madrid y keyboard: es)

Todo esto me permite hacer la instalación headless.

Instalación Manual

Todas las opciones de descarga: https://www.raspberrypi.com/software/operating-systems/ 

La versión por defecto de Raspbian es ahora una instalación mínima – le da el escritorio, el navegador Chromium, el reproductor multimedia VLC, Python, y algunos programas accesorios.

Junto a esto se encuentra la imagen «Raspbian Full», que también incluye todos los programas recomendados: LibreOffice, Scratch, SonicPi, Thonny, Mathematica y varios otros.

El programa de software recomendado se puede utilizar para instalar o desinstalar cualquiera de los programas adicionales que se encuentran en la imagen completa; si descarga la imagen mínima y comprueba todas las opciones en el software recomendado, terminará con la imagen completa, y viceversa.

Buster la nueva versión de Raspbian Buster: https://www.raspberrypi.org/blog/buster-the-new-version-of-raspbian/

Nueva versión Raspberry Pi OS Bullseye: https://www.raspberrypi.com/news/raspberry-pi-os-debian-bullseye/ 

Descargar imagen Raspbian zip: https://www.raspberrypi.com/software/operating-systems/ 

Emular Raspberry Pi en Virtual Box:

Guia de instalación https://www.raspberrypi.org/documentation/installation/installing-images/README.md 

Para copiar la imagen a una SD usar:

Tutoriales de instalación de Raspbian:

Raspberry Pi Imager

Lanzada en 2020: https://www.raspberrypi.org/blog/raspberry-pi-imager-imaging-utility/

Completamente Open Source

La utilidad es simple de usar y súper rápida, gracias a algunos atajos introducidos en la mecánica.

En primer lugar, Raspberry Pi Imager descarga un archivo .JSON del sitio web de Raspberry Pi con una lista de todas las opciones de descarga actuales, asegurando que siempre esté instalando la versión más actualizada.

Una vez que haya seleccionado un sistema operativo de las opciones disponibles, la utilidad lee el archivo relevante directamente del sitio web y lo escribe directamente en la tarjeta SD. Esto acelera el proceso considerablemente en comparación con el proceso estándar de leerlo desde el sitio web, escribirlo en un archivo en su disco duro y luego, como un paso separado, volver a leerlo desde el disco duro y escribirlo en la tarjeta SD.

Descargar: https://www.raspberrypi.org/downloads/

Proyecto en github: https://github.com/raspberrypi/imagewriter

Etcher

Etcher es una herramienta gráfica de escritura de tarjetas SD que funciona en Mac OS, Linux y Windows, y es la opción más fácil para la mayoría de los usuarios. Etcher también soporta la escritura de imágenes directamente desde el archivo zip, sin necesidad de descomprimirlas.

balenaEtcher es normalmente otra opción fácil para la mayoría de los usuarios de escribir imágenes en tarjetas SD, por lo que es un buen punto de partida. Si busca una alternativa en Windows, puede usar Win32DiskImager.

Descargar Etcher: https://www.balena.io/etcher/ y escribir tu imagen con Etcher.

Pasos:

  • Descargar SO: Raspbian
  • Formatear microSD: SD Card Formatter 4.0
  • Flashear: Etcher
  • Acceder a la SD desde un PC: Partición “/boot” es accesible desde Windows, partición expandida no
  • Preconfiguración (recomendado para modo headless): SSH

Win32DiskImager

Con Win32DiskImager no solo se puede copiar una imagen sino guardar una imagen de una tarjeta SD, pero el uso de Etcher es más sencillo.

Descarga https://sourceforge.net/projects/win32diskimager/

Instalación Headless (Sin Monitor)

NOTA: gracias al nuevo menú avanzado de Raspberry Pi Imager, nos permite ahorrarnos todos estos puntos

Si aun así quieres hacerlo manualmente, seguir los siguientes pasos para configurar Raspberry Pi OS sin que haga falta conectarse al monitor y teclado.

Documentación oficial:

Tutoriales de instalación headless:

Pasos para instalación headless:

Vídeos instalación Raspberry Pi OS headless:

Un servidor DHCP interesante en caso de no tener uno puede ser: http://www.vercot.com/~serva/ usandolo de forma temporal para asignar IPs

Cambiar la ip por comando (ip fija) una vez accedemos por SSH: http://raspberryparatorpes.net/instalacion/poner-la-direccin-ip-fija-en-raspbian/

Es posible usar una configuración de failback, que en caso que falle el DHCP dar una fija. Ver este ejemplo: https://wiki.archlinux.org/index.php/Dhcpcd#Static_profile

Buen tutorial para Raspberry Pi Zero W de confguración headless: https://www.internetdelascosas.cl/2017/10/30/configurando-una-raspberry-pi-zero-wifi-sin-un-monitor/

Post Instalación

Una vez instalado Raspberry Pi OS, enchufar la Raspberry Pi, conectar un monitor, teclado y ratón a Raspberry Pi para seguir con su configuración.

Para obtener la IP de nuestra Raspberry Pi una vez conectada a red LAN o wifi, ejecutar el comando ifconfig en la consola de linux. Se puede configurar la LAN o wifi una vez nos hemos conectado a la Raspberry Pi con la pantalla, teclado y ratón.

Si en la red funciona mDNS, probar desde un PC en la misma red Wifi o Ethernet que la Raspberry Pi, haciendo ping raspberrypi.local, usando el hostname usado en la instalación, en mi caso es ping enriquepi.local

Como encontrar tu IP: https://www.raspberrypi.com/documentation/computers/remote-access.html#ip-address 

Una vez tenemos la IP podemos conectarnos por SSH: https://www.raspberrypi.com/documentation/computers/remote-access.html#secure-shell-from-linux-or-mac-os o en windows install PuTTY: https://www.putty.org/ 

Interesante herramienta avanzada para conectar por terminal y mucho más: https://mobaxterm.mobatek.net/ 

Conectarse por SSH con el usuario por defecto: pi y la contraseña por defecto: raspberry o la contraseña configurada.

Lo primero una vez nos conectemos es actualizar el sistema con:

  • sudo apt update
  • sudo apt upgrade

Una vez dentro de la consola habilitar VNC (ya viene preinstalado) para conectarse al escritorio y continuar con la instalación desde el escritorio remoto: https://www.raspberrypi.com/documentation/computers/remote-access.html#enabling-the-vnc-server

  • sudo raspi-config
  • Navigate to Interfacing Options.
  • Scroll down and select VNC › Yes.

Ahora ya nos podremos conectar por VNC desde nuestro ordenador usando VNC Viewer: https://www.realvnc.com/es/connect/download/viewer/ 

Una vez entramos en Raspberry Pi por VNC, seguimos los pasos de wizard que nos indica para cambiar contraseña, cambiar el nombre (hostname), configurar y actualizar Raspberry Pi, etc… Si no sale la ventana ejecutar el comando desde el terminal: sudo piwiz

NOTA: este paso no es necesario si ya se ha configurado desde el menú avanzado de Raspberry Pi Imager.

Luego es posible hacer más configuraciones desde “Configuración de  Raspberry Pi” o desde comando “sudo raspi-config”:

  • expand filesystem (solo versiones antiguas)
  • Cambiar la contraseña
  • Poner nombre (hostnamer): p.e. EnriquePi
  • Configurar resolución de pantalla
  • Habilitar VNC
  • Habilitar VNC conectividad en la nube (usuario y contraseña de VNC)
  • Habilitar SSH
  • Actualizar con sudo apt-get update  y sudo apt-get upgrade
  • Configuración: https://www.raspberrypi.org/documentation/configuration/

Si ya se ha configurado desde el menú avanzado de Raspberry Pi Imager, muchas de las configuraciones ya estarán realizadas.Ejecutar el wizard de configuración otra vez para configurar:

  • sudo piwiz
  • sudo raspi-config

Más información:

PiBakery

Es una opción alternativa sencilla de configurar Raspberry Pi.

Web: https://www.pibakery.org/

Editar una tarjeta SD: https://www.pibakery.org/docs/edit.html

Proyecto en Github: https://github.com/davidferguson/pibakery-blocks

Contribuir bloques: https://www.pibakery.org/docs/contribute.html

Documentación: https://www.pibakery.org/docs/index.html

Conexión a la Red

La forma general de conectar a Internet la Raspberry Pi es mediante 

  • Conexión a Ethernet por DHCP
  • Conectar a Wifi por DHCP

Por este motivo no es necesario configurar nada si conectamos a un router con DHCP configurado para ethernet y en WiFi solo deberemos configurar la red wifi.

DHCP:

La propia Raspberry Pi podría hacer de servidor DHCP: https://www.raspberrypi.org/learning/networking-lessons/lesson-3/plan/ 

La Raspberry Pi 3 es la primera de la familia en incluir WIFI estándar de serie, lo que es un gran avance de salida y garantiza que se normalice las conexiones, a diferencia de las versiones previas en las que había que comprar un módulo WiFi y configurar la WIFI en función del modelo de adaptador que usasemos.

En el caso actual, la configuración de la WIFI se reduce a listar las redes disponibles y elegir la nuestra, para después proporcionar la contraseña de acceso. 

Detalle seleccion WIFI

Aquí tienes iconos para la configuración de varios elementos, como el volumen de audio la WIFI y hasta el Bluetooth, que recuerda viene de serie en la Nueva Raspi3. Para configurar la WIFI pincha y selecciona el icono y selecciona la WiFi a conectarse.

Desplegando wifi

Una vez configurado comprobar que se puede navegar.

Aunque hayas conectado correctamente a Internet hay mil razones por las que necesitas conocer más información de tus conexiones IP, especialmente saber la IP para que al actuar como servidor saber a qué IP conectarnos.

Con el comando “ifconfig” podemos saber qué interfaces están conectados y que DNS usan o que Gateway o router estas usando como salida.

ifconfig 0

Para obtener los datos de ethernet teclea ifconfig eth0 y para wifi teclea ifconfig wlan0

Con el comando route -ne se pueden ver las rutas configuradas

Más información: https://www.prometec.net/conectar-a-internet/ 

Para obtener más información de las redes ver los directorios:

  • /sys/class/net/eth0
  • /sys/class/net/wlan0

Por ejemplo en el fichero address está la dirección MAC del controlador de red

En algunas ocasiones nos puede interesar asignar una IP fija, para ello seguir el tutorial: https://www.luisllamas.es/raspberry-pi-ip-estatica/ 

Los fichero de configuración de IP son:

  •  /etc/dhcpcd.conf
  • /etc/network/interfaces

Más información: https://raspberrypi.stackexchange.com/questions/39785/dhcpcd-vs-etc-network-interfaces 

También es conveniente cambiar el hostname, seguir este tutorial: https://www.howtogeek.com/167195/how-to-change-your-raspberry-pi-or-other-linux-devices-hostname/

Instalación Raspbian

Raspberry Pi OS: https://en.wikipedia.org/wiki/Raspberry_Pi_OS 

Software quickstart: https://www.raspberrypi.org/learning/software-guide/quickstart/ 

Guías de iniciación:

Copia de Seguridad de Raspberry Pi

Si vamos a instalar de cero una Raspberry Pi que ya estaba funcionando, por ejemplo, con una versión antigua de Raspberry Pi OS o de Raspbian, es aconsejable hacer una copia de seguridad de nuestra tarjeta microSD.

En windows usar Win32DiskImager, no solo se puede copiar una imagen sino guardar una imagen de una tarjeta SD: Descarga https://sourceforge.net/projects/win32diskimager/

En Linux Terminal usar estos comandos:

  • backup: dd if=/dev/sdb of=sd.img bs=4M
  • restore: dd if=sd.img of=/dev/sdb bs=4M

Los comandos que usado en Linux o MAC:

  • df -h
  • sudo diskutil unmount /dev/disk2s1
  • sudo dd if=/dev/rdisk2 of=~/sd.img bs=1m

En MAC OS puedes usar apple pi baker: https://www.tweaking4all.com/software/macosx-software/applepi-baker-v2/

Formatear la tarjeta SD de la forma correcta.

Uno de los errores más frecuentes de los usuarios de tarjetas de memoria SD está en creer que este tipo de memorias funcionan igual que una memoria USB o un disco duro y se pueden formatear con las utilidades del sistema operativo. A diferencia de otros dispositivos de almacenamiento, las tarjetas SD incluyen una zona especial denominada “Protected Area”, empleada para temas de seguridad, que requiere un tratamiento especial. Adicionalmente – y dependiendo de la configuración y el tipo de tarjeta – es necesario un formateo ajustado al tipo de tarjeta.

Descargar e instalar la utilidad “SD Card Formatter” provista por la SD Association, los mismos que definen los estándares de este medio de almacenamiento. Después de instalada, se debe proceder a formatear la tarjeta SD antes de utilizarla. De esta forma se garantiza que se usará todo el espacio disponible de la tarjeta y se optimizará su desempeño y almacenamiento de acuerdo con las especificaciones del fabricante.

Descarga https://www.sdcard.org/downloads/formatter_4/eula_windows/index.html 

Instalar Imagen Raspberry Pi OS (Antiguo Raspbian)

Instalación recomendada usando Raspberry Pi Imager: https://www.raspberrypi.org/software/

Raspberry Pi Imager es la forma rápida y fácil de instalar Raspberry Pi OS y otros sistemas operativos en una tarjeta microSD, lista para usar con su Raspberry Pi. Vídeo: https://www.youtube.com/watch?v=J024soVgEeM 

Descargue e instale Raspberry Pi Imager con un lector de tarjetas SD. Coloque la tarjeta SD que usará con su Raspberry Pi en el lector y ejecute Raspberry Pi Imager.

Descargar imagen Raspbian zip: https://www.raspberrypi.org/downloads/

Descargar Raspbian with desktop desde: https://www.raspberrypi.com/software/operating-systems/ 

La versión por defecto de Raspbian es ahora una instalación mínima – le da el escritorio, el navegador Chromium, el reproductor multimedia VLC, Python, y algunos programas accesorios. Junto a esto se encuentra la imagen «Raspbian Full», que también incluye todos los programas recomendados: LibreOffice, Scratch, SonicPi, Thonny, Mathematica y varios otros.

El programa de software recomendado se puede utilizar para instalar o desinstalar cualquiera de los programas adicionales que se encuentran en la imagen completa; si descarga la imagen mínima y comprueba todas las opciones en el software recomendado, terminará con la imagen completa, y viceversa.

Buster la nueva versión de Raspbian: https://www.raspberrypi.org/blog/buster-the-new-version-of-raspbian/

Guía de instalación https://www.raspberrypi.org/documentation/installation/installing-images/README.md 

Para copiar la imagen a una SD usar:

Tutoriales de instalación de Raspbian:

Etcher

Etcher es una herramienta gráfica de escritura de tarjetas SD que funciona en Mac OS, Linux y Windows, y es la opción más fácil para la mayoría de los usuarios. Etcher también soporta la escritura de imágenes directamente desde el archivo zip, sin necesidad de descomprimirlas.

balenaEtcher es otra opción fácil para la mayoría de los usuarios de escribir imágenes en tarjetas SD, por lo que es un buen punto de partida. Si busca una alternativa en Windows, puede usar Win32DiskImager.

Pasos:

  • Descargar SO: Raspbian
  • Formatear microSD: SD Card Formatter 4.0
  • Flashear: Etcher
  • Acceder a la SD desde un PC: Partición “/boot” es accesible desde Windows, partición extendida.
  • Preconfiguración (recomendado para modo headless): SSH

Win32DiskImager

Con Win32DiskImager no solo se puede copiar una imagen sino guardar una imagen de una tarjeta SD, pero el uso de Etcher es más sencillo.

Descarga https://sourceforge.net/projects/win32diskimager/

Post Instalación

Una vez instalado Raspberry Pi OS, enchufar la Raspberry Pi, conectar un monitor, teclado y ratón a Raspberry Pi para seguir con su configuración.

En caso de no tener un monitor, se puede hacer una instalación headless:

Pasos para instalación headless:

Vídeos instalación Raspberry Pi OS headless:

Una vez tenemos la IP podemos conectarnos por SSH: https://www.raspberrypi.com/documentation/computers/remote-access.html#secure-shell-from-linux-or-mac-os o en windows instalar PuTTY: https://www.putty.org/ 

Conectarse por SSH con el usuario por defecto: pi y la contraseña por defecto: raspberry

Una vez dentro de la consola habilitar VNC (ya viene preinstalado) para conectarse al escritorio y continuar con la instalación desde el escritorio remoto: https://www.raspberrypi.com/documentation/computers/remote-access.html#enabling-the-vnc-server

  • sudo raspi-config
  • Navigate to Interfacing Options.
  • Scroll down and select VNC › Yes.

Ahora ya nos podremos conectar por VNC desde nuestro ordenador usando VNC Viewer: https://www.realvnc.com/es/connect/download/viewer/ 

Una vez entramos en Raspberry Pi por VNC, seguimos los pasos de wizard que nos indica para cambiar contraseña, cambiar el nombre (hostname), configurar y actualizar Raspberry Pi, etc…

Luego es posible hacer más configuraciones desde “Configuración de  Raspberry Pi” o desde comando de consola “sudo raspi-config”:

  • expand filesystem (solo versiones antiguas)
  • Cambiar la contraseña
  • Poner nombre (hostnamer): p.e. EnriquePi
  • Configurar resolución de pantalla
  • Habilitar VNC
  • Habilitar VNC conectividad en la nube (usuario y contraseña de VNC)
  • Habilitar SSH
  • Actualizar con sudo apt-get update  y sudo apt-get upgrade
  • Configuración: https://www.raspberrypi.org/documentation/configuration/

Conexión a la Red

La forma general de conectar a Internet la Raspberry Pi es mediante 

  • Conexión a Ethernet por DHCP
  • Conectar a Wifi por DHCP

Por este motivo no es necesario configurar nada si conectamos a un router con DHCP configurado para ethernet y en WiFi solo deberemos configurar la red wifi.

DHCP:

La propia Raspberry Pi podría hacer de servidor DHCP: https://www.raspberrypi.org/learning/networking-lessons/lesson-3/plan/ 

La Raspberry Pi 3 es la primera de la familia en incluir WIFI estándar de serie, lo que es un gran avance de salida y garantiza que se normalice las conexiones, a diferencia de las versiones previas en las que había que comprar un módulo WiFi y configurar la WIFI en función del modelo de adaptador que usasemos.

En el caso actual, la configuración de la WIFI se reduce a listar las redes disponibles y elegir la nuestra, para después proporcionar la contraseña de acceso. 

Detalle seleccion WIFI

Aquí tienes iconos para la configuración de varios elementos, como el volumen de audio la WIFI y hasta el Bluetooth, que recuerda viene de serie en la nueva Raspi3. Para configurar la WIFI pincha y selecciona el icono y selecciona la WiFi a conectarse.

Desplegando wifi

Una vez configurado comprobar que se puede navegar.

Aunque hayas conectado correctamente a Internet hay mil razones por las que necesitas conocer más información de tus conexiones IP, especialmente saber la IP para que al actuar como servidor saber a qué IP conectarnos.

Con el comando “ifconfig” podemos saber qué interfaces están conectados y que DNS usan o que Gateway o router estas usando como salida.

ifconfig 0

Para obtener los datos de ethernet teclea ifconfig eth0 y para wifi teclea ifconfig wlan0

Con el comando route -ne se pueden ver las rutas configuradas

Más información: https://www.prometec.net/conectar-a-internet/ 

Para obtener más información de las redes ver los directorios:

  • /sys/class/net/eth0
  • /sys/class/net/wlan0

Por ejemplo en el fichero address está la dirección MAC del controlador de red

En algunas ocasiones nos puede interesar asignar una IP fija, para ello seguir el tutorial: https://www.luisllamas.es/raspberry-pi-ip-estatica/ 

Los fichero de configuración de IP son:

  •  /etc/dhcpcd.conf
  • /etc/network/interfaces

Más información: https://raspberrypi.stackexchange.com/questions/39785/dhcpcd-vs-etc-network-interfaces 

También es conveniente cambiar el hostname, seguir este tutorial: https://www.howtogeek.com/167195/how-to-change-your-raspberry-pi-or-other-linux-devices-hostname/

Acceso Remoto

Una vez instalado vamos a asegurarnos el acceso remoto para no tener que tener conectado a un monitor y un teclado y ratón y podamos manejarlo.

Acceso Remoto: https://www.raspberrypi.org/documentation/remote-access/

SSH

La mejor forma de acceder a Raspberry Pi remotamente en modo comando en línea estando en la misma red es usando SSH. 

SSH sigue un modelo cliente-servidor. El cliente inicia una petición al servidor, que autentifica la comunicación e inicia el entorno Shell. Múltiples clientes pueden conectarse a un mismo servidor. Por defecto SSH emplea el puerto TCP 22 aunque puede cambiarse fácilmente. 

SSH dispone de más usos muy interesantes. por ejemplo, podemos copiar archivos de forma segura entre dos dispositivos, o tunelizar cualquier conexión de otra aplicación a través de un canal seguro SSH.

Para activar el servidor SSH en Raspberry Pi comprobar que estás activado en menu – Preferencias- Configuración de Raspberry Pi – Interfaces

Esta conexión sólo funciona en red local. Para poder acceder desde fuera, a través de Internet, hay que configurar un mapeo de puertos en el router. El proceso completo depende del router.

Para conectarnos desde Windows a SSH, deberemos emplear un cliente SSH para conectarnos con Raspberry Pi. El cliente más utilizado en Windows es Putty, que es Open Source y está disponible en https://www.putty.org/

Descargamos y ejecutamos Putty y nos aparece una ventana donde podemos introducir la dirección IP (o el nombre) de la Raspberry Pi. Al conectarnos se nos preguntará el nombre del usuario y la contraseña.

Más información:

VNC

La mejor forma de acceder a Raspberry Pi remotamente en modo escritorio estando en la misma red es usando VNC.

VNC es un programa de software libre basado en una estructura cliente-servidor que permite observar las acciones del ordenador servidor remotamente a través de un ordenador cliente. VNC no impone restricciones en el sistema operativo del ordenador servidor con respecto al del cliente: es posible compartir la pantalla de una máquina con cualquier sistema operativo que admita VNC conectándose desde otro ordenador o dispositivo que disponga de un cliente VNC portado.

Seguir este tutorial: https://www.raspberrypi.org/documentation/remote-access/vnc/README.md

La conexión de VNC de RealVNC se incluye con Raspbian. Consiste en el servidor de VNC, que permite controlar Raspberry Pi remotamente, y el VNC viewer, que permite que controlar ordenadores remotamente de su Raspberry Pi.

El servidor VNC debe habilitarse para poder conectarse remotamente, para ello ir a menu – Preferencias- Configuración de Raspberry Pi – Interfaces y asegurarse que VNC está activado.

Una vez activado establecer la conexión desde el ordenador instalando el VNC viewer: https://www.realvnc.com/en/connect/download/viewer/ y conectarse a la IP de nuestra Raspberry:

Con VNC también se puede establecer una conexión en la nube.

Más información:

Team Viewer

En el caso que queramos conectarnos a nuestra Raspberry Pi estando en cualquier parte del mundo, una buena opción es TeamViewer.

TeamViewer es un software informático privado de fácil acceso, que permite conectarse remotamente a otro equipo. Entre sus funciones están: compartir y controlar escritorios, reuniones en línea, videoconferencias y transferencia de archivos entre ordenadores.Team Viewer es gratuito para uso personal.

Web: https://www.teamviewer.com/es/ 

La instalación es muy simple solo hay que descargarse TeamViewer Host para raspberry Pi desde https://www.teamviewer.com/es/descarga/linux/ y acerse una cuenta en la web de TeamViewer https://www.teamviewer.com/es/ 

Enlace de descarga: https://download.teamviewer.com/download/linux/teamviewer-host_armhf.deb 

Instalar el fichero teamviewer-host_xxx_armhf.deb, simplemente haciendo doble click o con el comando “sudo dpkg -i filename.deb”

Si hay dependencias solucionarlo con  “sudo apt-get update” y “sudo apt-get -f upgrade”

Una vez instalado ejecutar TeamViewer en Raspberry Pi y poner las credenciales de la cuenta de TeamViewer

Finalmente acceder a https://login.teamviewer.com/LogOn con la cuenta de TeamViewer y ya podemos acceder a nuestra Raspberry Pi. Necesitaremos instalar el cliente de TeamViewer o la app de Chrome:

Solo para controlar la Raspberry Pi remotamente ejecutar el cliente “TeamViewer_Setup.exe” de esta forma:

Más información:

Instalación Node-RED

Node-RED es un motor de flujos con enfoque IoT, que permite definir gráficamente flujos de servicios, a través de protocolos estándares como REST, MQTT, Websocket, AMQP… ademas de ofrecer integración con apis de terceros, tales como Twitter, Facebook, Yahoo!…

Node-RED puede instalarse en multitud de Sistemas Operativos y Hardware, el principal requisito es que pueda instalarse Node.js: https://nodejs.org/es/

Versiones soportadas de node.js: https://nodered.org/docs/faq/node-versions 

Instalación de Node-RED: https://nodered.org/docs/getting-started/

Instalar Node-RED en Raspberry Pi

Node-Red no viene instalado en Raspberry Pi pero se puede hacer desde add/remove software.

La forma es desde Menú – Preferencias – Software Recomendado. También  se instala de esta manera, se puede actualizar usando sudo apt-get upgrade.

Luego se puede ejecutar manualmente con el comando “node-red-star” o :

Para iniciar Node-RED en el arranque de Raspberry Pi de forma automática usar:

  • sudo systemctl enable nodered.service

Más información https://nodered.org/docs/hardware/raspberrypi

Para comprobar que funciona abrir en un navegador http://ip-raspberry:1880

Para encontrar más nodos y ejemplos de flows ver https://flows.nodered.org/ estos nodos se pueden instalar desde el palette.

Los nodos también se pueden instalar mediante npm. Para añadir nodos adicionales primero debe instalar la herramienta npm, ya que no está incluida en la instalación predeterminada de Raspbian. Esto no es necesario si ha actualizado a Node.js 8.x.

npm es el sistema de gestión de paquetes por defecto para Node.js

Los siguientes comandos instalan npm y luego lo actualizan a la última versión.

  • sudo apt-get install npm (Instala npm)
  • sudo npm install -g npm (Actualiza npm a la última versión en modo global)

Para poder ver la paleta e instalar nodos, reiniciar el servicio:

  • sudo systemctl restart nodered.service

Y luego para instalar un nodo:

  • cd ~/.node-red
  • npm install node-red-{example node name}

node-red-admin es la herramienta de línea de comandos le permite administrar de forma remota una instancia de Node-RED: https://nodered.org/docs/user-guide/node-red-admin

Para instalar node-red-admin: sudo npm install -g node-red-admin

Para ver todos los nodos instalados: node-red-admin list

Instalación Recomendada de Node-Red en Raspberry Pi

La instalación recomendada para tener la última version de Node-RED en Raspberry Pi: https://nodered.org/docs/getting-started/raspberrypi

Comprobar la versión de node.js y npm instalada:

  • npm –version
  • node –version

Ejecutar el script, ojo cuesta un tiempo instalar: 

Este script sirve para instalar Node.js, npm y Node-RED en una Raspberry Pi. El script también se puede utilizar para actualizar una instalación existente cuando hay una nueva versión disponible.

El script que se descarga y ejecuta puede verse en: https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered

Este script eliminará las versiones de Node.js anteriores a la versión 7.x, y Node-RED y si es necesario, reemplaza con con Node.js 10.x LTS (dubnium) y el último Node-RED de Npm.

También mueve cualquier nodo Node-RED que esté instalado globalmente en su usuario ~/.node-red/node_modules, y los agrega a su package.json, para que puede administrarlos con el administrador de paletas.

También intenta ejecutar ‘npm rebuild’ para actualizar los nodos adicionales que haya instalado que puede tener un componente binario nativo. Si bien esto normalmente funciona bien, necesitas para comprobar que tiene éxito para su combinación de nodos instalados.

Estos son los pasos que realiza:

  • Stop Node-RED                   
  • Remove old version of Node-RED      
  • Remove old version of Node.js       
  • Install Node.js                     
  • Clean npm cache                     
  • Install Node-RED core               
  • Move global nodes to local          
  • Install extra Pi nodes              
  • Npm rebuild existing nodes          
  • Add shortcut commands               
  • Update systemd script               

Los errores de instalación se pueden ver en: /var/log/nodered-install.log

Más información:

Instalar Node-RED en CentOS

La instalación en local se hace siguiendo este enlace: https://nodered.org/docs/getting-started/local

Es recomendable crear un usuario nodered y hacer la instalación con ese usuario.

Para instalar Node-RED es necesario una versión soportada de Node.js: https://nodered.org/docs/faq/node-versions

Para versiones de Linux basadas en RPM como Red HAT, fedora o CentOS usar esta instalación: https://github.com/node-red/linux-installers. Funciona perfectamente.

Usar este script: bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/rpm/update-nodejs-and-nodered)

Y luego activar el inicio automático en el arranque: sudo systemctl enable nodered.service

Para actualizar usar el mismo script que el de instalación.

Instalación Manual en CentOS

Sigue leyendo solo si eres usuario avanzado, sino te recomiendo que instales Node-RED con el script.

Primero instalar node.js en CentOS:

Hay dos formas de instalar nodejs:

  • usando yum con el repositorio
  • Usando la utilidad n de npm

Para instalar la última version con yum: https://tecadmin.net/install-latest-nodejs-and-npm-on-centos/

Usando la utilidad n de npm para actualizar a la última versión de nodejs con estos comandos:

  1. Clear NPM’s cache:
    sudo npm cache clean -f
  2. Install a little helper called ‘n’
    sudo npm install -g n
  3. Install latest stable Node.js version
    sudo n stable

Más información: https://tecadmin.net/upgrade-nodejs-via-npm/

Para poder instalar add-ons: sudo yum install gcc-c++ make

Para actualizar npm: npm install -g npm

Y luego instalar node-RED (use the node package manager, npm, that comes with Node.js): sudo npm install -g –unsafe-perm node-red

Running Node-RED: https://nodered.org/docs/getting-started/running 

  • poner node-red
  • abrir firewall  sudo firewall-cmd –permanent –add-port=1880/tcp
  • firewall-cmd –reload

Arrancar node-red en el arranque: https://nodered.org/docs/hardware/raspberrypi#adding-autostart-capability-using-systemd

Más información para la instalación: https://ketandesai.co.uk/os/install-node-red-on-centos-7/

Hay que cambiar /lib/systemd/system/nodered.service el usuario pi por el usuario root en este caso o el usuario que ha instalado node-red

User=root

Group=root

WorkingDirectory=/root

Creo un usuario del grupo sudores llamado nodered y contraseña para que ejecute los servicios en el servidor!!!

Para actualizar node-red instalado en local https://nodered.org/docs/getting-started/local usar el comando: sudo npm install -g –unsafe-perm node-red

NOTA: no olvidar actualizar a la última versión de nodejs.

Para configurar:

Para securizar:

Comandos básicos de npm: https://vortexbird.com/comandos-basicos-de-npm/

Instalar Node-RED en Local

Para instalar Node-RED en local, ya sea Windows, Linux o MacOS seguir https://nodered.org/docs/getting-started/local

Iniciar Node-RED en el inicio: https://nodered.org/docs/faq/starting-node-red-on-boot

Instalación en Windows:

Instalar Node-RED en Docker

Node-RED en docker: https://nodered.org/docs/getting-started/docker

Docker hub oficial de Node-RED desde la version 1.x: https://hub.docker.com/r/nodered/node-red/

Imagen de Node-RED: https://github.com/node-red/node-red-docker/blob/master/README.md

Para versiones antiguas: https://hub.docker.com/r/nodered/node-red-docker

La forma más sencilla de ejecutar Node-RED en docker:

  • docker run -it -p 1880:1880 –name mynodered nodered/node-red

Las imágenes Node-RED se basan en imágenes oficiales de Node JS Alpine Linux para mantenerlas lo más pequeñas posible. El uso de Alpine Linux reduce el tamaño de la imagen construida, pero elimina las dependencias estándar que se requieren para la compilación del módulo nativo.

Una vez que está Node-RED ejecutándose con Docker, debemos asegurarnos de que los nodos o flujos agregados no se pierdan si se destruye el contenedor. Estos datos de usuario pueden conservarse montando un directorio de datos en un volumen fuera del contenedor. Esto puede hacerse usando un montaje de enlace o un volumen de datos con nombre.

Node-RED utiliza el directorio /data dentro del contenedor para almacenar los datos de configuración del usuario.

Para guardar el directorio de usuario Node-RED dentro del contenedor en un directorio host fuera del contenedor, puede usar el siguiente comando. Para permitir el acceso a este directorio de host, el usuario de node-red (uid predeterminado = 1000) dentro del contenedor debe tener el mismo uid que el propietario del directorio de host. Esto puedes ser forzado con el comando sudo chown -R 1000:1000 path/to/your/node-red/data. Más información https://github.com/node-red/node-red-docker/wiki/Permissions-and-Persistence

docker run -it -p 1880:1880 -v /home/pi/.node-red:/data –name mynodered nodered/node-red

Montar un volumen de datos dentro del contenedor en esta ruta de directorio significa que la configuración de usuario pueden guardarse fuera del contenedor e incluso compartirse entre instancias de contenedor.

En este ejemplo, el directorio host /home/pi/.node-red está vinculado al directorio contenedor /data

El contenedor utiliza el directorio /data como el directorio de configuración del usuario. Para agregar nodos adicionales, puede abrir el shell en el contenedor y ejecutar los comandos de instalación npm adecuados:

  • docker exec -it mynodered /bin/bash (Abre un shell en el contenedor)
  • cd /data
  • npm install node-red-node-smooth (una vez en el contenedor npm instala el nodo)
  • exit
  • docker stop mynodered
  • docker start mynodered (reiniciar contenedor)

Para montar /data en un path externo:

  • docker run –restart always -d -p 1880:1880 -v /opt/docker_volumes/nodered_data:/data –name nodered nodered/node-red

Para que funcione hay que dar permisos de escritura al directorio /opt/docker_volumes/nodered_data

Para actualizar el contendor:

  • docker pull nodered/node-red
  • docker stop mynodered
  • docker start mynodered

Para cambiar la time zone del contenedor:

  • docker run -it -p 1880:1880 –name mynodered -e TZ=Europe/London nodered/node-red

Docker de node-red en raspberry pi: https://domology.es/docker-de-node-red-en-raspberry-pi/

Más información: https://nodered.org/docs/getting-started/docker

Enlazar Contenedores

Puede vincular contenedores «internamente» dentro del docker runtime utilizando la opción –link.

Por ejemplo, tengo un contenedor de un broker MQTT simple disponible como:

  • docker run -it –name mybroker eclipse-mosquitto

No es necesario exponer el puerto 1883 a nivel global a menos que desee.

A continuación, ejecute docker, pero esta vez con un parámetro de enlace (nombre: alias)

  • docker run -it -p 1880:1880 –name mynodered –link mybroker:broker nodered/node-red

Ejecutar Node-RED

Una vez instalado Node-RED ejecutar el comando node-red

La salida del registro le proporciona varias piezas de información:

  • Las versiones de Node-RED y Node.js
  • Cualquier error cuando intentó cargar los nodos de la paleta
  • La ubicación de su archivo de configuración y directorio de usuarios
  • El nombre del archivo de flujos que está utilizando.

Nodo-RED utiliza el fichero flows_<hostname>.json como el archivo de flujos predeterminado. Puede cambiar esto proporcionando el nombre del archivo de flujos como argumento para el comando node-red

Uso de la línea de comandos de node-red: https://nodered.org/docs/getting-started/local#command-line-usage

Más información: https://nodered.org/docs/getting-started/local

Conceptos Básicos de Linux

Qué es Linux

GNU/Linux es un conjunto de sistemas operativos libres multiplataforma, multiusuario y multitarea basados en Unix. El sistema es la combinación de varios proyectos, entre los cuales destacan GNU, encabezado por Richard Stallman y la Free Software Foundation junto con el núcleo o kernel «Linux», programado por Linus Torvalds.

Linux es un sistema operativo que puede incluirse desde pequeños dispositivos embebidos como open-wrt hasta grandes clusters de servidores.

Introducción a Linux: http://www.tldp.org/LDP/intro-linux/html/index.html

Fundamentos de Linux: https://www.raspberrypi.org/documentation/linux/

Distribuciones Linux: https://es.wikipedia.org/wiki/Distribuci%C3%B3n_Linux

Raspbian

Raspbian es una distribución del sistema operativo GNU/Linux basado en Debian, y por lo tanto libre para la SBC Raspberry Pi, orientado a la enseñanza de informática. El lanzamiento inicial fue en junio de 2012. Desde 2015, la Raspberry Pi Foundation lo ha proporcionado de forma oficial como el sistema operativo primario para la familia de placas SBC de Raspberry Pi. Hay varias versiones de Raspbian, siendo la actual Raspbian Buster.

Raspbian: https://www.raspberrypi.org/documentation/raspbian/

Uso de Raspberry Pi:  https://www.raspberrypi.org/documentation/usage/

Configuración: https://www.raspberrypi.org/documentation/configuration/

Acceso Remoto: https://www.raspberrypi.org/documentation/remote-access/

Fundamentos de Linux: https://www.raspberrypi.org/documentation/linux/

Hardware: https://www.raspberrypi.org/documentation/hardware/

CLI (Command Line Interface)

Lo primero es familiarizarse con la línea de comandos (también conocido como «terminal»). 

Probar lo siguiente en la línea de comandos o terminal:

  • Navegar por directorios con comandos como ls , cd y pwd
  • Crea, elimina y cambia el nombre de los directorios con los comandos mkdir, rm, mv y cp
  • Crea un archivo de texto con un editor de línea de comandos como Vi, Vim, Emacs o Nano
  • Prueba otros comandos útiles como:  chmod , chown , w , cat , more , less , tail , free , df , ps , uname y kill

Absolutamente Básico: http://www.tldp.org/LDP/intro-linux/html/sect_02_02.html

Ayuda: http://www.tldp.org/LDP/intro-linux/html/sect_02_03.html

La mejor manera de obtener ayuda con un comando es leer su «página de uso» (abreviatura de manual); escribe man <comando> en la línea de comando para acceder a la descripción detallada del comando.

Manual de uso de nano: https://www.luisllamas.es/raspberry-pi-nano/

La línea de comando: https://www.luisllamas.es/consola-de-comandos-raspberry-pi/ 

Ejercicio: ejecutar los comandos y crear un nuevo fichero info.txt que contenga un texto corto y leerlo.

Comandos Útiles

Es importante conocer y practicar con los comandos para trabajar con Raspberry Pi.

Comandos básicos: https://www.raspberrypi.org/documentation/linux/usage/commands.md

Editores de texto:

Comandos generales:

  • apt-get update: Actualiza tu versión de Raspbian.
  • apt-get upgrade: Actualiza todos los paquetes que tienes instalados en el sistema.
  • clear: limpia la ventana del terminal.
  • date: Muestra la fecha actual.
  • find / -name prueba.txt: Busca en todo el sistema el archivo prueba.txt y genera una lista de todos los directorios que contienen el archivo.
  • nano prueba.txt: Abre el archivo prueba.txt en “Nano”, el editor de texto de Linux.
  • poweroff: Apaga el sistema de forma inmediata.
  • raspi-config: Abre el menú de configuración.
  • reboot: Reinicia el sistema de forma inmediata.
  • shutdown -h now: Apaga el sistema de forma inmediata.
  • shutdown -h 18:34: Apaga el sistema a las 18:34.
  • startx: Abre el interfaz gráfico de usuario.

Usar apt: https://www.luisllamas.es/raspberry-pi-instalar-actualizar-programas-apt/

Apagado correcto de Raspberry Pi: https://www.luisllamas.es/como-apagar-o-reiniciar-correctamente-raspberry-pi/

Ejercicio: descargar el fichero https://www.raspberrypi.org/documentation/linux/usage/commands.md y hacer varias manupulaciones.

Usuarios y Grupos

Usuarios: https://www.raspberrypi.org/documentation/linux/usage/users.md

Root: https://www.raspberrypi.org/documentation/linux/usage/root.md

Sudo: https://www.luisllamas.es/raspberry-pi-sudo/

Usuarios y contraseñas: https://www.luisllamas.es/como-gestionar-usuarios-y-contrasenas-en-raspberry-pi/

Grupos de usuarios: https://www.luisllamas.es/como-gestionar-grupos-de-usuarios-en-raspberry-pi/

Ejercicio: crear un usuario con vuestro nombre y añadir al grupo sudo

  • useradd -c «Nombre Usuario» -g grupo -d /home/usuario -s /bin/bash nombreUsuario
  • Entrar como usuario creado: su – nombreUsuario
  • whoami
  • who
  • lastlog

Sistema de Ficheros y Directorios

Estandard sistema de ficheros: https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

Arbol de directorios: https://www.debian.org/releases/etch/amd64/apcs02.html

Sistema de archivos: https://www.luisllamas.es/organizacion-sistema-de-archivos-en-linux/

Home en Raspberry Pi: https://www.raspberrypi.org/documentation/linux/filesystem/home.md

Comandos para ficheros y directorios:

  • cat prueba.txt: Muestra el contenido del archivo prueba.txt.
  • cd /abc/xyz: Cambia el directorio actual al directorio /abc/xyz.
  • cp XXX: Copia el archivo o directorio XXX y lo pega en una ubicación especificada. Un ejemplo de esta orden sería: cp fichero.txt /home/pi/fichero.txt en el directorio actual y lo pega en el directorio /home/pi/. Si el archivo no está en el directorio actual debes poner la dirección donde se encuentra.
  • ls -l: Muestra una lista con los archivos presentes en el directorio actual además de otros datos interesantes como el tamaño del archivo, la fecha de modificación y los permisos.
  • mkdir carpeta_prueba: Crea una nueva carpeta carpeta_prueba dentro de la carpeta actual.
  • mv XXX: Mueve el archivo o carpeta llamado XXX a una localización específica. Un ejemplo de esta orden sería: mv fichero.txt /home/pi que movería fichero.txt presente en la actual carpeta a la dirección /home/pi. Si el fichero que queremos mover no se encuentra en la carpeta donde nos encontramos tenemos que añadir la dirección completa del mismo. Este comando también puede ser utilizado para renombrar archivos o carpetas, lo único que debemos hacer es moverlos en el mismo directorio pero con distinto nombre, por ejemplo: mv fichero.txt prueba.txt renombraría el fichero fichero.txt como prueba.txt.
  • rm prueba.txt: Borra el fichero prueba.txt
  • rmdir carpeta_prueba: Borra la carpeta carpeta_prueba. Esta acción solo puede efectuarse si la carpeta está vacía.
  • scp user@10.0.0.32:/some/path/file.txt: Copia un archivo a través de SSH. Se puede utilizar para descargar un archivo de un ordenador remoto a nuestra Raspberry Pi. Usuario@10.0.0.32 es el nombre de usuario y la dirección es la IP local del ordenador remoto y /ruta/path/archivo.txt es la ruta y el nombre de archivo del archivo en el ordenador remoto.
  • touch: Crea un fichero nuevo vacío en el directorio actual.

Permisos en archivos y carpetas: https://www.luisllamas.es/permisos-de-ficheros-y-carpetas-en-raspberry-pi/

Seguridad de los ficheros: http://www.tldp.org/LDP/intro-linux/html/sect_03_04.html

WinSCP: https://www.luisllamas.es/winscp-transfiere-archivos-entre-windows-y-rasperry-pi/

Más información: http://www.tldp.org/LDP/intro-linux/html/chap_03.html

Configuración Redes

  • ifconfig: Sirve para comprobar el estado de la conexión inalámbrica que estamos utilizando, por ejemplo para ver si wlan0 tiene asignada o no una dirección IP.
  • iwconfig: Para comprobar a qué red estamos conectados de forma inalámbrica.
  • iwlist wlan0 scan: Muestra una lista con todas las redes inalámbricas disponibles.
  • iwlist wlan0 scan | grep ESSID: Si a la orden anterior añadimos | grep junto con el nombre de un campo, el sistema nos mostrará por pantalla tan sólo el campo que necesitamos. Utilizando la orden de ejemplo tan sólo se listará el campo ESSID.
  • nmap: Escanea tu red y lista los dispositivos conectados, el número de puerto, el protocolo, el sistema operativo, las direcciones MAC…
  • ping: Prueba la conectividad entre dos dispositivos conectados a una  misma red. Por ejemplo, ping 10.0.0.32 enviará un paquete al dispositivo con IP 10.0.0.32 y esperará una respuesta. También funciona con las direcciones de sitios web lo que nos puede ayudar a saber si tenemos conexión a la red o no utilizando, por ejemplo, ping http://www.google.es
  • wget http://www.miweb.com/prueba.txt: Descarga el archivo prueba.txt desde la página web http://www.miweb.com y lo guarda en el directorio actual.

SSH: https://www.luisllamas.es/raspberry-pi-ssh/ 

Herramienta interesante alternativa a Putty: https://mremoteng.org/download

Networking: http://www.tldp.org/LDP/intro-linux/html/chap_10.html

Comandos Sistema

  • cat /proc/meminfo: Muestra información sobre nuestro sistema de memoria.
  • cat /proc/partitions: Muestra el tamaño y el número de particiones de la tarjeta SD o del disco duro.
  • cat /proc/version: Nos muestra la versión de la Raspberry Pi que estamos utilizando.
  • df -h: Muestra el espacio disponible en el disco.
  • df /: Muestra cuánto espacio libre en disco hay disponible.
  • dpkg –get-selections | grep XXX: Muestra todos los paquetes instalados relacionados con XXX.
  • dpkg –get-selections: Da información sobre todos los paquetes instalados.
  • free: Muestra la cantidad de memoria libre de la que dispone el sistema.
  • hostname -I: Muestra la dirección IP de nuestra Raspberry Pi.
  • top: Muestra los recursos del sistema
  • lsusb: Nos ofrece información sobre todos los dispositivos USB conectados a nuestra Raspberry Pi.
  • UP key: Al pulsar la tecla UP se introduce el último comando ingresado en el símbolo del sistema. Esta es una manera rápida de corregir los comandos que se hicieron en error.
  • vcgencmd measure_temp: Muestra la temperatura de la CPU.
  • vcgencmd get_mem arm && vcgencmd get_mem gpu: Muestra la memoria dividida entre la CPU y la GPU.

Seguir con más comandos: https://www.luisllamas.es/listado-comandos-linux-utiles/

Gestión de procesos: https://www.luisllamas.es/como-gestionar-procesos-en-raspberry-pi/

Systemd: https://www.raspberrypi.org/documentation/linux/usage/systemd.md

Todo sobre procesos: http://www.tldp.org/LDP/intro-linux/html/chap_04.html

Más información:

Kernel

Kernel es un software que constituye la parte más importante del sistema operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema.

Las principales funciones del Kernel son las siguientes:

  • Administra la memoria RAM, para que todos los programas y procesos en ejecución puedan funcionar.
  • Administra el tiempo del procesador, que se utiliza al ejecutar procesos.
  • Administra el acceso y uso de los diferentes periféricos conectados a la computadora.

Kernel Raspberry Pi: https://www.raspberrypi.org/documentation/linux/kernel/README.md

Actualizar Kernel: https://www.raspberrypi.org/documentation/linux/kernel/updating.md

Bash Básico

Una Shell de Unix o también shell, es el término usado en informática para referirse a un intérprete de comandos, el cual consiste en la interfaz de usuario tradicional de los sistemas operativos basados en Unix y similares, como GNU/Linux.

GNU Bash o simplemente Bash (Bourne-again shell) es un lenguaje de comandos y shell de Unix escrito por Brian Fox para el Proyecto GNU. GNU Bash es el CLI implementado de forma mayoritaria en las distribuciones de Linux. Ejemplos de distribuciones que emplean Bash como CLI por defecto son Debian, openSUSE, Ubuntu, Fedora, Slackware, Mandriva.

Bash es el CLI incluido por defecto en Raspberry Pi.

Lanzado por primera vez en 1989, se ha utilizado ampliamente como el shell de inicio de sesión predeterminado para la mayoría de las distribuciones de Linux y MacOS Mojave de Apple y versiones anteriores.

Bash es un procesador de comandos que generalmente se ejecuta en una ventana de texto donde el usuario escribe comandos que causan acciones. Bash también puede leer y ejecutar comandos desde un archivo, llamado script de shell.

Autocompletado con Tabulación

Uno de los grandes «trucos» a la hora de emplear Bash y que nos ahorrará una enorme cantidad de tiempo es la función de autocompletado con la tecla tabulación.

Si en cualquier momento mientras escribimos un comando, un nombre de archivo, o algunos argumentos, pulsamos la tecla tabulación Bash sugiere la opción que empieza por lo que hemos escrito. En caso de haber más de una ocurrencia, se recorren cíclicamente las opciones disponibles.

Si existen muchas ocurrencias, al pulsar tabulación no aparecerá nada. Al pulsarla una segunda vez nos mostrará un listado con los comandos disponibles. Podemos añadir algunas letras más y pulsar tabulación para terminar el comando.

Historial de Comandos

Otra función que nos ahorrará mucho tiempo y que es una de las mejoras que introdujo Bash respecto a su antecesor SH, es el histórico de comandos.

En cualquier momento podemos recuperar un comando escrito con anterioridad pulsando la tecla «arriba» del teclado de flechas. Pulsar sucesivamente nos irá trayendo el comando anterior, hasta el inicio de la sesión del terminal. Si nos hemos pasado, podemos pulsar la tecla «abajo» para pasar al comando posterior.

Si ejecutamos el comando history aparecerán los últimos comandos ejecutados en terminal

Más Información:

Scripting:

Hello Word Bash: https://www.circuitbasics.com/how-to-write-and-run-a-shell-script-on-the-raspberry-pi/

Shell scripts utilizados: https://elpuig.xeill.net/Members/rborrell/articles/los-archivos-bashrc-bash_profile-etc-bashrc-etc-profile-los-archivos-bashrc-bash_profile-etc-bashrc-etc-profile-cual-utilizar

Ejemplo de bashrc: http://raspberrypimaker.com/my-bashrc-file-and-what-it-does/

Práctica: Hello word  de bash http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-5.html

Crear alias:

Redirecciones: http://www.tldp.org/LDP/intro-linux/html/sect_05_01.html

Filtros: http://www.tldp.org/LDP/intro-linux/html/sect_05_03.html

Enviroment y Bash: http://www.tldp.org/LDP/intro-linux/html/sect_07_02.html

Más información: https://www.luisllamas.es/bash-cli-raspberry-pi/

Programar Bash:

Automatizar Procesos

Automatizar Raspberry Pi con cron:

Ejecutar un proceso en el aranque: https://www.raspberrypi.org/documentation/linux/usage/rc-local.md

Log errores cron: https://raspberrypi.stackexchange.com/questions/3741/where-do-cron-error-message-go

OJO crontab es con crontab -e y no editando /etc/crontab!!!!

Troubleshooting crontab: https://garyhall.org.uk/troubleshooting-cron-raspberry-pi.html

Monitorizar Linux

Monitorizar Linux:

Linux Cheat Sheets

Guia de uso de linux (buenas cheatsheet):

Cheat sheet completa: https://www.linuxtrainingacademy.com/linux-commands-cheat-sheet/

Cheat Sheets:

Instalar Webmin

Webmin es una herramienta de configuración de sistemas accesible vía web para sistemas Unix, como GNU/Linux y OpenSolaris. Con él se pueden configurar aspectos internos de muchos sistemas operativos, como usuarios, cuotas de espacio, servicios, archivos de configuración, apagado del equipo, etcétera, así como modificar y controlar muchas aplicaciones libres, como el servidor web Apache, PHP, MySQL, DNS, Samba, DHCP, entre otros.

Web: http://www.webmin.com/

Instalación:

Es posible que haya que instalar algunas dependencias con:

  • sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python

Para comprobar que se ha instalado acceder desde un navegador a https://ip_address:10000

Más información:

Usando repositorio apt-get: http://www.ubuntufacil.com/2015/03/script-para-instalar-webmin-en-ubuntu-raspberry-pi-debian/

Para Saber más Linux

Libros:

Instalación de Raspbian

Software quickstart: https://www.raspberrypi.org/learning/software-guide/quickstart/ 

Guías de iniciación:

Formatear la tarjeta SD de la forma correcta.

Uno de los errores más frecuentes de los usuarios de tarjetas de memoria SD está en creer que este tipo de memorias funcionan igual que una memoria USB o un disco duro y se pueden formatear con las utilidades del sistema operativo. A diferencia de otros dispositivos de almacenamiento, las tarjetas SD incluyen una zona especial denominada “Protected Area”, empleada para temas de seguridad, que requiere un tratamiento especial. Adicionalmente – y dependiendo de la configuración y el tipo de tarjeta – es necesario un formateo ajustado al tipo de tarjeta.

Descargar e instalar la utilidad “SD Card Formatter” provista por la SD Association, los mismos que definen los estándares de este medio de almacenamiento. Después de instalada, se debe proceder a formatear la tarjeta SD antes de utilizarla. De esta forma se garantiza que se usará todo el espacio disponible de la tarjeta y se optimizará su desempeño y almacenamiento de acuerdo con las especificaciones del fabricante.

Descarga https://www.sdcard.org/downloads/formatter_4/eula_windows/index.html 

Instalar Raspbian en Disco Externo o Memoria USB

Con la capacidad de las Raspberry Pi de arrancar desde USB, es posible hacer funcionar una Raspberry Pi con una memoria USB o mejor aun con un disco externo.

Raspberry Pi con SSD: https://www.youtube.com/watch?v=gp6XW-fGVjo 

Documentación oficial: https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md 

Modos de arranque: https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/README.md

Instalar Imagen Raspbian

Descargar imagen Raspbian zip: https://www.raspberrypi.org/downloads/

Descargar Raspbian Buster with desktop desde: https://downloads.raspberrypi.org/raspbian_latest 

La versión por defecto de Raspbian es ahora una instalación mínima – le da el escritorio, el navegador Chromium, el reproductor multimedia VLC, Python, y algunos programas accesorios. Junto a esto se encuentra la imagen «Raspbian Full», que también incluye todos los programas recomendados: LibreOffice, Scratch, SonicPi, Thonny, Mathematica y varios otros.

El programa de software recomendado se puede utilizar para instalar o desinstalar cualquiera de los programas adicionales que se encuentran en la imagen completa; si descarga la imagen mínima y comprueba todas las opciones en el software recomendado, terminará con la imagen completa, y viceversa.

Buster la nueva versión de Raspbian: https://www.raspberrypi.org/blog/buster-the-new-version-of-raspbian/

Descargar imagen Raspbian zip: https://www.raspberrypi.org/downloads/

Emular Raspberry Pi en Virtual Box: https://www.luisllamas.es/raspberry-pi-virtualbox/

Guia de instalación https://www.raspberrypi.org/documentation/installation/installing-images/README.md 

Para copiar la imagen a una SD usar:

Tutoriales de instalación de Raspbian:

Etcher

Etcher es una herramienta gráfica de escritura de tarjetas SD que funciona en Mac OS, Linux y Windows, y es la opción más fácil para la mayoría de los usuarios. Etcher también soporta la escritura de imágenes directamente desde el archivo zip, sin necesidad de descomprimirlas.

balenaEtcher es normalmente la opción más fácil para la mayoría de los usuarios de escribir imágenes en tarjetas SD, por lo que es un buen punto de partida. Si busca una alternativa en Windows, puede usar Win32DiskImager.

Descargar Etcher: https://www.balena.io/etcher/ y yscribir tu imagen con Etcher.

Pasos:

  • Descargar SO: Raspbian
  • Formatear microSD: SD Card Formatter 4.0
  • Flashear: Etcher
  • Acceder a la SD desde un PC: Partición “/boot” es accesible desde Windows, partición expandida no
  • Preconfiguración (recomendado para modo headless): SSH

Win32DiskImager

Con Win32DiskImager no solo se puede copiar una imagen sino guardar una imagen de una tarjeta SD, pero el uso de Etcher es más sencillo.

Descarga https://sourceforge.net/projects/win32diskimager/

Con Win32DiskImager no solo se puede copiar una imagen sino guardar una imagen de una tarjeta SD.

Post Instalación

Una vez instalado raspbian, conectar un monitor, teclado y ratón a Raspberry Pi para seguir con su configuración.

En caso de no tener un monitor, se puede hacer una instalación headless:

Una vez entramos en Raspberry Pi, seguimos los pasos que nos indica para cambiar contraseña, cambiar el nombre (hostname), configurar y actualizar Raspberry Pi.

Luego es posible hacer más configuraciones desde “Configuración de  Raspberry Pi” o desde comando “sudo raspi-config”:

Para ejecutar el wizard de configuración otra vez:

  • sudo piwiz
  • sudo raspi-config

Más información:

Conexión a la Red

La forma general de conectar a Internet la Raspberry Pi es mediante 

  • Conexión a Ethernet por DHCP
  • Conectar a Wifi por DHCP

Por este motivo no es necesario configurar nada si conectamos a un router con DHCP configurado para ethernet y en WiFi solo deberemos configurar la red wifi.

DHCP:

La propia Raspberry Pi podría hacer de servidor DHCP: https://www.raspberrypi.org/learning/networking-lessons/lesson-3/plan/ 

La Raspberry Pi 3 es la primera de la familia en incluir WIFI estándar de serie, lo que es un gran avance de salida y garantiza que se normalice las conexiones, a diferencia de las versiones previas en las que había que comprar un módulo WiFi y configurar la WIFI en función del modelo de adaptador que usasemos.

En el caso actual, la configuración de la WIFI se reduce a listar las redes disponibles y elegir la nuestra, para después proporcionar la contraseña de acceso. 

Detalle seleccion WIFI

Aquí tienes iconos para la configuración de varios elementos, como el volumen de audio la WIFI y hasta el Bluetooth, que recuerda viene de serie en la Nueva Raspi3. Para configurar la WIFI pincha y selecciona el icono y selecciona la WiFi a conectarse.

Desplegando wifi

Una vez configurado comprobar que se puede navegar.

Aunque hayas conectado correctamente a Internet hay mil razones por las que necesitas conocer más información de tus conexiones IP, especialmente saber la IP para que al actuar como servidor saber a qué IP conectarnos.

Con el comando “ifconfig” podemos saber qué interfaces están conectados y que DNS usan o que Gateway o router estas usando como salida.

ifconfig 0

Para obtener los datos de ethernet teclea ifconfig eth0 y para wifi teclea ifconfig wlan0

Con el comando route -ne se pueden ver las rutas configuradas

Más información: https://www.prometec.net/conectar-a-internet/ 

Para obtener más información de las redes ver los directorios:

  • /sys/class/net/eth0
  • /sys/class/net/wlan0

Por ejemplo en el fichero address está la dirección MAC del controlador de red

En algunas ocasiones nos puede interesar asignar una IP fija, para ello seguir el tutorial:https://www.luisllamas.es/raspberry-pi-ip-estatica/ 

Los fichero de configuración de IP son:

  •  /etc/dhcpcd.conf
  • /etc/network/interfaces

Más información: https://raspberrypi.stackexchange.com/questions/39785/dhcpcd-vs-etc-network-interfaces 

También es conveniente cambiar el hostname, seguir este tutorial: https://www.howtogeek.com/167195/how-to-change-your-raspberry-pi-or-other-linux-devices-hostname/ 

Acceso Remoto

Una vez instalado vamos a asegurarnos el acceso remoto para no tener que tener conectado a un monitor y un teclado y ratón y podamos manejarlo.

Acceso Remoto: https://www.raspberrypi.org/documentation/remote-access/

SSH

La mejor forma de acceder a Raspberry Pi remotamente en modo comando en línea estando en la misma red es usando SSH. 

SSH sigue un modelo cliente-servidor. El cliente inicia una petición al servidor, que autentifica la comunicación e inicia el entorno Shell. Múltiples clientes pueden conectarse a un mismo servidor. Por defecto SSH emplea el puerto TCP 22 aunque puede cambiarse fácilmente. 

SSH dispone de más usos muy interesantes. por ejemplo, podemos copiar archivos de forma segura entre dos dispositivos, o tunelizar cualquier conexión de otra aplicación a través de un canal seguro SSH.

Para activar el servidor SSH en Raspberry Pi comprobar que estás activado en menu – Preferencias- Configuración de Raspberry Pi – Interfaces

Esta conexión sólo funciona en red local. Para poder acceder desde fuera, a través de Internet, hay que configurar un mapeo de puertos en el router. El proceso completo depende del router,.

Para conectarnos desde Windows a SSH, deberemos emplear un cliente SSH para conectarnos con Raspberry Pi. El cliente más utilizado en Windows es Putty, que es Open Source y está disponible en https://www.putty.org/

Descargamos y ejecutamos Putty y nos aparece una ventana donde podemos introducir la dirección IP (o el nombre) de la Raspberry Pi. Al conectarnos se nos preguntará el nombre del usuario y la contraseña.

Más información:

VNC

La mejor forma de acceder a Raspberry Pi remotamente en modo escritorio estando en la misma red es usando VNC.

VNC es un programa de software libre basado en una estructura cliente-servidor que permite observar las acciones del ordenador servidor remotamente a través de un ordenador cliente. VNC no impone restricciones en el sistema operativo del ordenador servidor con respecto al del cliente: es posible compartir la pantalla de una máquina con cualquier sistema operativo que admita VNC conectándose desde otro ordenador o dispositivo que disponga de un cliente VNC portado.

Seguir este tutorial: https://www.raspberrypi.org/documentation/remote-access/vnc/README.md

La conexión de VNC de RealVNC se incluye con Raspbian. Consiste en el servidor de VNC, que permite controlar Raspberry Pi remotamente, y el VNC viewer, que permite que controlar ordenadores remotamente de su Raspberry Pi.

El servidor VNC debe habilitarse para poder conectarse remotamente, para ello ir a menu – Preferencias- Configuración de Raspberry Pi – Interfaces y asegurarse que VNC está activado.

Una vez activado establecer la conexión desde el ordenador instalando el VNC viewer: https://www.realvnc.com/en/connect/download/viewer/ y conectarse a la IP de nuestra Raspberry:

Con VNC también se puede establecer una conexión en la nube.

Más información:

Team Viewer

En el caso que queramos conectarnos a nuestra Raspberry Pi estando en cualquier parte del mundo, una buena opción es TeamViewer.

TeamViewer es un software informático privado de fácil acceso, que permite conectarse remotamente a otro equipo. Entre sus funciones están: compartir y controlar escritorios, reuniones en línea, videoconferencias y transferencia de archivos entre ordenadores.Team Viewer es gratuito para uso personal.

Web: https://www.teamviewer.com/es/ 

La instalación es muy simple solo hay que descargarse TeamViewer Host para raspberry Pi desde https://www.teamviewer.com/es/descarga/linux/ y acerse una cuenta en la web de TeamViewer https://www.teamviewer.com/es/ 

Enlace de descarga: https://download.teamviewer.com/download/linux/teamviewer-host_armhf.deb 

Instalar el fichero teamviewer-host_xxx_armhf.deb, simplemente haciendo doble click o con el comando “sudo dpkg -i filename.deb”

Si hay dependencias solucionarlo con  “sudo apt-get update” y “sudo apt-get -f upgrade”

Una vez instalado ejecutar TeamViewer en Raspberry Pi y poner las credenciales de la cuenta de TeamViewer

Una vez instalado, acceder a https://login.teamviewer.com/LogOn con la cuenta de TeamViewer y ya podemos acceder a nuestra Raspberry Pi. Necesitaremos instalar el cliente de TeamViewer o la app de Chrome:

Solo para controlar la Raspberry Pi remotamente ejecutar el cliente “TeamViewer_Setup.exe” de esta forma:

Más información:

Más de TeamViewer

Otras Alternativas al Acceso Remoto

Logmein: https://www.logmein.com/es 

Otra opción de acceso remoto es el xrdp:

Alternativa opensource interesante para acceso remoto

http://www.instructables.com/id/Controlling-your-raspberry-pi-mouse-and-keyboard-r/?ALLSTEPS. Ver el código en: https://github.com/piBoard

Si queremos un acceso remoto por consola pero no hay acceso directo a la IP es posible usar https://remote.it/

Conectar a Unidades de Red

Ver tutoriales:

Configuración Headless (sin monitor)

Configurar raspbian para que no haga falta conectarse al monitor y teclado.

Tutorial: https://www.luisllamas.es/como-configurar-raspberry-pi-sin-monitor-ni-teclado/ 

Un servidor DHCP interesante en caso de no tener uno puede ser: http://www.vercot.com/~serva/ usandolo de forma temporal para asignar IPs

Cambiar la ip por comando (ip fija) una vez accedemos por SSH: http://raspberryparatorpes.net/instalacion/poner-la-direccin-ip-fija-en-raspbian/

Es posible usar una configuración de failback, que en caso que falle el DHCP dar una fija. Ver este ejemplo: https://wiki.archlinux.org/index.php/Dhcpcd#Static_profile

Buen tutorial para Raspberry Pi Zero W de confguración headless: https://www.internetdelascosas.cl/2017/10/30/configurando-una-raspberry-pi-zero-wifi-sin-un-monitor/

Clonado de Imágenes Raspberry Pi

Si clonamos imágenes de Raspberry Pi nos podemos encontrar algunos problemas si la imagen es mayor que la capacidad de la tarjeta donde clonar.

Proceso de clonado:

Solución si la imagen es mayor que el tamaño de la tarjeta SD, básicamente se trata de encoger la imagen puesto que parte de la imagen es espacio libre:

Cambiar el tamaño de la partición en un fichero imagen:

Otras aplicaciones para hacerlo:

Si es una SD mayor que el de la imagen, habrá que expandir el file system para poder usar todo el espacio la tarjeta SD

Raspberry Pi Zero W

Getting started:

Configuración headless RAspberry Pi Zero:

Configurar por USB: https://www.raspberrypi.org/blog/programming-pi-zero-usb/

Conectar raspberry Pi zero W por usb

Interesante tutorial para raspberry Pi zero y usarlo con USB: https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/overview 

Otros tutoriales para la zero w:

Control Remoto Raspberry Pi Zero

En caso que no usemos entorno gráfico, algo no recomendable con Raspberry Pi Zero, podemos conectarnos remotamente consola pero sin hay acceso directo a la IP mediante https://remote.it/