



KTF-это небольшое и простое ядро ОС, которое позволяет записать низкоуровневые программные тесты для поддерживаемых машинных архитектур (в настоящее время: x86-64).
x86-64 , x86-32 в выпечкеЕще некоторые функции в создании. Проверьте проблемы.
Быстрый старт - запустить следующие команды. Содержание файловых тестов/test.c будет выполнен. Примечание, последняя команда будет блокировать.
Создайте ktf.iso с нуля, в контейнере Docker.
make clean
make docker:ktf.iso
Загрузите полученное изображение:
make boot
Вам может потребоваться установить следующее (если у вас уже нет):
grub2-common (например, apt install grub2-common )xorriso , grub-pc-bin и mtools ( apt install xorriso grub-pc-bin mtools ) make
make docker:all
make ktf.iso
make docker:ktf.iso
Команда make генерирует эльф-файл MultiBoot, совместимый с kernel64.bin , который вы можете напрямую загружаться с QEMU. Команда make ktf.iso принимает kernel64.bin , помещает его в иерархию grub/boot/ Directory и генерирует ktf.iso из grub/ (используя grub/boot/grub/grub.cfg в качестве конфигурации по умолчанию).
KTF строит и работает на Fedora, но вам нужно будет настроить некоторые команды. Создайте файл makeconf.local с помощью следующего контента (протестировано с помощью Fedora 32):
DIST=$(shell grep NAME= /etc/os-release | cut -d= -f2)
ifeq ($(DIST),Fedora)
GRUB_FILE := grub2-file
GRUB_MKIMAGE := grub2-mkimage
GRUB_MODULES += normal
QEMU_BIN := qemu-kvm
DOCKER_MOUNT_OPTS := :Z
endif
Основной Makefile имеет несколько целей, которые облегчают загрузку KTF с QEMU. Makefile обнаруживает, если хост -система является Linux, и обеспечивает поддержку KVM, если это так. Параметры по умолчанию для QEMU можно найти в Makefile в рамках переменной QEMU_PARAMS .
Для загрузки запуска:
make boot
Для отладки бег:
make boot_debug
Для отладки с помощью GDB Run:
make gdb
Используйте следующий пример конфигурации домена гостя для загрузки KTF с Xen:
name = "kernel64"
builder = "hvm"
memory = 1024
serial = [ 'file:/tmp/kernel.log' , 'pty' ]
disk = [ '/home/user/ktf.iso,,hdc,cdrom' ]
on_reboot = "destroy"
vcpus = 1Вы должны генерировать загрузочный ISO для этого.
Новые тесты могут быть добавлены, добавив новую функцию в файл в папке tests . Каждая тестовая подпись должна быть такой же, как и test_fn представленная в test.h Тесты могут быть включены в grub.cfg , добавив опцию с ключевыми tests и значениями, разделяемый запятой список имен функций, таких как tests=test1,test2,unit_tests .
Стиль этого проекта определяется в файле .clang-format в основном каталоге этого репозитория.
Используйте следующую команду, чтобы автоматически применить стиль к изменяемому вами файлу:
clang-format -style=file -Werror -i MODIFIED_FILEДля получения дополнительной информации см. Https://clang.llvm.org/docs/clangformat.html
В этом проекте используется рабочий процесс действия https://github.com/doozyx/clang-format-lint-action, чтобы автоматически обнаружить несоответствие стиля. Для получения дополнительной информации см. В качестве: https://github.com/marketplace/actions/clang-format-lint
clang-format-lint docker build -t clang-format-lint github.com/DoozyX/clang-format-lint-actionЭто должно быть сделано только один раз.
make stylektf-one-line-scanone-line-scan docker build -t one-line-scan
https://raw.githubusercontent.com/awslabs/one-line-scan/master/tools/Dockerfile docker build -t ktf-one-line-scan
--build-arg USER_ID=$(id -u)
--build-arg GROUP_ID=$(id -g)
--build-arg USER=$USER
--file tools/docker/OnelineScanDockerfile .
Это должно быть сделано только один раз.
HEAD и origin/mainline коммитой make onelinescan[1] http://xenbits.xenproject.org/docs/xtf/
Смотрите Anploying для получения дополнительной информации.
Содействия и пользователи KTF общаются в Slack. Мы создали слабые рабочее пространство, и мы активно делимся идеями, ошибками и всем, что связано с KTF. Не стесняйтесь присоединиться к нам: Slack Invite Link
Этот проект лицензирован по лицензии BSD 2-CLAUSE.