



KTF adalah kernel OS kecil dan sederhana, yang memungkinkan menulis tes perangkat lunak tingkat rendah untuk arsitektur mesin yang didukung (saat ini: x86-64).
x86-64 , x86-32 dalam memanggangBeberapa fitur lagi sedang dibuat. Lihat masalahnya.
Awal yang cepat adalah menjalankan perintah berikut. Konten file tes/test.c akan dieksekusi. Catatan, perintah terakhir akan memblokir.
Bangun KTF.ISO dari awal, di wadah Docker.
make clean
make docker:ktf.iso
Boot gambar yang dihasilkan:
make boot
Anda mungkin perlu menginstal yang berikut (kecuali jika Anda sudah memilikinya):
grub2-common (misalnya apt install grub2-common )xorriso , grub-pc-bin , dan mtools (misalnya apt install xorriso grub-pc-bin mtools ) make
make docker:all
make ktf.iso
make docker:ktf.iso
Perintah make menghasilkan file ELF kernel64.bin Multiboot-Compatible, yang dapat Anda boot langsung dengan QEMU. Perintah make ktf.iso mengambil kernel64.bin , menempatkannya dalam hierarki grub/boot/ direktori dan menghasilkan ktf.iso dari grub/ (menggunakan grub/boot/grub/grub.cfg sebagai konfigurasi grub default).
KTF membangun dan menjalankan di fedora, tetapi Anda harus mengubah beberapa perintah. Buat file MakeConf.local dengan konten berikut (diuji dengan 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 utama memiliki beberapa target yang membuat booting KTF dengan QEMU lebih mudah. Makefile mendeteksi jika sistem host adalah Linux dan memungkinkan dukungan KVM jika demikian. Parameter default untuk QEMU dapat ditemukan di variabel Makefile di bawah QEMU_PARAMS .
Untuk booting run:
make boot
Untuk menjalankan debugging:
make boot_debug
Untuk debugging dengan GDB Run:
make gdb
Gunakan contoh konfigurasi domain tamu berikut untuk booting KTF dengan Xen:
name = "kernel64"
builder = "hvm"
memory = 1024
serial = [ 'file:/tmp/kernel.log' , 'pty' ]
disk = [ '/home/user/ktf.iso,,hdc,cdrom' ]
on_reboot = "destroy"
vcpus = 1Anda perlu menghasilkan ISO yang dapat di -boot untuk ini.
Tes baru dapat ditambahkan dengan menambahkan fungsi baru dalam file di folder tests . Setiap tanda tangan tes harus sama dengan test_fn yang disediakan dalam test.h Tes dapat diaktifkan di grub.cfg dengan menambahkan opsi dengan tests dan nilai-nilai daftar nama fungsi yang dipisahkan koma, seperti tests=test1,test2,unit_tests .
Gaya untuk proyek ini didefinisikan dalam file .clang-format .
Gunakan perintah berikut untuk menerapkan gaya secara otomatis ke file yang Anda ubah:
clang-format -style=file -Werror -i MODIFIED_FILEUntuk informasi lebih lanjut, lihat: https://clat.llvm.org/docs/clatformat.html
Proyek ini menggunakan https://github.com/doozyx/lik-format-lint-action Action Workflow untuk mendeteksi ketidakcocokan gaya secara otomatis. Untuk informasi lebih lanjut, lihat: https://github.com/marketplace/actions/lik-format-lint
clang-format-lint docker build -t clang-format-lint github.com/DoozyX/clang-format-lint-actionIni harus dilakukan hanya sekali.
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 .
Ini harus dilakukan hanya sekali.
HEAD dan origin/mainline make onelinescan[1] http://xenbits.xenproject.org/docs/xtf/
Lihat berkontribusi untuk informasi lebih lanjut.
Pemelihara dan pengguna KTF berkomunikasi di Slack. Kami mengatur ruang kerja yang slack dan kami secara aktif berbagi ide, bug, dan apa pun yang terkait dengan KTF di sana. Jangan ragu untuk bergabung dengan kami: tautan undangan slack
Proyek ini dilisensikan di bawah lisensi BSD 2-Clause.