RISC-V boot deep dive (Boot FLOW from 0 to Linux Kernel)
Make RISC-V boot like rest of industry U-boot for embedded, UEFI for consumer and servers
Deep dive on RISC-V boot flow started from openSBI.
- Mode switching (U/S/H/M), SBI calls, platform ops .. , etc.
- Embedded boot sprawl: U-boot vs edk2/uEFI with GRUB2
The latest code base of OpenSBI follow-up.
EDKII (edk2) support status on RISC-V: uEFI support to run GRUB2 or load kernel directly as EFI STUB
Trace RISC-V’s efistub implementation in LINUX.
RISC-V ISA study.
Resources
- An introduction to the RISCV Architecture
- OpenSBI on github
- RISC-V OpenSBI Deep Dive (pdf 2019)
- An Introduction to RISC-V Boot Flow (pdf 2019)
- RISC-V Boot flow: What's next ? (FOSSDEM 2020)
- EDK2 UEFI on RISC-V (FOSDEM 2021)
- kernel.org - RISC-V efistub lib (.c)
- kernel.org - RISC-V Runtime (.c)
- kernel.org - RISC-V sbi calls on cpu ops (.c)
kernel.org - RISC-V sbi ecall interface (.c)
What was done for ARM in past ?
Linux kernel EFI boot Stub
Soft RISC-V by QEMU
- https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html
- https://en.opensuse.org/openSUSE:RISC-V
Berry inspiration
https://wiki.debian.org/RaspberryPi4#U-boot
Embedded Linux Boot Process
This project is part of:
Hack Week 20
Activity
Comments
Be the first to comment!
Similar Projects
pudc - A PID 1 process that barks to the internet by mssola
Description
As a fun exercise in order to dig deeper into the Linux kernel, its interfaces, the RISC-V architecture, and all the dragons in between; I'm building a blog site cooked like this:
- The backend is written in a mixture of C and RISC-V assembly.
- The backend is actually PID1 (for real, not within a container).
- We poll and parse incoming HTTP requests ourselves.
- The frontend is a mere HTML page with htmx.
The project is meant to be Linux-specific, so I'm going to use io_uring, pidfs, namespaces, and Linux-specific features in order to drive all of this.
I'm open for suggestions and so on, but this is meant to be a solo project, as this is more of a learning exercise for me than anything else.
Goals
- Have a better understanding of different Linux features from user space down to the kernel internals.
- Most importantly: have fun.
Resources
- https://github.com/mssola/pudc: private for now, but I will release it under GPL v3.0+ whenever I'm done.
pudc - A PID 1 process that barks to the internet by mssola
Description
As a fun exercise in order to dig deeper into the Linux kernel, its interfaces, the RISC-V architecture, and all the dragons in between; I'm building a blog site cooked like this:
- The backend is written in a mixture of C and RISC-V assembly.
- The backend is actually PID1 (for real, not within a container).
- We poll and parse incoming HTTP requests ourselves.
- The frontend is a mere HTML page with htmx.
The project is meant to be Linux-specific, so I'm going to use io_uring, pidfs, namespaces, and Linux-specific features in order to drive all of this.
I'm open for suggestions and so on, but this is meant to be a solo project, as this is more of a learning exercise for me than anything else.
Goals
- Have a better understanding of different Linux features from user space down to the kernel internals.
- Most importantly: have fun.
Resources
- https://github.com/mssola/pudc: private for now, but I will release it under GPL v3.0+ whenever I'm done.