



KTF est un noyau de système d'exploitation petit et simple, qui permet d'écrire des tests logiciels de bas niveau pour les architectures de machines prises en charge (actuellement: x86-64).
x86-64 , x86-32 dans la cuissonCertaines autres fonctionnalités sont en préparation. Découvrez les problèmes.
Le démarrage rapide consiste à exécuter les commandes suivantes. Le contenu des tests de fichiers / test.c sera exécuté. Remarque, la dernière commande bloquera.
Construisez un ktf.iso à partir de zéro, dans le conteneur Docker.
make clean
make docker:ktf.iso
Démarrer l'image résultante:
make boot
Vous devrez peut-être installer ce qui suit (sauf si vous l'avez déjà):
grub2-common (par exemple apt install grub2-common )xorriso , grub-pc-bin et mtools (par exemple apt install xorriso grub-pc-bin mtools ) make
make docker:all
make ktf.iso
make docker:ktf.iso
La commande make génère le fichier ELF compatible kernel64.bin compatible multiboot, que vous pouvez démarrer directement avec Qemu. La commande make ktf.iso prend le kernel64.bin , la place dans la hiérarchie grub/boot/ répertoire et génère un ktf.iso hors de la grub/ (en utilisant grub/boot/grub/grub.cfg comme configuration de grub par défaut).
KTF construit et fonctionne sur Fedora, mais vous devrez modifier certaines des commandes. Créez un fichier makeconf.local avec le contenu suivant (testé avec 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
Main Makefile a plusieurs cibles qui facilitent le démarrage de KTF avec QEMU. Le Makefile détecte si le système hôte est Linux et permet le support KVM si c'est le cas. Les paramètres par défaut pour Qemu peuvent être trouvés dans la variable Makefile sous QEMU_PARAMS .
Pour le démarrage de Run:
make boot
Pour le débogage de la course:
make boot_debug
Pour le débogage avec GDB Run:
make gdb
Utilisez l'exemple de configuration du domaine invité suivant pour démarrer KTF avec Xen:
name = "kernel64"
builder = "hvm"
memory = 1024
serial = [ 'file:/tmp/kernel.log' , 'pty' ]
disk = [ '/home/user/ktf.iso,,hdc,cdrom' ]
on_reboot = "destroy"
vcpus = 1Vous devez générer une ISO amorçable pour cela.
De nouveaux tests peuvent être ajoutés en ajoutant une nouvelle fonction dans un fichier dans le dossier tests . Chaque signature de test doit être la même que test_fn fourni dans test.h Les tests peuvent être activés dans grub.cfg en ajoutant l'option avec tests de clé et valent la liste des noms de fonction séparés par les virgules, tels que tests=test1,test2,unit_tests .
Le style de ce projet est défini dans le fichier .clang-format dans le répertoire principal de ce référentiel.
Utilisez la commande suivante pour appliquer automatiquement le style au fichier que vous modifiez:
clang-format -style=file -Werror -i MODIFIED_FILEPour plus d'informations, reportez-vous à: https://clang.llvm.org/docs/clangformat.html
Ce projet utilise https://github.com/doozyx/clang-forat-lint-action workflow Action pour détecter automatiquement les non-matraques de style. Pour plus d'informations, reportez-vous à: https://github.com/marketplace/actions/clang-format-lint
clang-format-lint docker build -t clang-format-lint github.com/DoozyX/clang-format-lint-actionCela ne doit être fait qu'une seule fois.
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 .
Cela ne doit être fait qu'une seule fois.
HEAD et origin/mainline engage make onelinescan[1] http://xenbits.xenproject.org/docs/xtf/
Voir contribuer pour plus d'informations.
Les responsables et les utilisateurs de KTF communiquent en Slack. Nous avons mis en place un espace de travail Slack et nous partageons activement des idées, des bugs et tout ce qui est lié à KTF là-bas. N'hésitez pas à nous rejoindre: lien d'invitation Slack
Ce projet est sous licence en vertu de la licence BSD 2 clause.