Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

Ja són més de quatre anys que vaig comprar la meua primera Raspberry Pi, el model 1 on el disc dur era una tarjeta SD de les grans, i m'ha donat moltes satisfaccions com pots veure si fas una cerca de "Raspberry Pi" al meu blog perquè he muntat un servidor d'impressió amb FreeBSD i CUPS, he muntat servidors de pàgines web i he instal·lat Wordpress, Drupal, Nextcloud, Monitorix, etc, he muntat un sistema de videovigilància o que fa fotos repetidament i després puc obtenir Time lapses xulos, també he muntat un sistema multimèdia amb Samba i discs durs per a veure pelis via Wifi des de qualsevol smartphone o tablet o ordinador o televisor intel·ligent de la teua LAN, etc. La veritat és que la placa mare Raspberry Pi és un ordinador amb moltes possibilitats i amb un consum molt baix d'energia, ja que té un carregador de font comú miniUSB de 5V, com el d'un telèfon intel·ligent, això es tradueix en uns 3.5W al dia que, si està funcionant a 24x7, això et dóna aproximadament 31 kWh d'energia a l'any, i si ho traduim en euros/KWh, el cost total d'un servidor Raspberry Pi + un disc dur extern és aproximadament 4 o 5 EUR a l'any (font switch-case.com).

Fins ara, he fet instal·lacions amb Raspbian, que és la distribució GNU/Linux oficial de la Raspberry Pi, i també he fet instal·lacions amb FreeBSD per a ARM, que funciona de meravella i estic molt satisfet del seu rendiment perquè tinc una raspberry Pi amb FreeBSD 12 que funciona 24x7 des de fa dos anys i no em dóna mai problemes. Alguna vegada m'ha fallat la MicroSD, però com tinc sempre una altra MicroSD clonada, doncs és molt fàcil recuperar el servei.

I bé, des de fa unes setmanes tenia en ment instal·lar a la Raspberry el meu sistema operatiu favorit, OpenBSD, amb arquitectura arm64, i com les vesprades i nits de l'estiu són més llargues, doncs ara era el moment. Primer de tot he de dir que nomès hi ha suport (a dia d'avui, 18 de juliol del 2019) per al model Raspberry Pi 3 B. Sense el 'plus'. Aleshores, a OpenBSD ara mateix no estan suportades del tot les següents plaques mare:

- Raspberry Pi 1
- Raspberry Pi 2
- Raspberry Pi 3 B+ (sí, però no)
- Raspberry Pi zero
- Raspberry Pi 4

A la Raspberry Pi 3 B+ (amb '+'), sí que pots instal·lar OpenBSD, però el port ethernet no està suportat, i necessites un cable USB a ethernet. Vaig instal·lar-la ahir i es va instal·lar bé, però preferisc no tindre una Raspberry Pi amb massa maquinari afegit als ports USB. Cal esmentar que l'equip de desenvolupadors d'OpenBSD arm64 està fet una molt bona feina, i tal vegada en un temps més plaques estaran suportades.

Tampoc hi ha suport de moment per als drivers de la tarjeta MicroSD, aleshores no la podrem fer servir com a disc dur (com fem a FreeBSD o Raspbian), caldrà que carreguem a la tarjeta el sistema d'arranc per a realitzar la instal·lació, però la instal·lació pròpia del sistema operatiu la farem a un pendrive USB extern que ficarem en un dels quatre ports USB de la Raspberry. Jo he usat un Philips de 16GB, no és molt però per a fer les primeres provetes ja en tinc prou:

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

Per a començar amb la instal·lació d'OpenBSD, descarregarem el fitxer d'arranc mínim miniroot65.fs el qual cremarem a la tarjeta MicroSD, i també ens descarregarem alguns sets d'arxius des del repositori oficial d'OpenBSD https://ftp.openbsd.org/pub/OpenBSD/snapshots/arm64/ amb wget:

