Kernel/build packages

Материал из ALT Linux Wiki

Самостоятельная сборка ядра с помощью средства пакетирования (hasher) на примере std-def

Все пакеты в Альт собираются с помощью инструмента hasher и ядро не исключение. Для того, чтоб воспроизвести сборку пакета ядра вам понадобится около 26 гигабайт дискового пространства. Сборка не будет на 100% совпадать с оригинальным пакетом так как у вас будет различаться сборочная среда — версии утилит с помощью которых осуществлялась сборка.

Настраиваем использование hasher

Настройка системы

Под root ставим необходимые пакеты и настраиваем hasher:

 root# apt-get update
 root# apt-get install -y hasher gear

Для вашего пользователя добавляем пользователей-сателлитов. Допустим, у вас рабочий пользователь devel, тогда команды следующие:

 root# hasher-useradd devel
 Adding user devel to group devel_a
 Adding user devel to group devel_b
 Adding user devel to group hashman

Добавляем в /etc/hasher-priv/system строки:

 allowed_mountpoints=/proc,/dev/pts,/dev/shm,/sys
 allowed_devices=/dev/kvm
 allow_ttydev=yes

Запускаем необходимый сервис:

 root# systemctl enable --now hasher-privd

Настройка пользователя

По умолчанию hasher использует системные APT репозитории, но все это настраивается (через ~/.hasher/config документация в man hsh). Под пользователем создаем рабочий и конфигурационный каталоги:

 $ mkdir -p ~/hasher ~/.hasher

Дополнительно нужно сконфигурировать hasher, например для сборки из Сизифа под x86_64, примеры содержимого трех конфигурационных файлов:

Файл ~/.hasher/config

 known_mountpoints=/proc,/dev/pts,/dev/kvm
 lazy_cleanup=yes
 def_target=x86_64
 apt_config=~/.hasher/apt.conf

lazy_cleanup=yes не обязателен и нужен для того чтоб сборочная среда не была очищена после сборки, если вы захотите ей воспользоваться через hsh-shell.

Файл ~/.hasher/apt.conf

 Dir::Etc::main "/dev/null";
 Dir::Etc::parts "/var/empty";
 Dir::Etc::SourceParts "/var/empty";
 Dir::Etc::SourceList "/home/devel/.hasher/sources.list";

Обратите внимание, что в параметре SourceList указан полный путь в домашний каталог вашего пользователя devel.

Файл ~/.hasher/sources.list

rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux Sisyphus/x86_64 classic
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux Sisyphus/noarch classic
Примечание: Соответственно, для сборки под p10, нужно заменить тут Sisyphus на p10/branch, в этом случае [alt] надо заменить на [p10]. (Значение в квадратных скобках указывает, какими ключами проверять подписи при установке пакетов, поэтому отсутствие в этих ссылках https не критично.) Для сборки под другую архитектуру заменяйте x86_64, скажем, на i586 (так же надо поменять значение у def_target в config).

Для того чтоб убедиться, что hasher настроен и работает можно запустить hsh --init.

Получаем исходный код

Получите и проверьте целостность исходного кода как описано в статье "Получение исходного кода ядер Альт с помощью Git".

Сборка из пакетного тэга

Самый простой вариант — собрать из пакетного Git тэга. Для этого находим нужный тэг — у ядра они как правило начинаются на kernel-image- содержат флейвор, версию и релиз через дефис. Например, вы хотите собрать тэг kernel-image-std-def-5.15.78-alt1.

 linux$ gear-hsh -t kernel-image-std-def-5.15.78-alt1 |& tee build.log
 ...
 Wrote: /usr/src/RPM/SRPMS/kernel-image-std-def-5.15.78-alt1.src.rpm (w2T16.xzdio)
 Wrote: /usr/src/RPM/RPMS/x86_64/kernel-image-std-def-5.15.78-alt1.x86_64.rpm (w2T16.xzdio)
 ...

На производительной машине это может занять 20-30 минут. RPM пакеты появятся в каталоге ~/hasher/repo/.