Jump to ID:
QNX Community VMware® Project

Project Home


Source Code



Project Info
Forum Topic - QNX install on vmware ESX3i: (5 Items)
QNX install on vmware ESX3i  
Now that VMware is giving away ESXi for free, I decided to try installing QNX on it.

First of all, VMware ESX(i) does not support IDE hard drives, only SCSI.  But SCSI support is available for a QNX-
compatible Buslogic host adapter, so it should be ok.

There are two problems that I see that prevent this from working:

First, On both the 6.3.0SP3 and 6.3.2 installation CDs, in /etc/system/enum/devices/block, there are two lines for the 
Mylex/Buslogic controllers, one of which is the correct one, but then the "requires" line loads the AMD driver instead 
of Buslogic!!

And second, devb-btmm does not auto-detect the virtual Buslogic controller, even though it's a supported model.  If you 
manually specify the I/O port and IRQ, then it loads properly.

Note also that looking at our development system, once QNX is installed, /etc/system/enum/devices/block is correct, or 
at least tries to load the BusLogic driver, unlike the one on the CD.

Here is the excerpt from /etc/system/enum/devices/block on the installation CD:

device(pci, $(PCI_VEND_MYLEX), 1040)    # Buslogic
device(pci, $(PCI_VEND_MYLEX), 8130)    # Buslogic
        requires(devb-amd $(DEVB_OPTIONS), "amd pci=$(index)")

Note how it detects the Buslogic controller and then loads devb-amd!

Here is the output of the "pci" command showing the virtual controller:

Class          = Mass Storage (SCSI)
Vendor ID      = 104bh, BusLogic 
Device ID      = 1040h,  BT-946C (BA80C30) [MultiMaster 10]
PCI index      = 0h
PCI IO Address  = 1060h enabled
PCI Mem Address = f4800000h enabled
PCI Expansion ROM = 0h disabled
PCI Int Pin    = INT A
Interrupt line = 9
CPU Interrupt  = 9h

Here are the outputs of devb-btmm with no options, showing how it does not auto-detect the controller (the pci=0 option 
doesn't help), followed by forcing the ioport and irq where it loads successfully:

# devb-btmm
# xpt_configure:  No btmm interfaces found

# devb-btmm btmm ioport=0x1060,irq=9
# Path=0 - 
 target=0 lun=0     Direct-Access(0) - VMware   Virtual disk     Rev: 1.0

Is there anything that can be done to "patch" the installation CD?

Re: QNX install on vmware ESX3i  
In addition to the previous post...

devb-btmm is not included in the normal boot image, and even if it is, diskboot does not attempt to run it.
Re: QNX install on vmware ESX3i  
Hi Lew,
i am trying the same thing and am stuck on the part of finding the SCSI drive to install. Can you help in getting me 
going ? since you have gone far ahead !
Re: QNX install on vmware ESX3i  
> Hi Lew,
> i am trying the same thing and am stuck on the part of finding the SCSI drive 
> to install. Can you help in getting me going ? since you have gone far ahead !

Re: QNX install on vmware ESX3i  
Sorry for the delay, I don't follow this forum too often.

I eventually found, as has already been referenced, that if you load devb-btmm manually before diskboot, then everything
 works itself out.

I just made a copy of the normal SMP build file and added the BusLogic driver.  Trouble is, you have to do this in a non
-VM and then convert the disk to a VM.

For completeness, below is a copy of what I called "/boot/build/vmwareesx.build".  Once you have that, just run:

   mkifs /boot/build/vmwareesx.build /.boot/vmwareesx.ifs

and you should be good to go.  Hopefully in the future, they'll make the normal boot CD do this correctly.


# The build file for QNX Neutrino booting on a PC
[linker="ntox86-ld -T$QNX_TARGET/x86/lib/nto.link %(h!=0, -Ttext 0x%t%)%(d!=0, -Tdata 0x%d%) -o%o %i %[M -L%^i -uinit_%n
[virtual=x86,bios +compress] boot = {
        # Reserve 64k of video memory to handle multiple video cards 
        startup-bios -s64k

        # PATH is the *safe* path for executables (confstr(_CS_PATH...))
        # LD_LIBRARY_PATH is the *safe* path for libraries (confstr(_CS_LIBPATH))
        #    i.e. This is the path searched for libs in setuid/setgid executables.
        PATH=/proc/boot:/bin:/usr/bin:/opt/bin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll:/opt/lib procnto-smp-

[+script] startup-script = {
        # To save memory make everyone use the libc in the boot image!
        # For speed (less symbolic lookups) we point to libc.so.3 instead of libc.so
        procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2

        # diskboot doesn't detect the BusLogic SCSI host adapter
        # used by VMware ESXi, so we have to load it manually
        devb-btmm cam quiet blk auto=partition btmm ioport=0x1060,irq=11
        waitfor /dev/hd0

        # Default user programs to priorty 10, other scheduler (pri=10o)
        # Tell "diskboot" this is a hard disk boot (-b1)
        # Tell "diskboot" to use DMA on IDE drives (-D1)
        # Start 4 text consoles buy passing "-n4" to "devc-con" (-o)
        # By adding "-e" linux ext2 filesystem will be mounted as well.
        [pri=10o] PATH=/proc/boot diskboot -b1 -D1 -odevc-con,-n4 -odevc-con-hid,-n4

# Include the current "libc.so". It will be created as a real file using
# its internal "SONAME", with "libc.so" being a symlink to it. The symlink
# will point to the last "libc.so.*" so if an earlier libc is needed
# (e.g. libc.so.1) add it before the this line.

# Include all the files for the default filesystems

# USB for console driver

# These programs only need to be run once from the boot image.
# "data=uip" will waste less memory as the ram from the boot
# image will be used directly without making a copy of the data
# (i.e. as the default "data=cpy" does). When they have been
# run once, they will be unlinked from /proc/boot.
[search=${MKIFS_PATH}:${QNX_TARGET}/etc] umass-enum.cfg

# These files will be unlinked after the system has started
# to release the memory back to the system. They are only
# needed during boot. If needed later on, they will be loaded
# from the boot device.