Kernel/build unpackaged: различия между версиями
Vt (обсуждение | вклад) Нет описания правки |
Vt (обсуждение | вклад) Нет описания правки |
||
Строка 16: | Строка 16: | ||
Далее выходим из root и продолжаем под своим пользователем. | Далее выходим из root и продолжаем под своим пользователем. | ||
=== Клонирование репозитория === | === Клонирование репозитория === | ||
Клонируем репозиторий так чтоб remote назывался gears/std-def (опция <code>-o</code>) в каталог <code>kernel-image</code> (другие флейворы тоже будут там) и открываем бранч <code>std-def/sisyphus</code> из него: | Клонируем репозиторий так, чтоб remote назывался gears/std-def (опция <code>-o</code>) в каталог <code>kernel-image</code> (в будущем другие флейворы тоже будут там) и открываем бранч <code>std-def/sisyphus</code> из него: | ||
$ git clone -n -o gears/std-def http://git.altlinux.org/gears/k/kernel-image-std-def.git kernel-image | $ git clone -n -o gears/std-def http://git.altlinux.org/gears/k/kernel-image-std-def.git kernel-image | ||
Строка 24: | Строка 24: | ||
$ git remote add -f gears/std-def http://git.altlinux.org/gears/k/kernel-image-std-def.git | $ git remote add -f gears/std-def http://git.altlinux.org/gears/k/kernel-image-std-def.git | ||
}} | }} | ||
{{Примечание| Через какое-то время понадобится обновить исходный код ядра, можно не повторять предыдущие шаги, а сделать <code>git fetch</code> нужному remote и обязательно открыть нужный бранч | {{Примечание| Через какое-то время понадобится обновить исходный код ядра, можно не повторять предыдущие шаги, а сделать <code>git fetch</code> нужному remote и обязательно открыть/обновить нужный бранч (см. ниже). | ||
$ git fetch gears/std-def | $ git fetch gears/std-def | ||
}} | }} | ||
Строка 30: | Строка 30: | ||
=== Открываем нужный бранч === | === Открываем нужный бранч === | ||
В нужном бранче уже применены все ALT specific патчи, поэтому, достаточно его открыть. Называем его в соответствии с нашей схемой описанной выше. | В нужном бранче уже применены все ALT specific патчи, поэтому, достаточно его открыть. Называем его в соответствии с нашей схемой описанной выше. | ||
'''Первоначальное''' (после клонирования) открытие бранча — создание локального бранча <code>std-def/sisyphus</code> соответствующего <code>gears/std-def/sisyphus</code> (то есть бранчу <code>sisyphus</code> в remote <code>gears/std-def</code>). | |||
$ git checkout -B std-def/sisyphus gears/std-def/sisyphus | $ git checkout -B std-def/sisyphus gears/std-def/sisyphus | ||
'''Последующее''' (после <code>git fetch</code>) открытие бранча и его обновление: | |||
$ git checkout std-def/sisyphus | |||
$ git pull --rebase | |||
Далее можно убедиться, что ядро свежее посмотрев на даты в <code>git log</code>. | Далее можно убедиться, что ядро свежее посмотрев на даты в <code>git log</code>. |
Версия от 06:04, 9 ноября 2022
Самостоятельная сборка ядра 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 git bc dwarves flex libelf-devel zlib-devel openssl openssl-devel
Получаем исходный код
Будем использовать схему именования позволяющую работать в множеством репозиториев бранчей и апстримов — 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
Открываем нужный бранч
В нужном бранче уже применены все ALT specific патчи, поэтому, достаточно его открыть. Называем его в соответствии с нашей схемой описанной выше.
Первоначальное (после клонирования) открытие бранча — создание локального бранча std-def/sisyphus
соответствующего gears/std-def/sisyphus
(то есть бранчу sisyphus
в remote gears/std-def
).
$ git checkout -B std-def/sisyphus gears/std-def/sisyphus
Последующее (после git fetch
) открытие бранча и его обновление:
$ git checkout std-def/sisyphus $ git pull --rebase
Далее можно убедиться, что ядро свежее посмотрев на даты в 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
Компиляция ядра
$ make -j`nproc` bzImage $ make -j`nproc` modules