<feed xmlns='http://www.w3.org/2005/Atom'>
<title>fbos/doc/vf2.svg, branch main</title>
<subtitle>A RISC-V operating system devoted to running fizz/buzz processes.
</subtitle>
<id>https://git.mssola.com/os/fbos/atom?h=main</id>
<link rel='self' href='https://git.mssola.com/os/fbos/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.mssola.com/os/fbos/'/>
<updated>2024-11-29T21:17:13Z</updated>
<entry>
<title>Allow the kernel to run as a Linux image</title>
<updated>2024-11-29T21:17:13Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2024-11-29T21:17:13Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/os/fbos/commit/?id=d51665904faa31c39106e4b2afa7541615072e72'/>
<id>urn:sha1:d51665904faa31c39106e4b2afa7541615072e72</id>
<content type='text'>
In order to run on real hardware, it's actually easier to re-use
workflows from existing bootloaders than loading things in memory
manually. In order to achieve this two things had to be settled:

1. The image has to have a Linux header as defined in the RISC-V port.
   This header will be taken into consideration by bootloaders in order to
   know where to jump, the image offset, the endianness of the image, etc.
2. The image cannot just be an ELF executable. Rather, we must translate
   it into binary form via `objcopy`.

With all of this at hand, I was able to make the kernel run on a
Starfive VisionFive 2 board, and I have recorded an example so it's
available as documentation.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
</feed>
