This repo contains all the source code required to follow the blog post at https://werwolv.net/posts/linux_bringup/
- /libcontains the entire rv32ima instruction set emulator code as well as a minimal set of emulated devices
- /maincontains the configuration for our machine and functions exposed for WebAssembly use
All the config files required to build Linux can be found in /boot. The main executable also expects all the built binaries to be in the boot folder.
- riscv32-unknown-linux-gnu.configis the crosstool-ng toolchain config file
- riscv_emulator_defconfigis the Linux Kernel config file
- device_tree.dtsis the minimal device tree- Can be compiled to a dtb using dtc -I dts -O dtb device_tree.dts -o device_tree.dtb
- Can be compiled to a dtb using
- init.cis the init program- Can be compiled using riscv32-unknown-linux-gnu-gcc -static init.c -o init
- Can be compiled using
- initramfs.txtis the- gen_init_cpioconfig file to generate the initramfs- Can be compiled to a cpio using usr/gen_init_cpio initramfs.txt -o initramfs.cpio
- Can be compiled to a cpio using