Tips for shell based partitioning during install

Peter Pauly ppauly at
Thu May 4 21:48:18 UTC 2017

I got a lot farther, but my system won't boot. I get this message:

ZFS: i/o error - all block copies unavailable
ZFS: can't read MOS of pool zroot
gptzfsboot: failed to mount default pool zroot

I'm pasting my build instructions below starting with the part where I
begin partitioning. Maybe you'll see some obvious thing that I did wrong
8. Under Partitioning, choose Shell
9. Create GPT Disks:
gpart create -s gpt da0
gpart create -s gpt da1
gpart create -s gpt da2
gpart create -s gpt da3
gpart create -s gpt da4
gpart create -s gpt da5
gpart create -s gpt da6
gpart create -s gpt da7
gpart create -s gpt da8
gpart create -s gpt da9
gpart create -s gpt da10
gpart create -s gpt da11
gpart create -s gpt da12
gpart create -s gpt da13
gpart create -s gpt da14
gpart create -s gpt da15
10. Add the boot partition to each drive:
gpart add -s 512k -t freebsd-boot da0
gpart add -s 512k -t freebsd-boot da1
gpart add -s 512k -t freebsd-boot da2
gpart add -s 512k -t freebsd-boot da3
gpart add -s 512k -t freebsd-boot da4
gpart add -s 512k -t freebsd-boot da5
gpart add -s 512k -t freebsd-boot da6
gpart add -s 512k -t freebsd-boot da7
gpart add -s 512k -t freebsd-boot da8
gpart add -s 512k -t freebsd-boot da9
gpart add -s 512k -t freebsd-boot da10
gpart add -s 512k -t freebsd-boot da11
gpart add -s 512k -t freebsd-boot da12
gpart add -s 512k -t freebsd-boot da13
gpart add -s 512k -t freebsd-boot da14
gpart add -s 512k -t freebsd-boot da15
11. Add the swap partition to each drive:
gpart add -s 8G -t freebsd-swap -l swap0 da0
gpart add -s 8G -t freebsd-swap -l swap1 da1
gpart add -s 8G -t freebsd-swap -l swap2 da2
gpart add -s 8G -t freebsd-swap -l swap3 da3
gpart add -s 8G -t freebsd-swap -l swap4 da4
gpart add -s 8G -t freebsd-swap -l swap5 da5
gpart add -s 8G -t freebsd-swap -l swap6 da6
gpart add -s 8G -t freebsd-swap -l swap7 da7
gpart add -s 8G -t freebsd-swap -l swap8 da8
gpart add -s 8G -t freebsd-swap -l swap9 da9
gpart add -s 8G -t freebsd-swap -l swap10 da10
gpart add -s 8G -t freebsd-swap -l swap11 da11
gpart add -s 8G -t freebsd-swap -l swap12 da12
gpart add -s 8G -t freebsd-swap -l swap13 da13
gpart add -s 8G -t freebsd-swap -l swap14 da14
gpart add -s 8G -t freebsd-swap -l swap15 da15
12. Add the main partition to the remaining space on each drive:
gpart add -t freebsd-zfs -l disk0 da0
gpart add -t freebsd-zfs -l disk1 da1
gpart add -t freebsd-zfs -l disk2 da2
gpart add -t freebsd-zfs -l disk3 da3
gpart add -t freebsd-zfs -l disk4 da4
gpart add -t freebsd-zfs -l disk5 da5
gpart add -t freebsd-zfs -l disk6 da6
gpart add -t freebsd-zfs -l disk7 da7
gpart add -t freebsd-zfs -l disk8 da8
gpart add -t freebsd-zfs -l disk9 da9
gpart add -t freebsd-zfs -l disk10 da10
gpart add -t freebsd-zfs -l disk11 da11
gpart add -t freebsd-zfs -l disk12 da12
gpart add -t freebsd-zfs -l disk13 da13
gpart add -t freebsd-zfs -l disk14 da14
gpart add -t freebsd-zfs -l disk15 da15
13. Install the Protective MBR (pmbr) and gptzfsboot loader to all drives:
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da2
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da3
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da4
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da5
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da6
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da7
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da8
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da9
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da10
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da11
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da12
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da13
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da14
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da15
14. Load ZFS kernel module:
kldload /boot/kernel/opensolaris.ko
kldload /boot/kernel/zfs.ko
15. Create the zfs pool:
zpool create -o altroot=/mnt -O compress=lz4 -O atime=off -m none -f zroot
raidz2 /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2 /dev/gpt/disk3
/dev/gpt/disk4 /dev/gpt/disk5 /dev/gpt/disk6 /dev/gpt/disk7 /dev/gpt/disk8
/dev/gpt/disk9 /dev/gpt/disk10 /dev/gpt/disk11 /dev/gpt/disk12
/dev/gpt/disk13 /dev/gpt/disk14 /dev/gpt/disk15
16. Create the zfs datasets:
zfs create -o mountpoint=none zroot/ROOT
zfs create -o mountpoint=/ zroot/ROOT/default
zfs create -o mountpoint=/tmp -o exec=on -o setuid=off zroot/tmp
zfs create -o mountpoint=/usr -o canmount=off zroot/usr
zfs create zroot/usr/home
zfs create -o setuid=off zroot/usr/ports
zfs create zroot/usr/src
zfs create -o mountpoint=/var -o canmount=off zroot/var
zfs create -o exec=off -o setuid=off zroot/var/audit
zfs create -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/log
zfs create -o atime=on zroot/var/mail
zfs create -o setuid=off zroot/var/tmp
17. Set the mount point of the root for newly created datasets
zfs set mountpoint=/zroot zroot
18. Set correct permissions on the temp directories:
chmod 1777 /mnt/tmp
chmod 1777 /mnt/var/tmp
19. Tell zfs where to find the boot file system:
zpool set bootfs=zroot/ROOT/default zroot
20. Create a directory for the zpool cache and tell zfs where to find it:
mkdir -p /mnt/boot/zfs
zpool set cachefile=/mnt/boot/zfs/zpool.cache zroot
21. Set the canmount=noauto so that default boot environment (BE) does not
get mounted if a different boot environment is chosen from the boot menu:
zfs set canmount=noauto zroot/ROOT/default
22. Add command which will be picked up later to build rc.conf: and
echo ‘zfs_enable=\”YES\”’ >> /tmp/bsdinstall_etc/rc.conf.zfs
echo ‘kern.geom.label.disk_ident.enable=\”0\”’ >>
echo ‘kern.geom.label.gptid.enable=\”0\”’ >>
23. exit
24. At this point, the base system will be installed.
25. Enter the root password.
26. Under Network Configuration, select  vmx0
27. Would you like to configure IPv4 for this interface:  Yes
28. Would you like to use DHCP to configure this interface:  No
29. Enter the following information:  IP Address:, Subnet Mask:, Default Router:
30. Would you like to configure IPv6 for this interface:  No
31. Search:  <blank>, IPv4 DNS #1:, IPv4 DNS #2:
32. On the Time Zone Selector screen, choose America -- North and South,
then scroll down and choose New York.
Choose Eastern Time and when asked, does EST look reasonable, choose Yes
33. Choose Skip then Skip again to skip the time adjustment.
34. On the services you would like to have started at boot screen, choose:,
sshd, ntpd and dumpdev
35. On the system hardening page, ENABLE ALL OPTIONS.
36. Would you like to add users to the installed system now:  No
37. On the final configuration screen, choose Exit
38. Before exiting, would you like to open a shell?  Yes
39. zpool set cachefile= zroot
40. Installation is complete screen:  Reboot

