如何將 VMware 新的 driver 儲存至 PXE 裡是參考這一份文件所寫而成的 http://www.phpfans.net/article/htmls/201005/Mjg1NDEy.html
目前公司的 Server 所使用的 Server 上面的 RAID 為 Promise SuperTrak EX8650 ,這一張 RAID 卡並不在 VMware 的支援列表上所以上 Promise 的網站一樣找不到任何支援 Vmware ESX 的 driver. 最後是透過 Promise 的 FAE 拿到一個尚未經過 VMware 簽署的 driver.但問題來了透過 PXE 安裝時, Vmware ESX 4 卻說找不到該光碟,手動掛載一樣是沒什麼作用.最後透過改 PXE 裡的檔案才完成的.方式也很簡單 3 個步驟.雖然網站說的是 Gigabit Ethernet Controller (82575 / 82576) 但基本上大部分要掛的 driver 都一樣.
- 修改 vmware ESX 4 initrd
- 修改 vmware ESX 4 package 的檔案.
修改 vmware ESX 4 initrd
先來看一下 Promise 的 vMware 驅動安裝光碟有什麼東西.Promise 驅動光碟為 iso 檔所以透過 mount -o loop 可以查出裡面所提供的檔案
[root@pxe ~]# mount -o loop Vmware40_406100007.iso /mnt [root@pxe ~]# ll -a /mnt/.rpm/ total 19 drwx—— 2 root root 2048 Apr 3 2009 . drwx—— 4 root root 2048 Apr 3 2009 .. -r–r–r– 1 root root 280 Apr 3 2009 TRANS.TBL -rw-r–r– 1 root root 14464 Apr 3 2009 vmware-esx-drivers-scsi-stex-400.4.06.1000.07-1.0.3.00000.x86_64.rpm
我們所需的檔案為 vmware-esx-drivers-scsi-stex-400.4.06.1000.07-1.0.3.00000.x86_64.rpm
[root@pxe ~]# mkdir promise [root@pxe ~]# cd promise/ [root@pxe promise]# rpm2cpio vmware-esx-drivers-scsi-stex-400.4.06.1000.07-1.0.3.00000.x86_64.rpm |cpio -div ./etc/vmware/init/manifests/promise-stex.mf ./etc/vmware/pciid/stex.xml ./usr/lib/vmware/vmkmod/stex.o 52 blocks
就是需要 stex.o 以及 stex.xml 的個檔案需要更新到 vmware ESX 4 的 initrd.img 裡面.
現在來看一下 vmware ESX 4 的 initrd.img 內容是長的怎麼樣.首要的目的就是將新的 stex.o 以及 stex.xml 取代舊的.
[root@pxe ~]# mkdir vmware [root@pxe ~]# cd vmware/ [root@pxe vmware]# cp initrd.img initrd.img.gz [root@pxe vmware]# gunzip initrd.img.gz [root@pxe vmware]# cpio -ivmd [root@pxe vmware]# ll total 214856 drwxr-xr-x 2 201 201 4096 Sep 30 11:14 bin -rw-r–r– 1 201 201 7 May 19 08:33 build_number drwxr-xr-x 2 201 201 4096 May 19 08:32 dev drwxr-xr-x 16 201 201 4096 Sep 30 11:14 etc -r-xr-xr-x 1 201 201 2810 May 19 08:32 init -rwxrwSrwx 1 root root 219731456 Sep 29 17:28 initrd.img drwxr-xr-x 5 201 201 4096 Sep 30 11:14 lib drwxr-xr-x 3 201 201 4096 Sep 30 11:14 lib64 drwxr-xr-x 2 201 201 4096 May 19 08:32 proc drwxr-xr-x 2 201 201 4096 Sep 30 11:14 sbin drwxr-xr-x 2 201 201 4096 May 19 08:32 sys drwxr-xr-x 2 201 201 4096 May 19 08:32 sysroot drwxr-xr-x 2 201 201 4096 May 19 08:32 tmp drwxr-xr-x 9 201 201 4096 Sep 30 11:14 usr drwxr-xr-x 5 201 201 4096 Sep 30 11:14 var [root@pxe vmware]# cp ../promise/usr/lib/vmware/vmkmod/stex.o usr/lib/vmware/vmkmod/stex.o [root@pxe vmware]# cp ../promise/etc/vmware/pciid/stex.xml usr/share/hwdata/pciids/stex.xml [root@pxe vmware]# find .|cpio -c -o >../initrd_promise.img
修改 vmware ESX 4 package 的檔案
正常需要下面三個步驟,不過修改 packageData.pkl 檔案難度較高.
- Insert vmware-esx-drivers-scsi-stex-400.4.06.1000.07-1.0.3.00000.x86_64.rpm to VMware/RPMS/
- Update VMware/RPMS/packageData.pkl, change the new promise driver’s string
- Update packages.xml in root directory and change the new promise driver’s string
我以這邊我直接使用 vmware-esx-drivers-scsi-stex-400.4.06.1000.07-1.0.3.00000.x86_64.rpm 取代 vmware-esx-drivers-sata-sata-promise-400.1.04.0.1-1vmw.0.0.260247.x86_64.rpm 檔案即可.
[root@pxe ~]# cd /var/ftp/vmware-esx-4.1/VMware/RPMS/ [root@pxe RPMS]# ll *promise* -rw-r–r– 1 root root 14464 Aug 26 08:32 vmware-esx-drivers-sata-sata-promise-400.1.04.0.1-1vmw.0.0.260247.x86_64.rpm [root@pxe RPMS]# cp vmware-esx-drivers-scsi-stex-400.4.06.1000.07-1.0.3.00000.x86_64.rpm vmware-esx-drivers-sata-sata-promise-400.1.04.0.1-1vmw.0.0.260247.x86_64.rpm