Kernel-dev
Установка
-
Склонируйте репозиторий
git clone https://gitflic.ru/project/mrognor/kernel-dev.git -
Настройте все нужные опции в файле config
-
Запустите скрипт конфигурации
sudo ./configure.sh
Конфигурация репозитория
Опции для настройки исходого кода
Репозиторий поддерживает четыре способа получения исходников.
- По умолчанию исходники клонируются с git.kernel.org.
- С помощью параметра CUSTOM_KERNEL_GIT можно указать на путь до git репозитория, откуда нужно склонировать исходный код ядра.
- Параметр CUSTOM_KERNEL_LINK позволяет скачать tar архив с нужной версией ядра с помощью wget.
- Ядро можно скачать самостоятельно и разместить в репозиторий под названием linux.
Дополнительно существует параметр KERNEL_VERSION для переключения git репозитория на нужную версию. Этот параметр игнорируется при tar архиве.
Опции сборки ядра
- Опция LOCAL_VERSION нужна для добавления пользовательской строки к названию файлов ядра и его версии. Эквивалентна одноименной опции для make при сборке ядра.
- С помощью COMPILE_THREADS можно ограничить количество потоков сборки. По умолчанию используются все потоки процессора.
- Для ускорения сборки можно использовать defconfig конфигурацию ядра, для этого используется параметр USE_DEFCONFIG. Он может быть установлен как
noилиyes. Опция эквивалентна одноименной цели для make при конфигурации ядра. Она создает маленький конфиг, с опциями конкретной архитектуры и позволяет значительно сократить время сборки относительно полноценных конфигов. - Можно использовать собственный файл с конфигурацией, указав путь к нему в опции CUSTOM_CONFIG_PATH.
- С помощью COMPILE_RAM можно ограничить потребление оперативной памяти при сборке. По умолчанию ограничение отсутсвует.
-
Опция ADDITIONAL_CONFIG_OPTIONS позволяет дополнительно сконфигурировать ядро. Она поддерживает два режима добавления опций. В одну строку:
ADDITIONAL_CONFIG_OPTIONS=-e CONFIG_OPTION1 -d CONFIG_OPTION2 -m CONFIG_OPTION3В несколько строк:
ADDITIONAL_CONFIG_OPTIONS=" -e CONFIG_OPTION1 -d CONFIG_OPTION2 -m CONFIG_OPTION3 "Все опции будут переданы в одну строчку.
Подсветка синтаксиса
Подсветка синтаксиса в ide привязана к локальному пути. В случае перемещения репозитория, используйте скрипт gen_compile_commands.sh для актуализации всех путей в compile_commands.json и корректной работы clangd.
Очистка
Корректная работа скриптов предполагает автоматическую очистку, а это инструкция для ручной очистки. Для полной очистки системы достаточно просто удалить новые файлы и директории.
Объекты для удаления внутри репозитория:
linux
disk.qcow2
linux-headers-*
linux-image-*
linux-image-*dbg*
linux-libc-dev-*
linux-upstream*.buildinfo
linux-upstream*.changes
В случае ошибок во время исполнения скриптов могут быть созданы дополнительные файлы и директории:
В репозитории в scripts:
disk.raw
disk.qcow2
В /mnt:
qcow*
При использовании nbd происходит блокировка виртуального диска. Самым простым способом освободить диск является перезапуск. Если вас это не устраивает, то можете воспользоваться следующими командами:
umount -l /mnt/path
rm -rf /mnt/path
qemu-nbd -d /deb/nbdN
Тесты
KUnit
Зайдите в сборочный контейнер:
./scripts/container.sh
Перейдите в root пользователя для установки пакетов:
su
Используйте root как пароль.
Установите в контейнер необходимые пакеты:
apt-get install qemu-system-x86
Вернитесь в обычного пользователя:
exit
Очистите репозиторий с помощью команды:
make mrproper
Запустите тесты:
./tools/testing/kunit/kunit.py run --arch=x86_64
Если вам нужно выполнить больше тестов, то скопируйте конфиг тестов в .kunit:
cp tools/testing/kunit/configs/all_tests.config .kunit/.kunitconfig
И запустите тесты:
./tools/testing/kunit/kunit.py run --arch=x86_64