



KTF هو kernel صغير وبسيط ، والذي يتيح كتابة اختبارات البرمجيات منخفضة المستوى لبنية الماكينة المدعومة (حاليًا: 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 بإنشاء ملف kernel64.bin متعددة القدمين المتوافقة مع ملف ELF المتوافق مع QEMU مباشرة. يأخذ أمر make ktf.iso kernel64.bin ، ويضعه في التسلسل الهرمي grub/boot/ Directory ويقوم بإنشاء ktf.iso من grub/ (باستخدام grub/boot/grub/grub.cfg كتكوين الافتراضي الافتراضي).
تقوم KTF ببناء وتشغيل فيدورا ، لكنك ستحتاج إلى تعديل بعض الأوامر. إنشاء ملف 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 .
لتشغيل التمهيد:
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. أنشأنا مساحة عمل الركود ونشارك بنشاط الأفكار والأخطاء وأي شيء يتعلق بـ KTF هناك. لا تتردد في الانضمام إلينا: رابط دعوة الركود
تم ترخيص هذا المشروع بموجب ترخيص BSD 2-Cause.