I have a 32-bit system which runs on a 64-bit processor. How do I convert it to be all-64-bit, without re-installing? I have seen somewhere that it is doable as a result of the new Multiarch framework.
It is in theory possible, but likely treacherous. Debian multiarch at current supports multiarch libs, but not binaries. So there's that.
The system primarily understands its own architecture from
WARNING: I HAVE NOT DONE THIS NOR EVEN ATTEMPTED IT!!!
The rough process would be:
These steps are based on what I know of the design of Debian having used it almost exclusively among Linux distros over the past 12 years (including having used
Most importantly, I highly suggest trying this on a VM before doing it on anything you care about.
Good luck, and May the Force be With You.
TL;DR: It is doable, but complicated. I have outlined an alternative at the bottom.
Now the long description, and take it with a grain of salt, as I may not have taken the best route:
It is possible, and here is what I did for the last two nights: There is a wiki entry describing the old-school way without multiarch support. It is helpful for fixing broken packages.
To migrate your base system, do this:
Some of your packages are then amd64, but most will remain i386.
My next idea was to do:
But it turned out to be a bad idea: some packages are not available in amd64 (e.g. libc6-i686), apt-get will be confused, and a lot of packages will be installed in both versions. A lot of manual work in aptitude is to be done.
More hardship: Some essential packages can be replaced, so that you will always have the binaries installed for installation, but some packages will have to be removed and installed again, e.g. I had this problem with tar. I wgot the packages on another system, extracted the packages via
What I would do instead
I have done the following, whenever I switched systems:
Get a list of installed packages with
Then do a clean reinstall of Debian, create all users again, maybe roles, etc.
Reinstall all packages with
Copy back the backed up directories, files, and you are mostly done.
One downside to that approach: All your packages, including libraries, will be marked as manually installed, so they will not be uninstalled, when no package depends on them any more.
There are quite a few manuals out there, but hardly any show what to really expect. I am writing this on a Debian Wheezy laptop that I just finished upgrading from 32 bit to 64 and it does indeed work.
I followed these instructions and they were really accurate on what you will actually face:
A recommendation is to keep the system powered through the whole process, do not reboot unless you are sure that you have migrated everything and that everything that was removed was installed again (especially essential packages), or you will not get the system running again.
Not an answer to the question, but it may be difficult to upgrade all packages from x86 to amd64, but you can at least easily install the amd64 kernel package, which will at least allow you to run 64 bit applications and virtual machines and containers (which may be enough for what you need).
Just install the amd64 linux-image package with
Following the idea using awk, I ended up using:
I had to run it a few times.
I have little experience with the matter, but I do believe that you are correct when you say converting from 32 to 64 should be capable with the multi-arch. I would be cautious though about how well supported this new system is.
Here is one of the documents that I read that discussed the matter, perhaps this will help you: https://wiki.ubuntu.com/MultiarchSpec
Notice the third User Stories. Here is another link around the same topic: https://help.ubuntu.com/community/MultiArch
Even though it might be a tad different between Debian and Ubunutu, this is a core feature. Which I would imagine Ubuntu and Debian would work closely to get this structure functioning on the ground before Ubuntu would pull away and do something of their own liking.