Libérer son Mac - Présentation du librintosh

Soumis par skunt le lun 11/05/2020 - 23:07

Cet article explique pourquoi et comment j'ai supprimé le système macOs de mon MacBook Pro pour installer GNU linux à la place. Cela fait suite à ce tweet datant d'il y a déjà plus d'un an ! Il est donc temps de rédiger ce qui me reste encore en tête et d'y inclure les liens qui m'ont été utiles. En espérant que cela puisse servir à d'autres...

 

Debian 9 Stretch sur MacBook Pro

Contexte

J'ai dû jouer avec des distributions GNU linux à partir des années 2000-2003, en testant divers live cd. Pour autant, étant musicien et très attiré par certains logiciels dont je ne pouvais retrouver d'alternative libre (Antescofo par exemple), je choisis de tester l'univers "Mac" en achetant un MacBook Pro. Ne crachons pas dans la soupe, le matériel est d'excellente qualité (le chassis tout alu ne chauffe quasiment pas par exemple) et macOs, une fois la logique acquise, apporte - je le concède - confort et simplicité. Et 5 années passent... Mais ce qui ne passe pas, c'est l'envie de "bidouiller" comme auparavant avec les distributions GNU linux que je passais au crible : interconnecter les programmes audio via Jack, configurer son environnement de travail exactement comme on le souhaite ; et utiliser des logiciels libres qui fonctionnent moins... "naturellement" sous macOs (Inkscape pour n'en citer qu'un). Mais surtout, mes aspirations relatives aux libertés numériques n'ont fait que se renforcer, jusqu'à ne plus pouvoir supporter un système propriétaire qui me prive de certaines possibilités d'action et qui m'impose une logique commerciale et d'obsolescence programmée ! De là à tenter un GNU linux sur le MacBook, il n'y avait plus qu'un pas. Allons-y !

Pour info, installez le système macOs sur un matériel autre qu'Apple et vous obtenez un hackintosh. Comme souvent, je fais donc l'inverse : je garde le matériel Apple et j'y installe un système libre. Je l'ai donc baptisé en toute logique librintosh :)

 

Choix de la distribution

Mon choix s'est porté sur deux distributions : Debian puis Ubuntu. Debian car c'est LA distribution éprouvée, non commerciale, et que je connais un peu. Je me dis que si Debian fonctionne sur le MacBook, alors ce sera gagné. Chose faite avec Debian 9 Stretch. J'ai ensuite installé Ubuntu (une dérivée de Debian) 19.04 puis 19.10 Eoan, pour sa version Studio qui correspond de très près à ce dont j'ai besoin comme configuration, notamment avec son noyau basse latence. Ubuntu comporte également une grande communauté, donc de nombreuses ressources disponibles et quelques pilotes propriétaires au cas où... La suite de l'article est basée sur Ubuntu Studio, mais le déroulement et les diverses issues sont, de mémoire, peu ou prou les mêmes que pour la première installation de test de Debian.

 

Quel MacBook ?

C'est un MacBook Pro de mi-2014, 13 pouces, processeur 3.0GHz Dual-core Intel Core i7, Ram 16GB 1600MHz DDR3L SDRAM, SSD 500Go, Écran Rétina, carte graphique Intel Iris, macOS 10.14 Mojave. Cette configuration d'origine est devenue après installation :

Résumé
Ordinateur
Processeur Intel(R) Core(TM) i7-4578U CPU @ 3.00GHz
Mémoire 16304MB (2353MB utilisé)
Machine Type Notebook
Systeme d'exploitation Ubuntu 19.10
Utilisateur skuntzmann (skuntzmann)
Date/Heure lun. 11 mai 2020 23:01:07 CEST
Affichage
Résolution 1440x900 pixels
OpenGL Renderer Mesa DRI Intel(R) Haswell
X11 Vendor The X.Org Foundation
Audio Devices
Adapteur Audio HDA-Intel - HDA Intel HDMI
Adapteur Audio HDA-Intel - HDA Intel PCH
Systeme d'exploitation
Kernel Linux 5.3.0-51-lowlatency (x86_64)
Version #44-Ubuntu SMP PREEMPT Wed Apr 22 21:54:38 UTC 2020
C Library GNU C Library / (Ubuntu GLIBC 2.30-0ubuntu2.1) 2.30
Distribution Ubuntu 19.10
Ordinateur librintosh
Utilisateur skuntzmann (skuntzmann)
Language fr_FR.UTF-8 (fr_FR)
Dossier Home /home/skuntzmann
durée de fonctionnent 21 minutes
Load Average 0,53, 0,61, 0,50
Available entropy in /dev/random 3889 bits (healthy)

 

