The Cookie Machine - Click here to drag window

DUMMY TEXT - Real text set in assets/js/theCookieMachine.js

If you can read me, I'm broken!

Views: 2,757β€…    Votes:  6β€…    βœ… Solution
Tags: system-installation   64-bit   intel   18.04  
Link: πŸ” See Original Answer on Ask Ubuntu ⧉ πŸ”—

URL: https://askubuntu.com/q/1030818
Title: Ubuntu 18.04 LTS refuses to install on a 64-bit Dell with 3 GHz Intel 64-bit Core 2 Quad CPU it says is "i386"
ID: /2018/05/01/Ubuntu-18.04-LTS-refuses-to-install-on-a-64-bit-Dell-with-3-GHz-Intel-64-bit-Core-2-Quad-CPU-it-says-is-_i386_
Created: May 1, 2018
Upload: September 15, 2024    Layout:  post
TOC: false    Navigation:  false    Copy to clipboard:  false


Your Intel Q9650 64-bit Core 2 Quad CPU is not supported by Windows 10 either. It was released in 2008 and considered too old for modern operating systems.

Looking at your specs on Intel’s Website I noticed it doesn’t have hyper-threading. Also it doesn’t have Turbo-Boost which is probably less of a concern.

More importantly there is the 64-bit instruction set which has evolved over time. Linux tests each CPU during boot to see if certain instructions are supported. I can’t find the reference I was looking for but this one outlines the kernel checks:


After we have set up the stack, next step is CPU verification. As we are going to execute transition to the long mode, we need to check that the CPU supports long mode and SSE. We will do it by the call of the verify_cpu function:

call    verify_cpu
testl   %eax, %eax
jnz     no_longmode

This function defined in the arch/x86/kernel/verify_cpu.S assembly file and just contains a couple of calls to the cpuid instruction. This instruction is used for getting information about the processor. In our case, it checks long mode and SSE support and returns 0 on success or 1 on fail in the eax register.

If the value of the eax is not zero, we jump to the no_longmode label which just stops the CPU by the call of the hlt instruction while no hardware interrupt will not happen:

no_longmode:
1:
    hlt
    jmp     1b

If the value of the eax register is zero, everything is ok and we are able to continue.


To summarize there are many things your decade-old CPU doesn’t support that modern 64-bit processors support.

⇧ Unable to upgrade kernel after 4.16.3 Set custom names for vmlinuz and initrd so multiple distros can share boot directory  β‡©