Squeezing out some 70 bytes out of the boot2 loader

Bernd Walter ticso at cicely12.cicely.de
Sun Jan 20 16:39:00 PST 2008


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.
This is already published on http://wiki.freebsd.org/ZFSOnRoot for
having a non UFS filesystem as /.

-- 
B.Walter                http://www.bwct.de      http://www.fizon.de
bernd at bwct.de           info at bwct.de            support at fizon.de


More information about the freebsd-hackers mailing list