Raspberry Pi

Enlaces

Distribuciones

Software

Hardware

Comandos útiles

Comprobar asignaciones de cliente No-IP

Las asignaciones dejan marca en el log syslog:

edumoreno@raspi-git /var/log $ sudo fgrep noip syslog
Oct 16 12:18:57 raspi-git noip2[2165]: v2.1.9 daemon ended.
Oct 16 12:19:19 raspi-git noip2[2186]: v2.1.9 daemon started with NAT enabled
Oct 16 12:19:35 raspi-git noip2[2186]: eduardofilo.no-ip.biz set to 88.19.216.95
Oct 16 12:53:06 raspi-git noip2[2186]: v2.1.9 daemon ended.
Oct 16 13:15:23 raspi-git noip2[2217]: v2.1.9 daemon started with NAT enabled
Oct 16 13:15:25 raspi-git noip2[2217]: eduardofilo.no-ip.biz was already set to 88.19.216.95.

Utilidad de configuración

$ sudo raspi-config

Backup de la SD (comprimiendo al vuelo)

$ #Backup:
$ sudo dd if=/dev/mmcblk0 bs=2M | pv | gzip -9 - > Rpi_8gb_backup.img.gz
$ #Backup sólo de 4GB (si por ejemplo la tarjeta es más grande pero no aprovecha toda la superficie)
$ sudo dd if=/dev/mmcblk0 bs=2M count=2048 | pv -s 4g | gzip -9 - > Rpi_4gb_backup.img.gz
$ #Restauración (comprimido con gzip):
$ gunzip Rpi_8gb_backup.img.gz -c | pv | sudo dd of=/dev/mmcblk0 bs=2M
$ #Restauración (comprimido con xz):
$ xzcat Rpi_8gb_backup.img.xz | pv | sudo dd of=/dev/mmcblk0 bs=2M
$ #Restauración (comprimido con zip):
$ unzip -p Rpi_8gb_backup.zip | pv | sudo dd of=/dev/mmcblk0 bs=2M

Para hacer un backup parcial los cálculos se harían así. Primero sacamos los datos de la estructura de la tarjeta con fdisk:

$ sudo fdisk -l /dev/mmcblk0
Disco /dev/mmcblk0: 14,4 GiB, 15502147584 bytes, 30277632 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0xa125a0dc

Dispositivo    Inicio Comienzo    Final Sectores Tamaño Id Tipo
/dev/mmcblk0p1            8192    96663    88472  43,2M  c W95 FAT32 (LBA)
/dev/mmcblk0p2           98304 15550463 15452160   7,4G 83 Linux

Aquí vemos que cada sector ocupa 512 bytes. Nos fijamos en el último sector utilizado que en este caso es 15550463. Multiplicando este sector por el tamaño del sector (y sumando 1 al número de sectores por si empiezan a contar en 0) obtendremos el número de bytes que tendremos que copiar. Como el block size que vamos a utilizar es 2MB tendremos que truncar por lo alto (también servirá de medida de seguidad). Los cálculos en este caso resultarían:

(15550463 + 1) (sector) * 512 (Byte/sector) / 1024 (Byte/KB) / 1024 (KB/MB) / 2 (MB/bloque) = 3796,5 bloques

Por tanto en este caso copiaremos 3797 bloques para cubrir esos 15550464 sectores.

Backup de la SD (comprimiendo al vuelo y diviendo en trozos el fichero resultante)

$ #Backup:
$ sudo dd if=/dev/mmcblk0 bs=2M | pv | gzip -9 - | split --bytes=2G - Rpi_8gb_backup.img.gz.part_
$ #Restauración:
$ cat Rpi_8gb_backup.img.gz.part_* | gunzip -c | pv | sudo dd of=/dev/mmcblk0 bs=2M

Control de progreso durante flasheo

$ sudo pkill -USR1 -n -x dd

Como alternativa se puede instalar el comando dcfldd para sustituir a dd, con lo que obtendremos una indicación del progreso de la copia. dcfldd informa cada 256 bloques escritos por defecto. Para que lo haga con más frecuencia hay que pasarle la opción statusinterval de esta forma:

$ #Backup:
$ sudo dcfldd statusinterval=10 if=/dev/mmcblk0 bs=2M | gzip -9 - > Rpi_8gb_backup.img.gz

Gestión de la SWAP

Para redimensionar la Swap predeterminada (fichero de 100MB en /var/swap):

$ sudo nano /etc/dphys-swapfile
$ sudo dphys-swapfile setup
$ sudo dphys-swapfile swapon

Para consultar el estado de la swap:

$ swapon -s

Para dejar de usar swap:

$ sudo swapoff -a

Para activar la swap tal y como está definida en ‘‘/etc/fstab’’:

$ sudo swapon -a

Para activar swap con un fichero en concreto:

$ sudo swapon /var/swap

Escaneo de Raspberry Pi’s en red

$ arp -a | grep b8:27:eb
$ sudo nmap -PR -sP 192.168.1.0/24 | fgrep -B 2 "Raspberry"

Pi-top

Enlaces

Artículos interesantes de TheMagPi

Seguridad

SSH

Editar el fichero /etc/ssh/sshd_config y modificar/añadir las siguientes líneas (fuente):

PermitRootLogin no
MaxAuthTries 3
MaxStartups 5
AllowUsers edumoreno

Medidas de protección:

Varios

Configuración headless

Activación de SSH

Crear un fichero vacío con nombre ssh en partición boot.

Conexión a punto de acceso Wifi

Crear un fichero con nombre wpa_supplicant.conf en partición boot con el siguiente contenido:

country=ES
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="<el_ssid>"
    psk="<el_pwd>"
    key_mgmt=WPA-PSK
}

IP estática

Primero averiguamos el nombre del interfaz al que queremos poner la IP estática consultando ifconfig. Luego editamos /etc/dhcpcd.conf y al final añadimos:

interface <nombre_interfaz>
static ip_address=<ip>/24
static routers=<gateway>
static domain_name_servers=<dns>

Raspad

Enlaces

Configuración

Sistema base

Raspbian

Digitalizador de pantalla

El equipo recién instalado lleva un firmware bastante deficiente en el digitalizador táctil de la pantalla. Hay que actualizarlo siguiendo los pasos del siguiente artículo del wiki de SunFounder: The touch screen does not work properly FAQ

Teclado en pantalla

Instalar el paquete: matchbox-keyboard

Clic secundario

Para conseguir emular el clic derecho del ratón procedemos como sigue (fuentes: 1 y 2):

  1. Instalamos los siguientes paquetes:

     $ sudo apt-get update && sudo apt-get install build-essential libx11-dev libxtst-dev libxi-dev x11proto-randr-dev libxrandr-dev xserver-xorg-input-evdev xinput-calibrator
    
  2. Descargamos el código de twofing y lo extraemos:

     $ wget http://plippo.de/dwl/twofing/twofing-0.1.2.tar.gz
     $ tar -xvzf twofing-0.1.2.tar.gz
     $ cd twofing-0.1.2
    
  3. Compilamos:

     $ make && sudo make install
    
  4. Creamos el fichero /etc/udev/rules.d/70-touchscreen-ilitek.rules con el siguiente contenido:

     SUBSYSTEMS=="usb",ACTION=="add",KERNEL=="event*",ATTRS{idVendor}=="222a",ATTRS{idProduct}=="0001",SYMLINK+="twofingtouch",RUN+="/bin/chmod a+r /dev/twofingtouch"
     KERNEL=="event*",ATTRS{name}=="ILITEK Multi-Touch-V3000",SYMLINK+="twofingtouch",RUN+="/bin/chmod a+r /dev/twofingtouch"
    
  5. Creamos el fichero /usr/share/X11/xorg.conf.d/90-touchinput.conf con el siguiente contenido:

     Section "InputClass"
     Identifier "calibration"
     Driver "evdev"
     MatchProduct "ILITEK ILITEK-TP"
     MatchDevicePath "/dev/input/event*"
     Option "Emulate3Buttons" "True"
     Option "EmulateThirdButton" "1"
     Option "EmulateThirdButtonTimeout" "750"
     Option "EmulateThirdButtonMoveThreshold" "30"
     EndSection
    
  6. Creamos el fichero /etc/udev/rules.d/ 99-input-tagging.rules con el siguiente contenido:

     ACTION=="add", KERNEL=="event*", SUBSYSTEM=="input", TAG+="systemd", , ENV{SYSTEMD_ALIAS}+="/sys/subsystem/input/devices/$env{ID_SERIAL}"
    
  7. Creamos el fichero ~/.config/autostart/twofing.desktop con el siguiente contenido:

     [Desktop Entry]
     Type=Application
     Name=Twofing
     Exec=twofing
     StartupNotify=false