Faster boot?

I was wondering how “fast” should one expect a non-gui version
of Neutrino to boot. I realize the PC bios is going to take a few
seconds, but I’m seeing about a 10 second pause after starting
devb-eide before it can access any files in the file system. This
is on a compact flash chip with an ide interface. (Is that the
real problem?)

I’ve tried passing various parameters to devb-eide without any
perceived speed increase. Have I missed something obvious?

Here is the simple build file:

###########################################################################

Neutrino on an x86 BIOS PC

This is for building a bootable neutrino image with a minimal

filesystem. (i.e. only what is in the image)

###########################################################################

[virtual=x86,bios +compress] .bootstrap = {
startup-bios
PATH=/proc/boot:/bin LD_LIBRARY_PATH=/proc/boot:/lib:/dll procnto
}

[+script] startup-script = {

Start up some consoles

devc-con -n4 &
reopen /dev/con1

display_msg Welcome to Neutrino on x86.

Start the PCI BIOS support

pci-bios &
waitfor /dev/pci 15000

Start the filesystem

devb-eide cam quiet blk automount=hd0t77:/,cache=256k,ncache=0 &
waitfor /dev/hd0t77 15000

Start the main shell

reopen /dev/con1
[+session] sh
}

Cheat and make the /temp point to the shared memory area…

[type=link] /tmp=/dev/shmem

\

Programs require the runtime linker (ldqnx.so) to be at a fixed location

[type=link] /usr/lib/ldqnx.so.1=/proc/boot/libc.so.1
[type=link] /proc/boot/libcam.so.1=/proc/boot/libcam.so

We use the “c” shared lib (which also contains the runtime linker)

libc.so
libm.so

The files above this line can be shared by mutiple processes

Executables must currently be below this line

[data=c]

sh=esh

Other executables

devc-con
pci-bios
devb-eide
cam-disk.so
fs-qnx4.so
fs-dos.so
io-blk.so
libcam.so


Thanks!
Kevin Radke

If you provide nopci and the full ioport and irq setting to devb-eide it
won’t scan and should be faster.

“Kevin Radke” <kradke@dsi-inc.net> wrote in message
news:98spp6$aku$1@inn.qnx.com

I was wondering how “fast” should one expect a non-gui version
of Neutrino to boot. I realize the PC bios is going to take a few
seconds, but I’m seeing about a 10 second pause after starting
devb-eide before it can access any files in the file system. This
is on a compact flash chip with an ide interface. (Is that the
real problem?)

I’ve tried passing various parameters to devb-eide without any
perceived speed increase. Have I missed something obvious?

Here is the simple build file:


###########################################################################

Neutrino on an x86 BIOS PC

This is for building a bootable neutrino image with a minimal

filesystem. (i.e. only what is in the image)

###########################################################################

[virtual=x86,bios +compress] .bootstrap = {
startup-bios
PATH=/proc/boot:/bin LD_LIBRARY_PATH=/proc/boot:/lib:/dll procnto
}

[+script] startup-script = {

Start up some consoles

devc-con -n4 &
reopen /dev/con1

display_msg Welcome to Neutrino on x86.

Start the PCI BIOS support

pci-bios &
waitfor /dev/pci 15000

Start the filesystem

devb-eide cam quiet blk automount=hd0t77:/,cache=256k,ncache=0 &
waitfor /dev/hd0t77 15000

Start the main shell

reopen /dev/con1
[+session] sh
}

Cheat and make the /temp point to the shared memory area…

[type=link] /tmp=/dev/shmem

\

Programs require the runtime linker (ldqnx.so) to be at a fixed location

[type=link] /usr/lib/ldqnx.so.1=/proc/boot/libc.so.1
[type=link] /proc/boot/libcam.so.1=/proc/boot/libcam.so

We use the “c” shared lib (which also contains the runtime linker)

libc.so
libm.so

The files above this line can be shared by mutiple processes

Executables must currently be below this line

[data=c]

sh=esh

Other executables

devc-con
pci-bios
devb-eide
cam-disk.so
fs-qnx4.so
fs-dos.so
io-blk.so
libcam.so


Thanks!
Kevin Radke

What if you want to use the built-in diskboot of qnxbase.build? I can’t
seem to figure out where the parameters to devb-eide get set!

“Mario Charest” <mcharest@void_zinformatic.com> wrote in message
news:98turr$90d$1@nntp.qnx.com

If you provide nopci and the full ioport and irq setting to devb-eide it
won’t scan and should be faster.

“Kevin Radke” <> kradke@dsi-inc.net> > wrote in message
news:98spp6$aku$> 1@inn.qnx.com> …

I was wondering how “fast” should one expect a non-gui version
of Neutrino to boot. I realize the PC bios is going to take a few
seconds, but I’m seeing about a 10 second pause after starting
devb-eide before it can access any files in the file system. This
is on a compact flash chip with an ide interface. (Is that the
real problem?)

I’ve tried passing various parameters to devb-eide without any
perceived speed increase. Have I missed something obvious?

Here is the simple build file:



###########################################################################

