Urmăresc primul exemplu de Hello World LKM și acum trebuie să îl compilez.
Conform cărții, Makefile-ul trebuie să fie așa:
obj-m+=hello_world.o
toate:
make -C /lib/module/$(shell uname -r)/build/ M=$(pwd) module
curat:
face -C /lib/modules/$(shell uname -r)/build/ M=$(pwd) curat
Și atunci trebuie să fugi face
(și scrie că nu ar trebui să fugi sudo make
sau veți recompila toate anteturile nucleului Linux).
Rulând acest lucru rezultă:
faceți -C /lib/modules/5.10.63+/build/ M= module
make[1]: se introduce în directorul „/usr/src/rpi-5.10.y”
/bin/sh: 1: nu se poate crea include/generated/uapi/linux/.version.h.tmp: Permisiune refuzată
UPD include/generated/uapi/linux/version.h
mv: nu poate sta „include/generated/uapi/linux/.version.h.tmp”: nu există un astfel de fișier sau director
make[1]: *** [Makefile:1277: include/generated/uapi/linux/version.h] Eroare 1
make[1]: se părăsește directorul „/usr/src/rpi-5.10.y”
make: *** [Makefile:4: all] Eroare 2
Și dacă fug sudo make
sau modificați comenzile Makefile prin sudo make -C...
nu se termină niciodată (>2h și încă așteaptă).
Nu puteam să alerg sudo apt install linux-headers-'uname -r'
(ignorați „, sunt „ dar nu pot să-l plasez aici) pentru că nucleul este ultimul (5.10.63+), dar am urmat toți pașii din carte care spune cum să compilați manual tot nucleul Linux antete, așa că ar trebui să le am.
Vreo idee? Dacă aveți nevoie de informații suplimentare, spuneți-mi ce comandă trebuie să rulez și voi atașa rezultatul.
Mulțumiri!