Como testar o código-fonte modificado do FreeBSD?

1

Estou tentando modificar o algoritmo de controle de congestionamento padrão no FreeBSD (NewReno) criando uma cópia do arquivo de origem ( cc_newreno.c , localizado em /usr/src/sys/netinet/cc ) chamado cc_newreno_mod.c e fazendo alterações nele.

Suponha que eu tenha feito algumas modificações. Como faço para testá-los? Compilar o cc_newreno_mod.c diretamente (usando o compilador C embutido) resulta em vários erros, alguns dos quais parecem estranhos (por exemplo netinet/cc/cc_module.h file not found , embora o arquivo claramente esteja lá).

Devo criar um novo Kernel? O módulo do arquivo alterado será criado automaticamente? Ou estou totalmente errado e devo ter uma abordagem diferente?

    
por KarlisL 18.04.2015 / 21:00

2 respostas

2

Para compilar o módulo do kernel, você deve criar Makefile e incluir o kernel makefile /usr/src/share/mk/bsd.kmod.mk , por exemplo:

# 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>

E finalmente você roda o make para compilá-lo para que possa testá-lo se ele compilar corretamente.
E como não é apresentado nos módulos do kernel ( /boot/kernel/*.ko ), mas está listado em sys/conf/files , acho que você deve recompilar seu kernel para aplicar mudanças. Para mais informações, consulte esta página . Como é uma cópia de cc_newreno.c , você pode renomear seu original /usr/src/sys/netinet/cc/cc_newreno.c para outra coisa para salvá-lo e copiar o novo ali e recompilar.

    
por 18.04.2015 / 22:11
0

netinet não é atualmente um módulo do kernel, então sugiro adicionar seu arquivo modificado para sys / conf / files.

    
por 18.04.2015 / 22:35