Cet article décrit l’installation de Rocky Linux 8 sur un routerboard PC Engines, en remplacement du système pfSense préinstallé. La particularité de cette installation, c’est que la machine ne dispose pas de carte vidéo et qu’il faut communiquer avec elle via le port série pour l’installation du système.
Introduction
On va commencer par une mauvaise nouvelle. La marque PC Engines a annoncé l’été dernier qu’elle allait arrêter la fabrication des SBC (Single Board Computers) de type APU2, APU3, etc. Ce qui est fort dommage, étant donné que ces quinze dernières années, je me suis régulièrement servi des cartes APU2 pour installer des solutions de monitoring réseau et de passerelles tournant sous Linux, avec un proxy Squid transparent, un serveur Dnsmasq, etc.
Ces petites machines sont dotées d’un processeur AMD GX quatre cœurs, de 4 Go de RAM, de trois ports Ethernet Gigabit, de deux ports USB, d’un port SATA et d’un port série. Voici à quoi ça ressemble une fois que c’est monté dans un boîtier :
J’ai encore quelques APU 2 qui tournent dans la nature, dont une dans mon bureau que je vais utiliser pour la démonstration pratique de cet article. On les trouve sur eBay ou Le Bon Coin pour une centaine d’euros. Si l’absence de carte vidéo et l’accès par le port série ne vous fait pas peur, c’est un excellent choix. En termes d’encombrement, ça prend un peu moins de place qu’une petite Freebox.
Configurer le port série
Pour l’instant, le port série constitue le seul moyen de communiquer avec la machine. Dans un premier temps, je branche mon convertisseur USB/série à mon PC et je le relie au port série du routeur. Mon convertisseur apparaît en tant que /dev/ttyUSB0
.
# dmesg | grep tty [ 0.001000] printk: console [tty0] enabled [ 224.180758] usb 1-10: FTDI USB Serial Device converter now attached to ttyUSB0
Si vous ne savez pas trop ce que c’est, rendez-vous sur n’importe quelle plateforme de vente de matériel informatique et cherchez « câble USB vers série RS232 » ou « adaptateur USB vers RS232« . La carte APU2 est dotée d’une prise RS232 mâle, il vous faut donc une prise RS232 femelle.
Pour communiquer avec le port série, j’utiliserai Minicom, un programme de contrôle de modem et d’émulation de terminal pour systèmes Unixoïdes :
# rpm -q minicom minicom-2.7.1-9.el8.x86_64
L’affichage de Minicom est plus lisible en anglais :
# echo $LANG en_US.utf8
Je lance la configuration de Minicom et je me rends dans le menu Serial port setup
.
# minicom -s +-----[configuration]------+ | Filenames and paths | | File transfer protocols | | Serial port setup | | Modem and dialing | | Screen and keyboard | | Save setup as dfl | | Save setup as.. | | Exit | | Exit from Minicom | +--------------------------+
Pour changer de périphérique, je choisis l’option A - Serial Device
et je remplace /dev/modem
par /dev/ttyUSB0
.
+-------------------------------------------------------------+ | A - Serial Device : /dev/ttyUSB0 | | | | C - Callin Program : | | D - Callout Program : | | E - Bps/Par/Bits : 115200 8N1 | | F - Hardware Flow Control : Yes | | G - Software Flow Control : No | | | | Change which setting? | +-------------------------------------------------------------+
Je confirme par Entrée, puis j’enregistre la configuration en optant pour Save setup as dfl
. Je quitte le menu de configuration avec Exit
(et non pas Exit from Minicom
). Je me retrouve alors dans la console de Minicom :
Welcome to minicom 2.7.1 OPTIONS: I18n Compiled on Apr 12 2021, 04:54:50. Port /dev/ttyUSB0, 08:38:26 Press CTRL-A Z for help on special keys
Pour naviguer dans Minicom, il suffit d’appuyer sur Ctrl+A, puis Z pour afficher le menu principal. La touche X permet alors de quitter Minicom, la commande minicom
invoquée sans arguments permet de relancer l’application.
Lancer l’installation de Rocky Linux
Je ne détaille pas ici la confection d’une clé USB d’installation de Rocky Linux 8, qui est une tâche triviale. Voici ce qu’il faut faire tout en gardant l’affichage de Minicom dans le terminal du PC :
- S’assurer que le port série est bien relié au câble USB/série du PC.
- Brancher un câble Ethernet relié au switch local à la prise juste à côté du port série.
- Insérer la clé USB d’installation de Rocky Linux.
- Brancher l’alimentation à côté des prises USB du routeur.
Si tout se passe bien, on apercevra le message suivant dans la console de Minicom :
SeaBIOS (version rel-1.16.0.1-0-g77603a32) Press F10 key now for boot menu
J’appuie sur la touche F10 pour afficher le menu de démarrage :
Select boot device: 1. USB MSC Drive USB DISK 2.0 PMAP 2. AHCI/0: KINGSTON SMS200S3120G ATA-8 Hard-Disk (111 GiBytes) 3. Payload [setup] 4. Payload [memtest]
Je sélectionne la clé USB, et quelques secondes plus tard, c’est l’installateur de Rocky Linux qui s’affiche en mode texte :
+--------------------------------------------------------------+ | Rocky Linux 8 | |--------------------------------------------------------------| | | | | | Install Rocky Linux 8 | | Test this media & install Rocky Linux 8 | | | | Troubleshooting > | | | | | | | | Press Tab for full configuration options on menu items. | | | | | +---------------Automatic boot in 56 seconds...----------------+
- Appuyer sur Tab pour accéder aux paramètres de démarrage.
- Supprimer les deux dernières options
rd.live.check quiet
en appuyant sur la touche Backspace. - Ajouter les options
inst.vnc inst.vncpassword=rocky8 edd=off
.
Si tout se passe bien, Minicom nous affiche le démarrage de l’installateur comme ceci :
Loading vmlinuz........ Loading initrd.img........
Les deux options inst.vnc inst.vncpassword=rocky8
ont lancé un serveur VNC dans le routeur, qui nous permettra de nous connecter à l’installateur graphique depuis la station de travail. Le problème, c’est que l’affichage de l’installateur a disparu depuis le message initial, et nous ne savons plus où le joindre.
Dans ce cas, il suffit de faire une simple recherche avec nmap
dans le réseau local. Je procède par élimination, et je me dis que l’adresse 192.168.2.122
, c’est la seule que je ne connais pas dans le réseau. Avec le nom d’hôte pfSense
, il a même de fortes chances à ce que ce soit mon routeur :
# nmap -sP 192.168.2.* | grep scan
Nmap scan report for proxy.microlinux.lan (192.168.2.1)
Nmap scan report for sandbox.microlinux.lan (192.168.2.3)
Nmap scan report for dell-xps.microlinux.lan (192.168.2.4)
Nmap scan report for gustave.microlinux.lan (192.168.2.5)
Nmap scan report for pfSense.microlinux.lan (192.168.2.122)
Nmap scan report for nestor.microlinux.lan (192.168.2.250)
Nmap scan report for hp-officejet.microlinux.lan (192.168.2.252)
Nmap scan report for nas.microlinux.lan (192.168.2.253)
Nmap scan report for wifi.microlinux.lan (192.168.2.254)
Nmap scan report for alphamule.microlinux.lan (192.168.2.2)
Nmap done: 256 IP addresses (10 hosts up) scanned in 2.19 seconds
Voyons ça de plus près :
# nmap 192.168.2.122 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-03 09:17 CET Nmap scan report for pfSense.microlinux.lan (192.168.2.122) Host is up (0.00034s latency). Not shown: 999 closed tcp ports (reset) PORT STATE SERVICE 5901/tcp open vnc-1 MAC Address: 00:0D:B9:42:D5:64 (PC Engines GmbH)
Effectivement, il s’agit bien de mon routeur avec un serveur VNC accessible.
À partir de là, je lance un client VNC sur ma station de travail pour me connecter à l’installateur.
Vu que je tourne sous KDE, j’utilise KRDC. Si vous êtes sous GNOME ou Xfce, vous utiliserez sans doute Remmina, Vinagre, TigerVNC ou n’importe quel autre client VNC, peu importe.
Je me connecte au serveur VNC à l’adresse 192.168.2.122:1
.
- Étant donné que la machine se situe dans le réseau local, je peux opter pour une connexion de qualité élevée.
- Ce n’est pas la peine de mémoriser le mot de passe, étant donné que nous y accédons une seule fois.
Ici, il faut saisir le mot de passe que nous avons défini un peu plus haut, c’est-à-dire rocky8
.
Le mot de passe pour le serveur VNC de l’installateur doit impérativement comprendre entre 6 et 8 caractères. J’ai fini par tomber sur cette limitation ubuesque dans la documentation Red Hat.
Si tout s’est bien passé, nous nous retrouvons dans l’installateur graphique de Rocky Linux :
À partir de là, nous pouvons installer notre routeur comme n’importe quel autre matériel, en utilisant les fonctionnalités de l’installateur graphique. Pour les détails de cette opération, vous pourrez consulter cet article.
Configuration post-installation
À l’issue du redémarrage initial, il ne faut pas oublier d’enlever la clé USB pour démarrer sur le système installé.
Dans la configuration par défaut, notre nouveau système n’offre pas d’accès via le port série. Il faut donc invoquer à nouveau nmap
comme nous l’avons fait plus haut :
# nmap -sP 192.168.2.* | grep scan
Nmap scan report for proxy.microlinux.lan (192.168.2.1)
Nmap scan report for sandbox.microlinux.lan (192.168.2.3)
Nmap scan report for dell-xps.microlinux.lan (192.168.2.4)
Nmap scan report for gustave.microlinux.lan (192.168.2.5)
Nmap scan report for pfSense.microlinux.lan (192.168.2.122)
Nmap scan report for nestor.microlinux.lan (192.168.2.250)
Nmap scan report for hp-officejet.microlinux.lan (192.168.2.252)
Nmap scan report for nas.microlinux.lan (192.168.2.253)
Nmap scan report for wifi.microlinux.lan (192.168.2.254)
Nmap scan report for alphamule.microlinux.lan (192.168.2.2)
Nmap done: 256 IP addresses (10 hosts up) scanned in 2.29 seconds
L’adresse IP attribuée est toujours la même, et je peux me connecter en SSH :
[kikinovak@alphamule:~] $ ssh root@192.168.2.122 The authenticity of host '192.168.2.122 (192.168.2.122)' can't be established. ECDSA key fingerprint is SHA256:tHxxbxt/NyAFSB44lia5LsjpvGRd9dEn0Spr1s85AE4. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Pour accéder à la console via le port série, il faut modifier le chargeur de démarrage GRUB en éditant /etc/default/grub
. Voici une série d’options qui vont bien :
GRUB_TIMEOUT=1 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=false GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1" GRUB_CMDLINE_LINUX="nomodeset edd=off console=ttyS0,115200n8" GRUB_DISABLE_RECOVERY="true"
Prendre en compte les modifications :
# grub2-mkconfig -o /boot/grub2/grub.cfg
À partir du prochain redémarrage, on pourra se connecter au routeur uniquement via le port série avec Minicom. Voilà à quoi ça ressemble :
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
1 commentaire
Killator · 4 mars 2024 à 9 h 54 min
Mon routeur est actuellement un APU2E4 sous OPNSense et ça tourne comme une horloge !
Je l’ai installé grâce au port MicroSD dispo sur la carte: premier boot avec la distrib en « LiveMicroSD » puis j’ai pris la main en SSH via le port LAN (qui active automatiquement un DHCP). Et enfin, lancement de l’installation sur le SSD mSata.
Mais effectivement, comme toi, je ne comprends pas l’arrêt des SBC par PC Engines…
Ils ont un vrai savoir faire, les cartes sont vraiment top et ils arrêtent tout d’un coup 🙁