Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 07 Jun 2012 15:58:25 +0200
From:      rank1seeker@gmail.com
To:        "John Baldwin" <jhb@freebsd.org>, hackers@freebsd.org
Subject:   Re: CD bootcode
Message-ID:  <20120607.135825.592.1@DOMY-PC>
In-Reply-To: <201206070821.40068.jhb@freebsd.org>
References:  <20120606.161514.685.1@DOMY-PC> <201206070821.40068.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

----- Original Message -----

From: John Baldwin <jhb@freebsd.org>

To: freebsd-hackers@freebsd.org

Cc: rank1seeker@gmail.com

Date: Thu, 7 Jun 2012 08:21:39 -0400

Subject: Re: CD bootcode



> On Wednesday, June 06, 2012 12:15:14 pm rank1seeker@gmail.com wrote:

> > FreeBSD's CD bootcode '/boot/cdboot' is targeting stage 3 boot -> loader

> > For example, stage 2 boot '/boot/boot' is attempting the same.

> > 

> > In my case of a '/boot/loader', '/boot' is a symlink!

> > 

> > So if '/boot/boot' works with symlinks, why '/boot/cdboot' doesn't!

> > Yes, I did use Rock-Ridge extensions, upon creation of 'cd.iso'

> 

> Because I didn't make cdboot's lookup routine handle symlinks.  It

> also doesn't look at Rock-Ridge extensions and only uses the base

> ISO-9660 directory entries.  That was enough fun to write in assembly.

> OTOH, CD sectors are 2k, so you do have that much room to work with

> and can probably fit a more advanced directory lookup into cdboot.

> 

> I'm happy to review any patches you come up with.

> 

> -- 

> John Baldwin





I need to correct myself.

BOTH stage 2 boot '/boot/boot' AND '/boot/cdboot' don't work with symlinks!



'/boot/boot' on UFS sees symlink as file, same as '/boot/cdboot' does so on Rock-Ridge.



I can handle '/boot/boot' by providing full path to loader via 'boot.config'

'/boot/cdboot' doesn't have such a file, so in '/usr/src/sys/boot/i386/cdboot/cdboot.s':

--

loader_paths:   .asciz  "/BOOT/LOADER"

                .asciz  "/boot/loader"

                .byte 0

--



I injected third '.asciz' line with full path to 'loader' and recompiled it.

And what is first line "/BOOT/LOADER" doing in there ?!?



But even when loader is finally started, loader handles symlinks on UFS (kicked by '/boot/boot'), BUT fails so, on Rock-Ridge iso (kicked by '/boot/cdboot')

Looks like loader must be made into looking at Rock-Ridge extensions.



I can't provide patches, as I only know 'sh', 'php' (and web related langs)

Above code I've patched, only because I've hunted patterns.





Domagoj Smolčić



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120607.135825.592.1>