如何从磁盘上的文件确定操作系统架构(32 位或 64 位)?

bra*_*12s 6 architecture

可悲的是我的主板坏了,我必须从头开始建造一台新机器。我不记得我最初是否加载了 32 位或 64 位版本的操作系统,(K)ubuntu 14.04。

如果我挂载现有的 HDD,是否有可以检查的文件来确定操作系统架构?需要的不仅仅是 64 位可执行文件或库的存在,因为这些不是确定正在运行的操作系统的可靠方法。

我无法运行,uname -a因为这是安装的磁盘,而不是正在运行的操作系统。

Nat*_*man 12

通过运行以下命令来确定主机操作系统是 32 位还是 64 位内核是微不足道的:

uname --machine
Run Code Online (Sandbox Code Playgroud)

输出i386表示 32 位和x86_64表示 64 位。

确定应用程序是为 i386 还是 amd64 体系结构编译的不太重要,但仍然可行,但这些都不会指示内核的体系结构。即使检查/sbin/init在技​​术上也是不够的,因为可以在启动时自定义 init 程序。

确定内核架构的唯一万无一失的方法是实际启动它。幸运的是,这可以使用qemu.

首先打开终端并导航到/boot硬盘驱动器上。您将在以下形式中找到一个或多个压缩的内核映像:

vmlinuz- [版本] - [类型]

例如,我已经vmlinuz-3.19.0-21-generic出现在/boot我的机器上。现在,假设你有qemu-system-x86安装 qemu-system-x86 安装包,运行以下命令,在适当的地方替换文件名:

qemu-system-i386 -kernel <path_to_kernel>
Run Code Online (Sandbox Code Playgroud)

如果您看到一排文本滚动并最终惊慌失措(因为缺少根 FS),则您已经安装了 32 位内核。相反,如果您收到类似于下面显示的错误,则您使用的是 64 位内核(无法在 x86 CPU 上启动)。

在此处输入图片说明


Col*_*son 5

我同意,一般来说,仅存在某种可执行文件或库是没有用的,因为可能安装了多个体系结构的对象,但有些可执行文件您只能拥有其中一个。 file /mnt/usr/bin/dpkg(替换/mnt为您安装文件系统的位置)将告诉您核心包管理器是 32 位还是 64 位,这是系统其余部分的准确指示器,除非您正在进行就地迁移从一个到另一个 - 如果你是的话,你肯定会知道!

  • 在 `/sbin/init` 处还有 init 文件(可能是符号链接,因此请参阅符号链接目标上的 `file` 的输出)。 (4认同)