Important : consulter d'abord la page précédente : préparation matérielle
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.
Choix de la version 7 qui correspond à la documentation de Kiki Novac (livres et blog) :
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).
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 !).
(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é
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
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.
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") :
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) :
rd.live.check : supprime l'option qui vise à vérifier l'intégrité du support d'installation (la clé USB) avant de commencer celle-ci,
quiet : désactive le mode "silencieux" pour permettre de suivre la progression,
inst.vnc : lance le serveur vnc qui permettra de se connecter, via le réseau, avec un client VNC, pour continuer l'installation,
inst.vncpassword=centos : définit "centos" comme mot de passe de connexion au serveur vnc (il doit impérativement comporter entre 6 et 8 caractères, cf. documentation RedHat),
edd=off : edd = "Enhanced Disk Drive" => désactive ces services du BIOS dont on n'a pas besoin et qui peuvent provoquer des blocages.
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.
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.
(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
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é...
Si le disque contient quelque chose : choisir : "détruire et de récupérer l'espace"
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.
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 ~]#
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 :
GRUB_DISABLE_SUBMENU=false => on ne désactive pas le menu permettant de choisir le noyau à lancer (quand plusieurs noyaux sont disponibles),
GRUB_TERMINAL_OUTPUT="serial console" => sélectionne le périphérique de sortie du terminal (choix possibles : console, serial, gfxterm, ofconsole, ou vga_text). On ajoute l'item "serial" pour définir le port série comme organe de sortie (il y en a alors 2 : serial et console),
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1" => définit la configuration du port série N° 0 (115200Bauds, 8bits, sans parité, 1bit de stop), conformément aux valeurs préconisées par PC Engines pour cette carte,
GRUB_CMDLINE_LINUX="nomodeset quiet edd=off console=ttyS0,115200n8" => ajoute ces paramètres à la ligne de commande au boot :
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
$
À 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.
Il reste à :