Guía para instalar Ubuntu en Raspberry Pi 3
El sistema operativo "oficial" para Raspberry es Rapsbian, pero en cambio, si quieres instalar Ubuntu, el proceso no es muy complicado.
Pre-Requisitos:
Se asume que ya se cumplen estos requerimientos, como obtenerlos queda fuera del alcance de ésta guía.
- Lector de memoria microSD
- Linux y permiso de super usuario (ejemplo: sudo ó root)
- Instalada la herramienta de descompresión xz
- en Archlinux
pacman -S xz
- en Ubuntu
sudo apt-get install xz-utils
- en Archlinux
Instalación:
Primero debemos descargar la imagen de ubuntu para raspberry, y luego instalarla en la memoria microSD que va en la raspberry. Hay que tener en cuenta que podemos elegir la arquitectura de la imagen entre 32 y 64 bits, por la limitación de memoría en 1Gb no hay mucha diferencia en cual usar. En mi caso elegí la de 32-bit (armhf).
La imágen la podemos descargar desde https://ubuntu.com/download/raspberry-pi, una vez descargada debemos descomprimirla con xz, el nombre del archivo al momento de escribir esto es: ubuntu-20.04.1-preinstalled-server-armhf+raspi.img.xz
Una vez finalizada la descarga y desde una consola, nos ubicamos en el directorio donde se encuentra la imagen y procedemos a descomprimir con el comando:
unxz -kv ubuntu-20.04.1-preinstalled-server-armhf+raspi.img.xz
Al finalizar la descompresión, tendremos un nuevo archivo mucho más grande del mismo nombre pero sin la extensión .xz, ese nuevo archivo es el que deberemos copiar a la memoria microSD, conectamos la memoria al lector microSD, revisamos y deberíamos poder ver un nuevo dispositivo parecido a: /dev/mmcblk0
Como super usuario (sea con sudo o root) iniciamos la copia de la imagen de ubuntu a la memoria microSD con el comando dd: tener en cuenta que se deben reemplazar los parámetros de "if" y "of" con la ruta absoluta del archivo descomprimido y la ruta de la memoriaSD respectivamente.
dd bs=4M if=/../ubuntu-20.04.1-preinstalled-server-armhf+raspi.img of=/dev/mmcblk0 status=progress
Al finalizar la copia, instalamos de nuevo la memoria en la raspberry, conectamos la fuente de energía y esperamos a que inicie el sistema operativo.
Login:
Por defecto la instalación viene con un usuario y password por defecto, el usuario es ubuntu
y la contraseña también es ubuntu
, en el primer inicio de sesión se pedirá el cambio de la contraseña.
Para iniciar sesión tenemos dos alternativas:
- De forma local: que es conectar un teclado físico a la raspberry.
- De forma remota: que es conectar un cable de red entre un router y la raspberry.
De contar con disponibilidad de teclado y monitor para usar con la raspberry, la opción mas fácil es de forma local. De lo contrario deberemos hacerlo de forma remota a través de la red local, y este fue mi caso.
Si contamos con un router y dhcp podremos conectar la raspberry mediante cable UTP/RJ45, y luego desde el administrador del router buscamos la IP entregada a la raspberry, un indicio podría ser el hostname de nombre "ubuntu". Luego que lo encontremos intentamos hacer login por ssh:
Aceptamos el certificado e inmediatamente nos pedirá cambiar la contraseña:
ubuntu@ubuntu's password:
You are required to change your password immediately (administrator enforced)
...
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for ubuntu.
Current password:
New password:
Retype new password:
passwd: password updated successfully
Connection to ubuntu closed.
Volvemos hacer login de la misma forma, pero con la nueva contraseña:
ssh ubuntu@ubuntu
ubuntu@ubuntu's password:
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-1015-raspi armv7l)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon Aug 10 03:37:55 UTC 2020
System load: 0.08
Usage of /: 6.1% of 28.95GB
Memory usage: 19%
Swap usage: 0%
Temperature: 49.4 C
Processes: 131
Users logged in: 0
IPv4 address for eth0: 192.168.1.9
* Are you ready for Kubernetes 1.19? It's nearly here! Try RC3 with
sudo snap install microk8s --channel=1.19/candidate --classic
https://microk8s.io/ has docs and details.
0 updates can be installed immediately.
0 of these updates are security updates.
Configuración de red Wi-Fi:
Para conectarse a la red usando wifi primero debemos saber cual es nuestro dispositivo de red, y los datos de acceso a la red. Hay un paquete que no viene instalado por defecto pero que es muy útil para trabajar con redes inalámbricas, se llama wireless-tools y los instalamos con:
sudo apt install wireless-tools
Ahora listamos las interfaces de red y la activamos:
sudo iwconfig
lo no wireless extensions.
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
eth0 no wireless extensions.
En mi caso activamos wlan0
:
sudo ip link set dev wlan0 up
Para asegurarnos que vemos nuestra red, hacemos un scan filtrando solo los nombres de las redes:
sudo iwlist wlan0 scan | grep ESSID
...
ESSID:"TP-Link_69E6"
ESSID:"Mi Casa 5.8GHz"
...
Una vez confirmado que nuestro dispositivo wi-fi esta funcionando y que también podemos ver nuestra red, en mi caso "Mi Casa 5.8GHz", procedemos a la Configuración en el sistema para que se conecte automáticamente en cada inicio.
Editamos el archivo de configuración /etc/netplan/50-cloud-init.yaml
, veremos el contenido con algo parecido a:
network:
ethernets:
eth0:
dhcp4: true
optional: true
version: 2
Agregamos la parte de "wifis" luego de "ethernets". Al ser un archivo Yaml tener cuidado en respetar la alineación de cada linea y sección.
Dentro de wifis agregamos nuestra interfaz wlan0
con los atributos necesarios y los datos de acceso a la red wi-fi. Para conocer mas sobre la configuración de netplan visitar https://netplan.io/
network:
ethernets:
eth0:
dhcp4: true
optional: true
version: 2
wifis:
wlan0:
dhcp4: true
optional: false
access-points:
"Mi Casa 5.8GHz":
password: "M1 p4s5w0Rd"
Finalizamos aplicando los cambios con:
sudo netplan apply
Para confirmar que todo ha salido bien, verificamos que tenemos IP de nuestra red en el dispositivo wi-fi:
sudo ip address show wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.1.105/24 brd 192.168.1.255 scope global dynamic wlan0
valid_lft 41230sec preferred_lft 41230sec
Como vemos, ahora tenemos ip de la red local 192.168.1.105
. Reiniciamos la raspberry y desconectamos el cable de red, si todo ha salido bien deberíamos poder hacer login conectados por la wi-fi.
Y así ya tendríamos nuestra Raspberry Pi 3 funcional y conectada para nuestros trabajos y experimentos, hasta la próxima.