ZFSBoot try and bsdlabel bootstrap code

Olivier SMEDTS olivier at gid0.org
Fri Nov 21 16:37:19 PST 2008


On Fri, Nov 21, 2008 at 10:31:31PM +0100, Olivier SMEDTS wrote:
> 2008/11/20 Doug Rabson <dfr at rabson.org>:
> >
> > On 19 Nov 2008, at 22:12, Olivier SMEDTS wrote:
> >
> >> Hello,
> >>
> >> I want to boot off a ZFS pool (version 13) on an USB stick for testing
> >> purposes. But I'm stuck with the bsdlabel bootstrap code size...
> >> I'm using a 2 hours old CURRENT.
> >>
> >> # kldload usb2_storage_mass
> >> # kldload zfs
> >> # dd if=/dev/zero of=/dev/da0 bs=512 count=32
> >> # fdisk -BI da0
> >> # dd if=/dev/zero of=/dev/da0s1 bs=512 count=32
> >> # bsdlabel -wB -b /boot/zfsboot da0s1
> >> bsdlabel: boot code /boot/zfsboot is wrong size
> >>
> >> Is what I'm trying to do with bsdlabel wrong ?
> >> I previously tried with the default bootstrap code but I had an
> >> (expected) "boot: Not ufs" error at boot.
> >>
> >> PS : I'm not subscribed to this list.
> >
> > The process for install zfsboot is a bit manual (and undocumented). Try
> > something like this:
> >
> >        # dd if=/boot/zfsboot of=/dev/da0s1 count=1
> >        # dd if=/boot/zfsboot of=/dev/ds0s1 skip=1 seek=1024
> 
> It works !
> 
> Now I'm stuck at loader(8) prompt.
> After having a look at your patch, I tried building world with
> "LOADER_ZFS_SUPPORT=yes". And it seems broken, at least on amd64 :

I managed to complete a fresh "buildworld LOADER_ZFS_SUPPORT=yes" with the
attached patch. I took flags from sys/boot/i386/Makefile.inc without trying
to really understand what was needed.

Loader seems to recognize the zpool but can't "ls". I'll investigate that later.


> # cd /usr/src
> # make buildworld LOADER_ZFS_SUPPORT=yes
> [...]
> ===> sys (all)
> ===> sys/boot (all)
> ===> sys/boot/ficl (all)
> ===> sys/boot/efi (all)
> ===> sys/boot/efi/libefi (all)
> ===> sys/boot/zfs (all)
> ln -sf /work/src/sys/boot/zfs/../../../i386/include machine
> cc -O2 -pipe -march=native -I/work/src/sys/boot/zfs/../common
> -I/work/src/sys/boot/zfs/../.. -I.
> -I/work/src/sys/boot/zfs/../../../lib/libstand
> -I/work/src/sys/boot/zfs/../../cddl/boot/zfs -ffreestanding
> -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2
> -mno-sse3 -Wformat -Wall  -c /work/src/sys/boot/zfs/zfs.c
> /work/src/sys/boot/zfs/zfs.c:1: error: -mpreferred-stack-boundary=2 is
> not between 4 and 12
> *** Error code 1
> 
> Stop in /work/src/sys/boot/zfs.
> *** Error code 1
> 
> Stop in /work/src/sys/boot.
> *** Error code 1
> 
> Stop in /work/src/sys.
> *** Error code 1
> 
> Stop in /work/src.
> *** Error code 1
> 
> Stop in /work/src.
> *** Error code 1
> 
> Stop in /work/src.
> 
> 
> > Alternatively, you might try using the brand new support for GPT that I
> > committed yesterday:
> 
> Well, this one was broken on amd64 and is now disconnected from the build.
> 
> Any advice ?
> 
> Olivier
> 
> 
> -- 
> Olivier Smedts                                                 _
>                                         ASCII ribbon campaign ( )
> e-mail: olivier at gid0.org        - against HTML email & vCards  X
> www: http://www.gid0.org    - against proprietary attachments / \
> 
>   "Il y a seulement 10 sortes de gens dans le monde :
>   ceux qui comprennent le binaire,
>   et ceux qui ne le comprennent pas."

-- 
Olivier Smedts                                              _
                          ASCII ribbon campaign            ( )
e-mail: olivier at gid0.org - against HTML email & vCards      X
www: http://www.gid0.org - against proprietary attachments / \

 "Il y a seulement 10 sortes de gens dans le monde :
 ceux qui comprennent le binaire,
 et ceux qui ne le comprennent pas."
-------------- next part --------------
--- sys/boot/zfs/Makefile.orig	2008-11-22 00:15:42.000000000 +0100
+++ sys/boot/zfs/Makefile	2008-11-22 00:16:22.000000000 +0100
@@ -17,6 +17,9 @@
 CFLAGS+=	-Wformat -Wall
 
 .if ${MACHINE_ARCH} == "amd64"
+CFLAGS+=        -m32 -march=i386
+LDFLAGS+=       -m elf_i386_fbsd
+AFLAGS+=        --32
 CLEANFILES+=    machine
 machine:
 	ln -sf ${.CURDIR}/../../../i386/include machine


More information about the freebsd-fs mailing list