分类: LINUX
2009-05-09 09:54:32
注:
1. 所有的操作都在Linux终端环境下完成。
2. 系统中打开两个终端窗口,分别供root(#)用户和esxi($)用户进行操作。
3. 需要修改两个目录下的oem.tgz文件:/oem.tgz和/install.tgz:/usr/lib/vmware/installer/VMware-VMvisor-big-
4. 本文以增加RTL8168/8111千光网卡驱动为例,其他网卡和存储控制器的操作方法类似,操作时注意当前目录的点号(.)。
5. 参考
6. 转载请保留原文链接。
1 准备原始文件
1. 创建需要的用户:
1.1. # groupadd –g 201 esxi
1.2. # useradd –u 201 –g esxi esxi
2. 新开一个终端窗口,使用esxi用户登录,拷贝下载的原始ISO文件及其他需要的驱动文件:
2.1. $ mkdir ~/src
2.2. $ cp /your/iso/path/VMware-VMvisor-InstallerCD-
3. 挂载原始ISO:
3.1. # mkdir /mnt/vcdrom
3.2. # mount -o loop -t iso9660 /home/esxi/src/VMware-VMvisor-InstallerCD-
4. 拷贝出原始ISO中的全部文件,用来生成新ISO文件:
4.1. $ mkdir ~/ISO
4.2. $ cp –R /mnt/vcdrom ~/ISO
2 生成自定义的oem.tgz:
2.1 创建临时目录,并解压BINMOD.TGZ文件,其中有我们需要修改的文件(simple.map、pci.ids):
2.1.1 $ mkdir ~/tmp
2.1.2 $ tar –zxvf ~/ISO/BINMOD.TGZ –C ~/tmp
2.2 创建oem.tgz需要的目录:
2.2.1 $ mkdir ~/oem/mod
2.2.2 $ mkdir –p ~/oem/etc/vmware
2.2.3 $ mkdir –p ~/oem/usr/share/hwdata
2.3 拷贝需要修改的文件,及相关驱动
2.3.1 $ cp ~/tmp/etc/vmware/simple.map ~/oem/etc/vmware
2.3.2 $ cp ~/tmp/usr/share/hwdata/pci.ids ~/oem/usr/share/hwdata
2.3.3 $ cp /your/driver/path/r8168.o ~/oem/mod
2.4 修改pci.ids和simple.map文件,加入相应的驱动配置:
2.4.1 # pci.ids 增加设备类型
# vendor vendor_name
# device device_name <-- single tab
# subvendor subdevice subsystem_name <-- two tabs
10ec Realtek Semiconductor Co., Ltd.
……
RTL-8168/8111
1458 e000 RTL
RTL-8169
1371 434e ProG
2.4.2 # simple.map 增加设备驱动(行)
10ec:8168 0000:0000 network r8168
10ec:8169 0000:0000 network r8169
2.5 修改权限,打包oem.tgz
$ chown -R esxi:esxi ~/oem
$ chmod -R 755 ~/oem
$ chmod 644 ~/oem/etc/vmware/simple.map
$ chmod 644 ~/oem/usr/share/hwdata/pci.ids
$ cd ~/oem
$ tar -cvzf ../oem.tgz .
$ chmod 755 ../oem.tgz
2.6 至此,oem.tgz文件生成完毕,拷贝到ISO根目录下覆盖原文件:
2.6.1 $ cp ../oem.tgz ~/ISO
3 修改磁盘映象文件:
3.1 解压install.tgz
3.1.1 $ mkdir ~/installtgz
3.1.2 $ tar -xzvf ~/ISO/install.tgz -C ~/installtgz
3.2 解压bz2:
3.2.1 $ cd ~/installtgz/usr/lib/vmware/installer
3.2.2 $ bunzip2 VMware-VMvisor-big-
3.3 查看dd文件对映的磁盘分区
3.3.1 $ fdisk -ul VMware-VMvisor-big-
Disk VMware-VMvisor-big-
64 heads, 32 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
VMware-VMvisor-big-
VMware-VMvisor-big-
VMware-VMvisor-big-
VMware-VMvisor-big-
VMware-VMvisor-big-
VMware-VMvisor-big-
Partition table entries are not in disk order
可以看到扇区大小为 512 bytes,所以现在能够通过offset参数(Start * 512)来挂载第5个分区(需要修改的文件在此分区中):
3.4 挂载第5个分区
3.4.1 # mkdir /mnt/vmware-p5
3.4.2 # mount -o loop,offset=$((512*8224)) VMware-VMvisor-big-
3.5 查看第5个分区的文件
3.5.1 $ ls /mnt/vmware-p5
3.5.2 binmod.tgz boot.cfg cim.tgz environ.tgz license.tgz oem.tgz vmkernel.gz
3.6 删除原始的oem.tgz文件,把新生成好的oem.tgz拷贝过来:
3.6.1 # rm /mnt/vmware-p5/oem.tgz
3.6.2 # cp ~/oem.tgz /mnt/vmware-p5
3.7 卸载第5个分区,修改后的内容自动保存到.dd文件中:
3.7.1 # umount /mnt/vmware-p5
3.8 bzip2压缩磁盘映象文件:
3.8.1 $ cd ~/installtgz/usr/lib/vmware/installer
3.8.2 $ bzip2 VMware-VMvisor-big-
3.9 重新建立install.tgz文件:
3.9.1 $ cd ~/installtgz
3.9.2 $ tar -czvf ../install.tgz sbin/ usr/
4 生成ISO文件:
4.1 cd ~/ISO
4.2 mkisofs -o ../ESXi
大功告成:)