How (not) to netboot
Last month, I had a disk image that I wanted to boot on another device.
So, how does that work?
Last month, I had a disk image that I wanted to boot on another device.
So, how does that work?
While I think that golf should be abolished, I think binary golf is pretty neat. So I participated in this year’s Binary Golf Grand Prix. And I didn’t win.
But at least you’ll learn how to write a small UEFI application in Rust.
About two-and-a-half years ago, I released the first version of my bootloader, towboot (see the first post for how and why that happened). It supports UEFI-based x86 systems and Multiboot-comptible kernels.
But there isn’t just a version 1 of Multiboot, there is also a version 2. It’s not that much newer or that much better and there are still various operating systems using Multiboot 1, but still, I thought that it would be nice to add support for the newer version (and get ECTS[^0] for that).
So, let’s see how it went.
You might remember that I wrote a bootloader (see the first post for, why). And you may also remember that
I didn’t perform a test on bare metal
Well, now I did. And it didn’t go too well.
I wrote a bootloader (see the first post for, why). Let’s see what has happenend and what is yet to come.
UEFI-compatible firmwares thankfully provide abstractions that
make writing bootloaders very straight-forward and high-level
in comparison to the legacy BIOS API.
uefi-rs
maps them nicely to Rust data structures and methods.
The Rust support for this environment is rather good,
although some not-so-frequently-used features are not (yet)
supported (see a previous post for more details).
I’m writing a bootloader (see the first post for, why) and now we’ll see how we can check that it actually works.
There are multiple ways to verify that a software works the way it should.
I’m writing a bootloader (see the first post for, why) and now you’ll learn how it actually works.
In the last post, I explained my motivation for why I was writing a bootloader in 2020. For the following parts, you’ll need to learn some stuff first:
A bootloader is basically just glue between the firmware and the kernel. The UEFI API is quite high-level and platform-agnostic, but the Multiboot standard requires dealing with some x86 specifics, which we’ll see shortly.
2020 was a rough year for many people: The world was on fire and there was this virus going on. So I set out to write a bootloader.
Ich habe in den letzten Tagen sehr viel Stuss in den sozialen Medien und in Blogposts über diese neue App gelesen – und da dachte ich mir: Das kannst du auch.
Solltet ihr die App benutzen? Keine Ahnung, das müsst ihr selbst entscheiden.
Nutze ich die App?
Ich habe sie installiert, aber sie funktioniert bei mir leider nicht. Ja.
Bald erscheint Ubuntu 20.04 “Focal Fossa”. Und ihr könnt dabei helfen Bugs zu finden, bevor das fertige Release da ist.
Ich habe mehrere Geräte mit Debian-ähnlichen Linux-Distributionen. Und ich hatte heute Lust, da mal ein bisschen aufzuräumen. Und wo ich schonmal dabei bin, kann ich das auch gleich aufschreiben.
There are a few blog posts, Twitter threads and other stuff I usually recommend to people when talking about a specific topic. I figured it would be nice to collect them all in one place.
Ich bin zum ersten Mal im Kino bei der MRMCD.
Kommste rein, alles leer. Wo sind denn die ganzen Menschen? #mrmcd18
— ich (Twitter; chaos.social)
Ich werde auf der GPN18 in Karlsruhe sein (zum ersten Mal!).
Gulaschprogrammiernacht klingt fast wie ein Kochmarathon für schlaflose Informatikstudenten.
Ich war auf dem 34c3 in Leipzig.
Ich bin auf dem 33c3.
Letztes Jahr war ich auch schon mal um diese Jahreszeit in Hamburg.
Ich habe in letzter Zeit mal ein bisschen herum experimentiert, was Webseitenverschlüsselung angeht.
Menschen! Ganz viele Menschen! Schrecklich! Und es ist bunt, laut und blinkt!
Was hat das jetzt alles mit Stadtaffen zu tun?
Ich habe was zu tun - ich brauche eine ToDo-Liste!
Alles ist grün, die Pollen fliegen und ich habe schon lange nichts mehr geschrieben.
Puh! Jetzt wo ich zweimal richtig geschlafen habe, bin ich hoffentlich wach genug, um drüber zu schreiben:
Früher™ - da war die Welt noch nicht so kompliziert! Alle Linux-Distributionen benutzten SysVinit. Und alles war gut! Na ja, und jetzt gibt es halt viele tolle andere Init-Systeme. Parallel. Also, eigentlich nur noch eins, jetzt wo auch Ubuntu auf systemd setzten möchte bzw. muss.
Es geht eigentlich immer darum, den Start möglichst schnell hinzubekommen. Hier nicht! (Also ersteinmal.)
Ich präsentiere: **YARFI** (noch lange nicht fertig)
Dies ist der erste Eintrag. Also sollte er wohl erzählen, was das Alles hier überhaupt sein soll und auch was es tatsächlich ist.