====== Installing FreeBSD Root on ZFS using UFS /boot ======
===== Creating a bootable ZFS Filesystem =====
- Boot %%FreeBSD%% install DVD or USB Memstick
- Choose Fixit option in sysinstall
- Create MBR disk\\ \\
If you are installing on an New drive, you will need to create the MBR geometry first:
Fixit# gpart create -s mbr ad0
- Create Slice using gpart\\ \\
This example already has two slices defined on the drive.
Fixit# gpart show ad0
=> 63 625142385 ad0 MBR (289G)
63 209712447 1 !7 (100G)
209712510 417690 2 !136 (204M)
210130200 415012248 - free - (198G)
Create a third slice using the **s**ize parameter. You may omit the size to use the remainder of the disk. Then create a BSD partition table on the new slice.
Fixit# gpart add -s 198G -t freebsd ad0
ad0s3 added
Fixit# gpart create -s BSD ad0s3
ad0s3 created
And examine the result:
Fixit# gpart show ad0
=> 63 625142385 ad0 MBR (289G)
63 209712447 1 !7 (100G)
209712510 417690 2 !136 (204M)
210130200 415012248 3 freebsd (198G)
**Note:**
Sizes and offsets are specified in sectors (1 sector is typically 512 bytes) but can also be specified in MB or GB by adding a 'M' or 'G' suffix.
- Set partition active (Optional)\\ \\
Some BIOSes might require setting a Slice active. Here we set partition 1 (the Windows Partiton) as the active partition.
Fixit# gpart set -a active -i 1 ad0
- Create partitions (ad0s3a, ad0s3b, ad0s3d)
Fixit# gpart show ad0s3
=> 0 415012248 ad0s3 BSD (198G)
0 415012248 ad0s3 - free - (198G)
Fixit# gpart add -s 1G -t freebsd-ufs ad0s3
ad0s3a added
Fixit# gpart show ad0s3
=> 0 415012248 ad0s3 BSD (198G)
0 2097152 1 freebsd-ufs (1G)
2097152 412915096 - free - (197G)
Fixit# gpart add -s 4G -t freebsd-swap ad0s3
ad0s3b added
Fixit# gpart show ad0s3
=> 0 415012248 ad0s3 BSD (198G)
0 2097152 1 freebsd-ufs (1.0G)
2097152 8380827 2 freebsd-swap (4.0G)
10477979 404534269 - free - (193G)
Fixit# gpart add -t freebsd-zfs ad0s3
ad0s3a added
Fixit# gpart show ad0s3
=> 0 415012248 ad0s3 BSD (198G)
0 2097152 1 freebsd-ufs (1.0G)
2097152 8380827 2 freebsd-swap (4.0G)
10477979 404534269 4 freebsd-zfs (193G)
**Note:**
- While a [[/RootOnZFS#ZFS_Swap_Volume|ZFS Swap Volume]] can be used instead of the freebsd-swap partition, crash dumps can't be created on the ZFS Swap Volume.
- Sizes and offsets are specified in sectors (1 sector is typically 512 bytes) but can also be specified in MB and GB by using a 'M' or 'G' suffix.
- Install boot Manager
Fixit# gpart bootcode -b /mnt2/boot/boot0 ad0
bootcode written to ad0
It's ok if you get an "unknown class" message here, but it you get "failed to install" or the like, you'll need to try again after making sure that nothing is mounted from /dev/ad0.
Fixit# gpart bootcode -b /mnt2/boot/boot ad0s3
bootcode written to ad0s3
This may fail with an "operation not permitted" error message, since the kernel likes to protect critical parts of the disk. If this happens for you, run:
Fixit# sysctl kern.geom.debugflags=0x10
- Load ZFS kernel module
Fixit# kldload /mnt2/boot/kernel/opensolaris.ko
Fixit# kldload /mnt2/boot/kernel/zfs.ko
- Create ZFS Pool zroot
Fixit# mkdir /boot/zfs
Fixit# zpool create zroot /dev/ad0s3d
Fixit# zpool set bootfs=zroot zroot
**Note:**
zroot is the name of the ZFS Pool, it could be anything (i.e. tank, data, ...)
- Create UFS /boot
Fixit# mkdir /zroot/bootdir
Fixit# newfs /dev/ad0s3a
Fixit# mount /dev/ad0s3a /zroot/bootdir
===== Installing FreeBSD to the ZFS filesystem =====
{{page>RootOnZFS/InstallingFreeBSD&nofooter&noeditbtn}}
===== Finish install =====
- Move /zroot/boot into /zroot/bootdir
Fixit# cd /zroot
Fixit# mv boot bootdir/
Fixit# ln -s bootdir/boot /zroot/boot
Fixit# chflags -h sunlink /zroot/boot
- Create /etc/fstab
Fixit# mkdir /zroot/etc
Fixit# cat << EOF > /zroot/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s3a /bootdir ufs rw 0 0
/dev/ad0s3b none swap sw 0 0
EOF
- export LD_LIBRARY_PATH
Fixit# export LD_LIBRARY_PATH=/mnt2/lib
- Unmount all zfs filesystems
Fixit# umount /zroot/bootdir
Fixit# zfs unmount -a
- Change mount points for zroot pool
Fixit# zfs set mountpoint=legacy zroot
Fixit# zfs set mountpoint=/tmp zroot/tmp
Fixit# zfs set mountpoint=/usr zroot/usr
Fixit# zfs set mountpoint=/var zroot/var
- Exit Fixit mode, and then sysinstall. Remove the %%FreeBSD%% install DVD/Memstick and the system will boot using the ZFS root.