Booting without diskboot

I have built several customized OS ‘with’ diskboot and I have been able to
add features the way I want it. I understand all of mkifs and most if the
individual drivers.

But, . . .

I wanted to build an OS without diskboot. I wanted to load the drivers
myself. I know what they should look like (I think). But I can’t seem to
get it to work.

I have looked into /boot/build and have read through all of the other build
source files and I can’t get any of them with diskboot to work unmodified.

When I try to build a version without diskboot the system wait for about 1
minute and then I get a bunch of “not found” messages.

What is the magic that I am missing if I don’t include diskboot?


Bill Caroselli – 1(530) 510-7292
Q-TPS Consulting
QTPS@EarthLink.net

On Fri, 9 Nov 2001 10:17:19 -0800, “Bill Caroselli” <qtps@earthlink.net> wrote:

I have built several customized OS ‘with’ diskboot and I have been able to
add features the way I want it. I understand all of mkifs and most if the
individual drivers.

But, . . .

I wanted to build an OS without diskboot. I wanted to load the drivers
myself. I know what they should look like (I think). But I can’t seem to
get it to work.

I have looked into /boot/build and have read through all of the other build
source files and I can’t get any of them with diskboot to work unmodified.

When I try to build a version without diskboot the system wait for about 1
minute and then I get a bunch of “not found” messages.

What is the magic that I am missing if I don’t include diskboot?

About a “for instance” :^)

Hi Bill,

A good explination can be found here:

http://qdn.qnx.com/articles/oct1901/Using_buildfiles.html

or in the Building Embedded systems manual.

Take care!

E.


Bill Caroselli <qtps@earthlink.net> wrote:

I have built several customized OS ‘with’ diskboot and I have been able to
add features the way I want it. I understand all of mkifs and most if the
individual drivers.

But, . . .

I wanted to build an OS without diskboot. I wanted to load the drivers
myself. I know what they should look like (I think). But I can’t seem to
get it to work.

I have looked into /boot/build and have read through all of the other build
source files and I can’t get any of them with diskboot to work unmodified.

When I try to build a version without diskboot the system wait for about 1
minute and then I get a bunch of “not found” messages.

What is the magic that I am missing if I don’t include diskboot?


Bill Caroselli – 1(530) 510-7292
Q-TPS Consulting
QTPS@EarthLink.net

“Bill Caroselli” <qtps@earthlink.net> wrote in message
news:9sh6g7$k1n$1@inn.qnx.com

I have built several customized OS ‘with’ diskboot and I have been able to
add features the way I want it. I understand all of mkifs and most if the
individual drivers.

But, . . .

I wanted to build an OS without diskboot. I wanted to load the drivers
myself. I know what they should look like (I think). But I can’t seem to
get it to work.

I have looked into /boot/build and have read through all of the other
build
source files and I can’t get any of them with diskboot to work unmodified.

When I try to build a version without diskboot the system wait for about 1
minute and then I get a bunch of “not found” messages.

What is the magic that I am missing if I don’t include diskboot?

Hello Bill

Here is my boot file for my PC, it doesn’t use diskboot. This was
takeng from Chris’s page I thing. I needed to get rid of disk boot to
control devb-eide’s cache.

\

This sets up the kernel and proc.

- x86 based kernel using the bios.boot to set things up.

- Compression is turned on.

- Use startup-bios to finish setting up the machine.

- Start procnto after startup-bios is finished.

[virtual=x86,bios +compress] boot = {
startup-bios -v
PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin
LD_LIBRARY_PATH=/proc/boot:/lib:/lib/dll:/usr/lib:/usr/photon/dll procnto -v
}

Once procnto is running it will mount the image filesystem and

run this script.

