From owner-freebsd-hackers@FreeBSD.ORG Thu Jun 7 16:07:31 2012 Return-Path: Delivered-To: hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B9CCF1065670 for ; Thu, 7 Jun 2012 16:07:31 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigknife-pt.tunnel.tserv9.chi1.ipv6.he.net [IPv6:2001:470:1f10:75::2]) by mx1.freebsd.org (Postfix) with ESMTP id 90B118FC1E for ; Thu, 7 Jun 2012 16:07:31 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 0F1BEB97F; Thu, 7 Jun 2012 12:07:31 -0400 (EDT) From: John Baldwin To: rank1seeker@gmail.com Date: Thu, 7 Jun 2012 11:16:33 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p13; KDE/4.5.5; amd64; ; ) References: <20120606.161514.685.1@DOMY-PC> <201206070821.40068.jhb@freebsd.org> <20120607.135825.592.1@DOMY-PC> In-Reply-To: <20120607.135825.592.1@DOMY-PC> MIME-Version: 1.0 Content-Type: Text/Plain; charset="windows-1250" Content-Transfer-Encoding: 7bit Message-Id: <201206071116.33215.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Thu, 07 Jun 2012 12:07:31 -0400 (EDT) Cc: hackers@freebsd.org Subject: Re: CD bootcode X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jun 2012 16:07:31 -0000 On Thursday, June 07, 2012 9:58:25 am rank1seeker@gmail.com wrote: > ----- Original Message ----- > From: John Baldwin > 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! Correct. > '/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 ?!? Plain ISO-9660 always uses uppercase letters for filenames. There is a mkisofs flag to use lowercase, but by default it uppercases all filenames. > 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. It is src/lib/libstand/cd9660.c that would have to be patched. It already has limited Rock-Ridge support, so adding symlink support to cd9660_open() may not be that hard to do. -- John Baldwin