Cada cierto tiempo me encuentro con que tengo que preparar una Raspberry Pi para desarrollar algún prototipo hardware utilizando Python como lenguaje de programación. La Raspberry con la que me toca jugar suele tener ya algo instalado, pero como no sé ni cuánto hace que se puso en marcha ni en que estado se quedó suelo hacer una instalación limpia.

Los pasos que describo a continuación son los que doy para preparar una Raspberry Pi con Raspbian desde cero. No es necesario conectarle ni teclado, ni ratón, ni monitor. Al terminar el proceso puedo conectar con SSH utilizando autenticación con clave pública. Estos pasos son los siguientes:

  1. Descarga la última imagen disponible del sistema operativo.

    En la web de Raspberry Pi tienen una página dedicada a Raspbian. Verás varias versiones. Aunque no es obligatorio, suelo decantarme por la primera de ellas, Raspbian with desktop and recommended software. La razón: así tengo el sistema preparado para cualquier eventualidad que se pueda presentar.

    Puedes descargar la imagen de disco por Torrent o en formato ZIP. Yo uso la primera y, además, dejo la imagen siempre disponible en mi cliente de Torrent para contribuir con mi ancho de banda a quien quiera descargar dicha imagen en el futuro. Periódicamente compruebo si hay nuevas versiones para ofrecer la más reciente.

  2. Instala Etcher en tu ordenador.

    Lo usarás para grabar la imagen de disco en la tarjeta microSD que después irá en la Raspberry Pi. Existen diferentes alternativas para instalarlo. Como yo uso macOS, la que más me gusta es Homebrew.

  3. Graba la imagen en una tarjeta microSD.

    Utiliza Etcher para grabar en una tarjeta microSD la imagen de disco que descargaste. La propia interfaz de usuario de Etcher describe los pasos necesarios a dar. Tras grabar la imagen verifica que los datos grabados sean correctos.

  4. Configura la Wi-Fi.

    Para ello crea un archivo llamado wpa_supplicant.conf. En mi caso, su contenido será similar al siguiente:

     country=ES
     ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
     update_config=1
    
     network={
         ssid="id_de_la_red"
         scan_ssid=1
         psk="contraseña_de_acceso_a_la_red"
         key_mgmt=WPA-PSK
     }
    
    

    Sólo tengo que cambiar el identificador de la red y la contraseña de acceso a la misma. Puede que tu caso sea algo diferente y necesites configurar el archivo de otra manera.

    Cuando lo tengas listo sólo tienes que copiar ese archivo en la partición llamada boot de la tarjeta microSD que se montará cuando la introduzcas en el ordenador.

  5. Activa el acceso por SSH.

    Tan sencillo como crear un archivo vacío llamado ssh en la partición llamada boot de la tarjeta microSD.

  6. Pon en marcha la Raspberry Pi.

    Para ello tendrás que sacar la tarjeta microSD del ordenador e introducirla en la Raspberry Pi. Conéctala después a la alimentación eléctrica. Cuando el proceso de arranque concluya deberías ser capaz de iniciar sesión por SSH.

  7. Cambia las credenciales.

    Por defecto, el usuario pi tiene la contraseña raspberry. Utiliza la orden passwd para cambiar la contraseña predeterminada y aumentar así la seguridad del sistema.

  8. Cambia el nombre predeterminado del host.

    Edita el archivo /etc/hostname y cambia el nombre predeterminado del host (raspberry) por algo que te permita identificarlo con facilidad.

  9. Permite el acceso directo por SSH.

    Tan sencillo como crear una carpeta llamada .ssh en la carpeta de inicio del usuario pi y copiar la clave pública del equipo desde el que te conectes al archivo authorized_keys dentro de la carpeta que acabas de crear. Desde ese momento podrás iniciar sesión en la Raspberry sin introducir tu contraseña. Es posible que, en tu caso particular, necesites dar más pasos para conseguir este resultado.

  10. Actualiza el sistema.

    Aunque hayas descargado la última imagen disponible de Raspbian, desde el momento en el que se publicó hasta el momento en el que la instalases han podido actualizarse muchos paquetes. Por ejemplo, estoy escribiendo estas líneas a finales de marzo del 2019 y la última imagen disponible fue publicada en noviembre de 2018.

    Utiliza las siguientes órdenes, esperando a que la anterior termine antes de ejecutar la siguiente, para actualizar el sistema:

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get dist-upgrade
    sudo apt autoremove
    sudo reboot
    
  11. Cambia la codificación del sistema.

    En mi caso utilizo en_US.UTF-8, así que edito el archivo /etc/locale.gen para comentar con una # la línea en_GB.UTF-8 UTF-8, que es la que aparece activa por defecto, y eliminar ese comentario de la línea en_US.UTF-8 UTF-8. Después, edito el archivo /etc/default/locale y añado las líneas:

    LANG=en_US.UTF-8
    LC_ALL=en_US.UTF-8
    LANGUAGE=en_US.UTF-8
    

    Tras reiniciar el sistema la codificación será la esperada.

  12. Cambia la zona horaria del sistema.

    Edita el archivo /etc/timezone para que la zona que aparezca ahí sea aquella en la trabajes. En mi caso de se trata de Europe/Madrid. Tras reiniciar el sistema la zona horaria será la esperada.

En el futuro me gustaría preparar un sencillo script con Ansible para automatizar todo el proceso en la medida de lo posible.

Los pasos aquí mostrados consiguen solucionar un caso muy particular que, obviamente, no tiene porqué ser el tuyo. Sin embargo, podría ser que algo de lo que cuento aquí te sea útil en algún momento. En cualquier caso, lo publico porque sé que a mí me va a venir bien tenerlo como referencia.