[+script] startup-script = {

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

Populate the kernel resource database

seedres

Start the system logger

slogger &
waitfor /dev/slog

Start the PCI server for drivers that need pci.

display_msg “Starting pci-bios server…”
pci-bios &
waitfor /dev/pci

Start the standard PC console driver and

make it the default output (reopen).

display_msg “Starting up console driver…”
devc-con -n6 &
waitfor /dev/con1
reopen /dev/con1

Pipe provides pipe() services.

display_msg “Starting pipe manager…”
pipe &
waitfor /dev/pipe

Start eide driver to get drive access.

display_msg “Starting eide driver…”
#devb-eide blk auto=partition dos exec=all cam quiet eide dma eide dma &
devb-eide eide dma,slave blk
commit=low,noatime,auto=partition,cache=94M,alloc=94M,delwri=60 &
display_msg “Waiting HD detection”
waitfor /dev/hd0t79 30

Mount Filesystems

display_msg “Mounting filesystems…”
#mount -t dos /dev/hd0t12 /fs/hd0-dosdd
#mount -t qnx4 /dev/hd0t77 /fs/hd0-qnx4
#mount -t qnx4 “/fs/hd0-dos/Program Files/qnx/boot/fs/root.qfs” /
#mount -r -t qnx4 “/fs/hd0-dos/Program Files/qnx/boot/fs/qnxbase.qfs”
/pkgs/base
mount -t qnx4 /dev/hd0t79 /
mount -t qnx4 /boot/fs/qnxbase.qfs /pkgs/base
mount -t qnx4 /dev/hd0t78 /home

Start the Package Filesystem

display_msg “Starting Package Filesystem…”
fs-pkg -a/pkgs/base/safe-config/etc/system/package/packages

Start the sysinit script

display_msg “Running /etc/system/sysinit…”
[+session] /bin/ksh -c /etc/system/sysinit
#display_msg “Starting high priority shell on /dev/con2”
#reopen /dev/con2
#[+session pri=30o] fesh
}

These are the standard, required links

[type=link] /dev/console=/dev/con1
[type=link] /usr/lib/ldqnx.so.1=/proc/boot/libc.so

Shared Libraries

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

Binaries/Executables

[data=c]
devc-con
seedres
pci-bios
devb-eide
fs-pkg
slogger
fesh
mount
pipe
unlink_list = {
/proc/boot/devb-*
}

  • Mario

Thanks Mario

Seeing that helps and explains a few things. BUt I’m still having a
problem. When it tries to enumerate devices it is failing to load io-audio
and io-net. Also, I can not run photon after it boots. All because of
missing shared libraries.

I know that all of these things are loaded from diskboot in the boot script.
But without diskboot they are loaded from /etc/system/sysinit which calls
/etc/rc.d/rc.devices. At the beginning of /etc/system/sysinit I added a
line to print LD_LIBRARY_PATH and it is empty. When/where/how should
LD_LIBRARY_PATH be populated when calling /etc/system/sysinit?

Here is a dump of the errors on my screen (hand copied so there may be
typos).
mount: Can’t mount / (type io-audio)
mount: Possible reason: Can’t access shared library
Unable to load dll: npm-tcpip: Library not found
Unable to load dll: npm-pppmgr: Library not found
Unable to load dll: npm-qnet: Library not found

\

Bill Caroselli – 1(530) 510-7292
Q-TPS Consulting
QTPS@EarthLink.net

“Mario Charest” <mcharest@clipzinformatic.com> wrote in message
news:9sr5pu$ahp$1@inn.qnx.com

Hello Bill

Here is my boot file for my PC, it doesn’t use diskboot. This was
takeng from Chris’s page I thing. I needed to get rid of disk boot to
control devb-eide’s cache.

\

This sets up the kernel and proc.

- x86 based kernel using the bios.boot to set things up.

- Compression is turned on.

- Use startup-bios to finish setting up the machine.

- Start procnto after startup-bios is finished.

[virtual=x86,bios +compress] boot = {
startup-bios -v
PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin
LD_LIBRARY_PATH=/proc/boot:/lib:/lib/dll:/usr/lib:/usr/photon/dll
procnto -v
}

Once procnto is running it will mount the image filesystem and

run this script.

[+script] startup-script = {

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

Populate the kernel resource database

seedres

Start the system logger

slogger &
waitfor /dev/slog

Start the PCI server for drivers that need pci.

display_msg “Starting pci-bios server…”
pci-bios &
waitfor /dev/pci

Start the standard PC console driver and

make it the default output (reopen).

display_msg “Starting up console driver…”
devc-con -n6 &
waitfor /dev/con1
reopen /dev/con1

Pipe provides pipe() services.

display_msg “Starting pipe manager…”
pipe &
waitfor /dev/pipe

Start eide driver to get drive access.

display_msg “Starting eide driver…”
#devb-eide blk auto=partition dos exec=all cam quiet eide dma eide dma &
devb-eide eide dma,slave blk
commit=low,noatime,auto=partition,cache=94M,alloc=94M,delwri=60 &
display_msg “Waiting HD detection”
waitfor /dev/hd0t79 30

Mount Filesystems

display_msg “Mounting filesystems…”
#mount -t dos /dev/hd0t12 /fs/hd0-dosdd
#mount -t qnx4 /dev/hd0t77 /fs/hd0-qnx4
#mount -t qnx4 “/fs/hd0-dos/Program Files/qnx/boot/fs/root.qfs” /
#mount -r -t qnx4 “/fs/hd0-dos/Program Files/qnx/boot/fs/qnxbase.qfs”
/pkgs/base
mount -t qnx4 /dev/hd0t79 /
mount -t qnx4 /boot/fs/qnxbase.qfs /pkgs/base
mount -t qnx4 /dev/hd0t78 /home

Start the Package Filesystem

display_msg “Starting Package Filesystem…”
fs-pkg -a/pkgs/base/safe-config/etc/system/package/packages

Start the sysinit script

display_msg “Running /etc/system/sysinit…”
[+session] /bin/ksh -c /etc/system/sysinit
#display_msg “Starting high priority shell on /dev/con2”
#reopen /dev/con2
#[+session pri=30o] fesh
}

These are the standard, required links

[type=link] /dev/console=/dev/con1
[type=link] /usr/lib/ldqnx.so.1=/proc/boot/libc.so

Shared Libraries

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

Binaries/Executables

[data=c]
devc-con
seedres
pci-bios
devb-eide
fs-pkg
slogger
fesh
mount
pipe
unlink_list = {
/proc/boot/devb-*
}

Hi Bill,

Bill Caroselli <qtps@earthlink.net> wrote in article <9sumrl$438$2@inn.qnx.com>…

Thanks Mario

Seeing that helps and explains a few things. BUt I’m still having a
problem. When it tries to enumerate devices it is failing to load io-audio
and io-net. Also, I can not run photon after it boots. All because of
missing shared libraries.

I know that all of these things are loaded from diskboot in the boot script.
But without diskboot they are loaded from /etc/system/sysinit which calls
/etc/rc.d/rc.devices. At the beginning of /etc/system/sysinit I added a
line to print LD_LIBRARY_PATH and it is empty. When/where/how should
LD_LIBRARY_PATH be populated when calling /etc/system/sysinit?

Here is a dump of the errors on my screen (hand copied so there may be
typos).
mount: Can’t mount / (type io-audio)
mount: Possible reason: Can’t access shared library
Unable to load dll: npm-tcpip: Library not found
Unable to load dll: npm-pppmgr: Library not found
Unable to load dll: npm-qnet: Library not found

\

Bill Caroselli – 1(530) 510-7292
Q-TPS Consulting
QTPS@EarthLink.net

“Mario Charest” <> mcharest@clipzinformatic.com> > wrote in message
news:9sr5pu$ahp$> 1@inn.qnx.com> …
Hello Bill

Here is my boot file for my PC, it doesn’t use diskboot. This was
takeng from Chris’s page I thing. I needed to get rid of disk boot to
control devb-eide’s cache.

\

This sets up the kernel and proc.

- x86 based kernel using the bios.boot to set things up.

- Compression is turned on.

- Use startup-bios to finish setting up the machine.

- Start procnto after startup-bios is finished.

