Ubuntu – Chroot into a 32-bit version of Ubuntu from a 64-bit host

32-bit64-bitchroot

Xilinx webPack 10.1 requires 32-bit Linux. Only this old version is compatible with their boards. How to make 32-bit applications work on a 64-bit operating system lists:

  1. Installation of 32-bit compatibility libraries (ia32-libs or Multiarch support)
    I already installed ia32-libs, and it's still not working

  2. A 32-bit chroot

  3. Full virtualization through KVM or VirtualBox No, I don't want to be working from a vm all of next semester, that would be painful and I'd rather just reinstall my whole computer to a 32 bit os; which I don't want to do.

  4. Another option in a pinch is getlibs getlibs It didn't sound like it was the best option based on what I've seen.

So I went off to do #2, and set up a chroot for 32-bit Ubuntu Lucid (10.10). Which is to say I wrote:

[hardy-i386]
description=Ubuntu 8.04 Hardy for i386
directory=/srv/chroot/hardy-i386
personality=linux32
root-users=leif
type=directory
users=leif

to

/etc/schroot/chroot.d/hardy-i386

I then ran:

$ sudo mkdir -p /srv/chroot/hardy_i386
$ sudo debootstrap --variant=buildd --arch i386 hardy /srv/chroot/hardy_i386 http://archive.ubuntu.com/ubuntu/

Then I ran:

$ schroot -l

And it showed the proper chroot, but then when I run:

$ schroot -c hardy-i386 -u root

I get the following error:

E: 10mount: error: Directory '/srv/chroot/hardy-i386' does not exist
E: 10mount: warning: Mount location /var/lib/schroot/mount/hardy-i386-80359697-2164-4b10-a05a-89b0f497c4f1 no longer exists; skipping unmount
E: hardy-i386-80359697-2164-4b10-a05a-89b0f497c4f1: Chroot setup failed: stage=setup-start

/srv/chroot/hardy-i386 most certainly exists. I've also tried it replacing all references with hardy to lucid, to no avail. I did set up the chrome os environment: http://www.chromium.org/chromium-os/developer-guide and it had me use something with chmod.

So, can anyone figure out what the problem is?

Best Answer

  • you may try

    linux32 ./setup
    

    this helps for 32Bit teamspeak on 64bit servers.

    from man: (linux32 is an setarch alias)

       setarch  -  change reported architecture in new program environment and
       set personality flags