RISC-V Emulator

This is a JavaScript/WASM (WASM module is written in C) emulator running my own custom firmware; a Linux kernel configured, patched, and built by myself; and some user-space programs. I am working to submit the kernel patch upstream. I have created this emulator to provide a demo platform for my user-space programs without the need for the recipient to download and build the software themselves. It is also a demonstration of my development work in and of itself. I don’t know that you can get more of a capstone project than that. I plan to build a RISC-V system out of real hardware capable of running a full Linux kernel. This was the next step in proving my understanding of the CPU architecture and implementation. My JavaScript is a bit slow to update the HTML DOM and is creating some lag. I could drop support for terminal text styles and coloring to improve it. For now, I think it probably works well enough.


Source Code
  • Linux 5.16.5 – Patched – Config (A copy of the config and custom patch are inside the echelon_emu_disk_image.cpio file. Additional source and build scripts are embedded in the initramfs (initramfs.cpio.gz) inside the cpio disk image (echelon_emu_disk_image.cpio). The disk image is in CPIO Binary format while the initramfs inside it is in the CPIO NEWC format.)
  • Bash 5.1.16
  • Busybox 1.35.0Config
  • GCC – Git Commit dc898b2ba5c50a7311bc3137f0987a7831362ed8 git://
  • Binutils 2.37
  • Glibc 2.34
  • [More links coming soon.]