Installation de CentOS 7 sur un MacBook Pro

Think LinuxCet article décrit l’installation d’un poste de travail CentOS 7 sur un MacBook Pro, en remplacement du système propriétaire Mac OS X de chez Apple. Dans un précédent article, j’avais décrit en détail l’installation de la distribution Ubuntu 16.04 LTS sur un MacBook. Une première tentative d’installation de CentOS 7 s’était soldée par un échec. J’ai expérimenté un peu plus, et voici donc tout ce qu’il faut savoir pour installer et configurer ma distribution préférée sur ce genre de matériel. En termes d’environnement graphique, j’opte pour ma variante personnalisée du bureau Xfce. La procédure d’installation est décrite en détail ici. Le présent article se penchera uniquement sur les particularités du hardware de chez Apple.

La configuration du matériel n’est pas une opération triviale et nécessite de plonger les mains dans le cambouis, surtout pour les deux cartes réseau et la carte graphique. En revanche, on se retrouve au final avec un poste de travail Linux qui fonctionne très proprement sur du matériel tout aussi propre.

MacBook Pro

Démarrage

La machine dispose d’un lecteur optique, je peux donc utiliser le DVD d’installation de CentOS confectionné depuis le fichier CentOS-7-x86_64-DVD-1708.iso. 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.

Les machines de chez Apple utilisent normalement un BIOS EFI, mais apparemment, l’installation fonctionne également en mode traditionnel (legacy). Côté BIOS, c’est un peu une boîte noire. Le démarrage en mode EFI ou traditionnel me semble quelque peu erratique et aléatoire, et c’est finalement une question de tentative et d’échec avec une bonne dose d’obstination.

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.

  • une partition /boot de 500 Mo formatée en ext2
  • une partition swap de 4 Go
  • une partition principale de 145 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.

[root@macbook-pro ~]# 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 les deux kernels directement depuis un site miroir du dépôt ELRepo. Voici les deux kernels.

  • kernel-lt-4.4.90-1.el7.elrepo.x86_64.rpm
  • kernel-ml-4.13.5-1.el7.elrepo.x86_64.rpm

Je les copie sur un disque dur externe pour les transférer sur le MacBook, et je les installe comme ceci.

# yum localinstall kernel-lt-* kernel-ml-*

Dans la mesure du possible, je préfère utiliser le kernel LTS. Je fais donc un premier essai en redémarrant sur ce kernel (4.4.90) en premier. Apparemment notre problème de carte réseau filaire est résolu. Nous disposons dorénavant d’une nouvelle interface réseau enp0s10.

[root@macbook-pro ~]# 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.121/24 brd 192.168.2.255 scope global dynamic enp0s10
valid_lft 86300sec preferred_lft 86300sec
inet6 fe80::9052:632d:db85:8711/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.

# yum remove kernel-ml-*
# yum remove kernel-3.10.0-693.el7
# yum remove kernel-tools-*

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.90-1.el7.elrepo.x86_64

À partir de là, je suis la procédure d’installation habituelle. La prochaine étape consistera à configurer la carte graphique.

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 fonctionne de manière acceptable. Je vais quand-même le remplacer par le pilote propriétaire nvidia, qui est bien plus performant.

Pour commencer, j’installe ce qu’il faut pour la compilation.

# yum --enablerepo=elrepo-kernel install gcc

Cette dernière commande installe automatiquement la dépendance kernel-lt-headers pour le noyau installé.

Il nous faudra également installer les sources du noyau.

# yum --enablerepo=elrepo-kernel install kernel-lt-devel

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

Pilote NVidia

Je télécharge le pilote.

Pilote NVidia

Pour les détails de l’installation de ce pilote, on pourra jeter un oeil sur cet article.

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

Je télécharge ce fichier et je le range en un endroit approprié, par exemple /root/broadcom.

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

# mkdir -pv /usr/local/src/hybrid-wl
mkdir: création du répertoire « /usr/local/src/hybrid-wl »
# cd /usr/local/src/hybrid-wl/
# tar xvzf /root/broadcom/hybrid-*.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-r--r--. 1 root root 8,5M 7 oct. 12:12 wl.ko

On peut réduire la taille quelque peu.

# strip --strip-debug wl.ko
# ls -lh wl.ko
-rw-r--r--. 1 root root 7,2M 7 oct. 12:14 wl.ko

Installer manuellement le module vers un endroit approprié.

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

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

# depmod $(uname -r)

Charger le module à la main.

# 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.

# ifconfig -a
...
wlp3s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 22:b4:ca:ea:ae:89  txqueuelen 1000  (Ethernet)
...

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

MacBook Pro NetworkManager

Support de la webcam

La webcam incorporée est un modèle Apple iSight.

# lsusb
...
Bus 001 Device 003: ID 05ac:8507 Apple, Inc. Built-in iSight

À ce stade, on est presque agréablement surpris par le support “out of the box” de ce périphérique.

Webcam iSight

Support de la carte son

La carte son est une NVidia MCP79 High Definition Audio.

# lspci | grep -i audio
00:08.0 Audio device: NVIDIA Corporation MCP79 High Definition 
Audio (rev b1)

Ce modèle est également supporté dans la configuration par défaut et ne nécessite aucune intervention de notre part.

Support du touchpad et de la souris

Le touchpad fonctionne sans problèmes, mais il manque la possibilité d’effectuer un clic droit. C’est tout à fait normal, vu que Steve Jobs trouvait ça cool de ne pas pouvoir afficher un menu contextuel dans une application. Au lieu de ça, on a droit à une émulation du clic droit en utilisant deux ou trois doigts, et qui engendre rapidement une furieuse envie de balancer le MacBook dans le geyser le plus proche.

La meilleure solution consiste ici à brancher une souris filaire classique de type PC au port USB pour dépasser cette limitation saugrenue.

Ce contenu a été publié dans CentOS, Documentation Microlinux, avec comme mot(s)-clé(s) , , , . Vous pouvez le mettre en favoris avec ce permalien.

2 réponses à Installation de CentOS 7 sur un MacBook Pro

  1. Oscar Osta dit :

    Hi,
    I’m testing Fedora 27 on a MacBook Pro 1.1 (2014) and I needed to do the following steps to fix some problems with the temperature:
    1. Install thermald daemin
    2. Install kernel-tools, I needed cpupower utlity to configure the governance type from performance to powersave.
    3. Stop turbo option for intel_pstate with “echo -n 1 > /sys/devices/system/cpu/intel_pstate/no_turbo”

    Kind regards,

Laisser un commentaire

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