2022-05-07
Avant de mettre à jour ma machine principale vers Ubuntu 22.04 LTS (Jammy Jellyfish), je tenais à vérifier ma capacité à régler certains points qui sont bloquants pour moi (Firefox snap, compatibilité des extensions GNOME Shell,...), et je voulais également en profiter pour mettre à l'épreuve le système de fichier btrfs. Un beau programme en perspective !
J'ai donc ressorti mon fidèle ThinkPad T520 qui fonctionne toujours à la perfection malgré ses 10 ans, et j'ai entrepris d'y installer la dernière version d'Ubuntu pour faire mes tests... Mais vous vous en doutez, ça n'a pas aussi bien fonctionné que prévu. 🙃️
J'ai d'abord rencontré des difficultés à booter sur le média d'installation, problème rapidement contourné, puis j'ai été en mesure d'installer Ubuntu sans difficulté particulière... Jusqu'au moment de redémarrer la machine.
Bref, je vous raconte tout ça dans ce court article, avec bien entendu les solutions à chacun des problèmes rencontrés. 😉️
--------------------------------------------------------------------------------
📝️ Note:
--------------------------------------------------------------------------------
Note : Ici je parle de mon expérience avec mon ThinkPad T520 et Ubuntu 22.04 mais ce qui suit est très probablement valable pour d'autres machines et certainement d'autres distributions Linux.
--------------------------------------------------------------------------------
Pour réinstaller Ubuntu, il faut commencer par booter sur la clef USB d'installation. Je presse donc F12 pour accéder au menu de boot, puis je sélectionne la clef, je valide, et... rien. Retours au menu sans aucune explication...
Capture d'écran du menu de boot du Thinkpad
Dans le doute je vérifie le bon fonctionnement de la clef Ubuntu sur un autre PC... Elle démarre sans souci. J'essaye une clef Debian sur le T520, ça fonctionne également... Étrange. 🤔️
Je redémarre la machine et je presse F1 pour aller faire un petit tour dans les paramètres du BIOS. En y regardant de plus près, je trouve l'option qui pourrait être la cause du problème. Dans l'onglet « Startup » le mode de démarrage est configuré sur « Legacy Only » :
Capture d'écran du menu « Startup » du BIOS
Je change l'option donc l'option « UEFI/Legacy Boot » en « Both » pour avoir la possibilité d'utiliser à la fois le mode de démarrage BIOS (legacy) et le mode UEFI :
Capture d'écran du menu « Startup » du BIOS avec la séletion de la méthode de démarrage
Il ne reste plus qu'à sauvegarder en appuyant sur F10 et à redémarrer. Cette fois-ci, ça fonctionne, je me retrouve face au menu permettant de lancer la clef :
Capture d'écran du menu de démarrage de la clef d'installation d'Ubuntu
Le PC contient un disque dur de 500 Go et un petit SSD de 60 Go. Pour mes tests je vais tout installer sur le disque dur et je crée le partitionnement suivant :
+-----------+---------------------------+--------+--------------+------------------------+ | Partition | Partition (notation GRUB) | Taille | Type | Point de montage | +===========+===========================+========+==============+========================+ | /dev/sda1 | (hd0,msdos1) | 2 Go | ext4 | /boot | +-----------+---------------------------+--------+--------------+------------------------+ | /dev/sda2 | (hd0,msdos2) | 2 Go | EFI | /boot/efi | +-----------+---------------------------+--------+--------------+------------------------+ | /dev/sda3 | (hd0,msdos3) | 496 Go | LUKS + btrfs | @ → / et @home → /home | +-----------+---------------------------+--------+--------------+------------------------+
On notera juste que j'ai créé un volume chiffré (LUKS) dans lequel j'ai placé ma partition btrfs et que j'ai créé une seule et unique partition pour le système et les données. Il est en effet inutile de créer 2 partitions séparées puisque btrfs permet de créer des sous-volumes dans la même partition, et que par défaut Ubuntu va créer un volume pour le système ("@" monté sur "/") et un pour les données ("@home" monté dans "/home").
Je ne m'attarde pas plus sur l'installation puisque celle-ci se déroule sans aucun problème. On passe donc à la dernière étape : le redémarrage sur le système fraîchement installé.
Je redémarre donc la machine, et je me retrouve devant un écran noir avec le texte suivant :
error: file '/grub/i386-pc/normal.mod' not found Entering rescue mode... grub rescue> _
Hum... Il semblerait que nous ayons un léger problème ! 😅️
Jetons un rapide coup d'œil au contenu de la partition de boot ("/dev/sda1" ou plutôt "(hd0,msdos1)" dans la notation de GRUB) :
grub rescue> ls (hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) grub rescue> ls (hd0,msdos1)/grub ./ ../ gfxblacklist.txt unicode.pf2 x86_64-efi/ locale/ fonts/ grubenv grub.cfg
On peut y voir un dossier "/grub/x86_64-efi", qui contient tout ce qu'il faut pour démarrer en mode UEFI, mais il manque en effet le dossier "/grub/i386-pc", qui sert quant à lui à démarrer en mode BIOS.
Mais que s'est-il donc passé ?
Étant donné que la clef d'installation d'Ubuntu a été démarrée en mode UEFI, l'installateur a installé GRUB uniquement pour ce mode. Normalement ça ne devrait pas poser de problème, mais pour une raison que j'ignore, le ThinkPad n'arrive pas à démarrer Ubuntu en UEFI. 🤷
Comme j'avais configuré « Both » en mode de démarrage précédemment, après avoir échoué à démarrer Ubuntu en mode UEFI, le ThinkPad a tenté de le lancer en mode BIOS. GRUB a donc démarré, mais il lui manque des fichiers pour poursuivre.
Afin de pouvoir démarrer Ubuntu, il va falloir compléter l'installation de GRUB pour qu'il puisse fonctionner en mode BIOS.
On va donc redémarrer sur la clef d'installation d'Ubuntu, en sélectionnant l'option « Essayer Ubuntu » (par ce qu'on ne veut pas tout réinstaller), et on va ouvrir un terminal pour installer manuellement GRUB en mode legacy.
L'installation de GRUB est relativement simple. On commence par monter la partition de boot ("/dev/sda1") dans "/mnt" :
sudo mount /dev/sda1 /mnt
Puis on réinstalle GRUB avec les bons paramètres :
sudo grub-install --target=i386-pc --boot-directory=/mnt /dev/sda
Une fois cette commande tapée, on peut jeter un œil au contenu du dossier de GRUB pour vérifier si le dossier "i386-pc" y est bien présent :
ubuntu@ubuntu:~$ ls /mnt/grub/ fonts gfxblacklist.txt grub.cfg grubenv i386-pc locale unicode.pf2 x86_64-efi
Comme tout semble correct, il ne reste plus qu'à redémarrer.
Et cette fois-ci, c'est la bonne : Ubuntu démarre et j'arrive devant l'écran permettant d'entrer le mot de passe pour déchiffrer la partition !
Capture de l'écran demandant la clef de déchiffrement de la partition système
Malgré quelques péripéties dont je me serais bien passé, Ubuntu fonctionne à présent sans problème sur la machine. 😁️
J'espère que cet article pourra être utile à ceux qui rencontrent des problèmes similaires (et à mon moi futur quand il réinstallera cette machine).
--------------------------------------------------------------------------------