3cc7ed909caf6e59f925753016dfe5c53520088a
Rust nightly requires -Zunstable-options for custom target JSON specs (such as x86-unknown-none.json). Without it, the build fails with: error: error loading target specification: custom targets are unstable and require `-Zunstable-options` UEFI already uses the built-in x86_64-unknown-uefi target, so it didn't need this flag. The kernel recipe already has this fix; the bootloader BIOS Makefile was missing it.
Bootloader
Redox OS Bootloader
Requirements
These software needs to be available on the PATH at build time:
Building
make TARGET=<triplet> BUILD=build all
The <triplet> is one of:
| ARCH | Boot Mode | Triplets |
|---|---|---|
i686 |
BIOS | x86-unknown-none |
x86_64 |
BIOS | x86-unknown-none |
x86_64 |
UEFI | x86_64-unknown-uefi |
aarch64 |
UEFI | aarch64-unknown-uefi |
riscv64gc |
UEFI | riscv64gc-unknown-uefi |
See mk directory for more information of how the build is working.
Entry points
Please read Boot Process in the Redox OS Book for an introductory guide.
In this source code, some interesting files for entry points are:
- BIOS boot stages: asm/x86-unknown-none/bootloader.asm
- BIOS boot entry:
fn startat src/os/bios/mod.rs - UEFI boot entry:
fn mainat src/os/uefi/mod.rs - Common boot process:
fn mainat src/main.rs - UEFI kernel entry:
fn kernel_entryin each arch:x86_64: src/os/uefi/arch/x86_64.rsaarch64: src/os/uefi/arch/aarch64.rsriscv64gc: src/os/uefi/arch/riscv64/mod.rs
Debugging
QEMU
make TARGET=<triplet> BUILD=build qemu
How To Contribute
To learn how to contribute to this system component you need to read the following document:
Development
To learn how to do development with this system component inside the Redox build system you need to read the Build System and Coding and Building pages.
Description
RedBear Operating System, based on RedoxOS. Licenced under MIT license.
https://redbearos.org
Languages
C
43.9%
C++
23.5%
Makefile
7.3%
Python
3.7%
JavaScript
3.4%
Other
17.1%