TUD-OS / NRE

NOVA runtime environment (official branch)
GNU General Public License v2.0
33 stars 12 forks source link

Purpose of VBE.{c,h} in NRE Console Services? #64

Open lonnietc opened 2 years ago

lonnietc commented 2 years ago

Hi All,

I am working m way through the NRE code and am trying to detach the libseoul libraries from the framework since I have found that it is namely used for the construction of the runtime vancouver VMM which I will not be using but have also just found out that it is connected to the services/console/VBE.{h.c} file and as far as I can tell that is the only other place.

Also, let me clarify. I know what the VBE is (VESA Bios Extension) but am seeking a way to remove its dependency on libseoul

What is the purpose of the VBE code in relation to libseoul?

Any suggestions on how to remove that dependency would be greatly appreciated.

Nils-TUD commented 2 years ago

Hi Lonnie,

yes, libseoul is also used by the console service. The VBE code needs it to execute BIOS code. This in turn is required to figure out the available video modes, switch between modes, etc.. There are other ways to execute the BIOS code like x86emu, but since NRE has libseoul anyway, NRE of course uses it for that purpose as well.

lonnietc commented 2 years ago

Hi Nils,

Thanks for the clarification. I bring this up because what I want to do is to remove all of the libseoul dependency as I will not be using that library and VMM.

Instead, I will be trying to port over the FreeBSD Bhyve which seems to support 32-bit and 64-bit Guests as well as has an approximate 500 Kb footprint which is significantly smaller than QEMU and VirtualBox. In those areas, Genode already has a port of VirtualBox with their framework that can run a NOVA kernel, but I find the code-base to be very complex and confusing to work with in that they tend to "patch" everything and their licensing is not viable for what I want as well. They have done some nice work though.

Of course, there is also TinyEMU (Fabrice Bellard developer of QEMU) which supports 32-bit, 64-bit, and even 128-bit registers (partially) RISC-V64 but not x86_64 guests yet.

https://bellard.org/tinyemu/ and DEMO: https://bellard.org/jslinux/ (They also run in a browser)

and the goal is to have a fast and small VMM (x86_32 & x86_64 guest support) so I want to remove the libseoul dependencies.

Also, I have been working on a NRE port of the Newlib libc libraries that will allow me to bring in the Iwip network stack as well.