Skip site navigation (1)Skip section navigation (2)
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>