
Estou seguindo o primeiro exemplo de um Hello World LKM e agora preciso compilá-lo.
De acordo com o livro, o Makefile precisa ser assim:
obj-m+=hello_world.o
all:
make -C /lib/modules/$(shell uname -r)/build/ M=$(pwd) modules
clean:
make -C /lib/modules/$(shell uname -r)/build/ M=$(pwd) clean
E então você precisa executar make
(e diz que você não deve executar sudo make
ou recompilará todos os cabeçalhos do kernel Linux).
Ao executar isso, ele gera:
make -C /lib/modules/5.10.63+/build/ M= modules
make[1]: Entering directory '/usr/src/rpi-5.10.y'
/bin/sh: 1: cannot create include/generated/uapi/linux/.version.h.tmp: Permission denied
UPD include/generated/uapi/linux/version.h
mv: cannot stat 'include/generated/uapi/linux/.version.h.tmp': No such file or directory
make[1]: *** [Makefile:1277: include/generated/uapi/linux/version.h] Error 1
make[1]: Leaving directory '/usr/src/rpi-5.10.y'
make: *** [Makefile:4: all] Error 2
E se eu executar sudo make
ou alterar os comandos do Makefile, sudo make -C ...
ele nunca termina (>2h e ainda está esperando).
Não consegui rodar sudo apt install linux-headers-'uname -r'
(ignore o ', eles são ` mas não posso colocar aqui) porque o kernel é o último (5.10.63+), mas segui todos os passos do livro que explica como fazer compilar manualmente todos os cabeçalhos do kernel Linux, então eu deveria tê-los.
Qualquer ideia? Se você precisar de alguma informação extra, diga-me qual comando preciso executar e anexarei a saída.
Obrigado!