What is "generic" kernel? Why does module-assistant work?

Derek Broughton news at pointerstop.ca
Mon May 26 23:56:37 UTC 2008

Paul Johnson wrote:

> I'm new in Ubuntu, coming from RedHat/Fedora.
> I encountered some weirdness after I installed the openafs client
> program.  I noticed in the logs from apt that a kernel module had to
> be built for that program and I followed some steps it mapped out.
> module-assistant prepare openafs-modules
> module-assistant auto-build openafs-modules
> Seemed to work OK--plopped some deb packages into /usr/src.  It is a
> bit too automagical for my taste, though.
> I don't understand why it worked, and I feel a bit "out of control".
> Maybe all those years of building RPMs damaged my brain.  I'm looking
> to understand the debian build framework.  In RPM framework, there
> would be a designated directory structure with subdirectories for the
> SOURCE code, the BUILD, the SPEC (equivalent to control file & pre  &
> post scripts), and results would go into RPM and SRPM.

Same here - and modules (and kernels) go into /usr/src.
> 1. Why can't the "ordinary" user build the deb?  It should not be
> necessary to be root!  Fedora guys say that's bad :(

Strictly speaking, anybody can _build_ a deb.  However, only root can
install a package, and module-assistant is being invoked as part of the
post-install script (I think), so it's invoked by root.  Probably, it
should lose it's privilege, but then you would need to be sure that the
invoker had write access in /usr/src...

> 2. Why it doesn't make a source package?

No idea, but why should it?  On Debian-based systems, we don't usually use

> 3. Where can I find the control file from which the deb was manufactured?
> 4. Should I find a build tree and a fakeroot directory and erase them
> to clean up after the build?

These two obviously go together - I don't know module-assistant, but I'd
expect it to clean up after itself, in which case you won't find a control
file because it's part of the source package.
> While Googling on that,  I found a more puzzling question.  I ran the
> basic Ubuntu install.  I have linux-image-generic.  Is that right?

Of course.

> In Fedora, there's a kernel for i386, and one for i686, and one for
> x86_64, etc.  In Ubuntu I don't see one especially for i686.

Why would you need one?  Ubuntu uses a generic kernel because there's no
measurable advantage to having separate kernels.
> Here's one of the pages I found about it.
> http://beginlinux.com/index.php/desktop_training/ubuntu/ubfile_m/ub_kernel

I'm pleased to say I've never seen that URL here before.  It's misleading
and often just plain wrong.
> If the server kernel is "better" for i686, why doesn't the installer
> just use it for desktop systems?  

Because you're arguing from invalid assumptions.  It isn't better... 
Frankly, if somebody was claiming it was, but Ubuntu explicitly doesn't
install an "optimized" kernel, my first guess would be that the poster
didn't know what he was talking about, rather than that the installer gets
it wrong.  The author doesn't even understand what a monolithic kernel is -
with or without modules, Linux uses a monolithic kernel.

More information about the ubuntu-users mailing list