The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Funtoo:Metro/Evolved Bootstrap
This page documents how to use Funtoo from Scratch, aka Evolved Boostrap to create a stage1 that is then fed to metro to build a stage3. This is an advanced functionality that ties together our Funtoo from Scratch effort under Evolved Bootstrap with our official Metro stage builder, allowing a Funtoo stage3 to be built that is not based on a pre-existing Funtoo system.
Evolved Bootstrap
The Evolved Bootstrap project allows for the creation of a stage1 Funtoo tarball completely from a non-Funtoo/non-Gentoo environment, fully cross-compiled and from scratch. Once the stage1 is created, it can be fed to Metro which will turn it into a stage3. But first, we need the bootstrapped stage1.
In order to create a stage1 tarball using Evolved Bootstrap, you will want to follow the instructions located at https://code.funtoo.org/bitbucket/projects/CORE/repos/ffs/browse/README.rst. Use the LXD setup instructions to successfully complete a GNU build, as follows:
user $ cd ~/ffs user $ ci/lxd-baremetal/bin/ffs gnu x86-64bit
Once the build completes successfully, a stage1 will have been built, but is not (yet) automatically captured into a tarball. To do this, you will need to enter the container to grab it:
user $ lxc exec ffs-drobbins-x86-64bit-gnu-test -- /bin/bash --login container # cd /root/ffs-repo/tmp/stage1root container # tar cvf /var/tmp/stage1.tar --xattrs --acls . container # exit user $ lxc file pull ffs-drobbins-x86-64bit-gnu-test/var/tmp/stage1.tar . user $ scp /var/tmp/stage1.tar root@metro-host:/var/tmp/
You now have a stage1.tar
next-release tarball outside of the container, which can then be copied to a system set up with Metro, and used to seed a Metro build, which we will cover next.
Seeding Metro
You will need a system set up to run Metro. The typical way you want to use this is to follow the Initial Setup instructions, and initialize Metro to build a generic_64
next-release build for x86-64bit
. Assuming you have this set up in /home/mirror/funtoo/next/x86-64bit/generic_64
, which is the default location, here is how you will set up Metro to use your stage1. Replace 2022-10-10
with the current date on your Linux system:
root # cd /home/mirror/funtoo/next/x86-64bit/generic_64 root # mkdir 2022-10-10 root # mv /var/tmp/stage1.tar stage1-generic_64-next-2022-10-10.tar
For this to work, the name of the stage1 must match the specific expected name above, which is in the format stage1-subarch-release-date.tar
. That's it! What we have done is set up Metro so that it thinks it has already built a valid stage1, so if we run the build script, this artifact will not be rebuilt -- and it will proceed to use the stage1 to build a stage2, and use the stage2 to build a stage3. Perform this build by running the following command:
root # cd /root/metro/scripts root # ./ezbuild.sh next x86-64bit generic_64 full
Metro will proceed to build the stage2 and stage3, and you can follow the logs at /home/mirror/funtoo/next/x86-64bit/generic_64/2022-10-10/log/stage2.log
.