1,212 瀏覽數

Vmware – PXE installation for new driver

如何將 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 都一樣.

  1. 修改 vmware ESX 4 initrd
  2. 修改 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

發表迴響