On Wed, May 3, 2017 at 4:46 PM, Ben Woods <woodsb02 at> wrote:

> On Wed, 3 May 2017 at 2:31 am, Peter Pauly <ppauly at> wrote:
>> I'm using the option in the installer where you go out to a shell prompt
>> during the partitioning step in the installer on FreeBSD 11-Release and
>> booted off of the CD. All is going well until I get to this step:
>> zpool create zroot raidz2 /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk3 ...
>> etc.
>> cannot mount '/zroot': failed to create mountpoint
>> The instructions when going out to the shell say I have to mount the
>> filesystem under /mnt but /mnt is read-only.
>> I tried to use the Guided Auto (ZFS) but it doesn't work with more than 10
>> drives.
>> What am I doing wrong?
> Hi Peter,
> When I do manual zfs partitioning during installs, i follow the commands
> used by the actual bsdinstall scripts (the ones that would have been
> executed if I used the auto mode).
> A copy of them can be viewed online here:
> scripts/zfsboot?view=markup#l1313
> Essentially the zpool create command needs to have:
> zpool create -o altroot=/mnt -O compress=lz4 -O atime=off -m none -f zroot
> raidz2 /dev/gpt/disk0 ...
> Regards,
> Ben
>> --
> --
> From: Benjamin Woods
> woodsb02 at

More information about the freebsd-questions mailing list