Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Mar 2018 09:59:14 +0700
From:      Victor Sudakov <vas@mpeks.tomsk.su>
To:        freebsd-questions@freebsd.org
Subject:   Solved. Re: Dualboot and ZFS
Message-ID:  <20180319025914.GA57490@admin.sibptus.transneft.ru>
In-Reply-To: <547e65d16ef16667f61d88463ca73079@roundcube.fjl.org.uk>
References:  <VI1PR02MB12007D071EA5398373D2189CF6EB0@VI1PR02MB1200.eurprd02.prod.outlook.com> <20180115125241.GB60956@admin.sibptus.transneft.ru> <VI1PR02MB1200C7F0066F361E60A6CBEDF6EB0@VI1PR02MB1200.eurprd02.prod.outlook.com> <20180115144747.GA65526@admin.sibptus.transneft.ru> <VI1PR02MB120018D174817F8FFB2981D5F6EB0@VI1PR02MB1200.eurprd02.prod.outlook.com> <20180115151526.GA66342@admin.sibptus.transneft.ru> <a7920f859b666cff48f4f73ee1b2f954@dweimer.net> <20180116034929.GB89443@admin.sibptus.transneft.ru> <20180131082738.GA46395@admin.sibptus.transneft.ru> <547e65d16ef16667f61d88463ca73079@roundcube.fjl.org.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2018-01-31 08:27, Victor Sudakov wrote:
> > My pool works successfully in a bhyve environment, but in VirtualBox 
> > 5.0.14
> > (to test the real boot sequence) I get this message from zfsboot:
> > 
> > zfsboot: No ZFS pools located, can't boot
> > 
> > However, if I boot from LiveCD, the pool is there, it's healthy and
> > can be imported.

Finally, and thanks to Eugene Grossbein, the problem is solved.

The gist of the problem was the presence of a BSD label in the slice
where the bootable zfs pool was located. It turns out that zfsboot
ignores the slice if it finds a BSD label therein. The bootable zpool
should be directly on the slice (like on da1s1, and not da1s1a).

This means that both zfsboot(8) and the articles in the FreeBSD wiki
are erroneous because they all suggest "gpart create -s BSD ada0s1" -
in fact, it's fatal.


Below is the final working example:

================================================
#!/bin/sh

sysctl kern.geom.debugflags=0x10

DISK=da1
POOL="zroot-test3"
NEWSYSTEM=newsystem
SLICE=2

partition() {
	gpart create -s mbr ${DISK}
	gpart add -t fat32 -s 1G ${DISK}
	gpart add -t freebsd -s 2G -i ${SLICE} ${DISK}
	gpart set -a active -i ${SLICE} ${DISK}
}

bootcode() {
	gpart bootcode -b /boot/boot0 ${DISK}
	dd if=/boot/zfsboot of=/dev/${DISK}s${SLICE} count=1
	dd if=/boot/zfsboot of=/dev/${DISK}s${SLICE} iseek=1 oseek=1024

}

zfscreate() {
	zpool create -m none -R /${NEWSYSTEM} ${POOL} ${DISK}s${SLICE}

	zfs create -o mountpoint=none ${POOL}/ROOT
	zfs create -o mountpoint=/ ${POOL}/ROOT/default

	zfs create -o mountpoint=/usr -o canmount=off ${POOL}/usr
	zfs create -o mountpoint=/var -o canmount=off ${POOL}/var

	zfs create -o mountpoint=/tmp ${POOL}/tmp
	zfs create -o mountpoint=/usr/home ${POOL}/usr/home
	zfs create -o mountpoint=/var/audit ${POOL}/var/audit
	zfs create -o mountpoint=/var/crash ${POOL}/var/crash
	zfs create -o mountpoint=/var/log ${POOL}/var/log
	zfs create -o mountpoint=/var/mail ${POOL}/var/mail
	zfs create -o mountpoint=/var/tmp ${POOL}/var/tmp

	zfs create -V 1G -o org.freebsd:swap=on ${POOL}/swap

	zpool set bootfs=${POOL}/ROOT/default ${POOL}
}

clone() {
	cd /${NEWSYSTEM} || exit 3
	#sleep 10
	dump -0af - / | restore -ryf - || exit 3 
	mv etc/fstab etc/fstab.bak
	echo '# empty' > etc/fstab
	echo 'zfs_enable="YES"' >> etc/rc.conf.local 
	echo 'zfs_load="YES"' >> boot/loader.conf 
	cd /root
}

zfsexport() {
	zpool export ${POOL}
}

partition
bootcode
zfscreate
clone
zfsexport
================================================

-- 
Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
AS43859



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180319025914.GA57490>