NB: This note relates to the CentOS 6.4, 6.5 and 6.6 "i386" systems.
CentOS (and its upstream distribution) cannot be installed on some older intel-based platforms, in particular: those that don’t support “PAE” (Physical Address Expansion). This renders it useless for those platforms, and makes installation impossible. For my application (which uses a number of cheap, otherwise redundant, Intel Laptops as thin clients), this was a real issue which I had to resolve if I wanted to keep the software up to date with CentOS forward progress – and without investing in new hardware.
This note describes how (after much experimentation) I managed to get this to work, and offers some help if you need it.
If you are trying to install CentOS 6 you’ll know you have this problem if you get the error message “This kernel requires the following features present on the CPU: pae” when you try to boot from the installation CD or DVD.
Luckily the problem can be overcome by creating your own custom installation CD. Don’t be put off by the apparent difficulty of doing that though – If you follow the steps below, you’ll have the required CD ready in a couple of hours – most of which time you can spend mowing the lawn, playing a good video game or otherwise employed while things cook.
At the end of the process you will have a CentOS 6 “Minimal” installation CD image that should (with luck) boot on your Non-PAE hardware (provided that the PAE issue was the only issue that was blocking you in the first place).
Before we get going, let me make an offer of personal help. The process I outline below works if you follow it to the letter, but you do need “root” access to a wipe-able PAE-supporting computer to build the updated CD with, and some previous experience with Linux administration. If you don’t have either of these (or have other difficulties following these steps), then I can supply you with an image of the CD that works for me – for a very small price to help cover my costs of postage, my research and development time. Contact me by email if you want to follow that option up and let me know whether this is for personal, educational, charity or commercial use. Depending on your intended use and your Geography, I typically charge between £10.00 and £100.00 for this service – subject to negotiation and work load. Payment will be processed through “PayPal”.
If you want to have a go at creating your own non-PAE “Minimal” CD, you’ll need the following..
1: a PAE-supporting computer which you can wipe and onto which you can install the standard CentOS 6.x i386 “Minimal” system from scratch. Personally, I use a VMWare virtual machine running on a Windows7 Laptop for this purpose (that too is simpler than it sounds). This system needs access to the Internet, at least 512Mb of memory and 20Gb or so of hard drive.
2: a non-PAE-supporting computer that you can test the installation CD on (a good candidate is obviously the one that originally failed to install CentOS 6.x, and for which you came to this page to get help in the first place). I highly recommend that you make sure that CentOS 5 runs on it before you get too involved in trying to fix the issue for CentOS 6.x.
3: a copy of the CentOS 6.x i386 “minimal” install CD. You can get it from here (and other mirror sites)…
http://vault.centos.org/6.4/isos/i386/CentOS-6.4-i386-minimal.iso (for version 6.4)
http://centos.serverspace.co.uk/centos/6.5/isos/i386/CentOS-6.5-i386-minimal.iso (for version 6.5)
http://centos.serverspace.co.uk/centos/6.6/isos/i386/CentOS-6.6-i386-minimal.iso (for version 6.6)
Once you have got everything you need, then follow these steps..
- Install CentOS 6.x “minimal” system from scratch onto the PAE-supporting computer or VM from the downloaded CD image. Make sure the machine has at least 512Mb of RAM, a suggested 20Gb of hard disk and internet access. We call this the “build machine” from here on. This step is highly recommended as it ensures perfect compliance with the requirements of what follows.
- Once installation is complete, log in to the build machine as “root”, and ensure it has access to the internet. You may need to run “ifup eth0” or equivalent to get an IP address. A good test of internet connection is to try to run the following command, and check that it gives good results (ie: doesn’t throw an error).
- ping –c 4 www.google.com
Now - you have 2 options...
If you just want a copy of the “Minimal” install CD with only the kernel reconfigured but all software versions the same as the original CD, then skip steps 3, 4, 5, 6 and 7, and continue from step 8.
But .. if you want a “minimal” install CD pre-populated with the up-to-date versions of the kernel and other packages then continue from step 3. Note that, now Centos 6.6 has been released, these steps will give you a 6.6 boot CD even if you started from the 6.4 or 6.5 image...
- Edit the yum configuration to allow full caching of downloaded RPMs
- vi /etc/yum.conf
- Set: keepcache=1
- Save the updated file
- vi /etc/yum.conf
- Ensure all RPMs from the CD are installed (this will allow the "yum update" step to do a thorough job). You can safely ignore the many warnings you'll see about packages already installed and missing RSA/SHA1 signatures (NOKEY).
- mount /dev/cdrom /mnt
- cd /mnt/Packages
- for f in *.rpm; do rpm -ihv $f --nodeps; done
- If (like me) you want "puppet" and "subversion" to be installed on your target machines from the custom CD, to assist with the configuration and management of them, then do the following now (otherwise, skip to the next step)..
- cd /var/cache/yum
- yum install -y wget
- wget http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
- rpm -ihv puppetlabs-release-el-6.noarch.rpm
- yum install -y puppet facter subversion
- Run a full “update”
- yum –y update
- init 6 (reboot – when the update is finished)
- log back in as root, and repeat step 2 above (to get an IP address)
- Copy the RPM files that “yum” downloaded into /opt/NEWRPMS (but exclude the “kernel” ones)
- mkdir /opt/NEWRPMS
- cp $(find /var/cache/yum –name '*.rpm') /opt/NEWRPMS
- rm /opt/NEWRPMS/kernel-*
- Download and install the Digitage tarball of scripts and config files (it’s very small)
- cd /root
- yum install -y wget (unless you already did this in step 6)
- wget http://www.digitage.co.uk/files/nopaecentos/rebuild20141105.tgz
- tar xvfz rebuild20141105.tgz
- Install all the RPMs required for the build process, but which are missing.
- cd /root
- sh install-rpms.sh
- Download and install the kernel source RPM by running the following commands.. (note: you may see an error about "file not found" from the wget utility, followed by a successful download. This happens if the kernel was updated in step 6 and is benign).
- cd /root
- sh download-kernel-srpm.sh
- rpm -ihv kernel-2.6.*.src.rpm (dont worry about warnings about user and group "mocbuild" not existing)
- Start the building of the new No-PAE kernel RPM. This process can take quite a long time (it’s over an hour on my laptop), so be patient.
- cd /root
- rngd -r /dev/urandom
- sh build-kernel.sh
- Wait, wait and wait some more.
- When the kernel build is complete, start building the updated ISO image
- cd /opt
- If the “boot.iso” file exists in /opt, delete it..
- /bin/rm boot.iso
- If the “work” directory exists in /opt, delete it..
- /bin/rm –r work
- Make sure the “minimal” install CD or its image file is mounted as /mnt. Using something like one of the following..
- mount /dev/cdrom /mnt
- mount –o loop /opt/CentOS-*-minimal.iso /mnt
- cd /root
- sh build-iso.sh
After a few minutes you will have the updated CentOS6.x Non-PAE “Minimal” install CD image in /opt/boot.iso. Burn this to a CD. Depending your hardware, you may need to transfer it to another machine first. You can use the "ftp" or "lftp" tools to do this (they may need to be installed using "yum" - depending on the version of the Digitage toolkit you are using), or use "sftp" to pull the image from it (an sshd server is running, ready for this purpose).
Use the newly created CD to install your Non-PAE machine in the normal way.
When the installation is complete, the first thing you should do is log in as “root” and edit the /etc/yum.conf file. You should add the line “exclude=kernel*” to it, to ensure that you don’t get a kernel that won’t work with your system when you next run “yum upgrade”.
The next step is probably to install the rest of the software you want using “yum”. Take a look at the output of “yum grouplist” and install the groups you want using “yum groupinstall”. For example..
yum groupinstall “X Windows System”
Enjoy your new “old” computer brought back to life.