PC Engines APU 2Cet 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

Au cours des dix dernières années, il m’est arrivé d’installer des solutions de monitoring 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.

PC Engines APU 2

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.

  1. Coller la pâte thermique sur le processeur.
  2. Coller la plaque de refroidissement sur le boîtier.
  3. Enlever les caches des ports Ethernet de la façade.
  4. Poser la carte mère délicatement à l’emplacement prévu.
  5. Visser la carte mère dans le boîtier (4 vis).
  6. Visser les deux barres de fixation sur le disque SATA 2,5″ (4 vis).
  7. Visser le disque dur dans le boîtier (4 vis).
  8. Relier le disque dur au port SATA et à l’alimentation.

Voilà à quoi ça ressemble une fois que c’est monté.

PC Engines APU 2

Configurer le port série

Port SériePour 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.0 – 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-lp150.1.8.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

Logo CentOSJe 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.

  1. S’assurer que le port série est bien relié au convertisseur USB/série du PC.
  2. Brancher un câble Ethernet relié au switch local à la prise juste à côté du port série.
  3. Insérer la clé USB d’installation de CentOS.
  4. 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...----------------+
  1. Appuyer sur [Tab] pour accéder aux paramètres de démarrage.
  2. Supprimer les deux dernières options rd.live.check quiet en appuyant sur la touche [Backspace].
  3. 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 nestor.microlinux.lan (192.168.2.1)
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.

KDE Remote Desktop Client

É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.

KDE Remote Desktop Client

Ici, il faut saisir le mot de passe que nous avons défini un peu plus haut, c’est-à-dire centos. Notez au passage que je me suis tapé la tête sur le clavier pendant un bon moment avant de me rendre compte que 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 dans la documentation Red Hat.

KDE Remote Desktop Client

Si tout s’est bien passé, nous nous retrouvons dans l’installateur graphique de CentOS.

KDE Remote Desktop Client

À 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 nestor.microlinux.lan (192.168.2.1)
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.

Minicom

 


1 commentaire

Installer CentOS 7 sur une carte PC Engines - My Tiny Tools · 3 avril 2019 à 14 h 33 min

[…] (Source: Journal du hacker) […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.