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>