Où l’on va voir comment se débarrasser de Mac OS X tout en conservant un bon vieux matos qui marche. Et se rendre compte que tout ne marche pas.
Je fais cette installation sur mon MacBook Air 11" early 2011. Il y a des chances pour que cela fonctionne sur un matériel plus récent.
Les prérequis
Voici la liste des prérequis pour cette installation :
- une forte envie de le faire ;
- des sauvegardes de votre machine. Si quelque chose tournait mal, il est préférable d’avoir une sauvegarde récente du système que vous allez supprimer ;
- une clef USB d’au moins 8Go. C’est sur celle-ci que nous allons mettre l’image FreeBSD qui va nous servir à l’installation ;
- l’image de FreeBSD spécialement faite pour UEFI 1 2 ;
- ne pas avoir peur de la ligne de commandes et des terres inconnues ;
- des sauvegardes de votre système et de vos données3.
Mettre l’image sur la clef USB
Nous devons repérer quel est de périphérique utilisé par notre clef USB insérée dans notre machine.
Trouver le périphérique de la clef USB
Nous allons utiliser le Terminal et la commande diskutil list :
|
|
Ma clef est utilise le périphérique /dev/disk4, c’est une clef de 32GB, avec une partition de type DOS_FAT_32 et qui porte le nom SANS TITRE.
Nous devons aussi connaitre le chemin vers notre image. La mienne est dans /Users/jacques/Download.
Décompresser l’image de FreeBSD téléchargée
Décompressons cette image en double-cliquant dessus.
Le résultat est un fichier nommé FreeBSD-10.1-RELEASE-amd64-uefi-memstick.img.
Copie du fichier image sur la clef USB
Nous allons utiliser le terminal pour plus de commodité4. Nous devons démonter notre clef, sans l’éjecter. Elle n’apparaitra plus dans le Finder, mais sera toujours présente pour le système. Ensuite, avec la commande dd, nous ferrons la recopie :
|
|
Ce qui se traduit par :
- dd → c’est la commande, le reste ce sont les paramètres ;
- if=FreeBSD-10.1-RELEASE-amd64-uefi-memstick.img →if pour input_file (fichier d’entrée) suivit du chemin vers le fichier image ;
- of=/dev/disk4→of pour output_file (fichier de sortie) suivit du chemin vers le périphérique ;
- bs=10m→bs pour block_size (taille de bloc) suivit d’un ciffre et d’une unité, ici 10m, le bloc de donnée lu sur l’image est transféré sur la clef est de 10Mo.
On peut vérifier le résultat de notre opération en remontant la clef USB :
|
|
si vous faites ce montage de puis Disk Utilities, vous verrez que 3 partitions ne sont pas montées. Elles sont dans le format UFS que OSX ne supporte plus depuis la version 10.5.
Démontons notre clef USB, c’est maintenant que les choses drôles vont commencer.
|
|
ATTENTION : Avez-vous fais et vérifiez vos sauvegardes ? Je veux vraiment, pas juste “Oui oui, bien sûr que j’ai une sauvegarde pour qui me prend-t-il ?”. Je veux que maintenant, en même temps que moi, que vous vérifiez votre savegarde.
Démarrage de la machine cible sur la clef USB
Avant de démarrer, on s’assure que la machine est bien reliée au réseau électrique. Imaginer les conséquences d’une panne de courant durant l’installation.
Machine éteinte, nous insérons la clef dans l’un des ports USB de la machine cible, nous lançons le démarrage et nous appuyons sur la touche Alt afin d’obtenir le Startup Manager.
Nous allons choisir de démarrer depuis EFI boot, qui est notre clef USB5.
Ensuite, la Mac démarre “normalement” et on finit par arriver sur le premier choix qui nous propose :
- l’installation ;
- l’ouverture d’un shell
- de jouer avec le “live CD”, autrement dit, de charger FreeBSD en mémoire et de vous laisser explorer sans écrire sur le disque dur de la machine.
Choisissons l’installation et laissons nous guider.
Il nous sera impossible d’utiliser ZFS. En effet, UEFI est encore incapable de booter depuis une partition en ZFS.
Dans les options de paquets à installer, penser à y inclure les sources, nous en auron besoin pour la suite.
Si tout ce passe bien6, vous allez finir par rebooter et vous retrouver devant le prompt de connexion.
La suite
Notre machine démarre et fonctionne, mais n’est pas très conviviale. Nous allons donc ajouter des morceaux qui font la rendre plus sympathique.
Le réseau
Nous allons avoir besoin du réseau et le WiFi ne fonctionne pas encore bien. Nous allons donc brancher un adaptateur USB <-> Ethernet. La commande ifconfig va nous donner son nom. Chez moi, il s’agit de ue0. Avec cette indication, nous allons pouvoir demander au serveur DHCP de notre box, un adresse IP :
|
|
Mise à jour
Maintenant que nous avons du réseau, nous allons mettre à jour les paquets installés :
|
|
Les outils essentiels
Il y a au moins deux outils essentiels à installer :sudo, qui permet de prendre une autre identité 7 (typiquement root) et vim, l’éditeur de texte8.
|
|
Définition de quelques variables d’environnement
Nous allons dès à présent définir des variables d’environnement comme les locales, c’est-à-dire le jeu de caractères, le symbole de la monnaie, etc.
Passage en UTF-8
Pour utiliser UTF-8 et faire en sorte que tous les utilisateurs aient les réglages, nous allons commencer par éditer le fichier /etc/login.conf. Nous allons modifier ajouter les lignes suivantes :
- à la fin de la ligne :umask=022:, nous ajoutons un back_slash (\)
- puis nous ajoutons les lignes :
|
|
Nous reconstruisons la base de données de connexion à l’aide de la commande :
|
|
Éditons maintenant le fichier /etc/profile pour y ajouter d’autres variables :
|
|
le pilote WiFi
Après avoir discuté sur twitter de cet article, il appert qu’un pilote existe pour ma carte WiFi, une Broadcom BCM43xx. Il s’agit du driver bwi.
Trouver le modèle de carte WiFi
Il est nécessaire, pour éviter des manipulations longues et sources d’erreurs de connaitre le type de carte WiFi embarquée dans votre Mac. En effet, j’ai galéré avec les deux pilotes décrits ci-après pour me rendre compte qu’aucun des deux ne pouvait prendre en charge mon matériel.
|
|
Recherchez dans les pages de manuel de bwi(4) et de bwn(4) si votre carte est supportée. La mienne, une Broadcom BCM43224 ne l’est pas. On apprend ici que cette puce n’est pas documentée et que son support ne peut donc pas être assuré. Mais il existe une solution. Celle-ci peut faire peur, mais elle fonctionne. FreeBSD fournit un mécanisme pour utiliser des pilotes qui viennent de Microsoft Windows©. Pour cela, rendez-vous directement à ndis.
Mise en place d’un pilote bwi ou bwn
Nous allons donc mettre en place l’un de ces pilotes. Pour cela, nous allons devoir compiler notre propre kernel.
il existe un autre pilote, pour les carte plus récentes, nommé bwm
La configuration du kernel
Nous allons avoir besoin des sources du système. Pour savoir si vous les avez installés, vérifiez que le répertoire /usr/src/sys n’est pas vide. Si c’est le cas, vous allez devoir télécharger une archive les contenants et la décompresser.
|
|
Trouver la bonne architecture
Dans /usr/src/sys se trouvent plusieurs répertoires, un par architecture supportée par le kernel (et vous pouvez voir qu’il y en a pléthore). La notre est amd64. Dans le répertoire amd64,comme dans tous les autres répertoires, se trouve un répertoire conf qui contient les fichiers de configuration de kernel.
Définir notre fichier de configuration
La configuration actuelle est décrite dans le fichier GENERIC.
Attention : il est TOTALEMENT EXCLUS de faire des changements dans GENERIC. En cas de pépin, nous serions ravi d’air un fichier de configation qui fonctionne.
Nous allons plutôt exploiter la possibilité d’inclure des fichiers de configuration et créer le notre, qui inclura GENERIC. Il y a ainsi moins de risque d’endommager le fichier GENERIC. Notre fichier ne sera pas non plus dans l’arborescence des sources pour éviter son écrasement àla mise à jour de ces dernières.
|
|
Et notre fichier va contenir :
|
|
Et nous allons faire un lien symbolique de notre fichier dans le répertoire de configuration des sources.
|
|
Compiler notre kernel personnalisé
Il est temps de nous jeter dans la fosse aux requins et de construire notre kernel.
|
|
Il nous reste à installer notre nouveau kernel est à démarrer dessus.
|
|
Nous devons indiquer au kernel de charger les pilotes bwi (ou bwn) et asmc. Cela se fait dans le fichier /boot/loader.conf :
|
|
Si vous arrivez à avoir le prompt de connexion, vous n’avez pas tout perdu, votre kernel fonctionne.
Assurons-nous d’avoir démarré sur le bon kernel :
|
|
Compilation et installation du firmware
Pour fonctionner, notre pilote à besoin d’un firmware. Il nous fut le compiler et l’installer. Cela se fait dans /usr/ports/net/bwi-firmware-kmod :
|
|
Si votre matériel utilise le pilote bwn, vous devrez faire la même chose, mais dans /usr/ports/net/bwn-firmware-kmod
De là à dire que le WiFi est pris en compte, il ne faut pas exagérer, mais nous allons regarder cela. On ajoute dans /boot/loader.conf la ligne qui correspond au chargement du firmware :
|
|
Sans avoir besoin de redémarrer la machine, nous allons voit si le pilote voit et prend en charge notre carte réseau :
|
|
Normalement, vous devriez voir dans la sortie de la commande ifconfig, une nouvelle interface réseau, bwi0, celle du WiFi. Si c’est le cas, bravo, vous avez votre interface réseau. Si ce n’est pas la cas, manque de chance, votre matériel utilise une puce réseau qui n’est pas prise en compte. C’est le cas sur mon MacBook Air.
Utilisation de ndis
Nous allons devoir récupérer les pilotes de Windows©, et les transformer en modules noyau, les charger dans le noyau et faire marcher le WiFi.
pour cette opération, vous aurez besoin des sources du kernel.
Téléchargement des pilotes Windows©
Vous trouverez ces pilotes sur le site de WikiDrivers.
J’ai pris l’archive pour Windows2000/XP 32/64 bits.
ATTENTION : les fichiers sont stockés sur un espace “match” se qui rend le téléchargement assez pénible. Je ne me sens toutefois pas le droit de les diffuser depuis ce blog.
Décompression de l’archive
Déposez (si ce n’est déjà fait) votre archive (un .exe) sur votre FreeBSD. C’est lui qui va faire la décompression de l’archive.
|
|
Et vous devriez avoir obtenu un répertoire [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x qui contient tous ce dont ndisgen a besoin pour générer notre pilote, à savoir le fichier .info qui décrit le pilote et le fichier .sys qui est le binaire du pilote.
Génération du pilote
Nous avons tout ? Alors c’est parti pour la commande ndisgen. Celle-ci va nous poser plusieurs questions.
|
|
Je me suis contenté de faire Entrée à chaque question. Vous devriez découvrir un nouveau fichier, bcmwl564_sys.ko, notre module kernel.
Chargement pour vérifier
Nous allons charger le module dans notre kernel pour nous assurer que notre carte WiFi est vue.
Le pilote en lui même :
|
|
Et les modules qui permettent de le gérer :
|
|
La commande dmesg nous permet de constater le bon chargement de nos modules dans le kernel :
|
|
Copie et activation
Nous copions ce fichier dans le répertoire dans lequel le kernel s’attend à le trouver :
|
|
Et nous allons modifier le fichier /boot/loader.conf pour charger les modules au démarrage.
|
|
toutes ces informations sont issues du Handbook, la documentation officielle de FreeBSD.
Configuration du WiFi
Nous allons maintenant configurer le WiFi en installant le logiciel réseau et en le configurant. Le logiciel, c’est wpa_supplicant :
|
|
Commençons par suivre les instructions en ajoutant la ligne indiquée dans le fichier /etc/rc.conf. Puis, créons le fichier de configuration /etc/wpa_supplicant. Ce ficher est assez simple puisqu’il indique comme se connecter au WiFi. Dans mon cas j’utilise du WPA+PSK, je doit donc mettre le SSID et la clef PSK9 :
|
|
Vous trouverez d’autres exemples de fichiers wpa_supplicant dans la page de manuel de wpa_supplicant.conf.
Réseau au démarrage
Pour avoir le réseau au démarrage, nous allons modifier le fichier /etc/rc.conf :
|
|
Chargement du pilote au démarrage
J’ai un problème pour charger le module kernel au démarrage. En toute logique il faut ajouter dans /boo/loader.conf la ligne :
|
|
Mais sur ma machine cela provoque un crash qui redémarre la machine. Et forcément, recrash, nouveau démarrage… Je n’ai pas encore de bonne solution. J’ai fait un petit script /etc/start.if_ndis0 qui charge le module si ce n’est pas déjà fait :
|
|
Suivi du démarrage de wpa_supplicant :
|
|
Et, pour l’instant, ça fait la blague.
Un petit peu de graphiques
Je ne vais pas vous laisser sans interface graphique. Le minimum est fourni par xorg :
|
|
Et puis, nous aurons sans doute besoin d’un bureau. J’aime bien Xfce.
|
|
Pour démarrer le bureau, utilisez la commande starxfce4.
Toutefois, pour avoir un minimum de confort, nous devons ajouter quelques éléments. Dans /etc/rc.conf pour commencer :
|
|
D-Bus est un mécamisme de dialogue inter-process et HAL permet la détection du matériel (par exemple l’insertion d’une clef USB).
Normalement, le lancement de l’interface graphique se fait après s’être connecté, avec la commande appropriée (dans le cas de Xfce4, il s’agit de starxfce4). On peut placer dans le fichier ~/.xinitrc les éléments que l’on veut voir lancés au démarrage de la session graphique :
|
|
Il est ben sûr possible d’avoir la console graphique dès le démarrage de machine (ou presque). Pour cela, nous allons utiliser slim. slim est un gestionnaire de connexion agnostique. C’est-à-dire qu’il n’est pas lié à un gestionnaire de fenêtrage particulier, mais peut au contraire dialoguer avec tous.
|
|
Nous devons le configurer, dans le fichier /usr/local/etc/slim.conf en indiquant de chemin vers le répertoire session des gestionnaires de fenêtrage :
|
|
Ajouter son démarrage dans /etc/rc.conf :
|
|
On change dans le fichier ~/.xinitrc le lancement du gestionnaire de fenêtrage :
|
|
Et nous pouvons le démarrer :
|
|
D’autres éléments
Vous aurez sans doute besoin d’installer un navigateur Firefox est un bon choix, même si Tor Browser est préférable pour le respect de la vie privée10.
Pensez à Thunderbird pour le courrier électronique, avec l’extension enigmail pour signer et chiffrer les messages avec GPG.
Pour Twitter, j’ai opté pour le client KDE choqok.
Le “TouchPad”
Le “TouchPad” du Mac est géré grâce au module atp qu’il suffit de charger au démarrage, dans /boot/loader.conf :
|
|
Gestion du SMC (System Management Controller)
Cette puce qui est en charge de la batterie, des ventilateurs, de la luminosité du clavier, etc., est gérée par le module asmc. Malheureusement, mon MacBook Air (4,1) n’est pas géré. Il faut se pencher sur l’équivalent pour Linux pour voir si celle-ci est prise en charge et faire le portage. Je ne m’en sens pas les compétences.
Conclusion
Se passer de OSX est faisable, que l’on choisisse Linux ou BSD. La manœuvre n’est pas aisée et on perd une grande partie du confort que l’on avait. Mais justement, sortir de sa zone de confort, c’est aussi sortir de l’encroutement.
-
Depuis fort longtemps maintenant, les Macs démarrent sur l’UEFI. ↩︎
-
Le support de UEFI sur FreeBSD est encore récent et à utiliser avec précaution. ↩︎
-
j’utilise l’excellent SuperDuper. ↩︎
-
En effet, Disk Utility aura sans doute beaucoup de mal à utiliser cette image. ↩︎
-
Oui, l’image est mauvaise. Mais il n’y a pas moyen de faire de capture d’écran, j’ai donc pris cette photo, avec un bras dans le plâtre et mon iPhone. ↩︎
-
Pour plus détails sur l’installation, pensez à lire mon article sur le sujet. ↩︎
-
Vous trouverez sur ce blog plein d’articles pour apprendre à utiliser vim. ↩︎
-
PSK pour Pre Shared Key, le serveur et le client on une clef commune qui permet d’initier le chiffrement des communications. ↩︎
-
Tor Browser est en fait un Firefox auquel l’extension Tor a été ajoutée. ↩︎