ELF binary type "0" not known.

Hi all,

I am trying to install a product that ships as RedHat Enterprise Linux 5 certified RPMs. After successfully installing the RPMs and trying to launch binaries, I get the following error:

Code:
ELF binary type "0" not known.
./run: Exec format error. Binary file not executable.

I did some searching online and even tried the following:

[cmd=]brandelf -t Linux run[/cmd]

But then it just complains that type "3" is not known either.

I'm running FreeBSD 8.2-RELEASE and I believe that Linux compatibility is correctly enabled as evidenced by the output of kldstat:
Code:
Id Refs Address            Size     Name
 1   20 0xffffffff80100000 c9fe20   kernel
 2    1 0xffffffff80da0000 202a58   zfs.ko
 3    2 0xffffffff80fa3000 4940     opensolaris.ko
 4    2 0xffffffff81022000 1cecd    linux.ko
 5    1 0xffffffff8103f000 3edb     linprocfs.ko

I also have the linux_base-f10 port installed (tried also with linux_base-fc6 with the same results).

Any help would be much appreciated.

Thanks,

Frank Grimes
 
I remember reading in the handbook that you need to rebrand the elf binary.

I don't use Linux compatibility so perhaps someone else could explain this some more.
 
It is some time I've used linux-compat mode. I did make myself some notes so I know how to proceed if I need it in a future. Maybe this helps:

Install rpm:

# rpm --ignoreos --root /usr/compat/linux --dbpath /var/lib/rpm --nodeps --replacepkgs --install <PKG>.RPM

Update libs:

# /usr/compat/linux/sbin/ldconfig

Mark the binary for the correct ABI with brandelf(1):

# brandelf -t linux /path/to/binary
 
As I mentioned, I did try running brandelf -t Linux but it then simply complains that ELF binary type "3" is not known. Is there something I can check that I might have missed in setting up Linux compatibility?

Thanks,

Frank Grimes
 
As a simpler test I tried installing a RedHat rpm of Curl (curl-7.15.5-9.el5.x86_64.rpm) and I still get ELF binary type "3" is not known after running brandelf -t Linuxon it.

Can someone else try this on FreeBSD 8.2 with linux_base-f10 and let me know if it works? Maybe then we can more easily track down what's missing in my configuration.

Thanks,

Frank Grimes
 
Clean the entire Linux enviroment, reinstall Linux base, and try downloading the 32 bit version of the binary you're interested in. The linux(4) compat layer emulates a (partial) 32 bit Linux system ABI and you're installing a 64 bit package (x86_64)

Cheers
 
vertexSymphony said:
Clean the entire Linux enviroment, reinstall Linux base, and try downloading the 32 bit version of the binary you're interested in. The linux(4) compat layer emulates a (partial) 32 bit Linux system ABI and you're installing a 64 bit package (x86_64)

Cheers

I don't know how I missed the fact that Linux compatibility is only 32-bit... I really need 64-bit so I guess I'm out of luck here.
Thanks for taking the time to clarify!

Frank Grimes
 
hselasky@, you're responding to a 5 year old thread. The 64 bit Linux emulation didn't even exist back then.
 
Didn't fix the problem for me :/
Even without knowing what your particular problem is (perhaps, different from that of the OP), that error message means you're doing something WRONG. It has nothing to do with ${your Linux app} working or not working with the FreeBSD linux compatibility thing.

So examine carefully what exactly you are doing, cause there must be something wrong about it. Like making FreeBSD system use Linux binaries directly.
 
Even without knowing what your particular problem is (perhaps, different from that of the OP), that error message means you're doing something WRONG. It has nothing to do with ${your Linux app} working or not working with the FreeBSD linux compatibility thing.

So examine carefully what exactly you are doing, cause there must be something wrong about it. Like making FreeBSD system use Linux binaries directly.
The problem was already solved. https://forums.freebsd.org/threads/62857/
 
Back
Top