My goal: use Solaris 10 on x86 with the LSI MegaRAID SATA 150-4
controller card. This card is not supported out of the box, but is a
member of a family of controllers from LSI that are supported (some
members of the MegaRAID family) with the amr driver. According to the
Sun man page for "amr", the amr driver is ported from FreeBSD and the
current FreeBSD amr driver does support the MegaRAID 150-4.
I installed the card in my target machine and installed 3 SATA disks. 2
in a Raid 1 logical drive and one hot spare.
I attempted to install Solaris from CD, hoping that the amr driver
would find the card. It did not.
I hooked up a single P-ATA IDE driver and installed onto that instead.
Once the system was running, I ran prtconf -pv and identified the RAID
card in the PCI device tree. It said its name was "pci1000,4523" and
also had some "PCI1000,1960" stuff. Then, I went to
/etc/driver_aliases
and added the line
amr "pci1000,4523"
I then rebooted the machine and low and behold, /devices now showed the
RAID card. I did a devfsadm and that created a /dev/dsk/c2t0d0* set of
devices for the logical drive on the RAID card and I used format to
fdisk and set up the disk and then newfs to create a new file system on
the logical disk on the RAID card. I mounted it and was able to copy
files, use dd to create a big file, etc. So the amr driver does seem to
work with the RAID card once it knows what to look for.
I thought, great, now I should be able to install on to it if I can
figure out how to update /etc/driver_aliases in my install image.
The answer to that was to figure out how to set up a netinstall server.
I used the DVD iso and another test Solaris 10 machine I had previously
set up while waiting for the RAID card to arrive, and I was able to set
it up and then edit the /etc/driver_aliases file inside the install
server install dir etc.
I was able to netboot the target PC with the RAID card in it and use my
netinstall to indeed install on the RAID card logical drive (which was
now found).
However, when it was time to reboot it would not boot as the boot could
not find the drive.
So, in several iterations (and some of these steps may be superfluos,
as I am kind of figuring this out as I go), I did the following, which
now allows the boot code to find the disk and attempt to boot (which is
not successful, see end for messages).
I booted the IDE disk on this machine and modified /etc/device_aliases
so that it would see the RAID card and rebooted. Then I booted again
(actually several times) using the installation on my IDE disk and
mounted the RAID logical drive at /mnt and edited the following (take
/mnt off to see actual path when this disk is trying to boot)
/mnt/platform/i86pc/boot/solaris/bootenv.rc (which is
/boot/solaris/bootenv.rc on the RAID logical drive when it is booting
and supplies the eeprom values to the boot loader)
added:
setprop target-driver-for-pci1000,4523 'sd'
--
in
/mnt/platform/i86pc/boot/solaris/devicedb/master
added
pci1000,4523 pci1000,4523 msd pci none "MegaRAID SATA 150-4D"
---
At this point, the boot process does find the disk and then goes to the
boot prompt with a boot path of /pci@0,0/pci1000,4523@8/sd@0,0:a
I hit return and a ton of not found: <blah> messages goes by and then a
message about an error
in detail
.
.
.
lots of not found
.
.
.
not found: strinit
not found: mp_strinit
not found: rcop_absolut_<something I can't read in my notes>
.
.
.
not found: ttyinit
krtld: error during inital load/link phase
could not run kernel/unix
<< Current Boot Parameters >>
Boot path: /pci@0,0/pci1000,4523@8/sd@0,0:a
Boot args:
And we are back to the hit b or i phase.
I did go in to the boot interpreter and showed the devices and the
pci@0m0/pci1000,4523@8
is listed.
I am not sure exactly what is going on here yet and any help or hints
or ideas on what is happening at this point, as well as ideas on what I
might have missed, would be appreciated.
I assume that the support MegaRAID SCSI 320-2x card, which is listed in
the amr driver as supported, does allow boot, so with the right
modifications, I would assume this MegaRAID SATA 150-4D card, in the
same family, and supported with my "device_aliases" "hack" on a running
Solaris machine, should also boot.
Thanks for any help or ideas or comments
Chad
Rather than setting up an install server, you could have just
mounted the RAID volume under /mnt, run "ufsdump|ufsrestore",
installboot, and modified you /mnt/etc/vfstab,
/mnt/boot/solaris/bootenv.rc, /boot/solaris/devicedb/master files.
You seem to very close. Perhaps you should try again from the
start.
John
groe...@acm.org
Thanks for the idea. I was about to try your suggestion when I decided
to redo from scratch what I had done before. This time it worked.
Here is a post I made in a Solaris forum at sun in the install forum
for the archives:
"Hi
What a difference a day makes. I don't know what I did wrong the first
time -- I must have accidently touched a file or something. I repeated
what I did before, this time straight through as I was not figuring
things out as I went, and it went and booted fine after installation.
So the system is now running with only the LSI MegaRAID SATA 150-4
controller and a RAID 1 logical drive from that controller using the
amr driver.
For posterity and the archives, here is the short version of how I
achieved this.
I first installed Solaris 10 x86 03/05 on the system to a normal ide
drive attached to the system board IDE controller 1. I then updated
the /etc/driver_aliases file to add in
amr "pci1000,4523"
which is how this board comes up in prtconf -pv
I then did a devfsadm to have the /dev/dsk/ files created for this
drive on the running system.
I then set up a custom netinstall on a different machine where the only
difference I made to the installer was to update the etc/driver_aliases
file used by the miniboot of the installer to include the above line.
That allows the installer to recognize the controller and the disks on
it and not give a "no disks" error.
I used this custom netinstall to install onto the machine with the
MegaRAID controller. When it came time to reboot the machine during
the install, I instead booted back into the temporary ide based system
I started with. I then mounted the MegaRAID drive in /mnt and went in
to
/mnt/etc/driver_aliases and fixed it as above
/mnt/boot/bootenv.rc and added the line
setprop target-driver-for-pci1000,4523 'sd'
in where the other similar lines are
/mnt/boot/solaris/devicedb/master and added the line
pci1000,4523 pci1000,4523 msd pci none "MegaRAID SATA 1500-4D"
after the other MegaRAID entry
I then unmounted /mnt and rebooted the machine, this time telling the
BIOS to boot the MegaRAID controller instead.
It came up fine and installed the ccd companion disk and then reboot
and seems to be running fine...
Thanks all
Chad
"
Please submit your RAID contoller into the HCL with your procedure
in the driver info section.
<URL:http://www.sun.com/bigadmin/hcl/>
Thanks,
John
groe...@acm.org