1082c6764SWarner Losh#!/bin/sh 2082c6764SWarner Losh 3082c6764SWarner Losh# $FreeBSD$ 4082c6764SWarner Losh 57b4b55e5SIan Leporepassphrase=passphrase 67b4b55e5SIan Leporeiterations=50000 7595deaf7SIan Lepore 8*db8b5613SRebecca Cran# The smallest FAT32 filesystem is 33292 KB 9*db8b5613SRebecca 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# 20*db8b5613SRebecca 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# 26*db8b5613SRebecca 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 30082c6764SWarner Loshcpsys() { 31082c6764SWarner Losh src=$1 32082c6764SWarner Losh dst=$2 33082c6764SWarner Losh 34082c6764SWarner Losh # Copy kernel + boot loader 35082c6764SWarner Losh (cd $src ; tar cf - .) | (cd $dst; tar xf -) 36082c6764SWarner Losh} 37082c6764SWarner Losh 38082c6764SWarner Loshmk_nogeli_gpt_ufs_legacy() { 39082c6764SWarner Losh src=$1 40082c6764SWarner Losh img=$2 41082c6764SWarner Losh 4222cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 4322cf6021SWarner Losh/dev/ada0p2 / ufs rw 1 1 4422cf6021SWarner LoshEOF 45082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p2 ${src} 46082c6764SWarner Losh mkimg -s gpt -b ${src}/boot/pmbr \ 47082c6764SWarner Losh -p freebsd-boot:=${src}/boot/gptboot \ 48082c6764SWarner Losh -p freebsd-ufs:=${img}.p2 -o ${img} 4922cf6021SWarner Losh rm -f ${src}/etc/fstab 50082c6764SWarner Losh} 51082c6764SWarner Losh 52082c6764SWarner Loshmk_nogeli_gpt_ufs_uefi() { 53082c6764SWarner Losh src=$1 54082c6764SWarner Losh img=$2 55082c6764SWarner Losh 5622cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 5722cf6021SWarner Losh/dev/ada0p2 / ufs rw 1 1 5822cf6021SWarner LoshEOF 59*db8b5613SRebecca Cran make_esp_file ${img}.p1 ${espsize} ${src} 60082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p2 ${src} 61f438a143SAllan Jude mkimg -s gpt \ 6222cf6021SWarner Losh -p efi:=${img}.p1 \ 63082c6764SWarner Losh -p freebsd-ufs:=${img}.p2 -o ${img} 6422cf6021SWarner Losh rm -f ${src}/etc/fstab 65082c6764SWarner Losh} 66082c6764SWarner Losh 67082c6764SWarner Loshmk_nogeli_gpt_ufs_both() { 68082c6764SWarner Losh src=$1 69082c6764SWarner Losh img=$2 70082c6764SWarner Losh 7122cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 7222cf6021SWarner Losh/dev/ada0p3 / ufs rw 1 1 7322cf6021SWarner LoshEOF 74*db8b5613SRebecca Cran make_esp_file ${img}.p1 ${espsize} ${src} 75082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p3 ${src} 76082c6764SWarner Losh # p1 is boot for uefi, p2 is boot for gpt, p3 is / 77082c6764SWarner Losh mkimg -b ${src}/boot/pmbr -s gpt \ 78d050cd6bSWarner Losh -p efi:=${img}.p1 \ 79082c6764SWarner Losh -p freebsd-boot:=${src}/boot/gptboot \ 80082c6764SWarner Losh -p freebsd-ufs:=${img}.p3 \ 81082c6764SWarner Losh -o ${img} 8222cf6021SWarner Losh rm -f ${src}/etc/fstab 83082c6764SWarner Losh} 84082c6764SWarner Losh 85082c6764SWarner Loshmk_nogeli_gpt_zfs_legacy() { 86082c6764SWarner Losh src=$1 87082c6764SWarner Losh img=$2 88082c6764SWarner Losh mntpt=$3 89082c6764SWarner Losh geli=$4 90082c6764SWarner Losh scheme=$5 91082c6764SWarner Losh fs=$6 92082c6764SWarner Losh bios=$7 93082c6764SWarner Losh pool=nogeli-gpt-zfs-legacy 94082c6764SWarner Losh 95082c6764SWarner Losh dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 96082c6764SWarner Losh md=$(mdconfig -f ${img}) 97082c6764SWarner Losh gpart create -s gpt ${md} 98082c6764SWarner Losh gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 99082c6764SWarner Losh gpart add -t freebsd-zfs -l root $md 100082c6764SWarner Losh # install-boot will make this bootable 101082c6764SWarner Losh zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 102082c6764SWarner Losh zpool set bootfs=${pool} ${pool} 1032145d0ecSAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 104082c6764SWarner Losh # NB: The online guides go nuts customizing /var and other mountpoints here, no need 105082c6764SWarner Losh cpsys ${src} ${mntpt} 106082c6764SWarner Losh # need to make a couple of tweaks 107d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 108082c6764SWarner Loshzfs_load=YES 109082c6764SWarner Loshopensolaris_load=YES 110082c6764SWarner LoshEOF 111082c6764SWarner Losh cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 112082c6764SWarner Losh cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 113082c6764SWarner Losh # end tweaks 1142145d0ecSAllan Jude zfs umount -f ${pool}/ROOT/default 1152145d0ecSAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 1162145d0ecSAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 117082c6764SWarner Losh zpool set autoexpand=on ${pool} 118082c6764SWarner Losh zpool export ${pool} 119082c6764SWarner Losh ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 120082c6764SWarner Losh mdconfig -d -u ${md} 121082c6764SWarner Losh} 122082c6764SWarner Losh 123082c6764SWarner Loshmk_nogeli_gpt_zfs_uefi() { 124712b4ca9SAllan Jude src=$1 125712b4ca9SAllan Jude img=$2 126712b4ca9SAllan Jude mntpt=$3 127712b4ca9SAllan Jude geli=$4 128712b4ca9SAllan Jude scheme=$5 129712b4ca9SAllan Jude fs=$6 130712b4ca9SAllan Jude bios=$7 131712b4ca9SAllan Jude pool=nogeli-gpt-zfs-uefi 132712b4ca9SAllan Jude 133712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 134712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 135712b4ca9SAllan Jude gpart create -s gpt ${md} 136*db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 137712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 138712b4ca9SAllan Jude # install-boot will make this bootable 139712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 140712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 141712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 142712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 143712b4ca9SAllan Jude cpsys ${src} ${mntpt} 144712b4ca9SAllan Jude # need to make a couple of tweaks 145d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 146712b4ca9SAllan Judezfs_load=YES 147712b4ca9SAllan Judeopensolaris_load=YES 148712b4ca9SAllan JudeEOF 149712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 150712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 151712b4ca9SAllan Jude # end tweaks 152712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 153712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 154712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 155712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 156712b4ca9SAllan Jude zpool export ${pool} 157712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 158712b4ca9SAllan Jude mdconfig -d -u ${md} 159082c6764SWarner Losh} 160082c6764SWarner Losh 161082c6764SWarner Loshmk_nogeli_gpt_zfs_both() { 162712b4ca9SAllan Jude src=$1 163712b4ca9SAllan Jude img=$2 164712b4ca9SAllan Jude mntpt=$3 165712b4ca9SAllan Jude geli=$4 166712b4ca9SAllan Jude scheme=$5 167712b4ca9SAllan Jude fs=$6 168712b4ca9SAllan Jude bios=$7 169712b4ca9SAllan Jude pool=nogeli-gpt-zfs-both 170712b4ca9SAllan Jude 171712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 172712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 173712b4ca9SAllan Jude gpart create -s gpt ${md} 174*db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 175712b4ca9SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 176712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 177712b4ca9SAllan Jude # install-boot will make this bootable 178712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3 179712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 180712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 181712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 182712b4ca9SAllan Jude cpsys ${src} ${mntpt} 183712b4ca9SAllan Jude # need to make a couple of tweaks 184d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 185712b4ca9SAllan Judezfs_load=YES 186712b4ca9SAllan Judeopensolaris_load=YES 187712b4ca9SAllan JudeEOF 188712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 189712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 190712b4ca9SAllan Jude # end tweaks 191712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 192712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 193712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 194712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 195712b4ca9SAllan Jude zpool export ${pool} 196712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 197712b4ca9SAllan Jude mdconfig -d -u ${md} 198082c6764SWarner Losh} 199082c6764SWarner Losh 200082c6764SWarner Loshmk_nogeli_mbr_ufs_legacy() { 20122cf6021SWarner Losh src=$1 20222cf6021SWarner Losh img=$2 20322cf6021SWarner Losh 20422cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 20522cf6021SWarner Losh/dev/ada0s1a / ufs rw 1 1 20622cf6021SWarner LoshEOF 20722cf6021SWarner Losh makefs -t ffs -B little -s 200m ${img}.s1a ${src} 20822cf6021SWarner Losh mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1 209f438a143SAllan Jude mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img} 21022cf6021SWarner Losh rm -f ${src}/etc/fstab 211082c6764SWarner Losh} 212082c6764SWarner Losh 213082c6764SWarner Loshmk_nogeli_mbr_ufs_uefi() { 214f438a143SAllan Jude src=$1 215f438a143SAllan Jude img=$2 216f438a143SAllan Jude 217f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 218c7940ca2SIan Lepore/dev/ada0s2a / ufs rw 1 1 219f438a143SAllan JudeEOF 220*db8b5613SRebecca Cran make_esp_file ${img}.s1 ${espsize} ${src} 221f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 222f438a143SAllan Jude mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2 223f438a143SAllan Jude mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 224f438a143SAllan Jude rm -f ${src}/etc/fstab 225082c6764SWarner Losh} 226082c6764SWarner Losh 227082c6764SWarner Loshmk_nogeli_mbr_ufs_both() { 228f438a143SAllan Jude src=$1 229f438a143SAllan Jude img=$2 230f438a143SAllan Jude 231f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 232c7940ca2SIan Lepore/dev/ada0s2a / ufs rw 1 1 233f438a143SAllan JudeEOF 234*db8b5613SRebecca Cran make_esp_file ${img}.s1 ${espsize} ${src} 235f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 236f438a143SAllan Jude mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2 237f438a143SAllan Jude mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 238f438a143SAllan Jude rm -f ${src}/etc/fstab 239082c6764SWarner Losh} 240082c6764SWarner Losh 241082c6764SWarner Loshmk_nogeli_mbr_zfs_legacy() { 242f438a143SAllan Jude src=$1 243f438a143SAllan Jude img=$2 244f438a143SAllan Jude mntpt=$3 245f438a143SAllan Jude geli=$4 246f438a143SAllan Jude scheme=$5 247f438a143SAllan Jude fs=$6 248f438a143SAllan Jude bios=$7 249f438a143SAllan Jude pool=nogeli-mbr-zfs-legacy 250f438a143SAllan Jude 251f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 252f438a143SAllan Jude md=$(mdconfig -f ${img}) 253f438a143SAllan Jude gpart create -s mbr ${md} 254f438a143SAllan Jude gpart add -t freebsd ${md} 255f438a143SAllan Jude gpart set -a active -i 1 ${md} 256f438a143SAllan Jude gpart create -s bsd ${md}s1 257f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s1 258f438a143SAllan Jude # install-boot will make this bootable 259f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a 260f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 261f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 262f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 263f438a143SAllan Jude cpsys ${src} ${mntpt} 264f438a143SAllan Jude # need to make a couple of tweaks 265d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 266f438a143SAllan Judezfs_load=YES 267f438a143SAllan Judeopensolaris_load=YES 268f438a143SAllan JudeEOF 269f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 270f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 271f438a143SAllan Jude # end tweaks 272f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 273f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 274f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 275f438a143SAllan Jude zpool set autoexpand=on ${pool} 276f438a143SAllan Jude zpool export ${pool} 277f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 278f438a143SAllan Jude mdconfig -d -u ${md} 279082c6764SWarner Losh} 280082c6764SWarner Losh 281082c6764SWarner Loshmk_nogeli_mbr_zfs_uefi() { 282f438a143SAllan Jude src=$1 283f438a143SAllan Jude img=$2 284f438a143SAllan Jude mntpt=$3 285f438a143SAllan Jude geli=$4 286f438a143SAllan Jude scheme=$5 287f438a143SAllan Jude fs=$6 288f438a143SAllan Jude bios=$7 289f438a143SAllan Jude pool=nogeli-mbr-zfs-uefi 290f438a143SAllan Jude 291f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 292f438a143SAllan Jude md=$(mdconfig -f ${img}) 293f438a143SAllan Jude gpart create -s mbr ${md} 294*db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k ${md} 295f438a143SAllan Jude gpart add -t freebsd ${md} 296f438a143SAllan Jude gpart set -a active -i 2 ${md} 297f438a143SAllan Jude gpart create -s bsd ${md}s2 298f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 299f438a143SAllan Jude # install-boot will make this bootable 300f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 301f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 302f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 303f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 304f438a143SAllan Jude cpsys ${src} ${mntpt} 305f438a143SAllan Jude # need to make a couple of tweaks 306d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 307f438a143SAllan Judezfs_load=YES 308f438a143SAllan Judeopensolaris_load=YES 309f438a143SAllan JudeEOF 310f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 311f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 312f438a143SAllan Jude # end tweaks 313f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 314f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 315f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 316f438a143SAllan Jude zpool set autoexpand=on ${pool} 317f438a143SAllan Jude zpool export ${pool} 318f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 319f438a143SAllan Jude mdconfig -d -u ${md} 320082c6764SWarner Losh} 321082c6764SWarner Losh 322082c6764SWarner Loshmk_nogeli_mbr_zfs_both() { 323f438a143SAllan Jude src=$1 324f438a143SAllan Jude img=$2 325f438a143SAllan Jude mntpt=$3 326f438a143SAllan Jude geli=$4 327f438a143SAllan Jude scheme=$5 328f438a143SAllan Jude fs=$6 329f438a143SAllan Jude bios=$7 330f438a143SAllan Jude pool=nogeli-mbr-zfs-both 331f438a143SAllan Jude 332f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 333f438a143SAllan Jude md=$(mdconfig -f ${img}) 334f438a143SAllan Jude gpart create -s mbr ${md} 335*db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k ${md} 336f438a143SAllan Jude gpart add -t freebsd ${md} 337f438a143SAllan Jude gpart set -a active -i 2 ${md} 338f438a143SAllan Jude gpart create -s bsd ${md}s2 339f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 340f438a143SAllan Jude # install-boot will make this bootable 341f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 342f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 343f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 344f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 345f438a143SAllan Jude cpsys ${src} ${mntpt} 346f438a143SAllan Jude # need to make a couple of tweaks 347d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 348f438a143SAllan Judezfs_load=YES 349f438a143SAllan Judeopensolaris_load=YES 350f438a143SAllan JudeEOF 351f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 352f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 353f438a143SAllan Jude # end tweaks 354f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 355f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 356f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 357f438a143SAllan Jude zpool set autoexpand=on ${pool} 358f438a143SAllan Jude zpool export ${pool} 359f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 360f438a143SAllan Jude mdconfig -d -u ${md} 361082c6764SWarner Losh} 362082c6764SWarner Losh 363082c6764SWarner Loshmk_geli_gpt_ufs_legacy() { 364f438a143SAllan Jude src=$1 365f438a143SAllan Jude img=$2 366f438a143SAllan Jude mntpt=$3 367f438a143SAllan Jude geli=$4 368f438a143SAllan Jude scheme=$5 369f438a143SAllan Jude fs=$6 370f438a143SAllan Jude bios=$7 371f438a143SAllan Jude 372f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 373f438a143SAllan Jude md=$(mdconfig -f ${img}) 374f438a143SAllan Jude gpart create -s gpt ${md} 375f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 376f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 377f438a143SAllan Jude # install-boot will make this bootable 378595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 379595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 380f438a143SAllan Jude newfs /dev/${md}p2.eli 381f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 382f438a143SAllan Jude cpsys ${src} ${mntpt} 383f438a143SAllan Jude # need to make a couple of tweaks 384f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 385f438a143SAllan Judegeom_eli_load=YES 386f438a143SAllan JudeEOF 387f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 388f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 389f438a143SAllan JudeEOF 390f438a143SAllan Jude 391f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 392f438a143SAllan Jude # end tweaks 393f438a143SAllan Jude umount -f ${mntpt} 394f438a143SAllan Jude geli detach ${md}p2 395f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 396f438a143SAllan Jude mdconfig -d -u ${md} 397082c6764SWarner Losh} 398082c6764SWarner Losh 399082c6764SWarner Loshmk_geli_gpt_ufs_uefi() { 400f438a143SAllan Jude src=$1 401f438a143SAllan Jude img=$2 402f438a143SAllan Jude mntpt=$3 403f438a143SAllan Jude geli=$4 404f438a143SAllan Jude scheme=$5 405f438a143SAllan Jude fs=$6 406f438a143SAllan Jude bios=$7 407f438a143SAllan Jude 408f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 409f438a143SAllan Jude md=$(mdconfig -f ${img}) 410f438a143SAllan Jude gpart create -s gpt ${md} 411*db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 412f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 413f438a143SAllan Jude # install-boot will make this bootable 414595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 415595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 416f438a143SAllan Jude newfs /dev/${md}p2.eli 417f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 418f438a143SAllan Jude cpsys ${src} ${mntpt} 419f438a143SAllan Jude # need to make a couple of tweaks 420f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 421f438a143SAllan Judegeom_eli_load=YES 422f438a143SAllan JudeEOF 423f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 424f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 425f438a143SAllan JudeEOF 426f438a143SAllan Jude 427f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 428f438a143SAllan Jude # end tweaks 429f438a143SAllan Jude umount -f ${mntpt} 430f438a143SAllan Jude geli detach ${md}p2 431f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 432f438a143SAllan Jude mdconfig -d -u ${md} 433082c6764SWarner Losh} 434082c6764SWarner Losh 435082c6764SWarner Loshmk_geli_gpt_ufs_both() { 436f438a143SAllan Jude src=$1 437f438a143SAllan Jude img=$2 438f438a143SAllan Jude mntpt=$3 439f438a143SAllan Jude geli=$4 440f438a143SAllan Jude scheme=$5 441f438a143SAllan Jude fs=$6 442f438a143SAllan Jude bios=$7 443f438a143SAllan Jude 444f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 445f438a143SAllan Jude md=$(mdconfig -f ${img}) 446f438a143SAllan Jude gpart create -s gpt ${md} 447*db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 448f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 449f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 450f438a143SAllan Jude # install-boot will make this bootable 451595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3 452595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p3 453f438a143SAllan Jude newfs /dev/${md}p3.eli 454f438a143SAllan Jude mount /dev/${md}p3.eli ${mntpt} 455f438a143SAllan Jude cpsys ${src} ${mntpt} 456f438a143SAllan Jude # need to make a couple of tweaks 457f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 458f438a143SAllan Judegeom_eli_load=YES 459f438a143SAllan JudeEOF 460f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 461f438a143SAllan Jude/dev/ada0p3.eli / ufs rw 1 1 462f438a143SAllan JudeEOF 463f438a143SAllan Jude 464f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 465f438a143SAllan Jude # end tweaks 466f438a143SAllan Jude umount -f ${mntpt} 467f438a143SAllan Jude geli detach ${md}p3 468f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 469f438a143SAllan Jude mdconfig -d -u ${md} 470082c6764SWarner Losh} 471082c6764SWarner Losh 472082c6764SWarner Loshmk_geli_gpt_zfs_legacy() { 473f438a143SAllan Jude src=$1 474f438a143SAllan Jude img=$2 475f438a143SAllan Jude mntpt=$3 476f438a143SAllan Jude geli=$4 477f438a143SAllan Jude scheme=$5 478f438a143SAllan Jude fs=$6 479f438a143SAllan Jude bios=$7 480f438a143SAllan Jude pool=geli-gpt-zfs-legacy 481f438a143SAllan Jude 482f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 483f438a143SAllan Jude md=$(mdconfig -f ${img}) 484f438a143SAllan Jude gpart create -s gpt ${md} 485f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 486f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 487f438a143SAllan Jude # install-boot will make this bootable 488595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 489595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 490f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli 491f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 492f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 493f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 494f438a143SAllan Jude cpsys ${src} ${mntpt} 495f438a143SAllan Jude # need to make a couple of tweaks 496d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 497f438a143SAllan Judezfs_load=YES 498f438a143SAllan Judeopensolaris_load=YES 499f438a143SAllan Judegeom_eli_load=YES 500f438a143SAllan JudeEOF 501f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 502f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 503f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 504f438a143SAllan Jude # end tweaks 505f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 506f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 507f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 508f438a143SAllan Jude zpool set autoexpand=on ${pool} 509f438a143SAllan Jude zpool export ${pool} 510f438a143SAllan Jude geli detach ${md}p2 511f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 512f438a143SAllan Jude mdconfig -d -u ${md} 513082c6764SWarner Losh} 514082c6764SWarner Losh 515082c6764SWarner Loshmk_geli_gpt_zfs_uefi() { 516f438a143SAllan Jude src=$1 517f438a143SAllan Jude img=$2 518f438a143SAllan Jude mntpt=$3 519f438a143SAllan Jude geli=$4 520f438a143SAllan Jude scheme=$5 521f438a143SAllan Jude fs=$6 522f438a143SAllan Jude bios=$7 523f438a143SAllan Jude pool=geli-gpt-zfs-uefi 524f438a143SAllan Jude 525f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 526f438a143SAllan Jude md=$(mdconfig -f ${img}) 527f438a143SAllan Jude gpart create -s gpt ${md} 528*db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 529f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 530f438a143SAllan Jude # install-boot will make this bootable 531595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 532595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 533f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli 534f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 535f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 536f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 537f438a143SAllan Jude cpsys ${src} ${mntpt} 538f438a143SAllan Jude # need to make a couple of tweaks 539d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 540f438a143SAllan Judezfs_load=YES 541f438a143SAllan Judeopensolaris_load=YES 542f438a143SAllan Judegeom_eli_load=YES 543f438a143SAllan JudeEOF 544f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 545f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 546f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 547f438a143SAllan Jude # end tweaks 548f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 549f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 550f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 551f438a143SAllan Jude zpool set autoexpand=on ${pool} 552f438a143SAllan Jude zpool export ${pool} 553f438a143SAllan Jude geli detach ${md}p2 554f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 555f438a143SAllan Jude mdconfig -d -u ${md} 556082c6764SWarner Losh} 557082c6764SWarner Losh 558082c6764SWarner Loshmk_geli_gpt_zfs_both() { 559f438a143SAllan Jude src=$1 560f438a143SAllan Jude img=$2 561f438a143SAllan Jude mntpt=$3 562f438a143SAllan Jude geli=$4 563f438a143SAllan Jude scheme=$5 564f438a143SAllan Jude fs=$6 565f438a143SAllan Jude bios=$7 566f438a143SAllan Jude pool=geli-gpt-zfs-both 567f438a143SAllan Jude 568f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 569f438a143SAllan Jude md=$(mdconfig -f ${img}) 570f438a143SAllan Jude gpart create -s gpt ${md} 571*db8b5613SRebecca Cran gpart add -t efi -s ${espsize}k -a 4k ${md} 572f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 573f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 574f438a143SAllan Jude # install-boot will make this bootable 575595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3 576595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p3 577f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli 578f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 579f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 580f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 581f438a143SAllan Jude cpsys ${src} ${mntpt} 582f438a143SAllan Jude # need to make a couple of tweaks 583f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 584f438a143SAllan Judezfs_load=YES 585f438a143SAllan Judeopensolaris_load=YES 586f438a143SAllan Judegeom_eli_load=YES 587f438a143SAllan JudeEOF 588f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 589f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 590f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 591f438a143SAllan Jude # end tweaks 592f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 593f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 594f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 595f438a143SAllan Jude zpool set autoexpand=on ${pool} 596f438a143SAllan Jude zpool export ${pool} 597f438a143SAllan Jude geli detach ${md}p3 598f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 599f438a143SAllan Jude mdconfig -d -u ${md} 600082c6764SWarner Losh} 601082c6764SWarner Losh 602f438a143SAllan Jude# GELI+MBR is not a valid configuration 603082c6764SWarner Loshmk_geli_mbr_ufs_legacy() { 604082c6764SWarner Losh} 605082c6764SWarner Losh 606082c6764SWarner Loshmk_geli_mbr_ufs_uefi() { 607082c6764SWarner Losh} 608082c6764SWarner Losh 609082c6764SWarner Loshmk_geli_mbr_ufs_both() { 610082c6764SWarner Losh} 611082c6764SWarner Losh 612082c6764SWarner Loshmk_geli_mbr_zfs_legacy() { 613082c6764SWarner Losh} 614082c6764SWarner Losh 615082c6764SWarner Loshmk_geli_mbr_zfs_uefi() { 616082c6764SWarner Losh} 617082c6764SWarner Losh 618082c6764SWarner Loshmk_geli_mbr_zfs_both() { 619082c6764SWarner Losh} 620082c6764SWarner Losh 621082c6764SWarner Losh# iso 622082c6764SWarner Losh# pxeldr 623082c6764SWarner Losh# u-boot 62422cf6021SWarner Losh# powerpc 62522cf6021SWarner Losh 626ba8d50d0SMarius Stroblmk_sparc64_nogeli_vtoc8_ufs_ofw() { 627ba8d50d0SMarius Strobl src=$1 628ba8d50d0SMarius Strobl img=$2 629ba8d50d0SMarius Strobl mntpt=$3 630ba8d50d0SMarius Strobl geli=$4 631ba8d50d0SMarius Strobl scheme=$5 632ba8d50d0SMarius Strobl fs=$6 633ba8d50d0SMarius Strobl bios=$7 634ba8d50d0SMarius Strobl 635ba8d50d0SMarius Strobl cat > ${src}/etc/fstab <<EOF 636ba8d50d0SMarius Strobl/dev/ada0a / ufs rw 1 1 637ba8d50d0SMarius StroblEOF 638ba8d50d0SMarius Strobl makefs -t ffs -B big -s 200m ${img} ${src} 639ba8d50d0SMarius Strobl md=$(mdconfig -f ${img}) 640ba8d50d0SMarius Strobl # For non-native builds, ensure that geom_part(4) supports VTOC8. 641ba8d50d0SMarius Strobl kldload geom_part_vtoc8.ko 642ba8d50d0SMarius Strobl gpart create -s VTOC8 ${md} 643ba8d50d0SMarius Strobl gpart add -t freebsd-ufs ${md} 644ba8d50d0SMarius Strobl ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 645ba8d50d0SMarius Strobl mdconfig -d -u ${md} 646ba8d50d0SMarius Strobl rm -f ${src}/etc/fstab 647ba8d50d0SMarius Strobl} 648ba8d50d0SMarius Strobl 6497b4b55e5SIan Leporeqser="-serial telnet::4444,server -nographic" 65022cf6021SWarner Losh 65122cf6021SWarner Losh# https://wiki.freebsd.org/QemuRecipes 65222cf6021SWarner Losh# aarch64 65322cf6021SWarner Loshqemu_aarch64_uefi() 65422cf6021SWarner Losh{ 65522cf6021SWarner Losh img=$1 65622cf6021SWarner Losh sh=$2 65722cf6021SWarner Losh 65822cf6021SWarner Losh echo "qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt \ 65922cf6021SWarner Losh -bios QEMU_EFI.fd ${qser} \ 66022cf6021SWarner Losh -drive if=none,file=${img},id=hd0 \ 66122cf6021SWarner Losh -device virtio-blk-device,drive=hd0" > $sh 662dfe34ceaSIan Lepore chmod 755 $sh 66322cf6021SWarner Losh# https://wiki.freebsd.org/arm64/QEMU also has 66422cf6021SWarner Losh# -device virtio-net-device,netdev=net0 66522cf6021SWarner Losh# -netdev user,id=net0 66622cf6021SWarner Losh} 66722cf6021SWarner Losh 66822cf6021SWarner Losh# Amd64 qemu 66922cf6021SWarner Loshqemu_amd64_legacy() 67022cf6021SWarner Losh{ 67122cf6021SWarner Losh img=$1 67222cf6021SWarner Losh sh=$2 67322cf6021SWarner Losh 67448cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh 675dfe34ceaSIan Lepore chmod 755 $sh 67622cf6021SWarner Losh} 67722cf6021SWarner Losh 67822cf6021SWarner Loshqemu_amd64_uefi() 67922cf6021SWarner Losh{ 68022cf6021SWarner Losh img=$1 68122cf6021SWarner Losh sh=$2 68222cf6021SWarner Losh 68348cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh 684dfe34ceaSIan Lepore chmod 755 $sh 68522cf6021SWarner Losh} 68622cf6021SWarner Losh 68722cf6021SWarner Loshqemu_amd64_both() 68822cf6021SWarner Losh{ 68922cf6021SWarner Losh img=$1 69022cf6021SWarner Losh sh=$2 69122cf6021SWarner Losh 69248cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh 69348cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh 694dfe34ceaSIan Lepore chmod 755 $sh 69522cf6021SWarner Losh} 69622cf6021SWarner Losh 69722cf6021SWarner Losh# arm 69822cf6021SWarner Losh# nothing listed? 69922cf6021SWarner Losh 70022cf6021SWarner Losh# i386 70122cf6021SWarner Loshqemu_i386_legacy() 70222cf6021SWarner Losh{ 70322cf6021SWarner Losh img=$1 70422cf6021SWarner Losh sh=$2 70522cf6021SWarner Losh 70622cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 707dfe34ceaSIan Lepore chmod 755 $sh 70822cf6021SWarner Losh} 70922cf6021SWarner Losh 71022cf6021SWarner Losh# Not yet supported 71122cf6021SWarner Loshqemu_i386_uefi() 71222cf6021SWarner Losh{ 71322cf6021SWarner Losh img=$1 71422cf6021SWarner Losh sh=$2 71522cf6021SWarner Losh 71622cf6021SWarner Losh echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh 717dfe34ceaSIan Lepore chmod 755 $sh 71822cf6021SWarner Losh} 71922cf6021SWarner Losh 72022cf6021SWarner Losh# Needs UEFI to be supported 72122cf6021SWarner Loshqemu_i386_both() 72222cf6021SWarner Losh{ 72322cf6021SWarner Losh img=$1 72422cf6021SWarner Losh sh=$2 72522cf6021SWarner Losh 72622cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 727712b4ca9SAllan Jude echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" >> $sh 728dfe34ceaSIan Lepore chmod 755 $sh 72922cf6021SWarner Losh} 73022cf6021SWarner Losh 731432b4921SIan Leporemake_one_image() 732432b4921SIan Lepore{ 733432b4921SIan Lepore local arch=${1?} 734432b4921SIan Lepore local geli=${2?} 735432b4921SIan Lepore local scheme=${3?} 736432b4921SIan Lepore local fs=${4?} 737432b4921SIan Lepore local bios=${5?} 738432b4921SIan Lepore 739432b4921SIan Lepore # Create sparse file and mount newly created filesystem(s) on it 740432b4921SIan Lepore img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 741432b4921SIan Lepore sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 742432b4921SIan Lepore echo "vvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvv" 743432b4921SIan Lepore rm -f ${img}* 744432b4921SIan Lepore eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 745432b4921SIan Lepore eval qemu_${arch}_${bios} ${img} ${sh} 746432b4921SIan Lepore [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 747432b4921SIan Lepore echo "^^^^^^^^^^^^^^ Created $img ^^^^^^^^^^^^^^^" 748432b4921SIan Lepore} 749432b4921SIan Lepore 75022cf6021SWarner Losh# mips 75122cf6021SWarner Losh# qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048 75222cf6021SWarner Losh 75322cf6021SWarner Losh# Powerpc -- doesn't work but maybe it would enough for testing -- needs details 75422cf6021SWarner Losh# powerpc64 75522cf6021SWarner Losh# qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw 75622cf6021SWarner Losh 75722cf6021SWarner Losh# sparc64 75822cf6021SWarner Losh# qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw 75922cf6021SWarner Losh 760082c6764SWarner Losh# Misc variables 761082c6764SWarner LoshSRCTOP=$(make -v SRCTOP) 762082c6764SWarner Loshcd ${SRCTOP}/stand 763082c6764SWarner LoshOBJDIR=$(make -v .OBJDIR) 764082c6764SWarner LoshIMGDIR=${OBJDIR}/boot-images 765082c6764SWarner Loshmkdir -p ${IMGDIR} 766082c6764SWarner LoshMNTPT=$(mktemp -d /tmp/stand-test.XXXXXX) 767082c6764SWarner Losh 768082c6764SWarner Losh# Setup the installed tree... 769082c6764SWarner LoshDESTDIR=${OBJDIR}/boot-tree 770082c6764SWarner Loshrm -rf ${DESTDIR} 771082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/defaults 772082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/kernel 773082c6764SWarner Loshcp /boot/kernel/kernel ${DESTDIR}/boot/kernel 774328884aeSWarner Loshecho -h -D -S115200 > ${DESTDIR}/boot.config 775d050cd6bSWarner Loshcat > ${DESTDIR}/boot/loader.conf <<EOF 776d050cd6bSWarner Loshconsole=comconsole 777d050cd6bSWarner Loshcomconsole_speed=115200 7781c70f60eSWarner Loshboot_serial=yes 7791c70f60eSWarner Loshboot_multicons=yes 780d050cd6bSWarner LoshEOF 781082c6764SWarner Losh# XXX 782082c6764SWarner Loshcp /boot/device.hints ${DESTDIR}/boot/device.hints 783082c6764SWarner Losh# Assume we're already built 784082c6764SWarner Loshmake install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_AS_USER=yes 78522cf6021SWarner Losh# Copy init, /bin/sh, minimal libraries and testing /etc/rc 78622cf6021SWarner Loshmkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \ 78722cf6021SWarner Losh ${DESTDIR}/lib ${DESTDIR}/libexec \ 78822cf6021SWarner Losh ${DESTDIR}/etc ${DESTDIR}/dev 789d050cd6bSWarner 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 790082c6764SWarner Losh cp $f ${DESTDIR}/$f 791082c6764SWarner Loshdone 79222cf6021SWarner Loshcat > ${DESTDIR}/etc/rc <<EOF 79322cf6021SWarner Losh#!/bin/sh 79422cf6021SWarner Losh 795d050cd6bSWarner Loshsysctl machdep.bootmethod 79622cf6021SWarner Loshecho "RC COMMAND RUNNING -- SUCCESS!!!!!" 79722cf6021SWarner Loshhalt -p 79822cf6021SWarner LoshEOF 799082c6764SWarner Losh 800432b4921SIan Lepore# If we were given exactly 5 args, go make that one image. 801432b4921SIan Lepore 802432b4921SIan Leporeif [ $# -eq 5 ]; then 803432b4921SIan Lepore make_one_image $* 804432b4921SIan Lepore exit 805432b4921SIan Leporefi 806432b4921SIan Lepore 807082c6764SWarner Losh# OK. Let the games begin 808082c6764SWarner Losh 80922cf6021SWarner Loshfor arch in amd64; do 810082c6764SWarner Losh for geli in nogeli geli; do 811082c6764SWarner Losh for scheme in gpt mbr; do 812082c6764SWarner Losh for fs in ufs zfs; do 813082c6764SWarner Losh for bios in legacy uefi both; do 814432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 815082c6764SWarner Losh done 816082c6764SWarner Losh done 817082c6764SWarner Losh done 818082c6764SWarner Losh done 81922cf6021SWarner Loshdone 820082c6764SWarner Losh 821082c6764SWarner Loshrmdir ${MNTPT} 82222cf6021SWarner Losh 82322cf6021SWarner Loshexit 0 82422cf6021SWarner Losh 82522cf6021SWarner Losh# Notes for the future 82622cf6021SWarner Losh 82722cf6021SWarner Loshfor arch in i386; do 82822cf6021SWarner Losh for geli in nogeli geli; do 82922cf6021SWarner Losh for scheme in gpt mbr; do 83022cf6021SWarner Losh for fs in ufs zfs; do 83122cf6021SWarner Losh for bios in legacy; do 832432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 83322cf6021SWarner Losh done 83422cf6021SWarner Losh done 83522cf6021SWarner Losh done 83622cf6021SWarner Losh done 83722cf6021SWarner Loshdone 83822cf6021SWarner Losh 83922cf6021SWarner Loshfor arch in arm aarch64; do 84022cf6021SWarner Losh for scheme in gpt mbr; do 84122cf6021SWarner Losh fs=ufs 84222cf6021SWarner Losh for bios in uboot efi; do 843432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 84422cf6021SWarner Losh done 84522cf6021SWarner Losh done 84622cf6021SWarner Loshdone 84722cf6021SWarner Losh 84822cf6021SWarner Loshfor arch in powerpc powerpc64; do 84922cf6021SWarner Losh for scheme in ppc-wtf; do 85022cf6021SWarner Losh fs=ufs 85122cf6021SWarner Losh for bios in ofw uboot chrp; do 852432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 85322cf6021SWarner Losh done 85422cf6021SWarner Losh done 85522cf6021SWarner Loshdone 85622cf6021SWarner Losh 85722cf6021SWarner Loshfor arch in sparc64; do 858ba8d50d0SMarius Strobl for geli in nogeli; do 859ba8d50d0SMarius Strobl for scheme in vtoc8; do 860ba8d50d0SMarius Strobl for fs in ufs; do 86122cf6021SWarner Losh for bios in ofw; do 862432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 86322cf6021SWarner Losh done 86422cf6021SWarner Losh done 86522cf6021SWarner Losh done 866ba8d50d0SMarius Strobl done 867ba8d50d0SMarius Strobldone 868