wget https://ftp.openbsd.org/pub/OpenBSD/6.5/arm64/miniroot65.fs
wget https://ftp.openbsd.org/pub/OpenBSD/6.5/arm64/bsd
wget https://ftp.openbsd.org/pub/OpenBSD/6.5/arm64/bsd.mp
wget https://ftp.openbsd.org/pub/OpenBSD/6.5/arm64/base63.tgz
wget https://ftp.openbsd.org/pub/OpenBSD/6.5/arm64/man63.tgz
wget https://ftp.openbsd.org/pub/OpenBSD/6.5/arm64/comp65.tgz
wget https://ftp.openbsd.org/pub/OpenBSD/6.5/arm64/game65.tgz

Ara, si volem fer la instal·lació a la Raspberry Pi més ràpidament, deixarem els sets d'instal·lació a un directori del nostre ordinador i crearem un servidor HTTP fàcilment amb:

$ doas python3.6 -m http.server 80

I ara sí que ja podem començar la instal·lació. Comença l'espectacle. El primer que farem serà cremar el miniroot65.fs a la tarjeta MicroSD amb:

doas dd if=miniroot65.fs of=/dev/rsd1c bs=1m

Ja tenim el programari que amb U-Boot, ens permetrà iniciar l'arranc on farem la instal·lació.

Tampoc hi ha suport de moment per a l'HDMI de la Raspberry, aleshores no podem connectar el port HDMI amb un monitor HDMI o VGA, necessitem un cable serie TTL a USB de desenvolupament. Jo el vaig comprar a Amazon per 9 euros. Concretament aquest de Adafruit. Estic segur que pots comprar cables d'aquestos per 2 o 3 euros a webs de la Xina, però jo el volia ràpid per a aprofitar les vesprades estiuenques.

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

Alguns cables serie TTL tenen els pins pegats en tireta, però no hem d'agafar un d'aquestos, ja que necessitem que els cables estiguen solts per a ficar-los als pins TX, RX and GND de la Raspberry Pi.

Connectarem tres cables als pins 6, 8 i 10 (pin 6 [terra], pin 8 [TX] i pin 10 [RX]) de la fila externa de la Raspberry, tal com es mostra a la següent imatge:

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

Obrirem la consola serie amb la següent ordre:

doas cu -l /dev/cuaU3 -s 115200

Una vegada tinguem el pendrive USB a un port USB de la Raspberry, i la tarjeta MicroSD introduïda, i tinguem també connectats els tres pins a la Raspberry i a un port USB del nostre ordinador (un portàtil en el meu cas), ja podem ficar la Raspberry Pi a la llum connectant-li el carregador. S'iniciarà la llumeneta led roja i per al consola veurem el procès d'arranc.

El muntatge que tindrem en aquest punt és paregut a la següent imatge. I des de l'ordinador (el portàtil Thinkpad x250 en el meu cas) veurem ja tot el procès d'arranc i d'instal·lació d'OpenBSD:

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

Durant la instal·lació, veurem el dispositiu sd0, i eixe dispositiu és el pendrive USB on farem la instal·lació i les particions. Jo no em complique, i en aquest punt li dic que faça servir tot l'espai disponible [whole] i que cree les particions de manera automàtica. La informació que ens mostrarà serà la següent:

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

A l'hora de configurar la xarxa, li he ficat un cable RJ45 al port ethernet i de moment ho configure amb DHCP per a fer la instal·lació senzilla. La ethernet és la interfície smsc0. També veuràs que agafa la Wifi de la Raspberry, però jo preferisc fer la instal·lació amb cable.

I una vegada instal·lem els paquets, el sistema ens demana si volem continuar, apagar la Raspberry Pi o reiniciar.

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

I ara, una vegada ja tenim instal·lat OpenBSD al pendrive USB, cal que li diguem al U-Boot que la nostra preferència és que arranque des del pendrive, ja que és allí on tenim instal·lat el sistema operatiu. Aleshores, cal que aturem el U-Boot en el moment de l'arranc i escriurem:

Hit any key to stop autoboot: 0
U-Boot> setenv boot_targets usb0 mmc0 pxe dhcp
U-Boot> saveenv
U-Boot> boot

