Installation de FreeBSD 10.1 sur un MacBook Air


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 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *240.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Users                   239.7 GB   disk0s2
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *240.1 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                  Apple_HFS Data                    150.0 GB   disk1s2
   3:          Apple_CoreStorage                         88.9 GB    disk1s3
   4:                 Apple_Boot Recovery HD             650.0 MB   disk1s4
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Mountain Lion          *88.6 GB    disk2
                                 Logical Volume on disk1s3
                                 008ED1CE-0D6C-4B29-9121-1B392A327942
                                 Unlocked Encrypted
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk3
   1:                        ZFS                         1.5 TB     disk3s1
   2: 6A945A3B-1DD2-11B2-99A6-080020736631               8.4 MB     disk3s9
/dev/disk4
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *31.0 GB    disk4
   1:                 DOS_FAT_32 SANS TITRE              31.0 GB    disk4s1

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 :

1
2
3
4
5
6
% sudo diskutil unmountDisk /dev/disk4
Unmount of all volumes on disk4 was successful
% sudo dd if=FreeBSD-10.1-RELEASE-amd64-uefi-memstick.img of=/dev/disk4 bs=10m
70+1 records in
70+1 records out
734251520 bytes transferred in 259.937518 secs (2824723 bytes/sec)

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.imgif pour input_file (fichier d’entrée) suivit du chemin vers le fichier image ;
  • of=/dev/disk4of pour output_file (fichier de sortie) suivit du chemin vers le périphérique ;
  • bs=10mbs 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 :

1
2
% sudo diskutil mountDisk /dev/disk4
Volume(s) mounted successfully

  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.

1
2
% sudo diskutil unmountDisk /dev/disk4
Unmount of all volumes on disk4 was successful

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.

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 :

1
2
$ dhclient ue0
...

Mise à jour

Maintenant que nous avons du réseau, nous allons mettre à jour les paquets installés :

1
2
3
# pkg update
...
# pkg upgrade

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.

1
2
3
4
% sudo pkg install sudo
...
% sudo pkg install vim
...

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&nbsp:
1
2
:charset=UTF-8:\
:lang=en_US.UTF-8:

Nous reconstruisons la base de données de connexion à l’aide de la commande :

1
% sudo cap_mkdb /etc/login

Éditons maintenant le fichier /etc/profile pour y ajouter d’autres variables :

1
2
3
LANG=en_US.UTF-8;   export LANG
CHARSET=UTF-8;  export CHARSET
GDM_LANG=en_US.UTF-8;   export GDM_LANG

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.

1
2
3
# pciconf -lv
...
device     = 'BCM43224 802.11a/b/g/n’

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.

1
2
3
# cd /tmp
# ftp ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/10.1-RELEASE/src.txz
# tar -C / -xvf src.txz

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.

1
2
# mkdir /root/kernels
# cd /root/kernels

Et notre fichier va contenir :

1
2
3
4
5
6
include GENERIC
ident ITHILIEN

device  bwi
device  bwn
device  asmc

Et nous allons faire un lien symbolique de notre fichier dans le répertoire de configuration des sources.

1
2
3
4
5
6
7
8
9
# ln -s /root/kernels/ITHILIEN /usr/src/sys/amd64/conf/
# ll /usr/src/sys/amd64/conf/
total 48
-rw-r--r--  1 root  wheel    493 Nov 11  2014 DEFAULTS
-rw-r--r--  1 root  wheel  14187 Nov 11  2014 GENERIC
-rw-r--r--  1 root  wheel    789 Nov 11  2014 GENERIC.hints
lrwxr-xr-x  1 root  wheel     22 Aug 11 06:13 ITHILIEN@ -> /root/kernels/ITHILIEN
-rw-r--r--  1 root  wheel    141 Nov 11  2014 Makefile
-rw-r--r--  1 root  wheel  19247 Nov 11  2014 NOTES

Compiler notre kernel personnalisé

Il est temps de nous jeter dans la fosse aux requins et de construire notre kernel.

1
2
3
4
5
6
# cd /usr/src
# make buildkernel KERNCONF=ITHILIEN
...
--------------------------------------------------------------
>>> Kernel build for ITHILIEN completed on Tue Aug 11 06:45:16 CEST 2015
--------------------------------------------------------------

Il nous reste à installer notre nouveau kernel est à démarrer dessus.

1
# make installkernel KERNCONF=ITHILIEN

Nous devons indiquer au kernel de charger les pilotes bwi (ou bwn) et asmc. Cela se fait dans le fichier /boot/loader.conf :

1
2
3
if_bwi_load="YES"
if_bwn_load="YES"
asmc_load="YES"

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 :

1
2
# uname -a
FreeBSD ithilien 10.1-RELEASE FreeBSD 10.1-RELEASE #1: Tue Aug 11 07:44:57 CEST 2015     root@ithilien:/usr/obj/usr/src/sys/ITHILIEN  amd64

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 :

1
2
# cd /usr/ports/net/bwi-firmware-kmod
# make install clean

  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 :

1
firmware_load="YES"

Sans avoir besoin de redémarrer la machine, nous allons voit si le pilote voit et prend en charge notre carte réseau :

