Руководство по сборке Funtoo в окружении, не основанном на Funtoo Linux. Цель — показать процесс создания stage3 Funtoo в «произвольном» linux-окружении на примере GNU сборки.
Данное руководство базируется на оригинальных материалах:
- Funtoo from Scratch Integrated into Metro
- Funtoo: Metro/Evolved Bootstrap
- Funtoo: Metro/Initial Setup
1. Evolved Bootstrap - создание stage1 в произвольном окружении
Evolved Bootstrap
aka Funtoo From Scratch
- инструмент, позволяющий создать stage1-тарбол Funtoo из окружения, никак не связанного с Funtoo или Gentoo.
Funtoo From Scratch
можно запустить в любой linux-подобной среде, которая имеет
компилятор C и установленный Python3 с пакетами PyYAML и Jinja2. Для использования Funtoo From Scratch в системе отличной по архитектуре от целевой системы необходимы утилита fchroot
и QEMU.
Но, идеальным окружением для Funtoo From Scratch
является Linux с установленным LXD, позволяющая использовать готовую систему сборки в виде изолированного Funtoo-контейнера. Вам фактически не нужны PyYAML
, Jinja2
, QEMU
и Fchroot
на вашей локальной системе, так как они будут автоматически установлены и использованы внутри контейнера.
Предварительные условия:
- linux-система с
LXD
Получение исходного кода Evolved Bootstrap
:
user $ git clone https://code.funtoo.org/bitbucket/scm/core/ffs.git
Создание GNU-cборки stage1:
user $ cd ffs
user $ ci/lxd-baremetal/bin/ffs gnu x86-64bit
Упаковка и получение тарбола:
user $ lxc exec ffs-<user>-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-<user>-x86-64bit-gnu-test/var/tmp/stage1.tar .
Теперь у вас есть stage1.tar
, необходимый для дальнейшего создания собственного релиза Funtoo на целевой системе.
Ссылки:
2. Metro - создание stage3 на целевой системе
Metro
- инструмент, используемый в Funtoo Linux для сборки новых релизов.
Предварительные условия:
- Python3 с установленными пакетами
fchroot, lxml, requests
Установка:
root # cd /root
root # git clone https://code.funtoo.org/bitbucket/scm/core/metro.git
Создание файла конфигурации:
root # cp /root/metro/metro.conf /root/.metro
Файл конфигурации задаёт месторасположение Metro
, и если оно отличается от /root/metro
, то необходимо внести соответствующие изменения. Также в ходе работы Metro
создаёт «зеркало» - организованное хранилище, по умолчанию оно будет располагаться в /home/mirror/funtoo
. Этот путь также определяется в /root/.metro
и должен быть изменен, если вы используете расположение не по умолчанию.
Запуск скрипта установки:
root # /root/metro/scripts/setup
Скрипт установки предварительно предложит выбрать параметры сборки - релиз, целевую архитектуру и целевую sub-arch.
Выбор релиза, рекомендуемый вариант - next
:
.www.funtoo.org / funtoo
1. 1.4-release-std
2. next
Выбор архитектуры целевой системы:
.www.funtoo.org / funtoo / next
1. arm-64bit
2. riscv-64bit
3. x86-64bit
Выбор целевой sub-arch:
.www.funtoo.org / funtoo / next / x86-64bit
1. amd64-bulldozer
2. amd64-excavator
3. amd64-k10
4. amd64-piledriver
5. amd64-steamroller
6. amd64-zen
7. amd64-zen2
8. amd64-zen3
9. core2_64
10. generic_64
11. intel64-broadwell
12. intel64-haswell
13. intel64-ivybridge
14. intel64-nehalem
15. intel64-sandybridge
16. intel64-silvermont
17. intel64-skylake
18. intel64-westmere
Скрипт установки выполняет несколько последовательных шагов для настройки вашей сборки. При первом запуске выполняется загрузка шаблонного stage3, на основе которого будет осуществляться сборка вашего релиза, поэтому его выполнение может занять некоторое время.
Ниже пример для выбранного релиза next
, архитектуры x86-64bit
и sub-arch generic_64
.
Предварительно, перед началом сборки необходимо поместить полученный ранее stage1 в каталог с релизами. Проверить наличие или создать каталог с текущей датой:
root # mkdir /home/mirror/funtoo/next/x86-64bit/generic_64/2022-10-13
Скопировать тарбол с именем по шаблону stage1-<subarch>-<release>-<date>.tar
:
root # cp /path/to/stage1.tar /home/mirror/funtoo/next/x86-64bit/generic_64/2022-10-13/stage1-generic_64-next-2022-10-13.tar
Сборка нового релиза:
root # /root/metro/scripts/ezbuild.sh next x86-64bit generic_64 full
Процесс сборки отражается в файлах журналов, контролировать его можно:
root # tail -f /home/mirror/funtoo/next/x86-64bit/generic_64/2022-10-13/log/stage{1|2|3}.txt
Когда сборка завершена, её результаты можно найти по пути со следующей структурой /home/mirror/funtoo/<release>/<arch>/<subarch>/<date>/
. В нашем примере это будет:
root # ls /home/mirror/funtoo/next/x86-64bit/generic_64/2022-10-13/
root # ls /home/mirror/funtoo/next/x86-64bit/generic_64/2022-10-13/stage*
.../stage1-generic_64-next-2022-10-13.tar
.../stage2-generic_64-next-2022-10-13.tar
.../stage3-generic_64-next-2022-10-13.tar
Ссылки:
3. Что дальше?
Переходить к установке Funtoo Linux на целевую систему, следуя инструкции и используя полученный выше stage3
на этапе Install Guide: Download and Extract Stage3
.
Ссылки: