These scripts compile, copy, bake, unpack and flash a ready to use RISC-V Archlinux.
With "ready to use" i mean that it boots, you still need to configure everything!
Special thanks to smaeul for all their work!
Find a precompiled image under the Actions artifacts. The image has no configuration or whatsoever!
Also have a look at the forks that have emerged over time or similar projects like a make file based approch.
There are multiple sources for an Archlinux image:
- https://forum.rvspace.org/t/arch-linux-image-for-visionfive-2/1459
- https://github.com/thefossguy/archlinux-visionfive2
- mainline OpenSBI
- U-Boot based on https://github.com/smaeul/u-boot.git
- mainline kernel
- WiFi driver (rtl8723ds) based on https://github.com/lwfinger/rtl8723ds
- RootFS based on https://archriscv.felixc.at (root password is
sifive
archriscv
)
- Install requirements:
pacman -Sy riscv64-linux-gnu-gcc swig cpio python3 python-setuptools base-devel bc
- If you want to
chroot
into the RISC-V image, you also needarch-install-scripts qemu-user-static qemu-user-static-binfmt
- If you want to
- Edit
consts.sh
to your needs. For example, you may want to select a different DTB for a different board variant. - Run
1_compile.sh
which compiles everything into theoutput
folder. - Run
2_create_sd.sh /dev/<device>
to flash everything on the SD card. - Configure your Archlinux 🚀
- Install requirements:
apt install -y gcc-riscv64-linux-gnu bison flex python3-dev libssl-dev swig cpio python3-setuptools build-essential bc
- If you want to
chroot
into the RISC-V image, you also needarch-install-scripts qemu-user-static
- If you want to
- Edit
consts.sh
to your needs. For example, you may want to select a different DTB for a different board variant. - Run
1_compile.sh
which compiles everything into theoutput
folder. - Run
2_create_sd.sh /dev/<device>
to flash everything on the SD card. - Configure your Archlinux 🚀
Simply loop it using sudo losetup -f -P <file>
and then use /dev/loopX
as the target device.
The second script requires arch-install-scripts
, qemu-user-static-bin
(AUR) and binfmt-qemu-static
(AUR) for an architectural chroot.
If you don't want to use/do this, change USE_CHROOT
to 0
in consts.sh
.
Keep in mind, that this is just a extracted rootfs with no configuration. You probably want to update the system, install an editor and take care of network access/ssh
Some commits are pinned, this means that in the future this script might stop working since often a git HEAD is checked out. This is intentional.
The second script uses sudo
for root access. Like any random script from a random stranger from the internet, have a look at the code first and use at own risk!
Things are rebuild whenever the corresponding output/<file>
is missing. For example, the kernel is rebuilt when there is no Image
file.
- forgot to keep this up to date...
- mainline kernel fully supports the D1
- kernel updated to 6.4 (mainline)
- OpenSBI updated to 1.3
- WiFi is working again
- updated U-Boot and remove boot0 (handled by U-Boot)
- updated kernel to 6.1.0-rc3
- THIS BRAKES BUILT-IN WIFI
- kernel is back at 5.18-rc1 due to being more reliable
- kernel updated to 5.19-rc1
- added initramfs support (untested)
- added extlinux support
- kernel includes modules for USB LAN adapter
- swap is enabled
- HDMI, tested with LXDE/LXDM
- WiFi \o/
- Kernel is based on 5.18-rc1
- WiFi driver fails to build (linking error :feelsbadman:)
- Both kernel and U-Boot are using
nezha_defconfig
since i found them more reliable- With the licheerv_linux_defconfig from here the kernel fails to find the sd card (or its partitions? not sure what exactly goes wrong)
- HDMI is not working (at least on the one screen i've tested it)
no WiFi!No HDMI (though, i'm unsure about the state of HDMI support in general)