Ubuntu 18.04 LTS 拒绝安装在带有 3 GHz Intel 64 位 Core 2 Quad CPU 的 64 位戴尔上,它说是“i386”

SDs*_*lar 3 64-bit intel system-installation 18.04

系统为戴尔,配备64 位 3 GHz Intel Q9650 Core 2 Quad CPU

运行 Windows 7 Professional (x64) SP1并在任务管理器的性能选项卡中显示所有 4 个内核。大多数安装的 Windows 程序都是 64 位版本。

Ubuntu 18.04 LTS 拒绝安装,说这是一个“i386”处理器

它甚至不允许选择“尝试 Ubuntu”

该系统支持多个 5 TB 驱动器作为 NAS。此外,16 GB 内存。

英特尔引入了 64 位硬件,以支持更大量的两者。

随着操作系统开始需要更专业的 CPU 架构,如 AMD 的“AMD64”,它从来没有打算让人们停下来

谁在驾驶这辆公共汽车?(原谅双关语)

为什么这个 64 位操作系统不支持所有 64 位处理器?

这没有意义。

Win*_*nix 6

您的英特尔Q9650的64位酷睿2四核CPU不被支持的Windows 10。它于 2008 年发布,被认为对于现代操作系统来说太旧了。

查看您在英特尔网站上的规格,我注意到它没有超线程。它也没有涡轮增压,这可能不太重要。

更重要的是 64 位指令集随着时间的推移而发展。Linux 在引导期间测试每个 CPU 以查看是否支持某些指令。我无法找到我要找的参考,但此一个概述了内核检查:


设置堆栈后,下一步是 CPU 验证。当我们要执行到长模式的转换时,我们需要检查 CPU 是否支持长模式和 SSE。我们将通过调用verify_cpu函数来完成:

call    verify_cpu
testl   %eax, %eax
jnz     no_longmode
Run Code Online (Sandbox Code Playgroud)

这个函数在arch/x86/kernel/verify_cpu.S汇编文件中定义,只包含对 cpuid 指令的几个调用。该指令用于获取有关处理器的信息。在我们的例子中,它检查长模式SSE支持,并在寄存器中返回0成功或1失败eax

如果 的值eax不为零,我们会跳转到no_longmode通过hlt指令调用停止 CPU而不会发生硬件中断的标签:

no_longmode:
1:
    hlt
    jmp     1b
Run Code Online (Sandbox Code Playgroud)

如果eax寄存器的值为零,则一切正常,我们可以继续。


总而言之,您的十年前的CPU 不支持现代 64 位处理器支持的许多东西。