



KTF ist ein kleiner und einfacher OS-Kernel, mit dem Softwaretests auf niedrigem Niveau für unterstützte Maschinenarchitekturen geschrieben werden können (derzeit: x86-64).
x86-64 , x86-32 im BackenEinige weitere Funktionen sind zu machen. Schauen Sie sich die Probleme an.
Der schnelle Start besteht darin, die folgenden Befehle auszuführen. Der Inhalt der Datei tests/test.c wird ausgeführt. Hinweis, der letzte Befehl blockiert.
Bauen Sie im Docker -Container einen KTF.ISO von Grund auf neu.
make clean
make docker:ktf.iso
Starten Sie das resultierende Bild:
make boot
Möglicherweise müssen Sie Folgendes installieren (es sei denn, Sie haben es bereits):
apt install grub2-common grub2-common Paket (z.xorriso , grub-pc-bin und mtools Paket (z apt install xorriso grub-pc-bin mtools make
make docker:all
make ktf.iso
make docker:ktf.iso
Der Befehl make -Befehl generiert die kernel64.bin Multiboot-kompatible ELF-Datei, die Sie direkt mit QEMU bauen können. Der Befehl make ktf.iso nimmt den kernel64.bin ein, platziert ihn in grub/boot/ verzeichnishierarchie und generiert einen ktf.iso aus der grub/ (mit grub/boot/grub/grub.cfg als Standard -GRUB -Konfiguration).
KTF baut und läuft auf Fedora, aber Sie müssen einige der Befehle optimieren. Erstellen Sie eine makeconf.local -Datei mit dem folgenden Inhalt (getestet mit 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 hat mehrere Ziele, die das Booten von KTF mit QEMU erleichtern. Das Makefile erkennt, ob das Host -System Linux ist, und ermöglicht die Unterstützung von KVM, wenn ja. Standardparameter für QEMU finden Sie in der Makefile unter QEMU_PARAMS -Variable.
Für den Booting -Lauf:
make boot
Für Debugging Run:
make boot_debug
Zum Debuggen mit GDB -Lauf:
make gdb
Verwenden Sie das folgende Beispiel für die Guest -Domänenkonfiguration, um KTF mit Xen zu booten:
name = "kernel64"
builder = "hvm"
memory = 1024
serial = [ 'file:/tmp/kernel.log' , 'pty' ]
disk = [ '/home/user/ktf.iso,,hdc,cdrom' ]
on_reboot = "destroy"
vcpus = 1Dafür müssen Sie eine bootfähige ISO generieren.
Neue Tests können hinzugefügt werden, indem eine neue Funktion in einer Datei im Ordner tests hinzugefügt wird. Jede Testsignatur muss mit test_fn in test.h übereinstimmen. Tests können in grub.cfg aktiviert werden, indem die Option mit tests hinzugefügt und bewertet wird. Die von den Kommas getrennte Liste von Funktionsnamen wie tests=test1,test2,unit_tests .
Der Stil für dieses Projekt ist in .clang-format Datei im Hauptverzeichnis dieses Repositorys definiert.
Verwenden Sie den folgenden Befehl, um den Stil automatisch auf die von Ihnen geänderte Datei anzuwenden:
clang-format -style=file -Werror -i MODIFIED_FILEWeitere Informationen finden Sie unter: https://clang.llvm.org/docs/clangformat.html
Dieses Projekt verwendet https://github.com/doozyx/clang-format-lint-action-Action-Workflow, um automatische Fehlanpassungen von Stilen zu erkennen. Weitere Informationen erhalten
clang-format-lint Container docker build -t clang-format-lint github.com/DoozyX/clang-format-lint-actionDies muss nur einmal erfolgen.
make stylektf-one-line-scan Container aufone-line-scan Basisbild herunter 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 .
Dies muss nur einmal erfolgen.
HEAD und origin/mainline make onelinescan[1] http://xenbits.xenproject.org/docs/xtf/
Weitere Informationen finden Sie unter Beitrag.
Betreuer und Benutzer von KTF kommunizieren in Slack. Wir haben einen Slack -Arbeitsbereich eingerichtet und teilen aktiv Ideen, Fehler und alles, was mit KTF zu tun hat. Fühlen Sie sich frei, sich uns anzuschließen: Slacklading Link
Dieses Projekt ist unter der BSD 2-Clause-Lizenz lizenziert.