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 :

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.

Vus : 2605
Publié par PaulK : 9