在 32 位 Ubuntu 中安装 64 位内核

Ben*_*Ben 6 64-bit kernel 32-bit

我想使用仅适用于 64 位的应用程序,但我的 Ubuntu 安装是 32 位的。该应用程序是专有的,因此我什至无法为 32 位重新编译它。

我读过,如果我的内核是 64 位,我应该能够在 32 位 Ubuntu 中运行 64 位应用程序。从我读到的内容来看,这应该在“MultiArch”支持下工作得相当流畅,我的版本 (14.04) 应该有这种支持。但是我不知道如何安装 64 位内核。

我的处理器似乎支持 64 位,因为“lm”出现在 grep flags /proc/cpuinfo

我已经看到了一些关于将整个系统升级到 64 位的问题,但这些问题都归结为“只需进行全新安装”。如果可以,我想避免进行全新安装:我有很多配置,我不想查找和重复,而且我已经在我的旧硬件上使用相对较少的 RAM 阅读了这些内容,完整的 64 位系统可能会使用足够多的额外内存,因此会陷入困境。

我注意到旧的内核版本会一直存在,直到我删除它们,所以如果我可以安装 64 位内核,我认为如果出现问题,我可以再次启动到 32 位内核。

我找到了一份升级 Debian 系统的指南,该指南从安装 64 位内核 [1] 开始,但其中的说明对我不起作用:

$ sudo dpkg --add-architecture amd64
$ sudo apt-get update
$ sudo apt-get install linux-image-amd64:amd64
Run Code Online (Sandbox Code Playgroud)

前两个命令似乎完成OK,但安装命令给出:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package linux-image-amd64
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?少了一步?毕竟我应该完全安装吗?


$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty
Run Code Online (Sandbox Code Playgroud)

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

pro*_*ski 6

该错误表明 Ubuntu 没有提供名为“linux-image-amd64”的包。

我推测这是因为您选择 shell 命令的指南是为 Debian 安装编写的。事实上,如果您在 debian.org 上搜索此软件包,您会得到一个肯定的结果。如果您在http://packages.ubuntu.com/上输入此包名称,则情况并非如此

最后一个命令应该是

sudo apt-get install linux-image-generic:amd64
Run Code Online (Sandbox Code Playgroud)

或者(如果你真的关心延迟)

sudo apt-get install linux-image-lowlatency:amd64
Run Code Online (Sandbox Code Playgroud)

请注意,32 位内核将被删除。此外,还将安装一些 64 位用户空间库。要查看apt-get在不实际接触系统的情况下会对系统产生什么影响,请使用这些选项运行 apt-get

sudo apt-get -Vs install linux-image-generic:amd64
Run Code Online (Sandbox Code Playgroud)

如果您想保留 32 位内核作为后备,请安装不同的内核映像,例如为您的 14.04(代号:trusty)尝试:

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

sudo apt-get install linux-generic-lts-utopic:amd64
Run Code Online (Sandbox Code Playgroud)

  • 反对者:你介意评论吗?在我尝试之前,我想知道答案有什么问题,因为我确信如果做错了,这样的事情可能会破坏我的系统好几天。 (2认同)