-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Boot in the Linux way #231
Comments
I am somewhat interested in this topic. May assign it to me days later after I studied this subject (as well as multi-arch things). Now just mark it. :) |
Great. Then the task is yours :) This task won't be easy: it requires a lot of low-level, in-depth knowledge about the bootloader and kernel. Take your time to learn relevant materials. I am almost certain that you will need to study the source code of Linux. |
Related to #281 |
The first stage of implementing Linux boot #379 is completed by now. And we run into a problem that upstream GRUB efi cannot boot bzImage in QEMU directly by the |
There are multiple candidate boot methods used by linux, listing them now to help decide whether we should support:
Not clear which way does TDX-GRUB would recommend. |
#454 Implements the legacy 32 bit protocol, the Loadfile2 protocol may be another imminent goal. |
Background and Motivation
The first three pieces of software that gets running after one presses the power button of a machine are
Ideally, a bootloader should be able to load different types of OS kernels. This is called multi-booting. And the reversed direction is also desired: an OS kernel should also be able to get booted by different bootloaders. These two goals mean that the bootloaders and the kernels must agree upon an interface or protocol to interact with one another.
Currently, Jinux chooses to use the Limine boot protocol. And since the only bootloader that implements the protocol is Limine itself, Jinux is not compatible with any other bootloader.
The problem is that we do need to support in the near future a second bootloader, which is tdshim. Tdshim is a light-weight virtual firmware for Intel TDX VM that enables starting up confidential containers with lower latencies. It also acts as a bootloader. Tdshim only supports loading Linux kernels as well as ELF files.
As every open-source bootloader, including td-shim, supports booting Linux, I think it is a smart move for us to adopt the Linux boot protocol. This way, every bootloader that works with Linux can do with Jinux.
TODOs
Learning resources
The text was updated successfully, but these errors were encountered: