Apple vs. LinuxAprès ma série d’articles sur l’installation de Linux sur une paire de vieux ordinateurs iMac, je vais pouvoir mettre en application toutes les bidouilles que j’ai trouvées pour doter un vieux MacBook Pro 13″ de mon système d’exploitation préféré. Mac OS X ne peut plus être mis à jour sur cette machine. L’installation de Rocky Linux 8 lui offre donc une deuxième vie tout en faisant un bras d’honneur à la politique d’obsolescence programmée cultivée par la marque Apple.

Identifier mon MacBook Pro

Avant toute chose, j’aimerais bien en savoir un peu plus sur mon MacBook. Je me rends donc sur le site d’Apple, et plus précisément sur la page qui permet d’identifier le matériel. Je saisis le numéro de série imprimé sur la machine et j’obtiens le résultat ci-dessous :

MacBook Pro 13" 2009

Installer du matériel plus performant

Dans la configuration par défaut, la machine est munie d’un processeur Intel Dual Core, de deux gigaoctets de mémoire vive et d’un disque SATA de 160 Go. Après avoir fait l’inventaire de mon stock de pièces, je tombe sur deux barrettes de RAM de 2 et 4 Go respectivement, et un disque SSD de 120 Go. Parfait. On va donc effectuer un petit upgrade matériel avant de commencer l’installation.

Rien de particulier à signaler sur le démontage. Il suffit d’enlever l’une après l’autre une dizaine de petites vis sur le dessous du MacBook. C’est toujours une bonne idée de les placer proprement autour de la machine, à plus forte raison qu’elles n’ont pas toutes la même longueur et que ce sont des vis spécifiques à Apple. Les barrettes de RAM se clippent simplement comme sur n’importe quel PC portable. En revanche, le remplacement du disque dur nécessite un tournevis torx.

Démarrer sur la clé USB

La confection de la clé USB d’installation de Rocky Linux 8 est décrite en détail dans cet article. Puisque la machine dispose d’un lecteur DVD de type mange-disque, rien ne vous empêche de graver un DVD d’installation si vous préférez.

ImportantDans la configuration par défaut, la carte réseau du MacBook n’est pas reconnue par l’installateur. N’utilisez donc pas l’ISO Boot et optez pour l’ISO Minimal.

  • Branchez la souris  et le support d’installation sur les deux ports USB à gauche.
  • Gardez la touche [Alt] appuyée en allumant la machine.
  • Cliquez sur l’icône [EFI  Boot] qui symbolise un disque externe et démarrez dessus.
  • Si tout se passe bien, l’écran d’accueil de l’installateur de Rocky Linux s’affiche en mode UEFI.

Apple - Démarrage

AstucePour mes tests, je branche une souris de type PC. Steve Jobs a eu pas mal de bonnes idées dans sa vie, mais l’abolition du bouton droit de la souris et du touchpad n’en fait pas partie.

Préparer le disque dur

Dans certains cas, le programme d’installation ne gère pas le partitionnement et le formatage du disque sur ce matériel. Qu’à cela ne tienne, nous allons faire les choses à la main comme nos ancêtres qui chassaient l’ours à mains nues :

  • Démarrez en mode secours : Troubleshooting > Rescue a Rocky Linux system.
  • Ne vous inquiétez pas si vous ne voyez rien pendant une bonne minute.
  • Une fois que le système de secours a démarré, choisissez l’option 3) Skip to shell.
  • Confirmez par [Entrée].

Basculez vers une disposition de clavier française AZERTY en tâtonnant un peu :

# loadkeys fr-latin1

Identifiez le disque dur :

# lsblk

Réinitialisez éventuellement le disque :

# sgdisk --zap-all /dev/sdb
# wipefs --all /dev/sdb

Partitionnez le disque manuellement en utilisant gdisk :

# gdisk /dev/sdb
  • une partition EFI (ef00) de 200 Mo
  • une partition /boot (8300) de 600 Mo
  • une partition swap (8200) de 4 Go
  • une partition principale / (8300)

Quittez la session de secours et redémarrez sur l’installateur en gardant la touche [Alt] appuyée au démarrage.

Installer le système de base

L’installation d’un système de base Rocky Linux 8 est décrite en détail dans cet article. Je ne reviendrai donc pas dessus, et je me concentrerai sur les points spécifiques à respecter pour effectuer cette opération sur un MacBook.

L’installation de GRUB ne fonctionne pas, et il faut la désactiver explicitement dans l’installateur Anaconda : Installation Destination > Résumé complet du disque et chargeur de démarrage > Sélectionner le disque > Ne pas installer de chargeur de démarrage > Fermer.