Neutrino on an x86 BIOS PC

This is for building a bootable neutrino image with a minimal

filesystem. (i.e. only what is in the image)



###########################################################################

[virtual=x86,bios +compress] .bootstrap = {
startup-bios
PATH=/proc/boot:/bin LD_LIBRARY_PATH=/proc/boot:/lib:/dll procnto
}

[+script] startup-script = {

Start up some consoles

devc-con -n4 &
reopen /dev/con1

display_msg Welcome to Neutrino on x86.

Start the PCI BIOS support

pci-bios &
waitfor /dev/pci 15000

Start the filesystem

devb-eide cam quiet blk automount=hd0t77:/,cache=256k,ncache=0 &
waitfor /dev/hd0t77 15000

Start the main shell

reopen /dev/con1
[+session] sh
}

Cheat and make the /temp point to the shared memory area…

[type=link] /tmp=/dev/shmem

\

Programs require the runtime linker (ldqnx.so) to be at a fixed

location
[type=link] /usr/lib/ldqnx.so.1=/proc/boot/libc.so.1
[type=link] /proc/boot/libcam.so.1=/proc/boot/libcam.so

We use the “c” shared lib (which also contains the runtime linker)

libc.so
libm.so

The files above this line can be shared by mutiple processes

Executables must currently be below this line

[data=c]

sh=esh

Other executables

devc-con
pci-bios
devb-eide
cam-disk.so
fs-qnx4.so
fs-dos.so
io-blk.so
libcam.so


Thanks!
Kevin Radke
\

Boot speed seems to be quite different between different boards.

Our JumpTec MOPSlcd6 (Pentium 166/64MB RAM/32 ide flash) boards boot fairly
fast, however a Digital Logic MP5SEV (Pentium 166/64MB RAM/64MB ide compact
flash)
pauses for over 30 seconds during boot waiting for /dev/hd0t77 to appear.

I.E.
waitfor /dev/hd0t77 30.0

will timeout on the Digital Logic board. This makes for a very slow bootup
time… :frowning:

They do have a different support chipsets(ALI for JumpTec, don’t remember
offhand-might
be intel-for the Digital Logic board.)

I’ve passed almost every option I could think of to devb-eide to speed it up
without
success… Using diskboot didn’t help, and I figured using it would just
use more time.

Kevin

You and I are in the same boat.

I noticed that whatever I put in the /etc/system/enum/include/block file for
params to send to devb-eide that it doesn’t actually read them. Seems that
we should be able to boot this thing a lot faster.

John

“Kevin Radke” <kradke@dsi-inc.net> wrote in message
news:9bkg2q$9mg$1@inn.qnx.com

Boot speed seems to be quite different between different boards.

Our JumpTec MOPSlcd6 (Pentium 166/64MB RAM/32 ide flash) boards boot
fairly
fast, however a Digital Logic MP5SEV (Pentium 166/64MB RAM/64MB ide
compact
flash)
pauses for over 30 seconds during boot waiting for /dev/hd0t77 to appear.

I.E.
waitfor /dev/hd0t77 30.0

will timeout on the Digital Logic board. This makes for a very slow
bootup
time… > :frowning:

They do have a different support chipsets(ALI for JumpTec, don’t remember
offhand-might
be intel-for the Digital Logic board.)

I’ve passed almost every option I could think of to devb-eide to speed it
up
without
success… Using diskboot didn’t help, and I figured using it would just
use more time.

Kevin

\

John Bowen <John.Bowen@grc.nasa.gov> wrote:

You and I are in the same boat.

I noticed that whatever I put in the /etc/system/enum/include/block file for
params to send to devb-eide that it doesn’t actually read them. Seems that
we should be able to boot this thing a lot faster.

The stuff in /etc/system/enum/include/block is only used when the
enumerators are used to start the driver. Since you need to have the eide
driver running before you can read those files it would be hard to use
those files to get configuration data. Right now devb-eide is started by
diskboot (look in /boot/build for build scripts). I have the start of
an article for QDN that details how to start up without using diskboot
and how to do it faster. :wink:

chris

cdm@qnx.com > “The faster I go, the behinder I get.”

Chris McKillop – Lewis Carroll –
Software Engineer, QSSL
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

“Chris McKillop” <cdm@qnx.com> wrote in message
news:9bnkj3$gtj$1@nntp.qnx.com

John Bowen <> John.Bowen@grc.nasa.gov> > wrote:

You and I are in the same boat.

I noticed that whatever I put in the /etc/system/enum/include/block file
for
params to send to devb-eide that it doesn’t actually read them. Seems
that
we should be able to boot this thing a lot faster.


The stuff in /etc/system/enum/include/block is only used when the
enumerators are used to start the driver. Since you need to have the eide
driver running before you can read those files it would be hard to use
those files to get configuration data. Right now devb-eide is started by
diskboot (look in /boot/build for build scripts). I have the start of
an article for QDN that details how to start up without using diskboot
and how to do it faster. > :wink:

chris

Great! Where is the article?

