Date: Sat, 6 Dec 2008 10:30:00 -0800 From: Paul Saab <ps@mu.org> To: Joao Barros <joao.barros@gmail.com> Cc: "freebsd-fs@freebsd.org" <freebsd-fs@freebsd.org>, Paul Saab <ps@freebsd.org> Subject: Re: ZFSBoot try and bsdlabel bootstrap code Message-ID: <02D2F116-55EF-49D6-91C7-DE71D3AF6F55@mu.org> In-Reply-To: <70e8236f0812060738x5e259df6la00529006c07fc23@mail.gmail.com> References: <367b2c980811191412h5e0af470k165b37edc2fc5853@mail.gmail.com> <16C31872-6A83-4FAB-AC85-213D604CDDE4@rabson.org> <367b2c980811211331v551893a8sde2231c3bc65468c@mail.gmail.com> <70e8236f0811241748w41884a12la50e4e63f83a7542@mail.gmail.com> <70e8236f0811291708h7ece06dcm1bff0081b5b0fde8@mail.gmail.com> <C8EFF9D1-8161-4F20-B561-2EF99B9F472D@rabson.org> <70e8236f0812060738x5e259df6la00529006c07fc23@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
ya. I spent a while looking at this. when you look at the generated code it was obvious. including the wrong sys/type.h is bad On Dec 6, 2008, at 7:38 AM, "Joao Barros" <joao.barros@gmail.com> wrote: > On Sun, Nov 30, 2008 at 9:05 AM, Doug Rabson <dfr@rabson.org> wrote: >> >> On 30 Nov 2008, at 01:08, Joao Barros wrote: >> >>> On Tue, Nov 25, 2008 at 1:48 AM, Joao Barros <joao.barros@gmail.com> >>> wrote: >>>> >>>> On Fri, Nov 21, 2008 at 9:31 PM, Olivier SMEDTS >>>> <olivier@gid0.org> wrote: >>>>> >>>>> 2008/11/20 Doug Rabson <dfr@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 >>>>>> >>>>>> Alternatively, you might try using the brand new support for >>>>>> GPT that I >>>>>> committed yesterday: >>>>>> >>>>>> # gpt create -f da0 >>>>>> # gpt boot -b /boot/pmbr -g /boot/gptzfsboot da0 >>>>>> # gpt add -t freebsd-zfs da0 >>>>>> # zpool create mypool da0p2 >>>>> >>>>> It works ! >>>>> >>>>> Now I'm stuck at loader(8) prompt. >>>> >>>> That's a me too. >>>> >>>> I tried this under vmware with LOADER_ZFS_SUPPORT=yes on make.conf: >>>> # gpart create -s gpt ad0 >>>> # gpart add -b 34 -s 128 -t freebsd-boot ad0 >>>> ad0p1 added >>>> # gpart add -b 162 -s 15078327 -t freebsd-zfs ad0 >>>> ad0p2 added >>>> # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad0 >>>> # zpool create tank ad0p2 >>>> # zpool set bootfs = tank tank >>>> >>>> lsdev on loader shows: >>>> cd devices: >>>> disk devices: >>>> disk0: BIOS drive c: >>>> disk0p1: FreeBSD boot >>>> disk0p2: FreeBSD ZFS >>>> pxe devices: >>>> zfs devices: >>>> >>>> Any hints? >>>> >>> >>> >>> I'm trying to figure out why loader doesn't see my zfs pool and >>> here's >>> what I got: >>> >>> FreeBSD/i386 boot >>> Default: tank:/boot/loader >>> boot: status pool: tank >>> config: >>> NAME STATE >>> tank ONLINE >>> ad0p2 ONLINE >>> >>> I added some printfs on loader\main.c: >>> >>> guid = kargs->zfspool; >>> unit = zfs_guid_to_unit(guid); >>> if (unit >= 0) { >>> sprintf(devname, "zfs%d", unit); >>> setenv("currdev", devname, 1); >>> } >>> >>> and guid returns the correct guid for my pool but unit returns -1 >>> which by looking at zfs_guid_to_unit means something is not right. >>> >>> Any pointers Doug? >> >> It looks like loader didn't manage to find the pool for some >> reason. This >> probing process happens in sys/boot/zfs/zfs.c in the function >> zfs_dev_init(). Its supposed to taste all the available disks and >> partitions >> for the presence of a ZFS pool. The actual tasting process happens in >> vdev_probe(). >> >> > > Paul Saab just commited this: http://svn.freebsd.org/changeset/base/185711 > It's working now! Thank you very much to both! :-D > > > -- > Joao Barros
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?02D2F116-55EF-49D6-91C7-DE71D3AF6F55>