Page précédente : préparation matérielle - PAGE 2 - Page suivante : Mise à jour de CentOS

2ème partie : Installation et configuration de CentOS sur la carte PC Engines APU2e4

Important : consulter d'abord la page précédente : préparation matérielle


Préambule

Même si j'ai suivi rigoureusement les préconisations et cheminements décrits par Kikinovak dans ses livres et son blog technique, l'ensemble des informations contenues dans cette rubrique décrit ma propre expérience avec mes propres copies d'écran.

Tous les compléments d'information et les explications détaillées utiles à la compréhension du processus (et surtout au débogage en cas de problème !) se trouvent dans les ouvrages cités en page 1.


Confection de la clé USB bootable d'installation de CentOS V7


Téléchargement de l'image ISO :

Choix de la version 7 qui correspond à la documentation de Kiki Novac (livres et blog) :


Vérification de l'image ISO

Comparaison du checksum sha256 entre celui sur le site et celui calculé par Dolphin.

Sur le site =>

659691c28a0e672558b003d223f83938f254b39875ee7559d1a4a14c79173193  CentOS-7-x86_64-Minimal-2003.iso

Calculé (Dolphin=>propriétés du fichier) :

659691c28a0e672558b003d223f83938f254b39875ee7559d1a4a14c79173193

======> OK (attention ! le fichier que j'ai utilisé était celui-ci : CentOS-7-x86_64-Minimal-2003.iso).


Confection de la clé d'installation

Choisir une clé de plus de 1 Go (ici, j'ai utilisé une clé de 32 Go).

Détermination du "device" correspondant à la clé USB que l'on vient d'insérer :

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931,5G  0 disk
├─sda1   8:1    0     8M  0 part 
├─sda2   8:2    0  1000M  0 part /boot
├─sda3   8:3    0 923,7G  0 part /
└─sda4   8:4    0   6,9G  0 part [SWAP]
sdb      8:16   1  28,9G  0 disk <======= c'est notre clé USB
├─sdb1   8:17   1     1G  0 part 
└─sdb2   8:18   1   8,5M  0 part 
sr0     11:0    1  1024M  0 rom

=> c'est donc "sdb"

Écriture directe de l’image ISO hybride sur la clé USB :

$ sudo dd if=CentOS-7-x86_64-Minimal-2003.iso of=/dev/sdb bs=1M

Inutile d'effacer ou de formater préalablement la clé : la commande "dd" écrase absolument tout sur son passage (ne pas se tromper de paramètres !).


Début de l'installation via le port série et l'émulateur de terminal MINICOM


Installation de l'émulateur de terminal MINICOM

(sur la station de travail OpenSuse Leap)

MINICOM est un programme de contrôle de modem et d’émulation de terminal pour systèmes UNIX/LINUX.

Il permet de communiquer avec la carte PC Engines via le port série. En effet, ni l'USB, ni le réseau ne sont utilisables avant installation d'un OS.

Test pour savoir si MINICOM est installé :

$ rpm -q minicom
le paquet minicom n'est pas installé

Installation de MINICOM avec YAST

minicom - A Terminal Program - Version : 2.7.1-lp152.3.6.

Conformément à la recommandation de Kiki Novak, je n'ai pas installé le paquet de traductions "minicom-lang" pour garder les affichages natifs (plus lisibles) en anglais :

# État             Paquet      | Résumé                          | Installé (Disponible)| 5
[Installer]        minicom     | A Terminal Program              | (2.7.1-lp152.3.6)    | 279,8 KiB
[Ne pas installer] minicom-lang| Translations for package minicom| (2.7.1-lp152.3.6)    | 482,0 KiB

Le paquet MINICOM est maintenant installé :

$ rpm -q minicom
minicom-2.7.1-lp152.3.6.x86_64

Identification du "device" correspondant au convertisseur série<=>USB

Après branchement du convertisseur au PC :

$ dmesg | grep tty
[    0.218280] printk: console [tty0] enabled
[33500.382278] usb 3-3.4: ch341-uart converter now attached to ttyUSB0 <===

Le convertisseur apparaît donc comme "ttyUSB0" => à noter.


Configuration de l'émulateur de terminal MINICOM

Lancer MINICOM en mode configuration :

$ sudo minicom -s

            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |  <=sélectionner
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

La configuration par défaut "usine" est à modifier :

    +-----------------------------------------
    | A -    Serial Device      : /dev/ttyUSB0 <=valeur à entrer
    | C -   Callin Program      :
    | D -  Callout Program      :
    | E -    Bps/Par/Bits       : 115200 8N1   <=valeurs à entrer
    | F - Hardware Flow Control : No
    | G - Software Flow Control : No
    |
    |    Change which setting?
    +-----------------------------------------

Valider par "entrée" puis enregistrer et sortir du mode configuration :

            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        | <=enregistrer la configuration modifiée,
            | Save setup as..          |
            | Exit                     | <=puis sortir du mode configuration en
            | Exit from Minicom        |   restant dans MINICOM
            +--------------------------+

On est alors dans la CONSOLE DE MINICOM (à l'intérieur de la "Console bash") :


Lancement de l'installation de CentOS via MINICOM/port série

MINICOM (préalablement configuré comme ci dessus) est lancé dans une "Console" :

$ minicom

Welcome to minicom 2.7.1
OPTIONS: I18n
Port /dev/ttyUSB0, 19:00:40

Press CTRL-A Z for help on special keys

Tout doit être connecté sur la PC Engines :

À la mise sous tension de la PC Engines, on voit, dans la console MINICOM, le message d'accueil du BIOS de la PC Engines :

PCEngines apu2
coreboot build 20170228
4080 MB ECC DRAM

SeaBIOS (version rel-1.10.0.1)

Press F10 key now for boot menu

S'il n'y a pas encore d'OS installé sur le disque de la PC Engines, inutile d'appuyer sur "F10" car la clé USB bootable est détectée et lancée. En effet, c'est le seul "device" bootable détecté par le BIOS de la PC Engines.

Sinon, après appui sur "F10", le menu de boot de la PC Engines s'affiche :

Select boot device:                     

1. USB MSC Drive Corsair Voyager SliderX1 000A               <== clé USB d'install
2. ata1-0: ST1000LM048-2E7172 ATA-10 Hard-Disk (931 GiBytes) <== disque dur (non vide ici)
3. Payload [memtest]                                         <== outil classique de test RAM
4. Payload [setup]                                           <== menu de setup du BIOS

Sélectionner "1", ce qui provoque aussitôt (sans confirmation) le boot sur la clé USB d'installation et donc le démarrage de l'installation.

Le menu de l'installateur CentOS, en mode texte, s'affiche alors :

        +--------------------------------------------------------------+
        |                           CentOS 7                           |
        |--------------------------------------------------------------|
        |                                                              |
        |                                                              |
        | Install CentOS 7                                             |
        | Test this media & install CentOS 7                           |
        |                                                              |
        | Troubleshooting                                            > |
        |                                                              |
        |                                                              |
        |                                                              |
        |   Press Tab for full configuration options on menu items.    |
        |                                                              |

Sur la ligne qui s'affiche, il faut alors modifier les paramètres de démarrage du script d'installation de CentOS en pressant "TAB" avant 60 secondes. Ceci afin de spécifier le lancement du serveur VNC (Virtual Network Computing) qui permettra de se connecter via le réseau pour gérer toute l'installation. C'est une partier délicate du processus d'installation !

Il faut :

Supprimer (avec "BACKSPACE") les options :

Ajouter les options :

Remarques :

La ligne de commande d'installation modifiée ressemble alors à ça (sur une seule ligne) :

vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.vnc inst.vncpassword=centos edd=off

Explication des options modifiées (elles sont détaillées dans la documentation RedHat) :

Faire "ENTER", le message de démarrage de l'installateur s'affiche alors sur MINICOM et le noyau Linux est chargé en RAM :

Loading vmlinuz.........
Loading initrd.img.......................................................ready.

... et on perd la main sur la liaison MINICOM via le port série...

Quitter alors MINICOM :

CtrlA  X  Yes
$

Attendre en surveillant l'activité de la clé d'installation. Quand il n'y a plus d'activité, continuer l'installation par le réseau en se connectant sur le serveur VNC que l'on vient de lancer (voir ci-dessous) via le réseau local ethernet.


Suite de l'installation de CentOS via VNC/réseau local ethernet


Détermination de l'adresse IP attribuée à la PC Engines par le serveur DHCP du réseau local et test de l'accès au serveur VNC :

Pour cela, on va tenter d'identifier le nouvel élément raccordé au réseau par un scan du réseau :

$ sudo nmap -sP 192.168.2.* | grep scan
Nmap scan report for livebox.home (192.168.2.100)
Nmap scan report for android-3.home (192.168.2.5)
Nmap scan report for android-15f6d03074bdbd66.home (192.168.2.3)
Nmap scan report for pc-29-centrale.home (192.168.2.8)
Nmap scan report for android-1.home (192.168.2.10)
Nmap scan report for android.home (192.168.2.12)
Nmap scan report for blitzortung.home (192.168.2.25)
Nmap scan report for pc-679.home (192.168.2.36)  <======= ça pourrait être ça ???
Nmap scan report for brn40055cd3c3d3-imprimante-brother.home (192.168.2.102)
Nmap scan report for linux-1.home (192.168.2.35)
Nmap done: 256 IP addresses (10 hosts up) scanned in 20.01 seconds

On procède par élimination des éléments que l'on reconnaît sur notre réseau local. On peut aussi faire un scan juste avant et juste après le lancement de l'installation et comparer les listes.

On va vérifier à quoi correspond cette adresse (192.168.2.36) :

$ sudo nmap -sP 192.168.2.36
Starting Nmap 7.70 ( https://nmap.org ) at 2020-11-01 20:19 CET
Nmap scan report for pc-679.home (192.168.2.36)
Host is up (0.0023s latency).
MAC Address: 00:0D:B9:57:7F:90 (PC Engines GmbH)    <=========== c'est bien ça !!!
Nmap done: 1 IP address (1 host up) scanned in 0.31 seconds

On fait le test des ports accessibles sur la PC Engines pour voir si le serveur VNC (lancé, en principe, au départ de l'installation par la ligne de commande que l'on a modifiée via MINICOM) est accessible :

$ sudo nmap  192.168.2.36
Starting Nmap 7.70 ( https://nmap.org ) at 2020-11-01 20:30 CET
Nmap scan report for pc-679.home (192.168.2.36)
Host is up (0.0012s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
5901/tcp open  vnc-1   <=========== VNC est bien accessible !!!
6001/tcp open  X11:1
MAC Address: 00:0D:B9:57:7F:90 (PC Engines GmbH)
Nmap done: 1 IP address (1 host up) scanned in 3.47 seconds

C'est donc OK : le service VNC est accessible à travers le port tcp N°5901 (port classique pour VNC) ouvert sur la machine (192.168.2.36 : à noter) qui est la PC Engines/CentOS.


Lancement du client VNC "KRDC"

(sur la station de travail OpenSuse Leap)

Le client VNC permettra de se connecter au serveur VNC que l'on a lancé sur la PC Engines. Ceci permettra, via le réseau local Ethernet, d'accéder à l'installateur graphique sur la PC Engines.

J'ai utilisé KRDC qui est disponible sur ma station OpenSuse Leap :

$ rpm -q krdc
krdc-20.04.2-lp152.1.1.x86_64
le paquet KRDC est installé

Lancement de krdc dans une Console :

$ krdc

Configuration du client VNC "KRDC"

Dans KRDC, se connecter à la PC Engines avec l'adresse : 192.168.2.36:1.

Opter pour une qualité élevée (réseau local rapide).

Entrer le mot de passe défini au départ de l'install via MINICOM : "centos"

La suite de l'installation de CentOS sur la PC Engines se déroule classiquement en mode graphique au travers de la liaison VNC, via le client KRDC.

NB : l'installateur de CentOS en ligne de commande est défectueux et ne doit plus être utilisé...


Installation et configuration de CentOS à partir du panneau général

Si le disque contient quelque chose : choisir : "détruire et de récupérer l'espace"


Suite de la configuration :

Définir :

L'installation et la configuration démarrent dès qu'on a défini l'utilisateur...

La progression peut être suivie en bas de l'écran :

Installation XXXXXXX (xxx/300)

puis :

Configuration du système

puis :

Génération de l'Initramfs

et enfin :

Terminé !

Compter quelques dizaines de minutes...

Lorsque c'est "Terminé", retirer la clé USB et passer à la Configuration post-installation : voir ci-dessous.


Configuration post-installation


Connexion à la PC Engines via le réseau en SSH

L'accès via le port série et MINICOM n'est pas possible, dans la config initiale, immédiatement après l'installation.

On va donc, dans un premier temps, se connecter via le réseau en SSH (c'est notre seul accès) afin de configurer le lancement automatique, à chaque boot, du serveur VNC en modifiant le chargeur de démarrage GRUB. En effet, cet accès direct "physique" à notre machine, via le port série et MINICOM, sera alors toujours disponible, même si on rencontre des problèmes réseau.

Redémarrer avec la clé USB retirée (couper et remettre l'alim 12V).

Déterminer si l'adresse affectée lors de l'install a changé ou non :

$ sudo nmap -sP 192.168.2.* | grep scan
[sudo] Mot de passe de root : XXXXXXXX
Nmap scan report for livebox.home (192.168.2.1)
Nmap scan report for android-3.home (192.168.2.2)
Nmap scan report for chromecast.home (192.168.2.6)
Nmap scan report for pc-29-centrale-maison-protegee-orange.home (192.168.2.8)
Nmap scan report for android-1.home (192.168.2.10)
Nmap scan report for android.home (192.168.2.12)
Nmap scan report for blitzortung.home (192.168.2.25)
Nmap scan report for pcengines1.home (192.168.2.36) <=========== l'adresse est inchangée
Nmap scan report for toumette.home (192.168.2.101)
Nmap scan report for brn30055cc3c3c3-imprimante-brother.home (192.168.2.102)
Nmap scan report for linux-1.home (192.168.2.35)
Nmap done: 256 IP addresses (11 hosts up) scanned in 15.76 seconds

Connexion à la PC Engines en SSH :

$ sudo ssh root@192.168.2.36
[sudo] Mot de passe de root : XXXXXX
root@192.168.2.36's password: YYYYYY

Entrer le mot de passe root du PC local XXXXXX (car sudo sur la machine locale), puis le mot de passe d'accès root de la PC Engines YYYYYY (car on se connecte avec l'utilisateur "root" sur la PC Engines).

On a alors l'invite bash de l'utilisateur "root" sur la PC Engines via SSH :

Last login: Fri Nov 13 20:19:20 2020 from linux-1.home
[root@pcengines1 ~]#

Configuration post installation proprement dite

Le fichier de configuration utilisé par GRUB au boot est "/boot/grub2/grub.cfg". C'est un fichier texte, cependant il ne doit PAS être édité manuellement.

Ce fichier est (re)généré par la commande "grub2-mkconfig" qui utilise :

C'est donc le fichier "/etc/default/grub" que l'on va éditer et modifier.

En faire d'abord une copie de sauvegarde :

# cd /etc/default
# ls
grub  nss  useradd

# cp grub grub.orig
# ls
grub  grub.orig  nss  useradd

Contenu du fichier "/etc/default/grub" original :

less /etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos_pcengines1/root rd.lvm.lv=centos_pcengines1/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

Détail des modifications à apporter :

Contenu du fichier "/etc/default/grub" modifié :

less /etc/default/grub

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"

NB : Le "\" permet d'améliorer la lisibilité en écrivant la commande sur plusieurs lignes. Il ne doit être suivi d'aucun espace.

Prendre en compte les modifications avec la commande "grub2-mkconfig" :

[root@pcengines1 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1127.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1127.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-8e21130c5a7942aabb22a90edfbe42da
Found initrd image: /boot/initramfs-0-rescue-8e21130c5a7942aabb22a90edfbe42da.img
done
[root@pcengines1 ~]#

Arrêter proprement la PC Engines :

[root@pcengines1 ~]# halt -p
Connection to 192.168.2.36 closed by remote host.
Connection to 192.168.2.36 closed.
$ 

Couper l'alimentation de la PC Engines et s'assurer que la liaison série est en place entre le PC et la PC Engines :

$ dmesg | grep tty
[    0.218410] printk: console [tty0] enabled
[293544.135135] usb 3-3.4: ch341-uart converter now attached to ttyUSB0

Relancer MINICOM :

$ sudo minicom

Welcome to minicom 2.7.1

OPTIONS: I18n 
Port /dev/ttyUSB0, 21:19:42

Press CTRL-A Z for help on special keys

En bas de l'écran MINICOM, on voit que la configuration précédemment enregistrée a été conservée :

[CTRL-A Z for help | 115200 8N1 | NOR | Minicom 2.7.1 | VT102 | Online 0:4 | SB0]

Redémarrer la PC Engines (rebrancher le 12V) et suivre les messages de démarrage sur la console MINICOM :

PCEngines apu2
coreboot build 20170228
4080 MB ECC DRAM

SeaBIOS (version rel-1.10.0.1)

Press F10 key now for boot menu
...

Jusqu'à, finalement, l'invite de login de CentOS Linux V7 sur la PC Engines :

...
[  OK  ] Started Dump dmesg to /var/log/dmesg.
[  OK  ] Started Permit User Sessions.
         Starting Terminate Plymouth Boot Screen...
         Starting Wait for Plymouth Boot Screen to Quit...
[  OK  ] Started Command Scheduler.
[  OK  ] Started Login Service.

CentOS Linux 7 (Core)
Kernel 3.10.0-1127.el7.x86_64 on an x86_64

pcengines1 login: 

Si tout est OK, se connecter en "root" puis arrêter proprement la PC Engines :

[root@pcengines1 ~]# halt -p
[  OK  ] Started Show Plymouth Power Off Screen.
[  145.805967] ata2: exception Emask 0x40 SAct 0x0 SErr 0xc0800 action 0x7
[  145.812998] ata2: SError: { HostInt CommWake 10B8B }
[  OK  ] Stopped Dynamic System Tuning Daemon.
[  OK  ] Stopped target Network.
         Stopping Network Manager...
...
[  OK  ] Stopped Replay Read-Ahead Data.
         Stopping Monitoring of LVM2 mirrors... dmeventd or progress polling...
[  OK  ] Stopped Monitoring of LVM2 mirrors,...ng dmeventd or progress polling.
         Stopping LVM2 metadata daemon...
[  OK  ] Stopped LVM2 metadata daemon.
[  OK  ] Reached target Shutdown.
dracut Warning: Killing all remaining processes
Powering off.
[  151.754892] Power down.

Couper l'alimentation de la PC Engines et quitter MINICOM :

CtrlA  X  Yes
$

Bilan

À ce point on dispose d'un serveur PC Engines avec Linux Centos V7 installé et opérationnel.

La communication est possible via le port série de la PC Engines avec la configuration suivante :

L'accès est aussi possible via la prise N°1 de l'interface réseau car le service VNC est lancé sur le port tcp N°5901.


Futur

Il reste à :


Page précédente : préparation matérielle - PAGE 2 - Page suivante : Mise à jour de CentOS