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 = « Berkley Boot Loader » 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