Ubuntu on Pentium M without PAE

Update 2014-05-25: I have now tested the new forcepae feature in 14.04 (new post) myself and it works just fine.

Update 2014-04-27: Ubuntu 14.04 has been released and it works almost “out of the box” for Pentium M CPUs that have PAE but fail to advertise it properly. This seems to be very relevant now that XP is out of support and many owners of fine laptops will try to find an alternative to Windows XP. If this is your situation and you are completely new to Linux/Ubuntu I suggest you give Xubuntu a try first, and if you find it too heavy or slow, try Lubuntu. You dont have to install it to try it – you can run it “Live” from a DVD/USB-memory – but it will run faster and better if you install it on your hard drive. Finally, the PAE issue: The instructions are found in the section “Installing on Pentium M laptop (with forcepae)” of the official Ubuntu PAE page. Those few lines relevant to you are:

The ISO image will fail to boot (“This kernel requires the following features not present on the CPU: pae.”) If a few lines above this text there is a warning “WARNING: PAE disabled. Use parameter ‘forcepae’ to enable at your own risk!”, then you can boot by pressing tab at the boot screen and appending the kernel parameter “forcepae” after the “– “.

You should not need to read or understand anything else from that page. I do not have any such hardware available at the moment, so I can not write a guide myself. You are welcome to comment about your success/failure here.

Update 2014-03-13: It seems some progress has been made and this should not be a problem with Ubuntu 14.04 (which should be on the way soon). There are already daily builds of Lubuntu, Xubuntu and Ubuntu for the upcoming 14.04 that are supposed to work (unclear about Kubuntu and the others). I have not tested this myself yet – currently no such hardware available. The boot is supposed to fail with a message like “kernel flag forcepae is required”, and when adding that flag at boot time things should proceed normally.

Update 2013-12-26: I successfully upgraded 13.04 with FakePAE installed to 13.10. No warnings, no errors, no problems, no hacks. And FakePAE still hacks /proc/cpuinfo correctly.

This may be relevant to you if you want to install (or upgrade to) Ubuntu 12.10 or 13.04 on a computer that reportedly lacks PAE support. It only applies to x86/32-bit AMD/Intel CPUs and Ubuntu versions.

A little background first. 32-bit computers can handle up to 2GB of RAM perfectly; in principle, if you have up to 2GB you neither need PAE or 64-bit CPU/OS. If you have more than 2GB or RAM, but not more than 4GB you may have some benefits of PAE or 64-bit CPU/OS. If you have more than 4GB or RAM, you should have 64-bit CPU/OS, or if your CPU does not support it, use PAE to make use of more than 4GB RAM.

PAE makes the CPU/OS handle 64GB of RAM instead of 4GB (the normal 32-bit limit), but applications still only see a maximum of 4GB each (in practice, most often not more than 2GB).

Until 12.04 this was not an issue for Ubuntu users. There was both a PAE and a non-PAE 32-bit kernel available for x86 ubuntu, and a serparate 64 bit version of Ubuntu. But beyond 12.04, there is no longer a non-PAE kernel. This means that if you have an x86 CPU that lacks PAE support, you can not run Ubuntu beyond 12.04 (unless you find/build a non-standard kernel).

However, there are CPUs, especially Pentium M CPUs that have perfect PAE support, but they do not advertise it properly – and Ubuntu refuse to try to run the PAE-kernel at all (but it works perfectly).

Now, if you are still reading and you think this is relevant information to you, you should first read this article. It is written by the people who know stuff and it tells you what to do.

The rest of my article will describe some details about my experiences when I tried to upgrade a Pentium M computer from 12.04 to 12.10.

First, this is my CPU (as it reports under 12.04 non-PAE kernel). It denies PAE support (pae not present under flags).

$ cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 9
model name	: Intel(R) Pentium(R) M processor 1400MHz
stepping	: 5
microcode	: 0x5
cpu MHz		: 600.000
cache size	: 1024 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr mce cx8 mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 tm pbe up bts est tm2
bogomips	: 1194.24
clflush size	: 64
cache_alignment	: 64
address sizes	: 32 bits physical, 32 bits virtual
power management:

I only have 768Mb of RAM – I dont really need PAE, but I have to have it to run Ubuntu 12.10 or 13.04.

