Making a bootable QNX CD

OK, I’ve got QNX 6.2.1 PE, and I’ve built my .ifs file with
“mkifs”. Now how do I build a bootable CD-ROM for “x86-bios”
systems?

The documentation tells me how to build a hard drive, a network
bootable image, and a flash file system, but not an CD-ROM.
I know I have to create a .iso image, but how do I get from
…ifs to .iso? Thanks.

John Nagle

Incidentally, before someone just replies “use mkisofs”,
the question is how to make a bootable CD-ROM. It is not
obvious which options to “mkisofs” are required. Here are the
options to “mkisofs”:


mkisofs [ -abstract FILE ] [ -allow-lowercase ] [ -allow-
multidot ] [ -biblio FILE ] [ -cache-inodes ] [ -no-cache-
inodes ] [ -b eltorito_boot_image ] [ -eltorito-alt-boot ] [
-B sparc_boot_image_list ] [ -G generic_boot_image ] [ -gui
] [ -C #,# ] [ -hard-disk-boot ] [ -no-emul-boot ] [ -no-
boot ] [ -boot-load-seg ] [ -boot-load-size ] [ -boot-info-
table ] [ -c boot_catalog ] [ -check-oldnames ] [ -check-
session FILE ] [ -copyright FILE ] [ -A application_id ] [
-f ] [ -d ] [ -D ] [ -dir-mode mode ] [ -file-mode mode ] [
-gid gid ] [ -hide glob ] [ -hide-list file ] [ -hidden glob
] [ -hidden-list file ] [ -hide-joliet glob ] [ -hide-
joliet-list file ] [ -hide-joliet-trans-tbl ] [ -hide-rr-
moved ] [ -iso-level level ] [ -input-charset charset ] [
-output-charset charset ] [ -J ] [ -jcharset charset ] [ -l
] [ -L ] [ -log-file log_file ] [ -max-iso9660-filenames ] [
-M path | device ] [ -new-dir-mode mode ] [ -nobak ] [ -no-
bak ] [ -no-split-symlink-components ] [ -no-split-symlink-
fields ] [ -pad ] [ -no-pad ] [ -path-list file ] [ -p
preparer ] [ -print-size ] [ -P publisher ] [ -quiet ] [ -r
] [ -R ] [ -relaxed-filenames ] [ -sort sort file ] [ -sysid
ID ] [ -T | -table-name TABLE_NAME ] [ -ucs-level level ] [
-uid uid ] [ -use-fileversion ] [ -U ] [ -no-iso-translate ]
[ -v ] [ -V volid ] [ -volset ID ] [ -volset-size # ] [
-volset-seqno # ] [ -x path ] [ -exclude-list file ] [ -z ]
[ -m glob ] [ -hfs | -apple ] [ -map mapping_file ] [ -magic
magic_file ] [ -probe ] [ -no-desktop ] [ -mac-name ] [
-boot-hfs-file driver_file [ -part ] [ -auto AutoStart_file
] [ -cluster-size size ] [ -hide-hfs glob ] [ -hide-hfs-list
file ] [ -hfs-volid hfs_volid ] [ -icon-position ] [ -root-
info FILE [ -prep-boot FILE ] [ -hfs-creator CREATOR ] [
-hfs-type TYPE ] [ -input-hfs-charset charset ] [ -output-
hfs-charset charset ] [ -hfs-unlock ] [ -hfs-bless
folder_name ] [ --cap ] [ --netatalk ] [ --double ] [ –
ethershare ] [ --ushare ] [ --exchange ] [ --sgi ] [ --xinet
] [ --macbin ] [ --single ] [ --dave ] [ --sfm ] -o filename
pathspec [pathspec]

Please advise. Thanks.

John Nagle

John Nagle wrote:

OK, I’ve got QNX 6.2.1 PE, and I’ve built my .ifs file with
“mkifs”. Now how do I build a bootable CD-ROM for “x86-bios”
systems?

The documentation tells me how to build a hard drive, a network
bootable image, and a flash file system, but not an CD-ROM.
I know I have to create a .iso image, but how do I get from
.ifs to .iso? Thanks.

John Nagle

John Nagle <nagle@downside.com> wrote:

Incidentally, before someone just replies “use mkisofs”,
the question is how to make a bootable CD-ROM. It is not
obvious which options to “mkisofs” are required. Here are the

-b

The file you provide here is a bootable floppy image (which you
can create by making a bootable floppy with dinit, copying your
…ifs over onto .boot, and then bring back the /dev/fd0 image into
your ISO hierarchy). Do you have README.eltorito from mkisofs?

John Garvey wrote:

John Nagle <> nagle@downside.com> > wrote:

Incidentally, before someone just replies “use mkisofs”,
the question is how to make a bootable CD-ROM. It is not
obvious which options to “mkisofs” are required. Here are the


-b

The file you provide here is a bootable floppy image (which you
can create by making a bootable floppy with dinit, copying your
.ifs over onto .boot, and then bring back the /dev/fd0 image into
your ISO hierarchy). Do you have README.eltorito from mkisofs?

Yes. That is so tacky. I’ll try this tomorrow?

– What if you don’t have a floppy drive?
– What if your boot image is too big for a floppy disk?

John Nagle

John Nagle <nagle@downside.com> wrote:

– What if you don’t have a floppy drive?

touch floppy
dinit -S1440k -fmy.ifs floppy

may work, although there could be issues of geometry/loader (as these
will default to being that of the host hard drive, not the floppy).
The loader issue can be fixed with “dloader floppy pc2-flop”, but none
of the tools allow overriding of the CHS geometry itself in the loader.
But from another post you do have a floppy drive somewhere, so you
could use “dd” to grab block 0 from a real/bootable disk to a file and
then use dd to patch it back onto subsequent floppy images (made as
above, so you later never need an actual floppy drive).

I did get a bootable floppy to work. Now to figure out
how to make a CD-ROM. I’ll have to try some of the
workarounds below.

It’s something of a pain. None of the machines at the
shop have floppies, but they have QNX PE. My machine at home
has a floppy, but only QNX NC. All the QNX machines have
CD/RW drives, but QNX doesn’t support writing on them.

Incidentally, the latest version of “cdrecord” will build
and run on QNX, but it reports “No local SCSI transport for
this architecture” on /dev/cd0 of my non-SCSI QNX machine.
What’s needed to make that work? Thanks.

John Nagle

John Garvey wrote:

John Nagle <> nagle@downside.com> > wrote:

– What if you don’t have a floppy drive?


touch floppy
dinit -S1440k -fmy.ifs floppy

may work, although there could be issues of geometry/loader (as these
will default to being that of the host hard drive, not the floppy).
The loader issue can be fixed with “dloader floppy pc2-flop”, but none
of the tools allow overriding of the CHS geometry itself in the loader.
But from another post you do have a floppy drive somewhere, so you
could use “dd” to grab block 0 from a real/bootable disk to a file and
then use dd to patch it back onto subsequent floppy images (made as
above, so you later never need an actual floppy drive).

It’s something of a pain. None of the machines at the
shop have floppies, but they have QNX PE. My machine at home
has a floppy, but only QNX NC. All the QNX machines have
CD/RW drives, but QNX doesn’t support writing on them.

Why not? It works really well. You can get a pre-built cdrecord
with docs and updated shlibs (for non-NC) from our website.

http://developers.qnx.com/Fixes/Software/index2.htm

chris


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

Nice.

That page says “As soon as NC 6.2.1 is made available,
we will posted updated boot images that contain the new libraries.”
Did that happen? And will those be standard in 6.2.1A?

I hate to build a nonstandard boot image for the development systems. It
causes problems when reporting bugs, either to QSSL or
to third-party vendors. Plus, it’s a time sink for QNX customers.
It should be in the supported system. Please try to get this into
6.2.1A/B/whatever. A new release is needed soon anyway to
clear up all the packaging and installation bugs in 6.2.1.

[QNX is supposed to “just work”. That’s the whole point of QNX.
Please don’t forget this at QNX HQ. If you want “almost works but
needs lots of patches and workarounds”, that can be obtained
elsewhere for less.]

John Nagle
http://www.overbot.com

Chris McKillop wrote:

It’s something of a pain. None of the machines at the
shop have floppies, but they have QNX PE. My machine at home
has a floppy, but only QNX NC. All the QNX machines have
CD/RW drives, but QNX doesn’t support writing on them.



Why not? It works really well. You can get a pre-built cdrecord
with docs and updated shlibs (for non-NC) from our website.

http://developers.qnx.com/Fixes/Software/index2.htm

chris

That page says “As soon as NC 6.2.1 is made available,
we will posted updated boot images that contain the new libraries.”
Did that happen? And will those be standard in 6.2.1A?

Actually, from what NC people have communicated to me, the 6.2.1 release
of NC already included these changes. I have not tried it myself.

I hate to build a nonstandard boot image for the development systems. It
causes problems when reporting bugs, either to QSSL or
to third-party vendors. Plus, it’s a time sink for QNX customers.
It should be in the supported system. Please try to get this into
6.2.1A/B/whatever. A new release is needed soon anyway to
clear up all the packaging and installation bugs in 6.2.1.

Non-standard boot image? What is that? When you install update packages
the installer actually runs mkifs and rebuilds your .boot from the
files you have on your system. So it isn’t likly with your PE install
that you are using a “qss” generated boot image.

chris


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

Chris McKillop wrote:

That page says “As soon as NC 6.2.1 is made available,
we will posted updated boot images that contain the new libraries.”
Did that happen? And will those be standard in 6.2.1A?



Actually, from what NC people have communicated to me, the 6.2.1 release
of NC already included these changes. I have not tried it myself.

Great! Does that mean that “cdrecord” should work on a stock
6.2.1 NC system? Can anybody get it to work? I get “No SCSI transport
for this device” when I try, but I may be doing it wrong. What’s the
supported drive list? A “pci -v” output is attached. Is that a
valid configuration for CD recording under QNX? Thanks.

I’d really like to hear that someone has successfully made a
CD-ROM under 6.2.1NC or PE. Please try and report how you did it.
Thanks.

John Nagle

PCI version = 2.10

Class = Bridge (Host/PCI)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = 3116h, CPU-to-PCI Bridge
PCI index = 0h
Class Codes = 060000h
Revision ID = 0h
Bus number = 0
Device number = 0
Function num = 0
Status Reg = 2230h
Command Reg = 6h
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 8h
Cache Line Size= 0h
Subsystem Vendor ID = 1297h
Subsystem ID = f641h
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = NC
Interrupt line = 0
Capabilities Pointer = a0h
Capability ID = 2h
Capabilities = 20h - 1f000203h
Capability ID = 1h
Capabilities = 2h - 0h

Class = Bridge (PCI/PCI)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = b091h, VT8633 PCI-to-PCI Bridge (AGP)
PCI index = 0h
Class Codes = 060400h
Revision ID = 0h
Bus number = 0
Device number = 1
Function num = 0
Status Reg = a230h
Command Reg = 107h
Header type = 1h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 0h
Cache Line Size= 0h
Primary Bus Number = 0h
Secondary Bus Number = 1h
Subordinate Bus Number = 1h
Secondary Latency Timer = 0h
I/O Base = f0h
I/O Limit = 0h
Secondary Status = 0h
Memory Base = ec00h
Memory Limit = ec00h
Prefetchable Memory Base = e000h
Prefetchable Memory Limit= e7f0h
Prefetchable Base Upper 32 Bits = 0h
Prefetchable Limit Upper 32 Bits = 0h
I/O Base Upper 16 Bits = ffffh
I/O Limit Upper 16 Bits = ffffh
Bridge Control = 12ns
PCI Int Pin = NC
Interrupt line = 0

Class = Network (Ethernet)
Vendor ID = 10ech, Realtek Semiconductor
Device ID = 8139h, RT8139A/B/C Fast Ethernet Adapter
PCI index = 0h
Class Codes = 020000h
Revision ID = 10h
Bus number = 0
Device number = 11
Function num = 0
Status Reg = 280h
Command Reg = 7h
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 20h
Cache Line Size= 0h
PCI IO Address = d000h length 256 enabled
PCI Mem Address = ec100000h 32bit length 256 enabled
Subsystem Vendor ID = 10ech
Subsystem ID = 8139h
Max Lat = 64ns
Min Gnt = 32ns
PCI Int Pin = INT A
Interrupt line = 11

Class = Serial Bus (FireWire)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = 3044h, VT6306 VIA Fire II 1394a OHCI Link Layer Ctrlr
PCI index = 0h
Class Codes = 0c0010h
Revision ID = 46h
Bus number = 0
Device number = 12
Function num = 0
Status Reg = 210h
Command Reg = 7h
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 20h
Cache Line Size= 8h un-cacheable
PCI Mem Address = ec101000h 32bit length 2048 enabled
PCI IO Address = d400h length 128 enabled
Subsystem Vendor ID = 1106h
Subsystem ID = 3044h
Max Lat = 32ns
Min Gnt = 0ns
PCI Int Pin = INT A
Interrupt line = 5
Capabilities Pointer = 50h
Capability ID = 1h
Capabilities = e402h - 0h

Class = Serial Bus (Universal Serial Bus)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = 3038h, VT83C572 PCI USB Controller
PCI index = 0h
Class Codes = 0c0300h
Revision ID = 80h
Bus number = 0
Device number = 16
Function num = 0
Status Reg = 210h
Command Reg = 7h
Header type = 0h Multi-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 20h
Cache Line Size= 8h un-cacheable
PCI IO Address = d800h length 32 enabled
Subsystem Vendor ID = 1106h
Subsystem ID = 3038h
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = INT A
Interrupt line = 10
Capabilities Pointer = 80h
Capability ID = 1h
Capabilities = ffc2h - 0h

Class = Serial Bus (Universal Serial Bus)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = 3038h, VT83C572 PCI USB Controller
PCI index = 1h
Class Codes = 0c0300h
Revision ID = 80h
Bus number = 0
Device number = 16
Function num = 1
Status Reg = 210h
Command Reg = 7h
Header type = 0h Multi-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 20h
Cache Line Size= 8h un-cacheable
PCI IO Address = dc00h length 32 enabled
Subsystem Vendor ID = 1106h
Subsystem ID = 3038h
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = INT B
Interrupt line = 11
Capabilities Pointer = 80h
Capability ID = 1h
Capabilities = ffc2h - 0h

Class = Serial Bus (Universal Serial Bus)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = 3038h, VT83C572 PCI USB Controller
PCI index = 2h
Class Codes = 0c0300h
Revision ID = 80h
Bus number = 0
Device number = 16
Function num = 2
Status Reg = 210h
Command Reg = 7h
Header type = 0h Multi-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 20h
Cache Line Size= 8h un-cacheable
PCI IO Address = e000h length 32 enabled
Subsystem Vendor ID = 1106h
Subsystem ID = 3038h
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = INT C
Interrupt line = 11
Capabilities Pointer = 80h
Capability ID = 1h
Capabilities = ffc2h - 0h

Class = Serial Bus (Universal Serial Bus)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = 3104h, VT6202 USB 2.0 Enhanced Host Controller
PCI index = 0h
Class Codes = 0c0320h
Revision ID = 82h
Bus number = 0
Device number = 16
Function num = 3
Status Reg = 210h
Command Reg = 7h
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 20h
Cache Line Size= 8h un-cacheable
PCI Mem Address = ec102000h 32bit length 256 enabled
Subsystem Vendor ID = 1297h
Subsystem ID = f641h
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = INT D
Interrupt line = 5
Capabilities Pointer = 80h
Capability ID = 1h
Capabilities = ffc2h - 0h

Class = Bridge (PCI/ISA)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = 3177h, VT8233A PCI to ISA Bridge
PCI index = 0h
Class Codes = 060100h
Revision ID = 0h
Bus number = 0
Device number = 17
Function num = 0
Status Reg = 210h
Command Reg = 87h
Header type = 0h Multi-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 0h
Cache Line Size= 0h
Subsystem Vendor ID = 1297h
Subsystem ID = f641h
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = NC
Interrupt line = 0
Capabilities Pointer = c0h
Capability ID = 1h
Capabilities = 2h - 0h

Class = Mass Storage (IDE)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = 571h, VT82C586/596/686 PCI IDE Controller
PCI index = 0h
Class Codes = 01018ah
Revision ID = 6h
Bus number = 0
Device number = 17
Function num = 1
Status Reg = 290h
Command Reg = 7h
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 20h
Cache Line Size= 0h
PCI IO Address = e400h length 16 enabled
Subsystem Vendor ID = 1297h
Subsystem ID = f641h
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = INT A
Interrupt line = no connection
Capabilities Pointer = c0h
Capability ID = 1h
Capabilities = 2h - 0h

Class = Multimedia (Audio)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = 3059h, VT8233 AC97 Enhanced Audio Controller
PCI index = 0h
Class Codes = 040100h
Revision ID = 50h
Bus number = 0
Device number = 17
Function num = 5
Status Reg = 210h
Command Reg = 1h
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 0h
Cache Line Size= 0h
PCI IO Address = e800h length 256 enabled
Subsystem Vendor ID = 1297h
Subsystem ID = c160h
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = INT C
Interrupt line = 11
Capabilities Pointer = c0h
Capability ID = 1h
Capabilities = 602h - 0h

Class = Display (VGA)
Vendor ID = 5333h, S3 Incorporated
Device ID = 8d04h, P4M266 ProSavage DDR
PCI index = 0h
Class Codes = 030000h
Revision ID = 0h
Bus number = 1
Device number = 0
Function num = 0
Status Reg = 230h
Command Reg = 6h
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 20h
Cache Line Size= 8h un-cacheable
PCI Mem Address = ec000000h 32bit length 524288 enabled
PCI Mem Address = e0000000h prefetchable 32bit length 134217728 enabled
Subsystem Vendor ID = 1297h
Subsystem ID = f641h
Max Lat = 255ns
Min Gnt = 4ns
PCI Int Pin = INT A
Interrupt line = 10
Capabilities Pointer = dch
Capability ID = 1h
Capabilities = 622h - 0h
Capability ID = 2h
Capabilities = 20h - 1f000004h

Great! Does that mean that “cdrecord” should work on a stock
6.2.1 NC system? Can anybody get it to work? I get “No SCSI transport
for this device” when I try, but I may be doing it wrong. What’s the
supported drive list? A “pci -v” output is attached. Is that a
valid configuration for CD recording under QNX? Thanks.

Are you using it like the README says?

cdrecord -v dev=/dev/cd0 speed=24 iso.img

chris


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

Chris McKillop wrote:

Great! Does that mean that “cdrecord” should work on a stock
6.2.1 NC system? Can anybody get it to work? I get “No SCSI transport
for this device” when I try, but I may be doing it wrong. What’s the
supported drive list? A “pci -v” output is attached. Is that a
valid configuration for CD recording under QNX? Thanks.



Are you using it like the README says?

cdrecord -v dev=/dev/cd0 speed=24 iso.img

chris

Here’s what happens when I try CDrecord with various options.
Incidentally, “/home/public/qnxpub100.iso” does exist.

John Nagle

==

cdrecord -v dev=/dev/cd0 speed=24 /home/public/qnxpub100.iso

Cdrecord 2.00.3 (–) Copyright (C) 1995-2002 Jörg Schilling
TOC Type: 1 = CD-ROM
cdrecord: No such file or directory. WARNING: RR-scheduler not available, disabling.
scsidev: ‘/dev/cd0’
devname: ‘/dev/cd0’
scsibus: -2 target: -2 lun: -2
cdrecord: No local SCSI transport implementation for this architecture.



$ cdrecord dev=help
Cdrecord 2.00.3 (–) Copyright (C) 1995-2002 Jörg Schilling
Supported SCSI transports for this platform:
None.

Transport name: RSCSI
Transport descr.: Remote SCSI
Transp. layer ind.: REMOTE:
Target specifier: rscsi@host:bus,target,lun
Target example: REMOTE:rscsi@host:1,2,0
SCSI Bus scanning: supported
Open via UNIX device: not supported



$ cdrecord dev=/dev/cd0 -checkdrive
Cdrecord 2.00.3 (–) Copyright (C) 1995-2002 Jörg Schilling
scsidev: ‘/dev/cd0’
devname: ‘/dev/cd0’
scsibus: -2 target: -2 lun: -2
cdrecord: No local SCSI transport implementation for this architecture.

See

http://lists.berlios.de/pipermail/cdrecord-developers/2003-March/000107.html

where the developer of CDrecord writes:

Joerg Schilling wrote
Hi all
I recently received a SCSI transport implementation for QNX from
QNX people
Unfortunately, this implementation does not look 100% correct.
Is there anybody who may help to debug the code?

Jörg

So that’s what the CDrecord people say. They’re waiting for
help from QNX. That message was in March 2003.

It looks like this is close to working, but it’s going
to take some cooperation between QNX and the CDrecord people
to finish the job.

Chris McKillop wrote:

So - it’s either that your hardware isn’t supported or the people who
told
me they had it working on NC where blowing smoke. Have you tried copying
in the .so files and rebuilding qnxbasedma.build to see if that makes it
go?

No; I’d like to hear from QNX if it works on NC before messing
with the PE system.

(Do you have to have a SCSI CD-ROM drive? Or does QNX
support SCSI transport over ATAPI to drive ordinary ATAPI drives?)

John Nagle

Here’s what happens when I try CDrecord with various options.
Incidentally, “/home/public/qnxpub100.iso” does exist.

So - it’s either that your hardware isn’t supported or the people who told
me they had it working on NC where blowing smoke. Have you tried copying
in the .so files and rebuilding qnxbasedma.build to see if that makes it
go?

chris


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

So that’s what the CDrecord people say. They’re waiting for
help from QNX. That message was in March 2003.

It looks like this is close to working, but it’s going
to take some cooperation between QNX and the CDrecord people
to finish the job.

Nah - it works. I am using it now (just not with NC).

No; I’d like to hear from QNX if it works on NC before messing
with the PE system.

Just boot .altboot. No messing required. If you copy in the bits and
rebuild your image on NC that is legit as well.

(Do you have to have a SCSI CD-ROM drive? Or does QNX
support SCSI transport over ATAPI to drive ordinary ATAPI drives?)

I am using a Sony ATAPI CDRW.

chris


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

John Garvey wrote:

John Nagle <> nagle@downside.com> > wrote:

– What if you don’t have a floppy drive?


touch floppy
dinit -S1440k -fmy.ifs floppy

may work, although there could be issues of geometry/loader (as these
will default to being that of the host hard drive, not the floppy).

The file created by this approach does not compare equal with one
created using a real floppy drive, probably for the reasons given.

The loader issue can be fixed with “dloader floppy pc2-flop”, but none
of the tools allow overriding of the CHS geometry itself in the loader.
But from another post you do have a floppy drive somewhere, so you
could use “dd” to grab block 0 from a real/bootable disk to a file and
then use dd to patch it back onto subsequent floppy images (made as
above, so you later never need an actual floppy drive).

Why would that work? If “dinit” thinks it is formatting a hard
drive, the layout will be wrong, and just copying “block 0” from
some bootable floppy to the file “floppy” may not be enough to fix this.
How would I validate that it’s been done right?

Anybody have a better idea?

(My ultimate goal here is to be able to build a bootable QNX CD-ROM
reliably under QNX, without needing a floppy drive or a Windows system.
It’s not easy. And I’m spending way too much time on this.)

John Nagle

Anybody have a better idea?

(My ultimate goal here is to be able to build a bootable QNX CD-ROM
reliably under QNX, without needing a floppy drive or a Windows system.
It’s not easy. And I’m spending way too much time on this.)

Barring having a floppy once, you can

dinit your floppy
dd if=/dev/fd0 of=floppy.img bs=512
mount -tqnx4 floppy.img /myfloppy

mkifs -v mybuild /myfloppy/.boot

and then from ever on just use floppy.img (it will have the correct
geometry)


cburgess@qnx.com

OK. Clearly, the right way to do this is for “dinit” to have
an option that causes it to initialize a file as a floppy image,
regardless of the medium containing the file. “dinit” knows
how to do this job; it just can’t be told to do it at present.

With that, and a standard QNX distribution that has the drivers
needed for “cdrecord” to work, making bootable CD-R discs
would be a straightforward, reliable operation.

QNX people, can we get that into the next minor release?
Thanks.

John Nagle
Team Overbot
John Nagle wrote:

John Garvey wrote:

John Nagle <> nagle@downside.com> > wrote:

– What if you don’t have a floppy drive?



touch floppy
dinit -S1440k -fmy.ifs floppy

may work, although there could be issues of geometry/loader (as these
will default to being that of the host hard drive, not the floppy).


The file created by this approach does not compare equal with one
created using a real floppy drive, probably for the reasons given.

The loader issue can be fixed with “dloader floppy pc2-flop”, but none
of the tools allow overriding of the CHS geometry itself in the loader.
But from another post you do have a floppy drive somewhere, so you
could use “dd” to grab block 0 from a real/bootable disk to a file and
then use dd to patch it back onto subsequent floppy images (made as
above, so you later never need an actual floppy drive).


Why would that work? If “dinit” thinks it is formatting a hard
drive, the layout will be wrong, and just copying “block 0” from
some bootable floppy to the file “floppy” may not be enough to fix this.
How would I validate that it’s been done right?

Anybody have a better idea?

(My ultimate goal here is to be able to build a bootable QNX CD-ROM
reliably under QNX, without needing a floppy drive or a Windows system.
It’s not easy. And I’m spending way too much time on this.)

John Nagle

John,

In your quest to build a bootable QNX CD, did you happen to build a copy of
mkisofs, and try making a image of a bunch of files?

I was trying the version of mkisofs from cdrtools 2.0 and am having problems
with it reporting that I have two copies of the same file in the same
directory. This happens occasionally, and usually more frequently as I add
more files to the directory structure I am making the image from. Sometimes
it gets confused and gives me an error about files with the same name in
different directories under the main directory I fed it. All this seems to
happen once I enable Rock Ridge extensions (for long filename support,
etc…).

I posted this on qdn.public.devtools, and got a reply that there was a bug
in qsort() that doesn’t play nice in mkisofs. I am still waiting for someone
to post the fix to this.

FYI,

John Eddy

“John Nagle” <nagle@overbot.com> wrote in message
news:3F1569E2.9080300@overbot.com

OK. Clearly, the right way to do this is for “dinit” to have
an option that causes it to initialize a file as a floppy image,
regardless of the medium containing the file. “dinit” knows
how to do this job; it just can’t be told to do it at present.

With that, and a standard QNX distribution that has the drivers
needed for “cdrecord” to work, making bootable CD-R discs
would be a straightforward, reliable operation.

QNX people, can we get that into the next minor release?
Thanks.

John Nagle
Team Overbot
John Nagle wrote:
John Garvey wrote:

John Nagle <> nagle@downside.com> > wrote:

– What if you don’t have a floppy drive?



touch floppy
dinit -S1440k -fmy.ifs floppy

may work, although there could be issues of geometry/loader (as these
will default to being that of the host hard drive, not the floppy).


The file created by this approach does not compare equal with one
created using a real floppy drive, probably for the reasons given.

The loader issue can be fixed with “dloader floppy pc2-flop”, but none
of the tools allow overriding of the CHS geometry itself in the loader.
But from another post you do have a floppy drive somewhere, so you
could use “dd” to grab block 0 from a real/bootable disk to a file and
then use dd to patch it back onto subsequent floppy images (made as
above, so you later never need an actual floppy drive).


Why would that work? If “dinit” thinks it is formatting a hard
drive, the layout will be wrong, and just copying “block 0” from
some bootable floppy to the file “floppy” may not be enough to fix this.
How would I validate that it’s been done right?

Anybody have a better idea?

(My ultimate goal here is to be able to build a bootable QNX CD-ROM
reliably under QNX, without needing a floppy drive or a Windows system.
It’s not easy. And I’m spending way too much time on this.)

John Nagle

John Eddy wrote:

John,

In your quest to build a bootable QNX CD, did you happen to build a copy of
mkisofs, and try making a image of a bunch of files?

My “mkisofs” builds all have a short file list, probably too short
to hit that problem.

John Nagle