I hereby want to confirm the motherboard MSI P35 Platinum to be working with ESX 4.0.
It has been a bit of a strugle though

For the impacient, I've attached a some files which you can use to patch initrd.img pre_install, patch initrd.img post install and patch esxconsole after succesful first boot.
--------------------------------------
Specs:Motherboard: MSI P35 Platinum
http://eu.msi.com/index.php?func=prodmbspec&maincat_no=1&cat2_no=&cat3_no=&prod_no=1212Processor: Intel Core Quad Q6600
Memory: 4GB Kingston HyperX
Storage: Onboard SATA controller. AHCI mode.
Network: Onboard RealTek 8168 Gigabit.
--------------------------------------
UPDATE:I noticed networking problems with driver (r8168.o). Even with newer version. The same problem has been described on the forum (connection lost).
Therefore I am now using the driver in this post:
http://www.vm-help.com/forum/viewtopic.php?f=12&t=1670&start=30&hilit=r8169
*Note: this driver is not used in the attachments yet!
--------------------------------------
The whole story
--------------------------------------
*- Note: following paths are contained within initrd.img!
*- Note: I know that this can be a whole lot quicker if you know how to make a driver package.
Problem 1:ESX 4.0 does not want to install on this motherboard. During execution of /etc/vmware/init/init.d/32.networking-drivers it will fail, saying there are no compatible NIC's found.
Solution 1:I've found this post (THANK YOU!! geppi);
viewtopic.php?f=12&t=1272&start=0It contains the r8168.o driver.
Problem 1.1:In the previously mentioned package there is also a file /etc/vmware/simple.map. Which is great, but during installation it will get overwritten when loading system drivers.
You will notice a line "Rebuilding Map File" (executed by. /usr/lib/vmware/weasel/applychoices.py --> /usr/lib/vmware/weasel/customdrivers.py)
Solution 1.1:- I've checked out the driver xml files in /usr/share/hwdata/pciids/ and decided to role my own. This file is attached to this post.
- Now we need to add this file to initrd.img. The following was done on a CentOS 5 machine (vmware workstation):
--> Copy initrd.img to /tmp
--> Extract attachment pre_install.tgz: to /tmp/hack
Code:
#extract initrd.img
cd /tmp
mkdir initrd
cd initrd
gzip -dc ../initrd.img | cpio -id
Code:
#copy the hack
cp /tmp/hack /tmp/initrd -r
Code:
#create a new initrd.img
find ./ | cpio -H newc -o > /tmp/new_initrd.cpio
cd /tmp
gzip new_initrd.cpio
mv new_initrd.cpio.gz new_initrd.img
- So now we have a new initrd.img which contains the driver and the necessary information for ESX to generate /etc/vmware/simple.map. Put on your .ISO or whatever boot mechanism you use.
obviously renaming it to initrd.img, otherwise isolinux will call the wrong one
Problem 2:After I thought I cracked it (around 02:15 last night), it turned out that the IDE DVDRW couldn't be detected during installation.
Solution 2:- Get an empty USB drive (at least 900MB!).
- Create a bootable installation
fdisk /dev/sda
(delete all current partitions)
(create new partition)
n
1
<enter>
<enter>
t
(W95 FAT16 (LBA) - id=e)
(Dont forget to make it bootble, like me)
a
1
(Write changes)
w
q
- Format it.
Code:
mkfs.vfat /dev/sda1
- Add a syslinux boot record
- Now copy the Vmware ESX4.0 media to the USB disk.
Code:
mkdir /mnt/usb
mount /dev/sda1 /mnt/usb
cp /dev/cdrom/* /mnt/usb/ -r
- Create the following /mnt/usb/syslinux.conf
Quote:
default menu.c32
prompt 0
menu title ESX build 208167
timeout 300
LABEL esx
menu default
menu label Install ESX in graphical mode
kernel isolinux/vmlinuz
append initrd=isolinux/initrd.img vmkopts=debugLogToSerial:1 mem=512M askmedia
LABEL esx-text
menu label Install ESX in text mode
kernel isolinux/vmlinuz
append initrd=isolinux/initrd.img vmkopts=debugLogToSerial:1 mem=512M text askmedia
LABEL usb-ks
menu label ESX Scripted Install using USB ks.cfg
kernel isolinux/vmlinuz
append initrd=isolinux/initrd.img vmkopts=debugLogToSerial:1 mem=512M ks=usb quiet
LABEL first-disk-safe
menu label ESX Scripted Install to first disk
kernel isolinux/vmlinuz
append initrd=isolinux/initrd.img vmkopts=debugLogToSerial:1 mem=512M ks=file:///usr/lib/vmware/weasel/examples/ks-first-safe.cfg quiet
LABEL first-disk
menu label ESX Scripted Install to first disk (overwrite VMFS)
kernel isolinux/vmlinuz
append initrd=isolinux/initrd.img vmkopts=debugLogToSerial:1 mem=512M ks=file:///usr/lib/vmware/weasel/examples/ks-first.cfg quiet
LABEL skip-install
menu label ^Boot from first hard disk
localboot 0x80
- Copy that menu.c32 file.
Code:
cp /usr/lib/syslinux/menu.c32 /mnt/usb
- Don't forget to copy the new_initrd.img!
Code:
cp /tmp/new_initrd.img /mnt/usb/isolinux/initrd.img
Problem 3:Ahhh finally, once I figured out the parameter askmedia could be used as kernel parameter (which took me a couple of fails), I could succesfully install ESX 4.0.
But then ... booting into ESX, turned out to get the same error as during installation (problem 1). I couldn't mount my usb on the recovery console either ?!
Solution 3:This solution is very similar to solution 1. Except that we need to use the simple.map, because this file won't be generated during boot.
So again, i modified the initrd.img, but this time the ESX installed version.
Code:
mkdir /mnt/esx_bootdisk
Note: The drive could be different for you
Code:
mount /dev/sda1 /mnt/esx_bootdisk
#Copy initrd.img to /tmp
cp /mnt/esx_bootdisk/initrd.img /tmp
--> Extract attachment post_install_pre_boot.tgz: to /tmp/hack
Code:
#extract initrd.img
cd /tmp
mkdir initrd
cd initrd
gzip -dc ../initrd.img | cpio -id
Code:
#copy the hack
cp /tmp/hack /tmp/initrd -r
--> Add the information in /etc/vmware/simple.map.ADD to /etc/vmware/simple.map
Code:
#create a new initrd.img
find ./ | cpio -H newc -o > /tmp/new_initrd.cpio
cd /tmp
gzip new_initrd.cpio
mv new_initrd.cpio.gz new_initrd.img
Code:
#copy it over the old one.
cp /mnt/esx_bootdisk/initrd.img /mnt/esx_bootdisk/initrd.img.default
cp /tmp/new_initrd.img /mnt/esx_bootdisk/initrd.img
Problem 4:So I figured I'd cracked it. I posted this message and that was that. Then I booted the server this morning. Damn, same error as Problem 3. I can't keep patching initrd.img every boot!
Solution 4:- So I did a bit of digging. Everytime Vmware reboots it will execute 'esxcfg-boot -b'. This will rebuild initrd.img. Log files for the process can be found (esxconsole!) in /var/log/vmware/esxcfg-boot.log
I read the log file and understood what was going on. It wants a manifest + an xml (to build simple.map) and the driver (r8168.o).
- In order for this to work, solution 3 must result in a succesful boot.
- Log in to the console.
--> Extract attachment post_boot.tgz: to /tmp/hack
Code:
cp /tmp/hack / -r
esxcfg-boot -b
- Make sure to check /var/log/vmware/esxcfg-boot.log. The driver file must have been copied!
--------------------------------------
The end
--------------------------------------
Hope this helps other people here!