kernel buildsystem broken on RO medium
How to build external kernel modules using kernel buildsystem from RO medium?
make[1]: Entering directory `/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd'
Calling toplevel makefile of kernel source tree, which I believe is in KDIR=/lib/modules/2.6.1/build
NOTE: please ignore warnings regarding overriding of SUBDIRS
/usr/bin/make -C /lib/modules/2.6.1/build SUBDIRS=/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd modules make[2]: Entering directory `/usr/src/linux-2.6.1'
HOSTCC scripts/modpost.o
cc1: Permission denied: opening dependency file scripts/.modpost.o.d make[3]: *** [scripts/modpost.o] Error 1
make[2]: *** [scripts] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.1'
make[1]: *** [kbuild] Error 2
make[1]: Leaving directory `/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd'
Are there any patches that fix this part of build system (if I remember correctly someone created such patch but I didn't find it)?
Signature · 2 lines
Arkadiusz Miśkiewicz CS at FoE, Wroclaw University of Technology arekm.pld-linux.org AM2-6BONE, 1024/3DB19BBD, arekm(at)ircnet, PLD/Linux
Quoted 11 lines · Arkadiusz Miskiewicz
How to build external kernel modules using kernel buildsystem from RO medium?
make[1]: Entering directory `/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd'
Calling toplevel makefile of kernel source tree, which I believe is in KDIR=/lib/modules/2.6.1/build
NOTE: please ignore warnings regarding overriding of SUBDIRS
/usr/bin/make-C/lib/modules/2.6.1/buildSUBDIRS=/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd modules
Use the O= option to specify a separate output directory, where you have RW permissions.
Sam
Quoted 12 lines · Sam Ravnborg
Quoted 11 lines · Arkadiusz Miskiewicz
How to build external kernel modules using kernel buildsystem from RO medium?
make[1]: Entering directory
`/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd'Calling toplevel makefile of kernel source tree, which I believe is
in KDIR=/lib/modules/2.6.1/build
NOTE: please ignore warnings regarding overriding of SUBDIRS
Quoted 5 lines
Quoted 2 lines
/usr/bin/make-C/lib/modules/2.6.1/buildSUBDIRS=/home/users/misiek/rpm/BUILD/drbd-0.6.10/drbd modulesUse the O= option to specify a separate output directory, where you have RW permissions.
I forgot to write that O= option doesn't work too good:
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ make -C /lib/modules/2.6.1/build SUBDIRS=pwd modules O=pwd/tmp
make: Entering directory `/usr/src/linux-2.6.1'/usr/src/linux-2.6.1/Makefile:391: .config: No such file or directory
The present kernel configuration has modules disabled. Type 'make config' and enable loadable module support. Then build a kernel with module support enabled.
make[1]: *** [modules] Error 1
make: *** [modules] Error 2
make: Leaving directory `/usr/src/linux-2.6.1'
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ ls -l /usr/src/linux-2.6.1/.config
-rw-r--r-- 1 root root 47918 Jan 5 18:31 /usr/src/linux-2.6.1/.config
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ cp /usr/src/linux-2.6.1/.config ./tmp/ [misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ make -C /lib/modules/2.6.1/build SUBDIRS=pwd modules O=pwd/tmp
make: Entering directory `/usr/src/linux-2.6.1'
Using /usr/src/linux-2.6.1 as source for kernel
/usr/src/linux-2.6.1 is not clean, please run 'make mrproper'
in the '/usr/src/linux-2.6.1' directory.
make[1]: *** [prepare1] Error 1
make: *** [modules] Error 2
make: Leaving directory `/usr/src/linux-2.6.1'
and /usr/src/linux-2.6.1 is read-only.
But let's try:
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ sudo make -C /usr/src/linux-2.6.1/ mrproper Could not retrieve tty information.
make: Entering directory `/usr/src/linux-2.6.1'
RM $(CLEAN_FILES)
Making mrproper in the srctree
RM $(MRPROPER_DIRS) + $(MRPROPER_FILES)
make: Leaving directory `/usr/src/linux-2.6.1'
[misiek@arm ~/rpm/BUILD/drbd-0.6.10/drbd]$ make -C /lib/modules/2.6.1/build SUBDIRS=pwd modules O=pwd/tmp
Wow now works but tell me, how to do make mrproper if /usr/src/linux-2.6.1 is really read-only? I'm asking because I want to build rpms with kernel modules from non-root and root can have non-mrproper state in /usr/src/linux-2.6.1.
Quoted 1 line
Sam
Signature · 2 lines
Arkadiusz Miśkiewicz CS at FoE, Wroclaw University of Technology arekm.pld-linux.org AM2-6BONE, 1024/3DB19BBD, arekm(at)ircnet, PLD/Linux
Quoted 3 lines
Wow now works but tell me, how to do make mrproper if
/usr/src/linux-2.6.1is really read-only? I'm asking because I want to build rpms with kernel modules from non-root and root can have non-mrproper state in/usr/src/linux-2.6.1.
There is no way to do this, other than take a copy of the SRC. It was not possible to let kbuild support building a kernel when the kernel tree contained generated files.
I do not remember the details, but the main issue was with generated .c files. If a generated .c file were present in the kernel src, it would not be generated aging in the separate output directory.
Usually this is not too much of a big deal, but it could result in potential erros later on.
There were also problems with _shipped support and generated .h files, but I do not recall the details.
In the 2.7 timeframe I plan to be a bit more restrictive on use of -I directive to gcc, hereby hopefully enabling more consistent behaviour all over the kernel.
Sam