MacBook ProJe l’avoue platement, j’ai toujours eu un faible pour les ordinateurs portables de la marque Apple, notamment la première série des MacBook Pro. Les rares fois où j’ai pu regarder de près celui d’un collègue ou d’une amie, ça m’a toujours donné envie de travailler sur ce matériel dont l’esthétisme et la finition me semblaient plutôt réussis. Du coup, lorsqu’une de mes clientes a acheté un MacBook Air et qu’elle ma proposé de récupérer son vieux MacBook Pro en échange de bons procédés, j’ai sauté sur l’occasion à pieds joints. Je n’ai pas besoin d’un foudre de guerre pour travailler, et cet ordinateur, je le considère un peu comme l’équivalent d’une vieille Mercedes série 124 ou d’un vieux bicylindre à plat de chez BMW. Peu importe les prestations modestes à partir du moment où l’on se retrouve avec un outil robuste et quintessentiel qu’on tripote avec un certain plaisir.

MacBook CentOS KDE

Linux en remplacement de Mac OS X

Dans cet article, je décris donc l’installation de Linux sur mon MacBook Pro flambant vieux. Non, je ne pratique ni le double boot ni l’installation virtualisée. Je supprime le système Mac OS X installé dessus d’office, et je le remplace par CentOS 7 avec un bureau KDE « aux petits oignons ». J’ai déjà écrit un article détaillé sur l’installation de CentOS 7 sur un poste de travail. Je me concentrerai donc sur les spécificités de l’installation par rapport au hardware de chez Apple.

Identifier mon MacBook Pro

Avant toute chose, j’aimerais bien en savoir un peu plus sur ma nouvelle acquisition. L’ancienne propriétaire affirme qu’il « doit avoir une bonne dizaine d’années ». 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. Effectivement, la machine a dix ans pile poil. Après tout, c’est dans les vieilles marmites qu’on fait les meilleures soupes.

MacBook Pro

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.

Accéder aux pièces

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 une clé bien spécifique pour enlever les quatre vis qui relient le disque dur à ce qui ressemble à un silent block. Merci à Mathieu de ICM TEAM Nîmes pour m’avoir gracieusement prêté cet outil.

Premier démarrage sur le DVD

Le MacBook Pro dispose d’un lecteur optique de type mange-disque. J’en profite pour effectuer l’installation à partir d’un DVD d’installation de CentOS. Curieusement, l’installateur de CentOS 7.5 et 7.6 refuse de se lancer suite à un problème avec le service systemd-udev-settle. En attendant de résoudre ce mystère, j’utilise le DVD minimal de CentOS 7.4, qui fonctionne très bien.

Avec les portables Apple, la procédure de démarrage est un peu spéciale. Il faut insérer le DVD machine allumée, éteindre, appuyer sur la touche [C] et allumer en même temps, ce qui fait démarrer sur le DVD.

Tester la mémoire vive

Avant toute chose, j’effectue un test de la mémoire vive que je viens d’installer. Dans le menu du DVD, j’ouvre Troubleshooting > Run a memory test et je lance MemTest86 pour un test exhaustif de la totalité de la RAM disponible. Étant donné que je ne dispose que d’un processeur double coeur, j’ai le temps de boire quelques cafés pendant que le test mouline, près de 45 minutes au total.

Réseau

La section Réseau de l’installateur n’affiche ni carte filaire, ni carte wifi. Aucun périphérique réseau disponible. Il va falloir se retrousser les manches.

Partitionnement

J’opte pour un partitionnement classique en mode manuel, sans LVM.

  • une partition /boot de 500 Mo formatée en ext2
  • une partition swap de 8 Go
  • une partition principale de 103 Go formatée en ext4

À partir de là, j’installe un système minimal, sans serveur graphique ni environnement de bureau.

Configurer la carte réseau filaire

Au premier redémarrage, la première impression se confirme. Aucune carte réseau disponible.