Anaconda - GRUB

AstuceSuite à cette opération, l’installateur vous affiche un avertissement qui vous informe que votre système ne pourra peut-être pas démarrer. Ignorez ce message, puisque nous allons installer GRUB manuellement après l’installation.

Ensuite, sélectionnez le partitionnement Personnalisé et affectez les partitions que nous avons créées manuellement au système. Cette opération est expliquée en détail dans cet article.

La carte réseau n’est pas reconnue par l’installateur. Ne vous en préoccupez pas pour l’instant, nous allons nous en occuper en temps et en heure une fois que le système de base sera installé.

Une fois que vous avez renseigné tous les points du programme d’installation et que vous cliquez sur Commencer l’installation, un message d’erreur assez folklorique apparaît :

Message d'erreur iMacFace à ce choix cornélien, cliquez sereinement sur Oui. Vous verrez défiler l’un après l’autre les paquets du système de base. Une fois qu’ils sont tous installés, cliquez sur Redémarrer le système.

Installer le chargeur de démarrage

Dans l’état actuel des choses, le système ne peut pas démarrer, puisque nous n’avons pas de chargeur de démarrage. C’est ce que nous allons rattraper maintenant :

  • Gardez le support d’installation inséré.
  • Démarrez en mode secours : Troubleshooting > Rescue a Rocky Linux system.
  • Ne vous inquiétez pas si vous ne voyez rien pendant une bonne minute.
  • Une fois que le système de secours a démarré, choisissez l’option 1) Continue.
  • Confirmez par [Entrée].

Basculez vers une disposition de clavier française AZERTY en tâtonnant un peu :

# loadkeys fr-latin1

Basculez vers le système installé :

# chroot /mnt/sysroot

Installez GRUB manuellement :

# grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg

AstuceVous pouvez sereinement ignorer les avertissements du genre device-mapper: reload ioctl on osprober-linux-sda1 (253:2) failed: Device or resource busy. Ils ne nous empêcheront pas de vivre.

Retournez dans la session de secours et redémarrez :

# exit
# reboot

Si tout se passe bien, le système démarre. Ne vous inquiétez pas outre mesure si ça mouline pendant quelques minutes pour redémarrer automatiquement. Une des conséquences de notre approche brute de décoffrage, c’est que le système doit procéder à un réétiquetage SELinux complet.

Peaufiner GRUB

En temps normal, le chargeur de démarrage GRUB se configure par le biais du fichier /etc/default/grub. Puisque nous avons installé GRUB manuellement dans la session de secours, ce fichier est manquant. Ce n’est pas bien grave, nous pouvons très bien rectifier le tir à la main.

Lancez l’éditeur Vi, créez un fichier /etc/default/grub et éditez-le comme ceci :

# /etc/default/grub
GRUB_CMDLINE_LINUX="quiet mitigations=off"

ImportantDans les formations Linux que je dispense, j’insiste sur le fait que mes stagiaires apprennent à se servir de l’éditeur de texte Vi, puisqu’il peut arriver que ce soit le seul éditeur disponible. Voici donc le moment précis où ceux qui me rétorquent qu’ils ne jurent que par Nano finissent par comprendre.

Quelques explications sur les options utilisées :

  • quiet coupe le caquet aux messages de démarrage trop bavards.
  • mitigations=off désactive les mitigations de la vulnérabilité Spectre qui affecte les processeurs Intel. Elles risquent d’impacter sensiblement les performances de notre MacBook.

Prenez en compte les modifications et redémarrez :

# grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
# reboot

En savoir plus sur le matériel

La commande lspci ne fait pas partie du système minimal de Rocky Linux 8. Vu que pour l’instant je n’ai pas de réseau, je ne peux pas utiliser le gestionnaire de paquets dnf pour récupérer le paquet pciutils correspondant. En revanche, le paquet se trouve sur la clé USB d’installation minimale. Je vais donc l’installer manuellement à partir de là :

# mount /dev/sdb1 /mnt
# cd /mnt/BaseOS/Packages/p
# rpm -ivh pciutils-3.7.0-1.el8.x86_64.rpm 
...
Verifying...               ################################# [100%]
Preparing...               ################################# [100%]
Updating / installing...
   1:pciutils-3.7.0-1.el8  ################################# [100%]
# cd
# umount /mnt

Carte réseau NVidia MCP79

À présent je dispose bien de la commande lspci. Elle va me permettre d’identifier ma carte réseau :

# lspci | grep -i eth
00:0a.0 Ethernet controller: NVIDIA Corporation MCP79 Ethernet 
(rev b1)

