수정된 FreeBSD 소스 코드를 테스트하는 방법은 무엇입니까?

수정된 FreeBSD 소스 코드를 테스트하는 방법은 무엇입니까?

cc_newreno.c( 에 위치 /usr/src/sys/netinet/cc) 라는 소스 파일의 복사본을 생성하고 이를 변경하여 cc_newreno_mod.cFreeBSD(NewReno)의 기본 정체 제어 알고리즘을 수정하려고 합니다.

내가 몇 가지 수정을 했다고 가정해 보겠습니다. 어떻게 테스트하나요? cc_newreno_mod.c내장된 C 컴파일러를 사용하여 직접 컴파일하면 여러 오류가 발생하며 그 중 일부는 이상해 보입니다(예 netinet/cc/cc_module.h file not found: 파일이 분명히 있음에도 불구하고).

새 커널을 빌드해야 합니까? 변경된 파일의 모듈이 자동으로 생성되나요? 아니면 제가 완전히 틀렸기 때문에 다른 접근 방식을 취해야 합니까?

답변1

커널 모듈을 컴파일하려면 Makefile커널 모듈 makefile을 생성하고 포함 해야 합니다 /usr/src/share/mk/bsd.kmod.mk. 예를 들면 다음과 같습니다.

# Note: It is important to make sure you include the <bsd.kmod.mk>  makefile after declaring the KMOD and SRCS variables.

# Declare Name of kernel module
KMOD    =  module

# Enumerate Source files for kernel module

SRCS    =  module.c

# Include kernel module makefile
.include <bsd.kmod.mk>

마지막으로 make를 실행하여 컴파일하면 올바르게 컴파일되는지 테스트할 수 있습니다.
커널 모듈( )에는 나타나지 않지만 /boot/kernel/*.ko나열되어 있기 때문에 sys/conf/files변경 사항을 적용하려면 커널을 다시 컴파일해야 할 것 같습니다. 자세한 내용은 다음을 참조하세요.페이지. 복사본이기 때문에 cc_newreno.c원본 복사본의 이름을 /usr/src/sys/netinet/cc/cc_newreno.c다른 이름으로 바꾸어 저장하고 거기에 새 복사본을 복사한 후 다시 컴파일할 수 있습니다.

답변2

netinet은 현재 커널 모듈이 아니므로 수정된 파일을 sys/conf/files에 추가하는 것이 좋습니다.

관련 정보