Previously it would fail if no symbol table for libc was available,
because the named first argument used in the break point condition
would not be found. Instead, use registers according to the calling
convention for x86_64 and aarch64 and fall back to the named argument
(relying on symbols) for other architectures.
The same boot manager is used for both stages. A dfferent file name
is only used to detect the loading of the second stage to swap out
the served BCD.
This should have been part of 28bfedb610
where the instructions were changed from the manual to the GDB based
method.
At the moment individual components are built using a specific Alpine
version (3.20.3) as specifed on the command line for the various docker
commands.
However, alpine-make-rootfs(1) was called with ALPINE_BRANCH=edge,
resulting in a newer initramfs than expected by indvividual packages
such as dislocker. This version mismatch caused runtime errors because
shared libraries were not found.
A fixed Alpine version was initially chosen in hope to get a more
stable/reproducable setup, but maybe it would make more sense to just
always use the latest stable version.
Should hopefully fix#6.
Except for the Windows boot manager the necesary artifacts are downloaded
from public resources.
This work was done in parallel and drew some inspiration from similar
avenues by Andreas Grasser.
https://github.com/andigandhi/bitpixie
It is based on a stripped down version of Filippo Valsorda's rootfs-free
immutable NAS project with various bitpixie related hacks added.
https://words.filippo.io/dispatches/frood/