Upgrading Ubuntu 12.04 to 14.04 on Pentium-M computers

Starting from 12.10, Ubuntu no longer offered non-PAE kernels. Some Pentium-M processors do not announce the PAE flag, although they actually have the PAE capability. When doing a release upgrade from 12.04, the Ubuntu release upgrade tool will complain of missing PAE feature on such computers and then abort after printing a link to the EnablingPAE document on the Ubuntu community help website. However, this document only covers fresh Ubuntu installation on such computers, leaving release upgrade users out in the cold.

My ThinkPad X32 has such a Pentium-M processor.

$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 1.60GHz
stepping : 6
microcode : 0x18
cpu MHz : 600.000
cache size : 2048 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 ss tm pbe up bts est tm2
bogomips : 1198.94
clflush size : 64
cache_alignment : 64
address sizes : 32 bits physical, 32 bits virtual
power management:

Solution

1. Install the fake-pae package from ppa:prof7bit/fake-pae.

$ sudo add-apt-repository ppa:prof7bit/fake-pae
$ sudo apt-get update
$ sudo apt-get install fake-pae

After installing fake-pae, /proc/cpuinfo should show the pae flag.

$ grep pae /proc/cpuinfo
flags : pae fpu vme de pse tsc msr mce cx8 mtrr pge mca cmov clflush dts acpi mmx fxsr sse sse2 ss tm pbe up bts est tm2

2. Now do the release upgrade. It shouldn't complain of missing PAE feature any more.

$ sudo do-release-upgrade

3. On the first reboot after the release upgrade, the "forcepae" parameter must be passed to the kernel manually on the grub menu, otherwise the PAE-enabled kernel in Ubuntu 14.04 won't boot.

4. After rebooting into Ubuntu 14.04 successfully, fake-pae can now be removed.

$ sudo apt-get purge fake-pae

5. Upgrade to grub2.

If you have been doing release upgrades all along and is still using the legacy grub (v0.97), it's time to upgrade to grub2. The legacy grub package in Ubuntu 12.04 does not seem to support passing the "forcepae" parameter to the kernel by setting GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub.

$ sudo apt-get install grub-pc
$ sudo upgrade-from-grub-legacy

When installing, grub2 reads kernel parameters from the current running kernel and adds "forcepae" to its configuration by default, so you can forget about it after upgrading to grub2.

References
  1. https://help.ubuntu.com/community/PAE
  2. https://launchpad.net/~prof7bit/+archive/ubuntu/fake-pae
  3. https://help.ubuntu.com/community/Grub2/Upgrading

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.