Modules du kernel

Loaded Modules
rfcomm Bluetooth RFCOMM ver 1.11
cmac CMAC keyed hash algorithm
bnep Bluetooth BNEP ver 1.3
joydev Joystick device interfaces
btusb Generic Bluetooth USB driver ver 0.8
btrtl Bluetooth support for Realtek devices ver 0.1
btbcm Bluetooth support for Broadcom devices ver 0.1
btintel Bluetooth support for Intel devices ver 0.1
bluetooth Bluetooth Core ver 2.22
input_leds Input -> LEDs Bridge
ecdh_generic ECDH generic algorithm
bcm5974 Apple USB BCM5974 multitouch driver
intel_rapl_msr Driver for Intel RAPL (Running Average Power Limit) control via MSR interface
mei_hdcp MEI HDCP
snd_hda_codec_cirrus Cirrus Logic HD-audio codec
snd_hda_codec_generic Generic HD-audio codec parser
snd_hda_codec_hdmi HDMI HD-audio codec
ledtrig_audio LED trigger for audio mute control
snd_hda_intel Intel HDA driver
snd_intel_nhlt Intel NHLT driver
intel_rapl_common Intel Runtime Average Power Limit (RAPL) common code
snd_hda_codec HDA codec core
snd_hda_core HD-audio bus
snd_hwdep Hardware dependent layer
x86_pkg_temp_thermal X86 PKG TEMP Thermal Driver
snd_pcm Midlevel PCM code for ALSA.
intel_powerclamp Package Level C-state Idle Injection for Intel CPUs
snd_seq_midi Advanced Linux Sound Architecture sequencer MIDI synth.
snd_seq_midi_event MIDI byte <-> sequencer event coder
applesmc Apple SMC
input_polldev Generic implementation of a polled input device
coretemp Intel Core temperature monitor
snd_rawmidi Midlevel RawMidi code for ALSA.
irqbypass IRQ bypass manager utility module
snd_seq Advanced Linux Sound Architecture sequencer.
snd_seq_device ALSA sequencer device management
snd_timer ALSA timer interface
cfg80211 wireless configuration support
snd Advanced Linux Sound Architecture driver for soundcards.
bdc_pci BRCM BDC USB3 PCI Glue layer
mei_me Intel(R) Management Engine Interface
sbs Smart Battery System ACPI interface driver
mei Intel(R) Management Engine Interface
acpi_als ACPI Ambient Light Sensor Driver
soundcore Core sound module
industrialio Industrial I/O core
sbshc ACPI SMBus HC driver
apple_bl Apple Backlight Driver
cuse Character device in Userspace
parport_pc PC-style parallel port driver
ip_tables IPv4 packet filter
x_tables {ip,ip6,arp,eb}_tables backend module
dm_crypt device-mapper target for transparent encryption / decryption
hid_generic HID generic driver
usbhid USB HID core driver
crct10dif_pclmul T10 DIF CRC calculation accelerated with PCLMULQDQ.
ghash_clmulni_intel GHASH Message Digest Algorithm, accelerated by PCLMULQDQ-NI
i915 Intel Graphics
aesni_intel Rijndael (AES) Cipher Algorithm, Intel AES-NI instructions optimized
aes_x86_64 Rijndael (AES) Cipher Algorithm, asm optimized
cryptd Software async crypto daemon
i2c_algo_bit I2C-Bus bit-banging algorithm
drm_kms_helper DRM KMS helper
syscopyarea Generic copyarea (sys-to-sys)
i2c_i801 I801 SMBus driver
sysfillrect Generic fill rectangle (sys-to-sys)
sysimgblt 1-bit/8-bit to 1-32 bit color expansion (sys-to-sys)
ahci AHCI SATA low-level driver
lpc_ich LPC interface for Intel ICH
fb_sys_fops Generic file read (fb in system RAM)
libahci Common AHCI SATA low-level routines
drm DRM shared core routines
video ACPI Video Driver

 

DualBoot ou table rase ?

