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>
