是否可以在32位PC上安装64位操作系统?


1

我在Unix中问这个,并建议在这里问一下。

我在Linux Facebook小组上回答了一个问题,有人问是否有可能在64位PC上安装32位操作系统。我的回答是:

绝对可以在64位PC上安装32位操作系统。但是不可能在32位PC上安装64位操作系统。

那么,有人回复了我的评论:

这不是不可能的,但做到这一点并不正确。

那么...... 是否真的可以在32位PC上安装64位操作系统?


2
准确地说,32位PC是什么意思?答案完全取决于此。最重要的是,无论当前安装什么操作系统,PC都必须具备64位功能。其中许多目前安装了32位操作系统。
LMiller7'19

@ LMiller7我是指一个32位硬件。
juankvillegas 2017年

您可以在具有32位主机操作系统的计算机上安装64位虚拟机guest虚拟机。您仍然需要一个64位处理器,因此需要一台64位的机器。
Mokubai

不,你不能。硬件必须能够64位才能安装64位操作系统。
TheCrazyProgrammer

@Mokubai如果执行仿真(二进制转换),理论上你可以在纯32位CPU中安装64位客户机。当然,这样做会非常低效,并且不是现代硬件加速意义上的典型虚拟机。
鲍勃

Answers:


8

答案非常非常简单。

从技术上讲,“32位” PC,正如你所说的,将是一个PC,其CPU支持32位计算,但不支持64位计算。

例如,具有支持IA-32但不支持EM64TIA-64的Intel CPU的PC 将是“32位”PC。实际上,您无法在这样的PC上安装64位操作系统。


5

它不是也将无法通过安装程序 - 至少来自我尝试过的少量操作系统样本。这些都是在虚拟框中完成的,以方便漂亮的截图。

我尝试了几个常见的64位操作系统 - Windows 10(我有1511版本)

在此输入图像描述 引导到现有安装会引发非常类似的故障,要求启用PAE的处理器。

和Windows 7

在此输入图像描述

也许它不仅仅是Windows。

让我们试试Ubuntu 16.04 livecd

在此输入图像描述

对于任何纯64位操作系统都非常肯定,您将无法通过安装磁盘启动的初始阶段。虽然我没有对它进行广泛的测试,但是将已安装的64位系统切换到32位主机也可能会很糟糕。


1

可以设法安装它(有一些黑客攻击),但它没用,因为它无法启动。所以你可以在技术上,但我不建议这样做,因为大多数人都喜欢有一台可以启动的电脑。

如果您的计算机附带32位操作系统,并且64位操作系统运行正常,那么您应该检查您的实际计算机,因为有时64位计算机带有32位操作系统。


考虑到所有Intel / AMD 64位处理器都是x86处理器,并且所有x86处理器都是32位处理器,那么必须要做什么?问题还不够明确,假设作者正在讨论不支持AMD64扩展的过时不支持的x86处理器的一小部分。
Ramhound 2017年

2
在重新阅读你的答案后,我可以看到你在技术上是正确的。您可以安装(即将文件放入硬盘驱动器)64位操作系统,但是,它甚至不会启动。
misha256 2017年

1
仅适用于“安装”的某些定义。Windows安装过程将拒绝在32位平台上安装64位产品的尝试。你甚至不会花一分钟时间进入安装。或者,如果你有一个通用安装程序询问“你想安装哪一个”,那么在32位平台上,它根本就不会问这个问题; 您将没有机会选择64位版本。
杰米汉拉汉2017年

这就是为什么我说如果你设法安装它,因为我确信它可能以某种方式,因为我听说有人这样做而且无法启动。@JamieHanrahan
Noah Cristino

0

32位CPU无法“按设计”运行64位代码。因此,它无法启动64位操作系统,根据定义,它包含64位内核。

操作系统安装人员非常清楚这一事实,因此首先拒绝在32位硬件上安装64位操作系统。


-1

回复原始注释的人可能遇到64位操作系统(可能意味着使用超出32位保护模式或使用64位寄存器之外的任何内存的操作系统)安装和启动处理器限制为32位内存或使用更宽的硬件寄存器。最后一节给出了在32位硬件上安装64位操作系统的真实示例。中间部分解释了为什么不仅可以安装这样的OS,甚至可以使用它(理论上)。

技术细节

在64位操作系统中,人们可能会期待两件事。第一个是内存可寻址超过4GiB。由于基于BIOS的64位计算机启动到16位(AKA实型)模式,因此可以为某些操作编写一个跳入和跳出长64位内存模式的操作系统(例如,参见https:// www.codeproject.com/articles/45788/the-real-protected-long-mode-assembly-tutorial-了解如何离开64位模式)。或者,在单声道任务环境中,跳转到某些程序的长模式。32位DOS程序通常通过DOS扩展程序进入和退出32位模式以便运行。科学计算平台也可以做类似的事情,以获得运行32位代码的性能优势(是的!32位代码可能比64位代码更快!),除非必要。

人们在64位操作系统中可能会遇到的第二件事是64位寄存器。但是,可以轻松地保持低位模式并根据需要切换到更高位模式。可以有一个包含16位,32位和64位寄存器代码混合的程序。要切换寄存器大小,可以使用操作数大小覆盖前缀(操作码前缀0x66和0x67),尽管最后一个细节通常由编译器处理,对大多数程序员来说是不可见的。

理论范例

人们可以编写一个仅在操作系统的某些部分使用64位的操作系统。这样的操作系统很容易在想象的范围内。移植到64位的32位操作系统可以仅通过使OS的某些部分成为64位(从而使其成为64位操作系统)来开始。假设音频驱动程序是第一个移植的东西; 这样的操作系统可以正常运行,直到播放音频文件。我猜这种情况发生在业余爱好者OS场景中有一定的规律性,因为有人想要用64位进行一些实验,或者希望提高OS上特定操作集的速度。

在32位计算机上安装64位操作系统的真实示例

64位和32位代码混合的真实示例是MacOS(版本~10.5-10.7)。在64位Intel Mac上,这些版本的MacOS可以启动到32位模式内核并运行64位应用程序64位用户空间操作系统代码。在32位计算机上,计算机仍然可以启动。但是,在尝试运行仅64位应用程序时,MacOS不会崩溃,而是拒绝运行应用程序。

请注意,32位和64位Mac上都安装了相同的磁盘操作系统。您可以在32位Mac上安装MacOS,删除磁盘并将其放入64位Mac并启动64位内核。当然,Hackintosh场景证明您可以在通用的32位计算机上安装MacOS。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.