- Add support for position independent executables (#206)
- Add optional ASLR (#221)
- Logger: nicer font rendering into framebuffer (#213)
- Fix warnings on latest nightly (
maybe_uninit_extra
is no longer feature-gated) (#222) - Rework
UsedLevel4Entries
(#219) - Add small doc-comment to entry_point! macro (#220)
- Remove feature flag for
lang_items
,asm
andglobal_asm
(#210) - Use
set_reg
method ofCS
,DS
,ES
andSS
segment structs (#211)
- Fix
asm
imports on latest nightly (#209)
- Add support for framebuffer configuration (#179)
- Fix
relocation-model
field name in the target spec json (#186)- This effectively changes the
relocation-model
frompic
tostatic
. Please report if you encounter any issues because of this. - This fixes the compilation warnings on the latest nightlies.
- This effectively changes the
- Identity-map GDT into kernel address space to fix
iretq
(#175) - Uefi: Look for an ACPI2 RSDP first (#174)
- Don't check target architecture for builder crate to support cross-compiling (#176)
- Fix build on latest Rust nightlies by updating
uefi-rs
dependency (#170)- Also: Fix warnings about
.intel_syntax
attribute in assembly code
- Also: Fix warnings about
- Fix build on latest Rust nightly by updating to
uefi
v0.9.0 (#162) - Fix higher half kernels by identity mapping context switch fn earlier (#161)
- Also: improve reporting of mapping errors
- Change register used in setting SS in stage_4 (#156)
- Use new
asm!
syntax instead of deprecatedllvm_asm!
(#154) - Reduce the number of used unstable features of x86_64 crate (#155)
- Fix docs.rs build: Don't enable any features
- Rewrite for UEFI support (#130)
- Includes a new build process that no longer uses the
bootimage
crate. See the Readme for details.
- Includes a new build process that no longer uses the
- Set
relocation-model: static
andpanic-strategy: abort
andfix .intel_syntax
warnings (#185)- Fixes warnings on the latest Rust nightlies.
- This effectively changes the
relocation-model
andpanic-strategy
. Please report if you encounter any issues because of this.
- Fix nightly regression by manually passing --gc-sections (#168)
- Reduce the number of used unstable features of x86_64 crate (backport #155)
- Replace all remaining
lea
s withmov
+offset
(#140)
- Fix linker errors on latest nightlies (#139)
- Fix "panic message is not a string literal" warning (#138)
(accidental release)
- Fix build on latest nightly by updating x86_64 to v0.13.2 (#135)
- Update
Cargo.lock
to fix nightly breakage (#129)
- Update
x86_64
again to version 0.12.1 to fixconst fn
-related build errors on latest nightly
- Run
cargo update
to fix build errors ofx86_64
on latest nightly
- Enable rlibc dependency only with
binary
feature (#126)
- Make bootloader buildable with
-Zbuild-std
(#125)
- Change 1st stage int 13h addressing (#123)
- Fix warning by renaming
_improper_ctypes_check
functions (#122)
- Update x86_64 dependency to version 0.11.0 (#117)
- Nightly Breakage: Use
llvm_asm!
instead of deprecatedasm!
(#108)
- SSE feature: remove inline assembly + don't set reserved bits (#105)
- Breaking: Identity-map complete vga region (0xa0000 to 0xc0000) (#104)
- Implement boot-info-address (#101)
- Add basic support for ELF thread local storage segments (#96)
- Fix docs.rs build (see commit 01671dbe449b85b3c0ea73c5796cc8f9661585ee)
- Objcopy replaces
.
chars with_
chars (#94)
- Update x86_64 dependency (#92)
- Move architecture checks from build script into lib.rs (#91)
- Remove unnecessary
extern C
on panic handler to fix not-ffi-safe warning (#85)
- Change the way the kernel entry point is called to honor alignement ABI (#81)
- Add a Cargo Feature for Enabling SSE (#77)
- Breaking: Parse bootloader configuration from kernel's Cargo.toml (#73)
- At least version 0.7.7 of
bootimage
is required now.
- At least version 0.7.7 of
- Configurable kernel stack size, better non-x86_64 errors (#72)
- Dynamically map kernel stack, boot info, physical memory and recursive table (#71)
- Run cargo update (improves compile times because of trimmed down upstream dependencies)
- Breaking: Only include dependencies when
binary
feature is enabled (#68)- For manual builds, the
binary
feature must be enabled when building - For builds using
bootimage
, at least version 0.7.6 ofbootimage
is required now.
- For manual builds, the
- Use volatile accesses in VGA code and make font dependency optional (#67)
- Making the dependency optional should improve compile times when the VGA text mode is used.
- Update CI badge, use latest version of x86_64 crate and rustfmt (#63)
- Remove stabilized publish-lockfile feature (#62)
- Make the physical memory offset configurable through a
BOOTLOADER_PHYSICAL_MEMORY_OFFSET
environment variable (#58). - Use a stripped copy of the kernel binary (debug info removed) to reduce load times (#59).
- Breaking: Don't set the
#[cfg(not(test))]
attribute for the entry point function in theentry_point
macro- With custom test frameworks, it's possible to use the normal entry point also in test environments
- To get the old behavior, you can add the
#[cfg(not(test))]
attribute to theentry_point
invocation
- Additional assertions for the passed
KERNEL
executable- check that the executable exists (for better error messages)
- check that the executable has a non-empty text section (an empty text section occurs when no entry point is set)
- Mention minimal required bootimage version in error message when
KERNEL
environment variable is not set.
- Remove redundant import that caused a warning
- Add a
package.metadata.bootloader.target
key to the Cargo.toml that can be used by tools such asbootimage
.
- Breaking: Change the build system: Use a build script that expects a
KERNEL
environment variable instead of using a separatebuilder
executable as before. See #51 and #53 for more information.- This makes the bootloader incompatible with versions
0.6.*
and earlier of thebootimage
tool. - The bootloader also requires the
llvm-tools-preview
rustup component now.
- This makes the bootloader incompatible with versions
- The level 4 page table is only recursively mapped if the
recursive_page_table
feature is enabled. - Rename
BootInfo::p4_table_addr
toBootInfo::recursive_page_table_addr
(only present if the cargo feature is enabled) - Remove
From<PhysFrameRange>
implemenations for x86_64FrameRange
- This only works when the versions align, so it is not a good general solution.
- Remove unimplemented
BootInfo::package
field. - Make
BootInfo
non-exhaustive so that we can add additional fields later.
- Add a
map_physical_memory
feature that maps the complete physical memory to the virtual address space atBootInfo::physical_memory_offset
. - Re-export
BootInfo
at the root.