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