Kernel/build packages: различия между версиями
Vt (обсуждение | вклад) Нет описания правки |
Vt (обсуждение | вклад) |
||
Строка 56: | Строка 56: | ||
<pre>rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux Sisyphus/x86_64 classic | <pre>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</pre> | rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux Sisyphus/noarch classic</pre> | ||
{{Примечание| Соответственно, для сборки под '''p10''', нужно заменить тут <code>Sisyphus</code> на <code>p10/branch</code>, в этом случае <code>[alt]</code> надо заменить на <code>[p10]</code>. (Значение в квадратных скобках указывает, какими ключами проверять подписи при установке пакетов, поэтому отсутствие в этих ссылках <code>https</code> не критично.) Для сборки под другую архитектуру заменяйте <code>x86_64</code>, скажем, на <code>i586</code> (так же надо поменять значение у <code>def_target</code> в <code>config</code>).}} | {{Примечание| Соответственно, для сборки под '''p10''', нужно заменить тут <code>Sisyphus</code> на <code>p10/branch</code>, в этом случае <code>[alt]</code> надо заменить на <code>[p10]</code>. (Значение в квадратных скобках указывает, какими ключами проверять подписи при установке пакетов, поэтому отсутствие в этих ссылках <code>https</code> не критично.) Для сборки под другую архитектуру заменяйте <code>x86_64</code>, скажем, на <code>i586</code> (так же надо поменять значение у <code>def_target</code> в <code>~/.hasher/config</code>).}} | ||
Для того чтоб убедиться, что hasher настроен и работает можно запустить <code>hsh --init</code>. | Для того чтоб убедиться, что hasher настроен и работает можно запустить <code>hsh --init</code>. |
Версия от 17:37, 13 ноября 2022
Самостоятельная сборка ядра с помощью средства пакетирования (hasher) на примере std-def
Все пакеты в Альт собираются с помощью инструмента hasher и ядро не исключение. Для того, чтоб воспроизвести сборку пакета ядра вам понадобится около 26 гигабайт дискового пространства. Сборка не будет на 100% совпадать с оригинальным пакетом так как у вас будет различаться сборочная среда — версии утилит с помощью которых осуществлялась сборка.
Настраиваем использование hasher
Настройка системы
Под root ставим необходимые пакеты и настраиваем hasher:
root# apt-get update root# apt-get install -y hasher gear kernel-build-tools
Для вашего пользователя добавляем пользователей-сателлитов. Допустим, у вас рабочий пользователь 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
Для того чтоб убедиться, что 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/
.
Сборка без тэга
В релизном тэге могут указыааются важные параметры сборки — для ядра это флейвор. Для сборки без тэга необходимо его установить в правильное значение (и не забывать менять, если вы собираете ядро другого флейвора) в Git конфиге репозитория:
linux$ git config --local gear.specsubst.kflavour std-def
Затем применяете ваши изменения, например отключаем DEBUG_INFO, который включен в config
:
linux$ scripts/config --file config -d DEBUG_INFO linux$ git commit -a -m "Turn off DEBUG_INFO"
Если вы не меняли версию ядра а лишь применили изменения конфигурации или патч, то поменяйте в kernel-image.spec
сверху, в строке Release:
значение с alt1
на alt2
. Это позволит не перепутать ваше ядро с ядром из репозитория. Далее добавляем %changelog
запись:
linux$ safe-add-changelog -e "Turned off DEBUG_INFO." kernel-image.spec
Ваши изменения можно закоммитить, но не обязательно. И наконец сборка:
linux$ gear-hsh --commit |& tee build.log