ReadMe.md

Kernel-dev

Установка

  1. Склонируйте репозиторий

    git clone https://gitflic.ru/project/mrognor/kernel-dev.git
    
  2. Настройте все нужные опции в файле config

  3. Запустите скрипт конфигурации

    sudo ./configure.sh
    

Видеодемонстрация процесса.

Конфигурация репозитория

Опции для настройки исходого кода

Репозиторий поддерживает четыре способа получения исходников.

  1. По умолчанию исходники клонируются с git.kernel.org.
  2. С помощью параметра CUSTOM_KERNEL_GIT можно указать на путь до git репозитория, откуда нужно склонировать исходный код ядра.
  3. Параметр CUSTOM_KERNEL_LINK позволяет скачать tar архив с нужной версией ядра с помощью wget.
  4. Ядро можно скачать самостоятельно и разместить в репозиторий под названием linux.

Дополнительно существует параметр KERNEL_VERSION для переключения git репозитория на нужную версию. Этот параметр игнорируется при tar архиве.

Опции сборки ядра

  1. Опция LOCAL_VERSION нужна для добавления пользовательской строки к названию файлов ядра и его версии. Эквивалентна одноименной опции для make при сборке ядра.
  2. С помощью COMPILE_THREADS можно ограничить количество потоков сборки. По умолчанию используются все потоки процессора.
  3. Для ускорения сборки можно использовать defconfig конфигурацию ядра, для этого используется параметр USE_DEFCONFIG. Он может быть установлен как no или yes. Опция эквивалентна одноименной цели для make при конфигурации ядра. Она создает маленький конфиг, с опциями конкретной архитектуры и позволяет значительно сократить время сборки относительно полноценных конфигов.
  4. Можно использовать собственный файл с конфигурацией, указав путь к нему в опции CUSTOM_CONFIG_PATH.
  5. С помощью COMPILE_RAM можно ограничить потребление оперативной памяти при сборке. По умолчанию ограничение отсутсвует.
  6. Опция 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
Описание

Репозиторий для разработки под ядро

Конвейеры
0 успешных
0 с ошибкой