I thought that catalyst was able to build stages “from scratch.” If catalyst builds stages from scratch, then why does it need a “seed stage”?
Good question. As you know, a stage2 and stage3 are dependent on previous stages for building, which is expected and made clear by their name (ie. a “stage2” implies that there was a “stage1”.) However, catalyst does need a seed stage for building a stage1, so in regards to building a stage1 it’s worth looking into why this is necessary. When building a stage1, catalyst uses the seed stage3 to set up a chroot environment. Inside the chroot environment, the new stage1 is built by setting the ROOT environment variable to /tmp/stage1root. This instructs the package manager to merge all new packages not to the current filesystem, but to the filesystem in /tmp/stage1root. Catalyst then tars up /tmp/stage1root and it becomes the target stage1. What this means is that when catalyst builds a stage1, the stage1 itself does not inherit any binaries or libraries from the seed that is used. The seed that is used does impact the target stage1 somewhat — the Linux headers on the seed are used for b