2.4 module on 2.6 kernel with busybox v 1

Rob Landley rob at landley.net
Wed Jun 7 19:51:55 UTC 2006


On Wednesday 07 June 2006 3:35 am, alfred hitch wrote:
> Oh I see now,
> Sorry was on 2.4 world for so long :(
>
> Anyways, here is my summary of what I could understand from diff.
> posts and googl'ing.
>
> 1) 2.4 allowed binary form driver loading. diff, kernel versions could
> be loaded with same binary driver module.

Not really.  The pace of development was much, much slower, and they didn't 
introduce new features or rewrite much existing code in the stable series 
(they had -devel forks and backported bugfixes), so it tended to work by 
accident a lot.

In 2.6, they introduce new developments between each major dot release, and 
have minor dot releases (2.6.16.20) that are bugfix-only.  If you look at the 
number of lines of code merged, each 2.6 version has almost as much 
development as went on in an entire development series five years ago.  (As a 
percentage of the total it's not quite as big, but it's up there.)

2.2 and 2.4 weren't a moving target because 2.3 and 2.5 did that.  2.6 is a 
moving target, and this is intentional.  They've never supported binary-only 
modules, and they've stopped humoring them.  If your code is GPL, submit it 
for inclusion in the tree and they'll fix it up each time they change 
something.  Doesn't matter how obscure the hardware is, the "summit" 
architecture has something like 4 machines on the entire planet, and yet it's 
merged.

If you can't submit it into the tree, they want to know why not.  Which brings 
up license compliance issues... :)

> 2) 2.6 : No ways can you run a pre compiled binary onto a diff. kernel
> machine. Source, compiler everything should match ? !

You might be able to apply a source patch to a different kernel version and 
build a new module that works.  But it's not guaranteed, a lot of internal 
APIs change.  (Linux Weekly News has a list of the changes during the 2.6 
series...  http://lwn.net/Articles/2.6-kernel-api/ )

> All this is done by forcefully asking for 2.4 Makefiles to be changed
> to 2.6 format. Which includes the vermagic technically speaking. ?

I have no idea what you're asking about here.

> No ways to get past this ?
> And then why do I see in the busybox compilation , option for 2.1 ,
> 2.4 kernel etc ?

You don't see option for 2.1 kernel anymore.

2.4 had some different things in user space, most noticeably module loading 
uses a completely different API.  (It used to be done in user space, now you 
feed a block of data to the kernel and it does all the linking.  Different 
API, but that's ok because it's different module binaries anyway.)  Most 2.6 
distros use different module loading tools (Rusty's module tools on 
kernel.org instead of old 2.4 modutils package), but the busybox insmod is 
neither, and at least potentially handles both.

> Alfred

Rob
-- 
Never bet against the cheap plastic solution.



More information about the busybox mailing list