Just as FYI to Luke and others. As far as I know, the requirement on the host kernel being 4.15 or higher is due to the modern RISC-V/Glibc kernel ABI and the way that qemu-riscv64 (linux-user emulation) proxies syscalls from the RV64 binaries to the host kernel (probably amd64). If your host kernel is too old, it may not contain the syscalls that are used by the modern RV64 Glibc. The choice of 4.15.0 is somewhat arbitrary and the constraint on host kernel version could possibly be relaxed. There was a patch that raised the minimum from 3.8.0 to 4.15.0 I’m not sure if this is related, but you can grep -r the qemu source tree to find the error message. The kernel version used in the patch may or may not be the minimum host kernel version. That requires a little analysis. I vaguely remember there may be some new syscall like renameat or renameat2 that needs to be present on the host kernel. The correct minimum host kernel version is in fact the kernel that contains the most recent ABI change that Glibc RISC-V depends on and that isn’t strictly the first version of Linux kernel that included RISC-V. They could indeed be the same version but, that needs analysis... I suspect qemu-riscv64 will run on older kernels if you patch the kernel version check, but be prepared for unpredictable results. |