Arm64 - Installer Openbsd sur RockPro64

Rockchip - RK3399 (RockPro64)#


RP64, Kezako ?#

Le RockPro64 ou RP64 est, un nano / micro ordinateur monocarte, fonctionnant sur une architecture arm 64 bits.

Objectif#

Couvrir le processus d’installation d’OpenBSD sur RP64 pour les besoins suivants:

  • OpenBSD Current (6.7-beta):
    • Media d’installation: clé usb
    • Cible: carte emmc 64Go
    • nas: 2 disques en raid 1

Ne sera pas couvert, le processus d’installation standard d’OpenBSD

Processus d’installation sur RP64#

Séquence de démarrage du rockpro64:

  1. SPI NOR flash memory
  2. emmc
  3. sdcard
  1. Entrer dans U-BOOT
  2. Effacer la mémoire flash SPI
  3. Permettre au RP64 de démarrer le média USB
  4. Suivre le processus d’installation classique

Choix du RP64#

  • Faible consommation électrique
  • Prix faible vs un ordinateur
  • Encombrement
  • Ludique
  • Moins sensible aux menaces: surface (empreinte quantitative) de l’architecture arm / os sur le marché
  • 1 port PCIe x4 (gen 2.0)
    • Carte SATA (nas)
    • Carte ethernet
    • Carte USB
    • (…)

Pour en savoir plus sur le RP64

Matériel nécessaire dans le cadre d’une utilisation NAS / Domotique

Le bus PCI pose encore quelques soucis sur sa gestion.

Matériels testés :#

1. Cards / Chipsets OK:

  • Startech.com PEXSATA32 2 ports SATA controller
    • ahci0 at pci1 dev 0 function 0 “Marvell 88SE9128 AHCI” rev 0x20: msi, AHCI 1.2
  • QNINE NVME PCIe Adapter M.2 2280 w/Samsung 970 EVO
    • nvme0 at pci1 dev 0 function 0 Samsung SM981/PM981 NVMe rev 0x00: msix, NVMe 1.3

2. Fonctionne mais déconseillée

  • ROCKPro64 PCI-e to Dual SATA-II Interface Card
    • ahci0 at pci1 dev 0 function 0 ASMedia ASM1061 AHCI rev 0x01: msi, AHCI 1.2

3. Ne fonctionne pas:

  • HighPoint Rocket 640L
    • ahci0 at pci1 dev 0 function 0 Marvell 88SE9230 AHCI rev 0x11: msi, AHCI 1.2
  • Dell PERC 6/ir
    • mpi0 at pci9 dev 0 function 0 Symbios Logic SAS1068E rev 0x08: msi

Le pilote actuel, ne supporte pas les cartes basées sur pci-bridge

Prérequis techniques pour l’installation#


Les “pins jumper”

  1. (16) : désactiver le boot sur emmc
  2. (pin 23 & 25) : désactiver au premier demarrage le SPI flash

Dans les deux cas, à retirer 2 secondes post démarrage, et avant l’allumage de la LED blanche.

Objectif visé : permettre, pour l’installation, un démarrage sur sdcard.

Présenter les taches technique pour télécharger la version d’OpenBSD ainsi que l’intégration de U-Boot et du “Device Tree Blob” nécessaire pour le démarage et l’installation du système d’exploitation OpenBSD sur la plateforme arm64 RockPro64.

Step 1: obtenir les ressources#

  1. Image: miniroot68.img

code:

doas ftp -o miniroot68.img https://cdn.openbsd.org/pub/OpenBSD/6.8/arm64/miniroot68.img
  1. Si absent, installer les “packages” suivants:

code:

doas pkg_add u-boot-aarch64
doas pkg_add dtb

Step 2: préparer la clé usb d’installation#

  1. Installer l’image OpenBSD sur la clé usb (si clé=sd1)

code:

doas dd if=miniroot68.img of=/dev/rsd1c bs=1m
  1. Installer le firmware dtb sur la clé USB (si clé=sd1)

code:

doas mount /dev/sd1i /mnt
doas mkdir /mnt/rockchip
doas cp /usr/local/share/dtb/arm64/rockchip/rk3399-rockpro64.dtb /mnt/rockchip/
doas umount /mnt
Sans l’installation du dtb, sur la clé USB, impossible d’écrire sur la carte emmc.

Step 3: préparer la carte eMMC (si emmc=sd2)#

  1. Installer l’emmc sur la clé USB
  2. Installer U-BOOT & le firmware sur emmc

code:

doas dd if=/usr/local/share/u-boot/rockpro64-rk3399/idbloader.img of=/dev/sd2c seek=64
doas dd if=/usr/local/share/u-boot/rockpro64-rk3399/u-boot.itb of=/dev/sd2c seek=16384

Step 4: connecter les éléments#

  1. installer la carte emmc sur son emplacement final (board)
  2. insérer la clé sur un port USB 2.0 du RP64