I first tried to install 13.04 from scratch – the installation immediately failed because my (false) lack of PAE. So I decided (knowing that I would probably run into some problems) to upgrade from 12.04 to 12.10. Now, the upgrade was mostly fine, but, the kernel was not upgraded from 3.2 to 3.5, all packages were not completely set up, and there were broken dependencies. But the computer was working.

So I tried to install fake-pae using the method in the article. However, that did not really work – probably because of my broken dependencies apt-get didn’t want to do anything before the problems were fixed. So I downloaded the fake-pae package manually, unpacked it, and had a look at it. The magic trick is (as root):

# cat /proc/cpuinfo | sed 's/flags\t*:/& pae/' > /tmp/cpuinfo_pae
# mount -o bind /tmp/cpuinfo_pae /proc/cpuinfo
# mount -o remount,ro,bind /proc/cpuinfo

You can run this yourself (without installing/downloading fake-pae). I did, and then the kernel upgrade finally worked, the dependency problems were solved, and both me and Ubuntu were happy again.

Now, with dependency problems solved, fake-pae installed perfectly, and this is my CPU (now running 12.10):

$ cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 9
model name	: Intel(R) Pentium(R) M processor 1400MHz
stepping	: 5
microcode	: 0x5
cpu MHz		: 600.000
cache size	: 1024 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: pae fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 tm pbe up bts est tm2
bogomips	: 1194.22
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 32 bits virtual
power management:

Notice, address sizes is now 36 bit physical – this is real information from the PAE kernel. Also not the pae-flag; which is the result of fake-pae.

You should keep fake-pae installed, and hopefully you will be able to upgrade your computer in the future.

A few final words
I find this design choice of Ubuntu odd. I mean, computers with more than 4GB of RAM should use 64-bit version of Ubuntu anyway. And seriously, how many 32-bit systems have more than 4GB or RAM anyway? I think it would make more sense to not support PAE or more than 4GB or RAM for x86, than to abandon non PAE-CPUs. But probably there are companies (Ubuntu customers) out there running top modern 64-bit i7-CPUs in x86 PAE mode, rather than in x64 mode, for reasons I do not understand. Anyway, since this problem applies to a lot of Pentium M CPUs, the PAE check probably makes more Pentium M upgrade fail than it protects Pentium PRO and earlier systems.

Leave a comment ?

