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