L'idée de départ était de conserver macOs et d'installer GNU linux en dualboot. Mais c'était sans compter la gestion calamiteuse de BootCamp, l'utilitaire de partitionnement qui refuse obstinément de récupérer la place disponible une fois libérée. Je n'irais pas jusqu'à dire qu'Apple rend la tâche impossible, mais cela y ressemble fortement. Cette difficulté m'a donc convaincu que je n'avais aucun intérêt à conserver une partition macOs sur cette machine. Qu'elle aille au diable !

N'étant pas un spécialiste, j'ai dû me faire épauler par macomaniac du forum macg.co pour arriver à débloquer la situation et bien repartitionner le disque dur (le fil de discussion est ici). Un grand merci à lui !

Avec le premier test d'installation de Debian, j'avais installé au préalable rEFInd, un boot loader. L'installation d'Ubuntu se fait avec GRUB.

 

Pour rappel, pour choisir sur quoi booter avec un macbook, pressez la touche C au démarrage.

 

Liens utiles :

https://wiki.debian.org/MacBookPro

https://doc.ubuntu-fr.org/macbook_pro_11.1

https://doc.ubuntu-fr.org/installation_macbook_sans_macosx

https://ipom.fr/2019/05/31/comment-installer-ubuntu-sur-un-macbook-pro/

https://www.lifewire.com/dual-boot-linux-and-mac-os-4125733

https://doc.ubuntu-fr.org/dual_boot_macos_x_ubuntu (pour un dualboot)

https://www.dz-techs.com/fr/install-linux-macbook-pro

 

Installer GNU linux

Sous mac, avec UNetbootin, je prépare une clé USB d'Ubuntu Studio, puis je boot dessus lors du prochain démarrage. Il n'y a plus qu'à suivre les étapes de l'installateur.

Précédemment, l'installation de Debian s'était appuyée sur l'expérience de Jean-Baptiste Fabre : https://blog.jbfavre.org/2015/03/06/Debian-Jessie-sur-un-Macbook-Pro-11-1/. Merci à lui pour ce tutoriel.

 

Autre liens utiles :

https://www.cberner.com/2017/12/03/installing-ubuntu-17-10-macbook-pro-retina-mid-2012/

https://laptop.ninja/how-to-install-ubuntu-on-a-macbook-pro/

 

Configuration

Une fois la distribution installée, voici ce qui fonctionne tout de suite : mappage du clavier et rétro-éclairage, luminosité de l'écran, bluetooth, usb, thunderbold. L'autonomie de la batterie est de 5h45 en moyenne. Le niveau de batterie diffère d'environ 5% avec macOs, la charge complète est même indiquée à 86% (lien utile si besoin concernant la gestion de l'énergie).

 

  • Mappage du clavier

Le fichier de configuration est ici : /etc/default/keyboard

# KEYBOARD CONFIGURATION FILE
XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT="mac"
XKBOPTIONS=""
BACKSPACE="guess"
 

Clavier librintosh

 

  • Luminosité de l'écran

Liens utiles

https://doc.ubuntu-fr.org/retro-eclairage (paquet xbacklight, non utilisé dans mon cas)
https://debian-facile.org/viewtopic.php?id=20310

 

 

Ce qui nécessite une action particulière :

  • Wifi

Pour Ubuntu, à l'installation (de mémoire), on peut installer un pilote additionnel. Pour Debian, il faudra le faire manuellement.

La carte wifi est une Broadcom BCM4360. Pour identifier la carte :

lspci -vvnn | grep -A 9 Network 

 

Liens utiles :

https://orville.thebennettproject.com/articles/installing-ubuntu-14-04-lts-on-a-2011-macbook-pro/

https://help.ubuntu.com/community/WifiDocs/Driver/bcm43xx

 

  • TouchPad

Voir ces deux liens pour bien le configurer :

https://wiki.debian.org/MacBook#For_MacBook_Aluminum_.28late_2008.29

https://wiki.debian.org/fr/SynapticsTouchpad#libinput
 

 

  • Sortie SPDIF allumée en permanence

Pour l'éteindre, lancer dans un terminal (et l'ajouter à votre fichier /etc/rc.local pour rendre ce réglage permanent) :

/usr/bin/hda-verb /dev/snd/hwC1D0 0x0e SET_POWER_STATE 0x03

 

  • Magic mouse

