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 30*0661cd79SRebecca Cran. $(dirname $0)/install-boot.sh 31*0661cd79SRebecca 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 61*0661cd79SRebecca 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 76*0661cd79SRebecca 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 113082c6764SWarner Losh cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 114082c6764SWarner Losh cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 115082c6764SWarner Losh # end tweaks 1162145d0ecSAllan Jude zfs umount -f ${pool}/ROOT/default 1172145d0ecSAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 1182145d0ecSAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 119082c6764SWarner Losh zpool set autoexpand=on ${pool} 120082c6764SWarner Losh zpool export ${pool} 121082c6764SWarner Losh ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 122082c6764SWarner Losh mdconfig -d -u ${md} 123082c6764SWarner Losh} 124082c6764SWarner Losh 125082c6764SWarner Loshmk_nogeli_gpt_zfs_uefi() { 126712b4ca9SAllan Jude src=$1 127712b4ca9SAllan Jude img=$2 128712b4ca9SAllan Jude mntpt=$3 129712b4ca9SAllan Jude geli=$4 130712b4ca9SAllan Jude scheme=$5 131712b4ca9SAllan Jude fs=$6 132712b4ca9SAllan Jude bios=$7 133712b4ca9SAllan Jude pool=nogeli-gpt-zfs-uefi 134712b4ca9SAllan Jude 135712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 136712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 137712b4ca9SAllan Jude gpart create -s gpt ${md} 138db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 139712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 140712b4ca9SAllan Jude # install-boot will make this bootable 141712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 142712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 143712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 144712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 145712b4ca9SAllan Jude cpsys ${src} ${mntpt} 146712b4ca9SAllan Jude # need to make a couple of tweaks 147d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 148712b4ca9SAllan Judezfs_load=YES 149712b4ca9SAllan Judeopensolaris_load=YES 150712b4ca9SAllan JudeEOF 151712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 152712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 153712b4ca9SAllan Jude # end tweaks 154712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 155712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 156712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 157712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 158712b4ca9SAllan Jude zpool export ${pool} 159712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 160712b4ca9SAllan Jude mdconfig -d -u ${md} 161082c6764SWarner Losh} 162082c6764SWarner Losh 163082c6764SWarner Loshmk_nogeli_gpt_zfs_both() { 164712b4ca9SAllan Jude src=$1 165712b4ca9SAllan Jude img=$2 166712b4ca9SAllan Jude mntpt=$3 167712b4ca9SAllan Jude geli=$4 168712b4ca9SAllan Jude scheme=$5 169712b4ca9SAllan Jude fs=$6 170712b4ca9SAllan Jude bios=$7 171712b4ca9SAllan Jude pool=nogeli-gpt-zfs-both 172712b4ca9SAllan Jude 173712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 174712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 175712b4ca9SAllan Jude gpart create -s gpt ${md} 176db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 177712b4ca9SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 178712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 179712b4ca9SAllan Jude # install-boot will make this bootable 180712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3 181712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 182712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 183712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 184712b4ca9SAllan Jude cpsys ${src} ${mntpt} 185712b4ca9SAllan Jude # need to make a couple of tweaks 186d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 187712b4ca9SAllan Judezfs_load=YES 188712b4ca9SAllan Judeopensolaris_load=YES 189712b4ca9SAllan JudeEOF 190712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 191712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 192712b4ca9SAllan Jude # end tweaks 193712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 194712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 195712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 196712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 197712b4ca9SAllan Jude zpool export ${pool} 198712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 199712b4ca9SAllan Jude mdconfig -d -u ${md} 200082c6764SWarner Losh} 201082c6764SWarner Losh 202082c6764SWarner Loshmk_nogeli_mbr_ufs_legacy() { 20322cf6021SWarner Losh src=$1 20422cf6021SWarner Losh img=$2 20522cf6021SWarner Losh 20622cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 20722cf6021SWarner Losh/dev/ada0s1a / ufs rw 1 1 20822cf6021SWarner LoshEOF 20922cf6021SWarner Losh makefs -t ffs -B little -s 200m ${img}.s1a ${src} 21022cf6021SWarner Losh mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1 211f438a143SAllan Jude mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img} 21222cf6021SWarner Losh rm -f ${src}/etc/fstab 213082c6764SWarner Losh} 214082c6764SWarner Losh 215082c6764SWarner Loshmk_nogeli_mbr_ufs_uefi() { 216f438a143SAllan Jude src=$1 217f438a143SAllan Jude img=$2 218f438a143SAllan Jude 219f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 220c7940ca2SIan Lepore/dev/ada0s2a / ufs rw 1 1 221f438a143SAllan JudeEOF 222*0661cd79SRebecca Cran make_esp_file ${img}.s1 ${espsize} ${src}/boot/loader.efi 223f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 224f438a143SAllan Jude mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2 225f438a143SAllan Jude mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 226f438a143SAllan Jude rm -f ${src}/etc/fstab 227082c6764SWarner Losh} 228082c6764SWarner Losh 229082c6764SWarner Loshmk_nogeli_mbr_ufs_both() { 230f438a143SAllan Jude src=$1 231f438a143SAllan Jude img=$2 232f438a143SAllan Jude 233f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 234c7940ca2SIan Lepore/dev/ada0s2a / ufs rw 1 1 235f438a143SAllan JudeEOF 236*0661cd79SRebecca Cran make_esp_file ${img}.s1 ${espsize} ${src}/boot/loader.efi 237f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 238f438a143SAllan Jude mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2 239f438a143SAllan Jude mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 240f438a143SAllan Jude rm -f ${src}/etc/fstab 241082c6764SWarner Losh} 242082c6764SWarner Losh 243082c6764SWarner Loshmk_nogeli_mbr_zfs_legacy() { 244f438a143SAllan Jude src=$1 245f438a143SAllan Jude img=$2 246f438a143SAllan Jude mntpt=$3 247f438a143SAllan Jude geli=$4 248f438a143SAllan Jude scheme=$5 249f438a143SAllan Jude fs=$6 250f438a143SAllan Jude bios=$7 251f438a143SAllan Jude pool=nogeli-mbr-zfs-legacy 252f438a143SAllan Jude 253f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 254f438a143SAllan Jude md=$(mdconfig -f ${img}) 255f438a143SAllan Jude gpart create -s mbr ${md} 256f438a143SAllan Jude gpart add -t freebsd ${md} 257f438a143SAllan Jude gpart set -a active -i 1 ${md} 258f438a143SAllan Jude gpart create -s bsd ${md}s1 259f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s1 260f438a143SAllan Jude # install-boot will make this bootable 261f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a 262f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 263f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 264f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 265f438a143SAllan Jude cpsys ${src} ${mntpt} 266f438a143SAllan Jude # need to make a couple of tweaks 267d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 268f438a143SAllan Judezfs_load=YES 269f438a143SAllan Judeopensolaris_load=YES 270f438a143SAllan JudeEOF 271f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 272f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 273f438a143SAllan Jude # end tweaks 274f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 275f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 276f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 277f438a143SAllan Jude zpool set autoexpand=on ${pool} 278f438a143SAllan Jude zpool export ${pool} 279f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 280f438a143SAllan Jude mdconfig -d -u ${md} 281082c6764SWarner Losh} 282082c6764SWarner Losh 283082c6764SWarner Loshmk_nogeli_mbr_zfs_uefi() { 284f438a143SAllan Jude src=$1 285f438a143SAllan Jude img=$2 286f438a143SAllan Jude mntpt=$3 287f438a143SAllan Jude geli=$4 288f438a143SAllan Jude scheme=$5 289f438a143SAllan Jude fs=$6 290f438a143SAllan Jude bios=$7 291f438a143SAllan Jude pool=nogeli-mbr-zfs-uefi 292f438a143SAllan Jude 293f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 294f438a143SAllan Jude md=$(mdconfig -f ${img}) 295f438a143SAllan Jude gpart create -s mbr ${md} 296db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k ${md} 297f438a143SAllan Jude gpart add -t freebsd ${md} 298f438a143SAllan Jude gpart set -a active -i 2 ${md} 299f438a143SAllan Jude gpart create -s bsd ${md}s2 300f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 301f438a143SAllan Jude # install-boot will make this bootable 302f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 303f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 304f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 305f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 306f438a143SAllan Jude cpsys ${src} ${mntpt} 307f438a143SAllan Jude # need to make a couple of tweaks 308d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 309f438a143SAllan Judezfs_load=YES 310f438a143SAllan Judeopensolaris_load=YES 311f438a143SAllan JudeEOF 312f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 313f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 314f438a143SAllan Jude # end tweaks 315f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 316f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 317f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 318f438a143SAllan Jude zpool set autoexpand=on ${pool} 319f438a143SAllan Jude zpool export ${pool} 320f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 321f438a143SAllan Jude mdconfig -d -u ${md} 322082c6764SWarner Losh} 323082c6764SWarner Losh 324082c6764SWarner Loshmk_nogeli_mbr_zfs_both() { 325f438a143SAllan Jude src=$1 326f438a143SAllan Jude img=$2 327f438a143SAllan Jude mntpt=$3 328f438a143SAllan Jude geli=$4 329f438a143SAllan Jude scheme=$5 330f438a143SAllan Jude fs=$6 331f438a143SAllan Jude bios=$7 332f438a143SAllan Jude pool=nogeli-mbr-zfs-both 333f438a143SAllan Jude 334f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 335f438a143SAllan Jude md=$(mdconfig -f ${img}) 336f438a143SAllan Jude gpart create -s mbr ${md} 337db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k ${md} 338f438a143SAllan Jude gpart add -t freebsd ${md} 339f438a143SAllan Jude gpart set -a active -i 2 ${md} 340f438a143SAllan Jude gpart create -s bsd ${md}s2 341f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 342f438a143SAllan Jude # install-boot will make this bootable 343f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 344f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 345f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 346f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 347f438a143SAllan Jude cpsys ${src} ${mntpt} 348f438a143SAllan Jude # need to make a couple of tweaks 349d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 350f438a143SAllan Judezfs_load=YES 351f438a143SAllan Judeopensolaris_load=YES 352f438a143SAllan JudeEOF 353f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 354f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 355f438a143SAllan Jude # end tweaks 356f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 357f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 358f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 359f438a143SAllan Jude zpool set autoexpand=on ${pool} 360f438a143SAllan Jude zpool export ${pool} 361f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 362f438a143SAllan Jude mdconfig -d -u ${md} 363082c6764SWarner Losh} 364082c6764SWarner Losh 365082c6764SWarner Loshmk_geli_gpt_ufs_legacy() { 366f438a143SAllan Jude src=$1 367f438a143SAllan Jude img=$2 368f438a143SAllan Jude mntpt=$3 369f438a143SAllan Jude geli=$4 370f438a143SAllan Jude scheme=$5 371f438a143SAllan Jude fs=$6 372f438a143SAllan Jude bios=$7 373f438a143SAllan Jude 374f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 375f438a143SAllan Jude md=$(mdconfig -f ${img}) 376f438a143SAllan Jude gpart create -s gpt ${md} 377f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 378f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 379f438a143SAllan Jude # install-boot will make this bootable 380595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 381595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 382f438a143SAllan Jude newfs /dev/${md}p2.eli 383f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 384f438a143SAllan Jude cpsys ${src} ${mntpt} 385f438a143SAllan Jude # need to make a couple of tweaks 386f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 387f438a143SAllan Judegeom_eli_load=YES 388f438a143SAllan JudeEOF 389f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 390f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 391f438a143SAllan JudeEOF 392f438a143SAllan Jude 393f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 394f438a143SAllan Jude # end tweaks 395f438a143SAllan Jude umount -f ${mntpt} 396f438a143SAllan Jude geli detach ${md}p2 397f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 398f438a143SAllan Jude mdconfig -d -u ${md} 399082c6764SWarner Losh} 400082c6764SWarner Losh 401082c6764SWarner Loshmk_geli_gpt_ufs_uefi() { 402f438a143SAllan Jude src=$1 403f438a143SAllan Jude img=$2 404f438a143SAllan Jude mntpt=$3 405f438a143SAllan Jude geli=$4 406f438a143SAllan Jude scheme=$5 407f438a143SAllan Jude fs=$6 408f438a143SAllan Jude bios=$7 409f438a143SAllan Jude 410f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 411f438a143SAllan Jude md=$(mdconfig -f ${img}) 412f438a143SAllan Jude gpart create -s gpt ${md} 413db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 414f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 415f438a143SAllan Jude # install-boot will make this bootable 416595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 417595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 418f438a143SAllan Jude newfs /dev/${md}p2.eli 419f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 420f438a143SAllan Jude cpsys ${src} ${mntpt} 421f438a143SAllan Jude # need to make a couple of tweaks 422f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 423f438a143SAllan Judegeom_eli_load=YES 424f438a143SAllan JudeEOF 425f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 426f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 427f438a143SAllan JudeEOF 428f438a143SAllan Jude 429f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 430f438a143SAllan Jude # end tweaks 431f438a143SAllan Jude umount -f ${mntpt} 432f438a143SAllan Jude geli detach ${md}p2 433f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 434f438a143SAllan Jude mdconfig -d -u ${md} 435082c6764SWarner Losh} 436082c6764SWarner Losh 437082c6764SWarner Loshmk_geli_gpt_ufs_both() { 438f438a143SAllan Jude src=$1 439f438a143SAllan Jude img=$2 440f438a143SAllan Jude mntpt=$3 441f438a143SAllan Jude geli=$4 442f438a143SAllan Jude scheme=$5 443f438a143SAllan Jude fs=$6 444f438a143SAllan Jude bios=$7 445f438a143SAllan Jude 446f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 447f438a143SAllan Jude md=$(mdconfig -f ${img}) 448f438a143SAllan Jude gpart create -s gpt ${md} 449db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 450f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 451f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 452f438a143SAllan Jude # install-boot will make this bootable 453595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3 454595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p3 455f438a143SAllan Jude newfs /dev/${md}p3.eli 456f438a143SAllan Jude mount /dev/${md}p3.eli ${mntpt} 457f438a143SAllan Jude cpsys ${src} ${mntpt} 458f438a143SAllan Jude # need to make a couple of tweaks 459f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 460f438a143SAllan Judegeom_eli_load=YES 461f438a143SAllan JudeEOF 462f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 463f438a143SAllan Jude/dev/ada0p3.eli / ufs rw 1 1 464f438a143SAllan JudeEOF 465f438a143SAllan Jude 466f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 467f438a143SAllan Jude # end tweaks 468f438a143SAllan Jude umount -f ${mntpt} 469f438a143SAllan Jude geli detach ${md}p3 470f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 471f438a143SAllan Jude mdconfig -d -u ${md} 472082c6764SWarner Losh} 473082c6764SWarner Losh 474082c6764SWarner Loshmk_geli_gpt_zfs_legacy() { 475f438a143SAllan Jude src=$1 476f438a143SAllan Jude img=$2 477f438a143SAllan Jude mntpt=$3 478f438a143SAllan Jude geli=$4 479f438a143SAllan Jude scheme=$5 480f438a143SAllan Jude fs=$6 481f438a143SAllan Jude bios=$7 482f438a143SAllan Jude pool=geli-gpt-zfs-legacy 483f438a143SAllan Jude 484f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 485f438a143SAllan Jude md=$(mdconfig -f ${img}) 486f438a143SAllan Jude gpart create -s gpt ${md} 487f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 488f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 489f438a143SAllan Jude # install-boot will make this bootable 490595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 491595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 492f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli 493f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 494f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 495f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 496f438a143SAllan Jude cpsys ${src} ${mntpt} 497f438a143SAllan Jude # need to make a couple of tweaks 498d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 499f438a143SAllan Judezfs_load=YES 500f438a143SAllan Judeopensolaris_load=YES 501f438a143SAllan Judegeom_eli_load=YES 502f438a143SAllan JudeEOF 503f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 504f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 505f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 506f438a143SAllan Jude # end tweaks 507f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 508f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 509f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 510f438a143SAllan Jude zpool set autoexpand=on ${pool} 511f438a143SAllan Jude zpool export ${pool} 512f438a143SAllan Jude geli detach ${md}p2 513f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 514f438a143SAllan Jude mdconfig -d -u ${md} 515082c6764SWarner Losh} 516082c6764SWarner Losh 517082c6764SWarner Loshmk_geli_gpt_zfs_uefi() { 518f438a143SAllan Jude src=$1 519f438a143SAllan Jude img=$2 520f438a143SAllan Jude mntpt=$3 521f438a143SAllan Jude geli=$4 522f438a143SAllan Jude scheme=$5 523f438a143SAllan Jude fs=$6 524f438a143SAllan Jude bios=$7 525f438a143SAllan Jude pool=geli-gpt-zfs-uefi 526f438a143SAllan Jude 527f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 528f438a143SAllan Jude md=$(mdconfig -f ${img}) 529f438a143SAllan Jude gpart create -s gpt ${md} 530db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 531f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 532f438a143SAllan Jude # install-boot will make this bootable 533595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 534595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 535f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli 536f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 537f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 538f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 539f438a143SAllan Jude cpsys ${src} ${mntpt} 540f438a143SAllan Jude # need to make a couple of tweaks 541d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 542f438a143SAllan Judezfs_load=YES 543f438a143SAllan Judeopensolaris_load=YES 544f438a143SAllan Judegeom_eli_load=YES 545f438a143SAllan JudeEOF 546f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 547f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 548f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 549f438a143SAllan Jude # end tweaks 550f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 551f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 552f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 553f438a143SAllan Jude zpool set autoexpand=on ${pool} 554f438a143SAllan Jude zpool export ${pool} 555f438a143SAllan Jude geli detach ${md}p2 556f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 557f438a143SAllan Jude mdconfig -d -u ${md} 558082c6764SWarner Losh} 559082c6764SWarner Losh 560082c6764SWarner Loshmk_geli_gpt_zfs_both() { 561f438a143SAllan Jude src=$1 562f438a143SAllan Jude img=$2 563f438a143SAllan Jude mntpt=$3 564f438a143SAllan Jude geli=$4 565f438a143SAllan Jude scheme=$5 566f438a143SAllan Jude fs=$6 567f438a143SAllan Jude bios=$7 568f438a143SAllan Jude pool=geli-gpt-zfs-both 569f438a143SAllan Jude 570f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 571f438a143SAllan Jude md=$(mdconfig -f ${img}) 572f438a143SAllan Jude gpart create -s gpt ${md} 573db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 574f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 575f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 576f438a143SAllan Jude # install-boot will make this bootable 577595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3 578595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p3 579f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli 580f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 581f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 582f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 583f438a143SAllan Jude cpsys ${src} ${mntpt} 584f438a143SAllan Jude # need to make a couple of tweaks 585f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 586f438a143SAllan Judezfs_load=YES 587f438a143SAllan Judeopensolaris_load=YES 588f438a143SAllan Judegeom_eli_load=YES 589f438a143SAllan JudeEOF 590f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 591f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 592f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 593f438a143SAllan Jude # end tweaks 594f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 595f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 596f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 597f438a143SAllan Jude zpool set autoexpand=on ${pool} 598f438a143SAllan Jude zpool export ${pool} 599f438a143SAllan Jude geli detach ${md}p3 600f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 601f438a143SAllan Jude mdconfig -d -u ${md} 602082c6764SWarner Losh} 603082c6764SWarner Losh 604f438a143SAllan Jude# GELI+MBR is not a valid configuration 605082c6764SWarner Loshmk_geli_mbr_ufs_legacy() { 606082c6764SWarner Losh} 607082c6764SWarner Losh 608082c6764SWarner Loshmk_geli_mbr_ufs_uefi() { 609082c6764SWarner Losh} 610082c6764SWarner Losh 611082c6764SWarner Loshmk_geli_mbr_ufs_both() { 612082c6764SWarner Losh} 613082c6764SWarner Losh 614082c6764SWarner Loshmk_geli_mbr_zfs_legacy() { 615082c6764SWarner Losh} 616082c6764SWarner Losh 617082c6764SWarner Loshmk_geli_mbr_zfs_uefi() { 618082c6764SWarner Losh} 619082c6764SWarner Losh 620082c6764SWarner Loshmk_geli_mbr_zfs_both() { 621082c6764SWarner Losh} 622082c6764SWarner Losh 623082c6764SWarner Losh# iso 624082c6764SWarner Losh# pxeldr 625082c6764SWarner Losh# u-boot 62622cf6021SWarner Losh# powerpc 62722cf6021SWarner Losh 628ba8d50d0SMarius Stroblmk_sparc64_nogeli_vtoc8_ufs_ofw() { 629ba8d50d0SMarius Strobl src=$1 630ba8d50d0SMarius Strobl img=$2 631ba8d50d0SMarius Strobl mntpt=$3 632ba8d50d0SMarius Strobl geli=$4 633ba8d50d0SMarius Strobl scheme=$5 634ba8d50d0SMarius Strobl fs=$6 635ba8d50d0SMarius Strobl bios=$7 636ba8d50d0SMarius Strobl 637ba8d50d0SMarius Strobl cat > ${src}/etc/fstab <<EOF 638ba8d50d0SMarius Strobl/dev/ada0a / ufs rw 1 1 639ba8d50d0SMarius StroblEOF 640ba8d50d0SMarius Strobl makefs -t ffs -B big -s 200m ${img} ${src} 641ba8d50d0SMarius Strobl md=$(mdconfig -f ${img}) 642ba8d50d0SMarius Strobl # For non-native builds, ensure that geom_part(4) supports VTOC8. 643ba8d50d0SMarius Strobl kldload geom_part_vtoc8.ko 644ba8d50d0SMarius Strobl gpart create -s VTOC8 ${md} 645ba8d50d0SMarius Strobl gpart add -t freebsd-ufs ${md} 646ba8d50d0SMarius Strobl ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 647ba8d50d0SMarius Strobl mdconfig -d -u ${md} 648ba8d50d0SMarius Strobl rm -f ${src}/etc/fstab 649ba8d50d0SMarius Strobl} 650ba8d50d0SMarius Strobl 6517b4b55e5SIan Leporeqser="-serial telnet::4444,server -nographic" 65222cf6021SWarner Losh 65322cf6021SWarner Losh# https://wiki.freebsd.org/QemuRecipes 65422cf6021SWarner Losh# aarch64 65522cf6021SWarner Loshqemu_aarch64_uefi() 65622cf6021SWarner Losh{ 65722cf6021SWarner Losh img=$1 65822cf6021SWarner Losh sh=$2 65922cf6021SWarner Losh 66022cf6021SWarner Losh echo "qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt \ 66122cf6021SWarner Losh -bios QEMU_EFI.fd ${qser} \ 66222cf6021SWarner Losh -drive if=none,file=${img},id=hd0 \ 66322cf6021SWarner Losh -device virtio-blk-device,drive=hd0" > $sh 664dfe34ceaSIan Lepore chmod 755 $sh 66522cf6021SWarner Losh# https://wiki.freebsd.org/arm64/QEMU also has 66622cf6021SWarner Losh# -device virtio-net-device,netdev=net0 66722cf6021SWarner Losh# -netdev user,id=net0 66822cf6021SWarner Losh} 66922cf6021SWarner Losh 67022cf6021SWarner Losh# Amd64 qemu 67122cf6021SWarner Loshqemu_amd64_legacy() 67222cf6021SWarner Losh{ 67322cf6021SWarner Losh img=$1 67422cf6021SWarner Losh sh=$2 67522cf6021SWarner Losh 67648cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh 677dfe34ceaSIan Lepore chmod 755 $sh 67822cf6021SWarner Losh} 67922cf6021SWarner Losh 68022cf6021SWarner Loshqemu_amd64_uefi() 68122cf6021SWarner Losh{ 68222cf6021SWarner Losh img=$1 68322cf6021SWarner Losh sh=$2 68422cf6021SWarner Losh 68548cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh 686dfe34ceaSIan Lepore chmod 755 $sh 68722cf6021SWarner Losh} 68822cf6021SWarner Losh 68922cf6021SWarner Loshqemu_amd64_both() 69022cf6021SWarner Losh{ 69122cf6021SWarner Losh img=$1 69222cf6021SWarner Losh sh=$2 69322cf6021SWarner Losh 69448cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh 69548cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh 696dfe34ceaSIan Lepore chmod 755 $sh 69722cf6021SWarner Losh} 69822cf6021SWarner Losh 69922cf6021SWarner Losh# arm 70022cf6021SWarner Losh# nothing listed? 70122cf6021SWarner Losh 70222cf6021SWarner Losh# i386 70322cf6021SWarner Loshqemu_i386_legacy() 70422cf6021SWarner Losh{ 70522cf6021SWarner Losh img=$1 70622cf6021SWarner Losh sh=$2 70722cf6021SWarner Losh 70822cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 709dfe34ceaSIan Lepore chmod 755 $sh 71022cf6021SWarner Losh} 71122cf6021SWarner Losh 71222cf6021SWarner Losh# Not yet supported 71322cf6021SWarner Loshqemu_i386_uefi() 71422cf6021SWarner Losh{ 71522cf6021SWarner Losh img=$1 71622cf6021SWarner Losh sh=$2 71722cf6021SWarner Losh 71822cf6021SWarner Losh echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh 719dfe34ceaSIan Lepore chmod 755 $sh 72022cf6021SWarner Losh} 72122cf6021SWarner Losh 72222cf6021SWarner Losh# Needs UEFI to be supported 72322cf6021SWarner Loshqemu_i386_both() 72422cf6021SWarner Losh{ 72522cf6021SWarner Losh img=$1 72622cf6021SWarner Losh sh=$2 72722cf6021SWarner Losh 72822cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 729712b4ca9SAllan Jude echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" >> $sh 730dfe34ceaSIan Lepore chmod 755 $sh 73122cf6021SWarner Losh} 73222cf6021SWarner Losh 733432b4921SIan Leporemake_one_image() 734432b4921SIan Lepore{ 735432b4921SIan Lepore local arch=${1?} 736432b4921SIan Lepore local geli=${2?} 737432b4921SIan Lepore local scheme=${3?} 738432b4921SIan Lepore local fs=${4?} 739432b4921SIan Lepore local bios=${5?} 740432b4921SIan Lepore 741432b4921SIan Lepore # Create sparse file and mount newly created filesystem(s) on it 742432b4921SIan Lepore img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 743432b4921SIan Lepore sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 744432b4921SIan Lepore echo "vvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvv" 745432b4921SIan Lepore rm -f ${img}* 746432b4921SIan Lepore eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 747432b4921SIan Lepore eval qemu_${arch}_${bios} ${img} ${sh} 748432b4921SIan Lepore [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 749432b4921SIan Lepore echo "^^^^^^^^^^^^^^ Created $img ^^^^^^^^^^^^^^^" 750432b4921SIan Lepore} 751432b4921SIan Lepore 75222cf6021SWarner Losh# mips 75322cf6021SWarner Losh# qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048 75422cf6021SWarner Losh 75522cf6021SWarner Losh# Powerpc -- doesn't work but maybe it would enough for testing -- needs details 75622cf6021SWarner Losh# powerpc64 75722cf6021SWarner Losh# qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw 75822cf6021SWarner Losh 75922cf6021SWarner Losh# sparc64 76022cf6021SWarner Losh# qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw 76122cf6021SWarner Losh 762082c6764SWarner Losh# Misc variables 763082c6764SWarner LoshSRCTOP=$(make -v SRCTOP) 764082c6764SWarner Loshcd ${SRCTOP}/stand 765082c6764SWarner LoshOBJDIR=$(make -v .OBJDIR) 766082c6764SWarner LoshIMGDIR=${OBJDIR}/boot-images 767082c6764SWarner Loshmkdir -p ${IMGDIR} 768082c6764SWarner LoshMNTPT=$(mktemp -d /tmp/stand-test.XXXXXX) 769082c6764SWarner Losh 770082c6764SWarner Losh# Setup the installed tree... 771082c6764SWarner LoshDESTDIR=${OBJDIR}/boot-tree 772082c6764SWarner Loshrm -rf ${DESTDIR} 773082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/defaults 774082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/kernel 775082c6764SWarner Loshcp /boot/kernel/kernel ${DESTDIR}/boot/kernel 776328884aeSWarner Loshecho -h -D -S115200 > ${DESTDIR}/boot.config 777d050cd6bSWarner Loshcat > ${DESTDIR}/boot/loader.conf <<EOF 778d050cd6bSWarner Loshconsole=comconsole 779d050cd6bSWarner Loshcomconsole_speed=115200 7801c70f60eSWarner Loshboot_serial=yes 7811c70f60eSWarner Loshboot_multicons=yes 782d050cd6bSWarner LoshEOF 783082c6764SWarner Losh# XXX 784082c6764SWarner Loshcp /boot/device.hints ${DESTDIR}/boot/device.hints 785082c6764SWarner Losh# Assume we're already built 786082c6764SWarner Loshmake install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_AS_USER=yes 78722cf6021SWarner Losh# Copy init, /bin/sh, minimal libraries and testing /etc/rc 78822cf6021SWarner Loshmkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \ 78922cf6021SWarner Losh ${DESTDIR}/lib ${DESTDIR}/libexec \ 79022cf6021SWarner Losh ${DESTDIR}/etc ${DESTDIR}/dev 791d050cd6bSWarner 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 792082c6764SWarner Losh cp $f ${DESTDIR}/$f 793082c6764SWarner Loshdone 79422cf6021SWarner Loshcat > ${DESTDIR}/etc/rc <<EOF 79522cf6021SWarner Losh#!/bin/sh 79622cf6021SWarner Losh 797d050cd6bSWarner Loshsysctl machdep.bootmethod 79822cf6021SWarner Loshecho "RC COMMAND RUNNING -- SUCCESS!!!!!" 79922cf6021SWarner Loshhalt -p 80022cf6021SWarner LoshEOF 801082c6764SWarner Losh 802432b4921SIan Lepore# If we were given exactly 5 args, go make that one image. 803432b4921SIan Lepore 804432b4921SIan Leporeif [ $# -eq 5 ]; then 805432b4921SIan Lepore make_one_image $* 806432b4921SIan Lepore exit 807432b4921SIan Leporefi 808432b4921SIan Lepore 809082c6764SWarner Losh# OK. Let the games begin 810082c6764SWarner Losh 81122cf6021SWarner Loshfor arch in amd64; do 812082c6764SWarner Losh for geli in nogeli geli; do 813082c6764SWarner Losh for scheme in gpt mbr; do 814082c6764SWarner Losh for fs in ufs zfs; do 815082c6764SWarner Losh for bios in legacy uefi both; do 816432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 817082c6764SWarner Losh done 818082c6764SWarner Losh done 819082c6764SWarner Losh done 820082c6764SWarner Losh done 82122cf6021SWarner Loshdone 822082c6764SWarner Losh 823082c6764SWarner Loshrmdir ${MNTPT} 82422cf6021SWarner Losh 82522cf6021SWarner Loshexit 0 82622cf6021SWarner Losh 82722cf6021SWarner Losh# Notes for the future 82822cf6021SWarner Losh 82922cf6021SWarner Loshfor arch in i386; do 83022cf6021SWarner Losh for geli in nogeli geli; do 83122cf6021SWarner Losh for scheme in gpt mbr; do 83222cf6021SWarner Losh for fs in ufs zfs; do 83322cf6021SWarner Losh for bios in legacy; do 834432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 83522cf6021SWarner Losh done 83622cf6021SWarner Losh done 83722cf6021SWarner Losh done 83822cf6021SWarner Losh done 83922cf6021SWarner Loshdone 84022cf6021SWarner Losh 84122cf6021SWarner Loshfor arch in arm aarch64; do 84222cf6021SWarner Losh for scheme in gpt mbr; do 84322cf6021SWarner Losh fs=ufs 84422cf6021SWarner Losh for bios in uboot efi; do 845432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 84622cf6021SWarner Losh done 84722cf6021SWarner Losh done 84822cf6021SWarner Loshdone 84922cf6021SWarner Losh 85022cf6021SWarner Loshfor arch in powerpc powerpc64; do 85122cf6021SWarner Losh for scheme in ppc-wtf; do 85222cf6021SWarner Losh fs=ufs 85322cf6021SWarner Losh for bios in ofw uboot chrp; do 854432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 85522cf6021SWarner Losh done 85622cf6021SWarner Losh done 85722cf6021SWarner Loshdone 85822cf6021SWarner Losh 85922cf6021SWarner Loshfor arch in sparc64; do 860ba8d50d0SMarius Strobl for geli in nogeli; do 861ba8d50d0SMarius Strobl for scheme in vtoc8; do 862ba8d50d0SMarius Strobl for fs in ufs; do 86322cf6021SWarner Losh for bios in ofw; do 864432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 86522cf6021SWarner Losh done 86622cf6021SWarner Losh done 86722cf6021SWarner Losh done 868ba8d50d0SMarius Strobl done 869ba8d50d0SMarius Strobldone 870