Cet article décrit l’installation de CentOS 7 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
- Choix du matériel
- Montage
- Configurer le port série
- Lancer l’installation de CentOS
- Configuration post-installation
Introduction
Au cours des dix dernières années, il m’est arrivé d’installer des solutions de monitoring réseau et de filtrage web basées sur une passerelle tournant sous Linux, avec un proxy Squid transparent. Côté hardware, j’ai longtemps choisi du matériel standard comme les serveurs HP Proliant ou Dell PowerEdge. Or, on se retrouve parfois confronté à une simple contrainte d’encombrement, étant donné que dans certains réseaux – écoles, TPE, PME – il faut essayer de caser le tout dans un rack déjà passablement rempli de matériel.
Choix du matériel
Après avoir cherché un peu, je suis tombé sur les cartes mère de la marque PC Engines, commercialisées en France par la société Clemanis. J’ai donc commandé une carte APU 2 munie d’un processeur AMD GX quatre coeurs, de 4 Go de RAM, de trois ports Ethernet Gigabit, de deux ports USB, d’un port SATA et d’un port série. Pour avoir quelque chose de fonctionnel, j’ai également commandé un disque dur 2,5″, un boîtier, une alimentation, un câble série et un adaptateur USB/série.
Montage
Le matériel est livré sans la moindre notice, ce qui m’a un peu surpris. Du coup j’ai cherché des infos sur le web, et je me suis inspiré de cette vidéo pour le montage.
De mémoire, voici ce que j’ai fait, dans l’ordre.
- Coller la pâte thermique sur le processeur.
- Coller la plaque de refroidissement sur le boîtier.
- Enlever les caches des ports Ethernet de la façade.
- Poser la carte mère délicatement à l’emplacement prévu.
- Visser la carte mère dans le boîtier (4 vis).
- Visser les deux barres de fixation sur le disque SATA 2,5″ (4 vis).
- Visser le disque dur dans le boîtier (4 vis).
- Relier le disque dur au port SATA et à l’alimentation.
Voilà à quoi ça ressemble une fois que c’est monté.
Configurer le port série
Pour l’instant, le port série est le seul moyen de communiquer avec la machine. Dans un premier temps, je branche mon convertisseur USB/série à mon portable – un MacBook Pro tournant sous OpenSUSE Leap 15.1 – et je le relie au port série du routeur. Mon convertisseur apparaît en tant que
/dev/ttyUSB0
.
[kikinovak@macbook:~] $ dmesg | grep tty [ 0.000000] console [tty0] enabled [ 90.240282] usb 4-2: ch341-uart converter now attached to ttyUSB0
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.
[kikinovak@macbook:~] $ rpm -q minicom minicom-2.7.1-lp151.2.3.x86_64
L’affichage de Minicom est plus lisible en anglais. La première solution consiste à ne pas installer le paquet minicom-lang
qui fournit les traductions sous OpenSUSE. Ou alors on bascule provisoirement vers l’anglais comme ceci.
[root@macbook:~] # LANG=en_US.utf8 && export LANG
Je lance la configuration de Minicom et je me rends dans le menu Serial port setup
.
[root@macbook:~] # 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 | +--------------------------+
Dans la configuration par défaut, Minicom est censé communiquer avec le périphérique /dev/ttyS1
.
+-------------------------------------------------------------+ | A - Serial Device : /dev/ttyS1 | | | | C - Callin Program : | | D - Callout Program : | | E - Bps/Par/Bits : 57600 8N1 | | F - Hardware Flow Control : Yes | | G - Software Flow Control : No | | | | Change which setting? | +-------------------------------------------------------------+
Pour changer de périphérique, choisir l’option A - Serial Device
et remplacer /dev/modem
par /dev/ttyUSB0
.
+-------------------------------------------------------------+ | A - Serial Device : /dev/ttyUSB0 | | | | C - Callin Program : | | D - Callout Program : | | E - Bps/Par/Bits : 57600 8N1 | | F - Hardware Flow Control : Yes | | G - Software Flow Control : No | | | | Change which setting? | +-------------------------------------------------------------+
Ensuite, il faut impérativement augmenter le débit E - Bps/Par/Bits
de 57600
à 115200
.
+-------------------------------------------------------------+ | 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? | +-------------------------------------------------------------+
Confirmer par Entrée, puis enregistrer la configuration en optant pour Save setup as dfl
. Quitter le menu de configuration avec Exit
(et non pas Exit from Minicom
). On se retrouve alors dans la console de Minicom.
Welcome to minicom 2.7.1 OPTIONS: I18n Port /dev/ttyUSB0, 10:21:53 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 CentOS
Je ne détaille pas ici la confection d’une clé USB d’installation de CentOS 7, 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 convertisseur 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 CentOS.
- 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.
PCEngines apu2 coreboot build 20170228 4080 MB ECC DRAM SeaBIOS (version rel-1.10.0.1) Press F10 key now for boot menu
Et quelques secondes plus tard, c’est le menu de l’installateur de CentOS qui s’affiche en mode texte.
+--------------------------------------------------------------+ | CentOS Linux 7 | |--------------------------------------------------------------| | | | | | Install CentOS Linux 7 | | Test this media & install CentOS Linux 7 | | | | 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=centos edd=off
.
Si tout se passe bien, Minicom nous affiche le démarrage de l’installateur comme ceci.
Loading vmlinuz........ Loading initrd.img....................................ready.
Les deux options inst.vnc inst.vncpassword=centos
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.
[root@alphamule:~] # nmap -sP 192.168.2.* | grep scan Nmap scan report for bernadette.microlinux.lan (192.168.2.3) Nmap scan report for raymonde.microlinux.lan (192.168.2.4) Nmap scan report for amandine.microlinux.lan (192.168.2.5) Nmap scan report for macbook.microlinux.lan (192.168.2.6) Nmap scan report for balthazar.microlinux.lan (192.168.2.7) Nmap scan report for 192.168.2.146 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 (11 hosts up) scanned in 3.64 seconds
Je procède par élimination, et je me dis que l’adresse 192.168.2.146
, c’est la seule que je ne connais pas dans le réseau. Il y a donc de fortes chances à ce que ce soit mon routeur. Voyons ça de plus près.
[root@alphamule:~] # nmap -sP 192.168.2.146 Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-03 09:12 CEST Nmap scan report for 192.168.2.146 Host is up (0.00026s latency). MAC Address: 00:0D:B9:4B:5B:5C (PC Engines GmbH) Nmap done: 1 IP address (1 host up) scanned in 0.30 seconds
Effectivement, il s’agit bien de mon routeur. Voyons si le serveur VNC est accessible.
[root@alphamule:~] # nmap 192.168.2.146 Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-03 09:13 CEST Nmap scan report for 192.168.2.146 Host is up (0.00078s latency). Not shown: 998 closed ports PORT STATE SERVICE 5901/tcp open vnc-1 6001/tcp open X11:1 MAC Address: 00:0D:B9:4B:5B:5C (PC Engines GmbH) Nmap done: 1 IP address (1 host up) scanned in 1.63 seconds
À 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 ou Vinagre ou n’importe quel autre client VNC, peu importe.
Je me connecte au serveur VNC à l’adresse 192.168.2.146: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 centos
.
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 CentOS.
À 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.
[root@alphamule:~] # nmap -sP 192.168.2.* | grep scan Nmap scan report for bernadette.microlinux.lan (192.168.2.3) Nmap scan report for raymonde.microlinux.lan (192.168.2.4) Nmap scan report for amandine.microlinux.lan (192.168.2.5) Nmap scan report for macbook.microlinux.lan (192.168.2.6) Nmap scan report for balthazar.microlinux.lan (192.168.2.7) Nmap scan report for 192.168.2.146 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 (11 hosts up) scanned in 3.54 seconds
L’adresse IP attribuée est toujours la même, et je peux me connecter en SSH.
[root@alphamule:~] # ssh root@192.168.2.146
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=5 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 \ quiet \ 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 cela ressemble dans la console de mon MacBook Pro.
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.
5 commentaires
pierre · 7 juin 2020 à 23 h 00 min
L’installeur texte de Centos ne s’affiche pas.
kikinovak · 7 juin 2020 à 23 h 24 min
L’installateur texte de CentOS est tronqué de ses fonctionnalités les plus élémentaires depuis la version 6.0, et il ne faut plus l’utiliser.
Henri · 4 novembre 2020 à 15 h 38 min
Bonjour Kikinovak,
Etant un linuxien novice, j’ai suivi pas à pas vos conseils pour l’installation de CentOS 7 sur ma PCengines APU2/4Go/1To, fraîchement déballée et assemblée, et ça marche !!!!
Merci beaucoup !
J’ai trouvé la plupart des réponses à mes interrogations de béotien dans vos 2 tomes sur l’administration Linux 🙂
Il me reste 2 petites questions/remarques :
1) Lors de la modification de la ligne de commande de démarrage de l’installateur (pour lancer VNC), cette ligne se replie sur elle-même (RC mais pas LF !), rendant sa lecture difficile, pour peu que l’on ait choisi une largeur de fenêtre de console Minicom insuffisante… Je pense que la commande modifiée doit finalement ressembler à ça (sur 1 seule ligne) :
> vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.vnc inst.vncpassword=centos edd=off
Après quelques tâtonnements, je m’en suis sorti !
2) Lors de la config post-installation et de la modification du chargeur de démarrage GRUB, vous indiquez : « À partir du prochain redémarrage, on pourra se connecter au routeur UNIQUEMENT via le port série avec Minicom. »
Est-ce à dire que l’accès SSH via le réseau sera compromis ? Je ne le pense pas, mais je préfère en avoir confirmation avant de continuer.
Encore merci et bonjour de Bretagne.
Henri
kikinovak · 4 novembre 2020 à 15 h 46 min
Faire ce genre d’installation c’est chaud pour un novice.
Effectivement, l’édition des paramètres de démarrage à vif c’est quelque chose qui se fait toujours un peu à tâtons, à plus forte raison que c’est un clavier QWERTY.
Et bien vu pour « uniquement », je pense qu’il est de trop. Ça fait un petit moment que j’ai écrit cet article, et il faudrait que je refasse une install pour me souvenir de tous les détails.
Le blog technique de Microlinux – C'est bien fait pour vous > Seekalgo · 20 décembre 2020 à 13 h 51 min
[…] Installer CentOS 7 sur une carte PC Engines […]
Les commentaires sont fermés.