-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Milestone
Description
Create a second edition of the blog, which reorders the posts (exceptions before page tables) and uses an own bootloader. This should make the posts easier to follow.
Edit: This issue will serve as a tracking issue. The “Second Edition” milestone contains all associated issues and pull requests.
Planned high-level changes
- Create a custom, dependency free bootloader
- Written completely in inline assembly to be dependency free (see this comment for details)
- First prototype: https://github.com/rust-osdev/bootloader
- Work out a new order of posts
- Remove the sudden jump in difficulty with the “Page Tables” post
- My current plan: Setup & printing first, then exceptions and hardware interrupts (including keyboard and timer support, and maybe even multithreading), then memory management
- Move more code into the
x86_64
crate- Remove low-level implementation details (e.g. how to align a memory address) from the blog text, but …
- Document the code in the
x86_64
crate very well and ecourage readers to look at it
Further changes
- Link using LLD (Link using lld #370)
- LLD is about to be shipped with rustc: rust: Import LLD for linking wasm objects rust-lang/rust#48125
- “Kernel Heap”: include more allocator types
[ ] Put the kernel in the higher half of the address space (see Tracking Issue for Second Edition #360 (comment))maybe sometimes in the future when we introduce linker scripts- Unit tests and other tests? (see Add testing framework for the kernel robert-w-gries/rxinu#32 for an overview of possibilities)
- Be platform independent: The blog should work on Linux, Mac, and Windows
- There are CI jobs that verify this.
Other planned things
- Use
rustfmt-nightly
so that the code always has standard format. Check formatting via travis. - Docker support (Add docker support #369)
- Make sure that every code snippet has a comment that specifies the file path (Make sure that every code snippet has a comment that specifies the file path #382).
Maybe
[ ] Use a javascript emulator in blog posts (Use javascript emulator in blog posts #368)Postponed, since there is no 64-bit js emulator yet
(This list is far from complete and will be extended over time.)
toothbrush7777777, aaronstgeorge-wf, cafeclimber, AaronStGeorge, liambuchanan and 12 morelight4, nathankleyn and pmuens
Metadata
Metadata
Assignees
Labels
No labels