1
0
Fork 0
forked from artemist/blog

Compare commits

...

4 commits
canon ... canon

9 changed files with 1274 additions and 56 deletions

View file

@ -5,7 +5,6 @@ author:
github_username: artemist github_username: artemist
description: >- description: >-
Artemis Tosini's experiments Artemis Tosini's experiments
baseurl: "/blog"
url: "https://artem.ist" url: "https://artem.ist"
theme: minima theme: minima
@ -14,5 +13,7 @@ minima:
social_links: social_links:
- { platform: mastodon, user_url: "https://social.mildlyfunctional.gay/@artemist" } - { platform: mastodon, user_url: "https://social.mildlyfunctional.gay/@artemist" }
- { platform: github, user_url: "https://github.com/artemist" } - { platform: github, user_url: "https://github.com/artemist" }
header_pages:
- about.md
plugins: plugins:
- jekyll-feed - jekyll-feed

View file

@ -0,0 +1,247 @@
---
layout: post
title: Booting the Bootloader
date: 2024-08-11
---
a.k.a "How I wrote a FreeBSD Bootloader"
A few days ago I wrote [a FreeBSD bootloader](https://git.mildlyfunctional.gay/artemist/freeloader/).
There are a few reasons why I did so (I want a better bootloader for [NixBSD](https://github.com/nixos-bsd/nixbsd) and
I want something like [lanzaboote](https://github.com/nix-community/lanzaboote) for FreeBSD),
but mostly I wrote it because I could.
It runs as a UEFI application, reads a kernel from the filesystem, loads it into memory, sets arguments,
and executes it, all without using any of the upstream FreeBSD "stand" code. The code sucks, changing any
settings requires recompiling, it's missing features, and it certainly won't be portable. But it works.
As far as I can tell, the only other project that has done that is grub.
After I posted about it [on fedi](https://social.mildlyfunctional.gay/@artemist/112907665770518105) someone asked
if I was going to write about my project. That seemed like a fun idea, but I'm not sure how useful
a rant about weird FreeBSD design decisions would be to anybody, so instead I'll talk more about my thought
process for reimplementing
## 1. Setting the Scope
When I program I try to take everything into account. I'll constantly be trying to answer questions like:
* "What happens if the firmware is buggy?"
* "What if I want to port this to ARM later?"
* "What if meow?"
This can be useful when I'm trying to write secure fault-tolerant production code,
but it's mostly a hindrance when I'm trying to just get something to work.
Therefore, the first step is setting the smallest scope where I've still accomplished something.
This can be a bit flexible, but for this project I wanted: "load a FreeBSD kernel with serial or graphical output
from a fixed path in an x86_64 VM". I didn't even put "boot from a root filesystem" in scope, but it turned out
that was trivial.
This gives me a sense of accomplishment early in the process and helps banish the "what if" demons [^demon] in my head.
## 2. Understanding the Problem
Before starting any programming I like to have a good idea of what I'm interfacing with.
This tends to mean first learning more general "How do I use $thing" information
then moving onto "How does $thing work".
It's no use knowing how to encode kernel environment if you have no idea what kernel environment is.
While reading documentation sometimes gives me a starting point, it's rarely enough so I quickly
end up experimenting, trying debug features, tracing, and reading the code.
A lot of these suggestions apply whether or not you have source code.
You can try a bunch of inputs, `strace`, dump memory, find important functions, and sometimes enable debug logging
whether or not you have the code, code is just easier to search than binaries.
In this case already had a good idea of the user-visible parts of the boot process [^user-visible]
from working on the NixBSD bootloader so it was immediately time to figure out how the process works.
I spent around 2 days for this project just reading code and writing notes.
My notes skip general concepts I already know and just include reminders and lists of
information I might forget. They're probably not useful to anyone but me, but
could be useful in the future if I want to write documentation.
It would probably behoove me to add important code references to my notes,
but I mostly end up looking through my search history trying to find what I was looking at.
Please don't do this.
(have a sample of my [notes](https://git.mildlyfunctional.gay/artemist/freeloader/src/commit/fb7dcf0f401cad2fb124044df8104747c008a2ed/notes.md) to get an idea of what they include)
```markdown
## Modinfo
Loader must provide modinfo to kernel, a TLV structure
* Dump from normal FreeBSD with `sysctl debug.dump_modinfo`
* Tag is `MODINFO_*` or `MODINFO_METADATA | MODINFOMD_*`
* Tag and length are 4 bytes native endian
* Value is padded to align to `sizeof(size_t)`
* Strings are null-terminated
* Encodes multiple modules in sequence, separated by `MODINFO_NAME` string
### Fields
* `MODINFO_NAME`: string with path to file if available
```
FreeBSD keeps the loader ("stand") and kernel ("sys") code mostly separate, so I simultaneously reverse engineered the
loader serialization and kernel deserialization code.
Before I could do much of anything though, I needed to know where to look.
The easiest starting points are often the beginning or end of a program,
in this case the kernel's entry point and the part of the loader that jumps to it.
The kernel's entry point (`btext`) was relatively easy to find with `readelf -Wa kernel`.
The readelf command gave me the address of the entry point. Since I was using a kernel with
debug symbols, the address is linked to the function name later in the ELF output,
so a quick search gave me the name, and from there [the function](https://cgit.freebsd.org/src/tree/sys/amd64/amd64/locore.S?h=release/14.1.0#n63). [^script]
The loader's exit point was also easy to find. In the standard elf header entry is called
`e_entry`, so I used [ripgrep](https://github.com/BurntSushi/ripgrep) with `rg e_entry`
and immediately found [the function](https://cgit.freebsd.org/src/tree/stand/efi/loader/arch/amd64/elf64_freebsd.c?h=release/14.1.0#n91).
From there I traced where important variables are changed, which quickly led me to the
TODO
## 3. Writing the code
My goal when writing the code is to get something that superficially produces the right output
that I can fix later.
TODO
## 4. Debugging
TODO
## 5. Cleaning up the code
At this point, I generally have code that works, but is terrible. It might use hardcoded constants, have tons of unnecessary debug statements, have no configuration, or just barely work.
From here I have 3 options:
* Don't clean up the code, because I have no plans to use it anymore
* Iteratively clean up the code
* Rewrite the code from scratch with more foresight, maybe copying some parts over
A lot of my projects end up in the first category because they were just experiments to see if I could.
However, if I have any plans to use it in the future, the best option is normally to take a break.
A few days or weeks of thinking it over and talking normally help me figure out how to rewrite or improve
the code.
This is not always advice that I follow myself. The day after I got freeloader working,
I tried to refactor the `Serialize` trait, but ended up spending hours just making the code worse
and threw my work away.
A few days later I realized there was a much better way and could have avoided all that trouble.
## The Boot Process
With all that out of the way, here's what I discovered about the boot process:
The loader stuffs the kernel and all its dependencies into contiguous block of physical memory,
which it calls several things including `modulep` or just `addr`.
I call it the "staging buffer" since it's good a name as any.
On x86 [^x86] it must be aligned on a 2MiB boundary. [^buffer]
### The kernel
The first thing the loader puts in the staging buffer is the kernel.
Conveniently, the kernel is an [ELF](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format),
also used for programs on Linux and FreeBSD, so there's plenty of existing code for parsing it. [^interp]
Like other ELF programs, the kernel specifies the location of metadata and code in its
Program Headers. [^phdr] Although there are a few types here, the loader only cares about `LOAD`
headers, each representing a segment of memory to copy.
Readelf's interpretation of my kernel's program header table:
```
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000040 0xffffffff80200040 0x0000000000200040 0x000268 0x000268 R 0x8
INTERP 0x0002a8 0xffffffff802002a8 0x00000000002002a8 0x00000d 0x00000d R 0x1
[Requesting program interpreter: /red/herring]
LOAD 0x000000 0xffffffff80200000 0x0000000000200000 0x17baa0 0x17baa0 R 0x200000
LOAD 0x17baa0 0xffffffff8037baa0 0x000000000037baa0 0xd5efd8 0xd5efd8 R E 0x200000
LOAD 0xedaa80 0xffffffff810daa80 0x00000000010daa80 0x425e1c 0x425e1c R 0x200000
LOAD 0x1400000 0xffffffff81600000 0x0000000001600000 0x000180 0x001000 RW 0x200000
LOAD 0x1600000 0xffffffff81800000 0x0000000001800000 0x1868b0 0x600000 RW 0x200000
DYNAMIC 0x1400000 0xffffffff81600000 0x0000000001600000 0x000180 0x000180 RW 0x8
GNU_RELRO 0x1400000 0xffffffff81600000 0x0000000001600000 0x000180 0x001000 R 0x1
GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0
NOTE 0x1300648 0xffffffff81500648 0x0000000001500648 0x0001c0 0x0001c0 R 0x4
```
Before it can copy though, the loader takes the `VirtualAddr` of the first `LOAD` segment and
keeps it as an offset. That offset lets the loader place the first segment at the beginning
of the staging buffer but keep the other segments at the correct relative positions. For example, if the staging buffer was at `0xacab_0000_0000`, then the loader would put the first segment of my kernel at `0xacab_0000_0000` and the second at `0xacab_0017_baa0`.
With that offset, the loader looks at each `LOAD` segment and copies from the kernel file (from `Offset` to `Offset + FileSiz` bytes in) to the staging buffer (from `VirtAddr - <load offset>` bytes in).
Note that in some cases `MemSiz > FileSiz`. The loader zeroes the excess amount in the staging buffer,
and the kernel uses it for uninitialized global variables (placed in the section `.bss`).
### The Kernel 2: Electric Boogaloo
At this point all the kernel's code is in RAM,
but it's missing the `.symtab` and `.symstr` sections [^symtab] that the kernel will need later to load modules.
The loader finds these sections by looking at the aptly-named Section Header Table.
Sections include info about the purpose of different parts of the file (e.g. `.text` for code, `.rodata` for constants)
that are useful for linkers but not normally needed to run a program.
Readelf's interpretation of my kernel's section header table:
```
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 0000000000000000 000000 000000 00 0 0 0
[ 1] .interp PROGBITS ffffffff802002a8 0002a8 00000d 00 A 0 0 1
...
[ 9] .text PROGBITS ffffffff8037c000 17c000 d5ea78 00 AX 0 0 4096
...
[58] .SUNW_ctf PROGBITS 0000000000000000 1abdde8 105984 00 59 0 4
[59] .symtab SYMTAB 0000000000000000 17869a8 189d38 18 60 43442 8
[60] .strtab STRTAB 0000000000000000 1910a49 1ad39c 00 0 0 1
```
The loader only needs to give the kernel `.symstr` — which lists the names of functions, global variables, and other "symbols" — and `.symtab` — which provides the address and type of those symbols.
The two sections are only useful with one another, so `.symtab` includes a link to its `.strtab`.
Readelf shows this with the `Lk` field, as in the table above.
Readelf's interpretation of my kernel's symtab and strtab:
```
Symbol table '.symtab' contains 67213 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: ffffffff8037c05a 0 NOTYPE LOCAL DEFAULT 9 l1
2: ffffffff8037c080 0 NOTYPE LOCAL DEFAULT 9 l2
3: ffffffff8037c570 10 FUNC LOCAL DEFAULT 9 camstatusentrycomp
4: ffffffff81808000 112 OBJECT LOCAL DEFAULT 48 sysctl___kern_features_scbus
...
```
With the "why" out of the way, the "how" is relatively simple. The loader:
* Searches the section header table for an entry with type `SYMTAB`
* Copies the length of the symtab section immediately after the kernel
* Copies the symtab section immediately after its length
* Copies the length of the linked strtab section after the symtab
* Copies the strtab section immediately after its length
This leaves the following structure immediately after the kernel (lower addresses on the bottom):
<table style="max-width: fit-content;">
<tr><td>strtab contents</td></tr>
<tr><td>strtab length</td></tr>
<tr><td>symtab contents</td></tr>
<tr><td>symtab length</td></tr>
</table>
The loader then remembers the start and end address of this structure for later.
TODO
### Environment
TODO
### Modinfo
TODO
### Booting
TODO
#### Footnotes
[^demon]: Wait, this is BSD, it's named "beastie" and I want to load it, not banish it
[^user-visible]: Things that a knowledgable system administrator might know about, like kernel environment, module loading, and memdisks
[^script]: I think I did this, but it's also possible that I used the [linker script](https://cgit.freebsd.org/src/tree/sys/conf/ldscript.amd64?h=release/14.1.0#n3)
[^x86]: I think the 2MiB alignment limitation is x86-specific because of the [horrible code](https://cgit.freebsd.org/src/tree/sys/amd64/amd64/machdep.c?h=release/14.1.0#n1273) that causes it, but I haven't actually tried any other architectures
[^buffer]: Historically on x86 this would start at 2MiB (physical address `0x20_0000`) but this isn't possible on modern systems where part could be reserved by EFI.
[^interp]: In fact it's so similar that users could accidentally run it as a program and get confused. To stop this, the kernel's interpreter is set to `/red/herring`.
[^elf]: or is it "elves"?
[^phdr]: Confusingly each entry is called a "Program Header" and is in the "Program Header Table"
[^symtab]: Technically `.symtab` and `.symstr` could be copied as part of a `LOAD` segment and the kernel will know where to look, but I haven't seen it.

42
about.md Normal file
View file

@ -0,0 +1,42 @@
---
layout: page
title: About
---
Hi! I'm Artemis Tosini (artemist).
You might come across me now and then doing weird programming, embedded hardware, or reverse engineering.
When I remember I also take photos which I post on fedi and read about trains.
## Contact Info
* Fediverse: [@artemist@mildlyfunctional.gay](https://social.mildlyfunctional.gay/@artemist)
* Matrix: [@artemist:mildlyfunctional.gay](https://matrix.to/#/@artemist:mildlyfunctional.gay)
* Email: [blog@artem.ist](mailto:blog@artem.ist)
* XMPP: artemist@mildlyfunctional.gay
* Signal: Talk to me in person
* Postcards: PO Box 8003, New York NY 10116-8003 USA
## Programming stuff
* Github: [artemist](https://github.com/artemist)
* Forgejo: [git.mildlyfunctional.gay/artemist](https://git.mildlyfunctional.gay/artemist)
## This website
This site is generated with Jekyll on NixOS, and the source is
public on my [forgejo instance](https://git.mildlyfunctional.gay/artemist/blog).
You should normally access it via [artem.ist](https://artem.ist),
but I also host it on two other URLs:
* [http.artem.ist](http://http.artem.ist/) doesn't require HTTPS, for old browsers like Netscape
* [kstyrdj3ei5qrmebsubl6ajbe2qvmvpcal46ckk6qmtv3h7t6ltf3tyd.onion](http://kstyrdj3ei5qrmebsubl6ajbe2qvmvpcal46ckk6qmtv3h7t6ltf3tyd.onion/) is a native onion site if you want that
## Keys
I still technically have some GPG keys I use for signing stuff.
I have two general use keys on smart cards, and two identity keys in
cold storage in the off chance I do some web of trust stuff.
Communication:
* ECC: [D217 3817 C3E4 B155 EA8F FF49 A545 31E0 D321 43ED]({% link /assets/keys/ecc.gpg %})
* RSA: [3D2B B230 F9FA F0C5 1832 46DD 4FDC 96F1 61E7 BA8A]({% link /assets/keys/rsa.gpg %})
Identity:
* ECC: [923E 5634 1E7B A825 D206 B595 26B0 20F1 4082 EF64]({% link /assets/keys/identity-ecc.gpg %})
* RSA: [29C4 B36C 105F F328 FF03 801A 25B2 0677 37A3 7605]({% link /assets/keys/identity-rsa.gpg %})

160
assets/keys/ecc.gpg Normal file
View file

@ -0,0 +1,160 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=xqJj
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1,147 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
rwsX46NHmeaYsAAHCScSRVluIFT8xhiu
=BH7V
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1,227 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
lTfNfYuJKKyaM2xXMEULvLaAdL4UARXF+gTzRNVvN74YhpmMfQnSw/7VXJqKQLXe
zWBlHqOoaUC++fARuJnDiOMwhDTVnAO1/AZjP3ElpJRtoxe5YhfEOlb5Iq2BMjoc
skfkz+RBM42oNKpQLIt6zQzt71iDYc0QGefAe9wQq6gxNJDiMh8uJwfZ2HDnFK1c
/9u2bJjzs3AzwfYYn/yvLCQgHHhoumK9NGb4lxqFDQXZckaGELFvuIGPwx9SrQon
MeA1ujZF5LaArRLf3k+bupadXcAtQCzFemAAttYL2zEZ9tR3kjGiE5xMYBBhqrrf
IOGFtrRGQXJ0ZW1pcyBUb3NpbmkgKExvbmctdGVybSBpZGVudGl0eSwgUlNBKSA8
aWRlbnRpdHktcnNhQGdwZy5hcnRlbWlzLnJlPoigBBMTCgAGBQJZJvg8AAoJECaw
IPFAgu9kFcgCB2keDB0Sk6GK/6C1B0c5AaApybZPdmTtTix/9/zEjWSIrdI3nt3u
T5AkDxsb5x5IODHCiMHL5OcphN2KN5Dlpu+LAgd6W5gOkuk3EGWmmS5ekh+V8Qw2
0chYymNXoFCwVfENebx7bVKcgs2OeewIiJcM3y6FWQVvMFzGWKnPVyt+z1s6UokC
HAQTAQoABgUCWScSVwAKCRD836La7IVZoLE5D/oCJhIfv3MD/rNmCJ0YWcxTRsqQ
h6UePrr2YpkAa22Zv6Ghh38+X6oEZB6KQ7XMKLuWDAX0ifQMUQ3/PcP7GIG3UnAk
gMTJMGOb5B56S7FKdKfCgbMi2N5yEBMaAzGgxUNPButoZJu+iL6Xws4Xb4cTaIM9
UVFmbCcVB9DB3RKLcK78mQbz7qq4uAZPhWsDeYetFHBUKHXCFP6m38Q2IkxR5Maf
8ZXvJG1NUmby6qzrhYxVLcXpKAWExjIXdB+xIrkjVTtoCP/+JjKtNyQ8aK0ZV5Bi
RPRLn3LWSB3Vm6vULMqjydJGlo6kOO7FPH1LEfE+0drk+5tWw6PpG6fHVWHZgAA/
iWJlrkGh7dyAnqdvtPLZf8my/X4n1ubVYBE4/7Cy6EzqbrijMx80jzuXWIOclTXH
jNR8SxQ4zzFO5g/HY1sjXCPvIACMNVyqHjIb/xoiY+kgh61ip3btEIVO238+WBrX
WR2/CjQwh4kS/3A6FfwaQrRMQ/b+V+1yN1VATZLCidybjsSbGztq17mKS/OjDGMW
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
L9Gnc1kGgtSolsw6+5ZNMQ/YzB50Czs/JxU=
=xW1L
-----END PGP PUBLIC KEY BLOCK-----

432
assets/keys/rsa.gpg Normal file
View file

@ -0,0 +1,432 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
Ppkj7kA=
=uS89
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -17,41 +17,7 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs"
"utils": "utils"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
} }
} }
}, },

View file

@ -1,32 +1,28 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs"; nixpkgs.url = "github:nixos/nixpkgs";
utils.url = "github:numtide/flake-utils";
}; };
outputs = outputs =
{ { self, nixpkgs }:
self, let
nixpkgs, lib = nixpkgs.lib;
utils, makePkgs =
}: system:
(utils.lib.eachDefaultSystem ( import nixpkgs {
system:
let
pkgs = import nixpkgs {
inherit system; inherit system;
overlays = [ self.overlays.default ]; overlays = [ self.overlays.default ];
}; };
in forAllSystems = f: lib.genAttrs lib.systems.flakeExposed (system: f (makePkgs system));
{ in
formatter = pkgs.nixfmt-rfc-style; {
packages.default = pkgs.artemist-blog; formatter = forAllSystems (pkgs: pkgs.nixfmt-rfc-style);
devShells.default = pkgs.mkShell { packages = forAllSystems (pkgs: {
buildInputs = pkgs.artemist-blog.buildInputs ++ (with pkgs; [ bundix ]); default = pkgs.artemist-blog;
}; });
} devShells = forAllSystems (pkgs: {
)) default = pkgs.mkShell { buildInputs = pkgs.artemist-blog.buildInputs ++ (with pkgs; [ bundix ]); };
// { });
overlays.default = final: prev: { overlays.default = final: prev: {
artemist-blog = artemist-blog =
let let