[OpenAFS] redhat 7.1 kernel modules

Derek Atkins warlord@MIT.EDU
22 Jun 2001 11:36:36 -0400

"Jonathan Day" <jd9812@my-deja.com> writes:

> Red Hat has this rather irritating habit of putting the headers into
> two spaces - /usr/include/ and /usr/src/linux/include/. This has two
> effects:

There is a reason for this..  GLIBC was compiled against a particular
version of the kernel.  The kernel-headers against which GLIBC was
compiled (and against which all USER-LEVEL applications should
compile) are stored in /usr/include/{linux,asm}.

The headers for the specific kernel being run are supposed to live
(according to Linus) in /lib/modules/<vers>/build/include/{linux,asm}.

For brevity, Red Hat makes a symlink so that /lib/modules/<vers>/build
points to /usr/src/linux-<vers>.

> First, upgrading a kernel won't necessarily upgrade both sets of
> headers. The result of this is that it's impossible to be sure that
> the kernel you're using and the modules compiled against it are for
> the same version.

Wrong.  Kernel modules should be building against the kernel-space
headers in /lib/modules/<vers>/build, not the user-space headers in
/usr/include/.  I admit that there might be a problem in how the
kernel modules are compiled such that /usr/include is actually in the
header-path.  This _might_ be causing some of the problems we've been
seeing, however I don't think so.

> Second, if you're cross-compiling, you have absulutely no idea what
> assembler headers you're using.

This may be true, but Linux has never been a good cross-compiling
platform, IMHO.

> I try to encourage users and developers, AS STANDARD, to eliminate
> the /usr/include/[linux, asm] directories, and symlink to the main
> tree, even if the main tree just has those two directories. In the
> end, it does save a lot of stress and may reduce your Dilbert Index
> to within bounds the human frame was designed to stand.

And I disagree with this procedure.  But I don't feel strongly enough
about it to really argue.

> On a related note, I notice that OpenAFS -only- seems to compile for
> Linux 2.4.2 (the kernel that came with RH 7.1 - Seawolf). Are there
> any reports of people getting AFS to run under Linux 2.4.5 or later?

Huh?  You are confused.  It should compile for anything, provided you
give the appropriate options.  It may only be setup to automatically
compile for 2.4.2, and the distributed modules (for Red Hat) are
certainly only for 2.4.2-2, but it should compile against any version
of Linux you want to supply.


       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord@MIT.EDU                        PGP key available