Un vieux Mac Mini 2007 Core Duo 2 sous Fedora Server 44

Un peu d'archéologie informatique.

Pour une raison qui m’échappe, ce matin j’ai eu envie de faire un peu d’archéologie, j’ai ressorti un vieux Mac Mini de 2007, à base de Core Duo 2 avec 3Gb de RAM. Il a booté sous Fedora 21 (j’ai retrouvé le mot de passe), le last login datait de 2016.

Fedora Server 44

Il n’y avait pas grand chose dessus, je l’utilisais déjà en headless à l’époque comme serveur de fichiers pour Plesk. Mais je me vois mal resté en Fedora 21 (32 bits). Je décide donc d’y installer Fedora Server 44, toujours en headless (pas trop le choix avec 3Go de RAM et un GPU Intel GM 940).

Problème de démarrage EFI

L’installation s’est très bien passée, le démarrage un peu moins. Le Mac Mini 2007 possède un firmware EFI 32 bits, alors que son processeur Core 2 Duo et Fedora Server 44 sont tous deux compatibles 64 bits. Fedora 44 prend pourtant en charge cette configuration en fournissant des boot loaders EFI 32 bits capables de lancer une installation 64 bits de Fedora.

Donc, même si FS 44 s’est installé avec succès, après le redémarrage, le Mac a affiché l’icône de dossier clignotant, indiquant que son firmware ne trouvait pas de loader EFI. Le système installé disposait bien d’une partition système EFI correctement créée (/dev/sda1), mais celle-ci ne contenait que :

EFI/fedora/grub.cfg

sans aucun exécutable EFI (.efi) dans les répertoires EFI/fedora ou EFI/BOOT. Pourtant, les fichiers nécessaires du boot loader IA32 étaient bien présents dans le système de fichiers de Fedora :

BOOTIA32.EFI
shimia32.efi
grubia32.efi

Le problème n’était donc pas que Fedora 44 ne pouvait pas fonctionner sur ce matériel, ni que le processeur était en 32 bits. Le problème était que les fichiers du boot loader EFI IA32 n’avaient pas été copiés dans la partition système EFI, laissant le firmware du Mac sans rien à exécuter au démarrage.

La solution consistait à peupler la partition système EFI avec les fichiers shim/GRUB IA32 de Fedora, y compris le fichier de secours :

/EFI/BOOT/BOOTIA32.EFI

Ce qui permet la séquence de démarrage suivante :

Firmware EFI 32 bits du Mac

BOOTIA32.EFI (shim Fedora)

GRUB 32 bits

Noyau Fedora 64 bits

Il suffit donc de réparer la partition ESP (EFI System Partition) plutôt que réinstaller Fedora

Guide pas à pas

Ce guide suppose que Fedora Server 44 est déjà installé et que vous avez démarré sur la clé USB > Dépannage > Environnement de secours.

1. Vérifier que l’ESP est accessible en écriture

mount -o remount,rw /mnt/boot/efi

Puis :

mkdir -p /mnt/boot/efi/EFI/BOOT
mkdir -p /mnt/boot/efi/EFI/fedora

2. Copier le boot loader IA32

Utiliser les fichiers fournis par Fedora, et non ceux de la clé USB :

cp /mnt/usr/lib/efi/shim/16.1-5/EFI/BOOT/BOOTIA32.EFI \
 /mnt/boot/efi/EFI/BOOT/BOOTIA32.EFI
cp /mnt/usr/lib/efi/shim/16.1-5/EFI/fedora/shimia32.efi \
 /mnt/boot/efi/EFI/fedora/shimia32.efi
cp /mnt/usr/lib/efi/grub2/1:2.12-56.fc44/EFI/fedora/grubia32.efi \
 /mnt/boot/efi/EFI/fedora/grubia32.efi

Et copier la configuration GRUB de Fedora :

cp /mnt/usr/lib/efi/shim/16.1-5/EFI/fedora/grub.cfg \
 /mnt/boot/efi/EFI/fedora/grub.cfg

3. Vérifier le résultat

Exécuter :

find /mnt/boot/efi/EFI -type f -ls

On obtient :

EFI/BOOT/BOOTIA32.EFI
EFI/fedora/shimia32.efi
EFI/fedora/grubia32.efi
EFI/fedora/grub.cfg

4. Un détail important

Le fichier grub.cfg contient :

set prefix=($dev)/grub2
export $prefix
configfile $prefix/grub.cfg

C’est normal pour Fedora, mais $dev fait référence au système de fichiers contenant /boot, et non à la partition EFI. C’est pourquoi il est important que /boot soit correctement monté en tant que /dev/sda2. Nous avons déjà établi que :

sda2 → /boot
sda1 → /boot/efi

C’est exactement ce que nous voulons.

5. Avant de redémarrer

S’assurer également que les fichiers EFI sont lisibles :

ls -lh /mnt/boot/efi/EFI/BOOT/BOOTIA32.EFI
ls -lh /mnt/boot/efi/EFI/fedora/

Puis :

sync

À ce stade, on peut redémarrer.

reboot

En prenant soin de retirer la clé USB lorsque le Mac redémarre.

Si tout fonctionne, le firmware EFI 32 bits du Mac devrait détecter /EFI/BOOT/BOOTIA32.EFI et la séquence de démarrage : Firmware EFI 32 bits du Mac → shim IA32 Fedora → GRUB IA32 → Noyau Fedora 64 bits devrait fonctionner.


More like this