1082c6764SWarner Losh#!/bin/sh 2082c6764SWarner Losh 3082c6764SWarner Losh# $FreeBSD$ 4082c6764SWarner Losh 5*7b4b55e5SIan Leporepassphrase=passphrase 6*7b4b55e5SIan Leporeiterations=50000 7595deaf7SIan Lepore 8d050cd6bSWarner Loshdo_boot1_efi=0 9d050cd6bSWarner Losh 10082c6764SWarner Losh# 11082c6764SWarner Losh# Builds all the bat-shit crazy combinations we support booting from, 12082c6764SWarner Losh# at least for amd64. It assume you have a ~sane kernel in /boot/kernel 13082c6764SWarner Losh# and copies that into the ~150MB root images we create (we create the du 14082c6764SWarner Losh# size of the kernel + 20MB 15082c6764SWarner Losh# 16082c6764SWarner Losh# Sad panda sez: this runs as root, but could be userland if someone 17082c6764SWarner Losh# creates userland geli and zfs tools. 18082c6764SWarner Losh# 19082c6764SWarner Losh# This assumes an external prograam install-boot.sh which will install 20082c6764SWarner Losh# the appropriate boot files in the appropriate locations. 21082c6764SWarner Losh# 22082c6764SWarner Losh# These images assume ada0 will be the root image. We should likely 23082c6764SWarner Losh# use labels, but we don't. 24082c6764SWarner Losh# 25082c6764SWarner Losh# ASsumes you've already rebuilt... maybe bad? Also maybe bad: the env 26082c6764SWarner Losh# vars should likely be conditionally set to allow better automation. 27082c6764SWarner Losh# 28082c6764SWarner Losh 29082c6764SWarner Loshcpsys() { 30082c6764SWarner Losh src=$1 31082c6764SWarner Losh dst=$2 32082c6764SWarner Losh 33082c6764SWarner Losh # Copy kernel + boot loader 34082c6764SWarner Losh (cd $src ; tar cf - .) | (cd $dst; tar xf -) 35082c6764SWarner Losh} 36082c6764SWarner Losh 37d050cd6bSWarner Loshmake_esp() 38d050cd6bSWarner Losh{ 39d050cd6bSWarner Losh local src dst md mntpt 40d050cd6bSWarner Losh src=$1 41d050cd6bSWarner Losh dst=$2 42d050cd6bSWarner Losh 43d050cd6bSWarner Losh if [ "${do_boot1_efi}" -eq 1 ]; then 44d050cd6bSWarner Losh cp ${src}/boot/boot1.efifat ${dst} 45d050cd6bSWarner Losh else 46d050cd6bSWarner Losh dd if=/dev/zero of=${dst} count=1 seek=$((100 * 1024 * 1024 / 512)) 47d050cd6bSWarner Losh md=$(mdconfig -f ${dst}) 48d050cd6bSWarner Losh newfs_msdos -a 32 /dev/${md} 49d050cd6bSWarner Losh mntpt=$(mktemp -d /tmp/stand-test.XXXXXX) 50d050cd6bSWarner Losh mount -t msdos /dev/${md} ${mntpt} 51d050cd6bSWarner Losh# mkdir -p ${mntpt}/efi/freebsd # not yet 52d050cd6bSWarner Losh mkdir -p ${mntpt}/efi/boot 53d050cd6bSWarner Losh cp ${src}/boot/loader.efi ${mntpt}/efi/boot/bootx64.efi 54d050cd6bSWarner Losh umount ${mntpt} 55d050cd6bSWarner Losh rmdir ${mntpt} 56d050cd6bSWarner Losh mdconfig -d -u ${md} 57d050cd6bSWarner Losh fi 58d050cd6bSWarner Losh} 59d050cd6bSWarner Losh 60082c6764SWarner Loshmk_nogeli_gpt_ufs_legacy() { 61082c6764SWarner Losh src=$1 62082c6764SWarner Losh img=$2 63082c6764SWarner Losh 6422cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 6522cf6021SWarner Losh/dev/ada0p2 / ufs rw 1 1 6622cf6021SWarner LoshEOF 67082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p2 ${src} 68082c6764SWarner Losh mkimg -s gpt -b ${src}/boot/pmbr \ 69082c6764SWarner Losh -p freebsd-boot:=${src}/boot/gptboot \ 70082c6764SWarner Losh -p freebsd-ufs:=${img}.p2 -o ${img} 7122cf6021SWarner Losh rm -f ${src}/etc/fstab 72082c6764SWarner Losh} 73082c6764SWarner Losh 74082c6764SWarner Loshmk_nogeli_gpt_ufs_uefi() { 75082c6764SWarner Losh src=$1 76082c6764SWarner Losh img=$2 77082c6764SWarner Losh 7822cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 7922cf6021SWarner Losh/dev/ada0p2 / ufs rw 1 1 8022cf6021SWarner LoshEOF 81d050cd6bSWarner Losh make_esp ${src} ${img}.p1 82082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p2 ${src} 83f438a143SAllan Jude mkimg -s gpt \ 8422cf6021SWarner Losh -p efi:=${img}.p1 \ 85082c6764SWarner Losh -p freebsd-ufs:=${img}.p2 -o ${img} 8622cf6021SWarner Losh rm -f ${src}/etc/fstab 87082c6764SWarner Losh} 88082c6764SWarner Losh 89082c6764SWarner Loshmk_nogeli_gpt_ufs_both() { 90082c6764SWarner Losh src=$1 91082c6764SWarner Losh img=$2 92082c6764SWarner Losh 9322cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 9422cf6021SWarner Losh/dev/ada0p3 / ufs rw 1 1 9522cf6021SWarner LoshEOF 96d050cd6bSWarner Losh make_esp ${src} ${img}.p1 97082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p3 ${src} 98082c6764SWarner Losh # p1 is boot for uefi, p2 is boot for gpt, p3 is / 99082c6764SWarner Losh mkimg -b ${src}/boot/pmbr -s gpt \ 100d050cd6bSWarner Losh -p efi:=${img}.p1 \ 101082c6764SWarner Losh -p freebsd-boot:=${src}/boot/gptboot \ 102082c6764SWarner Losh -p freebsd-ufs:=${img}.p3 \ 103082c6764SWarner Losh -o ${img} 10422cf6021SWarner Losh rm -f ${src}/etc/fstab 105082c6764SWarner Losh} 106082c6764SWarner Losh 107082c6764SWarner Loshmk_nogeli_gpt_zfs_legacy() { 108082c6764SWarner Losh src=$1 109082c6764SWarner Losh img=$2 110082c6764SWarner Losh mntpt=$3 111082c6764SWarner Losh geli=$4 112082c6764SWarner Losh scheme=$5 113082c6764SWarner Losh fs=$6 114082c6764SWarner Losh bios=$7 115082c6764SWarner Losh pool=nogeli-gpt-zfs-legacy 116082c6764SWarner Losh 117082c6764SWarner Losh dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 118082c6764SWarner Losh md=$(mdconfig -f ${img}) 119082c6764SWarner Losh gpart create -s gpt ${md} 120082c6764SWarner Losh gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 121082c6764SWarner Losh gpart add -t freebsd-zfs -l root $md 122082c6764SWarner Losh # install-boot will make this bootable 123082c6764SWarner Losh zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 124082c6764SWarner Losh zpool set bootfs=${pool} ${pool} 1252145d0ecSAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 126082c6764SWarner Losh # NB: The online guides go nuts customizing /var and other mountpoints here, no need 127082c6764SWarner Losh cpsys ${src} ${mntpt} 128082c6764SWarner Losh # need to make a couple of tweaks 129d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 130082c6764SWarner Loshzfs_load=YES 131082c6764SWarner Loshopensolaris_load=YES 132082c6764SWarner LoshEOF 133082c6764SWarner Losh cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 134082c6764SWarner Losh cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 135082c6764SWarner Losh # end tweaks 1362145d0ecSAllan Jude zfs umount -f ${pool}/ROOT/default 1372145d0ecSAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 1382145d0ecSAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 139082c6764SWarner Losh zpool set autoexpand=on ${pool} 140082c6764SWarner Losh zpool export ${pool} 141082c6764SWarner Losh ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 142082c6764SWarner Losh mdconfig -d -u ${md} 143082c6764SWarner Losh} 144082c6764SWarner Losh 145082c6764SWarner Loshmk_nogeli_gpt_zfs_uefi() { 146712b4ca9SAllan Jude src=$1 147712b4ca9SAllan Jude img=$2 148712b4ca9SAllan Jude mntpt=$3 149712b4ca9SAllan Jude geli=$4 150712b4ca9SAllan Jude scheme=$5 151712b4ca9SAllan Jude fs=$6 152712b4ca9SAllan Jude bios=$7 153712b4ca9SAllan Jude pool=nogeli-gpt-zfs-uefi 154712b4ca9SAllan Jude 155712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 156712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 157712b4ca9SAllan Jude gpart create -s gpt ${md} 158712b4ca9SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 159712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 160712b4ca9SAllan Jude # install-boot will make this bootable 161712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 162712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 163712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 164712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 165712b4ca9SAllan Jude cpsys ${src} ${mntpt} 166712b4ca9SAllan Jude # need to make a couple of tweaks 167d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 168712b4ca9SAllan Judezfs_load=YES 169712b4ca9SAllan Judeopensolaris_load=YES 170712b4ca9SAllan JudeEOF 171712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 172712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 173712b4ca9SAllan Jude # end tweaks 174712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 175712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 176712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 177712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 178712b4ca9SAllan Jude zpool export ${pool} 179712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 180712b4ca9SAllan Jude mdconfig -d -u ${md} 181082c6764SWarner Losh} 182082c6764SWarner Losh 183082c6764SWarner Loshmk_nogeli_gpt_zfs_both() { 184712b4ca9SAllan Jude src=$1 185712b4ca9SAllan Jude img=$2 186712b4ca9SAllan Jude mntpt=$3 187712b4ca9SAllan Jude geli=$4 188712b4ca9SAllan Jude scheme=$5 189712b4ca9SAllan Jude fs=$6 190712b4ca9SAllan Jude bios=$7 191712b4ca9SAllan Jude pool=nogeli-gpt-zfs-both 192712b4ca9SAllan Jude 193712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 194712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 195712b4ca9SAllan Jude gpart create -s gpt ${md} 196712b4ca9SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 197712b4ca9SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 198712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 199712b4ca9SAllan Jude # install-boot will make this bootable 200712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3 201712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 202712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 203712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 204712b4ca9SAllan Jude cpsys ${src} ${mntpt} 205712b4ca9SAllan Jude # need to make a couple of tweaks 206d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 207712b4ca9SAllan Judezfs_load=YES 208712b4ca9SAllan Judeopensolaris_load=YES 209712b4ca9SAllan JudeEOF 210712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 211712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 212712b4ca9SAllan Jude # end tweaks 213712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 214712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 215712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 216712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 217712b4ca9SAllan Jude zpool export ${pool} 218712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 219712b4ca9SAllan Jude mdconfig -d -u ${md} 220082c6764SWarner Losh} 221082c6764SWarner Losh 222082c6764SWarner Loshmk_nogeli_mbr_ufs_legacy() { 22322cf6021SWarner Losh src=$1 22422cf6021SWarner Losh img=$2 22522cf6021SWarner Losh 22622cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 22722cf6021SWarner Losh/dev/ada0s1a / ufs rw 1 1 22822cf6021SWarner LoshEOF 22922cf6021SWarner Losh makefs -t ffs -B little -s 200m ${img}.s1a ${src} 23022cf6021SWarner Losh mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1 231f438a143SAllan Jude mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img} 23222cf6021SWarner Losh rm -f ${src}/etc/fstab 233082c6764SWarner Losh} 234082c6764SWarner Losh 235082c6764SWarner Loshmk_nogeli_mbr_ufs_uefi() { 236f438a143SAllan Jude src=$1 237f438a143SAllan Jude img=$2 238f438a143SAllan Jude 239f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 240c7940ca2SIan Lepore/dev/ada0s2a / ufs rw 1 1 241f438a143SAllan JudeEOF 242d050cd6bSWarner Losh make_esp ${src} ${img}.s1 243f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 244f438a143SAllan Jude mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2 245f438a143SAllan Jude mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 246f438a143SAllan Jude rm -f ${src}/etc/fstab 247082c6764SWarner Losh} 248082c6764SWarner Losh 249082c6764SWarner Loshmk_nogeli_mbr_ufs_both() { 250f438a143SAllan Jude src=$1 251f438a143SAllan Jude img=$2 252f438a143SAllan Jude 253f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 254c7940ca2SIan Lepore/dev/ada0s2a / ufs rw 1 1 255f438a143SAllan JudeEOF 256d050cd6bSWarner Losh make_esp ${src} ${img}.s1 257f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 258f438a143SAllan Jude mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2 259f438a143SAllan Jude mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 260f438a143SAllan Jude rm -f ${src}/etc/fstab 261082c6764SWarner Losh} 262082c6764SWarner Losh 263082c6764SWarner Loshmk_nogeli_mbr_zfs_legacy() { 264f438a143SAllan Jude src=$1 265f438a143SAllan Jude img=$2 266f438a143SAllan Jude mntpt=$3 267f438a143SAllan Jude geli=$4 268f438a143SAllan Jude scheme=$5 269f438a143SAllan Jude fs=$6 270f438a143SAllan Jude bios=$7 271f438a143SAllan Jude pool=nogeli-mbr-zfs-legacy 272f438a143SAllan Jude 273f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 274f438a143SAllan Jude md=$(mdconfig -f ${img}) 275f438a143SAllan Jude gpart create -s mbr ${md} 276f438a143SAllan Jude gpart add -t freebsd ${md} 277f438a143SAllan Jude gpart set -a active -i 1 ${md} 278f438a143SAllan Jude gpart create -s bsd ${md}s1 279f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s1 280f438a143SAllan Jude # install-boot will make this bootable 281f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a 282f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 283f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 284f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 285f438a143SAllan Jude cpsys ${src} ${mntpt} 286f438a143SAllan Jude # need to make a couple of tweaks 287d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 288f438a143SAllan Judezfs_load=YES 289f438a143SAllan Judeopensolaris_load=YES 290f438a143SAllan JudeEOF 291f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 292f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 293f438a143SAllan Jude # end tweaks 294f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 295f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 296f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 297f438a143SAllan Jude zpool set autoexpand=on ${pool} 298f438a143SAllan Jude zpool export ${pool} 299f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 300f438a143SAllan Jude mdconfig -d -u ${md} 301082c6764SWarner Losh} 302082c6764SWarner Losh 303082c6764SWarner Loshmk_nogeli_mbr_zfs_uefi() { 304f438a143SAllan Jude src=$1 305f438a143SAllan Jude img=$2 306f438a143SAllan Jude mntpt=$3 307f438a143SAllan Jude geli=$4 308f438a143SAllan Jude scheme=$5 309f438a143SAllan Jude fs=$6 310f438a143SAllan Jude bios=$7 311f438a143SAllan Jude pool=nogeli-mbr-zfs-uefi 312f438a143SAllan Jude 313f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 314f438a143SAllan Jude md=$(mdconfig -f ${img}) 315f438a143SAllan Jude gpart create -s mbr ${md} 316f438a143SAllan Jude gpart add -t \!239 -s 800k ${md} 317f438a143SAllan Jude gpart add -t freebsd ${md} 318f438a143SAllan Jude gpart set -a active -i 2 ${md} 319f438a143SAllan Jude gpart create -s bsd ${md}s2 320f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 321f438a143SAllan Jude # install-boot will make this bootable 322f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 323f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 324f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 325f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 326f438a143SAllan Jude cpsys ${src} ${mntpt} 327f438a143SAllan Jude # need to make a couple of tweaks 328d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 329f438a143SAllan Judezfs_load=YES 330f438a143SAllan Judeopensolaris_load=YES 331f438a143SAllan JudeEOF 332f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 333f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 334f438a143SAllan Jude # end tweaks 335f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 336f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 337f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 338f438a143SAllan Jude zpool set autoexpand=on ${pool} 339f438a143SAllan Jude zpool export ${pool} 340f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 341f438a143SAllan Jude mdconfig -d -u ${md} 342082c6764SWarner Losh} 343082c6764SWarner Losh 344082c6764SWarner Loshmk_nogeli_mbr_zfs_both() { 345f438a143SAllan Jude src=$1 346f438a143SAllan Jude img=$2 347f438a143SAllan Jude mntpt=$3 348f438a143SAllan Jude geli=$4 349f438a143SAllan Jude scheme=$5 350f438a143SAllan Jude fs=$6 351f438a143SAllan Jude bios=$7 352f438a143SAllan Jude pool=nogeli-mbr-zfs-both 353f438a143SAllan Jude 354f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 355f438a143SAllan Jude md=$(mdconfig -f ${img}) 356f438a143SAllan Jude gpart create -s mbr ${md} 357f438a143SAllan Jude gpart add -t \!239 -s 800k ${md} 358f438a143SAllan Jude gpart add -t freebsd ${md} 359f438a143SAllan Jude gpart set -a active -i 2 ${md} 360f438a143SAllan Jude gpart create -s bsd ${md}s2 361f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 362f438a143SAllan Jude # install-boot will make this bootable 363f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 364f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 365f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 366f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 367f438a143SAllan Jude cpsys ${src} ${mntpt} 368f438a143SAllan Jude # need to make a couple of tweaks 369d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 370f438a143SAllan Judezfs_load=YES 371f438a143SAllan Judeopensolaris_load=YES 372f438a143SAllan JudeEOF 373f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 374f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 375f438a143SAllan Jude # end tweaks 376f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 377f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 378f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 379f438a143SAllan Jude zpool set autoexpand=on ${pool} 380f438a143SAllan Jude zpool export ${pool} 381f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 382f438a143SAllan Jude mdconfig -d -u ${md} 383082c6764SWarner Losh} 384082c6764SWarner Losh 385082c6764SWarner Loshmk_geli_gpt_ufs_legacy() { 386f438a143SAllan Jude src=$1 387f438a143SAllan Jude img=$2 388f438a143SAllan Jude mntpt=$3 389f438a143SAllan Jude geli=$4 390f438a143SAllan Jude scheme=$5 391f438a143SAllan Jude fs=$6 392f438a143SAllan Jude bios=$7 393f438a143SAllan Jude 394f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 395f438a143SAllan Jude md=$(mdconfig -f ${img}) 396f438a143SAllan Jude gpart create -s gpt ${md} 397f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 398f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 399f438a143SAllan Jude # install-boot will make this bootable 400595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 401595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 402f438a143SAllan Jude newfs /dev/${md}p2.eli 403f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 404f438a143SAllan Jude cpsys ${src} ${mntpt} 405f438a143SAllan Jude # need to make a couple of tweaks 406f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 407f438a143SAllan Judegeom_eli_load=YES 408f438a143SAllan JudeEOF 409f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 410f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 411f438a143SAllan JudeEOF 412f438a143SAllan Jude 413f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 414f438a143SAllan Jude # end tweaks 415f438a143SAllan Jude umount -f ${mntpt} 416f438a143SAllan Jude geli detach ${md}p2 417f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 418f438a143SAllan Jude mdconfig -d -u ${md} 419082c6764SWarner Losh} 420082c6764SWarner Losh 421082c6764SWarner Loshmk_geli_gpt_ufs_uefi() { 422f438a143SAllan Jude src=$1 423f438a143SAllan Jude img=$2 424f438a143SAllan Jude mntpt=$3 425f438a143SAllan Jude geli=$4 426f438a143SAllan Jude scheme=$5 427f438a143SAllan Jude fs=$6 428f438a143SAllan Jude bios=$7 429f438a143SAllan Jude 430f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 431f438a143SAllan Jude md=$(mdconfig -f ${img}) 432f438a143SAllan Jude gpart create -s gpt ${md} 433f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 434f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 435f438a143SAllan Jude # install-boot will make this bootable 436595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 437595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 438f438a143SAllan Jude newfs /dev/${md}p2.eli 439f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 440f438a143SAllan Jude cpsys ${src} ${mntpt} 441f438a143SAllan Jude # need to make a couple of tweaks 442f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 443f438a143SAllan Judegeom_eli_load=YES 444f438a143SAllan JudeEOF 445f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 446f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 447f438a143SAllan JudeEOF 448f438a143SAllan Jude 449f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 450f438a143SAllan Jude # end tweaks 451f438a143SAllan Jude umount -f ${mntpt} 452f438a143SAllan Jude geli detach ${md}p2 453f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 454f438a143SAllan Jude mdconfig -d -u ${md} 455082c6764SWarner Losh} 456082c6764SWarner Losh 457082c6764SWarner Loshmk_geli_gpt_ufs_both() { 458f438a143SAllan Jude src=$1 459f438a143SAllan Jude img=$2 460f438a143SAllan Jude mntpt=$3 461f438a143SAllan Jude geli=$4 462f438a143SAllan Jude scheme=$5 463f438a143SAllan Jude fs=$6 464f438a143SAllan Jude bios=$7 465f438a143SAllan Jude 466f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 467f438a143SAllan Jude md=$(mdconfig -f ${img}) 468f438a143SAllan Jude gpart create -s gpt ${md} 469f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 470f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 471f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 472f438a143SAllan Jude # install-boot will make this bootable 473595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3 474595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p3 475f438a143SAllan Jude newfs /dev/${md}p3.eli 476f438a143SAllan Jude mount /dev/${md}p3.eli ${mntpt} 477f438a143SAllan Jude cpsys ${src} ${mntpt} 478f438a143SAllan Jude # need to make a couple of tweaks 479f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 480f438a143SAllan Judegeom_eli_load=YES 481f438a143SAllan JudeEOF 482f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 483f438a143SAllan Jude/dev/ada0p3.eli / ufs rw 1 1 484f438a143SAllan JudeEOF 485f438a143SAllan Jude 486f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 487f438a143SAllan Jude # end tweaks 488f438a143SAllan Jude umount -f ${mntpt} 489f438a143SAllan Jude geli detach ${md}p3 490f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 491f438a143SAllan Jude mdconfig -d -u ${md} 492082c6764SWarner Losh} 493082c6764SWarner Losh 494082c6764SWarner Loshmk_geli_gpt_zfs_legacy() { 495f438a143SAllan Jude src=$1 496f438a143SAllan Jude img=$2 497f438a143SAllan Jude mntpt=$3 498f438a143SAllan Jude geli=$4 499f438a143SAllan Jude scheme=$5 500f438a143SAllan Jude fs=$6 501f438a143SAllan Jude bios=$7 502f438a143SAllan Jude pool=geli-gpt-zfs-legacy 503f438a143SAllan Jude 504f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 505f438a143SAllan Jude md=$(mdconfig -f ${img}) 506f438a143SAllan Jude gpart create -s gpt ${md} 507f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 508f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 509f438a143SAllan Jude # install-boot will make this bootable 510595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 511595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 512f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli 513f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 514f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 515f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 516f438a143SAllan Jude cpsys ${src} ${mntpt} 517f438a143SAllan Jude # need to make a couple of tweaks 518d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 519f438a143SAllan Judezfs_load=YES 520f438a143SAllan Judeopensolaris_load=YES 521f438a143SAllan Judegeom_eli_load=YES 522f438a143SAllan JudeEOF 523f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 524f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 525f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 526f438a143SAllan Jude # end tweaks 527f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 528f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 529f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 530f438a143SAllan Jude zpool set autoexpand=on ${pool} 531f438a143SAllan Jude zpool export ${pool} 532f438a143SAllan Jude geli detach ${md}p2 533f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 534f438a143SAllan Jude mdconfig -d -u ${md} 535082c6764SWarner Losh} 536082c6764SWarner Losh 537082c6764SWarner Loshmk_geli_gpt_zfs_uefi() { 538f438a143SAllan Jude src=$1 539f438a143SAllan Jude img=$2 540f438a143SAllan Jude mntpt=$3 541f438a143SAllan Jude geli=$4 542f438a143SAllan Jude scheme=$5 543f438a143SAllan Jude fs=$6 544f438a143SAllan Jude bios=$7 545f438a143SAllan Jude pool=geli-gpt-zfs-uefi 546f438a143SAllan Jude 547f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 548f438a143SAllan Jude md=$(mdconfig -f ${img}) 549f438a143SAllan Jude gpart create -s gpt ${md} 550f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 551f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 552f438a143SAllan Jude # install-boot will make this bootable 553595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2 554595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p2 555f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli 556f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 557f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 558f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 559f438a143SAllan Jude cpsys ${src} ${mntpt} 560f438a143SAllan Jude # need to make a couple of tweaks 561d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 562f438a143SAllan Judezfs_load=YES 563f438a143SAllan Judeopensolaris_load=YES 564f438a143SAllan Judegeom_eli_load=YES 565f438a143SAllan JudeEOF 566f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 567f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 568f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 569f438a143SAllan Jude # end tweaks 570f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 571f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 572f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 573f438a143SAllan Jude zpool set autoexpand=on ${pool} 574f438a143SAllan Jude zpool export ${pool} 575f438a143SAllan Jude geli detach ${md}p2 576f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 577f438a143SAllan Jude mdconfig -d -u ${md} 578082c6764SWarner Losh} 579082c6764SWarner Losh 580082c6764SWarner Loshmk_geli_gpt_zfs_both() { 581f438a143SAllan Jude src=$1 582f438a143SAllan Jude img=$2 583f438a143SAllan Jude mntpt=$3 584f438a143SAllan Jude geli=$4 585f438a143SAllan Jude scheme=$5 586f438a143SAllan Jude fs=$6 587f438a143SAllan Jude bios=$7 588f438a143SAllan Jude pool=geli-gpt-zfs-both 589f438a143SAllan Jude 590f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 591f438a143SAllan Jude md=$(mdconfig -f ${img}) 592f438a143SAllan Jude gpart create -s gpt ${md} 593f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 594f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 595f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 596f438a143SAllan Jude # install-boot will make this bootable 597595deaf7SIan Lepore echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3 598595deaf7SIan Lepore echo ${passphrase} | geli attach -j - ${md}p3 599f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli 600f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 601f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 602f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 603f438a143SAllan Jude cpsys ${src} ${mntpt} 604f438a143SAllan Jude # need to make a couple of tweaks 605f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 606f438a143SAllan Judezfs_load=YES 607f438a143SAllan Judeopensolaris_load=YES 608f438a143SAllan Judegeom_eli_load=YES 609f438a143SAllan JudeEOF 610f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 611f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 612f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 613f438a143SAllan Jude # end tweaks 614f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 615f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 616f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 617f438a143SAllan Jude zpool set autoexpand=on ${pool} 618f438a143SAllan Jude zpool export ${pool} 619f438a143SAllan Jude geli detach ${md}p3 620f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 621f438a143SAllan Jude mdconfig -d -u ${md} 622082c6764SWarner Losh} 623082c6764SWarner Losh 624f438a143SAllan Jude# GELI+MBR is not a valid configuration 625082c6764SWarner Loshmk_geli_mbr_ufs_legacy() { 626082c6764SWarner Losh} 627082c6764SWarner Losh 628082c6764SWarner Loshmk_geli_mbr_ufs_uefi() { 629082c6764SWarner Losh} 630082c6764SWarner Losh 631082c6764SWarner Loshmk_geli_mbr_ufs_both() { 632082c6764SWarner Losh} 633082c6764SWarner Losh 634082c6764SWarner Loshmk_geli_mbr_zfs_legacy() { 635082c6764SWarner Losh} 636082c6764SWarner Losh 637082c6764SWarner Loshmk_geli_mbr_zfs_uefi() { 638082c6764SWarner Losh} 639082c6764SWarner Losh 640082c6764SWarner Loshmk_geli_mbr_zfs_both() { 641082c6764SWarner Losh} 642082c6764SWarner Losh 643082c6764SWarner Losh# iso 644082c6764SWarner Losh# pxeldr 645082c6764SWarner Losh# u-boot 64622cf6021SWarner Losh# powerpc 64722cf6021SWarner Losh 648ba8d50d0SMarius Stroblmk_sparc64_nogeli_vtoc8_ufs_ofw() { 649ba8d50d0SMarius Strobl src=$1 650ba8d50d0SMarius Strobl img=$2 651ba8d50d0SMarius Strobl mntpt=$3 652ba8d50d0SMarius Strobl geli=$4 653ba8d50d0SMarius Strobl scheme=$5 654ba8d50d0SMarius Strobl fs=$6 655ba8d50d0SMarius Strobl bios=$7 656ba8d50d0SMarius Strobl 657ba8d50d0SMarius Strobl cat > ${src}/etc/fstab <<EOF 658ba8d50d0SMarius Strobl/dev/ada0a / ufs rw 1 1 659ba8d50d0SMarius StroblEOF 660ba8d50d0SMarius Strobl makefs -t ffs -B big -s 200m ${img} ${src} 661ba8d50d0SMarius Strobl md=$(mdconfig -f ${img}) 662ba8d50d0SMarius Strobl # For non-native builds, ensure that geom_part(4) supports VTOC8. 663ba8d50d0SMarius Strobl kldload geom_part_vtoc8.ko 664ba8d50d0SMarius Strobl gpart create -s VTOC8 ${md} 665ba8d50d0SMarius Strobl gpart add -t freebsd-ufs ${md} 666ba8d50d0SMarius Strobl ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 667ba8d50d0SMarius Strobl mdconfig -d -u ${md} 668ba8d50d0SMarius Strobl rm -f ${src}/etc/fstab 669ba8d50d0SMarius Strobl} 670ba8d50d0SMarius Strobl 671*7b4b55e5SIan Leporeqser="-serial telnet::4444,server -nographic" 67222cf6021SWarner Losh 67322cf6021SWarner Losh# https://wiki.freebsd.org/QemuRecipes 67422cf6021SWarner Losh# aarch64 67522cf6021SWarner Loshqemu_aarch64_uefi() 67622cf6021SWarner Losh{ 67722cf6021SWarner Losh img=$1 67822cf6021SWarner Losh sh=$2 67922cf6021SWarner Losh 68022cf6021SWarner Losh echo "qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt \ 68122cf6021SWarner Losh -bios QEMU_EFI.fd ${qser} \ 68222cf6021SWarner Losh -drive if=none,file=${img},id=hd0 \ 68322cf6021SWarner Losh -device virtio-blk-device,drive=hd0" > $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 69622cf6021SWarner Losh} 69722cf6021SWarner Losh 69822cf6021SWarner Loshqemu_amd64_uefi() 69922cf6021SWarner Losh{ 70022cf6021SWarner Losh img=$1 70122cf6021SWarner Losh sh=$2 70222cf6021SWarner Losh 70348cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh 70422cf6021SWarner Losh} 70522cf6021SWarner Losh 70622cf6021SWarner Loshqemu_amd64_both() 70722cf6021SWarner Losh{ 70822cf6021SWarner Losh img=$1 70922cf6021SWarner Losh sh=$2 71022cf6021SWarner Losh 71148cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh 71248cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh 71322cf6021SWarner Losh} 71422cf6021SWarner Losh 71522cf6021SWarner Losh# arm 71622cf6021SWarner Losh# nothing listed? 71722cf6021SWarner Losh 71822cf6021SWarner Losh# i386 71922cf6021SWarner Loshqemu_i386_legacy() 72022cf6021SWarner Losh{ 72122cf6021SWarner Losh img=$1 72222cf6021SWarner Losh sh=$2 72322cf6021SWarner Losh 72422cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 72522cf6021SWarner Losh} 72622cf6021SWarner Losh 72722cf6021SWarner Losh# Not yet supported 72822cf6021SWarner Loshqemu_i386_uefi() 72922cf6021SWarner Losh{ 73022cf6021SWarner Losh img=$1 73122cf6021SWarner Losh sh=$2 73222cf6021SWarner Losh 73322cf6021SWarner Losh echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh 73422cf6021SWarner Losh} 73522cf6021SWarner Losh 73622cf6021SWarner Losh# Needs UEFI to be supported 73722cf6021SWarner Loshqemu_i386_both() 73822cf6021SWarner Losh{ 73922cf6021SWarner Losh img=$1 74022cf6021SWarner Losh sh=$2 74122cf6021SWarner Losh 74222cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 743712b4ca9SAllan Jude echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" >> $sh 74422cf6021SWarner Losh} 74522cf6021SWarner Losh 746432b4921SIan Leporemake_one_image() 747432b4921SIan Lepore{ 748432b4921SIan Lepore local arch=${1?} 749432b4921SIan Lepore local geli=${2?} 750432b4921SIan Lepore local scheme=${3?} 751432b4921SIan Lepore local fs=${4?} 752432b4921SIan Lepore local bios=${5?} 753432b4921SIan Lepore 754432b4921SIan Lepore # Create sparse file and mount newly created filesystem(s) on it 755432b4921SIan Lepore img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 756432b4921SIan Lepore sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 757432b4921SIan Lepore echo "vvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvv" 758432b4921SIan Lepore rm -f ${img}* 759432b4921SIan Lepore eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 760432b4921SIan Lepore eval qemu_${arch}_${bios} ${img} ${sh} 761432b4921SIan Lepore [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 762432b4921SIan Lepore echo "^^^^^^^^^^^^^^ Created $img ^^^^^^^^^^^^^^^" 763432b4921SIan Lepore} 764432b4921SIan Lepore 76522cf6021SWarner Losh# mips 76622cf6021SWarner Losh# qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048 76722cf6021SWarner Losh 76822cf6021SWarner Losh# Powerpc -- doesn't work but maybe it would enough for testing -- needs details 76922cf6021SWarner Losh# powerpc64 77022cf6021SWarner Losh# qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw 77122cf6021SWarner Losh 77222cf6021SWarner Losh# sparc64 77322cf6021SWarner Losh# qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw 77422cf6021SWarner Losh 775082c6764SWarner Losh# Misc variables 776082c6764SWarner LoshSRCTOP=$(make -v SRCTOP) 777082c6764SWarner Loshcd ${SRCTOP}/stand 778082c6764SWarner LoshOBJDIR=$(make -v .OBJDIR) 779082c6764SWarner LoshIMGDIR=${OBJDIR}/boot-images 780082c6764SWarner Loshmkdir -p ${IMGDIR} 781082c6764SWarner LoshMNTPT=$(mktemp -d /tmp/stand-test.XXXXXX) 782082c6764SWarner Losh 783082c6764SWarner Losh# Setup the installed tree... 784082c6764SWarner LoshDESTDIR=${OBJDIR}/boot-tree 785082c6764SWarner Loshrm -rf ${DESTDIR} 786082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/defaults 787082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/kernel 788ba8d50d0SMarius Strobl# XXX boot1 exists only on sparc64 789ba8d50d0SMarius Stroblcp /boot/boot1 ${DESTDIR}/boot 790082c6764SWarner Loshcp /boot/kernel/kernel ${DESTDIR}/boot/kernel 791328884aeSWarner Loshecho -h -D -S115200 > ${DESTDIR}/boot.config 792d050cd6bSWarner Loshcat > ${DESTDIR}/boot/loader.conf <<EOF 793d050cd6bSWarner Loshconsole=comconsole 794d050cd6bSWarner Loshcomconsole_speed=115200 795d050cd6bSWarner Loshboot_serial=-h 796d050cd6bSWarner LoshEOF 797082c6764SWarner Losh# XXX 798082c6764SWarner Loshcp /boot/device.hints ${DESTDIR}/boot/device.hints 799082c6764SWarner Losh# Assume we're already built 800082c6764SWarner Loshmake install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_AS_USER=yes 80122cf6021SWarner Losh# Copy init, /bin/sh, minimal libraries and testing /etc/rc 80222cf6021SWarner Loshmkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \ 80322cf6021SWarner Losh ${DESTDIR}/lib ${DESTDIR}/libexec \ 80422cf6021SWarner Losh ${DESTDIR}/etc ${DESTDIR}/dev 805d050cd6bSWarner 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 806082c6764SWarner Losh cp $f ${DESTDIR}/$f 807082c6764SWarner Loshdone 80822cf6021SWarner Loshcat > ${DESTDIR}/etc/rc <<EOF 80922cf6021SWarner Losh#!/bin/sh 81022cf6021SWarner Losh 811d050cd6bSWarner Loshsysctl machdep.bootmethod 81222cf6021SWarner Loshecho "RC COMMAND RUNNING -- SUCCESS!!!!!" 81322cf6021SWarner Loshhalt -p 81422cf6021SWarner LoshEOF 815082c6764SWarner Losh 816432b4921SIan Lepore# If we were given exactly 5 args, go make that one image. 817432b4921SIan Lepore 818432b4921SIan Leporeif [ $# -eq 5 ]; then 819432b4921SIan Lepore make_one_image $* 820432b4921SIan Lepore exit 821432b4921SIan Leporefi 822432b4921SIan Lepore 823082c6764SWarner Losh# OK. Let the games begin 824082c6764SWarner Losh 82522cf6021SWarner Loshfor arch in amd64; do 826082c6764SWarner Losh for geli in nogeli geli; do 827082c6764SWarner Losh for scheme in gpt mbr; do 828082c6764SWarner Losh for fs in ufs zfs; do 829082c6764SWarner Losh for bios in legacy uefi both; do 830432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 831082c6764SWarner Losh done 832082c6764SWarner Losh done 833082c6764SWarner Losh done 834082c6764SWarner Losh done 83522cf6021SWarner Loshdone 836082c6764SWarner Losh 837082c6764SWarner Loshrmdir ${MNTPT} 83822cf6021SWarner Losh 83922cf6021SWarner Loshexit 0 84022cf6021SWarner Losh 84122cf6021SWarner Losh# Notes for the future 84222cf6021SWarner Losh 84322cf6021SWarner Loshfor arch in i386; do 84422cf6021SWarner Losh for geli in nogeli geli; do 84522cf6021SWarner Losh for scheme in gpt mbr; do 84622cf6021SWarner Losh for fs in ufs zfs; do 84722cf6021SWarner Losh for bios in legacy; do 848432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 84922cf6021SWarner Losh done 85022cf6021SWarner Losh done 85122cf6021SWarner Losh done 85222cf6021SWarner Losh done 85322cf6021SWarner Loshdone 85422cf6021SWarner Losh 85522cf6021SWarner Loshfor arch in arm aarch64; do 85622cf6021SWarner Losh for scheme in gpt mbr; do 85722cf6021SWarner Losh fs=ufs 85822cf6021SWarner Losh for bios in uboot efi; do 859432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 86022cf6021SWarner Losh done 86122cf6021SWarner Losh done 86222cf6021SWarner Loshdone 86322cf6021SWarner Losh 86422cf6021SWarner Loshfor arch in powerpc powerpc64; do 86522cf6021SWarner Losh for scheme in ppc-wtf; do 86622cf6021SWarner Losh fs=ufs 86722cf6021SWarner Losh for bios in ofw uboot chrp; 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 sparc64; do 874ba8d50d0SMarius Strobl for geli in nogeli; do 875ba8d50d0SMarius Strobl for scheme in vtoc8; do 876ba8d50d0SMarius Strobl for fs in ufs; do 87722cf6021SWarner Losh for bios in ofw; do 878432b4921SIan Lepore make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios} 87922cf6021SWarner Losh done 88022cf6021SWarner Losh done 88122cf6021SWarner Losh done 882ba8d50d0SMarius Strobl done 883ba8d50d0SMarius Strobldone 884