Re: Bug#370651: kernel-package: README.modules: "User instructions" are incomplete and misleading
reassign 370651 kernel
thanks
On 6 Jun 2006, Frank Küster said:
> I tried to compile third-party modules for 2.6.16, following the
> description in README.modules. It turned out that the descriptions
> could and should be improved.
The description is fine for header packages and source
packages that are produced by kernel-package itself. However,
official header and source packages are incomplete, and are missing
information useful for compiling third party modules using
kernel-package. Since the information is removed _after_ make-kpkg
has created it, I am redirecting this bug report.
> Below USER INSTRUCTIONS, the second item says:
>
> ,----
>> 2) Get kernel sources from your favorite location. (For
>> pre-packaged kernels, it may be possible to build third
>> party modules by getting the kernel-headers package that
>> corresponds to the kernel-image package you have installed,
>> and pointing the build system of the kernel headers -- some
>> packaged modules packages provide an easy way to use the
>> kernel-headers packages, by allowing you to specify it like so:
>> [cd $MODULE_LOC/$module/;
>> ./debian/rules KSRC=/usr/src/kernel-headers-X.Y.ZZ binary
>>> )
> `----
> I'm using a debian kernel, and therefore wanted to try the "headers
> only" way. However, the command above does not work, since
> make-kpkg must first create the debian/ subdirectory in the modules
> directories .
header packages produced by make-kpkg already have this
directory. This is removed, for some reason, from the official
header packages, breaking the building of third party modules by end
users using make-kpkg, or any possibility of just running
./debian/rules modules_image directly.
> Maybe you mean "prepackaged modules" - but I was using the sources
> for three modules packaged for non-free, madwifi, thinkpad and
> fglrx, and those come with tarballs in /usr/src/ that do not contain
> a debian/ subdirectory. I don't know whether any prepackaged module
> debs exist that already contain a debian/ directory. Anyway, it
> should be explained how it's possible to compile modules with
> headers only for an> y kind of module sources.
> So this method does not work.
For official kernel header packages, no, since they are
incomplete.
> I then fetched the complete kernel sources, unpacked them to
> /usr/src/linux-source-2.6.16/, copied /boot/config-2.6.16-2-686 to
> .config and further followed the instructions:
> ,----
>> 5) If you are building a kernel that is custom configured to your
>> specifications at this time, go ahead and configure the
>> kernel with `make config', `make menuconfig', or `make
>> xconfig.' To build a new kernel-image package, execute:
>> make-kpkg --revision number kernel_image
> `----
> So the configure part is done, but I don't want to build a new
> kernel-image package at all, so I skipped this part.
> ,----
>> 6) To build the actual module packages, execute:
>> make-kpkg modules_image
>> This will generate a <name>-modules-<kernel version>.deb file in
>> the parent directory. The revision you supplied while building the
>> kernel shall be used automatically.
>> If you are using an official Debian kernel-image with specific
>> options (kernel-image-x.y.z-foo), you should append this version
>> for modules compilation:
>> make-kpkg --append-to-version -foo modules_image
> `----
>
> Since this refers to using official Debian kernels, and it doesn't
> make sense to recreate the kernel image then, I thought it should
> also work this way. But it doesn't. First, make-kpkg complains
> that I need to run at least "make-kpkg debian" first. I did that,
> but after that include/linux/version.h does not exist, and I get an
> error message that versions don't match (the one from version.h is,
> well, the empty string). This is the only point where I think not
> only README.modules needs adjustment, but also the error message
> from make-kpkg: It should tell me what I have to run to make the
> modules_image target actually work.
Err. This has nothing to do with kernel-package,
include/linux/version.h is created by the kernel buld system, and
since you are taking a short cut, you are expected to know that make
oldconfig would create that.
> Since I and my computer had enough time, I just compiled a (useless)
> kernel image along with the modules images, and that worked fine.
Well, that was the default mechanism.
> I've> also been told that I could have used module-assistant which
> would download the needed headers for me. But I think the
> information in README.modules should be better understandable and
> more correct. Unfortunately I don't know yet how I should have
> proceeded, and therefore cannot provide a better text.
> If this bug report leads to a discussion after which I know better
> how to do it, I offer to write a patch. But maybe you already have
> something prepared, or it can be copied from somewhere?
I think you ran into a broken header package, or, at least,
one that is not condusive to building third party modules with
kernel-package; and so I am redirecting this bug.
manoj
--
Boy, that crayon sure did hurt!
Manoj Srivastava <srivasta@debian.org> <http://www.debian.org/%7Esrivasta/>
1024D/BF24424C print 4966 F272 D093 B493 410B 924B 21BA DABB BF24 424C
Reply to: