Chinaunix首页 | 论坛 | 博客
  • 博客访问: 182068
  • 博文数量: 56
  • 博客积分: 2305
  • 博客等级: 大尉
  • 技术积分: 591
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-13 10:42
文章分类

全部博文(56)

文章存档

2012年(3)

2011年(17)

2010年(36)

我的朋友

分类: LINUX

2010-05-14 13:09:11

[What’s the issue?]

Cisco C200 M1 has new Gigabit Ethernet Controller (82575 / 82576) which is not native supported by ESX4.0 and ESX4.0 Update1.

Cisco suggests to add the specific driver when using CD installation in the following link:

However, we want to get ESX4 installation automatically in Cisco C200 using PXE instead of use two CDs for a large scale build.

But once we boot from the initrd.img from the ISO in PXE, we got the error message “Cannot find the network driver”.

 

[What’s the root cause?]

The problem is we need to add custom driver to initrd.img to boot up this specific Ethernet controller.

James and I did a lot of testing and also no similar solution is found in Google.

We extract the ISO package from the link and get the rpm package, then extract the rpm package and get the driver igb.o

VMware did a lot of change in initrd and it is very different from the one in normal Linux version, like ct44, ct53.

 

We extract original initrd.img adding the new driver in, and also follow James’ guide to update simple.map to include the driver.

Package the new directory to a new initrd.img file, boot from it and still get “Cannot find the network driver” error message.

 

Later today, Eric help us to troubleshoot this issue and found simple.map is actually rebuilt after booting up and the content is coming from igb.xml.

We got the igb.xml from the ISO file and find a new path in initrd: usr/share/hwdata/pciids/igb.xml , update it and then make a new initrd file.

 

Successfully boot from this initrd and loaded PXE kickstart file.

 

[What’s the solution?]

To resolve the issue, please check the command history in the attachment.

Also, we need to update ISO package in PXE to include the latest rpm package and packages.xml.

Because the issue of PXE boot is only for installation, after installation, if we want to get network connection, we still need to do the following steps:

1.)    Insert vmware-esx-drivers-net-igb-400.1.3.19.12.1-1.0.4.164009.x86_64.rpm to VMware/RPMS/

2.)    Update VMware/RPMS/packageData.pkl, change the new igb driver’s string

3.)    Update packages.xml in root directory and change the new igb driver’s string

 

All done, now you have ESX4 silent installation and network connection after install.

 

Conclusion: VMware did a lot of changes in boot initrd (77M, compares with 6.4M of ct53-64) and results difficult to add specific driver. It is also very helpful to grep specific info in log directory:

E.g. weasel.log:2010-03-30 02:36:53,832 DEBUG Rebuilding simple.map file

 

Appendix:

Command history of build a new initrd file:

 

 1026  mkdir C200-ESX4
 1027  mv vmware-esx-drivers-net-igb-400.1.3.19.12.1-1.0.4.164009.x86_64.rpm C200-ESX4/
 1028  ls
 1029  cd C200-ESX4/
 1030  pwd
 1031  ls
 1032  cp /ks/iso/64/esx4/iso/isolinux/initrd.img ./
 1033  pwd
 1034  ls
 1035  ll initrd.img
 1036  ll vmware-esx-drivers-net-igb-400.1.3.19.12.1-1.0.4.164009.x86_64.rpm
 1037  mkdir driveriso
 1038  mkdir initrd
 1039  ls
 1040  mv initrd.img initrd
 1041  mv vmware-esx-drivers-net-igb-400.1.3.19.12.1-1.0.4.164009.x86_64.rpm driveriso/
 1042  ls
 1043  cd driveriso/
 1044  ls
 1045  rpm2cpio vmware-esx-drivers-net-igb-400.1.3.19.12.1-1.0.4.164009.x86_64.rpm |cpio -div
 1046  cd ../initrd/
 1047  ls
 1048  file initrd.img
 1049  mv initrd.img initrd.img.gz
 1050  gunzip initrd.img
 1051  cpio -ivmd  1052  gzip initrd.img; mv initrd.img.gz initrd.img
 1053  ls
 1054  mv initrd.img ../
 1055  ls
 1056  cp ../driveriso/usr/lib/vmware/vmkmod/igb.o usr/lib/vmware/vmkmod/igb.o
 1057  cp ../driveriso/etc/vmware/pciid/igb.xml usr/share/hwdata/pciids/igb.xml
 1058  ll usr/lib/vmware/vmkmod/igb.o
 1059  ll usr/share/hwdata/pciids/igb.xml
 1060  ls
 1061  du -sh .
 1062  find .|cpio -c -o >../initrd_c200.img

阅读(633) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~