ZFSBoot try and bsdlabel bootstrap code

Joao Barros joao.barros at gmail.com
Sat Nov 29 17:08:48 PST 2008


On Tue, Nov 25, 2008 at 1:48 AM, Joao Barros <joao.barros at gmail.com> wrote:
> On Fri, Nov 21, 2008 at 9:31 PM, Olivier SMEDTS <olivier at gid0.org> 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
>>>
>>>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?

-- 
Joao Barros


More information about the freebsd-fs mailing list