J’utilise lspci -n pour obtenir le code constructeur et le modèle :

# lspci -n | grep "00:0a.0"
00:0a. 0200: 10de:0ab0 (rev b1)

La chaîne de caractères 10de:0ab0 va me permettre d’identifier le pilote Linux requis pour mon matériel. J’effectue une recherche Google 10de:0ab0 site:linux-hardware.org et je vois que le module que je recherche s’appelle forcedeth :

Linux Hardware - forcedeth

AstuceSi vous utilisez Red Hat Enterprise Linux ou l’un des nombreux clones libres, la meilleure adresse pour les pilotes non fournis par cette famille de distributions est le dépôt tiers ELRepo.org.

Sur ma station de travail qui tourne également sous Rocky Linux 8, le dépôt ELRepo est déjà configuré, et le paquet kmod-forcedeth est disponible :

$ dnf search forcedeth
...
kmod-forcedeth.x86_64 : forcedeth kernel module(s)

ImportantPour compliquer les choses, la toute dernière version de ce pilote ne fonctionne pas. J’ai testé pour vous. Si vous l’installez, vous obtiendrez un joli Kernel panic au démarrage.

En revanche, l’avant-dernière version fonctionne correctement, mais seulement avec le noyau du support d’installation. C’est donc celle-là que je vais récupérer sur ma station de travail :

$ dnf --showduplicates list kmod-forcedeth
...
kmod-forcedeth.x86_64  0.0-6.el8_4.elrepo  elrepo 
kmod-forcedeth.x86_64  0.0-7.el8_6.elrepo  elrepo 
kmod-forcedeth.x86_64  0.0-8.el8_7.elrepo  elrepo 
kmod-forcedeth.x86_64  0.0-9.el8_7.elrepo  elrepo
$ dnf download kmod-forcedeth-0.0-8.el8_7.elrepo
kmod-forcedeth-0.0-8.el8_7.elrepo.x86_64.rpm  42 kB/s |  54 kB  00:01
$ ls kmod*
kmod-forcedeth-0.0-8.el8_7.elrepo.x86_64.rpm

Je copie ce paquet sur une clé USB et je le transfère sur mon MacBook. Une fois que c’est fait, je l’installe manuellement :

# rpm -ivh --nosignature kmod-forcedeth-0.0-8.el8_7.elrepo.x86_64.rpm
Verifying...                            ################################# [100%]
Preparing...                            ################################# [100%]
Updating / installing...
   1:kmod-forcedeth-0.0-8.el8_7.elrepo  ################################# [100%]

Je charge le module à la main :

# modprobe forcedeth

À partir de là, les commandes ip addr ou nmcli dev me montrent que je dispose d’une nouvelle interface réseau enp0s10.

Avant d’aller plus loin, je vais empêcher la mise à jour du paquet kmod-forcedeth et des paquets relatifs au noyau en attendant que les développeurs du module aient résolu le problème affectant la version subséquente :

# /etc/yum.conf
...
exclude=kmod-forcedeth kernel kernel-core kernel-modules kernel-tools*

Installer KDE et les applications

L’installation du serveur graphique X11, du bureau KDE et d’une panoplie d’applications sous Rocky Linux 8 a été traitée en détail dans cet article. Je ne vais donc pas revenir dessus. Or, il y a de fortes chances à ce que le redémarrage initial de votre machine se solde par un écran noir à la place d’un gestionnaire de connexion.

Dans un premier temps, nous allons donc désactiver le démarrage en mode graphique :

# systemctl set-default multi-user.target

Carte NVidia GeForce 9400

Mon MacBook Pro 13″ est équipé d’une carte graphique NVidia GeForce 9400 :

# lspci | grep -i vga
03:00.0 VGA compatible controller: NVIDIA Corporation C79 [GeForce 9400] 
(rev b1)

Dans le bon vieux temps – et plus précisément jusqu’en 2019 – cette carte était gérée par le pilote propriétaire de chez NVidia dans sa version 340.108. Si vous vous rendez sur le site du constructeur NVidia et que vous indiquez votre carte GeForce 9400 dans le champ de recherche, voici ce que vous obtenez :

NVidia GeForce 9400

Et là vous avez de quoi perdre un après-midi à vous arracher les cheveux, et ce pour plusieurs raisons :

  • Le pilote a beau être disponible au téléchargement sur le site du constructeur, mais son développement a été abandonné depuis belle lurette.
  • Lorsqu’on essaie de l’installer manuellement, sa construction échoue même avec un noyau 4.18 de chez Red Hat.
  • Avec les noyaux plus récents ça fonctionnera encore moins.
  • Certains dépôts tiers comme RPMFusion proposent certes encore des paquets binaires pour ce pilote, mais aucun ne fonctionne.

