Today I set up a new Ubuntu 10.04 Server on a Dell PowerEdge T110. The installation went smoothly. However, when booting for the first time, after waiting for some time, the system would drop me into a busybox shell with not much to see. Having seen this problem often, I thought that the /dev/sda1 device would not be there because of missing kernel modules.
You can see the output in the picture on the right.
However, when checking /dev, I surely found /dev/sda1. After some poking around I found out that the integrated RAID controller needs some more time to warm up and the kernel didn’t want to wait for the disks to come available through the RAID controller any longer.
So, the solution is to add the ‘rootdelay’ parameter to the kernel option into the /boot/grub/grub.cfg
linux /boot/vmlinuz-2.6.32-26-generic root=/dev/sda1 rootdelay=60 ro single
This instructs the kernel to wait for 60 seconds before trying to enter the init process. This fixed the problem and I was able to boot into the newly installed system.
In order to make this change appear in all grub entries when Ubuntu does a kernel upgrade, you have to edit the file /etc/default/grub and also add that parameter to the GRUB_CMDLINE_LINUX variable.
After that, run ‘update-grub’ and you can double-check that your changes appear in /etc/grub/grub.cfg.