1
# kldload if_bwi

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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
% tar xvf Broadcom_BCM43xx_5.100.235.19_win5x.exex [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/SilentInstall_Driver_Only_XP.bat
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/Notes.txt
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcm43xx.cat
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcm43xx64.cat
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcmwl5.inf
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/setup.iss
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/setup.exe
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcmwlcoi.dll
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcmwlcoi64.dll
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcmwl5.sys
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/bcmwl564.sys
x [wikidrivers.com] Broadcom_BCM43xx_5.100.235.19_win5x/

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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# cd \[wikidrivers.com]\ Broadcom_BCM43xx_5.100.235.19_win5x/
# ndisgen bcmwl5.inf bcmwl564.sys

        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        INF file validation

        This .INF file appears to be Unicode.
        Trying to convert to ASCII...
        Done.

        Press return to continue...
        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Driver file validation

        This .SYS file appears to be in Windows(r) PE format.

        Press return to continue...
        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Driver file conversion

        The script will now try to convert the .INF and .SYS files
        using the ndiscvt(1) utility. This utility can handle most
        .INF files; however, occasionally it can fail to parse some files
        due to subtle syntax issues: the .INF syntax is very complex,
        and the Windows(r) parser will sometimes allow files with small
        syntax errors to be processed correctly which ndiscvt(1) will
        not. If the conversion fails, you may have to edit the .INF
        file by hand to remove the offending lines.

        Press enter to try converting the files now:

        Conversion was successful.

        Press enter to continue...
        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Firmware file conversion

        If your driver uses additional firmware files, please list them
        below. When you're finished, just press enter to continue. (If your
        driver doesn't need any extra firmware files, just press enter
        to move to the next step.)

        >
        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================


        List of files converted firmware files:


        Press enter to continue...
        ==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Kernel module generation


        The script will now try to generate the kernel driver module.
        This is the last step. Once this module is generated, you should
        be able to load it just like any other FreeBSD driver module.

        Press enter to compile the stub module and generate the driver
        module now:

        Generating Makefile... done.
        Building kernel module... done.
        Cleaning up... done.

        The file bcmwl564_sys.ko has been successfully generated.
        You can kldload this module to get started.

        Press return to exit.

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 :

1
# kldload ./bcmwl564_sys.ko

Et les modules qui permettent de le gérer :

1
2
# kldload ndis
# kldload if_ndis

La commande dmesg nous permet de constater le bon chargement de nos modules dans le kernel :

1
2
3
4
5
ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1
ndis0: NDIS API version: 5.0
ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5
ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps

Copie et activation

Nous copions ce fichier dans le répertoire dans lequel le kernel s’attend à le trouver :

1
# cp bcmwl564_sys.ko /boot/modules

Et nous allons modifier le fichier /boot/loader.conf pour charger les modules au démarrage.

1
2
3
4
asmc_load="YES"
ndis_load="YES"
if_ndis_load="YES"
W32DRIVER_SYS_load="YES"

  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 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# pkg install wpa_supplicant
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
Updating database digests format: 100%
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
  wpa_supplicant: 2.4_4

The process will require 1 MiB more space.
347 KiB to be downloaded.

Proceed with this action? [y/N]: y
Fetching wpa_supplicant-2.4_4.txz: 100%  347 KiB 355.0kB/s    00:01
Checking integrity... done (0 conflicting)
[1/1] Installing wpa_supplicant-2.4_4...
[1/1] Extracting wpa_supplicant-2.4_4: 100%
Message for wpa_supplicant-2.4_4:
To use the ports version of WPA Supplicant instead of the base, add:

    wpa_supplicant_program="/usr/local/sbin/wpa_supplicant"

to /etc/rc.conf

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 :

1
2
3
4
network={
    ssid="MaisonSucreeMaison"
    psk="totofaitduvelocipede"
}

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 :

1
2
3
4
5
6
# WiFi config
wpa_supplicant_enable="YES"
wlans_ndis0="wlan0"
wpa_supplicant_program="/usr/local/sbin/wpa_supplicant"
ifconfig_wlan0="WPA DHCP"
wpa_supplicant_conf_file="/etc/wpa_supplicant.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 :

1
bcmwl564_sys_load="YES"

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 :

1
2
3
4
5
mod="bcmwl564_sys"

if ! kldstat -n $mod > /dev/null 2>&1; then
        kldload $mod
fi

Suivi du démarrage de wpa_supplicant :

1
# service wpa_supplicant start

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 :

1
% sudo pkg install xorg

Et puis, nous aurons sans doute besoin d’un bureau. J’aime bien Xfce.

1
% sudo pkg install xfce-4.12_1

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 :

1
2
hald_enable="YES"
dbus_enable="YES"

  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 :

1
2
3
4
xscreensaver -no-splash &
xdg-user-dirs-update &
redshift &
exec starxfce4

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.

1
2
# pkg install slim
# pkg install slim-themes

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 :

1
2
3
sessiondir /usr/local/share/xsessions/
...
current_theme fbsd

Ajouter son démarrage dans /etc/rc.conf :

1
slim_enable="YES"

On change dans le fichier ~/.xinitrc le lancement du gestionnaire de fenêtrage :

1
exec $1

Et nous pouvons le démarrer :

1
# slim start

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 :

1
atp_load="YES"

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.


  1. Depuis fort longtemps maintenant, les Macs démarrent sur l’UEFI↩︎

  2. Le support de UEFI sur FreeBSD est encore récent et à utiliser avec précaution. ↩︎

  3. j’utilise l’excellent SuperDuper↩︎

  4. En effet, Disk Utility aura sans doute beaucoup de mal à utiliser cette image. ↩︎

  5. 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. ↩︎

  6. Pour plus détails sur l’installation, pensez à lire mon article sur le sujet. ↩︎

  7. L’article parle de la configuration de sudo↩︎

  8. Vous trouverez sur ce blog plein d’articles pour apprendre à utiliser vim↩︎

  9. PSK pour Pre Shared Key, le serveur et le client on une clef commune qui permet d’initier le chiffrement des communications. ↩︎

  10. Tor Browser est en fait un Firefox auquel l’extension Tor a été ajoutée. ↩︎

powered by FreeBSD