Kernel/build unpackaged

Материал из ALT Linux Wiki
Внимание: Статья в процессе написания.

Самостоятельная сборка ядра std-def обычными средствами сборки, без создания пакета

Настраиваем сборочную среду

Все собранные пакеты попадают в, доступные на сайте git.alt, git репозитории gears. Репозиторий называется по имени пакета, а бранчи дистрибутива (sisyphus, p10) находятся в соответствующих бранчах git репозитория. Таким образом в Сизифе для ядра с флейвором std-def пакет называется kernel-image-std-def, следовательно путь к его gears репозиторию на git.alt будет /gears/k/kernel-image-std-def.git, а бранч sisyphus.

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

 # apt-get update
 # apt-get install -y rpm-build bc git dwarves flex

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

Будем использовать схему именования позволяющую работать в множеством репозиториев бранчей и апстримов — git remote для gears репозиториев называется gears/флейвор, то есть для std-def это будет gears/std-def, (затем можно будет добавить gears/un-def или апстрим), а git бранч называется флейвор/бранч_дистрибутива, то есть в нашем случае это std-def/sisyphus. Такая схема позволит различить remote и бранчи для разных флейворов.

Далее выходим из root и продолжаем под своим пользователем.

Клонирование репозитория

Клонируем репозиторий так чтоб remote назывался gears/std-def (опция -o) в каталог kernel-image (другие флейворы тоже будут там) и открываем бранч std-def/sisyphus из него:

 $ git clone -n -o gears/std-def http://git.altlinux.org/gears/k/kernel-image-std-def.git kernel-image
 $ cd kernel-image
Примечание: Если у вас уже есть репозиторий с ядром можно добавить к нему наши remote:
 $ cd linux
 $ git remote add -f gears/std-def http://git.altlinux.org/gears/k/kernel-image-std-def.git
Примечание: Через какое-то время понадобится обновить исходный код ядра, можно не повторять предыдущие шаги, а сделать git fetch нужному remote и обязательно открыть нужный бранч заново.
 $ git fetch gears/std-def

Открываем нужный бранч

В нужном бранче уже применены все ALT specific патчи, поэтому, достаточно его открыть. Называем его в соответствии с нашей схемой описанной выше.

Примечание: Опция -B позволит сразу открыть нужный бранч из gears без шага git pull. Поэтому, будьте осторожны если у вас были свои коммиты в std-def/sisyphus.
 $ git checkout -B std-def/sisyphus gears/std-def/sisyphus

Далее можно убедиться, что ядро свежее посмотрев на даты в git log.

Конфигурация ядра

Конечно можно взять готовый конфиг из /boot/config-* или /proc/config.gz, но вероятно, что он не точно соответствует версии ядра, которую вы собираете — поэтому воспроизведем генерацию конфига как она происходит при сборке пакета.

Конфиг собирается из частей находящихся в файлах config*, где к основному конфигу config добавляются конфиги соответствующих архитектуре (config-архитектура) и флейвору (например для std-def добавляется config-std, а для un-def не добавляется).

 $ make mrproper
 $ scripts/kconfig/merge_config.sh -m config config-$HOSTARCH config-std
 $ make olddefconfig

Компиляция ядра

Примечание: Компиляцию лучше производить используя параллельную сборку с опцией -jколичество_потоков, рекомендуемое количество потоков равно количеству ядер в системе.
 # make -j`nproc` bzImage
 # make -j`nproc` modules