Après la migration du système Debian Wheezy vers Jessie sur mon SheevaPlug, j'ai eu la mauvaise surprise de me rendre compte que le système ne démarrait plus.

J'explique ici l'origine du problème qui l'empêchait de démarrer, ainsi que la solution que j'ai appliquée pour le corriger.

L'erreur

Après quelques dizaines de secondes d'attente, la connexion au serveur SSH n'étant toujours pas possible, je me suis connecté sur le SheevaPlug via sa console série.

J'ai alors vu l'erreur suivante s'afficher lors du reboot :

Uncompressing Linux... done, booting the kernel.

Error: unrecognized/unsupported machine ID (r1 = 0x00000a76).

Available machine support:

ID (hex)        NAME
0000089b        LaCie d2 Network v2
0000089e        LaCie 5Big Network v2
0000089c        LaCie 2Big Network v2
00000b44        Marvell OpenRD Ultimate Board
00000939        Marvell OpenRD Client Board
00000915        Marvell OpenRD Base Board
00000691        Marvell RD-88F6192-NAS Development Board
00000692        Marvell RD-88F6281 Reference Board
00000b1e        HP t5325 Thin Client
0000085b        QNAP TS-119/TS-219
000009c6        QNAP TS-41x
ffffffff        Marvell Kirkwood (Flattened Device Tree)

Please check your kernel config and/or bootloader.

Cette erreur apparaît après le chargement du noyau Linux, et indique qu'il ne reconnaît pas le matériel sur lequel on lui demande de démarrer.

La cause

Le Device Tree (DT) permet au noyau Linux de connaitre les caractéristiques du matériel, sans devoir les intégrer en dur dans le code. Le noyau 3.16 installé par Debian Jessie bénéficie de cette fonctionnalité, et n'inclue donc plus les informations sur le SheevaPlug.

La solution

Pour pouvoir démarrer avec ce noyau, il faut donc fournir les informations sur le matériel au noyau Linux lors de son chargement. Cela peut se faire de différentes manières, selon la version du boot loader et du noyau utilisées.

Ces informations sont disponibles dans un fichier nommé Device Tree Blob (DTB). Les fichiers dtb de certains matériels, dont mon SheevaPlug, sont disponible ici.

Avec les versions installées sur mon SheevaPlug (u-boot DENX 2014.10 et noyau Linux 3.16), je dois intégrer le Device Tree Blob (DTB) dans le noyau Linux. Cela peut être fait avec une simple commande :

$ cat /boot/vmlinuz-3.16.0-4-kirkwood kirkwood-sheevaplug-esata.dtb > /boot/vmlinuz-3.16.0-4-kirkwood-dtb

Il ne reste plus qu'à construire des images pour u-boot avec l'utilitaire mkimage :

$ sudo mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n "Kernel Image" -d /boot/vmlinuz-3.16.0-4-kirkwood-dtb /boot/uImage
$ sudo mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 -e 0x0 -n "Initrd Image" -d /boot/initrd.img-3.16.0-4-kirkwood /boot/uInitrd

Note : Des versions plus récentes du boot loader permettent de charger le fichier dtb de manière dynamique. Il n'est donc plus nécessaire de l'intégrer dans l'image du noyau, il peut rester comme un simple fichier à coté, et être chargé par u-boot. Cette possibilité nécessite peut être un noyau Linux en version 3.17 ou supérieure.


Masquer les messages de démarrage

dim. 15 sept. 2013 by Marmotte

Plymouth est une application lancée très tôt dans le processus de démarrage, qui permet d'afficher un écran graphique, ou semi-graphique, à la place des habituels messages de démarage du système.

Installation

Sous Debian, il suffit d'installer le paquet plymouth.

$ sudo apt-get install --no-install-recommends plymouth

Note : Certains thèmes sont disponibles dans …

read more

Environnement graphique léger

dim. 15 sept. 2013 by Marmotte

Un environnement graphique est quasi-indispensable, notemment pour visiter un bon nombre de sites web. Il en existe beaucoup sous Linux, ce qui permet de choisir selon des critères très variés.

J'aime bien les environnements légers, autant au niveau consommation de ressources qu'affichage à l'écran. Précédemment, j'utilisais Xfce, accompagné de Compiz …

read more

Versionner les configurations utilisateur

dim. 01 sept. 2013 by Marmotte

J'utilise régulièrement plusieurs ordinateurs. Avec le temps, je configure donc ces machines selon mes habitudes, afin de rendre leur utilisation plus simple et efficace pour moi.

Comme pour les notes d'installation, j'ai donc dupliqué les fichiers de configuration d'un ordinateur à l'autre, faisant des corrections sur chacun, sans forcément toujours …

read more

Introduction

mer. 28 août 2013 by Marmotte

Passionné d'informatique, adepte du libre, je passe beaucoup de temps à bidouiller sur mes différentes machines. Au fur et à mesure de mes expérimentations, j'ai tout naturellement accumulé un bon nombre de notes d'installation, et je continue d'en créer à chaque nouveau test. Il n'y a parfois qu'une procédure d'installation …

read more