Dualboot and ZFS
vas at mpeks.tomsk.su
Mon Jan 15 12:52:51 UTC 2018
Manish Jain wrote:
> > I have a box with dual boot: Windows and FreeBSD/UFS:
> > $ gpart show ada0
> > => 63 976773105 ada0 MBR (466G)
> > 63 1985 - free - (993K)
> > 2048 293029888 1 ntfs [active] (140G)
> > 293031936 598958080 2 ntfs (286G)
> > 891990016 83886080 3 freebsd (40G)
> > 975876096 897072 - free - (438M)
> > $ gpart show ada0s3
> > => 0 83886080 ada0s3 BSD (40G)
> > 0 75497472 1 freebsd-ufs (36G)
> > 75497472 8388607 2 freebsd-swap (4.0G)
> > 83886079 1 - free - (512B)
> > $
> > boot0 handles the OS selection, everything works just fine.
> > Can I install FreeBSD with root-on-zfs into ada0s3 somehow?
> Hi Victor,
> Yes, you can. But you will need a spare slice somewhere - another disk
> (SATA / USB). If the used potion of your ada0s3a is small, you can even
> use a USB pen drive.
> You can rsync your current installation to the spare slice, and then
> mirror the sync back to a newly created ada0s3-zfs.
Sorry if my question was misleading, I did not mean converting the
existing system from UFS to ZFS at ada0s3. Suppose ada0s3 is an unused
slice, I can probably create a zpool thereon. But a few questions
1. Can I install a root-on-zfs system on ada0s3 with bsdinstall? I
2. In case of rsync/restore/installworld, what do I do about the VBR
in ada0s3? This VBR should support booting from ZFS. Looks like
zfsboot(8) allows this.
3. Please see the other questions below, step by step.
> Let's say your spare disk is da0 with 40G spare (or at least the used
> size of ada0s3a).
> gpart destroy -F da0 # only if needed
> gpart create -s MBR da0 # only if needed
> If da0 already has a spare slice, the 2 steps above are not needed, but
> then you will need to replace the slice number instead of da0s1 in the
> steps below.
> gpart add -t freebsd da0 # adds da0s1; note the slice number here
> gpart create -s BSD da0s1
> gpart set -a active -i 1 da0
> gpart add -t freebsd-zfs da0s1
> zpool create zroot /dev/da0s1a
Why are you creating a zpool within a BSD "a" partition, and not in
da0s1 directly? I have never seen such a configuration. Is it even
possible to set the "freebsd-zfs" type on a BSD partition?
And a pool created this way would be non-compatible with beadm. If
anyone has a script to create a beadm-compatible set of datasets,
please share it. But it's already a different matter.
> zpool set bootfs=zroot zroot
> gpart bootcode -b /boot/boot0 da0
> zpool export zroot
So you suggest using boot0 in MBR with zfsboot in VBR? Will that work?
> dd if=/boot/zfsboot of=/tmp/zfsboot1 count=1
> gpart bootcode -b /tmp/zfsboot1 /dev/da0s1
> dd if=/boot/zfsboot of=/dev/da0s1a skip=1 seek=1024
It looks like the procedure described in zfsboot(8) but the da0s1a
(the "a" partition) beats me. Should not the pool be in da0s1 ?
> zpool import zroot
> zfs set checksum=fletcher4 zroot
> cat <<- EOF
> } > /root/excl
> rsync -aAHXv --delete --exclude-from /root/excl / /zroot/
> echo 'zfs_load=YES' > /zroot/boot/loader.conf
> echo 'vfs.root.mountfrom="zfs:zroot"' >> /zroot/boot/loader.conf
> echo 'kern.geom.label.disk_ident.enable=0' >> /zroot/boot/loader.conf
^^^^^^^^^^^^^^^^^^^^^^^^^^^ why would I need to set this sysctl to 0?
It's "1" by default on my root-on-zfs boxes.
Victor Sudakov, VAS4-RIPE, VAS47-RIPN
More information about the freebsd-questions