Il ne me reste donc plus qu’à essayer le pilote libre nouveau. J’avoue que dans le passé, j’ai eu des résultats plutôt décourageants avec ce pilote, avec une série de gels inopinés du système. Mais puisqu’il n’y a pas d’autre solution, croisons les doigts et essayons.

Il n’y a aucune configuration spécifique à fournir pour ce pilote, du moins dans un premier temps :

# systemctl isolate graphical.target

Le gestionnaire de connexion SDDM s’affiche, mais ce n’est pas encore gagné. Je définis le démarrage en mode graphique par défaut :

# systemctl set-default graphical.target

Et là, lorsque je redémarre le système, je me retrouve face à un écran noir. Mystère et boules de gomme.

Retarder le lancement de SDDM

Le fin mot de l’histoire, c’est que le gestionnaire de connexion SDDM se lance un tout petit peu trop tôt et plante parce que le module nouveau n’est pas encore chargé.

Voici une solution que j’ai trouvée, et qui fonctionne parfaitement. Créez un fichier /etc/systemd/system/sddm.timer et éditez-le comme ceci :

[Unit]
Description=Start sddm service fixed time after boot

[Timer]
OnStartupSec=7
Unit=sddm.service

[Install]
WantedBy=multi-user.target

Ensuite vous remplacez le service SDDM par la version comprenant un délai de sept secondes :

# systemctl disable sddm.service
# systemctl enable sddm.timer

À partir de là, tout fonctionne parfaitement. Les performances du pilote nouveau sont suffisantes pour afficher les effets de KDE comme la lampe magique ou les fenêtres en gélatine. Après, n’essayez pas d’en faire une machine de gamer. Mais pour travailler avec au quotidien, c’est tout à fait correct.

Carte Wi-Fi Broadcom BCM4322

Il ne nous reste plus qu’à identifier et configurer la carte Wi-Fi :

# lspci | grep -i network
03:00.0 Network controller: Broadcom Inc. and subsidiaries 
BCM4322 802.11a/b/g/n Wireless LAN Controller (rev 01)

Le module wl nécessaire pour faire fonctionner cette carte est fourni par le dépôt tiers RPM Fusion (nonfree). Si vous avez utilisé mon script d’installation automatique un peu plus haut, ce dépôt de paquets est déjà configuré et prêt à l’emploi :

# dnf install -y kmod-wl

À partir de là, il suffit de redémarrer la machine, et vous disposez d’une nouvelle interface réseau wlp3s0.

Conclusion

Est-ce que tout ce travail en valait la chandelle ? Oui ! Au départ, notre MacBook Pro était voué à la casse, puisque Mac OS X ne pouvait plus être mis à jour. Là, on se retrouve avec une machine où tout fonctionne parfaitement.

MacBook Pro Linux


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


11 commentaires

zonetuto · 10 février 2023 à 9 h 53 min

Merci pour le tuto, j’ai un vieux macbook qui marche encore très bien mais n’est plus mis à jour par Apple, je vais essayer d’installer Kubuntu dessus comme ca c’est top

Adrien · 10 février 2023 à 10 h 18 min

Super !
Je dispose moi-même d’un 15″ mid 2009 et il est devenu depuis quelques années inutilisable.
Un SSD avec fusion drive, et adjonction de ram ont été fait, une batterie neuve en plus et c’est nickel.
Mais c’est le software qui ne suit pas. De plus en plus de logiciel ne sont plus utilisable car l’OS n’est plus mis à jour et les applications ne se lance plus. C’est déplorable. Plus le temps passe, et plus l’ordi devient un tiers monde numérique.
Perso, je suis en Mojave, quelques versions au dessus de la dernière version officiellement supportée.
Je réfléchi à y mettre une distrib linux, pour pouvoir à nouveau m’en servir et ne pas mettre à la poubelle un hardware qui fonctionne parfaitement !
Merci pour ton article

JnnT · 25 février 2023 à 9 h 43 min

Intéressant mais fort complexe. J’ai installé sans problème Ubuntu sur un « Mac Book Air » pas pro sans aucune difficulté. Tout fonctionne parfaitement. Petit souci : de petites variations de luminosité quand je baisse celle-ci au minimum, mais c’est vraiment négligeable.

    kikinovak · 25 février 2023 à 14 h 01 min

    Cela tient au fait qu’Ubuntu est une distribution orientée poste de travail, avec toute une panoplie d’assistants automatiques de configuration sous le capot. Red Hat s’en fiche complètement du poste de travail, du coup on est obligé de mettre les mains à la pâte. Mais le résultat en vaut la chandelle, puisqu’on obtient un bureau propre avec dix ans de support.

