Configuración Inicial de una Raspberry Pi

Publicado

Varias veces reinstalé el sistema operativo de mis fieles Raspberry Pis, y con todo ese trabajo fui desarrollando un proceso medianamente repetible para llevar a cabo la instalación y configuración inicial, de manera completamente remota (headless).

A continuación comparto y recorro ese proceso paso por paso.

Antes de conectar a la Raspberry

Instalar Raspbian

Descargar imagen de raspbian desde la página oficial. Yo uso Raspbian Lite (sin entorno gráfico), aunque los pasos deberían ser los mismos para la version tradicional.

Grabar la imagen descargada a una memoria SD con etcher.

Grabando imagen con Etcher

Grabando imagen con Etcher

Montar (en nuestra PC) esa memoria grabada, para agregarle algunos archivos.

Habilitar conexión SSH

Agregar un archivo vacío, llamado ssh (sin extensión) a la raíz de la memoria, en la partición boot, para habilitar el acceso por SSH en el inicio.

touch /media/sda1/ssh

Configurar conexión WiFi

Agregar archivo wpa_supplicant.conf a raíz para habilitar la conexión automática a wifi.

nano /media/sda1/wpa_supplicant.conf

El contenido del archivo:

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

network={
    ssid="MySSID"
    psk="MyPassword"
}

Ya conectado a la Raspberry

Después de haber habilitado el acceso SSH (y de forma opcional también habiendo configurado el WiFi), ya podemos encender la RPI, conseguir la dirección IP, y conectarnos por SSH.

Conseguir Dirección IP

Este paso va a variar en cada red, y en cada router. En mi caso, como el router de mi red está configurado para asignar IPs dinámicamente por DHCP, sólo fue necesario ingresar a la web de administración del router, y ver el listado de IPs ya asignadas.

Listado de clientes DHCP

Listado de clientes DHCP

Una vez obtenida la dirección IP, podemos conectarnos directamente a nuestra RPI. Especificamos el usuario, y nos va a pedir la contraseña.

ssh pi@192.168.0.10

Una vez conectados, podemos seguir con algunos de los siguientes pasos, para aumentar en alguna medida la seguridad.

Habilitar acceso SSH con clave

Se puede copiar una clave de acceso ssh, para no tener que utilizar una contraseña:

ssh-copy-id -i ~/.ssh/mykey.pub pi@192.168.0.10

Donde ~/.ssh/mykey.pub es una clave pública de SSH ya existente en nuestra computadora.

Inhabilitar acceso con contraseña

Para eso tenemos que editar el archivo /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Dentro del archivo, modificar las lineas correspondientes a la configuración de PasswordAuthentication. Debería quedar así:

#PasswordAuthentication yes
PasswordAuthentication no

Reiniciar el servicio SSH

sudo /etc/init.d/ssh restart

Configurar Sistema de Archivos

Realizo algunas configuraciones especiales al montaje del sistema de archivos. Esto es principalmente para mejorar la vida util de la tarjeta de memoria, aunque en algún caso también puede mejorar el rendimiento.

Expandir el sistema de archivos

Esto se puede hacer desde la herramienta de configuración incluida en raspbian.

sudo raspi-config

Eliminar SWAP

Eliminar el archivo de SWAP, y desinstalar por completo el servicio de swap.

sudo swapoff --all
sudo apt-get remove dphys-swapfile
sudo apt autoremove

Mover /var/log y /var/temp a ramdisk.

Editar el archivo /etc/fstab, agregar las siguientes lineas:

tmpfs /var/log tmpfs defaults,noatime 0 0
tmpfs /var/tmp tmpfs defaults,noatime 0 0

Otra configuración alternativa (no probada)

tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=30m 0 0
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0
tmpfs /var/run tmpfs defaults,noatime,nosuid,mode=0755,size=2m 0 0
tmpfs /var/spool/mqueue tmpfs defaults,noatime,nosuid,mode=0700,gid=12,size=30m 0 0

Generar Locales

(falta algún comando, porque esto no funciona del todo)

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
sudo locale-gen en_US.UTF-8
sudo update-locale en_US.UTF-8
type "locale" to check again.

Todo Listo!

Ahora si, después de todos estos pasos es que se puede empezar a instalar o configurar lo necesario.

Una buena idea también es generar una imagen de “backup” de la tarjeta SD, para poder ahorrarnos todo este trabajo en una futura reinstalación.

Me queda pendiente mover esta guía a un gist de Github, y estaría bueno también generar un script, que se encargue de ejecutar todos los pasos automáticamente.

Algún día, algún día…