Installing from USB flash disk

Hello,

I have already spent several days trying to figure out how to install QNX
Neutrino
from a USB flash disk to a hard drive (plans are to use the USB flash disk
to install runtime QNX on target PCs which may not be equipped with a
CD-ROM).
No luck so far, however, and I’m running out of ideas.
Any help would be greatly appreciated.


QNX: 6.3.0 SP3

Testing PC:
MSI P945 PL - F Neo3 (MS-7236 v.2.3) (ICH7)
1 EIDE DVD-ROM, 1 SATA hard drive

BIOS settings:
USB Functions = Enabled
USB 2.0 Controller = Enabled
USB Keyboard Legacy Support = Disabled
USB Mouse Legacy Support = Disabled


My buildfile:

The build file for QNX Neutrino booting on a PC

[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
LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll procnto
}

[+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.2 instead of

libc.so
procmgr_symlink …/…/proc/boot/libc.so.2 /usr/lib/ldqnx.so.2

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)

Disable access time to speed up installation

By adding “-e” linux ext2 filesystem will be mounted as well.

PATH=/proc/boot diskboot -b3 -o “finstall,-a”
}

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.

libc.so
libhiddi.so
libusbdi.so

Include all tie files for the default filesystems

libcam.so
io-blk.so
cam-disk.so
fs-qnx4.so
fs-dos.so
fs-ext2.so
cam-cdrom.so
fs-cd.so

USB for console driver

devu-ehci.so
devu-ohci.so
devu-uhci.so
devh-usb.so
devh-ps2ser.so

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.

[data=copy]
seedres
pci-bios
devb-eide
devb-amd
devb-aha2
devb-aha4
devb-aha7
devb-aha8
devb-adpu320
devb-ncr8
devb-umass
devb-ram
devb-ahci
devb-mvSata
umass-enum
umass-enum.cfg
io-usb
io-hid
diskboot
slogger
fesh
devc-con
devc-con-hid
finstall
pipe
mqueue
mount

Required for finstall to write loaders

dloader
dinit
ipl-diskpc1
ipl-diskpc1-flop
ipl-diskpc2
ipl-diskpc2-flop

This line is required so mkifs can spawn ldrel

(happens when driver update applied)

[type=link] /bin/sh=/proc/boot/fesh

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.

unlink_list={
/proc/boot/devb-*
}





Here is what’s going on during the installation process:

Press F1-F4 to select drive or select partition 1,2,3,4? Drive 2 <— F2
Press F1-F4 to select drive or select partition 1? 1
Hit Esc for .altboot …

Press the space bar to input boot options or D to disable DMA…
Trying SATA ahci. Scanning for devices…
Trying EIDE. Scanning for devices…
…found 2 devices
Detected USB. Scanning for devices…
…found 1 device
Trying SATA mvSata. Scanning for devices…


QNX Momentics 6.3.0 Service Pack 3 Installation

This installation will create a QNX partition on your hard disk and
create a bootable QNX Neutrino image. You may abort this installation
at any prompt by pressing the F2 key.

Press F1 to continue.
Press F2 to set verbose (debug) mode.

Choice (F1, F2)? F2
Verbose mode set.
Choice (F1, F2)? F2
Non-CD filesystems allowed for installation. <— nice trick indeed :neutral_face:
Choice (F1, F2)? F1
Please enter your license key: <----- entered lic. key

Please enter the disk on which you would like to install QNX Neutrino.
The disk must be bootable from your BIOS.

Disk Device Contr. Size Hd Sect Cyl Drive Name
F1 /dev/hd0 EIDE 286168M 255 63 36481 WDC WD3000JS-98P
F2 /dev/hd10 USB 1983M 255 63 252 Corsair Flash Voyager

Choose disk (F1, F2)? F1


*** WARNING ***
You have a disk that is bigger than 8.4 Gigabytes. The original BIOS
calls to access the disk are unable to read data above 8.4G. If your
BIOS is older than 1998 you may be forced to choose option 2. Newer
BIOSes support an extended disk read call that can access the entire
drive.

F1 Allow the QNX partition to be anywhere on the disk.
F2 Keep the QNX partition below 8.4G.

Choice (F1, F2)? F1


Please enter the filesystem from which you would like to install QNX
Neutrino.

Disk Device Contr. Type Drive Name
F1 cd0 EIDE cd TEAC DV-516D
F2 hd0t199 EIDE ??? WDC WD3000JS-98P
F3 hd0t200 EIDE ??? WDC WD3000JS-98P
F4 hd0t201 EIDE ??? WDC WD3000JS-98P
F5 hd0t79 EIDE qnxnto WDC WD3000JS-98P
F6 hd10t79 USB Unused Corsair Flash Voyager

Filesystem (F1, F2, F3, F4, F5, F6)? F6
The installation media could not be found on /dev/hd10t79.

Please insert the media.
Press Enter to retry or F12 to abort the installation.

…and that’s it.

The hd0t199, t200 and t201 partitions are there on purpose, never mind them.
The obviously strange thing here is that hd10t79 is misreported as
Type=Unused.
It should be “qnxnto” as well, I think.




Flash disk contents:

Script started on Mon Apr 2 09:55:14 2007

fdisk /dev/hd10 show

OS Start End Number Size Boot
name type Cylinder Cylinder Cylinders Blocks

  1. QNZ 79 0 251 251 4048317 1976 MB *



mount /dev/hd10t79 /fs/usb

ls -la /fs/usb

total 3593
drwxrwxr-x 7 root root 4096 Mar 30 13:56 .
drwxrwxr-x 7 root root 4096 Mar 30 13:56 …
-rw------- 1 root root 0 Mar 30 13:51 .altboot
-r–r–r-- 1 root root 506040 Mar 30 13:51 .bitmap
-rw------- 1 root root 1269772 Apr 02 07:54 .boot
-r–r–r-- 1 root root 8192 Mar 30 13:51 .inodes
-r–r–r-- 1 root root 0 Mar 30 13:51 .longfilenames
dr-xr-xr-x 2 root root 4096 Oct 02 2006 MEULA
drwxr-xr-x 7 root root 4096 Mar 07 08:13 NTOCoreOS632
dr-xr-xr-x 3 root root 4096 Mar 06 09:58 boot
-r–r–r-- 1 root root 1598 Oct 02 2006 checksum.txt
-r-xr-xr-x 1 root root 13117 Oct 02 2006 install
-r-xr-xr-x 1 root root 11779 Mar 13 16:20 install2
-r–r–r-- 1 root root 1162 Oct 02 2006 readme.html
-r–r–r-- 1 root root 632 Oct 02 2006 readme.txt
drwxr-xr-x 2 root root 4096 Mar 06 09:39 repository

ls -la /fs/usb/boot/fs

total 252731
dr-xr-xr-x 2 root root 4096 Mar 15 13:10 .
dr-xr-xr-x 3 root root 4096 Mar 06 09:58 …
-r–r–r-- 1 root root 1185116 Oct 02 2006 qnxbase.ifs
-rw-rw-r-- 1 root root 125829120 Mar 07 09:48 qnxbase.qfs
-r–r–r-- 1 root root 1185112 Oct 02 2006 qnxbasedma.ifs
-r–r–r-- 1 root root 1190268 Oct 02 2006 qnxbasesmp.ifs

umount /fs/usb

Script done on Mon Apr 2 09:55:52 2007





Well…thanks for reading this far.
I’ll be happy to provide any further information if needed.


Regards,

Jan Holec, jholec(at)retia.cz