When upgrading your Linux machine to or installing a fresh version of SUSE Linux 10.0, you’re likely to run into some weird problems when you have an Adaptec ATA 2400A or possibly any other I2O RAID controller installed in your system.
Since I ran into these problem myself, I though I might as well tell you how to fix them. All my problems started when I upgraded my trusty Linux server to SUSE Linux 10.0. Actually, back then it was 10.0-RC1 but the problem is still with 10.0 and I presume it was also introduced in SUSE Linux 9.3 with the latest patches and updates.
The thing is that SUSE in their (usual) blistering ignorance of good procedures choose to activate some “cutting edge” features without – again, as usual – thinking them through. One of those features is I2O support. Normally, this would have been a great idea for the I2O subsystem greatly simplifies handling of I2O devices which turn out to be mostly RAID controllers. (Surprise, surprise).
There’s a catch, though. As the I2O FAQ clearly states, you can have either the I2O or the Adaptec driver loaded but not both at the same time. Now have a guess what SUSE is doing. Right, they’re loading both. What will happen is that your system will happily start to install Linux and copy the contents of CD1 to your hard drive. It doesn’t matter whether this drive is controlled by the RAID controller or not for the kernel used at that point of the installation doesn’t contain any I2O support.
Problems start afterwards. For the next step of the installation process runs using the kernel that was installed in Phase One. And this kernel does have I2O support enabled. At least the clash of the I2O system and the Adaptec driver dpt_i2o can and will have many side effects. First and most noticeable is that you can’t access the array any longer. Much harder to detect is the fact that your PCI bus and especially it’s IRQ and memory allocation will be fubar’ed. This can and more often than not will result in failures to start the GUI for the installer, sporadic hangs and possibly problems with other devices on the PCI bus. I don’t know whether other controllers are affected as well. The I2O site names a whole bunch of supported adapters and I don’t know whether they already support the I2O subsystem or come with their own drivers as my Adaptec does. Feedback on this topic is welcome.
To fix the hangs, you’ll either have to compile your own kernel (which I presume you don’t want to do) or disable the I2O support in the installed kernel (which is my preferred way of solving this problem). To achieve that goal, just finish Phase One of the installation as usual. When the system boots after Phase One is finished, however, you re-insert the first CD and fire up the rescue system. You’ll get to a root shell. From there, mount your hard drive using a set of simple commands:
mount /dev/hda1 /mnt/tmp
mv i2o i2o.fubar
Note that you’ll have to replace the /dev/hda1 above with your actual boot device. For an array provided by the RAID controller /dev/sda1 would most likely be the correct value. The same is true for systems booting from real SCSI devices. Reboot. Installation should now proceed without problems and the system should run fine afterwards.
Don’t forget that you’ll have to do this every time you update your kernel.
I agree that this is a rather brute force approach but it’s the fastest and easiest way I could come up with. If you’ve got a better solution let me know.