Skip to content

Commit a003fc9

Browse files
authored
this-month 22/03: personal projects from phip1611 (#93)
* this-month 22/03: personal projects from phip1611 * this-month 22/03: linux-libc-auxv added * wording
1 parent cdccc2f commit a003fc9

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

content/this-month/2022-03/index.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,48 @@ In this section, we describe updates to Rust OS projects that are not directly r
114114

115115
This month, ...
116116

117+
### [`phip1611/simple-chunk-allocator`](https://github.com/phip1611/simple-chunk-allocator)
118+
119+
<span class="gray">(Section written by [@phip1611](https://github.com/phip1611))</span>
120+
121+
Philipp Schuster recently released an initial version of his [simple-chunk-allocator](https://github.com/phip1611/simple-chunk-allocator)
122+
crate. It focuses on being a very simple-to-use general purpose allocator that "just works" for various workloads
123+
in `no_std` context. A bitmap is used for bookkeeping of used blocks/chunks. This enables a simple algorithm that is easy
124+
to understand. The allocator uses a combination of the strategies "next fit" and "best fit". It is usable as `#[global_allocator]`
125+
and operates on static memory, i.e., no paging mechanism involved. The crate is suited to manage the heap inside a kernel
126+
or in a similar `no_std` application. It is part of the roottask in [Philipp's Diplom (Master) Thesis](https://github.com/phip1611/diplomarbeit-impl)
127+
where he wrote a runtime system for a Microkernel in Rust.
128+
129+
130+
### [`phip1611/linux-libc-auxv`](https://github.com/phip1611/linux-libc-auxv)
131+
132+
<span class="gray">(Section written by [@phip1611](https://github.com/phip1611))</span>
133+
134+
Philipp Schuster recently released an initial version of his [linux-libc-auxv](https://github.com/phip1611/linux-libc-auxv)
135+
crate. The crate enables the creation and the parsing of the initial Linux stack layout. This layout is a
136+
special data structure that Linux prepares for applications before they start execution. The C runtime behind the
137+
`_start` symbol of a libc implementation uses this to find program arguments, environment variables, and the
138+
auxiliary vector. The layout is tricky to create because the creator must ensure that the layout is valid in the
139+
address space of the target. However, `linux-libc-auxv` found a way to cope with this.
140+
141+
You can write a "freestanding" binary, i.e., without libc, with this crate, run it under Linux and parse the stack
142+
layout yourself. This is similar to what the libc does, before Rust's runtime starts, that eventually calls the
143+
main function of a Rust program.
144+
145+
The crate is part of [Philipp's Diplom (Master) Thesis](https://github.com/phip1611/diplomarbeit-impl)
146+
where he wrote a runtime system for a Microkernel in Rust that can emulate Linux behaviour and run unmodified
147+
Linux applications.
148+
149+
### [`phip1611/diplomarbeit-impl`](https://github.com/phip1611/diplomarbeit-impl)
150+
151+
<span class="gray">(Section written by [@phip1611](https://github.com/phip1611))</span>
152+
153+
Philipp Schuster submitted his Diplom (Master) Thesis at TU Dresden where he build a policy-free system-call layer for
154+
the Hedron microhypervisor. The project comes with a runtime system written in Rust for the microkernel and involves
155+
a roottask that enables the execution of unmodified Linux binaries through an OS personality/Linux emulation. The
156+
runtime system covers several interesting aspects of OS development, such as interaction with a kernel, system call
157+
emulation, and starting programs from ELF files.
158+
117159
## Join Us?
118160

119161
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).

0 commit comments

Comments
 (0)