cdm@qnx.com > “The faster I go, the behinder I get.”
Chris McKillop – Lewis Carroll –
Software Engineer, QSSL

John Bowen <John.Bowen@grc.nasa.gov> wrote:

Great! Where is the article?

it’s coming. :wink: However, there is a thread on www.qnxstart.com in the
tech-support area that has a boot script and the command line options
to speed up devb-eide.

chris

\

cdm@qnx.com > “The faster I go, the behinder I get.”

Chris McKillop – Lewis Carroll –
Software Engineer, QSSL
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

“Chris McKillop” <cdm@qnx.com> wrote in message
news:9bpplv$qth$2@nntp.qnx.com

John Bowen <> John.Bowen@grc.nasa.gov> > wrote:

Great! Where is the article?


it’s coming. > :wink: > However, there is a thread on > www.qnxstart.com > in the
tech-support area that has a boot script and the command line options
to speed up devb-eide.

chris

OK. I went back 5 months worth in the articles and still have not seen the
answer. There are plenty of threads that discuss this problem, but no
resolution to it. I’ve read the “Building Embedded Systems” docs over and
over again, but there is no explanation as to the parameters that are used
on the diskboot line in the buildfile, or in the docs for diskboot itself.
Is it me or does it seem like this is some closely guarded secret?

cdm@qnx.com > “The faster I go, the behinder I get.”
Chris McKillop – Lewis Carroll –
Software Engineer, QSSL

John Bowen <John.Bowen@grc.nasa.gov> wrote:

OK. I went back 5 months worth in the articles and still have not seen the
answer. There are plenty of threads that discuss this problem, but no
resolution to it. I’ve read the “Building Embedded Systems” docs over and
over again, but there is no explanation as to the parameters that are used
on the diskboot line in the buildfile, or in the docs for diskboot itself.
Is it me or does it seem like this is some closely guarded secret?

:wink: You don’t use diskboot is the short answer.

The thread in question on qnxstart.com is from the past 4-5 days, so
you shouldn’t have to dig into any history or archives of articles.
Just to tickle your palette here is the buildfile I am working on
for the article. WARNING: this works on my computer but has some
issues starting the enumerators and requires that you are doing an
install from a FAT partition in a file. I am sure you will be able to
figure out what you need to do though.

Good luck!

chris


------- start fastboot.build -------------

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 = {

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 auto=partition &
waitfor /dev/hd0t12 60
waitfor /dev/hd0t77 60

Mount Filesystems

display_msg “Mounting filesystems…”
mount -t dos /dev/hd0t12 /fs/hd0-dos
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

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/con6”
#reopen /dev/con6
#[+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-dos.so
fs-qnx4.so
cam-disk.so
cam-cdrom.so
libcam.so

Binaries/Executables

[data=c]
devc-con
seedres
pci-bios
devb-eide
fs-pkg
slogger
fesh
mount
pipe


------- end fastboot.build -------------

\

cdm@qnx.com > “The faster I go, the behinder I get.”

Chris McKillop – Lewis Carroll –
Software Engineer, QSSL
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Bingo! I had to monkey with the mounting stuff because I’m booting from a
CompactFlash formatted only as type 79, but the total boot time after the
BIOS gives up control to the boot loader is about 7 seconds. I think I was
headed in this direction before, but I couldn’t figure out how to get fs-pkg
to mount correctly. Thanks!

John

“Chris McKillop” <cdm@qnx.com> wrote in message
news:9brm13$2a5$1@nntp.qnx.com

John Bowen <> John.Bowen@grc.nasa.gov> > wrote:

OK. I went back 5 months worth in the articles and still have not seen
the
answer. There are plenty of threads that discuss this problem, but no
resolution to it. I’ve read the “Building Embedded Systems” docs over
and
over again, but there is no explanation as to the parameters that are
used
on the diskboot line in the buildfile, or in the docs for diskboot
itself.
Is it me or does it seem like this is some closely guarded secret?


:wink: > You don’t use diskboot is the short answer.

The thread in question on qnxstart.com is from the past 4-5 days, so
you shouldn’t have to dig into any history or archives of articles.
Just to tickle your palette here is the buildfile I am working on
for the article. WARNING: this works on my computer but has some
issues starting the enumerators and requires that you are doing an
install from a FAT partition in a file. I am sure you will be able to
figure out what you need to do though.

Good luck!

chris


------- start fastboot.build -------------

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 = {

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 auto=partition &
waitfor /dev/hd0t12 60
waitfor /dev/hd0t77 60

Mount Filesystems

display_msg “Mounting filesystems…”
mount -t dos /dev/hd0t12 /fs/hd0-dos
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

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/con6”
#reopen /dev/con6
#[+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-dos.so
fs-qnx4.so
cam-disk.so
cam-cdrom.so
libcam.so

Binaries/Executables

[data=c]
devc-con
seedres
pci-bios
devb-eide
fs-pkg
slogger
fesh
mount
pipe


------- end fastboot.build -------------

\

cdm@qnx.com > “The faster I go, the behinder I get.”
Chris McKillop – Lewis Carroll –
Software Engineer, QSSL