La distribution ArchlinuxARM est une distribution pour ARM dérivé de l’excellent Archilinux, elle même dérivée de je ne sais plus quoi. Elle a été conçu pour s’adapter avec une relativement bonne précision au matériel utilisé. (dans le cas d’ARM un noyau/firmware par carte et 3 versions des paquets pour ARMv5, ARMv6h (h pour hardfloat) et ARMv7h (hardfloat). Ce qui en fait, à ma connaissance, la seule distribution aussi bien adaptée. Pour une installation rapide pour un ordinateur de bureau, la démarche est un peu plus fastidieuse, à moins d’y apporter ces propres scripts, où d’utiliser, des distributions facilitant l’installation, comme Antergos sur plate-forme x86.
Entre le début de la rédaction de cet article (le 17 juin) et aujourd’hui, j’ai beaucoup progressé sur la compréhension du fonctionnement de la NAND. J’ai donc :
- Réussi à créer une NAND qui fonctionne à partir d’Archlinux ARM, en bidouillant avec plusieurs images.
- Découvert qu’Archlinux est réellement une distribution géniale, d’autant plus en version ARM, je publierais probablement prochainement une image SD pour l’installer automatiquement sur la NAND, avec le noyau 3.4.90, très stable et 3 Go de libre sur la NAND :). (je vais essayer de tenter un noyau 3.16 prochainement)
Sections
- Introduction
- Quelques spécificités d’Archlinux
- Avantages aujourd’hui
- Installation sur Cubieboard2
- Archlinux sur architecture x86, Antergos
- iBus sur Archlinux
- Son système de mise à jour n’est pas basé sur une grosse version tous les n mois, mais plutôt sur une mise à jour partielle et régulière, principalement à chaque sortie de nouvelle version d’un logiciel, où lorsque des patchs de sécurités y ont été ajoutés. Cela permet de la maintenir et de la faire avancer progressivement. En quelques mois d’utilisation tout c’est toujours bien passé. Les changements réguliers liées à ces mises à jour pourraient effrayer au premier regard, au vu des problèmes soulevés par d’autres distribution lors de mise à jour, mais dans la pratique, cela semble mieux fonctionner au contraire. A voir sur le long terme…
- Le gestionnaire de paquet est pacman, voir ici pour l’équivalence des commandes par rapport à apt-get, emerge, yum ou zypper.
- Un dépôt appelé AUR (Archlinux User Repository) permet à des utilisateurs tiers de proposé des applications pas encore validées par la communauté. On les installe à l’aide de yaourt.
- systemd (le système qui réunit init/ibus/udev, etc..), une petite merveille, qui permet de réduire les temps de boot, d’unifier différentes parties du système de démarrage, de remplacer un énorme paquet de scripts shell par quelques binaires, réduisant ainsi les forks de process (réduisant d’autant plus accès disques, allocations mémoires et autre appels systèmes relativement lourds), ainsi que les risques de sécurités liés (une présentation à l’annuel conférence de sécurité du CCC annonce, que cela bloque partiellement la NSA).
- Wayland, qui dé-ralentit le bureau en permettant des accès plus direct à l’API d’affichage, une meilleure centralisation, des pingpong entre les applis et le serveur en moins, une meilleur synchronisation avec l’affiche, bref que du bonheur. Si une grande partie des applications et boîtes à outil graphiques on fait le pas, ça n’est pas encore le cas de toutes.
- Mesa 3D 10.3 avec le support de LLVMpipe, qui le rend très efficace dans l’accélération 3D purement logicielle (bien pratique sur ARM, si on veut de la stabilité opensource, puisque le seul auteur du pilote libre Mali (Lima Driver), qui ne voulait déjà pas l’intégrer à l’arborescence de Mesa, semble avoir abandonner le projet depuis 2 ans).
- Dernières versions de applications serveur : Noyau 3.16 (3.4.90 pour arm/cubieboard2), OpenSSH 6.6 (annonce de 6.7 aujourd’hui), Nginx 1.6.2, nodejs 0.10.32, ruby 2.1.3, php 5.6.2, mysql (disponible seulement en versions percona-5.6.21 et mariadb-10.0.15, plus le mysql d’Oracl plus maintenu).
- Dernières versions des bureaux : Gnome 3.14, Cinnamon 2.2.16 (que j’aime bien, GTK3 et empreinte mémoire similaire à XFCE), XFCE 4.10 (ubuntu à une avance sur ce point avec ses patchs, notamment sur la syncro verticale), KDE 4.14…
- Dernières versions des applications liées à la productivité : Blender (2.72, mais pas encore sur ARM), ffmpeg 2.4.2 (avec support vp9/h.265), gimp 2.8.14, Cairo 1.14 (arrivé au moment où je met à jour l’article, en octobre 2014), ibus 1.5.9, firefox 33, chromium 38, VirtualBox 4.3.18, qemu 2.1.2.
- Script de création de carte SD pour Cubieboard, Cubieboard2 (doit fonctionner sur Cubietruck) et Raspberry Pi (il faudra déjà préparer un système de fichier ext4 sur la carte à l’aide de (c)fdisk ou autre outil similaire.
- la procédure manuelle pour créer le carte : Procédure manuelle, ce qui revient à peu près au même et détaille la procédure de préparation de la carte que ne fait pas le premier script.
Quelques spécificités d’Archlinux
Avantages aujourd’hui
En raison de son système de mise à jour, Archlinux utilise des logiciels très récents. Parmi ceux-ci, on peut citer, en octobre 2014 :
Pour aller plus loin : comparatif avec les autres distributions dur le wiki officiel
Installation sur Cubieboard2
J’ai quasiment tout préparé pour pouvoir faciliter l’installation d’une NAND toute belle sous Arch Linux top-moumoute avec, une fois la base du système bootable installé sur la NAND, une partition système, tenez vous bien, de 3,8 Gio, avec 616 Mio utilisés et 3 Gio de libre.
/dev/nandb 3.8G 616M 3.0G 18% /mnt/nandb
Vous pouvez choisir entre la procédure automatique :
Je suis en train de faire un petit script en shell qui va s’occuper de tout ça pour la Cubieboard2 (installation sur NAND).
Ce qu’il faut savoir : le premier Méga octet (512 octets * 2048 secteurs) que ce soit sur la carte SD et la NAND, contient la table des partitions et le boot initial.
Pour le dumper :
dd if=/dev/xxx of=dump_bootblock.bin bs=512 count=2048
Pour le remettre :
dd of=/dev/xxx if=dump_bootblock.bin
Remplacer /dev/xxx par /dev/sdX
(X=lettre de l’unité) pour la carte SD et par /dev/nand
pour la NAND.
Archlinux sur architecture x86, Antergos
Enfin, j’ai particulièrement apprécié, pour les architectures x86, la distribution Antergos, basée sur Archlinux, mais n’utilisant malheureusement pas les dépôts officiels, il peut y avoir quelques jours de décalage dans les versions de paquet et le support est un peu moins bon que chez les gens d’Archlinux, avant tout passionnés. Il ne vaut mieux pas embêter les utilisateur d’Archlinux avec les problèmes d’Antergos, qui pourrait ne pas être présent dans Archlinux. Cela risquerait de les froisser. Elle est prête à l’emploi, avec les extensions invité Virtualbox pour tester en live dans de très bonnes conditions, et un joli design et tout se fait relativement facilement et automatiquement, contrairement au Archlinux de base qui oblige à apprendre d’avantage les bases du système. Le seul point noir que je lui ai trouvé (par rapport à des distribution comme Ubuntu) : ibus (servant à la saisie des langues complexes) n’est pas démarré par défaut, il est conseillé de bidouiller les scripts d’initialisation du compte.
iBus sur Archlinux
D’après la doc officielle d’Archlinux, il est conseillé de bidouiller des scripts d’initialisation du compte, en ajoutant dans le fichier ~/.xprofile
:
export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibus ibus-daemon -drx
Ubuntu (et probablement Debian/etc/X11/xinit/xinput.d/ibus :
# start IBus # vim: set sts=4 expandtab: # start IBus daemon #/usr/bin/ibus-daemon --daemonize --xim XIM=ibus XIM_PROGRAM=/usr/bin/ibus-daemon XIM_ARGS="--xim" # set variables for the plain XIM XMODIFIERS=@im=ibus GTK_IM_MODULE=xim # use immodule only when available for both GTK 2.0 and 3.0 IM_CONFIG_MARKER2=0 for IM_CONFIG_MARKER in /usr/lib/*/gtk-2.0/*/immodules/im-ibus.so \ /usr/lib/gtk-2.0/*/immodules/im-ibus.so ; do if [ -e $IM_CONFIG_MARKER ]; then IM_CONFIG_MARKER2=1 break fi done IM_CONFIG_MARKER3=0 for IM_CONFIG_MARKER in /usr/lib/*/gtk-3.0/*/immodules/im-ibus.so \ /usr/lib/gtk-3.0/*/immodules/im-ibus.so ; do if [ -e $IM_CONFIG_MARKER ]; then IM_CONFIG_MARKER3=1 break fi done if [ $IM_CONFIG_MARKER2 = 1 ] && [ $IM_CONFIG_MARKER3 = 1 ] ; then GTK_IM_MODULE=ibus fi QT_IM_MODULE=xim # use immodule when available for Qt4 (Qt3 has been long dead) for IM_CONFIG_MARKER in /usr/lib/*/qt4/plugins/inputmethods/libqtim-ibus.so\ /usr/lib/qt4/plugins/inputmethods/libqtim-ibus.so ; do if [ -e $IM_CONFIG_MARKER ]; then QT_IM_MODULE=ibus break fi done CLUTTER_IM_MODULE=xim # use immodule when available for clutter for IM_CONFIG_MARKER in /usr/lib/*/clutter-imcontext/immodules/im-ibus.so \ /usr/lib/clutter-imcontext/immodules/im-ibus.so; do if [ -e $IM_CONFIG_MARKER ]; then CLUTTER_IM_MODULE=ibus break fi done DEPENDS="ibus, ibus-gtk|ibus-qt4|ibus-clutter"