-
Notifications
You must be signed in to change notification settings - Fork 1
Home
The goals of Egg Linux are to be
- byte-for-byte reproducible,
- self-reproducing,
- vanilla, and
- minimal.
Being byte-for-byte reproducible means that
anyone can build Egg Linux from source and get the same result.
In version 0.1, this holds for a limited class of build machines:
recent x86_64 versions of mainstream Linux distributions.
Extending this class is the top priority of the project.
Being able to reproduce itself means that it's powerful enough to serve as a practical starting point for developing Linux installations that are actually useful. In particular, it has a functioning toolchain.
Being vanilla means that it uses the more boring option when there's more than one (e.g., glibc instead of musl).
Being minimal means that it doesn't have anything extraneous to the above goals. There's no X, there's no getty, there's no init. (It doesn't mean that we take the smaller option when there's more than one: that would often reduce vanillaness.)
The current version is Egg Linux 0.1.
To use it, clone the github repo
and follow the directions in the README.
Version 0.1 is commit dcd01056ba0423a67c2de98ddd9d0f9282c04c45,
and the expected final output is
3d4fc36ef39dfb98522114922115718f4fd2fcb6f20d7382e882534f54ea42ba x/checksums/sha256sums
This output has been obtained on recent x86_64 versions of
several mainstream distributions:
- Arch Linux
- CentOS Linux release 7.4.1708 (Core)
- Debian GNU/Linux 9.9 (stretch)
- Gentoo Base System release 2.6
- Mageia 6
- Slackware 14.2
- Ubuntu 14.04.5 LTS
- Ubuntu 18.04.2 LTS
- openSUSE Leap 15.0
as well as Egg Linux 0.1 itself.
If you get something different, please open an issue with some information about your build machine.
The goal for Egg Linux 0.2 is to build reproducibly on
recent x86_64 versions of some eccentric Linux distributions:
ones with unusual libc (e.g., musl),
ones with unusual userland (e.g., busybox),
and ones that are unusual in their own way (e.g., NixOS).