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:
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.