/boot to own partition

By | 12 Sep 2008

Using an emulated SCSI-adapter in VMware with a very large root disk may give you either

Error 18: Selected Cylinder exceeds maximum supported by BIOS

or

Error 16: Inconsistent Filesystem Structure

This is because the initrd image is created (maybe only partially) outside the 1024-cylinder boundary accessible by the VMware BIOS. The only stress-free solution is to move /boot to its own partition directly at the beginning of the virtual disk. There is a nice how-to from Tek Guru.

So use your favourite partitioner (I prefer GPartEd from the SysRescCD.) and move the beginning of the first partition about 100 MiB to the right to add a new ext3 partition in front of it. 100 MiB should be enough for most people. You may need to use fdisk‘s expert menu to fix the partition ordering if you can’t live with a /dev/sda3 at the beginning of the disk.

Afterwards mount both partitions, the future /boot and the system partition and copy the contents of /boot to the new and empty partition. Rename the old boot-folder and create a new empty one. Edit the fstab and add following line:

/dev/sda3     /boot     ext3     rw     0    1

(Tek Guru used ro here to mount the partition read-only. As Ubuntu often updates the initrd, rw is the better way.)

Now open the grub/menu.lst and remove the /boot in front of the entries. Since grub sees the plain partition, everything is in the root directory at this point. Maybe you also have to change the root hd(0,X) if your X is not 0 (= the first partition).

Using the rescuecd, you can now boot your system using the rescuecd boothd=/dev/sda2 (root=/dev/sda2 in recent versions) parameter. If the system is up, run

grub-install /dev/sda

to finally install grub correctly. You should now be able to boot.

Leave a Reply