[kikinovak@macbook ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

La solution pour configurer une carte réseau non reconnue, c’est d’installer un noyau plus récent et voir ce que ça donne. La meilleure adresse pour ce genre de chose, c’est le dépôt de paquets elrepo-kernel, qui fournit pas moins de deux familles de kernels plus récents.

  • la famille kernel-lt avec le dernier noyau LTS
  • la famille kernel-ml avec le dernier noyau stable

Sur ma station de travail, je télécharge le noyau LTS depuis un site miroir du dépôt ELRepo. Je le copie sur un disque dur externe pour le transférer sur le MacBook, et je l’installe comme ceci.

$ sudo yum localinstall kernel-lt-4.4.178-1.el7.elrepo.x86_64.rpm

Je redémarre sur ce noyau. Apparemment notre problème de carte réseau filaire est résolu. Nous disposons dorénavant d’une nouvelle interface réseau enp0s10.

[kikinovak@macbook ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:25:4b:ca:37:ec brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.6/24 brd 192.168.2.255 scope global dynamic enp0s10
       valid_lft 86343sec preferred_lft 86343sec
    inet6 fe80::e5e:e3cc:1dea:8248/64 scope link 
       valid_lft forever preferred_lft forever

Je décide de garder ce kernel, et j’en profite pour faire un peu de ménage.

$ sudo yum remove kernel*3.10.0*

Je vérifie si tout est bien propre et qu’il n’y a pas de résidus d’autres versions.

$ rpm -qa | grep kernel
kernel-lt-4.4.178-1.el7.elrepo.x86_64

Pour éviter toute réinstallation intempestive du noyau 3.10.0 et des paquets qui y correspondent, je peux éventuellement éditer /etc/yum.conf et ajouter la ligne suivante.

exclude=kernel kernel-debug* kernel-tools* kernel-devel kernel-headers vdo kmod-kvdo

À partir de là, je suis la procédure de post-installation habituelle. La prochaine étape un peu particulière consistera à configurer la carte graphique après avoir installé le serveur graphique.

Un pépin avec le noyau LTS

À ce stade, j’ai été confronté à un problème. Les prestations du pilote libre nouveau ne sont pas glorieuses, et même franchement mauvaises. J’ai donc tenté l’installation du pilote propriétaire nvidia, ce qui s’est soldé par une série d’échecs.

Je vous fais grâce des détails techniques sous le capot, mais la solution la plus viable consiste à effectuer un petit downgrade du noyau LTS vers la version 4.4.167 pour ensuite construire le pilote fourni par NVidia.

Dans un premier temps, il faut télécharger manuellement les trois paquets suivants sur un miroir ELRepo qui conserve les précédentes versions du kernel.

  • kernel-lt-4.4.167-1.el7.elrepo.x86_64.rpm
  • kernel-lt-devel-4.4.167-1.el7.elrepo.x86_64.rpm
  • kernel-lt-headers-4.4.167-1.el7.elrepo.x86_64.rpm

Installer ces trois paquets manuellement comme ceci.

$ sudo yum localinstall kernel-lt-*

Une fois qu’on a redémarré sur ce kernel, on peut refaire un coup de ménage.

$ sudo yum remove kernel-lt-4.4.178

Configurer la carte graphique

La carte graphique de ce MacBook est une NVidia GeForce 9400.

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

Le pilote libre nouveau offre de piètres prestations. Je vais donc le remplacer par le pilote propriétaire nvidia, qui est bien plus performant.

Nous avons déjà installé quelques prérequis comme les paquets kernel-lt-devel et kernel-lt-headers. Il ne nous manque plus qu’un compilateur.

$ sudo yum install gcc

Je me rends sur le site de NVidia et je cherche le driver qui va bien.

NVidia GeForce 9400

Je télécharge le pilote.

NVidia GeForce 9400

Le pilote libre nouveau entre en conflit avec le pilote propriétaire nvidia.

$ lsmod | grep nouveau
nouveau              1527946  1 
video                  24400  1 nouveau
mxm_wmi                13021  1 nouveau
...

On va donc empêcher son chargement. Éditer ou créer un fichier /etc/modprobe.d/blacklist.conf comme ceci.

blacklist nouveau

Il faut également empêcher nouveau d’être chargé au démarrage, en éditant /etc/default/grub comme ceci. En passant, on pourra afficher les messages de démarrage du système

GRUB_CMDLINE_LINUX="quiet \
                    vga=791 \
                    rd.driver.blacklist=nouveau \
                    nouveau.modeset=0"

Ne pas oublier de prendre en compte les modifications.

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Redémarrer et vérifier si on a bien réussi à se débarrasser du pilote nouveau.

$ lsmod | grep nouveau

Ranger le pilote rapatrié dans un endroit convenable en définissant les droits d’exécution.

$ cd nvidia
$ chmod +x NVIDIA-Linux-x86_64-340.107.run

Lancer la construction.

$ sudo ./NVIDIA-Linux-x86_64-340.107.run

Pour utiliser le pilote, il suffit de redémarrer.

Configurer la carte wifi

La carte wifi de notre MacBook est une infâme Broadcom BCM4322.

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

Là aussi, il va falloir construire le driver propriétaire fourni par le fabricant. Nous disposons déjà des outils de construction. Il ne nous reste plus qu’à aller sur le site de Broadcom.

Chercher “linux sta 64-bit” depuis la page d’accueil.

Broadcom

Voici le driver qu’il nous faut.

Broadcom

L’archive de ce constructeur respecte une nomenclature pour le moins folklorique.

  • hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz

Créer un emplacement pour construire le driver, décompresser l’archive et lancer la compilation.

$ mkdir ~/hybrid-wl
$ cd hybrid-wl/
$ tar xvzf ../broadcom/hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz
$ make -C /lib/modules/$(uname -r)/build/ M=$(pwd)

Le module résultant pèse 8.5 Mo.

$ ls -lh wl.ko
-rw-rw-r--. 1 kikinovak kikinovak 8,5M  8 avril 19:14 wl.ko

On peut réduire la taille quelque peu.

$ strip --strip-debug wl.ko
$ ls -lh wl.ko
-rw-rw-r--. 1 kikinovak kikinovak 7,2M  8 avril 19:15 wl.ko

Installer manuellement le module vers un endroit approprié.

$ sudo cp -vi wl.ko /lib/modules/$(uname -r)/extra/
« wl.ko » -> « /lib/modules/4.4.167-1.el7.elrepo.x86_64/extra/wl.ko »

Mettre à jour l’arbre des dépendances entre les modules.

$ sudo depmod $(uname -r)

Charger le module à la main.

$ sudo modprobe wl

Avant de pouvoir utiliser notre carte, nous devons encore blacklister une série de modules qui risquent d’entrer en conflit. Ouvrir /etc/modprobe.d/blacklist.conf et ajouter les lignes suivantes.

blacklist bcm43xx
blacklist b43
blacklist b43legacy
blacklist bcma
blacklist brcmsmac
blacklist ssb
blacklist ndiswrapper

Au prochain redémarrage de la machine, nous disposons d’une nouvelle interface réseau sans fil wlp3s0.

Une fois qu’on a installé le paquet kde-plasma-networkmanagement, la gestion du réseau se fait de manière complètement transparente.

MacBook CentOS KDE

 


Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.