From 65d5cca746342e2a46534e27abf8b7f74f5b3f19 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 7 Dec 2022 19:02:01 +0100 Subject: [PATCH 01/11] Add draft for December issue --- content/this-month/2022-12/index.md | 100 ++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 content/this-month/2022-12/index.md diff --git a/content/this-month/2022-12/index.md b/content/this-month/2022-12/index.md new file mode 100644 index 00000000..638f47bd --- /dev/null +++ b/content/this-month/2022-12/index.md @@ -0,0 +1,100 @@ ++++ +title = "This Month in Rust OSDev: December 2022" +date = 2023-01-06 + +[extra] +month = "December 2022" +editors = ["phil-opp"] ++++ + +Welcome to a new issue of _"This Month in Rust OSDev"_. In these posts, we give a regular overview of notable changes in the Rust operating system development ecosystem. + + + +This series is openly developed [on GitHub](https://github.com/rust-osdev/homepage/). Feel free to open pull requests there with content you would like to see in the next issue. If you find some issues on this page, please report them by [creating an issue](https://github.com/rust-osdev/homepage/issues/new) or using our _comment form_ at the bottom of this page. + + + +## Infrastructure and Tooling + +In this section, we collect recent updates to `rustc`, `cargo`, and other tooling that are relevant to Rust OS development. + + + + +## Announcements, News, and Blog Posts + + + + +## `rust-osdev` Projects + +In this section, we give an overview of notable changes to the projects hosted under the [`rust-osdev`] organization. + +[`rust-osdev`]: https://github.com/rust-osdev/about + + + + +## Call for Participation + +Want to contribute to a Rust OSDev project, but don't know where to start? Help with one of these outstanding issues! + + + + + +_No tasks were proposed for this section this month._ + + + +If you maintain a Rust project related to operating system development and are looking for contributors, especially for tasks suited to people getting started in this space, please [create a PR](https://github.com/rust-osdev/homepage/pulls) against the `next` branch with the tasks you want to include in the next issue. + +## Other Projects + +In this section, we describe updates to Rust OS projects that are not directly related to the `rust-osdev` organization. Feel free to [create a pull request](https://github.com/rust-osdev/homepage/pulls) with the updates of your OS project for the next post. + + + +## Join Us? + +Are you interested in Rust-based operating system development? Our `rust-osdev` organization is always open to new members and new projects. Just let us know if you want to join! A good way for getting in touch is our [gitter channel](https://gitter.im/rust-osdev/Lobby). From a7ddf4c94fdff9046080cb531f92fd8beaf39361 Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Wed, 7 Dec 2022 20:52:40 +0100 Subject: [PATCH 02/11] 2022-12: low-level related blog posts by @phip1611 --- content/this-month/2022-12/index.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/content/this-month/2022-12/index.md b/content/this-month/2022-12/index.md index 638f47bd..fedd3ad5 100644 --- a/content/this-month/2022-12/index.md +++ b/content/this-month/2022-12/index.md @@ -45,6 +45,23 @@ Please follow this template: - (optional) Some additional context --> +- [Kernel/Boot: Cope with a Relocation by a Bootloader in 32-bit x86 Assembly Code](https://phip1611.de/blog/kernel-boot-cope-with-a-relocation-by-a-bootloader-in-32-bit-x86-assembly-code/) \ + In this blogpost, [@phip1611](https://github.com/phip1611) shows you how you can cope with a + relocation by a bootloader in x86 32-bit assembly code. +- [How Does the “File Size is Smaller Than Mem Size” Optimization Work in GNU ld for the .bss Section?](https://phip1611.de/blog/how-does-the-file-size-is-smaller-than-mem-size-optimization-work-in-gnu-ld/) \ + In this blogpost, [@phip1611](https://github.com/phip1611) explains what properties bring the GNU + linker ld to save disk space, as symbols in the `.bss` section do not need to be statically + allocated inside the ELF. Symbols in the `.bss` segment are expected to be initialized to all + zeroes. +- [GNU ld: Linking .bss into .data to Ensure that Mem Size Equals File Size For Each LOAD Segment (.bss in a PROGBITS Section)](https://phip1611.de/blog/linking-bss-into-data-to-ensure-the-mem-size-equals-file-size-for-each-load-segment-bss-in-a-progbits-section/) \ + In this blogpost, [@phip1611](https://github.com/phip1611) explains what steps you have to do + that the GNU linker put's all symbols of the `.bss` section "as they are" into the binary + so that they occupy zeroed memory in the ELF. This is relevant for some very rudimentary + ELF loaders that are found in some microkernels to bootstrap their initial process. +- [The Probably Simplest x86 Driver Written in Assembly – Printing to QEMU’s debugcon-Device)](https://phip1611.de/blog/the-probably-simplest-x86-driver-written-in-assembly-printing-to-qemus-debugcon-device/) \ + In this blogpost, [@phip1611](https://github.com/phip1611) codes with you probably the simplest + driver that one can write in assembly. *This blogpost is from September but wasn't mentioned here + earlier.* ## `rust-osdev` Projects From 998ddbafdd086759a38e88a8f7ff149c48cca7a9 Mon Sep 17 00:00:00 2001 From: Andy-Python-Programmer Date: Sun, 25 Dec 2022 17:47:46 +1100 Subject: [PATCH 03/11] December 2022: Aero updates Signed-off-by: Andy-Python-Programmer --- content/this-month/2022-12/aero.png | Bin 0 -> 42252 bytes content/this-month/2022-12/index.md | 12 ++++++++++++ 2 files changed, 12 insertions(+) create mode 100644 content/this-month/2022-12/aero.png diff --git a/content/this-month/2022-12/aero.png b/content/this-month/2022-12/aero.png new file mode 100644 index 0000000000000000000000000000000000000000..9839dd78d7ae693f7f98a47658134d931fc51dbd GIT binary patch literal 42252 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 RC}1uBf{CSZ$vJey{{uJWMqU5_ literal 0 HcmV?d00001 diff --git a/content/this-month/2022-12/index.md b/content/this-month/2022-12/index.md index fedd3ad5..97dcaf6a 100644 --- a/content/this-month/2022-12/index.md +++ b/content/this-month/2022-12/index.md @@ -103,6 +103,18 @@ If you maintain a Rust project related to operating system development and are l In this section, we describe updates to Rust OS projects that are not directly related to the `rust-osdev` organization. Feel free to [create a pull request](https://github.com/rust-osdev/homepage/pulls) with the updates of your OS project for the next post. +### [`Andy-Python-Programmer/Aero`](https://github.com/Andy-Python-Programmer/aero) + +(Section written by [@Andy-Python-Programmer](https://github.com/Andy-Python-Programmer)) + +Aero is a new modern, experimental, unix-like operating system following the monolithic kernel design. Supporting modern PC features such as long mode, 5-level paging, and SMP (multicore), to name a few. + +This month, Aero successfully managed to get [`mesa-demos`](https://github.com/freedesktop/mesa-demos) and [`alacritty`](https://github.com/alacritty/alacritty) running. + +![Aero](aero.png) + +In addition, `deps.sh` script was added to automate the process of installing the required dependencies on the host to build the sysroot. + +### [Experimental feature gate proposal `interoperable_abi`](https://github.com/rust-lang/rust/pull/105586) + +This Rust language proposal suggests to create a new `extern "interop"` ABI as a strict superset of the C ABI. +The goal of this new ABI is to "define a standard way to make calls across high-level languages, passing high-level data types, without dropping to the lowest common denominator of C". +For example, it will define a specific memory representation for strings, tuples, and common standard library types such as `Option` and `Result`. + +This new ABI would be very useful for operating system development because there are often multiple executables that need to communicate with each other using a stable ABI. +For example, user-space programs communicate with the kernel using [system calls](https://en.wikipedia.org/wiki/System_call), and with each other porgrams using different forms of [inter-process communication](https://en.wikipedia.org/wiki/Inter-process_communication). +With new `extern "interop"` ABI, these communication boundaries could use safe, higher-level types when both sides are written in Rust. ## Announcements, News, and Blog Posts From 37a3897ce37b2483bd5922dc9d19feed698f01fb Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 2 Jan 2023 10:32:14 +0100 Subject: [PATCH 05/11] Add changes for `rust-osdev/uefi-rs` and `rust-osdev/x86_64` --- content/this-month/2022-12/index.md | 55 +++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/content/this-month/2022-12/index.md b/content/this-month/2022-12/index.md index 64225692..3c7fa8c5 100644 --- a/content/this-month/2022-12/index.md +++ b/content/this-month/2022-12/index.md @@ -90,6 +90,61 @@ In this section, we give an overview of notable changes to the projects hosted u <> --> +### [`uefi-rs`](https://github.com/rust-osdev/uefi-rs) + +Maintained by [@GabrielMajeri](https://github.com/GabrielMajeri), [@nicholasbishop](https://github.com/nicholasbishop), and [@phip1611](https://github.com/phip1611) + +The `uefi` crate provides safe and performant wrappers for [UEFI](https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface), the successor to the BIOS. + +We merged the following changes last month: + +#### Features + +- [Implement `SIMPLE_NETWORK_PROTOCOL`](https://github.com/rust-osdev/uefi-rs/pull/606) +- [Initial support for TCG TPM protocols](https://github.com/rust-osdev/uefi-rs/pull/605) +- [Add `unsafe_protocol` macro and drop use of the unstable `negative_impls` feature](https://github.com/rust-osdev/uefi-rs/pull/607) +- [`UnalignedSlice`: impl `Clone` and improve `Debug`](https://github.com/rust-osdev/uefi-rs/pull/603) +- [Implement `Error` and `Display` traits for `FromStrError`](https://github.com/rust-osdev/uefi-rs/pull/610) +- [Simplification: No longer return "impl Iterator"](https://github.com/rust-osdev/uefi-rs/pull/619) +- [uefi: Add `ptr_meta` dependency](https://github.com/rust-osdev/uefi-rs/pull/621) +- [Drop unstable `maybe_uninit_slice` and `vec_into_raw_parts` features](https://github.com/rust-osdev/uefi-rs/pull/622) + +#### Fixes + +- [uefi: bug fix found by clippy](https://github.com/rust-osdev/uefi-rs/pull/620) + +#### Docs + +- [Add list of possible errors to `BootServices::open_protocol` docs](https://github.com/rust-osdev/uefi-rs/pull/600) +- [Add list of possible errors to some `BootServices` function docs](https://github.com/rust-osdev/uefi-rs/pull/602) +- [Add docs to `BootServices` functions describing error cases](https://github.com/rust-osdev/uefi-rs/pull/604) +- [Shortened error documentation for all methods in `BootServices`](https://github.com/rust-osdev/uefi-rs/pull/608) +- [Replaced UEFI chapter numbers with function identifiers in the docs](https://github.com/rust-osdev/uefi-rs/pull/611) +- [Add some documentation for media protocols](https://github.com/rust-osdev/uefi-rs/pull/614) + +#### Tooling + +- [xtask: Update to mbrman 0.5.1](https://github.com/rust-osdev/uefi-rs/pull/601) +- [Editorconfig: switch to max line width of 80](https://github.com/rust-osdev/uefi-rs/pull/615) + + +Thanks to [@veluca93](https://github.com/veluca93), [@phip1611](https://github.com/phip1611), and [@raccog](https://github.com/raccog) for their contributions! + + +### [`x86_64`](https://github.com/rust-osdev/x86_64) + +Maintained by [@phil-opp](https://github.com/phil-opp), [@josephlr](https://github.com/orgs/rust-osdev/people/josephlr), [@Freax13](https://github.com/orgs/rust-osdev/people/Freax13), and [@rybot666](https://github.com/orgs/rust-osdev/people/rybot666) + +The `x86_64` crate provides various abstractions for `x86_64` systems, including wrappers for CPU instructions, access to processor-specific registers, and abstraction types for architecture-specific structures such as page tables and descriptor tables. + +We merged the following changes in December: + +- [Adding `next_higher_level` to `PageLevelIndex`](https://github.com/rust-osdev/x86_64/pull/400) +- [Adding `is_empty` to `PageTable`](https://github.com/rust-osdev/x86_64/pull/399) +- [fix `Page::from_page_table_indices`](https://github.com/rust-osdev/x86_64/pull/398) (for upcoming `v0.15` release) + +Thanks to [@TornaxO7](https://github.com/TornaxO7) for their contribution! + ## Call for Participation From 745ad3ca21151de4ac9103629b114896a5874ff9 Mon Sep 17 00:00:00 2001 From: Nicholas Bishop Date: Mon, 2 Jan 2023 22:53:23 -0500 Subject: [PATCH 06/11] Add section on default_alloc_error_handler --- content/this-month/2022-12/index.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/content/this-month/2022-12/index.md b/content/this-month/2022-12/index.md index 3c7fa8c5..44a5f17b 100644 --- a/content/this-month/2022-12/index.md +++ b/content/this-month/2022-12/index.md @@ -44,6 +44,13 @@ This new ABI would be very useful for operating system development because there For example, user-space programs communicate with the kernel using [system calls](https://en.wikipedia.org/wiki/System_call), and with each other porgrams using different forms of [inter-process communication](https://en.wikipedia.org/wiki/Inter-process_communication). With new `extern "interop"` ABI, these communication boundaries could use safe, higher-level types when both sides are written in Rust. +### [`default_alloc_error_handler` has been stabilized](https://github.com/rust-lang/rust/pull/102318) + +On `no_std` targets, enabling `alloc` requires providing an OOM (out-of-memory) handler. The usual implementation of this handler just panics, but implementing the handler requires an unstable feature: [`alloc_error_handler`]. The newly-stabilized `default_alloc_error_handler` automatically provides an OOM handler that panics if no custom handler is implemented. This is an [important step towards using some targets on the stable channel][towards-stable]. + +[`alloc_error_handler`]: https://doc.rust-lang.org/unstable-book/language-features/alloc-error-handler.html#alloc_error_handler +[towards-stable]: https://github.com/rust-lang/rust/pull/102318#issuecomment-1331865137 + ## Announcements, News, and Blog Posts +- [Linux 6.1 Released With MGLRU, Initial Rust Code](https://www.phoronix.com/news/Linux-6.1-Released) - [Kernel/Boot: Cope with a Relocation by a Bootloader in 32-bit x86 Assembly Code](https://phip1611.de/blog/kernel-boot-cope-with-a-relocation-by-a-bootloader-in-32-bit-x86-assembly-code/) \ In this blogpost, [@phip1611](https://github.com/phip1611) shows you how you can cope with a relocation by a bootloader in x86 32-bit assembly code. From 4380816b306188cbcb890d72edd8d59b3bcbfc14 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 9 Jan 2023 11:40:51 +0100 Subject: [PATCH 10/11] Add updates for phil-opp/blog_os --- content/this-month/2022-12/index.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/content/this-month/2022-12/index.md b/content/this-month/2022-12/index.md index 2ce42c70..339b25d6 100644 --- a/content/this-month/2022-12/index.md +++ b/content/this-month/2022-12/index.md @@ -251,6 +251,20 @@ This month, Aero successfully managed to get [`mesa-demos`](https://github.com/f In addition, `deps.sh` script was added to automate the process of installing the required dependencies on the host to build the sysroot. +### [`phil-opp/blog_os`](https://github.com/phil-opp/blog_os) +(Section written by [@phil-opp](https://github.com/phil-opp)) + +We merged the following changes to the [_Writing an OS in Rust_](https://os.phil-opp.com/) blog in the past two months: + +- [[Chinese] Translate posts 5-8 and improve translation of posts 1-4](https://github.com/phil-opp/blog_os/pull/1131) + - Thanks to [@liuyuran](https://github.com/liuyuran) for creating this translation. + - Thanks to [@JiangengDong](https://github.com/JiangengDong) and [@Byacrya](https://github.com/Byacrya) for reviewing. +- [[Translation][Korean] post-06](https://github.com/phil-opp/blog_os/pull/1175) and [[Translation][Korean] post-07](https://github.com/phil-opp/blog_os/pull/1177) + - Thanks to [@JOE1994](https://github.com/JOE1994) for creating these translations. + - Thanks to [@dalinaum](https://github.com/dalinaum) for reviewing. +- [French translation's links fixes](https://github.com/phil-opp/blog_os/pull/1166) (thanks to [@alaincao](https://github.com/alaincao)) +- [Specify latest 0.9 patch version of `bootloader`](https://github.com/phil-opp/blog_os/pull/1176) (thanks to [@seewishnew](https://github.com/seewishnew)) +