[virtual=x86,bios +compress] boot = {
startup-bios -v

================

PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin
LD_LIBRARY_PATH=/proc/boot:/lib:/lib/dll:/usr/lib:/usr/photon/dll
procnto -v

There is a single line above. It should populate PATH and LD_LIBRARY_PATH for every spawned
proccess.

Bests,
Eduard.

I have this in my boot script but not in my startup script. DO I need in
the startup script too?

Also, I see you say that it must be a single line. That may be my problem.


Bill Caroselli – 1(530) 510-7292
Q-TPS Consulting
QTPS@EarthLink.net


“ed1k” <ed1k@yahoo.com> wrote in message
news:01c16de6$0839dcc0$106fa8c0@ED1K…

================
PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin
LD_LIBRARY_PATH=/proc/boot:/lib:/lib/dll:/usr/lib:/usr/photon/dll
procnto -v

There is a single line above. It should populate PATH and
LD_LIBRARY_PATH for every spawned
proccess.

Bests,
Eduard.

Apparently I don’t need this in the start up script. In the boot script
these were NOT on a single line. Putting them on a single line solved my
problem,

QUESTION 1:
When I boot the default qnxbasedma image it loads enum-devices, enum-pccard
and spooler. Or at least they are still resident when I do a ‘pidin ar’.
But they are not found in this custom boot image. Who/what/when do they get
loaded in qnxbasedma?

QUESTIONS2:
Why doesn’t pidin support the ‘-P progname’ like sin did? You MUST add
that.


Bill Caroselli – 1(530) 510-7292
Q-TPS Consulting
QTPS@EarthLink.net

“Bill Caroselli” <qtps@earthlink.net> wrote in message
news:9t0r5g$l29$1@inn.qnx.com

I have this in my boot script but not in my startup script. DO I need in
the startup script too?

Also, I see you say that it must be a single line. That may be my
problem.


“ed1k” <> ed1k@yahoo.com> > wrote in message
news:01c16de6$0839dcc0$106fa8c0@ED1K…

PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin
LD_LIBRARY_PATH=/proc/boot:/lib:/lib/dll:/usr/lib:/usr/photon/dll
procnto -v

There is a single line above. It should populate PATH and
LD_LIBRARY_PATH for every spawned
proccess.

Bill Caroselli <qtps@earthlink.net> wrote in article <9t140j$19e$1@inn.qnx.com>…

Apparently I don’t need this in the start up script. In the boot script
these were NOT on a single line. Putting them on a single line solved my
problem,

Bill,

There are couple of finest articles at QDN web site, please visit
http://qdn.qnx.com/articles/oct1901/Using_buildfiles.html
http://qdn.qnx.com/articles/oct1901/Using_buildfiles2.html

QUESTION 1:
When I boot the default qnxbasedma image it loads enum-devices, enum-pccard
and spooler. Or at least they are still resident when I do a ‘pidin ar’.
But they are not found in this custom boot image. Who/what/when do they get
loaded in qnxbasedma?

I guess enum-* and spooler are loaded by sysinit (by its child scripts) in either ways (custom or
standard image). I’m not sure enum-* are still resident in my system when I boot the default
qnxbasedma image. I’ll check it out. But it seems very strange for me because I don’t think QNX RTP
supports “hot” device reconfiguration by enum-devices daemon at least.

QUESTIONS2:
Why doesn’t pidin support the ‘-P progname’ like sin did? You MUST add
that.

I hope anybody from QSSL will answer this question

Bests
Eduard.

Mario Charest <mcharest@clipzinformatic.com> wrote in article <9sr5pu$ahp$1@inn.qnx.com>…
[cut]

Pipe provides pipe() services.

display_msg “Starting pipe manager…”
pipe &
waitfor /dev/pipe

Pipe manager is started by sysinit under normal circumstances (standard image). What is reason to
start pipe here?

Start eide driver to get drive access.

[cut]

Diskboot seems to enumerate unmounted partitions under /dev and to mount them to /fs. I have
removable eide hdd in system and it is a great feature for me :wink:. Standard image allways finds
knowen partitions on removable hdd and mounts them (and CD-ROM also). Has anybody experience with
writting such script?

These are the standard, required links

[type=link] /dev/console=/dev/con1
[type=link] /usr/lib/ldqnx.so.1=/proc/boot/libc.so

Is it required link in QNXRTP6.1A? I mean ldqnx.so.1

Thank you in advance,
Eduard.