Since a few months, Debian is going Multiarch.
So I thought I give it a try. I compiled a 64bit-kernel on my 32bit computer:
make menuconfig ARCH=x86_64; make ARCH=x86_64
Which works nicely. You only need to take care that if you ever need to compile an i386-kernel on the same machine, you will need to specify ARCH=x86 for that one in the future (after you’ve booted your system to use the 64bit kernel).
From there on I installed a new Debian,
debootstrap --arch=amd64 sid /mnt, mounted a few necessary filesystems into it, and chrooted into the new 64bit system:
mount -o bind /proc/ /mnt/proc/
mount -o bind /sys/ /mnt/sys/
mount -o bind /dev/ /mnt/dev/
mount -o bind /boot/ /mnt/boot/
chroot /mnt /bin/bash
Now comes the usual installation, packages, configfiles, installing grub, etc.
A few hours later I had a complete system, with my usual 6000 packages installed…
Upon booting the new system, I stumbled upon some few small problems, like libasound2-plugin-equal not being installed (and after that, complaining about a wrong binary format of .alsaequal.bin), No big problems there, until I turned on Multi-Arch:
dpkg --add-architecture i386
and started to try to install some i386 programs. Most work, at least when you’ve got all those dozens of i386 dependencies right.
But then came wine. Turns out, wine needs wine1.5-amd64 and wine1.5-i386 both, and the latter, wine1.5-i386 needs to be built on an i386. I already had that; but I still needed to recompile it without opencl, since that one refused to be installed as a 32bit-version on amd64 (well, it wants to deinstall the 64bit version).
After having installed all the runtime dependencies for the android-SDK, AVG antivirus and, most of all, wine1.5-i386, I ended up with these i386 packages installed:
gcc-4.7-base:i386 libasound2:i386 libasyncns0:i386 libattr1:i386 libc6:i386 libcaca0:i386 libcap2:i386 libdb5.1:i386 libdbus-1-3:i386 libdirectfb-1.2-9:i386 libdrm-intel1:i386 libdrm-nouveau1a:i386 libdrm-radeon1:i386 libdrm2:i386 libexif12:i386 libexpat1:i386 libffi5:i386 libflac8:i386 libfontconfig1:i386 libfreetype6:i386 libgcc1:i386 libgcrypt11:i386 libgd2-xpm:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 libglapi-mesa:i386 libglib2.0-0:i386 libglu1-mesa:i386 libgnutls26:i386 libgpg-error0:i386 libgphoto2-2:i386 libgphoto2-port0:i386 libgpm2:i386 libgstreamer-plugins-base0.10-0:i386 libgstreamer0.10-0:i386 libice6:i386 libjpeg8:i386 libjson0:i386 liblcms1:i386 libldap-2.4-2:i386 libltdl7:i386 liblzma5:i386 libmpg123-0:i386 libncurses5:i386 libncursesw5:i386 libogg0:i386 libopenal1:i386 liborc-0.4-0:i386 libp11-kit0:i386 libpciaccess0:i386 libpcre3:i386 libpng12-0:i386 libpulse0:i386 libsasl2-2:i386 libsdl1.2debian:i386 libselinux1:i386 libslang2:i386 libsm6:i386 libsndfile1:i386 libssl1.0.0:i386 libstdc++6:i386 libtasn1-3:i386 libtinfo5:i386 libts-0.0-0:i386 libusb-0.1-4:i386 libuuid1:i386 libvorbis0a:i386 libvorbisenc2:i386 libwrap0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386 libxcb-glx0:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386 libxfixes3:i386 libxi6:i386 libxml2:i386 libxpm4:i386 libxtst6:i386 libxxf86vm1:i386 zlib1g:i386
Just don’t dare to install anything i386 with dpkg from a package, without having the dependencies there first. It will want to deinstall half your system first when doing
apt-get -f install .
And now comes the really un-funny part. Notice that “mesa” in there? Yes, this means nvidia is not going to be accelerated for 32 bit, which means again just about no 32bit 3D applications will run with any decent speed, if at all. Same for wine as for native apps. The whole nvidia-packages are just not multi-arch capable, and unless you’re feeling to mess up your system with by-hand copied binaries, you just go back to your 32bit-system (with a 64bit kernel) and wait a few month more before trying to switch again.