Faire de sa Fedora un système 100% libre
Fedora, comme la plupart des distributions GNU/Linux, contient une part (plus ou moins importante) de composants non-libres. Il s'agit la plupart de temps de micro-code nécessaire à certains drivers pour fonctionner correctement avec le matériel. Ces composants, bien que propriétaires, sont inclus par défaut dans Fedora car ils peuvent-être cruciaux, par exemple pour un utilisateur dont la connexion à Internet passe par un chipset WiFi demandant un blob. Ces bouts de code (que l'on nomme firmwares, ou blobs) peuvent-être présents dans le système sous la forme de fichiers séparés (que l'on trouve généralement dans /lib/firmware
) mais il peuvent également être inclus au noyau (sous la forme de grands tableaux de chiffres présents dans le code source).
Vous vous demandez peut-être pourquoi je pense qu'il est important de ne pas utiliser ces petites parties de code (et donc de chercher à utiliser un système 100% libre). Mon argument principal est que, ces micro-logiciels contenant certaines instructions pour communiquer avec le matériel, le fait qu'ils ne sont pas libres est une entrave délibérée à la compréhension du fonctionnement interne du matériel. Je pense que de telles entraves ne sont pas admissibles. Alors bien sûr, lorsque j'ai vraiment besoin du matériel (par exemple d'un blob pour le WiFi, si c'est le seul moyen de connexion à Internet disponible), je vais m'en servir, parce-que je pense qu'utiliser une toute petite partie de logiciel non-libre me sera plus bénéfique que de ne rien faire, mais c'est un avis personnel. De plus, si on considère que beaucoup de schémas de l'électronique du matériel que l'on utilise ne sont pas disponibles, on peut également penser qu'il s'agit d'une entrave à notre compréhension du matériel que l'on utilise et que c'est inacceptable. Pourtant, j'utilise quand-même ce matériel.
Mais bien entendu, lorsque ces blobs non-libres ne sont pas ou peu nécessaires, il est meilleur d'utiliser un système 100% libre. Mais si votre machine contient du matériel pour lequel de tels blobs sont nécessaires, il ne vous sera probablement pas bénéfique d'installer un système 100% libre.
Si vous souhaitez savoir si votre matériel sera correctement supporté sans ces composants non-libres, il vous est possible :
- de consulter la base de données h-node, qui regroupe des informations sur le support matériel des systèmes 100% libres
- d'essayer un des systèmes 100% libres, comme Trisquel, sans l'installer
Le matériel problématique sera le plus souvent : les cartes WiFi et certaines cartes graphique :
- Les cartes ATI/AMD demandent, pour la plupart, un blob pour fonctionner correctement avec le pilote libre radeon
- Les cartes nVidia ne requièrent aucun blob avec le pilote nouveau mais celui-ci est encore à un stade expérimental
Maintenant que tout ceci est dit, passons à la pratique. On va commencer par ajouter le dépôt du projet Linux-libre, contenant notamment un noyau sans blobs.
Toutes les opérations sont à effectuer sous l'utilisateur root :
# rpm --import http://linux-libre.fsfla.org/pub/linux-libre/SIGNING-KEY.linux-libre # rpm -i http://linux-libre.fsfla.org/pub/linux-libre/freed-ora/freed-ora-release.noarch.rpm
On va ensuite recréer le cache de la liste des paquets :
# yum makecache
Le dépôt est maintenant installé et configuré. L'étape suivante consiste à lister tous les paquets non-libres installés sur le système. Le dépôt Linux-libre dispose d'un paquet entrant en conflit avec les paquets non-libres de Fedora. Pour l'installer :
# yum install freed-ora-freedom
YUM devrait échouer en listant les paquets créant le conflit. Par exemple :
--> Traitement du conflit : freed-ora-freedom-6-1.noarch entre en conflit avec microcode_ctl […] --> Traitement du conflit : freed-ora-freedom-6-1.noarch entre en conflit avec xorg-x11-drv-ati-firmware --> Traitement du conflit : freed-ora-freedom-6-1.noarch entre en conflit avec rt73usb-firmware […] --> Traitement du conflit : freed-ora-freedom-6-1.noarch entre en conflit avec alsa-firmware
Pour les supprimer, on utilise la commande :
# yum remove *-firmware microcode_ctl
Pourtant, le paquet freed-ora-freedom
ne pourra toujours pas s'installer. En effet, les paquets du noyau Linux (kernel
, kernel-headers
) entrent eux aussi en conflit : il s'agit du noyau Linux contenant des blobs. On va donc installer la version Linux-libre, qui ne contient pas ces blobs :
# yum install kernel-libre kernel-libre-firmware perf-libre
Il faudra ensuite redémarrer la machine et booter sur le kernel-libre (en le sélectionnant dans le GRUB).
On vérifie que l'on a bien démarré sur le kernel-libre (cherchez -libre
dans le nom du kernel) :
$ uname -r 2.6.35.11-libre.83.fc14.i686
Si tout c'est bien déroulé et que l'ordinateur reste utilisable, on peut supprimer les paquets du kernel d'origine :
# yum remove kernel
Il faudra penser à jeter un œil au fichier /boot/grub/menu.lst
pour éventuellement y corriger les erreurs et s'assurer que le kernel-libre démarrera automatiquement.
Vous pouvez maintenant installer le paquet freed-ora-freedom
, qui vous garantira qu'aucun paquet non-libre ne sera réinstallé :
# yum install freed-ora-freedom
Si le paquet kernel-headers
a été installé, il sera nécessaire de le replacer par kernel-libre-headers
pour l'installation de freed-ora-freedom
:
# yum remove kernel-headers
Les dépendances de kernel-headers seront supprimées : gcc glibc-devel glibc-headers libtool
.
On va maintenant installer kernel-libre-headers et les paquets précédemment supprimés :
# yum install kernel-libre-headers gcc glibc-devel glibc-headers libtool
Il sera maintenant possible d'installer le paquet freed-ora-freedom
.