15 Comments.

  1. read this article and though great – it would allow me to install the fake PAE but as a complete novice to Linux I have no idea of the procedures involved. The article assumes someone would know how to do this. So is it a download in .iso form and where? How does it get into the Linux program if the program will not run or install? I have a P4 with 2 GB ram and all the Linux OS I have tried will not run so it seem a chicken and egg situation. Even running/installing the dual boot loader appears too complicated. It seems a shame my machine has been alienated by Linux.

  2. JayBee, it is a pity you can not easily install most recent Linux distributions on your computer. A P4 with 2GB of RAM should do very very fine.

    Since you are new to Linux I would advice you not to try Fake PAE as mentioned above. It is simply too complicated.

    I suggest you try Debian. It is the finest Linux system out there – Ubuntu and most of the others are based on Debian. It used to be that Debian was a bit conservative/behind, but today, and in your situation, I think it will be just fine. My link before was to the Live CD. Download the debian-live-7.2-i386-xfce-desktop.iso image. Burn it to a DVD (it is too big for a CD) using your favourite DVD-burning program in Windows or Mac OS. Note: you must “burn image”; when you are done burning, the DVD should contain many files (not just the live-7.2…iso file). Try to start your computer with this DVD: it should work, and you should be able to “try” Debian with XFCE (a GUI mixing the best of Windows with the best from Mac OS – I think it will be good for you). If it does not work, you have destroyed nothing.

    On destroying things: whatever you do trying to install Linux, you can not destroy your computer. You can destroy Windows (and your files) by mistake, or you can make Windows unbootable (Windows and your files are there, but you have to repair Windows to be able to start Windows – you dont want to). Make sure your valuable files are elsewhere (DropBox, a USB memory, another computer) before you begin.

    If you get stuck or if you have questions about what I just wrote – feel free to ask. I can not guide you through the entire procedure and everything, but I will try to give you advice that is not too complicated. Now good luck and have fun!

  3. the problem could be elegantly worked around at kernel level – if the ubuntu kernelteam would decide to do so. i made a kernel patch for this, see https://bugs.launchpad.net/baltix/+bug/930447

  4. Roland – it is nice that you try to solve the problem where it belongs – in the kernel! I read the entire thread you linked to, and I see there is much recent activity and possibly an opening. Promising.

    However, as I understand it, for a user (my readers) applying your patch and building their own kernel is too complicated (probably less chance of success than the Fake-PAE method).

    This post is one of the most popular posts (based on number of readers) on this blog, so I guess quite many people have the problem and find their way here. If a simple solution shows up I am happy to update my post (or write a new one). Feel free to keep me updated.

    If anyone is interested, I am typing this on my Eee701 running Lubuntu 13.10. This Celeron has never had any such PAE problems.

  5. Installing fake-pae doesn’t seem to do anything on my system, so I tried the steps here. Unfortunately after doing the magic, when I cat /proc/cpuinfo it gives no output. I’m on a low-end laptop with 750GB of memory. Thanks for any help you can provide.

  6. wh: I don’t know. But about the three magic lines above… the first of them produces a hacked version of /proc/cpuinfo in /tmp. You could basically copy /proc/cpuinfo to tmp, and edit that file with any editor you want until it looks fine.

    The last two lines… they do something magic with mount that I am not completely familiar with. But note: it has to be done as root, and a single character error will probably ruin the effect.

    If you $cat /tmp/cpuinfo_pae, do you get what you want, or is it empty? That should isolate if you have a problem with line 1, or line 2+3.

    If I were you, I would uninstall fake-pae (since it does not work) and restart your computer to make sure you are in control of what happens. Perhaps fake-pae confuses the hack?

    Good luck!

  7. Thanks for all the good input. Put me on the list of non-techie Linux folks. I inherited a Thinkpad that was about to be discarded. It is a nice machine…but…does not have PAE. I’m disappointed that it’s so difficult to install a current UBUNTU OS easily.

  8. Imade as you say and flags change in pae but address sizes remain 32 bits phisical, 32 bits virtual. What i can do

    thanks

  9. maremare: Tha Fake-Pae-Hack only adds the flag in /proc/cpuinfo. That only makes it possible to upgrade Ubuntu (beyond 12.04, if I remember correctly). As you do upgrade, you will get a PAE kernel, which will report bigger address sizes. BUT: See my update in the top of the post: the problem seems to be fixed in upcoming 14.04. Try to install a recent daily build of 14.04 and you should be fine. I have not tested. Feel free to give feedback!

  10. xubuntu 12.4.4 will not upgrate to a new version after change pae, there are many update and i dont’t know what install. I have mount now xubuntu 10.4.4 kernel 2.6.32.28 and also here update manager shows many update. I have deselectined some language and update all bat i get an error failled in buffer write probably because i use usb 2 Gb for testing Xubuntu before install on my notebook

    thanks

  11. maremare: If you are not very used to Ubuntu/Linux, I suggest you keep your Xubuntu 12.04 for a few more weeks and wait for the final release of 14.04. I suppose upgrading from 12.04 directly to 14.04 can cause problems. I suggest you backup all your files to an external hard drive or a USB memory, and perform a clean install when time comes. I think you need an 8GB USB memory for testing Xubuntu from a USB memory. Good Luck.

  12. Press tab when you see the Ubuntu loader, select your language, press F6 (for “Other Options”) then add the word forcepae at the end ie. the whole boot options line will be:

    file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash — forcepae

    It is works 🙂

  13. Lawrence Glaister

    forcepae option ONLY works on some Pentium M processors. I have a 1.8Ghz 400MHz FSB model and it does NOT support the forcepae option. I was able to get an early version of Ubuntu 10.04 to install and run. My current method of attack is setting up a second computer that does support pae with linux mint 17.3 and using it to rebuild a kernel with the selecting Pentium M CPU, selecting 4Gb under hi memory support (this seems to turn off the PAE flag) and unchecking symmetric multiprocessing support. The build process generates 2 debs (kernel-image and kernel headers)that need installing instead of the default kernel. There are examples of how to do this on the net.

  14. Lawrence, interesting – and sorry to hear. Perhaps Debian is a better choice for you – I think it still supports non-PAE out of the box?

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Time limit is exhausted. Please reload CAPTCHA.

Trackbacks and Pingbacks: