Ubuntu – Install 64-bit kernel in 32-bit Ubuntu

32-bit64-bitkernel

I want to use an application that is only available in 64-bit, but my Ubuntu installation is 32-bit. The application is proprietary, so I can't even recompile it for 32-bit.

I've read that I should be able to run a 64-bit application in 32-bit Ubuntu, if my kernel is 64-bit. From what I've read, this should work fairly smoothing with "MultiArch" support, which I should have in my version (14.04). But I can't figure out how to install the 64-bit kernel.

My processor seems to support 64-bit, because "lm" appears in the output of grep flags /proc/cpuinfo

I've seen a few questions already about upgrading the entire system to 64-bit, but those all tend to boil down to "just do a fresh install". I want to avoid doing a fresh install, if I can: I've got a lot of configuration I don't want to find and repeat, and I've read that on my old hardware with my relatively small amount of RAM, a full 64-bit system will probably use enough extra memory that it will get bogged down.

I've noticed that old kernel versions stick around until I remove them, so if I can install a 64-bit kernel, I assume I can boot into the 32-bit kernel again if things go wrong.

I found a guide to upgrading a Debian system that starts with installing the 64-bit kernel[1], but the instructions therein don't work for me:

$ sudo dpkg --add-architecture amd64
$ sudo apt-get update
$ sudo apt-get install linux-image-amd64:amd64

The first two commands seem to complete OK, but the install command gives:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package linux-image-amd64

Am I doing something wrong? Missing a step? Should I just do a full install after all?


$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty

[1] http://www.ewan.cc/?q=node/90

Best Answer

The error indicates that Ubuntu does not provide a package named "linux-image-amd64".

I surmise this is due to the fact that the guide from where you picked the shell commands has been written for a Debian installation. Indeed, if you search on debian.org for this package, you'll get a positive result. This is not the case if you enter this package name on http://packages.ubuntu.com/

The last command should be

sudo apt-get install linux-image-generic:amd64

or (if you really care about latency)

sudo apt-get install linux-image-lowlatency:amd64

Please note that the 32-bit kernel will be removed. Also, some 64-bit userspace libraries will be installed. To see what apt-get will do to your system without actually touching your system, run apt-get with these options

sudo apt-get -Vs install linux-image-generic:amd64

If you want to retain your 32-bit kernel as a fallback, install a different kernel image, e.g. for your 14.04 (codename: trusty) try:

sudo apt-get install linux-generic-lts-trusty:amd64

sudo apt-get install linux-generic-lts-utopic:amd64