Yanick · 23 avril 2023 à 18 h 22 min

Bonjour Nicolas, tout d’abord je tenais à vous remercier pour ce gros travailler de pédagogie réaliser dans ce tutoriel. Je peux enfin redonner vie à un ancien macbook pro 2009 et me mettre à apprendre le fonctionnement de Rocky linux pour tenter d’appréhender au mieux les fonctionnalités de l’administration de serveur et réseau. A ce stade j’ai tout installer de mon côte et le terminal fonctionne parfaitement. J’ai juste constater qu’après l’éxécution du script fourni je n’avais plus accès à l’éditeur VIM mais que nano fonctionnait. Mon interface ethernet est reconnu ainsi que mon interface wifi.

Mon sujet est : je bloque à l’affichage de l’interface graphique avec une interface user script le pays et l’heure américaine et mon user configuré qui lorsque je rentre le mot de passe ouvre une session avec une page firefox présentant rocky llinux, mais sans la possibilité de faire autre chose que d’aller visiter des page web (pas de croix pour fermer l’explorateur par exemple). apparemment l’installation de KDE ne se passe pas bien car quand j’execute votre script j’ai un message d’erreur configuring taskbar et kickoff menu du genre can’t read /usr/share/plasma/…/config/main.xml No such file. Avez vous uen idée de l’étape que j’ai manqué ?
En attendant de vous lire.
Cordialement yanick

    kikinovak · 23 avril 2023 à 20 h 20 min

    J’ai regardé un peu, et j’ai trouvé l’erreur. Certains paquets kernel-* blacklistés empêchent l’installation de certains composants de KDE, et du coup y’a tout qui bloque. Je vais essayer de trouver une solution à ce problème. Je vous demande un peu de patience.

    kikinovak · 24 avril 2023 à 15 h 50 min

    OK, j’ai trouvé la solution. Ce sont effectivement les paquets kernel-* blacklistés qui causent le problème. Et voici une solution possible.

    Au lieu de faire ceci :

    # ./setup --setup

    Il faut lancer les étapes de configuration individuellement, en rectifiant le tir à la main :

    # dnf update
    # reboot
    
    # cd rocky-8-desktop
    # ./setup --shell
    # ./setup --repos
    # ./setup --tools
    # dnf group install -y --nobest "Base"
    # ./setup --basic
    # dnf group install -y --nobest "KDE Plasma Workspaces"
    # ./setup --strip
    # ./setup --extra
    # ./setup --flats
    # ./setup --fonts
    # ./setup --kderc
    # ./setup --users
    # ./setup --dvdrw
    # ./setup --menus
    

    Je viens de tester ça successivement sur deux iMac différents, et ça fonctionne parfaitement.

      yanick · 24 avril 2023 à 18 h 29 min

      Bonsoir Nicolas,
      je viens de tester cette solution est elle fonctionne parfaitement. J’ai suivi vos instruction à la lettre à un détail prêt, car il faut taper le nom exact du fichier script que vous avez écris avec l’extension .sh pour que ca fonctionne. J’ai tatonner au début car ne n’arrivez pas à le lancer. Pour ceux qui auraient à suivre ces conseils.

      D’autre part savez vous si il est toujours possible d’allumer l’éclairage du clavier de nuit car les touches sur le mien ne l’active plus ?

      Au plaisir d’échanger à nouveau avec vous.

      PS : Sûrement pour ce futur projet, en attendant je vais me former sur rocky linux en utilisant mon macbook pro 2009 fraîchement résuscité grâce à vos compétences.
      Je pense me lancer prochainement sur le mac pro version early 2006 que j’ai également, mais j’attend d’avoir votre avis sur ce modèle et les éventuelles étapes importante, acr j’ai pu lire sur des tuto en anglais que le démarrage de l’installation ne se faisait pas en mode EFI ?

        kikinovak · 24 avril 2023 à 21 h 51 min

        Une mise en garde s’impose ici. Mon blog s’adresse normalement à un public qui a déjà un peu de bouteille en administration système.

        Pour les questions un peu pointues, le forum de Rocky Linux est une excellente adresse.

JJ · 4 octobre 2023 à 17 h 13 min

Bonjour Nicolas,

comment as-tu configuré le clavier de ton macbook pro afin que les symboles sur les touches correspondent parfaitement ? (p-ex le @# sur la touche à gauche du « 1 » ?

Répondre à kikinovak Annuler la réponse

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *