1082c6764SWarner Losh#!/bin/sh 2082c6764SWarner Losh 3082c6764SWarner Losh# $FreeBSD$ 4082c6764SWarner Losh 5*d050cd6bSWarner Loshdo_boot1_efi=0 6*d050cd6bSWarner Losh 7082c6764SWarner Losh# 8082c6764SWarner Losh# Builds all the bat-shit crazy combinations we support booting from, 9082c6764SWarner Losh# at least for amd64. It assume you have a ~sane kernel in /boot/kernel 10082c6764SWarner Losh# and copies that into the ~150MB root images we create (we create the du 11082c6764SWarner Losh# size of the kernel + 20MB 12082c6764SWarner Losh# 13082c6764SWarner Losh# Sad panda sez: this runs as root, but could be userland if someone 14082c6764SWarner Losh# creates userland geli and zfs tools. 15082c6764SWarner Losh# 16082c6764SWarner Losh# This assumes an external prograam install-boot.sh which will install 17082c6764SWarner Losh# the appropriate boot files in the appropriate locations. 18082c6764SWarner Losh# 19082c6764SWarner Losh# These images assume ada0 will be the root image. We should likely 20082c6764SWarner Losh# use labels, but we don't. 21082c6764SWarner Losh# 22082c6764SWarner Losh# ASsumes you've already rebuilt... maybe bad? Also maybe bad: the env 23082c6764SWarner Losh# vars should likely be conditionally set to allow better automation. 24082c6764SWarner Losh# 25082c6764SWarner Losh 26082c6764SWarner Loshcpsys() { 27082c6764SWarner Losh src=$1 28082c6764SWarner Losh dst=$2 29082c6764SWarner Losh 30082c6764SWarner Losh # Copy kernel + boot loader 31082c6764SWarner Losh (cd $src ; tar cf - .) | (cd $dst; tar xf -) 32082c6764SWarner Losh} 33082c6764SWarner Losh 34*d050cd6bSWarner Loshmake_esp() 35*d050cd6bSWarner Losh{ 36*d050cd6bSWarner Losh local src dst md mntpt 37*d050cd6bSWarner Losh src=$1 38*d050cd6bSWarner Losh dst=$2 39*d050cd6bSWarner Losh 40*d050cd6bSWarner Losh if [ "${do_boot1_efi}" -eq 1 ]; then 41*d050cd6bSWarner Losh cp ${src}/boot/boot1.efifat ${dst} 42*d050cd6bSWarner Losh else 43*d050cd6bSWarner Losh dd if=/dev/zero of=${dst} count=1 seek=$((100 * 1024 * 1024 / 512)) 44*d050cd6bSWarner Losh md=$(mdconfig -f ${dst}) 45*d050cd6bSWarner Losh newfs_msdos -a 32 /dev/${md} 46*d050cd6bSWarner Losh mntpt=$(mktemp -d /tmp/stand-test.XXXXXX) 47*d050cd6bSWarner Losh mount -t msdos /dev/${md} ${mntpt} 48*d050cd6bSWarner Losh# mkdir -p ${mntpt}/efi/freebsd # not yet 49*d050cd6bSWarner Losh mkdir -p ${mntpt}/efi/boot 50*d050cd6bSWarner Losh cp ${src}/boot/loader.efi ${mntpt}/efi/boot/bootx64.efi 51*d050cd6bSWarner Losh umount ${mntpt} 52*d050cd6bSWarner Losh rmdir ${mntpt} 53*d050cd6bSWarner Losh mdconfig -d -u ${md} 54*d050cd6bSWarner Losh fi 55*d050cd6bSWarner Losh} 56*d050cd6bSWarner Losh 57082c6764SWarner Loshmk_nogeli_gpt_ufs_legacy() { 58082c6764SWarner Losh src=$1 59082c6764SWarner Losh img=$2 60082c6764SWarner Losh 6122cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 6222cf6021SWarner Losh/dev/ada0p2 / ufs rw 1 1 6322cf6021SWarner LoshEOF 64082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p2 ${src} 65082c6764SWarner Losh mkimg -s gpt -b ${src}/boot/pmbr \ 66082c6764SWarner Losh -p freebsd-boot:=${src}/boot/gptboot \ 67082c6764SWarner Losh -p freebsd-ufs:=${img}.p2 -o ${img} 6822cf6021SWarner Losh rm -f ${src}/etc/fstab 69082c6764SWarner Losh} 70082c6764SWarner Losh 71082c6764SWarner Loshmk_nogeli_gpt_ufs_uefi() { 72082c6764SWarner Losh src=$1 73082c6764SWarner Losh img=$2 74082c6764SWarner Losh 7522cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 7622cf6021SWarner Losh/dev/ada0p2 / ufs rw 1 1 7722cf6021SWarner LoshEOF 78*d050cd6bSWarner Losh make_esp ${src} ${img}.p1 79082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p2 ${src} 80f438a143SAllan Jude mkimg -s gpt \ 8122cf6021SWarner Losh -p efi:=${img}.p1 \ 82082c6764SWarner Losh -p freebsd-ufs:=${img}.p2 -o ${img} 8322cf6021SWarner Losh rm -f ${src}/etc/fstab 84082c6764SWarner Losh} 85082c6764SWarner Losh 86082c6764SWarner Loshmk_nogeli_gpt_ufs_both() { 87082c6764SWarner Losh src=$1 88082c6764SWarner Losh img=$2 89082c6764SWarner Losh 9022cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 9122cf6021SWarner Losh/dev/ada0p3 / ufs rw 1 1 9222cf6021SWarner LoshEOF 93*d050cd6bSWarner Losh make_esp ${src} ${img}.p1 94082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p3 ${src} 95082c6764SWarner Losh # p1 is boot for uefi, p2 is boot for gpt, p3 is / 96082c6764SWarner Losh mkimg -b ${src}/boot/pmbr -s gpt \ 97*d050cd6bSWarner Losh -p efi:=${img}.p1 \ 98082c6764SWarner Losh -p freebsd-boot:=${src}/boot/gptboot \ 99082c6764SWarner Losh -p freebsd-ufs:=${img}.p3 \ 100082c6764SWarner Losh -o ${img} 10122cf6021SWarner Losh rm -f ${src}/etc/fstab 102082c6764SWarner Losh} 103082c6764SWarner Losh 104082c6764SWarner Loshmk_nogeli_gpt_zfs_legacy() { 105082c6764SWarner Losh src=$1 106082c6764SWarner Losh img=$2 107082c6764SWarner Losh mntpt=$3 108082c6764SWarner Losh geli=$4 109082c6764SWarner Losh scheme=$5 110082c6764SWarner Losh fs=$6 111082c6764SWarner Losh bios=$7 112082c6764SWarner Losh pool=nogeli-gpt-zfs-legacy 113082c6764SWarner Losh 114082c6764SWarner Losh dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 115082c6764SWarner Losh md=$(mdconfig -f ${img}) 116082c6764SWarner Losh gpart create -s gpt ${md} 117082c6764SWarner Losh gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 118082c6764SWarner Losh gpart add -t freebsd-zfs -l root $md 119082c6764SWarner Losh # install-boot will make this bootable 120082c6764SWarner Losh zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 121082c6764SWarner Losh zpool set bootfs=${pool} ${pool} 1222145d0ecSAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 123082c6764SWarner Losh # NB: The online guides go nuts customizing /var and other mountpoints here, no need 124082c6764SWarner Losh cpsys ${src} ${mntpt} 125082c6764SWarner Losh # need to make a couple of tweaks 126*d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 127082c6764SWarner Loshzfs_load=YES 128082c6764SWarner Loshopensolaris_load=YES 129082c6764SWarner LoshEOF 130082c6764SWarner Losh cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 131082c6764SWarner Losh cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 132082c6764SWarner Losh # end tweaks 1332145d0ecSAllan Jude zfs umount -f ${pool}/ROOT/default 1342145d0ecSAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 1352145d0ecSAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 136082c6764SWarner Losh zpool set autoexpand=on ${pool} 137082c6764SWarner Losh zpool export ${pool} 138082c6764SWarner Losh ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 139082c6764SWarner Losh mdconfig -d -u ${md} 140082c6764SWarner Losh} 141082c6764SWarner Losh 142082c6764SWarner Loshmk_nogeli_gpt_zfs_uefi() { 143712b4ca9SAllan Jude src=$1 144712b4ca9SAllan Jude img=$2 145712b4ca9SAllan Jude mntpt=$3 146712b4ca9SAllan Jude geli=$4 147712b4ca9SAllan Jude scheme=$5 148712b4ca9SAllan Jude fs=$6 149712b4ca9SAllan Jude bios=$7 150712b4ca9SAllan Jude pool=nogeli-gpt-zfs-uefi 151712b4ca9SAllan Jude 152712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 153712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 154712b4ca9SAllan Jude gpart create -s gpt ${md} 155712b4ca9SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 156712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 157712b4ca9SAllan Jude # install-boot will make this bootable 158712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 159712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 160712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 161712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 162712b4ca9SAllan Jude cpsys ${src} ${mntpt} 163712b4ca9SAllan Jude # need to make a couple of tweaks 164*d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 165712b4ca9SAllan Judezfs_load=YES 166712b4ca9SAllan Judeopensolaris_load=YES 167712b4ca9SAllan JudeEOF 168712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 169712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 170712b4ca9SAllan Jude # end tweaks 171712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 172712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 173712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 174712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 175712b4ca9SAllan Jude zpool export ${pool} 176712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 177712b4ca9SAllan Jude mdconfig -d -u ${md} 178082c6764SWarner Losh} 179082c6764SWarner Losh 180082c6764SWarner Loshmk_nogeli_gpt_zfs_both() { 181712b4ca9SAllan Jude src=$1 182712b4ca9SAllan Jude img=$2 183712b4ca9SAllan Jude mntpt=$3 184712b4ca9SAllan Jude geli=$4 185712b4ca9SAllan Jude scheme=$5 186712b4ca9SAllan Jude fs=$6 187712b4ca9SAllan Jude bios=$7 188712b4ca9SAllan Jude pool=nogeli-gpt-zfs-both 189712b4ca9SAllan Jude 190712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 191712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 192712b4ca9SAllan Jude gpart create -s gpt ${md} 193712b4ca9SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 194712b4ca9SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 195712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 196712b4ca9SAllan Jude # install-boot will make this bootable 197712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3 198712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 199712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 200712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 201712b4ca9SAllan Jude cpsys ${src} ${mntpt} 202712b4ca9SAllan Jude # need to make a couple of tweaks 203*d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 204712b4ca9SAllan Judezfs_load=YES 205712b4ca9SAllan Judeopensolaris_load=YES 206712b4ca9SAllan JudeEOF 207712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 208712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 209712b4ca9SAllan Jude # end tweaks 210712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 211712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 212712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 213712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 214712b4ca9SAllan Jude zpool export ${pool} 215712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 216712b4ca9SAllan Jude mdconfig -d -u ${md} 217082c6764SWarner Losh} 218082c6764SWarner Losh 219082c6764SWarner Loshmk_nogeli_mbr_ufs_legacy() { 22022cf6021SWarner Losh src=$1 22122cf6021SWarner Losh img=$2 22222cf6021SWarner Losh 22322cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 22422cf6021SWarner Losh/dev/ada0s1a / ufs rw 1 1 22522cf6021SWarner LoshEOF 22622cf6021SWarner Losh makefs -t ffs -B little -s 200m ${img}.s1a ${src} 22722cf6021SWarner Losh mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1 228f438a143SAllan Jude mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img} 22922cf6021SWarner Losh rm -f ${src}/etc/fstab 230082c6764SWarner Losh} 231082c6764SWarner Losh 232082c6764SWarner Loshmk_nogeli_mbr_ufs_uefi() { 233f438a143SAllan Jude src=$1 234f438a143SAllan Jude img=$2 235f438a143SAllan Jude 236f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 237f438a143SAllan Jude/dev/ada0s1a / ufs rw 1 1 238f438a143SAllan JudeEOF 239*d050cd6bSWarner Losh make_esp ${src} ${img}.s1 240f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 241f438a143SAllan Jude mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2 242f438a143SAllan Jude mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 243f438a143SAllan Jude rm -f ${src}/etc/fstab 244082c6764SWarner Losh} 245082c6764SWarner Losh 246082c6764SWarner Loshmk_nogeli_mbr_ufs_both() { 247f438a143SAllan Jude src=$1 248f438a143SAllan Jude img=$2 249f438a143SAllan Jude 250f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 251f438a143SAllan Jude/dev/ada0s1a / ufs rw 1 1 252f438a143SAllan JudeEOF 253*d050cd6bSWarner Losh make_esp ${src} ${img}.s1 254f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 255f438a143SAllan Jude mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2 256f438a143SAllan Jude mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 257f438a143SAllan Jude rm -f ${src}/etc/fstab 258082c6764SWarner Losh} 259082c6764SWarner Losh 260082c6764SWarner Loshmk_nogeli_mbr_zfs_legacy() { 261f438a143SAllan Jude src=$1 262f438a143SAllan Jude img=$2 263f438a143SAllan Jude mntpt=$3 264f438a143SAllan Jude geli=$4 265f438a143SAllan Jude scheme=$5 266f438a143SAllan Jude fs=$6 267f438a143SAllan Jude bios=$7 268f438a143SAllan Jude pool=nogeli-mbr-zfs-legacy 269f438a143SAllan Jude 270f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 271f438a143SAllan Jude md=$(mdconfig -f ${img}) 272f438a143SAllan Jude gpart create -s mbr ${md} 273f438a143SAllan Jude gpart add -t freebsd ${md} 274f438a143SAllan Jude gpart set -a active -i 1 ${md} 275f438a143SAllan Jude gpart create -s bsd ${md}s1 276f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s1 277f438a143SAllan Jude # install-boot will make this bootable 278f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a 279f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 280f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 281f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 282f438a143SAllan Jude cpsys ${src} ${mntpt} 283f438a143SAllan Jude # need to make a couple of tweaks 284*d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 285f438a143SAllan Judezfs_load=YES 286f438a143SAllan Judeopensolaris_load=YES 287f438a143SAllan JudeEOF 288f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 289f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 290f438a143SAllan Jude # end tweaks 291f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 292f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 293f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 294f438a143SAllan Jude zpool set autoexpand=on ${pool} 295f438a143SAllan Jude zpool export ${pool} 296f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 297f438a143SAllan Jude mdconfig -d -u ${md} 298082c6764SWarner Losh} 299082c6764SWarner Losh 300082c6764SWarner Loshmk_nogeli_mbr_zfs_uefi() { 301f438a143SAllan Jude src=$1 302f438a143SAllan Jude img=$2 303f438a143SAllan Jude mntpt=$3 304f438a143SAllan Jude geli=$4 305f438a143SAllan Jude scheme=$5 306f438a143SAllan Jude fs=$6 307f438a143SAllan Jude bios=$7 308f438a143SAllan Jude pool=nogeli-mbr-zfs-uefi 309f438a143SAllan Jude 310f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 311f438a143SAllan Jude md=$(mdconfig -f ${img}) 312f438a143SAllan Jude gpart create -s mbr ${md} 313f438a143SAllan Jude gpart add -t \!239 -s 800k ${md} 314f438a143SAllan Jude gpart add -t freebsd ${md} 315f438a143SAllan Jude gpart set -a active -i 2 ${md} 316f438a143SAllan Jude gpart create -s bsd ${md}s2 317f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 318f438a143SAllan Jude # install-boot will make this bootable 319f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 320f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 321f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 322f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 323f438a143SAllan Jude cpsys ${src} ${mntpt} 324f438a143SAllan Jude # need to make a couple of tweaks 325*d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 326f438a143SAllan Judezfs_load=YES 327f438a143SAllan Judeopensolaris_load=YES 328f438a143SAllan JudeEOF 329f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 330f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 331f438a143SAllan Jude # end tweaks 332f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 333f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 334f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 335f438a143SAllan Jude zpool set autoexpand=on ${pool} 336f438a143SAllan Jude zpool export ${pool} 337f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 338f438a143SAllan Jude mdconfig -d -u ${md} 339082c6764SWarner Losh} 340082c6764SWarner Losh 341082c6764SWarner Loshmk_nogeli_mbr_zfs_both() { 342f438a143SAllan Jude src=$1 343f438a143SAllan Jude img=$2 344f438a143SAllan Jude mntpt=$3 345f438a143SAllan Jude geli=$4 346f438a143SAllan Jude scheme=$5 347f438a143SAllan Jude fs=$6 348f438a143SAllan Jude bios=$7 349f438a143SAllan Jude pool=nogeli-mbr-zfs-both 350f438a143SAllan Jude 351f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 352f438a143SAllan Jude md=$(mdconfig -f ${img}) 353f438a143SAllan Jude gpart create -s mbr ${md} 354f438a143SAllan Jude gpart add -t \!239 -s 800k ${md} 355f438a143SAllan Jude gpart add -t freebsd ${md} 356f438a143SAllan Jude gpart set -a active -i 2 ${md} 357f438a143SAllan Jude gpart create -s bsd ${md}s2 358f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 359f438a143SAllan Jude # install-boot will make this bootable 360f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 361f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 362f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 363f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 364f438a143SAllan Jude cpsys ${src} ${mntpt} 365f438a143SAllan Jude # need to make a couple of tweaks 366*d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 367f438a143SAllan Judezfs_load=YES 368f438a143SAllan Judeopensolaris_load=YES 369f438a143SAllan JudeEOF 370f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 371f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 372f438a143SAllan Jude # end tweaks 373f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 374f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 375f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 376f438a143SAllan Jude zpool set autoexpand=on ${pool} 377f438a143SAllan Jude zpool export ${pool} 378f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 379f438a143SAllan Jude mdconfig -d -u ${md} 380082c6764SWarner Losh} 381082c6764SWarner Losh 382082c6764SWarner Loshmk_geli_gpt_ufs_legacy() { 383f438a143SAllan Jude src=$1 384f438a143SAllan Jude img=$2 385f438a143SAllan Jude mntpt=$3 386f438a143SAllan Jude geli=$4 387f438a143SAllan Jude scheme=$5 388f438a143SAllan Jude fs=$6 389f438a143SAllan Jude bios=$7 390f438a143SAllan Jude 391f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 392f438a143SAllan Jude md=$(mdconfig -f ${img}) 393f438a143SAllan Jude gpart create -s gpt ${md} 394f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 395f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 396f438a143SAllan Jude # install-boot will make this bootable 397f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2 398f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p2 399f438a143SAllan Jude newfs /dev/${md}p2.eli 400f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 401f438a143SAllan Jude cpsys ${src} ${mntpt} 402f438a143SAllan Jude # need to make a couple of tweaks 403f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 404f438a143SAllan Judegeom_eli_load=YES 405f438a143SAllan JudeEOF 406f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 407f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 408f438a143SAllan JudeEOF 409f438a143SAllan Jude 410f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 411f438a143SAllan Jude # end tweaks 412f438a143SAllan Jude umount -f ${mntpt} 413f438a143SAllan Jude geli detach ${md}p2 414f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 415f438a143SAllan Jude mdconfig -d -u ${md} 416082c6764SWarner Losh} 417082c6764SWarner Losh 418082c6764SWarner Loshmk_geli_gpt_ufs_uefi() { 419f438a143SAllan Jude src=$1 420f438a143SAllan Jude img=$2 421f438a143SAllan Jude mntpt=$3 422f438a143SAllan Jude geli=$4 423f438a143SAllan Jude scheme=$5 424f438a143SAllan Jude fs=$6 425f438a143SAllan Jude bios=$7 426f438a143SAllan Jude 427f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 428f438a143SAllan Jude md=$(mdconfig -f ${img}) 429f438a143SAllan Jude gpart create -s gpt ${md} 430f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 431f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 432f438a143SAllan Jude # install-boot will make this bootable 433f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2 434f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p2 435f438a143SAllan Jude newfs /dev/${md}p2.eli 436f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 437f438a143SAllan Jude cpsys ${src} ${mntpt} 438f438a143SAllan Jude # need to make a couple of tweaks 439f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 440f438a143SAllan Judegeom_eli_load=YES 441f438a143SAllan JudeEOF 442f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 443f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 444f438a143SAllan JudeEOF 445f438a143SAllan Jude 446f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 447f438a143SAllan Jude # end tweaks 448f438a143SAllan Jude umount -f ${mntpt} 449f438a143SAllan Jude geli detach ${md}p2 450f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 451f438a143SAllan Jude mdconfig -d -u ${md} 452082c6764SWarner Losh} 453082c6764SWarner Losh 454082c6764SWarner Loshmk_geli_gpt_ufs_both() { 455f438a143SAllan Jude src=$1 456f438a143SAllan Jude img=$2 457f438a143SAllan Jude mntpt=$3 458f438a143SAllan Jude geli=$4 459f438a143SAllan Jude scheme=$5 460f438a143SAllan Jude fs=$6 461f438a143SAllan Jude bios=$7 462f438a143SAllan Jude 463f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 464f438a143SAllan Jude md=$(mdconfig -f ${img}) 465f438a143SAllan Jude gpart create -s gpt ${md} 466f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 467f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 468f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 469f438a143SAllan Jude # install-boot will make this bootable 470f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p3 471f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p3 472f438a143SAllan Jude newfs /dev/${md}p3.eli 473f438a143SAllan Jude mount /dev/${md}p3.eli ${mntpt} 474f438a143SAllan Jude cpsys ${src} ${mntpt} 475f438a143SAllan Jude # need to make a couple of tweaks 476f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 477f438a143SAllan Judegeom_eli_load=YES 478f438a143SAllan JudeEOF 479f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 480f438a143SAllan Jude/dev/ada0p3.eli / ufs rw 1 1 481f438a143SAllan JudeEOF 482f438a143SAllan Jude 483f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 484f438a143SAllan Jude # end tweaks 485f438a143SAllan Jude umount -f ${mntpt} 486f438a143SAllan Jude geli detach ${md}p3 487f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 488f438a143SAllan Jude mdconfig -d -u ${md} 489082c6764SWarner Losh} 490082c6764SWarner Losh 491082c6764SWarner Loshmk_geli_gpt_zfs_legacy() { 492f438a143SAllan Jude src=$1 493f438a143SAllan Jude img=$2 494f438a143SAllan Jude mntpt=$3 495f438a143SAllan Jude geli=$4 496f438a143SAllan Jude scheme=$5 497f438a143SAllan Jude fs=$6 498f438a143SAllan Jude bios=$7 499f438a143SAllan Jude pool=geli-gpt-zfs-legacy 500f438a143SAllan Jude 501f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 502f438a143SAllan Jude md=$(mdconfig -f ${img}) 503f438a143SAllan Jude gpart create -s gpt ${md} 504f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 505f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 506f438a143SAllan Jude # install-boot will make this bootable 507f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2 508f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p2 509f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli 510f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 511f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 512f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 513f438a143SAllan Jude cpsys ${src} ${mntpt} 514f438a143SAllan Jude # need to make a couple of tweaks 515*d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 516f438a143SAllan Judezfs_load=YES 517f438a143SAllan Judeopensolaris_load=YES 518f438a143SAllan Judegeom_eli_load=YES 519f438a143SAllan JudeEOF 520f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 521f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 522f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 523f438a143SAllan Jude # end tweaks 524f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 525f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 526f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 527f438a143SAllan Jude zpool set autoexpand=on ${pool} 528f438a143SAllan Jude zpool export ${pool} 529f438a143SAllan Jude geli detach ${md}p2 530f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 531f438a143SAllan Jude mdconfig -d -u ${md} 532082c6764SWarner Losh} 533082c6764SWarner Losh 534082c6764SWarner Loshmk_geli_gpt_zfs_uefi() { 535f438a143SAllan Jude src=$1 536f438a143SAllan Jude img=$2 537f438a143SAllan Jude mntpt=$3 538f438a143SAllan Jude geli=$4 539f438a143SAllan Jude scheme=$5 540f438a143SAllan Jude fs=$6 541f438a143SAllan Jude bios=$7 542f438a143SAllan Jude pool=geli-gpt-zfs-uefi 543f438a143SAllan Jude 544f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 545f438a143SAllan Jude md=$(mdconfig -f ${img}) 546f438a143SAllan Jude gpart create -s gpt ${md} 547f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 548f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 549f438a143SAllan Jude # install-boot will make this bootable 550f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2 551f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p2 552f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli 553f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 554f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 555f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 556f438a143SAllan Jude cpsys ${src} ${mntpt} 557f438a143SAllan Jude # need to make a couple of tweaks 558*d050cd6bSWarner Losh cat >> ${mntpt}/boot/loader.conf <<EOF 559f438a143SAllan Judezfs_load=YES 560f438a143SAllan Judeopensolaris_load=YES 561f438a143SAllan Judegeom_eli_load=YES 562f438a143SAllan JudeEOF 563f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 564f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 565f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 566f438a143SAllan Jude # end tweaks 567f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 568f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 569f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 570f438a143SAllan Jude zpool set autoexpand=on ${pool} 571f438a143SAllan Jude zpool export ${pool} 572f438a143SAllan Jude geli detach ${md}p2 573f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 574f438a143SAllan Jude mdconfig -d -u ${md} 575082c6764SWarner Losh} 576082c6764SWarner Losh 577082c6764SWarner Loshmk_geli_gpt_zfs_both() { 578f438a143SAllan Jude src=$1 579f438a143SAllan Jude img=$2 580f438a143SAllan Jude mntpt=$3 581f438a143SAllan Jude geli=$4 582f438a143SAllan Jude scheme=$5 583f438a143SAllan Jude fs=$6 584f438a143SAllan Jude bios=$7 585f438a143SAllan Jude pool=geli-gpt-zfs-both 586f438a143SAllan Jude 587f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 588f438a143SAllan Jude md=$(mdconfig -f ${img}) 589f438a143SAllan Jude gpart create -s gpt ${md} 590f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 591f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 592f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 593f438a143SAllan Jude # install-boot will make this bootable 594f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p3 595f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p3 596f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli 597f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 598f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 599f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 600f438a143SAllan Jude cpsys ${src} ${mntpt} 601f438a143SAllan Jude # need to make a couple of tweaks 602f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 603f438a143SAllan Judezfs_load=YES 604f438a143SAllan Judeopensolaris_load=YES 605f438a143SAllan Judegeom_eli_load=YES 606f438a143SAllan JudeEOF 607f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 608f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 609f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 610f438a143SAllan Jude # end tweaks 611f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 612f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 613f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 614f438a143SAllan Jude zpool set autoexpand=on ${pool} 615f438a143SAllan Jude zpool export ${pool} 616f438a143SAllan Jude geli detach ${md}p3 617f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 618f438a143SAllan Jude mdconfig -d -u ${md} 619082c6764SWarner Losh} 620082c6764SWarner Losh 621f438a143SAllan Jude# GELI+MBR is not a valid configuration 622082c6764SWarner Loshmk_geli_mbr_ufs_legacy() { 623082c6764SWarner Losh} 624082c6764SWarner Losh 625082c6764SWarner Loshmk_geli_mbr_ufs_uefi() { 626082c6764SWarner Losh} 627082c6764SWarner Losh 628082c6764SWarner Loshmk_geli_mbr_ufs_both() { 629082c6764SWarner Losh} 630082c6764SWarner Losh 631082c6764SWarner Loshmk_geli_mbr_zfs_legacy() { 632082c6764SWarner Losh} 633082c6764SWarner Losh 634082c6764SWarner Loshmk_geli_mbr_zfs_uefi() { 635082c6764SWarner Losh} 636082c6764SWarner Losh 637082c6764SWarner Loshmk_geli_mbr_zfs_both() { 638082c6764SWarner Losh} 639082c6764SWarner Losh 640082c6764SWarner Losh# iso 641082c6764SWarner Losh# pxeldr 642082c6764SWarner Losh# u-boot 64322cf6021SWarner Losh# powerpc 64422cf6021SWarner Losh 645ba8d50d0SMarius Stroblmk_sparc64_nogeli_vtoc8_ufs_ofw() { 646ba8d50d0SMarius Strobl src=$1 647ba8d50d0SMarius Strobl img=$2 648ba8d50d0SMarius Strobl mntpt=$3 649ba8d50d0SMarius Strobl geli=$4 650ba8d50d0SMarius Strobl scheme=$5 651ba8d50d0SMarius Strobl fs=$6 652ba8d50d0SMarius Strobl bios=$7 653ba8d50d0SMarius Strobl 654ba8d50d0SMarius Strobl cat > ${src}/etc/fstab <<EOF 655ba8d50d0SMarius Strobl/dev/ada0a / ufs rw 1 1 656ba8d50d0SMarius StroblEOF 657ba8d50d0SMarius Strobl makefs -t ffs -B big -s 200m ${img} ${src} 658ba8d50d0SMarius Strobl md=$(mdconfig -f ${img}) 659ba8d50d0SMarius Strobl # For non-native builds, ensure that geom_part(4) supports VTOC8. 660ba8d50d0SMarius Strobl kldload geom_part_vtoc8.ko 661ba8d50d0SMarius Strobl gpart create -s VTOC8 ${md} 662ba8d50d0SMarius Strobl gpart add -t freebsd-ufs ${md} 663ba8d50d0SMarius Strobl ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 664ba8d50d0SMarius Strobl mdconfig -d -u ${md} 665ba8d50d0SMarius Strobl rm -f ${src}/etc/fstab 666ba8d50d0SMarius Strobl} 667ba8d50d0SMarius Strobl 66822cf6021SWarner Loshqser="-serial telnet::4444,server -nographic" 66922cf6021SWarner Losh 67022cf6021SWarner Losh# https://wiki.freebsd.org/QemuRecipes 67122cf6021SWarner Losh# aarch64 67222cf6021SWarner Loshqemu_aarch64_uefi() 67322cf6021SWarner Losh{ 67422cf6021SWarner Losh img=$1 67522cf6021SWarner Losh sh=$2 67622cf6021SWarner Losh 67722cf6021SWarner Losh echo "qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt \ 67822cf6021SWarner Losh -bios QEMU_EFI.fd ${qser} \ 67922cf6021SWarner Losh -drive if=none,file=${img},id=hd0 \ 68022cf6021SWarner Losh -device virtio-blk-device,drive=hd0" > $sh 68122cf6021SWarner Losh# https://wiki.freebsd.org/arm64/QEMU also has 68222cf6021SWarner Losh# -device virtio-net-device,netdev=net0 68322cf6021SWarner Losh# -netdev user,id=net0 68422cf6021SWarner Losh} 68522cf6021SWarner Losh 68622cf6021SWarner Losh# Amd64 qemu 68722cf6021SWarner Loshqemu_amd64_legacy() 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 69322cf6021SWarner Losh} 69422cf6021SWarner Losh 69522cf6021SWarner Loshqemu_amd64_uefi() 69622cf6021SWarner Losh{ 69722cf6021SWarner Losh img=$1 69822cf6021SWarner Losh sh=$2 69922cf6021SWarner Losh 70048cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh 70122cf6021SWarner Losh} 70222cf6021SWarner Losh 70322cf6021SWarner Loshqemu_amd64_both() 70422cf6021SWarner Losh{ 70522cf6021SWarner Losh img=$1 70622cf6021SWarner Losh sh=$2 70722cf6021SWarner Losh 70848cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh 70948cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh 71022cf6021SWarner Losh} 71122cf6021SWarner Losh 71222cf6021SWarner Losh# arm 71322cf6021SWarner Losh# nothing listed? 71422cf6021SWarner Losh 71522cf6021SWarner Losh# i386 71622cf6021SWarner Loshqemu_i386_legacy() 71722cf6021SWarner Losh{ 71822cf6021SWarner Losh img=$1 71922cf6021SWarner Losh sh=$2 72022cf6021SWarner Losh 72122cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 72222cf6021SWarner Losh} 72322cf6021SWarner Losh 72422cf6021SWarner Losh# Not yet supported 72522cf6021SWarner Loshqemu_i386_uefi() 72622cf6021SWarner Losh{ 72722cf6021SWarner Losh img=$1 72822cf6021SWarner Losh sh=$2 72922cf6021SWarner Losh 73022cf6021SWarner Losh echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh 73122cf6021SWarner Losh} 73222cf6021SWarner Losh 73322cf6021SWarner Losh# Needs UEFI to be supported 73422cf6021SWarner Loshqemu_i386_both() 73522cf6021SWarner Losh{ 73622cf6021SWarner Losh img=$1 73722cf6021SWarner Losh sh=$2 73822cf6021SWarner Losh 73922cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 740712b4ca9SAllan Jude echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" >> $sh 74122cf6021SWarner Losh} 74222cf6021SWarner Losh 74322cf6021SWarner Losh# mips 74422cf6021SWarner Losh# qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048 74522cf6021SWarner Losh 74622cf6021SWarner Losh# Powerpc -- doesn't work but maybe it would enough for testing -- needs details 74722cf6021SWarner Losh# powerpc64 74822cf6021SWarner Losh# qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw 74922cf6021SWarner Losh 75022cf6021SWarner Losh# sparc64 75122cf6021SWarner Losh# qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw 75222cf6021SWarner Losh 753082c6764SWarner Losh# Misc variables 754082c6764SWarner LoshSRCTOP=$(make -v SRCTOP) 755082c6764SWarner Loshcd ${SRCTOP}/stand 756082c6764SWarner LoshOBJDIR=$(make -v .OBJDIR) 757082c6764SWarner LoshIMGDIR=${OBJDIR}/boot-images 758082c6764SWarner Loshmkdir -p ${IMGDIR} 759082c6764SWarner LoshMNTPT=$(mktemp -d /tmp/stand-test.XXXXXX) 760082c6764SWarner Losh 761082c6764SWarner Losh# Setup the installed tree... 762082c6764SWarner LoshDESTDIR=${OBJDIR}/boot-tree 763082c6764SWarner Loshrm -rf ${DESTDIR} 764082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/defaults 765082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/kernel 766ba8d50d0SMarius Strobl# XXX boot1 exists only on sparc64 767ba8d50d0SMarius Stroblcp /boot/boot1 ${DESTDIR}/boot 768082c6764SWarner Loshcp /boot/kernel/kernel ${DESTDIR}/boot/kernel 769328884aeSWarner Loshecho -h -D -S115200 > ${DESTDIR}/boot.config 770*d050cd6bSWarner Loshcat > ${DESTDIR}/boot/loader.conf <<EOF 771*d050cd6bSWarner Loshconsole=comconsole 772*d050cd6bSWarner Loshcomconsole_speed=115200 773*d050cd6bSWarner Loshboot_serial=-h 774*d050cd6bSWarner LoshEOF 775082c6764SWarner Losh# XXX 776082c6764SWarner Loshcp /boot/device.hints ${DESTDIR}/boot/device.hints 777082c6764SWarner Losh# Assume we're already built 778082c6764SWarner Loshmake install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_AS_USER=yes 77922cf6021SWarner Losh# Copy init, /bin/sh, minimal libraries and testing /etc/rc 78022cf6021SWarner Loshmkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \ 78122cf6021SWarner Losh ${DESTDIR}/lib ${DESTDIR}/libexec \ 78222cf6021SWarner Losh ${DESTDIR}/etc ${DESTDIR}/dev 783*d050cd6bSWarner 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 784082c6764SWarner Losh cp $f ${DESTDIR}/$f 785082c6764SWarner Loshdone 78622cf6021SWarner Loshcat > ${DESTDIR}/etc/rc <<EOF 78722cf6021SWarner Losh#!/bin/sh 78822cf6021SWarner Losh 789*d050cd6bSWarner Loshsysctl machdep.bootmethod 79022cf6021SWarner Loshecho "RC COMMAND RUNNING -- SUCCESS!!!!!" 79122cf6021SWarner Loshhalt -p 79222cf6021SWarner LoshEOF 793082c6764SWarner Losh 794082c6764SWarner Losh# OK. Let the games begin 795082c6764SWarner Losh 79622cf6021SWarner Loshfor arch in amd64; do 797082c6764SWarner Losh for geli in nogeli geli; do 798082c6764SWarner Losh for scheme in gpt mbr; do 799082c6764SWarner Losh for fs in ufs zfs; do 800082c6764SWarner Losh for bios in legacy uefi both; do 801082c6764SWarner Losh # Create sparse file and mount newly created filesystem(s) on it 80222cf6021SWarner Losh img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 80322cf6021SWarner Losh sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 804082c6764SWarner Losh echo "vvvvvvvvvvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvvvvvvvvvv" 80522cf6021SWarner Losh rm -f ${img}* 806082c6764SWarner Losh eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 80722cf6021SWarner Losh eval qemu_${arch}_${bios} ${img} ${sh} 80822cf6021SWarner Losh [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 809082c6764SWarner Losh echo "^^^^^^^^^^^^^^^^^^^^^^ Creating $img ^^^^^^^^^^^^^^^^^^^^^^^" 810082c6764SWarner Losh done 811082c6764SWarner Losh done 812082c6764SWarner Losh done 813082c6764SWarner Losh done 81422cf6021SWarner Loshdone 815082c6764SWarner Losh 816082c6764SWarner Loshrmdir ${MNTPT} 81722cf6021SWarner Losh 81822cf6021SWarner Loshexit 0 81922cf6021SWarner Losh 82022cf6021SWarner Losh# Notes for the future 82122cf6021SWarner Losh 82222cf6021SWarner Loshfor arch in i386; do 82322cf6021SWarner Losh for geli in nogeli geli; do 82422cf6021SWarner Losh for scheme in gpt mbr; do 82522cf6021SWarner Losh for fs in ufs zfs; do 82622cf6021SWarner Losh for bios in legacy; do 82722cf6021SWarner Losh # Create sparse file and mount newly created filesystem(s) on it 82822cf6021SWarner Losh img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 82922cf6021SWarner Losh sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 83022cf6021SWarner Losh echo "vvvvvvvvvvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvvvvvvvvvv" 83122cf6021SWarner Losh rm -f ${img}* 83222cf6021SWarner Losh eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 83322cf6021SWarner Losh eval qemu_${arch}_${bios} ${img} ${sh} 83422cf6021SWarner Losh [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 83522cf6021SWarner Losh echo "^^^^^^^^^^^^^^^^^^^^^^ Creating $img ^^^^^^^^^^^^^^^^^^^^^^^" 83622cf6021SWarner Losh done 83722cf6021SWarner Losh done 83822cf6021SWarner Losh done 83922cf6021SWarner Losh done 84022cf6021SWarner Loshdone 84122cf6021SWarner Losh 84222cf6021SWarner Loshfor arch in arm aarch64; do 84322cf6021SWarner Losh for scheme in gpt mbr; do 84422cf6021SWarner Losh fs=ufs 84522cf6021SWarner Losh for bios in uboot efi; do 84622cf6021SWarner Losh # Create sparse file and mount newly created filesystem(s) on it 84722cf6021SWarner Losh img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 84822cf6021SWarner Losh sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 84922cf6021SWarner Losh echo "vvvvvvvvvvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvvvvvvvvvv" 85022cf6021SWarner Losh rm -f ${img}* 85122cf6021SWarner Losh eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 85222cf6021SWarner Losh eval qemu_${arch}_${bios} ${img} ${sh} 85322cf6021SWarner Losh [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 85422cf6021SWarner Losh echo "^^^^^^^^^^^^^^^^^^^^^^ Creating $img ^^^^^^^^^^^^^^^^^^^^^^^" 85522cf6021SWarner Losh done 85622cf6021SWarner Losh done 85722cf6021SWarner Loshdone 85822cf6021SWarner Losh 85922cf6021SWarner Loshfor arch in powerpc powerpc64; do 86022cf6021SWarner Losh for scheme in ppc-wtf; do 86122cf6021SWarner Losh fs=ufs 86222cf6021SWarner Losh for bios in ofw uboot chrp; do 86322cf6021SWarner Losh # Create sparse file and mount newly created filesystem(s) on it 86422cf6021SWarner Losh img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 86522cf6021SWarner Losh sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 86622cf6021SWarner Losh echo "vvvvvvvvvvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvvvvvvvvvv" 86722cf6021SWarner Losh rm -f ${img}* 86822cf6021SWarner Losh eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 86922cf6021SWarner Losh eval qemu_${arch}_${bios} ${img} ${sh} 87022cf6021SWarner Losh [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 87122cf6021SWarner Losh echo "^^^^^^^^^^^^^^^^^^^^^^ Creating $img ^^^^^^^^^^^^^^^^^^^^^^^" 87222cf6021SWarner Losh done 87322cf6021SWarner Losh done 87422cf6021SWarner Loshdone 87522cf6021SWarner Losh 87622cf6021SWarner Loshfor arch in sparc64; do 877ba8d50d0SMarius Strobl for geli in nogeli; do 878ba8d50d0SMarius Strobl for scheme in vtoc8; do 879ba8d50d0SMarius Strobl for fs in ufs; do 88022cf6021SWarner Losh for bios in ofw; do 88122cf6021SWarner Losh # Create sparse file and mount newly created filesystem(s) on it 88222cf6021SWarner Losh img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 88322cf6021SWarner Losh sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 88422cf6021SWarner Losh echo "vvvvvvvvvvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvvvvvvvvvv" 88522cf6021SWarner Losh rm -f ${img}* 886ba8d50d0SMarius Strobl eval mk_${arch}_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 88722cf6021SWarner Losh eval qemu_${arch}_${bios} ${img} ${sh} 88822cf6021SWarner Losh [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 88922cf6021SWarner Losh echo "^^^^^^^^^^^^^^^^^^^^^^ Creating $img ^^^^^^^^^^^^^^^^^^^^^^^" 89022cf6021SWarner Losh done 89122cf6021SWarner Losh done 89222cf6021SWarner Losh done 893ba8d50d0SMarius Strobl done 894ba8d50d0SMarius Strobldone 895