logo linux router

Este apunte describo el proceso de instalación de una Raspberry Pi4B Rev1.5 (también probado con la Pi3B+) con el sistema operativo Raspberry Pi OS (64bits) (basado en Debian). Normalmente uso estas Pi’s como mini servidores de propósito específico o para pruebas y laboratorios.


Tarjeta SD

Lo primero es lo primero, preparar una tarjeta Micro SD con el sistema operativo, he elegido Raspbian OS Lite 64bits. No necesito la parte gráfica, voy a utilizarlo como un servidor corriendo diferentes servcios. Podemos usar cualquier método para clonar la imagen en una tarjeta SD, en mi caso he usado programa Raspberry Pi imager.

Preparo la tarjeta SD con Raspberry Pi imager
Selecciono Raspberry Pi OS (64bits)
Selecciono el dispositivo donde grabar la imagen

Cuando termina retiro la tarjeta y la introduzco en la Pi. Conecto la Pi a un monitor, teclado y conecto con cable ethernet al switch, para iniciar la primera fase de la instalación, donde es importante tener acceso a Internet. La Pi recibirá una dirección IP vía DHCP inicialmente.


Primera fase de la instalación

Un rato después de arrancar la Pi empezaremos a ver una serie de menús donde hacemos la configuración básica. A continuación describo lo que configuré en mi caso:

  • Layout del Teclado: Other -> Spanish, Spanish
  • New Username: luis

Hago login con el usuario y contraseña que acabo de configurar y lo primero que voy a hacer es activar sshd para poder conectar con la Pi a través de la red local y continuar desde ahí.

raspberrypi Login: luis
Password: <la del paso anterior>

luis@raspberrypi:~ $ sudo raspi-config
raspi-config

Selecciono Interface options -> SSH -> Ok, arrancará el servicio SSHD. Me salgo de raspi-config y averiguo qué dirección IP ha recibido de la red.

$ sudo ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.82  netmask 255.255.255.0  broadcast 192.168.1.255
             ============
:

Me conecto desde mi puesto de trabajo

$ ssh luis@192.168.1.82
:
Last login: Tue Feb 21 04:29:57 2023
-bash: warning: setlocale: LC_ALL: cannot change locale (es_ES.UTF-8)

Wi-Fi is currently blocked by rfkill.
Use raspi-config to set the country before use.

luis@raspberrypi:~ $

Vuelvo a ejecutar raspi-config para terminar de configurar múltiples aspectos importantes:

luis@raspberrypi:~ $ sudo raspi-config
  • System Options > hostname > "idefix"
  • Localisation Options > Locale >
    • [ ] en_GB.UTF-8 UTF-8 <---- Lo quito
    • [*] es_ES.UTF-8 UTF-8 <---- Lo pongo
    • Default Locale: es_ES.UTF-8 UTF-8
  • Localisation Options > Timezone > Europa, Madrid
  • Localisation Options > WLAN Country > ES
  • Advance Options > Network interface names > No
    • No: Si quieres usar eth0, eth1, etc..
    • Yes: Si quieres usar nombres predecibles
  • Finish y Reboot

Por último hacemos una actualización del sistema operativo !

$ ssh luis@192.168.1.82
:
luis@idefix:~ $ sudo su -
root@idefix:~# apt update && apt upgrade -y && apt full-upgrade -y

Ya hemos terminado, tengo una Raspberry Pi perfectamente operativa, actualizada a la última versión de Raspberry OS de 64 bits.


Personalización

Esta parte del proceso es opcional, a mi me gusta tener algunos ficheros y scripts de apoyo en todos los sistemas linux con los que trabajo y algunas modificaciones al sistema. Los dejo aquí como referencia.


Elimino IPv6, WLAN, BT

De nuevo opcional, solo si lo necesitas, así es como se elimina IPv6, la tarjeta Wifi de la Pi y el Bluetooth. En mi caso cuando hago laboratorios de IPv4 y no lo necesito prefiero desactivarlo todo.

  • Fichero /boot/cmdline.txt, añado al final de la línea ipv6.disable=1
console=serial0,115200 console=tty1 root=PARTUUID=2c310193-02 rootfstype=ext4 fsck.repair=yes rootwait ipv6.disable=1
  • Fichero /boot/config.txt, añado al final del fichero dos líneas adicionales:
dtoverlay=disable-wifi
dtoverlay=disable-bt
  • Recuerda que para que estos cambios sean efectivos tienes que hacer un reboot de la Pi.


Asigno una IP fija

Normalmente dejo que la Pi trabaje con el cliente dhcp por defecto, pero a veces necesito asignarle una IP fija. No es evidente cómo hacerlo, porque depende de la versión del SO. En mi caso he configurado raspi-config -> Avanzado -> Netowrk -> Nombres de interfaces predecibles -> No. Después modifico estos dos ficheros:

  • Fichero /etc/dhcpcd.conf, añado al final lo siguiente:
interface eth0
static ip_address=192.168.103.3/22
static routers=192.168.100.1
static domain_name_servers=192.168.100.224
  • Fichero /etc/network/interfaces, añado al final lo siguiente:
auto eth0
allow-hotplug eth0
iface eth0 inet maual


Ficheros y scripts

Si los quieres instalar bájate los gists y dales permiso de ejecución. Para instalarlos, a continuación un ejemplo: haz clic en el enlace (p.ej. el de /usr/bin/e), selecciánalo todo y copia con Ctrl-C. Depués usa cat, Intro, Ctrl-D y al volver a la línea de comandos cambia los permisos:

luis@idefix:~ $ sudo su -
root@idefix:~# cat > /usr/bin/e
:
:
root@idefix:~# chmod 755 /usr/bin/e
  • Script /usr/bin/e
  • Fichero /etc/nanorc personalizado para el editor nano
  • Creo el directorio de backup para nano tanto para root como para mi usuario.
    • luis@idefix:~ $ sudo mkdir /root/.nano
    • luis@idefix:~ $ mkdir ~/.nano
  • Script /usr/bin/confcat que muestra archivos quitando las líneas de comentarios
  • Script /usr/bin/s para cambiar a root mucho más rápido
  • Recuerda cambiar los permisos
    • luis@idefix:~ $ sudo chmod 755 /usr/bin/e /usr/bin/confcat /usr/bin/s

El fichero /etc/sudoers.d/010_pi-nopasswd ya viene preparado para que al usuario luis no le pida contraseña de root y pueda ejecutar sudo directamente.

A partir de ahora al ejecutar el comando e fichero se arrancará el editor nano. El editor funcionará con el esquema de teclado descrito en /etc/nanorc. Al ejecutar s me convertiré en root y por último el comando confcat muestra el contenido de archivos de texto ignorando las líneas de comentarios.