1082c6764SWarner Losh#!/bin/sh 2082c6764SWarner Losh 3082c6764SWarner Losh# $FreeBSD$ 4082c6764SWarner Losh 57b4b55e5SIan Leporepassphrase=passphrase 67b4b55e5SIan Leporeiterations=50000 7595deaf7SIan Lepore 8db8b5613SRebecca Cran# The smallest FAT32 filesystem is 33292 KB 9db8b5613SRebecca Cranespsize=33292 10d050cd6bSWarner Losh 11082c6764SWarner Losh# 12082c6764SWarner Losh# Builds all the bat-shit crazy combinations we support booting from, 13082c6764SWarner Losh# at least for amd64. It assume you have a ~sane kernel in /boot/kernel 14082c6764SWarner Losh# and copies that into the ~150MB root images we create (we create the du 15082c6764SWarner Losh# size of the kernel + 20MB 16082c6764SWarner Losh# 17082c6764SWarner Losh# Sad panda sez: this runs as root, but could be userland if someone 18082c6764SWarner Losh# creates userland geli and zfs tools. 19082c6764SWarner Losh# 20db8b5613SRebecca Cran# This assumes an external program install-boot.sh which will install 21082c6764SWarner Losh# the appropriate boot files in the appropriate locations. 22082c6764SWarner Losh# 23082c6764SWarner Losh# These images assume ada0 will be the root image. We should likely 24082c6764SWarner Losh# use labels, but we don't. 25082c6764SWarner Losh# 26db8b5613SRebecca Cran# Assumes you've already rebuilt... maybe bad? Also maybe bad: the env 27082c6764SWarner Losh# vars should likely be conditionally set to allow better automation. 28082c6764SWarner Losh# 29082c6764SWarner Losh 300661cd79SRebecca Cran. $(dirname $0)/install-boot.sh 310661cd79SRebecca Cran 32082c6764SWarner Loshcpsys() { 33082c6764SWarner Losh src=$1 34082c6764SWarner Losh dst=$2 35082c6764SWarner Losh 36082c6764SWarner Losh # Copy kernel + boot loader 37082c6764SWarner Losh (cd $src ; tar cf - .) | (cd $dst; tar xf -) 38082c6764SWarner Losh} 39082c6764SWarner Losh 40082c6764SWarner Loshmk_nogeli_gpt_ufs_legacy() { 41082c6764SWarner Losh src=$1 42082c6764SWarner Losh img=$2 43082c6764SWarner Losh 4422cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 4522cf6021SWarner Losh/dev/ada0p2 / ufs rw 1 1 4622cf6021SWarner LoshEOF 47082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p2 ${src} 48082c6764SWarner Losh mkimg -s gpt -b ${src}/boot/pmbr \ 49082c6764SWarner Losh -p freebsd-boot:=${src}/boot/gptboot \ 50082c6764SWarner Losh -p freebsd-ufs:=${img}.p2 -o ${img} 5122cf6021SWarner Losh rm -f ${src}/etc/fstab 52082c6764SWarner Losh} 53082c6764SWarner Losh 54082c6764SWarner Loshmk_nogeli_gpt_ufs_uefi() { 55082c6764SWarner Losh src=$1 56082c6764SWarner Losh img=$2 57082c6764SWarner Losh 5822cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 5922cf6021SWarner Losh/dev/ada0p2 / ufs rw 1 1 6022cf6021SWarner LoshEOF 610661cd79SRebecca Cran make_esp_file ${img}.p1 ${espsize} ${src}/boot/loader.efi 62082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p2 ${src} 63f438a143SAllan Jude mkimg -s gpt \ 6422cf6021SWarner Losh -p efi:=${img}.p1 \ 65082c6764SWarner Losh -p freebsd-ufs:=${img}.p2 -o ${img} 6622cf6021SWarner Losh rm -f ${src}/etc/fstab 67082c6764SWarner Losh} 68082c6764SWarner Losh 69082c6764SWarner Loshmk_nogeli_gpt_ufs_both() { 70082c6764SWarner Losh src=$1 71082c6764SWarner Losh img=$2 72082c6764SWarner Losh 7322cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 7422cf6021SWarner Losh/dev/ada0p3 / ufs rw 1 1 7522cf6021SWarner LoshEOF 760661cd79SRebecca Cran make_esp_file ${img}.p1 ${espsize} ${src}/boot/loader.efi 77082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p3 ${src} 78082c6764SWarner Losh # p1 is boot for uefi, p2 is boot for gpt, p3 is / 79082c6764SWarner Losh mkimg -b ${src}/boot/pmbr -s gpt \ 80d050cd6bSWarner Losh -p efi:=${img}.p1 \ 81082c6764SWarner Losh -p freebsd-boot:=${src}/boot/gptboot \ 82082c6764SWarner Losh -p freebsd-ufs:=${img}.p3 \ 83082c6764SWarner Losh -o ${img} 8422cf6021SWarner Losh rm -f ${src}/etc/fstab 85082c6764SWarner Losh} 86082c6764SWarner Losh 87082c6764SWarner Loshmk_nogeli_gpt_zfs_legacy() { 88082c6764SWarner Losh src=$1 89082c6764SWarner Losh img=$2 90082c6764SWarner Losh mntpt=$3 91082c6764SWarner Losh geli=$4 92082c6764SWarner Losh scheme=$5 93082c6764SWarner Losh fs=$6 94082c6764SWarner Losh bios=$7 95082c6764SWarner Losh pool=nogeli-gpt-zfs-legacy 96082c6764SWarner Losh 97082c6764SWarner Losh dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 98082c6764SWarner Losh md=$(mdconfig -f ${img}) 99082c6764SWarner Losh gpart create -s gpt ${md} 100082c6764SWarner Losh gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 101082c6764SWarner Losh gpart add -t freebsd-zfs -l root $md 102082c6764SWarner Losh # install-boot will make this bootable 103082c6764SWarner Losh zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 104082c6764SWarner Losh zpool set bootfs=${pool} ${pool} 1052145d0ecSAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 106082c6764SWarner Losh # NB: The online guides go nuts customizing /var and other mountpoints here, no need 107082c6764SWarner Losh cpsys ${src} ${mntpt} 108082c6764SWarner Losh # need to make a couple of tweaks 109d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 110082c6764SWarner Loshzfs_load=YES 111082c6764SWarner Loshopensolaris_load=YES 112082c6764SWarner LoshEOF 113827f1973SIan Lepore cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko 114082c6764SWarner Losh cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 115082c6764SWarner Losh cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 116082c6764SWarner Losh # end tweaks 1172145d0ecSAllan Jude zfs umount -f ${pool}/ROOT/default 1182145d0ecSAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 1192145d0ecSAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 120082c6764SWarner Losh zpool set autoexpand=on ${pool} 121082c6764SWarner Losh zpool export ${pool} 122082c6764SWarner Losh ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 123082c6764SWarner Losh mdconfig -d -u ${md} 124082c6764SWarner Losh} 125082c6764SWarner Losh 126082c6764SWarner Loshmk_nogeli_gpt_zfs_uefi() { 127712b4ca9SAllan Jude src=$1 128712b4ca9SAllan Jude img=$2 129712b4ca9SAllan Jude mntpt=$3 130712b4ca9SAllan Jude geli=$4 131712b4ca9SAllan Jude scheme=$5 132712b4ca9SAllan Jude fs=$6 133712b4ca9SAllan Jude bios=$7 134712b4ca9SAllan Jude pool=nogeli-gpt-zfs-uefi 135712b4ca9SAllan Jude 136712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 137712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 138712b4ca9SAllan Jude gpart create -s gpt ${md} 139db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 140712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 141712b4ca9SAllan Jude # install-boot will make this bootable 142712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 143712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 144712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 145712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 146712b4ca9SAllan Jude cpsys ${src} ${mntpt} 147712b4ca9SAllan Jude # need to make a couple of tweaks 148d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 149712b4ca9SAllan Judezfs_load=YES 150712b4ca9SAllan Judeopensolaris_load=YES 151712b4ca9SAllan JudeEOF 152827f1973SIan Lepore cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko 153712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 154712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 155712b4ca9SAllan Jude # end tweaks 156712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 157712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 158712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 159712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 160712b4ca9SAllan Jude zpool export ${pool} 161712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 162712b4ca9SAllan Jude mdconfig -d -u ${md} 163082c6764SWarner Losh} 164082c6764SWarner Losh 165082c6764SWarner Loshmk_nogeli_gpt_zfs_both() { 166712b4ca9SAllan Jude src=$1 167712b4ca9SAllan Jude img=$2 168712b4ca9SAllan Jude mntpt=$3 169712b4ca9SAllan Jude geli=$4 170712b4ca9SAllan Jude scheme=$5 171712b4ca9SAllan Jude fs=$6 172712b4ca9SAllan Jude bios=$7 173712b4ca9SAllan Jude pool=nogeli-gpt-zfs-both 174712b4ca9SAllan Jude 175712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 176712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 177712b4ca9SAllan Jude gpart create -s gpt ${md} 178db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 179712b4ca9SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 180712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 181712b4ca9SAllan Jude # install-boot will make this bootable 182712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3 183712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 184712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 185712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 186712b4ca9SAllan Jude cpsys ${src} ${mntpt} 187712b4ca9SAllan Jude # need to make a couple of tweaks 188d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 189712b4ca9SAllan Judezfs_load=YES 190712b4ca9SAllan Judeopensolaris_load=YES 191712b4ca9SAllan JudeEOF 192827f1973SIan Lepore cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko 193712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 194712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 195712b4ca9SAllan Jude # end tweaks 196712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 197712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 198712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 199712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 200712b4ca9SAllan Jude zpool export ${pool} 201712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 202712b4ca9SAllan Jude mdconfig -d -u ${md} 203082c6764SWarner Losh} 204082c6764SWarner Losh 205082c6764SWarner Loshmk_nogeli_mbr_ufs_legacy() { 20622cf6021SWarner Losh src=$1 20722cf6021SWarner Losh img=$2 20822cf6021SWarner Losh 20922cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 21022cf6021SWarner Losh/dev/ada0s1a / ufs rw 1 1 21122cf6021SWarner LoshEOF 21222cf6021SWarner Losh makefs -t ffs -B little -s 200m ${img}.s1a ${src} 21322cf6021SWarner Losh mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1 214f438a143SAllan Jude mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img} 21522cf6021SWarner Losh rm -f ${src}/etc/fstab 216082c6764SWarner Losh} 217082c6764SWarner Losh 218082c6764SWarner Loshmk_nogeli_mbr_ufs_uefi() { 219f438a143SAllan Jude src=$1 220f438a143SAllan Jude img=$2 221f438a143SAllan Jude 222f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 223c7940ca2SIan Lepore/dev/ada0s2a / ufs rw 1 1 224f438a143SAllan JudeEOF 2250661cd79SRebecca Cran make_esp_file ${img}.s1 ${espsize} ${src}/boot/loader.efi 226f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 227f438a143SAllan Jude mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2 228f438a143SAllan Jude mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 229f438a143SAllan Jude rm -f ${src}/etc/fstab 230082c6764SWarner Losh} 231082c6764SWarner Losh 232082c6764SWarner Loshmk_nogeli_mbr_ufs_both() { 233f438a143SAllan Jude src=$1 234f438a143SAllan Jude img=$2 235f438a143SAllan Jude 236f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 237c7940ca2SIan Lepore/dev/ada0s2a / ufs rw 1 1 238f438a143SAllan JudeEOF 2390661cd79SRebecca Cran make_esp_file ${img}.s1 ${espsize} ${src}/boot/loader.efi 240f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 241f438a143SAllan Jude mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2 242f438a143SAllan Jude mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 243f438a143SAllan Jude rm -f ${src}/etc/fstab 244082c6764SWarner Losh} 245082c6764SWarner Losh 246082c6764SWarner Loshmk_nogeli_mbr_zfs_legacy() { 247f438a143SAllan Jude src=$1 248f438a143SAllan Jude img=$2 249f438a143SAllan Jude mntpt=$3 250f438a143SAllan Jude geli=$4 251f438a143SAllan Jude scheme=$5 252f438a143SAllan Jude fs=$6 253f438a143SAllan Jude bios=$7 254f438a143SAllan Jude pool=nogeli-mbr-zfs-legacy 255f438a143SAllan Jude 256f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 257f438a143SAllan Jude md=$(mdconfig -f ${img}) 258f438a143SAllan Jude gpart create -s mbr ${md} 259f438a143SAllan Jude gpart add -t freebsd ${md} 260f438a143SAllan Jude gpart set -a active -i 1 ${md} 261f438a143SAllan Jude gpart create -s bsd ${md}s1 262f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s1 263f438a143SAllan Jude # install-boot will make this bootable 264f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a 265f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 266f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 267f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 268f438a143SAllan Jude cpsys ${src} ${mntpt} 269f438a143SAllan Jude # need to make a couple of tweaks 270d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 271f438a143SAllan Judezfs_load=YES 272f438a143SAllan Judeopensolaris_load=YES 273f438a143SAllan JudeEOF 274827f1973SIan Lepore cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko 275f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 276f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 277f438a143SAllan Jude # end tweaks 278f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 279f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 280f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 281f438a143SAllan Jude zpool set autoexpand=on ${pool} 282f438a143SAllan Jude zpool export ${pool} 283f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 284f438a143SAllan Jude mdconfig -d -u ${md} 285082c6764SWarner Losh} 286082c6764SWarner Losh 287082c6764SWarner Loshmk_nogeli_mbr_zfs_uefi() { 288f438a143SAllan Jude src=$1 289f438a143SAllan Jude img=$2 290f438a143SAllan Jude mntpt=$3 291f438a143SAllan Jude geli=$4 292f438a143SAllan Jude scheme=$5 293f438a143SAllan Jude fs=$6 294f438a143SAllan Jude bios=$7 295f438a143SAllan Jude pool=nogeli-mbr-zfs-uefi 296f438a143SAllan Jude 297f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 298f438a143SAllan Jude md=$(mdconfig -f ${img}) 299f438a143SAllan Jude gpart create -s mbr ${md} 300db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k ${md} 301f438a143SAllan Jude gpart add -t freebsd ${md} 302f438a143SAllan Jude gpart set -a active -i 2 ${md} 303f438a143SAllan Jude gpart create -s bsd ${md}s2 304f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 305f438a143SAllan Jude # install-boot will make this bootable 306f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 307f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 308f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 309f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 310f438a143SAllan Jude cpsys ${src} ${mntpt} 311f438a143SAllan Jude # need to make a couple of tweaks 312d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 313f438a143SAllan Judezfs_load=YES 314f438a143SAllan Judeopensolaris_load=YES 315f438a143SAllan JudeEOF 316827f1973SIan Lepore cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko 317f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 318f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 319f438a143SAllan Jude # end tweaks 320f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 321f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 322f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 323f438a143SAllan Jude zpool set autoexpand=on ${pool} 324f438a143SAllan Jude zpool export ${pool} 325f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 326f438a143SAllan Jude mdconfig -d -u ${md} 327082c6764SWarner Losh} 328082c6764SWarner Losh 329082c6764SWarner Loshmk_nogeli_mbr_zfs_both() { 330f438a143SAllan Jude src=$1 331f438a143SAllan Jude img=$2 332f438a143SAllan Jude mntpt=$3 333f438a143SAllan Jude geli=$4 334f438a143SAllan Jude scheme=$5 335f438a143SAllan Jude fs=$6 336f438a143SAllan Jude bios=$7 337f438a143SAllan Jude pool=nogeli-mbr-zfs-both 338f438a143SAllan Jude 339f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 340f438a143SAllan Jude md=$(mdconfig -f ${img}) 341f438a143SAllan Jude gpart create -s mbr ${md} 342db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k ${md} 343f438a143SAllan Jude gpart add -t freebsd ${md} 344f438a143SAllan Jude gpart set -a active -i 2 ${md} 345f438a143SAllan Jude gpart create -s bsd ${md}s2 346f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 347f438a143SAllan Jude # install-boot will make this bootable 348f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 349f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 350f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 351f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 352f438a143SAllan Jude cpsys ${src} ${mntpt} 353f438a143SAllan Jude # need to make a couple of tweaks 354d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 355f438a143SAllan Judezfs_load=YES 356f438a143SAllan Judeopensolaris_load=YES 357f438a143SAllan JudeEOF 358827f1973SIan Lepore cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko 359f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 360f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 361f438a143SAllan Jude # end tweaks 362f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 363f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 364f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 365f438a143SAllan Jude zpool set autoexpand=on ${pool} 366f438a143SAllan Jude zpool export ${pool} 367f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 368f438a143SAllan Jude mdconfig -d -u ${md} 369082c6764SWarner Losh} 370082c6764SWarner Losh 371082c6764SWarner Loshmk_geli_gpt_ufs_legacy() { 372f438a143SAllan Jude src=$1 373f438a143SAllan Jude img=$2 374f438a143SAllan Jude mntpt=$3 375f438a143SAllan Jude geli=$4 376f438a143SAllan Jude scheme=$5 377f438a143SAllan Jude fs=$6 378f438a143SAllan Jude bios=$7 379f438a143SAllan Jude 380f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 381f438a143SAllan Jude md=$(mdconfig -f ${img}) 382f438a143SAllan Jude gpart create -s gpt ${md} 383f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 384f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 385f438a143SAllan Jude # install-boot will make this bootable 386595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 387595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 388f438a143SAllan Jude newfs /dev/${md}p2.eli 389f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 390f438a143SAllan Jude cpsys ${src} ${mntpt} 391f438a143SAllan Jude # need to make a couple of tweaks 392f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 393f438a143SAllan Judegeom_eli_load=YES 394f438a143SAllan JudeEOF 395f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 396f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 397f438a143SAllan JudeEOF 398f438a143SAllan Jude 399f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 400f438a143SAllan Jude # end tweaks 401f438a143SAllan Jude umount -f ${mntpt} 402f438a143SAllan Jude geli detach ${md}p2 403f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 404f438a143SAllan Jude mdconfig -d -u ${md} 405082c6764SWarner Losh} 406082c6764SWarner Losh 407082c6764SWarner Loshmk_geli_gpt_ufs_uefi() { 408f438a143SAllan Jude src=$1 409f438a143SAllan Jude img=$2 410f438a143SAllan Jude mntpt=$3 411f438a143SAllan Jude geli=$4 412f438a143SAllan Jude scheme=$5 413f438a143SAllan Jude fs=$6 414f438a143SAllan Jude bios=$7 415f438a143SAllan Jude 416f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 417f438a143SAllan Jude md=$(mdconfig -f ${img}) 418f438a143SAllan Jude gpart create -s gpt ${md} 419db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 420f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 421f438a143SAllan Jude # install-boot will make this bootable 422595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 423595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 424f438a143SAllan Jude newfs /dev/${md}p2.eli 425f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 426f438a143SAllan Jude cpsys ${src} ${mntpt} 427f438a143SAllan Jude # need to make a couple of tweaks 428f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 429f438a143SAllan Judegeom_eli_load=YES 430f438a143SAllan JudeEOF 431f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 432f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 433f438a143SAllan JudeEOF 434f438a143SAllan Jude 435f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 436f438a143SAllan Jude # end tweaks 437f438a143SAllan Jude umount -f ${mntpt} 438f438a143SAllan Jude geli detach ${md}p2 439f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 440f438a143SAllan Jude mdconfig -d -u ${md} 441082c6764SWarner Losh} 442082c6764SWarner Losh 443082c6764SWarner Loshmk_geli_gpt_ufs_both() { 444f438a143SAllan Jude src=$1 445f438a143SAllan Jude img=$2 446f438a143SAllan Jude mntpt=$3 447f438a143SAllan Jude geli=$4 448f438a143SAllan Jude scheme=$5 449f438a143SAllan Jude fs=$6 450f438a143SAllan Jude bios=$7 451f438a143SAllan Jude 452f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 453f438a143SAllan Jude md=$(mdconfig -f ${img}) 454f438a143SAllan Jude gpart create -s gpt ${md} 455db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 456f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 457f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 458f438a143SAllan Jude # install-boot will make this bootable 459595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3 460595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p3 461f438a143SAllan Jude newfs /dev/${md}p3.eli 462f438a143SAllan Jude mount /dev/${md}p3.eli ${mntpt} 463f438a143SAllan Jude cpsys ${src} ${mntpt} 464f438a143SAllan Jude # need to make a couple of tweaks 465f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 466f438a143SAllan Judegeom_eli_load=YES 467f438a143SAllan JudeEOF 468f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 469f438a143SAllan Jude/dev/ada0p3.eli / ufs rw 1 1 470f438a143SAllan JudeEOF 471f438a143SAllan Jude 472f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 473f438a143SAllan Jude # end tweaks 474f438a143SAllan Jude umount -f ${mntpt} 475f438a143SAllan Jude geli detach ${md}p3 476f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 477f438a143SAllan Jude mdconfig -d -u ${md} 478082c6764SWarner Losh} 479082c6764SWarner Losh 480082c6764SWarner Loshmk_geli_gpt_zfs_legacy() { 481f438a143SAllan Jude src=$1 482f438a143SAllan Jude img=$2 483f438a143SAllan Jude mntpt=$3 484f438a143SAllan Jude geli=$4 485f438a143SAllan Jude scheme=$5 486f438a143SAllan Jude fs=$6 487f438a143SAllan Jude bios=$7 488f438a143SAllan Jude pool=geli-gpt-zfs-legacy 489f438a143SAllan Jude 490*0c0ffba5SIan Lepore # Note that in this flavor we create an empty p2 ufs partition, and put 491*0c0ffba5SIan Lepore # the bootable zfs stuff on p3, just to test the ability of the zfs probe 492*0c0ffba5SIan Lepore # probe routines to find a pool on a partition other than the first one. 493*0c0ffba5SIan Lepore 494*0c0ffba5SIan Lepore dd if=/dev/zero of=${img} count=1 seek=$(( 300 * 1024 * 1024 / 512 )) 495f438a143SAllan Jude md=$(mdconfig -f ${img}) 496f438a143SAllan Jude gpart create -s gpt ${md} 497f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 498*0c0ffba5SIan Lepore gpart add -t freebsd-ufs -s 100m ${md} 499f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 500f438a143SAllan Jude # install-boot will make this bootable 501*0c0ffba5SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3 502*0c0ffba5SIan Lepore echo ${passphrase} | geli attach -j - ${md}p3 503*0c0ffba5SIan Lepore zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli 504f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 505f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 506f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 507f438a143SAllan Jude cpsys ${src} ${mntpt} 508f438a143SAllan Jude # need to make a couple of tweaks 509d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 510f438a143SAllan Judezfs_load=YES 511f438a143SAllan Judeopensolaris_load=YES 512f438a143SAllan Judegeom_eli_load=YES 513f438a143SAllan JudeEOF 514827f1973SIan Lepore cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko 515f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 516f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 517f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 518f438a143SAllan Jude # end tweaks 519f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 520f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 521f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 522f438a143SAllan Jude zpool set autoexpand=on ${pool} 523f438a143SAllan Jude zpool export ${pool} 524*0c0ffba5SIan Lepore geli detach ${md}p3 525f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 526f438a143SAllan Jude mdconfig -d -u ${md} 527082c6764SWarner Losh} 528082c6764SWarner Losh 529082c6764SWarner Loshmk_geli_gpt_zfs_uefi() { 530f438a143SAllan Jude src=$1 531f438a143SAllan Jude img=$2 532f438a143SAllan Jude mntpt=$3 533f438a143SAllan Jude geli=$4 534f438a143SAllan Jude scheme=$5 535f438a143SAllan Jude fs=$6 536f438a143SAllan Jude bios=$7 537f438a143SAllan Jude pool=geli-gpt-zfs-uefi 538f438a143SAllan Jude 539*0c0ffba5SIan Lepore # Note that in this flavor we create an empty p2 ufs partition, and put 540*0c0ffba5SIan Lepore # the bootable zfs stuff on p3, just to test the ability of the zfs probe 541*0c0ffba5SIan Lepore # probe routines to find a pool on a partition other than the first one. 542*0c0ffba5SIan Lepore 543*0c0ffba5SIan Lepore dd if=/dev/zero of=${img} count=1 seek=$(( 300 * 1024 * 1024 / 512 )) 544f438a143SAllan Jude md=$(mdconfig -f ${img}) 545f438a143SAllan Jude gpart create -s gpt ${md} 546db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 547*0c0ffba5SIan Lepore gpart add -t freebsd-ufs -s 100m ${md} 548f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 549f438a143SAllan Jude # install-boot will make this bootable 550*0c0ffba5SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3 551*0c0ffba5SIan Lepore echo ${passphrase} | geli attach -j - ${md}p3 552*0c0ffba5SIan Lepore zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli 553f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 554f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 555f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 556f438a143SAllan Jude cpsys ${src} ${mntpt} 557f438a143SAllan Jude # need to make a couple of tweaks 558d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 559f438a143SAllan Judezfs_load=YES 560f438a143SAllan Judeopensolaris_load=YES 561f438a143SAllan Judegeom_eli_load=YES 562f438a143SAllan JudeEOF 563827f1973SIan Lepore cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko 564f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 565f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 566f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 567f438a143SAllan Jude # end tweaks 568f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 569f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 570f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 571f438a143SAllan Jude zpool set autoexpand=on ${pool} 572f438a143SAllan Jude zpool export ${pool} 573*0c0ffba5SIan Lepore geli detach ${md}p3 574f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 575f438a143SAllan Jude mdconfig -d -u ${md} 576082c6764SWarner Losh} 577082c6764SWarner Losh 578082c6764SWarner Loshmk_geli_gpt_zfs_both() { 579f438a143SAllan Jude src=$1 580f438a143SAllan Jude img=$2 581f438a143SAllan Jude mntpt=$3 582f438a143SAllan Jude geli=$4 583f438a143SAllan Jude scheme=$5 584f438a143SAllan Jude fs=$6 585f438a143SAllan Jude bios=$7 586f438a143SAllan Jude pool=geli-gpt-zfs-both 587f438a143SAllan Jude 588f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 589f438a143SAllan Jude md=$(mdconfig -f ${img}) 590f438a143SAllan Jude gpart create -s gpt ${md} 591db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 592f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 593f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 594f438a143SAllan Jude # install-boot will make this bootable 595595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3 596595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p3 597f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli 598f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 599f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 600f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 601f438a143SAllan Jude cpsys ${src} ${mntpt} 602f438a143SAllan Jude # need to make a couple of tweaks 603f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 604f438a143SAllan Judezfs_load=YES 605f438a143SAllan Judeopensolaris_load=YES 606f438a143SAllan Judegeom_eli_load=YES 607f438a143SAllan JudeEOF 608827f1973SIan Lepore cp /boot/kernel/acl_nfs4.ko ${mntpt}/boot/kernel/acl_nfs4.ko 609f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 610f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 611f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 612f438a143SAllan Jude # end tweaks 613f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 614f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 615f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 616f438a143SAllan Jude zpool set autoexpand=on ${pool} 617f438a143SAllan Jude zpool export ${pool} 618f438a143SAllan Jude geli detach ${md}p3 619f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 620f438a143SAllan Jude mdconfig -d -u ${md} 621082c6764SWarner Losh} 622082c6764SWarner Losh 623f438a143SAllan Jude# GELI+MBR is not a valid configuration 624082c6764SWarner Loshmk_geli_mbr_ufs_legacy() { 625082c6764SWarner Losh} 626082c6764SWarner Losh 627082c6764SWarner Loshmk_geli_mbr_ufs_uefi() { 628082c6764SWarner Losh} 629082c6764SWarner Losh 630082c6764SWarner Loshmk_geli_mbr_ufs_both() { 631082c6764SWarner Losh} 632082c6764SWarner Losh 633082c6764SWarner Loshmk_geli_mbr_zfs_legacy() { 634082c6764SWarner Losh} 635082c6764SWarner Losh 636082c6764SWarner Loshmk_geli_mbr_zfs_uefi() { 637082c6764SWarner Losh} 638082c6764SWarner Losh 639082c6764SWarner Loshmk_geli_mbr_zfs_both() { 640082c6764SWarner Losh} 641082c6764SWarner Losh 642082c6764SWarner Losh# iso 643082c6764SWarner Losh# pxeldr 644082c6764SWarner Losh# u-boot 64522cf6021SWarner Losh# powerpc 64622cf6021SWarner Losh 647ba8d50d0SMarius Stroblmk_sparc64_nogeli_vtoc8_ufs_ofw() { 648ba8d50d0SMarius Strobl src=$1 649ba8d50d0SMarius Strobl img=$2 650ba8d50d0SMarius Strobl mntpt=$3 651ba8d50d0SMarius Strobl geli=$4 652ba8d50d0SMarius Strobl scheme=$5 653ba8d50d0SMarius Strobl fs=$6 654ba8d50d0SMarius Strobl bios=$7 655ba8d50d0SMarius Strobl 656ba8d50d0SMarius Strobl cat > ${src}/etc/fstab <<EOF 657ba8d50d0SMarius Strobl/dev/ada0a / ufs rw 1 1 658ba8d50d0SMarius StroblEOF 659ba8d50d0SMarius Strobl makefs -t ffs -B big -s 200m ${img} ${src} 660ba8d50d0SMarius Strobl md=$(mdconfig -f ${img}) 661ba8d50d0SMarius Strobl # For non-native builds, ensure that geom_part(4) supports VTOC8. 662ba8d50d0SMarius Strobl kldload geom_part_vtoc8.ko 663ba8d50d0SMarius Strobl gpart create -s VTOC8 ${md} 664ba8d50d0SMarius Strobl gpart add -t freebsd-ufs ${md} 665ba8d50d0SMarius Strobl ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 666ba8d50d0SMarius Strobl mdconfig -d -u ${md} 667ba8d50d0SMarius Strobl rm -f ${src}/etc/fstab 668ba8d50d0SMarius Strobl} 669ba8d50d0SMarius Strobl 6707b4b55e5SIan Leporeqser="-serial telnet::4444,server -nographic" 67122cf6021SWarner Losh 67222cf6021SWarner Losh# https://wiki.freebsd.org/QemuRecipes 67322cf6021SWarner Losh# aarch64 67422cf6021SWarner Loshqemu_aarch64_uefi() 67522cf6021SWarner Losh{ 67622cf6021SWarner Losh img=$1 67722cf6021SWarner Losh sh=$2 67822cf6021SWarner Losh 67922cf6021SWarner Losh echo "qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt \ 68022cf6021SWarner Losh -bios QEMU_EFI.fd ${qser} \ 68122cf6021SWarner Losh -drive if=none,file=${img},id=hd0 \ 68222cf6021SWarner Losh -device virtio-blk-device,drive=hd0" > $sh 683dfe34ceaSIan Lepore chmod 755 $sh 68422cf6021SWarner Losh# https://wiki.freebsd.org/arm64/QEMU also has 68522cf6021SWarner Losh# -device virtio-net-device,netdev=net0 68622cf6021SWarner Losh# -netdev user,id=net0 68722cf6021SWarner Losh} 68822cf6021SWarner Losh 68922cf6021SWarner Losh# Amd64 qemu 69022cf6021SWarner Loshqemu_amd64_legacy() 69122cf6021SWarner Losh{ 69222cf6021SWarner Losh img=$1 69322cf6021SWarner Losh sh=$2 69422cf6021SWarner Losh 69548cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh 696dfe34ceaSIan Lepore chmod 755 $sh 69722cf6021SWarner Losh} 69822cf6021SWarner Losh 69922cf6021SWarner Loshqemu_amd64_uefi() 70022cf6021SWarner Losh{ 70122cf6021SWarner Losh img=$1 70222cf6021SWarner Losh sh=$2 70322cf6021SWarner Losh 70448cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh 705dfe34ceaSIan Lepore chmod 755 $sh 70622cf6021SWarner Losh} 70722cf6021SWarner Losh 70822cf6021SWarner Loshqemu_amd64_both() 70922cf6021SWarner Losh{ 71022cf6021SWarner Losh img=$1 71122cf6021SWarner Losh sh=$2 71222cf6021SWarner Losh 71348cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh 71448cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh 715dfe34ceaSIan Lepore chmod 755 $sh 71622cf6021SWarner Losh} 71722cf6021SWarner Losh 71822cf6021SWarner Losh# arm 71922cf6021SWarner Losh# nothing listed? 72022cf6021SWarner Losh 72122cf6021SWarner Losh# i386 72222cf6021SWarner Loshqemu_i386_legacy() 72322cf6021SWarner Losh{ 72422cf6021SWarner Losh img=$1 72522cf6021SWarner Losh sh=$2 72622cf6021SWarner Losh 72722cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 728dfe34ceaSIan Lepore chmod 755 $sh 72922cf6021SWarner Losh} 73022cf6021SWarner Losh 73122cf6021SWarner Losh# Not yet supported 73222cf6021SWarner Loshqemu_i386_uefi() 73322cf6021SWarner Losh{ 73422cf6021SWarner Losh img=$1 73522cf6021SWarner Losh sh=$2 73622cf6021SWarner Losh 73722cf6021SWarner Losh echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh 738dfe34ceaSIan Lepore chmod 755 $sh 73922cf6021SWarner Losh} 74022cf6021SWarner Losh 74122cf6021SWarner Losh# Needs UEFI to be supported 74222cf6021SWarner Loshqemu_i386_both() 74322cf6021SWarner Losh{ 74422cf6021SWarner Losh img=$1 74522cf6021SWarner Losh sh=$2 74622cf6021SWarner Losh 74722cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 748712b4ca9SAllan Jude echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" >> $sh 749dfe34ceaSIan Lepore chmod 755 $sh 75022cf6021SWarner Losh} 75122cf6021SWarner Losh 752432b4921SIan Leporemake_one_image() 753432b4921SIan Lepore{ 754432b4921SIan Lepore local arch=${1?} 755432b4921SIan Lepore local geli=${2?} 756432b4921SIan Lepore local scheme=${3?} 757432b4921SIan Lepore local fs=${4?} 758432b4921SIan Lepore local bios=${5?} 759432b4921SIan Lepore 760432b4921SIan Lepore # Create sparse file and mount newly created filesystem(s) on it 761432b4921SIan Lepore img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 762432b4921SIan Lepore sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 763432b4921SIan Lepore echo "vvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvv" 764432b4921SIan Lepore rm -f ${img}* 765432b4921SIan Lepore eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 766432b4921SIan Lepore eval qemu_${arch}_${bios} ${img} ${sh} 767432b4921SIan Lepore [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 768432b4921SIan Lepore echo "^^^^^^^^^^^^^^ Created $img ^^^^^^^^^^^^^^^" 769432b4921SIan Lepore} 770432b4921SIan Lepore 77122cf6021SWarner Losh# mips 77222cf6021SWarner Losh# qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048 77322cf6021SWarner Losh 77422cf6021SWarner Losh# Powerpc -- doesn't work but maybe it would enough for testing -- needs details 77522cf6021SWarner Losh# powerpc64 77622cf6021SWarner Losh# qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw 77722cf6021SWarner Losh 77822cf6021SWarner Losh# sparc64 77922cf6021SWarner Losh# qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw 78022cf6021SWarner Losh 781082c6764SWarner Losh# Misc variables 782082c6764SWarner LoshSRCTOP=$(make -v SRCTOP) 783082c6764SWarner Loshcd ${SRCTOP}/stand 784082c6764SWarner LoshOBJDIR=$(make -v .OBJDIR) 785082c6764SWarner LoshIMGDIR=${OBJDIR}/boot-images 786082c6764SWarner Loshmkdir -p ${IMGDIR} 787082c6764SWarner LoshMNTPT=$(mktemp -d /tmp/stand-test.XXXXXX) 788082c6764SWarner Losh 789082c6764SWarner Losh# Setup the installed tree... 790082c6764SWarner LoshDESTDIR=${OBJDIR}/boot-tree 791082c6764SWarner Loshrm -rf ${DESTDIR} 792082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/defaults 793082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/kernel 794082c6764SWarner Loshcp /boot/kernel/kernel ${DESTDIR}/boot/kernel 795328884aeSWarner Loshecho -h -D -S115200 > ${DESTDIR}/boot.config 796d050cd6bSWarner Loshcat > ${DESTDIR}/boot/loader.conf <<EOF 797d050cd6bSWarner Loshconsole=comconsole 798d050cd6bSWarner Loshcomconsole_speed=115200 7991c70f60eSWarner Loshboot_serial=yes 8001c70f60eSWarner Loshboot_multicons=yes 801d050cd6bSWarner LoshEOF 802082c6764SWarner Losh# XXX 803082c6764SWarner Loshcp /boot/device.hints ${DESTDIR}/boot/device.hints 804082c6764SWarner Losh# Assume we're already built 805f576caacSIan Leporemake install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_AS_USER=yes WITHOUT_DEBUG_FILES=yes 806f576caacSIan Leporeif [ $? -ne 0 ]; then 807f576caacSIan Lepore echo "make install failed" 808f576caacSIan Lepore exit 1 809f576caacSIan Leporefi 81022cf6021SWarner Losh# Copy init, /bin/sh, minimal libraries and testing /etc/rc 81122cf6021SWarner Loshmkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \ 81222cf6021SWarner Losh ${DESTDIR}/lib ${DESTDIR}/libexec \ 81322cf6021SWarner Losh ${DESTDIR}/etc ${DESTDIR}/dev 814d050cd6bSWarner Loshfor f in /sbin/halt /sbin/init /bin/sh /sbin/sysctl $(ldd /bin/sh | awk 'NF == 4 { print $3; }') /libexec/ld-elf.so.1; do 815082c6764SWarner Losh cp $f ${DESTDIR}/$f 816082c6764SWarner Loshdone 81722cf6021SWarner Loshcat > ${DESTDIR}/etc/rc <<EOF 81822cf6021SWarner Losh#!/bin/sh 81922cf6021SWarner Losh 820d050cd6bSWarner Loshsysctl machdep.bootmethod 82122cf6021SWarner Loshecho "RC COMMAND RUNNING -- SUCCESS!!!!!" 82222cf6021SWarner Loshhalt -p 82322cf6021SWarner LoshEOF 824082c6764SWarner Losh 825432b4921SIan Lepore# If we were given exactly 5 args, go make that one image. 826432b4921SIan Lepore 827432b4921SIan Leporeif [ $# -eq 5 ]; then 828432b4921SIan Lepore make_one_image $* 829432b4921SIan Lepore exit 830432b4921SIan Leporefi 831432b4921SIan Lepore 832082c6764SWarner Losh# OK. Let the games begin 833082c6764SWarner Losh 83422cf6021SWarner Loshfor arch in amd64; do 835082c6764SWarner Losh for geli in nogeli geli; do 836082c6764SWarner Losh for scheme in gpt mbr; do 837082c6764SWarner Losh for fs in ufs zfs; do 838082c6764SWarner Losh for bios in legacy uefi both; do 839432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 840082c6764SWarner Losh done 841082c6764SWarner Losh done 842082c6764SWarner Losh done 843082c6764SWarner Losh done 84422cf6021SWarner Loshdone 845082c6764SWarner Losh 846082c6764SWarner Loshrmdir ${MNTPT} 84722cf6021SWarner Losh 84822cf6021SWarner Loshexit 0 84922cf6021SWarner Losh 85022cf6021SWarner Losh# Notes for the future 85122cf6021SWarner Losh 85222cf6021SWarner Loshfor arch in i386; do 85322cf6021SWarner Losh for geli in nogeli geli; do 85422cf6021SWarner Losh for scheme in gpt mbr; do 85522cf6021SWarner Losh for fs in ufs zfs; do 85622cf6021SWarner Losh for bios in legacy; do 857432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 85822cf6021SWarner Losh done 85922cf6021SWarner Losh done 86022cf6021SWarner Losh done 86122cf6021SWarner Losh done 86222cf6021SWarner Loshdone 86322cf6021SWarner Losh 86422cf6021SWarner Loshfor arch in arm aarch64; do 86522cf6021SWarner Losh for scheme in gpt mbr; do 86622cf6021SWarner Losh fs=ufs 86722cf6021SWarner Losh for bios in uboot efi; do 868432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 86922cf6021SWarner Losh done 87022cf6021SWarner Losh done 87122cf6021SWarner Loshdone 87222cf6021SWarner Losh 87322cf6021SWarner Loshfor arch in powerpc powerpc64; do 87422cf6021SWarner Losh for scheme in ppc-wtf; do 87522cf6021SWarner Losh fs=ufs 87622cf6021SWarner Losh for bios in ofw uboot chrp; do 877432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 87822cf6021SWarner Losh done 87922cf6021SWarner Losh done 88022cf6021SWarner Loshdone 88122cf6021SWarner Losh 88222cf6021SWarner Loshfor arch in sparc64; do 883ba8d50d0SMarius Strobl for geli in nogeli; do 884ba8d50d0SMarius Strobl for scheme in vtoc8; do 885ba8d50d0SMarius Strobl for fs in ufs; do 88622cf6021SWarner Losh for bios in ofw; do 887432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 88822cf6021SWarner Losh done 88922cf6021SWarner Losh done 89022cf6021SWarner Losh done 891ba8d50d0SMarius Strobl done 892ba8d50d0SMarius Strobldone 893