Not sure if that qualifies as «retrocomputing», but it's indeed a kind of retro-enterprise autism I'm into. I have a couple of SCSI controllers (parallel SCSI, I mean, not SAS), both being of the LSI 53c1020/53c1030 variants. After Debian Trixie gave me a hard time using 32-bit PCI hardware because of DMAR issues, I've decided to try Rocky Linux 9 on that old host (i7-3770, 16 GB, Asus P8H61 LX2 2.0.) However, Rocky refused to use the LSI SCSI controller, which uses the mptspi driver. This article shows how to bamboozle Rocky and get it to install to and load from a SCSI drive.
Upon loading the installer, launch a terminal, become root and do as follows:
modprobe mptspi
dmesg will complain about unmaintained modules, yada, yada (I just hope you won't use that on production.) But, in my case, it didn't automatically bind to the card, which in my case has the PCI ID 1000:0030. If your install also doesn't pick you card up as well, you can force mptspi to look the card up:
echo "1000 0030" > /sys/bus/pci/drivers/mptspi/new_id
Theoretically, you also would have to do a echo xxxx:xx:xx.x > /sys/bus/pci/drivers/mptspi/bind (those x's being your card's PCI address), but I didn't need to. After issuing the first echo command, the driver bound to the card and the SCSI drive was detected.
After that, you can follow the installation as per usual.
Upon quitting the installer, the computer restarts automatically. If you just go with the flow, it won't get past initrd, since it will suffer from the same issue the live ISO did. To remedy this, you can either use the dracut shell or launch a root shell before closing the installer. I've opted to do it the hard way, i.e. on dracut's shell.
Repeat the modprobe and the echo steps of the past section.
mkdir -p /mnt mount /dev/sd<XY> /mnt # check `dmesg` to get the partition names mount -o bind /dev /mnt/dev mount -o bind /sys /mnt/sys mount -o bind /proc /mnt/proc chroot /mnt ``` That will take you into a shell inside your fresh installation. Use you preferential editor (`vi` or `nano`, perhaps) to create the following files: `/etc/modules-load.d/mptspi.conf`:
mptspi
`/etc/modprobe.d/mptspi_load.conf`:
install mptspi /sbin/modprobe –ignore-install mptspi; echo “1000 0030”
> /sys/bus/pci/drivers/mptspi/new_id
What this does is to load the module upon boot and then to define a custom command to be called when the module is being loaded. `--ignore-install` flag prevents recursive loop, since this `modprobe` would call back the `install` line. The `echo` part is the same as we did before, but is now called right after the module is loaded. Now, we need to regenerate `initrd`. On Rocky Linux, we do it via `dracut` CLI utility:
d
racut -f -v ```
The new initrd image will now contain those files we edited before and thus loading the driver as per usual.
Exit the chroot and restart the machine (or close the installer.)
Now, Rocky Linux should boot as expected.