BXG Blog

Using Fedora preupgrade with a small /boot

With the recent release of Fedora 14, it was naturally time for an upgrade.  In the past, I have typically erased and done a fresh reinstall for each OS upgrade, but this time I decided to try out Fedora’s preupgrade tool.  In theory, it’s a simple, straightforward wizard that downloads all the necessary rpms and then reboots into the upgrader.  However, my system was first installed with Fedora 12, so it has the 200MB /boot partition that was the default at the time.

The first time I tried running preupgrade, it downloaded stuff for a little while and then crashed with a disk full error.  Sure enough, my /boot directory was completely full.  A little searching reveals that this is a common problem: http://fedoraproject.org/wiki/PreUpgrade#Not_enough_space_in_.2Fboot.  The solution provided there is to fill up the disk to below 100MB before starting, which should cause preupgrade to delay downloading the stage2 installer until after the reboot.  I tried this, but it behaved the same as before.  Time for a little debugging.

Preupgrade first downloads the stage1 installer and an installer kernel.  These take about 35MB total.  Next it tries to download the stage2 installer, which takes about 148MB for x86_64, and it wants to leave at least 26MB free on /boot so the upgrade will succeed.  If you add those up, you’ll see that the 183MB of downloads plus the needed free 26MB doesn’t fit in my 200MB /boot even if I didn’t already have my running kernel and grub files installed there.  So why doesn’t preupgrade notice that the stage2 installer won’t fit?  This bug may be related: https://bugzilla.redhat.com/show_bug.cgi?id=573451. It seems that one of the python modules has a bug that is not correctly detecting the size of the stage2 download.  Well, then perhaps we can go back to the solution specified in the wiki, but modify it a bit.

I fill up my /boot until only 40MB are left.  This time preupgrade downloads the 35MB needed for stage1, sees that less than 26MB are left, and alerts me that I will have to download the stage2 installer after the reboot.  Since I have a wired Internet connection, that’s not a problem, so I proceed.  It downloads all the needed packages, but then stops and tells me I needed to free up 26MB of space in /boot.  Luckily, it offers a retry button, so I delete my filler file and continue.

Finally, it downloaded everything, checked the upgrade, and rebooted into the installer.  After an hour or so of upgrades, it rebooted me back into a shiny new Fedora 14 system.  Was it worth it?  Everything seems to be working, and I spent less time figuring out the /boot than I would have restoring a backup of my data, so I suppose that’s a yes.  When Fedora 15 comes out, I’ll probably do a fresh install so that I can resize /boot to something that supports future upgrades.