Liens utiles

https://wiki.ubuntu.com/Multitouch/AppleMagicMouse
https://askubuntu.com/questions/261791/how-to-set-the-scroll-speed-of-apple-magic-mouse (vitesse du scroll)
https://www.shareannonce.com/david/tutorial/2c7 (si besoin)

 

  • Gestion du lecteur SuperDrive

Pour le faire fonctionner, il faut installer le paquet sg3-utils et lancer cette commande pour l'activer :

sg_raw /dev/sr0 ea 00 00 00 00 00 01

 

Le paquet Pommed permet également de gérer le lecteur, aisni que les raccourcis clavier, rétroéclairage, etc.

 

Lien utile

https://apple.stackexchange.com/questions/135757/will-superdrive-work-on-macbook-air-with-ubuntu

 

Ce qui n'est pas entièrement résolu :

  • Webcam - non reconnue nativement par Ubuntu - On attaque un point noir !!

Le point de départ est encore une fois le blog de Jean-Baptiste Favre (lien). L'idée est d'installer un driver pour la caméra du MacBook FacetimeHD (Broadcom 0x1570) PCIe. La procédure est décrite pour Debian, mais elle peut s'appliquer également à Ubuntu. Attention toutefois à l'étape de génération des paquets, avec les commandes suivantes :

git clone https://github.com/jbfavre/bcwc_pcie.git
cd bcwc_pcie
git clone debian
gbp buildpackage -us -uc --git-debian-branch=debian

 

À la 3ème commande, j'obtenais une erreur :

:fatal: le dépôt 'debian' n'existe pas

 

L'auteur m'a précisé alors de remplacer cette 3ème commande par :

git checkout debian

 

Si cela ne fonctionne pas de suite comme ce fut mon cas, visitez ce lien sur Github, qui est une mine d'or pour débugger comme dans mon cas avec ce qui suit.  Bravo et merci à Patrik Jackobsson au passage.

 

Une fois ce pilote installé et chargé, la caméra ne fonctionne toujours pas. On réussie à l'activer en déchargeant le module bcd_pci :

 

modprobe -r bdc_pci

 

Pour le décharger à chaque démarrage, on ajoute un nouveau fichier dans /etc/modprobe.d :

# ne charge pas automatiquement au démarrage le module facetime d'origine
blacklist bdc_pci

 

Et pour charger le module facetimehd à chaque démarrage, on ajoute la ligne suivante au fichier /etc/modules-load.d/modules.conf :

facetimehd

 

Pour des raisons que je ne saurais expliquer, la caméra ne fonctionne pas avec tous les logiciels. Ainsi, on peut régler deux "états" différents en fonction que l'on souhaite activer la caméra pour tout ce qui fonctionne avec le webRTC ou avec des programmes tels que Cheese par exemple. Cela se fait en changeant la valeur par 0 ou 1 dans le fichier : /etc/modprobe.d/facetimehd.conf

options facetimehd enable_chromium_workaround=1

 

  • Sortie de veille / hibernation

Si le librintosh a le malheur de se mettre en veille, alors le redémarrage ressemblera à une roulette russe, mais avec aucune balle manquante : ça freeze à l'écran de connexion, quasiment à chaque fois :( Redémarrer en appuyant sur la touche esc durant le son de démarrage affiche l'écran de Grub. On choisit démarrer avec options, on appuie deux fois sur la flèche du bas puis Entrée et on obtient la restauration. On redémarrage ensuite normalement et c'est reparti. Je n'ai pas pour le moment pas su améliorer ce point.

 

Conclusion

En mettant un peu les mains dans le cambouis comme on dit, on arrive à obtenir un GNU linux tout à fait fonctionnel sur le MacBook Pro. Avec sa configuration matérielle, l'ensemble est très réactif. Cette installation nécessite tout de même d'être à l'aise avec les distributions linux en général et la ligne de commande en particulier. Le partitionnement du disque au préalable, le pilote de la webcam et la sortie de veille sont les trois points noirs que je retiens et qui ont nécessité d'y passer beaucoup de temps. J'espère que cet article vous en fera gagner ! Pour le reste, cela fonctionne à merveille !

N'hésitez pas à réagir à ce retour d'expérience, les commentaires sont ouverts !

Étiquettes

Ajouter un commentaire

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.