Why do I need a server kernel to run an amd64 desktop?

Asked by Michal Suchanek

Who in their right mind would run a 32bit kernel on a 64bit capable desktop?

Why do I need a server kernel for that?

Question information

Language:
English Edit question
Status:
Solved
For:
Ubuntu linux Edit question
Assignee:
No assignee Edit question
Solved by:
Eliah Kagan
Solved:
Last query:
Last reply:
Revision history for this message
Eliah Kagan (degeneracypressure) said :
#1

Generally speaking, you should run the 64-bit version of Ubuntu on a PC with a 64-bit processor, and not the 32-bit version of Ubuntu.

However, sometimes there is a good reason to use the 32-bit version of Ubuntu on a PC with a 64-bit processor. For example, sometimes it is difficult (or impossible) get some 32-bit binaries to run on the 64-bit version of Ubuntu, due to dependencies on 32-bit libraries and operating system components. Another possibility is that you have a device with 32-bit drivers, but not 64-bit drivers, and it is important to you to be able to use the device in spite of that limitation.

If you're running the 64-bit version of Ubuntu, you must run a 64-bit kernel. If you're running the 32-bit version of Ubuntu, you must run the 32-bit kernel.

You should not, generally speaking, run the Ubuntu Server kernel on an Ubuntu Desktop Edition system, and vice versa. However, by default, 32-bit Ubuntu Server systems use a PAE kernel, whereas 32-bit Ubuntu Desktop Edition systems run the generic, non-PAE kernel, unless the system has more than 3 GB of RAM at the time that Ubuntu is installed. (You can change which kernel is in use on either OS, at any time.) PAE stands for physical address extension; PAE is needed to enable a 32-bit Ubuntu system to recognize and use more than 3.5 GB of RAM. There is no such thing as a 64-bit PAE kernel, as 64-bit operating systems automatically are able to recognize and use enormously more RAM.

With that said, though, if you choose to run the 32-bit version of Ubuntu on a 64-bit machine, you do NOT need to use the server kernel. If you're running Ubuntu Server Edition, you almost always *should* use the server kernel, and if you're running Ubuntu Desktop Edition, you almost always *should not* use the server kernel. The desktop (non-server) non-PAE kernel is provided by the package linux-generic. The desktop (non-server) PAE kernel is provided by the package linux-generic-pae.

Your question is rather vague, so I'm not sure if this answers it. Please feel free to post again to clarify your question, if this answer is not satisfactory.

Revision history for this message
Michal Suchanek (hramrach) said :
#2

Hello

The kernels I have available are these:

linux-image-2.6.38-2-generic - Linux kernel image for version 2.6.38 on x86/x86_64
linux-image-2.6.38-2-virtual - Linux kernel image for version 2.6.38 on x86/x86_64
linux-image-2.6.38-2-server - Linux kernel image for version 2.6.38 on x86_64
linux-image-2.6.38-2-generic-pae - Linux kernel image for version 2.6.38 on x86

The description if the generic kernel states that it is for x86/x86_64 systems which would suggest a 32bit kernel which can run on either. The server kernel only lists x86_64 so this would suggest a 64bit kernel.

Maybe I am reading too much into the description, these are packages for a 64bit system after all.

Still comparing the descriptions is somewhat misleading.

Thanks

Michal

Revision history for this message
Best Eliah Kagan (degeneracypressure) said :
#3

The package descriptions themselves are not specific to your architecture. That the package description says that the package is available for some architecture doesn't mean that the package version that you'd get if you installed it will itself run on all listed architectures.

linux-generic and linux-virtual are available on both i386 (x86) and amd64 (x86_64) architectures. However, Ubuntu systems on separate architectures get *separate* packages. They just have the same name. (Similarly, programs like the text editor gedit have packages of the same name for both architectures, but on amd64 /usr/bin/gedit is a 64-bit binary, and on i386 /usr/bin/gedit is a 32-bit binary.)

I see from the kernel version numbers that you're running the Natty alpha (as packages for those versions are not presently available in any previous releases). Starting with Natty, the server kernel is (i.e. will be) only available on the 64-bit architecture. That is not the case in previous releases, however, where the server kernel is also available for both architectures and has "x86/x86_64" in its package description.

Revision history for this message
Eliah Kagan (degeneracypressure) said :
#4

By the way, to get information on your currently running kernel, including the architecture it's built for, run

uname -a

in the Terminal. If you just want the architecture and not the other information, you can instead run:

uname -m

Revision history for this message
Michal Suchanek (hramrach) said :
#5

Thank you for your answer.

I guess I was confused by seeing the bigmem and pae kernels which are really 32bit and should not be seen on a 64bit system.

Revision history for this message
Michal Suchanek (hramrach) said :
#6

Thanks Eliah Kagan, that solved my question.