Modifying Sun LSI MegaRAID driver to support SATA 300-8X controller
807559Oct 4 2007 — edited Oct 15 2007Hi,
I modified the Sun LSI MegaRAID Driver floppy (available as download from Sun) so that recognised the LSI MegaRAID SATA300-8X and it possible that the same driver would work with the SAS Controller. Boot into Solaris x86 and get to the GUI, open a Terminal and run /usr/X11/bin/scanpci this will return details of all PCI devices. It should recognise the LSI controller (eg SATA300-8X controller)
pci bus 0x0084 cardnum 0x0e function 0x00: vendor 0x1000 device 0x0409 LSI Logic / Symbios Logic MegaRAID
The standard LSI Mega Driver recognises the following LSI references
vendor 1028 device 13
vendor 1000 device 407
vendor 1000 device 407.1000.532
vendor 1000 device 408
vendor 1000 device 408.1000.2
vendor 1000 device 1960
vendor 1001 device 1965
Modified Driver here (is here ftp://ftp@flomerics.co.uk/pub/lsimega60modified.img.bz2 for next 30 days or so)
vendor 1000 device 409
vendor 1000 device 409.1000.3008
vendor 1000 device 409.1000.3008.a
In order to add further devices the process is simple, take the Sun LSI Driver create the floppy using the img file.
Copy the contents of the floppy to /tmp/lsi
cd /tmp/lsi/DU/sol_210/i86pc/Product
uncompress lsimega.Z
unzip lsimega
cd SUNWlsimega/install
edit the postinstall file to add your pci reference information (obtained using prtconf -pv, sample output below)
compatible: 'pci1000,409.1000.3008.a' + 'pci1000,409.1000.3008' + 'pci1000,3008' + 'pci1000,409.a' + 'pci1000,409' + 'pciclass,010400' + 'pciclass,0104'
model: 'RAID Controller'
add to postinstall file references to line
check_add_drv -i '"pci1028,13" "pci1000,407" "pci1000,407.1000.532" "pci1000,408" "pci1000,408.1000.2" "pci1000,409" "pci1000,409.1000.3008.a" "pci1000,409.1000.3008" "pci1000,1960"' -b "$BASEDIR" -c scsi lsimega
and these lines
echo "setprop target-driver-for-pci1000,409 'sd'" >> $BASEDIR/boot/solaris/bootenv.rc
echo 'pci1000,409 pci1000,409 msd pci none "Solaris(TM) Device Driver for LSI MegaRAID Adapter"' >> $BASEDIR/boot/solaris/devicedb/master
echo 'pci1000,409.1000.3008 pci1000,409 msd pci none "Solaris(TM) Device Driver for LSI MegaRAID Adapter"' >> $BASEDIR/boot/solaris/devicedb/master
echo 'pci1000,409.1000.3008.a pci1000,409 msd pci none "Solaris(TM) Device Driver for LSI MegaRAID Adapter"' >> $BASEDIR/boot/solaris/devicedb/master
save postinstall file
now cd up one directory, run commands below to find a) file size b) the checksum
$ ls -l install/postinstall
-rw-r--r-- 1 russell sysadmin 4323 Oct 3 07:09 install/postinstall
$ sum install/postinstall
64954 9 install/postinstall
edit the pkgmap file to reflect the new postinstall file
1 i postinstall 4323 64954 1123150996
save pkgmap file
cd /tmp/lsi/DU/sol_210/i86pc/Product
zip -r lsimega SUNWlsimega
mv lsimega.zip lsimega
compress -f lsimega
copy modified lsimega.Z back to floppy
cp /tmp/lsi/DU/sol_210/i86pc/Product/lsimega.Z /floppy/floppy0/DU/sol_210/i86pc/Product/
Boot from Solaris, use modified driver floppy, once GUI is running then open terminal and run format, your disk will appear.
If you are using Solaris 10 8/07, I found the install appearred to stop at 97%, the install.log indicated that the install was complete, so I rebooted.
The system failed to boot, the instructions below fixed it.
1. Boot from the Solaris 10 8/07 DVD
2. Add the modified SUN LSI MegaRAID driver from the floppy
3. End, the system will automatically boot
4. Press Enter when prompt for a GUI install
5. Enter your locale information
6. Start Terminal
6a. mount your lsi megaraid sata disk as /a , eg
# mount -F ufs /dev/dsk/c2t0d0s0 /a
6b. mount the floppy
# mkdir /tmp/floppy
# mount -F pcfs -o ro /dev/diskette0 /tmp/floppy
6c. change directory to floppy
# cd /tmp/floppy/DU/
6d. run the install-finish script as shown
# ./install-finish /a
6e. wait for command to finish, then reboot
If other LSI MegaRAID cards can be checked, then these cards can be used to update the standard Solaris configuration to make it easier for others.