Die patentfreie und unter BSD-Lizenz stehende Prozessorachitektur RISC-V erfreut sich zunehmender Beliebtheit und ich denke, ich lehen mich nicht allzuweit aus dem Fenster, wenn ich prognostiziere, daß dieser Trend in Zukunft anhalten wird. Einige Hersteller haben bereits Produkte, die auf RISC-V basieren, im Portfolio oder planen dieses. RISC-V ist hierbei allerdings nur als Überbegriff für verschiedene Prozessoren zu verstehen, bei denen die kleineren eher Mikrocontrollern gleichen und die großen für Serveranwendungen gedacht sind. Neben echten (in Hardware gegossenen) Chips gibt es die Möglichkeit, eine RISC-V-CPU in einem FPGA oder als Softwareemulation auszuprobieren. Die einfachste (und langsamste) Variante ist die Softwareemulation mittels QEMU. In dieser Kurzanleitung geht es um die QEMU-Softwareemulation einer Linux-fähigen RISC-V-CPU, in der eine Vorabversion von Debian (unstable/sid) installiert ist. Der Einfachheit halber und weil einige Pakete aus Debian unstable auf dem Gastgeberrechner benötigt werden, habe ich die QEMU in einer VirtualBox installiert. Diese VirtualBox-Appliance können Sie kostenlos herunterladen und für erste eigene Gehversuche in der RISC-V-Welt verwenden.
Laden Sie D10-RISCV64-qemu.ova (1,3GB, SHA256: 20f31dff4fe83a1fb02644a5eacd3db905227da1c83456c02dbbbb2eccbfc7a3) herunter und importieren Sie diese anschließend in VirtualBox. Hinweis: Die VM ist aus mehreren Gründen (z.B. basiert diese auf auf Debian unstable, evtl. unausgereifter Softwareemulation und verwendet unsichere bekannte Zugangsdaten) keinesfalls für den Produktivbetrieb bestimmt.
Nach dem Starten der VM, booten das x86-Debian-10 und die darin enthaltene RISC-V-QEMU-VM automatisch. Bis die RISC-V-QEMU-VM komplett hochgefahren ist, kann allerdings etwas Zeit vergehen. Auf den Terminals 1-4 (Hosttaste + F1-F4) können Sie sich am x86-Debian-10 anmelden. Auf Terminal 5 (Hosttaste + F5) an der RISC-V-QEMU-VM. Sie können sich an allen Terminals anmelden. Es gibt jeweils die Benutzer "root" und "test". Das Paßwort ist immer "test". Dank Portweiterleitung können Sie sich in der VirtualBox per SSH auf Port 8022 als Benutzer "test" anmelden:
ssh -p 8022 test@localhost
Um in der RISC-V-QEMU-VM zu landen, verwenden Sie stattdessen Port 5022:
ssh -p 5022 test@localhost
root-Rechte erlangen Sie mit:
su -
Natürlich können Sie sich auch Ihre eigene RISC-V-Testumgebung zusammenstellen. Mir hat beim Entwickeln meiner Appliance wiki.debian.org sehr geholfen. Zusätzlich finden Sie hier noch einige weitere Anpassungen, die ich vorgenommen habe.
echo 'deb http://debian.tu-bs.de/debian/ sid main' > /etc/apt/sources.list.d/sid.list
apt-get update
apt-get install -y qemu-system-misc qemu-user-static binfmt-support opensbi u-boot-qemu libguestfs-tools
#!/bin/bash
cd /home/test
echo 'qemu-system-riscv64 -nographic -machine virt -m 1.9G -smp 4\
-bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.elf \
-kernel /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf \
-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-device,rng=rng0 \
-append "console=ttyS0 rw root=/dev/vda1" \
-device virtio-blk-device,drive=hd0 -drive file=riscv64-debian-unstable.img,format=raw,id=hd0\
-device virtio-net-device,netdev=net0 -net nic,model=ne2k_pci\
-netdev user,id=net0,hostfwd=tcp::5022-:22' > /home/test/riscv64-debian-unstable.sh
chmod +x /home/test/riscv64-debian-unstable.sh
Diese Befehle sorgen dafür, daß riscv64-debian-unstable.sh
beim Booten auf Terminal 5 gestartet wird.
mkdir -p /etc/systemd/system/getty@tty5.service.d
echo '[Unit]
Description=top on tty5
[Service]
Type=simple
User=test
ExecStart=
ExecStart=-/home/test/riscv64-debian-unstable.sh
StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty5
[Install]
WantedBy=multi-user.target' > /etc/systemd/system/getty@tty5.service.d/override.conf
systemctl daemon-reload
systemctl restart getty@tty5
Viel Spaß beim Ausprobieren und mit freundlichen Grüßen,
Hauke Goos-Habermann