====== 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.