From owner-freebsd-hackers@FreeBSD.ORG Fri Feb 1 22:08:14 2008 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9278616A420 for ; Fri, 1 Feb 2008 22:08:14 +0000 (UTC) (envelope-from ady@ady.ro) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.234]) by mx1.freebsd.org (Postfix) with ESMTP id 40B4613C467 for ; Fri, 1 Feb 2008 22:08:13 +0000 (UTC) (envelope-from ady@ady.ro) Received: by wr-out-0506.google.com with SMTP id 68so1261607wri.3 for ; Fri, 01 Feb 2008 14:08:13 -0800 (PST) Received: by 10.142.79.15 with SMTP id c15mr2594739wfb.105.1201903692031; Fri, 01 Feb 2008 14:08:12 -0800 (PST) Received: by 10.143.167.6 with HTTP; Fri, 1 Feb 2008 14:08:12 -0800 (PST) Message-ID: <78cb3d3f0802011408p6061353ei76a077cfadd4e379@mail.gmail.com> Date: Sat, 2 Feb 2008 00:08:12 +0200 From: "Adrian Penisoara" Sender: ady@ady.ro To: ticso@cicely.de In-Reply-To: <20080121003847.GI22192@cicely12.cicely.de> MIME-Version: 1.0 References: <78cb3d3f0801201239x18c339a6sbc6a04d2b5670b81@mail.gmail.com> <20080121003847.GI22192@cicely12.cicely.de> X-Google-Sender-Auth: 2e25b48971a0c74d Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-hackers@freebsd.org Subject: Re: Squeezing out some 70 bytes out of the boot2 loader 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: Fri, 01 Feb 2008 22:08:14 -0000 Hi, On Jan 21, 2008 2:38 AM, Bernd Walter wrote: > On Sun, Jan 20, 2008 at 10:39:45PM +0200, Adrian Penisoara wrote: > > Hello > > > > I am trying to hack in some symlink support into the > [sys/boot/i386/]boot2 > > bootloader (for my project [1]) and I seem to fall short of about 69 > bytes: > > > > as -o boot2.o boot2.s > > ld -static -N --gc-sections -nostdlib -Ttext 0x2000 -o > > boot2.out/build/obj/build/src/sys/boot/i386/boot2/../btx/lib/crt0.o > > boot2.o sio.o > > objcopy -S -O binary boot2.out boot2.bin > > btxld -v -E 0x2000 -f bin -b > > /build/obj/build/src/sys/boot/i386/boot2/../btx/btx/btx -l boot2.ldr -o > > boot2.ld -P 1 boot2.bin > > kernel: ver=1.01 size=7b0 load=9000 entry=9010 map=16M pgctl=1:1 > > client: fmt=bin size=1581 text=0 data=0 bss=0 entry=0 > > output: fmt=bin size=1e45 text=114 data=1d31 org=0 entry=0 > > -69 bytes available > > *** Error code 1 > > > > What can I do to get room for about 70-100 bytes for these changes to > make > > it into the bootloader ? > > > > [1] I'm trying to get support for /boot being mounted as a separate FS > and > > as such I would need to have a "self-pointing" symlink (e.g. "boot -> ." > ) > > to easily mask the fact that the boot stuff is now right in the root of > that > > FS. Fortunately the FORTH loader does support symlinks and I do not get > > problems with it. I know that I can use /boot.kernel as a workaround, > but > > that is not too elegant. > > The support is already there - at least to some definition. > You just need to symlink it the other way, so the kernel sees the > symlink and not the bootcode: > Mount your boot-FS into /bootdir with a /boot subdir inside. > So on ypur running system you have /bootdir/boot. > Then symlink /boot on your real /-FS to /bootdir/boot and you are fine > with tools expecting /boot on your running system. > Fill the directory with the usual content. > boot2 and later loader stages will just see it's normal /boot inside > with everything in it. Yes, it would work indeed, with quite minimal overhead, but it's not elegant enough for my taste. Fortunately /boot/loader knows how to deal with symlinks so I can push [1] a "boot -> ." symlink [2] into the boot partition, it's just the boot2 loader who doesn't know about this. [1] Actually I also need to get the boostrap code file (/boot/boot used by bsdlabel -B) out of the way first, renaming it to something more meaningful (e.g. /boot/bootstrap). [2] I seem to remember Linux was once doing this symlink once, but I guess that nowadays, when GRUB became the default bootloader, its utility has disappeared. > This is already published on http://wiki.freebsd.org/ZFSOnRoot for > having a non UFS filesystem as /. > Actually I am trying to build myself a ZFS root structure too. Thanks for the tip. Regards, Adrian Penisoara ROFUG / EnterpriseBSD