



KTF เป็นเคอร์เนล OS ขนาดเล็กและเรียบง่ายซึ่งช่วยให้สามารถเขียนการทดสอบซอฟต์แวร์ระดับต่ำสำหรับสถาปัตยกรรมเครื่องที่รองรับ (ปัจจุบัน: 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 สร้างไฟล์ ELF ที่เข้ากันได้กับ kernel64.bin Multiboot ที่คุณสามารถบูตด้วย 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
Main Makefile มีหลายเป้าหมายที่ทำให้การบูต KTF กับ QEMU ง่ายขึ้น Makefile ตรวจพบว่าระบบโฮสต์เป็น Linux และเปิดใช้งานการสนับสนุน KVM หากเป็นเช่นนั้น พารามิเตอร์เริ่มต้นสำหรับ QEMU สามารถพบได้ใน Makefile ภายใต้ตัวแปร QEMU_PARAMS
สำหรับการบูต run:
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/
ดูข้อมูลเพิ่มเติม
ผู้ดูแลและผู้ใช้ KTF สื่อสารใน Slack เราตั้งค่าพื้นที่ทำงานของ Slack และเราแบ่งปันความคิดข้อบกพร่องและสิ่งที่เกี่ยวข้องกับ KTF ที่นั่น อย่าลังเลที่จะเข้าร่วมกับเรา: ลิงค์เชิญ Slack
โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต BSD 2 ข้อ