Démarrage & installation#


Les étapes du processus#

  1. Positionner un cable sur les pins GPIO 23 et 25 pour shunter le boot sur flash SPI
  2. Positionner le cable USB TTL & se connecter à la console
  3. Démarrer
  4. Avant 2 secondes, retirer le jumper
  5. Entrer dans u-boot
  6. Effacer le flash SPI (ou laisser le jumper éternellement)
  7. Détecter manuellement la clé usb
  8. Sortir de u-boot
  9. Amorcer l’installation de OpenBSD

Console via cable série USB-TTL#

Pour se connecter via un cable série USB-TTL, il suffit de connecter le cable et de lancer la commande ci-dessous pour intéragir avec la “board” RocPro64.

doas cu -s 115200 -l /dev/cuaU0

Une fois alimenté nous visualison et pouvons interagir avec la plateforme.

u-boot#

Appuyer, sur une touche, pour accéder à u-boot, à la ligne:
Hit any key to stop autoboot
U-Boot TPL 2020.01 (Mar 31 2020 - 18:19:43)
Channel 0: LPDDR4, 50MHz
BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
Channel 1: LPDDR4, 50MHz
BW=32 Col=10 Bk=8 CS0 Row=15 CS1 Row=15 CS=2 Die BW=16 Size=2048MB
256B stride
256B stride
lpddr4_set_rate: change freq to 400000000 mhz 0, 1
lpddr4_set_rate: change freq to 800000000 mhz 1, 0
Trying to boot from BOOTROM
Returning to boot ROM...

U-Boot SPL 2020.01 (Mar 31 2020 - 18:19:43 -0600)
Trying to boot from MMC2
INFO:    GICv3 with legacy support detected. ARM GICv3 driver initialized in EL3
INFO:    BL31: cortex_a53: CPU workaround for 855873 was applied
INFO:    BL31: Preparing for EL3 exit to normal world
INFO:    Entry point address = 0x200000
INFO:    SPSR = 0x3c9


U-Boot 2020.01 (Mar 31 2020 - 18:19:43 -0600)

Model: Pine64 RockPro64
DRAM:  3.9 GiB
PMIC:  RK808 
MMC:   dwmmc@fe320000: 1, sdhci@fe330000: 0
Loading Environment from MMC... *** Warning - bad CRC, using default environment

In:    serial@ff1a0000
Out:   serial@ff1a0000
Err:   serial@ff1a0000
Model: Pine64 RockPro64
rockchip_dnl_key_pressed: adc_channel_single_shot fail!
Net:   eth0: ethernet@fe300000
Hit any key to stop autoboot:  0

u-boot : effacer le flash SPI#

Effacer le flash SPI, pour ne plus l’utiliser au boot

Dans u-boot

sf probe
sf erase 0 400000

u-boot : détecter la clé usb#

Dans u-boot:

=> usb start
starting USB...
Bus usb@fe380000: USB EHCI 1.00
Bus usb@fe3c0000: USB EHCI 1.00
Bus dwc3: Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
Bus dw3c:Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
scanning bus usb@fe380000 for devices... 1 USB Device(s) found
scanning bus usb@fe3c0000 for devices... 2 USB Device(s) found
scanning bus dwc3 for devices... 1 USB Device(s) found
scanning bus dwc3 for devices... 1 USB Device(s) found
scanning usb for storage devices... 1 Storage Device(s) found
Sans doute à ce stade, appuyer sur une touche et interrompre la boucle du scan.

u-boot : phase de boot#

A l’invite de prompt de u-boot, lancer la commande boot.

=>  boot
switch to partitions #0, OK
mmc0(part 0) is current device
Scanning mmc 0:1...
Found EFI removable media binary efi/boot/bootaa64.efi
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
Card did not respond to voltage select!
Scanning disk dwmmc@fe320000.blk...
Disk dwmmc@fe320000.blk not ready
Scanning disk sdhci@fe330000.blk...
** Unrecognized filesystem type **
Scanning disk usb_mass_storage.lun0...
** Unrecognized filesystem type **
Found 6 disks
BootOrder not defined
EFI boot manager: Cannot load any image
168758 bytes read in 55 ms (2.9 MiB/s)
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
disks: sd0* sd1

Ordonnancer le boot sur l’USB#

>> OpenBSD/arm64 BOOTAA64 0.21
boot> boot sd1a:/bsd
(...)
bootfile: sd1a:/bsd
boot device: sd1
root on rd0a swap on rd0b dump on rd0b
erase ^?, werase ^W, kill ^U, intr ^C, status ^T

Welcome to the OpenBSD/arm64 6.7 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?

Il est temps, d’installer OpenBSD selon la procédure d’installation classique

Le processus de gestion de disque crée une partition MSDOS de 16 Mo, ne pas l’effacer.