Tens més informació i l'explicació a la web d'OpenBSD arm64 https://www.openbsd.org/arm64.html

L'arranc U-Boot primer i la configuració que farem quedarà de la següent manera:

x250$ doas cu -l /dev/cuaU3 -s 115200
Connected to /dev/cuaU3 (speed 115200)
MMC: mmc@7e202000: 0, mmc@7e300000: 1
Loading Environment from FAT... *** Warning - bad CRC, using default environment
In: serial
Out: vidconsole
Err: vidconsole
Net: No ethernet found.
starting USB...
USB0: scanning bus 0 for devices... 4 USB Device(s) found
scanning usb for storage devices... 1 Storage Device(s) found
Hit any key to stop autoboot: 0
U-Boot> setenv boot_targets usb0 mmc0 pxe dhcp
U-Boot> saveenv
Saving Environment to FAT... OK
U-Boot> boot

I ja està. Ja tenim OpenBSD funcionant a la Raspberry. Ara ja pots fer instal·lacions de paquets, que tens un gran número al teu abast.

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

Per a la teua informació, si vols conèixer tots els detalls, ací tens tot el procés complet de l'arranc:


x250$ doas cu -l /dev/cuaU3 -s 115200
Connected to /dev/cuaU3 (speed 115200)
MMC: mmc@7e202000: 0, mmc@7e300000: 1
Loading Environment from FAT... OK
In: serial
Out: vidconsole
Err: vidconsole
Net: No ethernet found.
starting USB...
USB0: scanning bus 0 for devices... 4 USB Device(s) found
scanning usb for storage devices... 1 Storage Device(s) found
Hit any key to stop autoboot: 0
Device 0: Vendor: Philips Rev: PMAP Prod: USB Flash Drive
Type: Removable Hard Disk
Capacity: 15120.0 MB = 14.7 GB (30965760 x 512)
... is now current device
Scanning usb 0:1...
Found EFI removable media binary efi/boot/bootaa64.efi
Scanning disk mmc@7e202000.blk...
Card did not respond to voltage select!
Scanning disk mmc@7e300000.blk...
Disk mmc@7e300000.blk not ready
Scanning disk usb_mass_storage.lun0...
Found 6 disks
FDT memrsv map 0: Failed to add to map
158890 bytes read in 119 ms (1.3 MiB/s)
FDT memrsv map 0: Failed to add to map
## Starting EFI application at 00080000 ...
disks: sd0* sd1
>> OpenBSD/arm64 BOOTAA64 0.16
boot>
booting sd0a:/bsd: 6028400+1228616+512692+816076 [424231+109+712176+414842]=0xabf648
type 0x0 pa 0x0 va 0x0 pages 0x1 attr 0x8
type 0x7 pa 0x1000 va 0x0 pages 0x1ff attr 0x8
type 0x2 pa 0x200000 va 0x200000 pages 0x4000 attr 0x8
type 0x7 pa 0x4200000 va 0x0 pages 0x3cf6 attr 0x8
type 0x6 pa 0x7ef6000 va 0x284610e000 pages 0x14 attr 0x8000000000000008
type 0x7 pa 0x7f0a000 va 0x0 pages 0x31600 attr 0x8
type 0x2 pa 0x3950a000 va 0x3950a000 pages 0x903 attr 0x8
type 0x4 pa 0x39e0d000 va 0x39e0d000 pages 0x1 attr 0x8
type 0x2 pa 0x39e0e000 va 0x39e0e000 pages 0x106 attr 0x8
type 0x1 pa 0x39f14000 va 0x39f14000 pages 0x27 attr 0x8
type 0x0 pa 0x39f3b000 va 0x39f3b000 pages 0x2 attr 0x8
type 0x6 pa 0x39f3d000 va 0x2878155000 pages 0x1 attr 0x8000000000000008
type 0x0 pa 0x39f3e000 va 0x39f34000 pages 0x7 attr 0x8
type 0x6 pa 0x39f45000 va 0x287815d000 pages 0x1 attr 0x8000000000000008
type 0x2 pa 0x39f46000 va 0x39f46000 pages 0x140a attr 0x8
type 0x5 pa 0x3b350000 va 0x2879568000 pages 0x10 attr 0x8000000000000008
type 0x2 pa 0x3b360000 va 0x39f46000 pages 0xa0 attr 0x8
type 0xb pa 0x3f100000 va 0x2879578000 pages 0x1 attr 0x8000000000000000
[ bsd ELF symbol table not valid: bad magic ]
[ no symbol table formats found ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2019 OpenBSD. All rights reserved. https://www.OpenBSD.org
OpenBSD 6.5-current (GENERIC.MP) #118: Mon Jul 15 21:07:06 MDT 2019
deraadt@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/GENERIC.MP
real mem = 961499136 (916MB)
avail mem = 904425472 (862MB)
mainbus0 at root: Raspberry Pi 3 Model B Rev 1.2
cpu0 at mainbus0 mpidr 0: ARM Cortex-A53 r0p4
cpu0: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
cpu0: 512KB 64b/line 16-way L2 cache
efi0 at mainbus0: UEFI 2.7
efi0: Das U-Boot rev 0x20190100
apm0 at mainbus0
simplefb0 at mainbus0: 656x416, 32bpp
wsdisplay0 at simplefb0 mux 1
wsdisplay0: screen 0-5 added (std, vt100 emulation)
"system" at mainbus0 not configured
"axi" at mainbus0 not configured
"thermal-zones" at mainbus0 not configured
simplebus0 at mainbus0: "soc"
"dma" at simplebus0 not configured
bcmintc0 at simplebus0
bcmdog0 at simplebus0
"cprman" at simplebus0 not configured
bcmrng0 at simplebus0
"mailbox" at simplebus0 not configured
"gpio" at simplebus0 not configured
pluart0 at simplebus0
"mmc" at simplebus0 not configured
"dsi" at simplebus0 not configured
bcmtemp0 at simplebus0
bcmaux0 at simplebus0
com0 at simW: ns16550, no workingcom0: console
dwctwo0 at simplebus0
"local_intc" at simplebus0 not configured
"mmc" at simplebus0 not configured
"gpiomem" at simplebus0 not configured
"firmware" at simplebus0 not configured
"power" at simplebus0 not configured
"fb" at simplebus0 not configured
"vchiq" at simplebus0 not configured
"vcsm" at simplebus0 not configured
"arm-pmu" at simplebus0 not configured
"virtgpio" at simplebus0 not configured
"expgpio" at simplebus0 not configured
simplebus1 at mainbus0: "clocks"
"clock" at simplebus1 not configured
"clock" at simplebus1 not configured
"phy" at mainbus0 not configured
agtimer0 at mainbus0: tick rate 19200 KHz
"fixedregulator_5v0" at mainbus0 not configured
"fixedregulator_3v3" at mainbus0 not configured
"__overrides__" at mainbus0 not configured
"leds" at mainbus0 not configured
"__symbols__" at mainbus0 not configured
cpu1 at mainbus0 mpidr 1: ARM Cortex-A53 r0p4
cpu1: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
cpu1: 512KB 64b/line 16-way L2 cache
cpu2 at mainbus0 mpidr 2: ARM Cortex-A53 r0p4
cpu2: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
cpu2: 512KB 64b/line 16-way L2 cache
cpu3 at mainbus0 mpidr 3: ARM Cortex-A53 r0p4
cpu3: 32KB 64b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache
cpu3: 512KB 64b/line 16-way L2 cache
usb0 at dwctwo0: USB revision 2.0
uhub0 at usb0 configuration 1 interface 0 "Broadcom DWC2 root hub" rev 2.00/1.00 addr 1
uhub1 at uhub0 port 1 configuration 1 interface 0 "Standard Microsystems product 0x9514" rev 2.00/2.00 addr 2
smsc0 at uhub1 port 1 configuration 1 interface 0 "Standard Microsystems SMSC9512/14" rev 2.00/2.00 addr 3
smsc0: address b8:27:eb:82:8f:b3
ukphy0 at smsc0 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 0x0001f0, model 0x000c
umass0 at uhub1 port 3 configuration 1 interface 0 "Philips USB Flash Drive" rev 2.10/1.00 addr 4
umass0: using SCSI over Bulk-Only
scsibus0 at umass0: 2 targets, initiator 0
sd0 at scsibus0 targ 1 lun 0: SCSI4 0/direct removable serial.13fe55008494AB1B6320
sd0: 15120MB, 512 bytes/sector, 30965760 sectors
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
bootfile: sd0a:/bsd
boot device: sd0
root on sd0a (17ce7a851c16d8fd.a) swap on sd0b dump on sd0b
WARNING: CHECK AND RESET THE DATE!
Automatic boot in progress: starting file system checks.
/dev/sd0a (17ce7a851c16d8fd.a): file system is clean; not checking
/dev/sd0l (17ce7a851c16d8fd.l): file system is clean; not checking
/dev/sd0d (17ce7a851c16d8fd.d): file system is clean; not checking
/dev/sd0f (17ce7a851c16d8fd.f): file system is clean; not checking
/dev/sd0g (17ce7a851c16d8fd.g): file system is clean; not checking
/dev/sd0h (17ce7a851c16d8fd.h): file system is clean; not checking
/dev/sd0k (17ce7a851c16d8fd.k): file system is clean; not checking
/dev/sd0j (17ce7a851c16d8fd.j): file system is clean; not checking
/dev/sd0e (17ce7a851c16d8fd.e): file system is clean; not checking
pf enabled
starting network
smsc0: bound to 192.168.1.28 from 192.168.1.1 (e0:46:9a:96:d8:43)
reordering libraries: done.
openssl: generating isakmpd/iked RSA keys... done.
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
starting early daemons: syslogd pflogd ntpd.
starting RPC daemons:.
savecore: no core dump
checking quotas: done.
kvm_mkdb: can't open /dev/ksyms
clearing /tmp
kern.securelevel: 0 -> 1
creating runtime link editor directory cache.
preserving editor files.
starting network daemons: sshd smtpd sndiod.
running rc.firsttime
Path to firmware: http://firmware.openbsd.org/firmware/snapshots/
No devices found which need firmware files to be downloaded.
starting local daemons: cron.
Thu Jul 18 07:42:24 CEST 2019
OpenBSD/arm64 (rpi3.home) (console)
login:

Una vegada accedim, veig que l'experiència d'ús d'OpenBSD instal·lat a un pendrive USB com a disc dur del sistema operatiu va prou bé, i he pogut editar fitxers i instal·lar paquets a una velocitat normal. Per a fer una prova, he volgut instal·lar el paquet neofetch i mira com queda:

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

No està gens malament. Això ha segut una explicació del procés d'instal·lació d'OpenBSD 6.5 a la Raspberry Pi 3 B. I com que m'agrada tenir les plaques mare a una caixeta, vaig comprar aquesta caixeta transparent a Amazon per 5 eurets i el últim pas que he volgut fer és ficar-la a la caixeta per a cuidar-la més i que no es plene de pols.

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

I la caixeta transparent muntada queda així:

Instal·lant OpenBSD 6.5 arm64 a la Raspberry Pi 3 B

Recorda fer sempre còpies de seguretat (còpies! còpies! còpies!) del teu sistema operatiu i de les teues dades, per a no perdre temps en possibles reinstal·lacions i reconfiguracions.

Si has arribat fins ací (enhorabona!), que sàpigues que existeix un grup de Telegram anomenat OpenBSD.es en llengua castellana per a connectar a usuaris i desenvolupadors. Afegeix-te perquè allà et poden ajudar a resoldre dubtes, però recorda primer consultar els manuals oficials d'OpenBSD o per al xarxa. Ací et deixe un enllaços amb les meues fonts i amb més informació:

- Arquitectura arm64 OpenBSD
- FAQs d'0penBSD
- Getting OpenBSD running on Raspberry Pi 3
- OpenBSD & Raspberry Pi
- Running OpenBSD on Raspberry Pi 3

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.