9 # check if the zpool already exists
11 ZPOOL_EXISTS=` zpool list -H | cut -f 1 | grep "${ZPOOL}"`
12 if [ "${?}" -ne 1 ]; then
13 echo "One zpool called ${ZPOOL} already exists, you have to destroy it first:"
14 echo " # zpool destroy ${ZPOOL}"
18 # check if the disk is ok for writing
20 echo checking sanity ${DESTDISK}
22 gpart show ${DESTDISK} 1>/dev/null
23 if [ "${?}" -eq 0 ]; then
25 gpart destroy -F ${DESTDISK}
26 if [ "${?}" -ne 0 ]; then
27 echo unable to reset ${DESTDISK}
32 echo partitioning ${DESTDISK}
35 gpart create -s gpt ${DESTDISK}
36 gpart add -a 4k -t freebsd-boot -s 512k -l gptboot0 ${DESTDISK}
37 gpart add -a 1m -s 32G -t freebsd-swap -l swap0 ${DESTDISK}
38 gpart add -a 1m -t freebsd-zfs -l zfs0 ${DESTDISK}
39 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ${DESTDISK}
40 gpart set -a active ${DESTDISK}
42 gpart show ${DESTDISK}
44 sysctl vfs.zfs.min_auto_ashift=12
46 echo set up zfs pool: ${ZPOOL} alt mount: ${DESTDIR}
47 echo =================
49 zpool create -m none -f -R ${DESTDIR} ${ZPOOL} ${DESTDISK}p3 ada1
50 if [ "${?}" -ne 0 ]; then
51 echo "unable to create zpool"
56 for I in ROOT VAR HOME DATA; do
57 zfs create -o mountpoint=none -o canmount=off ${ZPOOL}/${I}
60 zfs create -o atime=off -o mountpoint=/ ${ZPOOL}/ROOT/master
62 zfs create -o mountpoint=/usr/obj ${ZPOOL}/ROOT/obj
63 zfs create -o compression=off -o mountpoint=/usr/src ${ZPOOL}/ROOT/src
64 zfs create -o mountpoint=/usr/doc -o compression=on ${ZPOOL}/ROOT/doc
65 # useless ? as far /tmp mountpoint will be mounted by tmpfs
66 zfs create -o mountpoint=/tmp ${ZPOOL}/ROOT/tmp
68 zfs create -o mountpoint=/usr/local ${ZPOOL}/LOCAL
69 zfs create -o mountpoint=/usr/local/etc ${ZPOOL}/LOCAL/config
72 zfs create -o mountpoint=/var ${ZPOOL}/VAR/master
73 zfs create -o mountpoint=/var/crash ${ZPOOL}/VAR/crash
74 zfs create -o exec=off -o setuid=off -o mountpoint=/var/db ${ZPOOL}/VAR/db
75 zfs create -o compression=lz4 -o exec=on -o setuid=off -o mountpoint=/var/db/pkg ${ZPOOL}/VAR/db/pkg
76 zfs create -o compression=on -o exec=off -o setuid=off -o mountpoint=/var/mail ${ZPOOL}/VAR/mail
77 zfs create -o compression=on -o exec=off -o setuid=off -o mountpoint=/var/log ${ZPOOL}/VAR/log
78 zfs create -o exec=off -o setuid=off -o mountpoint=/var/run ${ZPOOL}/VAR/run
79 zfs create -o exec=off -o setuid=off -o mountpoint=/var/tmp ${ZPOOL}/VAR/tmp
81 zfs create -o mountpoint=/usr/home ${ZPOOL}/HOME/master
83 zpool set bootfs=${ZPOOL}/ROOT/master ${ZPOOL}
85 chmod 1777 ${DESTDIR}/tmp ${DESTDIR}/var/tmp
90 if [ "${?}" -ne 0 ]; then
91 echo zfs mountpoints arent ready
95 echo Fetching and Extracting base files into ${DESTDIR}
96 echo =======================================
99 for I in base.txz kernel.txz lib32.txz; do
100 fetch http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/11.2-RELEASE/${I}
101 tar --unlink -pJxf ${I} -C ${DESTDIR}
104 echo writing configuration files
105 echo ==========================
107 cat << EOF >> ${DESTDIR}/etc/fstab
108 /dev/${DESTDISK}p2 none swap sw 0 0
109 tmpfs /tmp tmpfs rw,mode=1777 0 0
112 cat << EOF >> ${DESTDIR}/boot/loader.conf
117 cat << EOF >> ${DESTDIR}/boot/loader.conf.local
118 vfs.root.mountfrom="zfs:${ZPOOL}/ROOT/master"
121 cat << EOF >> ${DESTDIR}/etc/rc.conf
123 sendmail_enable="NONE"
124 kld_list="vmm cuse4bsd cpuctl filemon"
126 # Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
132 for I in resolv.conf rc.conf.local; do
133 if [ -r "${I}" ]; then
135 install -o root -g wheel -m 0644 ${I} ${DESTDIR}/etc/
139 for I in loader.conf.local; do
140 if [ -r "${I}" ]; then
142 install -o root -g wheel -m 0644 ${I} ${DESTDIR}/boot/
146 echo installing rc.conf.d
147 install -o root -g wheel -d -m 0755 ${DESTDIR}/etc/rc.conf.d
148 if [ -d "./rc.conf.d" ]; then
149 echo installing files into rc.conf.d
150 install -o root -g wheel -m 0644 ./rc.conf.d/* ${DESTDIR}/etc/rc.conf.d/
153 chroot ${DESTDIR} passwd
154 chroot ${DESTDIR} adduser
156 read -p "Do you wish to open a shell ?" yn
160 * ) echo "Please answer yes or no.";;
162 chroot ${DESTDIR} tcsh