Re: kerneld & binfmt_aout

Ion Badulescu (ionut@moisil.cs.columbia.edu)
Thu, 11 Dec 1997 02:56:19 -0500 (EST)


On 10 Dec 1997, Vladimir Volovich wrote:

> I have the following problem: I compiled binfmt_aout as a module (and
> did "depmod -a"). But when I try to run an aout binary, kerneld does
> not load the binfmt_aout.o module automagically. The other modules,
> such as cdrom.o, isofs.o, ide-cd.o are loaded by kerneld very well.

That's because somebody decided (a while ago, mind you) to request the
binary loader as binfmt-%04x instead of binfmt-%03d, which is what
modprobe expects and has as defaults. It's in 2.0.x too.

I don't have any particular preference for decimal over hex or viceversa,
but the kernel and the modutils should come to an agreement on the format
used for requests..

> vvv:~$ /usr/local/bin/qqq
> bash: /usr/local/bin/qqq: cannot execute binary file
> vvv:~$ strace /usr/local/bin/qqq
> execve("/usr/local/bin/qqq", ["/usr/local/bin/qqq"], [/* 32 vars */]) = 0
> strace: exec: Exec format error
> vvv:~$ su -c "/sbin/modprobe binfmt_aout"
> Password:
> vvv:~$ /usr/local/bin/qqq
> [ Ok ]
>
> I use linux-2.1.66, modutils-2.1.55.

So, you have two options. Either scan fs/exec.c for the first expression
and replace it with the second expression, recompile the kernel and
reboot; or use modprobe -c to generate the (default) modules.conf, erase
all the path statements and then in all the binfmt-xxxx aliases convert
xxxx from 4 digit decimal to 3 digit hex.

Ionut

-- 
  It is better to keep your mouth shut and be thought a fool,
            than to open it and remove all doubt.