[haiku-development] Re: HAIKU in Q on MAC OS X

  • From: "Michael Lotz" <mmlr@xxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Mon, 27 Oct 2008 23:49:04 +0100

On Mon, 27 Oct 2008 14:15:36 -0700, Michael Crawford wrote
> The problem is that the bootloader can't find the CD drive,
>  apparently because the BeOS bootloader uses the CD in some way that 
> most other operating systems don't, and so isn't emulated by Q.
>
> I wrote that a long time ago.  Possibly Q has fixed the CD drive 
> problem by now.

No, it's not a bug. What you see here is exactly the problem of the BeOS CD
approach. The CD is not a single track data CD, but a two tracked ISO/boot and
BFS CD. The second track holds the BeOS while the first one just hosts the
bootloader.

I've described already that this requires extra caution when burning such
CD's, but it also completely makes CD images worthless. This is because the
separation of the disc into the two tracks is not recorded into the image
itself, but into the TOC (Table of Contents) section of the disc.

When you create an image from such a CD this TOC is lost and so an emulator
cannot possibly emulate such a disc in the way it was intended. I have
implemented a feature into the BeOS port of QEMU that allows to specify the
TOC on the commandline when starting QEMU to allow such things (-cdtoc). This
feature is not present on other versions of QEMU though as I never really
bothered sending a patch, as nobody really ever uses such a thing (because
it's usually not straight forward to get the right parameters to make it
usable anyway).

When emulating a CD drive using a real CD drive it is usually possible to also
get the TOC from the real CD, but that's a feature that is not implemented on
all platforms, so it's likely that Q just misses it.

This is one of the reasons why we should definitely _not_ take this approach
for eventually distributed Haiku CDs. They are just too error prone if the one
using them doesn't understand how things work exactly - an understanding that
just shouldn't be necessary at all.

Regards
Michael

Other related posts: