Category Archives: librisme

Tester un système Linux RISC-V avec qemu sur ARM et ArchLinuxARM

There is also an english tutorial with more informations here

Pour cela, on peut utiliser la distribution Busybear-linux, très limitée, mais déjà bien pour un premier test de Qemu avec RISC-V (Site officiel, le CPU à sources ouvertes et sous license libre). il a l’avantage de fournir un système pré-compilé, prêt à l’emploi ici : github.com/michaeljclark/busybear-linux/releases

Les deux fichiers indispensables sont :
* bbl.bz2 = boot
* busybear.bin.bz2 = système

Récupérer les fichiers de busybear et les décompresser :

ver=1.0
wget https://github.com/michaeljclark/busybear-linux/releases/download/v$ver/bbl.bz2
wget https://github.com/michaeljclark/busybear-linux/releases/download/v$ver/busybear.bin.bz2
bzcat bbl.bz2 >bbl
bzcat busybear.bin.bz2 >busybear.bin

Les explications que j’ai récupéré viennent du le wiki d’arch pour le périphérique réseau : //wiki.archlinux.fr/Qemu car BusyBear donne des instruction pour des anciens systèmes Debian/Ubuntu (avant le passage à Netplan).

Sur archlinux(ARM) nous avons donc besoin d’uml_utilities qui se trouve dans la grande yaourtière.

wget https://aur.archlinux.org/cgit/aur.git/snapshot/uml_utilities.tar.gz
tar xf uml_utilities.tar.gz
cd uml_utilities
makepkg -A # ignore l'architecture définie dans le PKGBUILD

Il faut ensuite passer en root (ou avoir mis des droits sudo globaux à l’utilisateur pour installer ce paquet :

su - root
cd dossier_de_l'archive
pacman -U uml_utilities*.pkg.tar.xz

Profiter d’être en root pour préparer l’interface réseau pour qemu (remplacer alarm par l’utilisateur de votre choix :

tunctl -u alarm -t tap0
ifconfig tap0 192.168.0.1 netmask 255.255.255.0 up

Puis se deloguer de root par logout ou exit.

Dans le dossier où sont placer les deux fichiers préalablement décompressés :

qemu-system-riscv64 \
  -nographic -machine virt -kernel bbl \
  -append "root=/dev/vda ro console=ttyS0" \
  -drive file=busybear.bin,format=raw,id=hd0 \
  -device virtio-blk-device,drive=hd0 \
  -net nic -net tap,ifname=tap0,script=no

Le boot sur busybear/RiscV va alors commencer. Il se bloc pendant quelques secondes sur le logo RISC-V en ASCII-art :

qemu-system-riscv64: warning: hub port hub0port0 has no peer
qemu-system-riscv64: warning: vlan 0 with no nics
qemu-system-riscv64: warning: netdev hub0port0 has no peer
qemu-system-riscv64: warning: requested NIC (anonymous, model unspecified) was not created (not supported by this machine?)
              vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
                  vvvvvvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrr       vvvvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrr      vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr    vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr    vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr    vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrr      vvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrr       vvvvvvvvvvvvvvvvvvvvvv
rr                vvvvvvvvvvvvvvvvvvvvvv
rr            vvvvvvvvvvvvvvvvvvvvvvvv      rr
rrrr      vvvvvvvvvvvvvvvvvvvvvvvvvv      rrrr
rrrrrr      vvvvvvvvvvvvvvvvvvvvvv      rrrrrr
rrrrrrrr      vvvvvvvvvvvvvvvvvv      rrrrrrrr
rrrrrrrrrr      vvvvvvvvvvvvvv      rrrrrrrrrr
rrrrrrrrrrrr      vvvvvvvvvv      rrrrrrrrrrrr
rrrrrrrrrrrrrr      vvvvvv      rrrrrrrrrrrrrr
rrrrrrrrrrrrrrrr      vv      rrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrr          rrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrr      rrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrr  rrrrrrrrrrrrrrrrrrrrrr

       INSTRUCTION SETS WANT TO BE FREE

On voit aux message du kernel que c’est encore un noyau assez simple :

[...]
[   10.190000] This architecture does not have kernel memory protection.
[...]

On arrive enfin au prompt où pour se connecter il faut utiliser :
* Identifiant : root
* Mot de passe : busybear.

Et voilà !

ucbvax login: root
Password:
    ____                   ____                     __    _
   / __ )__  _________  __/ __ )___  ____ ______   / /   (_)___  __  ___  __
  / __  / / / / ___/ / / / __  / _ \/ __ `/ ___/  / /   / / __ \/ / / / |/_/
 / /_/ / /_/ (__  ) /_/ / /_/ /  __/ /_/ / /     / /___/ / / / / /_/ />  <
/_____/\__,_/____/\__, /_____/\___/\__,_/_/     /_____/_/_/ /_/\__,_/_/|_|
                 /____/
root@ucbvax:~# cat /proc/cpuinfo
hart    : 0
isa     : rv64imafdcsu
mmu     : sv48

Pour configurer le réseau :

ifconfig sit0 192.168.0.10 netmask 255.255.255.0 up

On peut aussi le modifier dans /etc/hosts/interfaces pour qu'il soit pris en compte au reboot :

auto lo
iface lo inet loopback

auto sit0
iface sit0 inet static
  address 192.168.0.10
  netmask 255.255.255.0
  broadcast 192.168.0.255
  gateway 192.168.0.1

!!! Attention, les cache/resolever DNS par défaut dans /etc/resolv.conf sont ceux de Google !!! Changer par un de votre réseau ou de votre fournisseur d'accès. Ceux de Google :

root@ucbvax:~# cat /etc/resolv.conf 
nameserver 8.8.8.8
nameserver 8.8.4.4

Vrai départ pour les pilotes libres pour les GPU Mali

Si les premiers pilotes amorcés en 2012 avaient étés abandonnées un peu plus d’un an plus tard, depuis l’été 2017 des nouveaux pilotes ; Lima Driver pour l’architecture Utgard (Mali-400 et 450) et Panfrost, pour architecture Midgard (Mali-Txxx) et Bitfrost, sont tous deux partis en flèche, au point d’effectuer les fonctions basiques et de bientôt pouvoir rejoindre le noyau Linux et la bibliothèque Mesa.

Luc Verhaegen (libv) avait commencé le premier pilote libre pour le processeur graphique ARM Mali-400 (architecture ugard) aux alentours de 2012, pour l’abandonner aux alentours de 2013. Les pilotes étaient restés figés depuis, à part quelques mises à jour minimes avortées. Mais depuis l’été 2017, Qiang Yu à relancé le projet et suit au plus près le noyaux Linux (aujourd’hui 4.17rc) et Mesa (aujourd’hui 18), pour une intégration rapide à ceux-ci.

D’un autre côté, Panfrost est un pilote réunissant le travail de Connor Abbott (qui avait fait un début de pilote en 2013 également pour l’architecture Midgard (Mali-T6xx et supérieur), créé un désassembleur de shaders, puis différents outils (compilateur Lima) pour l’architecture Midgard et Bitfrost (Mali-Gxx). Toujours au même moment, Alyssa Rosenzweig, qui a commencé le développement pour l’architecture Midgard avec le pilot Chai, coordonne ses travaux avec ceux de Connor Abbott dans un projet nommé Panfrost. Les progrès sont très rapide comme pour le nouveau pilote Lima. Les auteurs prévoient d’utiliser LLVMpipe pour l’émulation Logicielle des parties non encore intégrées pendant leur progression. en mai 2018, le test du cube utilisant des shaders initialement produit pour le pilote Freedreno, fonctionne parfaitement. Les shaders passent par NIR (une représentation intermédiaire des langages de shaders (comme glsl) dont le but est de faciliter la compilation dans le langage du processeur lui même), de Jason Ekstrand.

Vous pouvez suivre leur progrès :
* Sur le blog d’Alyssa Rosenzweig pour Panfrost (et les sources sur GitLab).
* Sur le compte dépôt git des sources de Qiang Yu pour Lima sur gitlab.Freedesktop.org (linux-lima (pilote noyau DRM) et mesa-lima (pilote OpenGL ES/Gallium pour Mesa))
* Compte GitHub de Connor Abbott.

Le cauchemar Samsung ou La regression des fonctions de base (Corrigé sur les mises à jour du Galaxy A des 2 et 23 avril 2016)

Ce billet a été publié à la mi-février 2016, les mises à jour système du 2 et 23 avril 2016 corrige les deux problèmes.
* Grâce à celle du 2 avril, on peut à présent accéder au système en PTP et MTP
* Grâce à celle du 23 avril, on peut brancher un USB mass storage (comme une clé USB), via un câble USB-OTG
* Par contre, une nouvelle édition casse les claviers chinois et japonais. On ne peut plus sélectionner qu’une rangée de caractères sur l’ensemble des possibilité par phonème/more :(.

Avant d’acheter mon Samsung Galaxy S il y a quelques années, voulant éviter trop d’e-dechets, j’ai regardé ce qui se faisait et réfléchi à ce que j’allais acheter pendant entre 6 mois et un an 1/2. L’annonce, de cette petite merveille correspondait à toutes mes attentes :
* Android basé sur Linux, avec toute sa liberté d’action
* Écran AMOLED, qui était un réel avantage par rapport aux autres écrans de l’époque, permettant de bien apprécier les photos.
* facilité de connexion (« masse storage » de base en USB, rien de plus simple, compatible, rapide, efficace ou que l’on soit avec n’importe quel appareil).
* Bonne mémoire, processeur Samsung efficace, carte SD, tout bien standard.

Au bout de quelques années, le téléphone pas mal maltraité, a finir par avoir son écran cassé, le connecteur USB avait un faux contact, j’ai été obligé d’acheter pendant un voyage en Chine, un appareil permettant de charger directement la batterie. Entre temps, le Galaxy Note était sorti !

Le Galaxy Note a été un grand pas en avant :
* Écran plus grand et confortable
* Stylet S-Pen utilisant les technologies de notre chère Wacom, bien connu des infographistes.
* Meilleure autonomie (surtout si on désactive les applications Google/Samsung inutiles).

Mais en même temps l’évolution ajoutait une petite régression :
* retrait du mass storage au profit du protocole MTP ou PTP (au choix, plus complexes, plus lents, avaient l’avantage, pour les plus ignorants en informatique de rajouter des couches de vérification pour ceux qui débranche un téléphone sans valider la déconnexion sur le système… seraient ils aller l’option mass storage ????)

Cela était sans doute du aux gens qui débranchait le téléphone en plein transfert sans sélectionner déconnecter, mais bon, déjà on perdait en efficacité, simplicité, compatibilité. Au bout de quelques temps j’ai fini par perdre cette petite merveille, je ne sais pas comment.

Je me suis pris en remplacement un Galaxy Note 3 lite, je ne voulais pas un Note 3 qui comportait un processeur Snapdragon, mais un Note 3 lite qui contenait un processeur Samsung (important pour moi de boycotter les États-Unis qui faisaient alors la guerre en Irak, Afghanistan et ailleurs, en plus des lobyings forcés un peu partout). J’étais content, mais ça commençait à bien se gâter du côté de Samsung :
* Plus que le protocole MTP pour le transfert (le plus lent des trois). On pouvait contourner en utilisant la carte microSD interne et la retirer/insérer quand besoin.
* Une application avec un grand F (Flipboard je crois), qui venait sans arrêt s’afficher quand on appuyait sur le bouton du milieu, sans aucun moyen de la désactiver, les forums se remplissaient de messages à ce propos.
* L’apparition du NFC qui pourrait être une fonction pratique dans certains cas, mais que franchement personne n’utilise (trop lent pour le transfert, n’apporte rien en plus, il y a déjà bluetooth et Wifi plus efficace pour cela, pratique pour pirater les cartes bancaires avec leur trous de sécurité, mais ça n’est pas ce que cherche la majorité des gens).
* De plus en plus d’application qu’on utilise pas forcément qui sont lancée ou relancées en permanence, et impossible à désactiver, vidant de plus en plus rapidement la batterie. Je tenais 11 jours avec le Galaxy S, là, malgré la plus grosse batterie, il a fallu que je root (passe administrateur) le téléphone et vire toutes les applications Google et Samsung pour arriver péniblement à la moitié. Ça m’a permis aussi de me débarrasser de ce fameux Fliboard qui Fâche toute la Foule, de me mettre un pare-feu pour éviter des transfert non désirés (par les résidus s’applications Google/Samsung) dans certains lieux de Paris où la bande passante chute avec l’épaisseur des murs en pierre de taille.
* Je constatait que là où des gens avec des tablettes chinoises sans marque sous Android à 50€ pouvait connecter tout et n’importe quoi en USB via un câble USB-OTG (merci le noyau Linux), les bridages de Samsung, en permettait beaucoup moins :(.

Le cauchemar

Enfin, après l’avoir de nouveau perdu, je passe la semaine dernière au Galaxy A5 2016 (mauvaise période où les notes récent sont >500€ => en immobilisation pour les entreprises, pas glope), et là, la catastrophe la plus totale :((.
* Plus du tout de support USB standard (ni MTP, ni PTP, ni masse storage), mais pourquoi ??? Quel intérêt, que veux Samsung ? Je sais que je ne pourrais pas transférer les photos dans un cybercafé, ou sur mes ordis sous Linux… Il faudrait installer un Windows, :D, c’est du grand n’importe quoi. Ils s’amusent à réinventer la roue carrée, en créant des usines à gaz, pour au final avoir des choses qui ne fonctionnent pas (les pilotes windows de Samusng n’ont jamais été très au point le peu de fois où j’ai du l’utiliser pour une mise à jour du firmware sur les ordinateurs d’amis).
* Une simple clé USB via un câble USB-OTG ne peut être lue ou montée. Ça n’aurait pas mangé de pain de le laisser.
* La carte microSD est dans une trappe très compliquées à ouvrir/insérer (il faut une épingle à nourrice, comme lorsqu’un CD était bloqué dans le lecteur dans les années 1990.
* Elle est avec une carte SIM au format nano-SIM (comme sur les ordinateurs de pomme pour les pommes), résultat j’ai du couper au ciseau le carton de la SIM que j’avais pris, format standard (je m’attendait pas à cette surprise), j’ai eu peu d’avoir 5 jours de plus de commande de nouvelle SIM avant de voir les nombreux tutos sur le sujet. Elle est au passage aussi galère à mettre que la microSD, et le pire c’est qu’il faut l’insérer même temps que la microSD (avec le côté pas pratique).
* La batterie est fixée à l’intérieure, donc quand elle est morte, jeter le téléphone (mode plus d’e-dechets) Il y a bien une documentation pour l’enlever pour les plus hackers, mais eux même le déconseille parce qu’on risque de tout casser. Pas la peine de penser à une batterie de secours, en cas de long périple non plus donc… Bon, un chargeur USB pas samsung fera très bien l’affaire dans les premiers temps ;).
* Le F (flipboard) a été renommé Briefing et est encore plus invasif, avant c’était bouton du milieu, maintenant, c’est quand on fait glisser l’écran du bureau de gauche à droite. On peut le désactiver via, paramètres => applications => gestionnaire d’application => toutes =>Briefing =>forcer l’arrêt désactiver, comme différentes applications Google (mais pas toutes :( /microsoft). Mais malgré tout, on a toujours l’écran pourrit en glissant vers la gauche. Si je n’arrive pas à échanger le téléphone pour quelque chose de mieux, j’espère que le rootage fera l’affaire. ou sinon, je mettrait une ROM XiaoMI ou cyanogenMOD.
* On est envahi d’applications Microsoft (OneDrive, Word et je ne sais quel autres trucs inutiles) en plus de celles de Google (Drive qui fait pareil) et de Samsung (, qui veulent pour les 3 marques en même temps absolument qu’on sauvegarde nos données perso sur leur cloud à eux :(. Je vois que ça comme raison pour la suppression des moyen simple de connecter à son ordinateur OwnCloud notre ami ? Autres solutions rapide pour compenser, GhostCommander + extension SFTP sur f-droid.org, mais on est obligé de passer par du Wifi, et il n’y aura pas forcément de serveur SFTP partout…
* Le bouton d’en bas à gauche qui sert d’habitude de bouton menu a été remplacé par le bouton changement d’application et celui du milieu qui avait cette fonction, de recherche Google, super inutile donc, encore une fois :(. Résultat différentes applications que j’utilisai depuis le Samsung Galaxy S, en suivant leurs évolutions et qui me sont vitales (dictionnaires multilingue où je peux mettre mes propres dictionnaires que je fais évoluer), enregistreur sonore haute définition pour les enregistrement d’ambiances sonores dans certains endroits de mes voyages, etc… sont devenues inutilisables étant toutes deux dépendantes de ce bouton, pour insérer/mettre à jour les dictionnaires pour l’une, et pour choisir la qualité d’enregistrement pour l’autre.
* Sur les Galaxy Note, il y avait la reconnaissance d’écriture manuscrite sur le clavier (pratique pour chinois/japonais), surtout que la saisie en pinyin, du clavier samsung, ne met pas forcément en avant les caractères les plus utilisés. Ben, là non, comme si ce type de fonction était dépendant du stylet… :(. Ça encore ça n’est pas trop grave, on doit pouvoir trouver des applications tierce qui font la même chose.

Quelques mises à jours dans les paquets Archlinux ARM faits maison

Toujours dans mon dépôt perso de binaires et PKGBUILD Archlinux ARM
* Ajouté l’émulateur PPSSPP (pour PSP, console portable), étonnamment il détecte si c’est OpenGL ou OpenGL ES qui est accéléré et s’adapte !!! Espérons que ça en pousse d’autres à faire pareil en attendant Vulkan. Par contre sur le RK3288, on peut pas agrandir la fenêtre et l’application plante (en figeant X) si l’accélération matérielle est active. (il est possible de ne redémarrer que lightdm si on est connecté en ssh sur la machine.

* Nouvelle version de qemu (2.4.1, je sais plus si je l’avais dit), on doit pouvoir améliorer encore, mais c’est déjà mieux. Il n’y a pas l’exécutable qemu-kvm par exemple. Mise à jour du 10 décembre : mise à jour en version 2.5.0 de mon paquet (requiet libcacard qui est un paquet à part, se trouve dans le même dossier), ajoute les émulations de systèmes complets, les bios, le support GTK, les PKGBUILD sont plus propres.

* Mise à jour d’Entangle (même version mais avec lib récente)

* Mise à jour de 0ad (Alpha19, il vaut mieux du full OpenGL accéléré, sinon, c’est du 3 fps en pur logiciel ^^

* Mise à jour de blender en 2.76.b, plus besoin de mon patch puisque le patch pour non-x86 a été appliqué dans les sources originales, le PKGBUILD officiel d’archlinux (pour x86) fonctionne donc parfaitement sous arm (et autres à priori)

* en ARM et x86_64 à la fois, j’ai ajouté perl-glib-object-introspection qui permet d’utiliser gstreamer avec gmusicbowser (any comme écrit en perl, également disponible) et donc de jouer plus de formats de fichiers. Penser à choisir pulse à la place d’auto pour la sortie de gstreamer dans les prefs). Ils sont tirés d’AUR sans modification.

J’ai créé un dossier obsolète pour les vieux paquets qui ne doivent plus fonctionner (entre changement de gcc, libc et api/abi).

J’ai commencé une méthode de saisie pour le mongol traditionnel pour ibus, ça marche assez bien mais c’est pas encore complet, donc, je n’ai pas mis. Je ne suis pas sur de la meilleur disposition pour le clavier, chaque clavier que j’ai vu (sur Android (application Bainu),, ou différents schéma sur les sites webs (sur un clavier cyrillique mongol ou russe, sur un clavier qwerty (pour les Mongols de Chine probablement ?)) de documentation de l’écriture sont différent…) j’en ai pris un relativement phonétique par rapport au qwerty donc. Je la mettrais à disposition dès que j’aurais mis les codes spéciaux indispensables pour certaines liaisons.

Blender est utilisable sur ARMv7 (32 bits) sans acceleration 3D grâce à LLVMpipe.

blender-17:2.76-1.0001-armv7h.pkg.tar.xz (paquet pour Archlinux ARM). (version mise à jour par l’équipe blender par défaut en utilisant le PKGBUILD d’archlinux x86, compile tout seul maintenant et devrais être intégré dans le build automatique archlinux ARM : blender-17:2.76.b-3-armv7h.pkg.tar.xz cette version ne marche plus en raison de la mise à jour d’autres librairies, utilisez pacman maintenant)

J’ai proposé un patch, accepté (mais retravaillé) par la formidable équipe Blender qui permet de compiler sur des architectures non-x86 (non Intel). J’ai proposé ce soir un PKGBUILD et patch pour Archlinux ARM en attendant que sorte la prochaine version de Blender.

.Sur mon Chromebook ARM (Asus Chromebook C201, utilisant un Rockchip RK3288 : CPU=4*Cortex-A17@1.8 Ghz + GPU=Mali-T764, uniquement compatible OpenGL ES (vivement Vulkan)), ça tourne plutôt bien en pure rendu logiciel, grâce à LLVMpipe pour l’interface et à la puissance de la machine pour le rendu. Il n’y a pas encore d’optimisation SIMD ARM NEON (pour ARMv7) ou pour (ARMv8) pour Cycle.

C’est une machine que j’ai pris il y a 2 semaines qui à l’avantage d’être :
* pas cher (200€ 2Go RAM, 250€ 4Go RAM en France) / 150$ 2 Go RAM, 200$ 4Go RAM aux États-Unis, cherchez l’erreur).
* Avoir une bonne autonomie : 13heure sous chromeOS (installé par défaut), jusqu’à environ 3j (oui, 72 heures de marche !!!) sous GNU/LInux, si on coupe les modules Wifi/BT lorsque l’on ne s’en sert pas.
* Être malgré tout léger (900 grammes), la faible consommation et grande efficacité du Rockchip permettant d’avoir cette autonomie avec une batterie 2 cellules/38 Wh, et évitant d’avoir à embarquer radiateur et ventilateur.
* Bien carburer malgré ces caractéristiques.

Je vais faire un autre article ou une page pour expliquer comment l’installer.

Il reste à installer le support OpenCL, pour utiliser l’accélération du GPGPU avec rendu 3d de Cycle (2e rendu en fin de vidéo).

En plus de son côté très léger et grande autonomie (introuvable sur les processeurs Intel, forcément plus lourds, avec pour les plus léger une autonomie moindre), J’aime bien le fait que ce soit une marque de République de Chine (Taïwan) et un processeur de République populaire de Chine (Chine continentale), parce qu’aucun de ce pays divisé en 2 n’est en guerre, je n’ai donc pas l’impression de participer à l’effort de guerre. De moins polluer (plus grande efficacité énergétique).