This is a port of Linux kernel for the RISC-V instruction set architecture. Development is currently based on the 4.6 longterm branch.
Overlay the riscv architecture-specific subtree onto an upstream release:
$ curl -L https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.6.2.tar.xz | tar -xJ
$ cd linux-4.6.2
$ git init
$ git remote add -t master origin https://github.com/riscv/riscv-linux.git
$ git fetch
$ git checkout -f -t origin/master
Note that the -t <branch> option minimizes the history fetched.
To add another branch:
$ git remote set-branches --add origin <branch>
$ git fetch
For convenience, full kernel source trees are maintained on separate branches tracking linux-stable:
linux-4.6.y-riscvlinux-3.14.y-riscv(historical)
-
Create kernel configuration based on architecture defaults:
$ make ARCH=riscv defconfig -
Optionally edit the configuration via an ncurses interface:
$ make ARCH=riscv menuconfig -
Build the uncompressed kernel image:
$ make -j4 ARCH=riscv vmlinux -
Boot the kernel in the functional simulator, optionally specifying a raw disk image for the root filesystem:
$ spike +disk=path/to/root.img bbl vmlinuxbbl(the Berkeley Boot Loader) is available from the riscv-pk repository.
The riscv-gnu-toolchain repository includes a copy of the kernel header files.
If the userspace API has changed, export the updated headers to the
riscv-gnu-toolchain source directory:
$ make ARCH=riscv headers_check
$ make ARCH=riscv INSTALL_HDR_PATH=path/to/riscv-gnu-toolchain/linux-headers headers_install
Rebuild riscv64-unknown-linux-gnu-gcc with the linux target:
$ cd path/to/riscv-gnu-toolchain
$ make linux