How to tweak the 3ware 9650SE SATA RAID controller driver into ESX3i

Version 3

    IMPORTANT: First of all please consider that following my instructions below to embed a 3rd-party driver
    into ESX3i is and remain UNSUPPORTED forever. You will not get any help from the vmware stuff personnel
    until the below mentioned driver will be officially integrated as an update into the main upstream distribution.

    Be also aware that integrating 3rd party driver in this way could seriously damage or alter any data stored
    in your datastore, if the driver has not passed VMware's strong quality regression,NFR, harness tests before.
    Please consider also that using the oem.tgz file can be somedays overwritten without notice.
    You are alone, be careful on that.

    But I want give back something to this lovely community, giving me a lot of information and even VMware for
    ESX3i a small-footprint OS that can run 24x7 from a USB-drive having a rock solid filesystem VMFS and
    beeing a small subset of the industry proven ESX3. This will be the future of the next generation of computing
    platform.

    Embedding ESX3i into the BIOS of any server, laptop, desktop and workstation and you get "virtualization at
    your fingertips"
    Making things easier to maintain and handle even portable across systems, easier to backup and distribute.
    Easier for the developer for buiding specialized appliances without the need using a full blown operating
    system with all the security concerns in it.

    I brought two months ago a 3ware 9650SE SATA-RAID Controller after reading in the 3ware forum that the
    newest 3ware driver can run under ESX3i.
    (See:http://www.3ware.com/KB/article.aspx?id=14922)

    Where can I find the ESX3i driver?

     

     

    • Please go to the 3ware download support website (http://www.3ware.com/support/download.asp)
    • Select the 3ware 9690SA Series software product
    • Select the item "Complete 9.5.0.2 CD for VMware ISO" (*9.5.0.2-Codeset-Complete.iso* checksum: a2939603988521aa6b49d78597a0b39a)
    • Burn the iso file or use Winimage to open the ISO without burning (my favorite way:-)* )
    • Go to VMupdates/RPMS
    • Extract VMware-esx-drivers-scsi-3w-9xxx-2.24.08.014vm-00000.i386.rpm into a temp directory
    • From the temp directory use 7-Zip to open the rpm file in a Windows environment
    • Double click the rpm file, you will see VMware-esx-drivers-scsi-3w-9xxx-2.24.08.014vm-00000.i386.cpio.gz
    • Double click on the gz file, you will see VMware-esx-drivers-scsi-3w-9xxx-2.24.08.014vm-00000.i386.cpio
    • Double click on the cpio file, you will see a dot folder
    • Double click on the dot folder
    • Goto /usr/lib/vmware/vmkmod
    • extract the 3w_9xxx.o driver
    • upload this driver to the ESXi box into the /mod directory
    • check /sbin/vmkload_mod /mod/3w_9xxx.o

    BTW here is my calculated MD5 checksum "cb3e6d0cc53b61833d3ba7194f9631fa 3w_9xxx.o"

    But how do I enable this driver inside ESX3i?
    I read a little bit around and downloaded the newest driver from 3ware, extracted the 3w_9xxx.o driver and
    uploaded it with scp into my esx3i server into the /mod directory. Afterward from the unsupported shell I loaded
    manually the driver into the ESX3i by executing /sbin/vmkload_mod /mod/3w_9xxx.o. I was very happy to
    format the RAID5 with VMFS and see my RAID5 array up and running every time after a rescan while rebooting
    the partition.
    Testing it a while I could not find any show stopper or strange behavior, so I considered to add this driver into
    the system.

    But how the hell can I automate this stuff?
    First of all is essentially to know the PCI-ID of the mentioned card after loading the driver manually into the
    running kernel with /sbin/vmkload_mod /mod/3w_9xxx.o and executing lspci -p from the unsupported shell.
    The output of lspci was ... 13c1:1004 13c1:1004 ... wonderful.

    What next?
    OK I discovered that /etc/vmware/simple.map
    has a list of all supported devices with vendor-id/device-id sub-vendor-id/sub-device-id. So I inserted into
    /etc/vmware/simple.map 13c1:1004 0000:0000 storage 3w_9xxx and saved the file

    The little thing to know now is the way ESX3i loads this driver automatically. Looking inside
    /vmfs/volumes/Hypervisor1 there are all the tgz compressed stuff to load after
    booting the kernel.

    I tried to be not invasive and exchanged the empty oem.tgz file with my generated oem.tgz file.
    The name sounds reasonable to use it for this tweak!

    Here are the steps:

    - Press Alt-F1 on the DCUI-console and enter -> unsupported <- and the root password if set
    - cd /tmp
    - make mkdir -p /mod
    - make mkdir -p /etc/vmware
    - make mkdir -p /usr/share/hwdata
    - cd /tmp/mod
    - get the driver from another ssh server with scp user@host:/tmp/3w_9xxx.o .
    - cd /tmp/etc/vmware
    - copy simple.map from /etc/vmware in this directory
    - vi simple.map
    - insert 13c1:1003 0000:0000 storage 3w_9xxx for the PCI-X Card before the line
    beginning with 14e4:1600
    - insert 13c1:1004 0000:0000 storage 3w_9xxx for the PCIe Card
    - save and quit (:wq)
    - cd /tmp/usr/share/hwdata
    - copy pci.ids from /usr/share/hwdata in this directory
    - vi pci.ids
    - search for 13c1 3ware
    - insert the following lines
    - 1003  3ware 9650SE-series SATA-RAID Controller (PCI-X)
    - 1004  3ware 9650SE-series SATA-RAID Controller (PCIe)
    - save and quit (:wq)
    - cd /tmp
    - chown -R 201:201 ./mod
    - chown -R 201:201 ./etc
    - chown -R 201:201 ./usr
    - chmod -R 755 ./mod
    - chmod -R 755 ./etc
    - chmod -R 755 ./usr
    - chmod 644 ./etc/vmware/simple.map
    - chmod 644 ./usr/share/hwdata/pci.ids
    - chmod 755 ./mod/3w_9xxx.o
    - tar -cvzf oem.tgz etc mod usr

    Now you have tweaked the oem.tgz file with the 3ware driver in it and simple.map.
    Copy this file into /vmfs/volumes/Hypervisor1 and chmod 755 oem.tgz and
    chown root:root oem.tgz it. Repeat the above step also for /vmfs/volumes/Hypervisor2

    Cross your fingers and reboot. If every thing is in place the 3ware driver will
    be loaded automatically.

    My questions now to the vmware guys are:
    1) At what time can I expect this driver in the upstream esx3i bundle?
    2) The 3ware controller type is unknown in VIClient -> Configuration -> Storage
    Adapters. Where can I change it?
    3) Is there a chance to see an ssh server for maintenance purposes in the future?

    Enjoy it and tell me if this advice was useful, please consider to give me some points/credits if
    this topic helped you in one way or another.

    NOTE:the oem.tgz file below contains new PCI ID's for ICH8 and ICH8M SATA controller!

    This document was generated from the following thread: How to tweak the 3ware 9650SE SATA RAID controller driver into ESX3i