



KTF는 작고 간단한 OS 커널로 지원되는 기계 아키텍처에 대한 저수준 소프트웨어 테스트를 작성할 수 있습니다 (현재 : x86-64).
x86-64 , x86-32 베이킹더 많은 기능이 만들어지고 있습니다. 문제를 확인하십시오.
빠른 시작은 다음 명령을 실행하는 것입니다. 파일 tests/test.c의 내용이 실행됩니다. 마지막 명령이 차단됩니다.
Docker 컨테이너에 ktf.iso를 처음부터 구축하십시오.
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 Multiboot 호환 ELF 파일을 생성하여 QEMU로 직접 부팅 할 수 있습니다. make ktf.iso 명령은 kernel64.bin grub/boot/grub/grub.cfg 와서 grub/boot/ directory 계층에 배치하고 grub/ 에서 ktf.iso 생성합니다.
KTF는 Fedora에서 구축하고 실행되지만 일부 명령을 조정해야합니다. 다음 내용 (Fedora 32로 테스트)으로 makeconf.local 파일을 만듭니다.
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 에는 QEMU를 사용하여 KTF 부팅을 더 쉽게 만드는 몇 가지 대상이 있습니다. Makefile 호스트 시스템이 Linux인지 감지하고 그렇다면 KVM 지원을 활성화합니다. QEMU의 기본 매개 변수는 QEMU_PARAMS 변수의 Makefile 에서 찾을 수 있습니다.
부팅 실행 :
make boot
디버깅 실행 :
make boot_debug
GDB 실행으로 디버깅 :
make gdb
Xen을 사용하여 KTF를 부팅하려면 다음 게스트 도메인 구성 예제를 사용하십시오.
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.h 에서 제공된 test_fn 과 동일해야합니다. 주요 tests 와 값으로 옵션을 추가하여 grub.cfg 에서 테스트를 활성화 할 수 있습니다. 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-scan 컨테이너를 만듭니다one-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와 관련된 모든 것을 적극적으로 공유하고 있습니다. 우리와 함께하십시오 : Slack Invite Link
이 프로젝트는 BSD 2-Clause 라이센스에 따라 라이센스가 부여됩니다.