FatELF: Universal Binaries for Linux.
The proof-of-concept virtual machine download page.
Below is a download link to a VMware
virtual machine to show off the FatELF
concept in action. It should be usable with VMware Workstation or VMWare Player
on Linux or Windows, or VMware Fusion on Mac OS X.
What we did is take separate x86 and amd64 installs of
Ubuntu 9.04 and glued them together, so
(almost) every binary on the system is a FatELF binary. The Grub menu at bootup
will let you choose a 32-bit or 64-bit kernel, and both will use the same
root filesystem. All the binaries, shared libraries, and kernel modules are
FatELF files, and will run as expected for the CPU arch you booted.
The VM will autologin to the desktop on startup, but if you need it, the
username/password is fatelf/fatelf, and it has sudo permission.
- First: this thing is a 1.8 gigabyte download. Please plan accordingly.
This is a complete desktop install of Ubuntu 9.04, plus some devtools.
- This is a proof of concept. There are things obviously broken, as all
we did was glue two Ubuntu installs into one. For example, /usr/sbin/hald
crashes if it reads its cache file from a different CPU arch, so we worked
around this, but other subtle issues, unrelated to FatELF itself, weren't
worth patching for this proof of concept. Firefox and OpenOffice have
problems in 32-bit mode at the moment.
- Networking doesn't come up by default; run "sudo dhclient3" from a
terminal to start it. This is set up to use vmware's NAT, so it gets a fake
IP address that has nothing to do with your LAN.
- Which processes are running as FatELF binaries? Run:
sudo file -L /proc/*/exe |grep -v "No such"
- If it's FatELF, it'll run as 64 or 32 bit, depending on what you booted.
- We removed /etc/apt/sources.list, since replacing some core components
during a standard update could cause problems.
- Some things that deal with ELF binaries are FatELF-enabled, like gdb, ld, objdump.
Other things, like depmod, are not yet (insmod works, though). Neither is ldconfig. This is a work in progress.
- FatELF project page is here.
- Step-by-step instructions on reconstructing this virtual machine are
- The replacement .deb files with FatELF support are here,
but you shouldn't trust these for daily use, as we aren't updating them, even if Canonical decides it needs
to publish a kernel update for Ubuntu 9.04.
- Questions, comments, and bug reports can go to Ryan.
The virtual machine can be downloaded here.