1082c6764SWarner Losh#!/bin/sh 2082c6764SWarner Losh 3082c6764SWarner Losh# $FreeBSD$ 4082c6764SWarner Losh 5082c6764SWarner Losh# 6082c6764SWarner Losh# Builds all the bat-shit crazy combinations we support booting from, 7082c6764SWarner Losh# at least for amd64. It assume you have a ~sane kernel in /boot/kernel 8082c6764SWarner Losh# and copies that into the ~150MB root images we create (we create the du 9082c6764SWarner Losh# size of the kernel + 20MB 10082c6764SWarner Losh# 11082c6764SWarner Losh# Sad panda sez: this runs as root, but could be userland if someone 12082c6764SWarner Losh# creates userland geli and zfs tools. 13082c6764SWarner Losh# 14082c6764SWarner Losh# This assumes an external prograam install-boot.sh which will install 15082c6764SWarner Losh# the appropriate boot files in the appropriate locations. 16082c6764SWarner Losh# 17082c6764SWarner Losh# These images assume ada0 will be the root image. We should likely 18082c6764SWarner Losh# use labels, but we don't. 19082c6764SWarner Losh# 20082c6764SWarner Losh# ASsumes you've already rebuilt... maybe bad? Also maybe bad: the env 21082c6764SWarner Losh# vars should likely be conditionally set to allow better automation. 22082c6764SWarner Losh# 23082c6764SWarner Losh 24082c6764SWarner Loshcpsys() { 25082c6764SWarner Losh src=$1 26082c6764SWarner Losh dst=$2 27082c6764SWarner Losh 28082c6764SWarner Losh # Copy kernel + boot loader 29082c6764SWarner Losh (cd $src ; tar cf - .) | (cd $dst; tar xf -) 30082c6764SWarner Losh} 31082c6764SWarner Losh 32082c6764SWarner Loshmk_nogeli_gpt_ufs_legacy() { 33082c6764SWarner Losh src=$1 34082c6764SWarner Losh img=$2 35082c6764SWarner Losh 3622cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 3722cf6021SWarner Losh/dev/ada0p2 / ufs rw 1 1 3822cf6021SWarner LoshEOF 39082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p2 ${src} 40082c6764SWarner Losh mkimg -s gpt -b ${src}/boot/pmbr \ 41082c6764SWarner Losh -p freebsd-boot:=${src}/boot/gptboot \ 42082c6764SWarner Losh -p freebsd-ufs:=${img}.p2 -o ${img} 4322cf6021SWarner Losh rm -f ${src}/etc/fstab 44082c6764SWarner Losh} 45082c6764SWarner Losh 46082c6764SWarner Loshmk_nogeli_gpt_ufs_uefi() { 47082c6764SWarner Losh src=$1 48082c6764SWarner Losh img=$2 49082c6764SWarner Losh 5022cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 5122cf6021SWarner Losh/dev/ada0p2 / ufs rw 1 1 5222cf6021SWarner LoshEOF 5322cf6021SWarner Losh# XXX need to make msdos part for this to work XXXX 54*f438a143SAllan Jude cp ${src}/boot/boot1.efifat ${img}.p1 55082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p2 ${src} 56*f438a143SAllan Jude mkimg -s gpt \ 5722cf6021SWarner Losh -p efi:=${img}.p1 \ 58082c6764SWarner Losh -p freebsd-ufs:=${img}.p2 -o ${img} 5922cf6021SWarner Losh rm -f ${src}/etc/fstab 60082c6764SWarner Losh} 61082c6764SWarner Losh 62082c6764SWarner Loshmk_nogeli_gpt_ufs_both() { 63082c6764SWarner Losh src=$1 64082c6764SWarner Losh img=$2 65082c6764SWarner Losh 6622cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 6722cf6021SWarner Losh/dev/ada0p3 / ufs rw 1 1 6822cf6021SWarner LoshEOF 6922cf6021SWarner Losh # XXX need to make msdos part for this to work XXXX 70*f438a143SAllan Jude cp ${src}/boot/boot1.efifat ${img}.p1 71082c6764SWarner Losh makefs -t ffs -B little -s 200m ${img}.p3 ${src} 72082c6764SWarner Losh # p1 is boot for uefi, p2 is boot for gpt, p3 is / 73082c6764SWarner Losh mkimg -b ${src}/boot/pmbr -s gpt \ 74082c6764SWarner Losh -p efi:=${src}/boot/boot1.efifat \ 75082c6764SWarner Losh -p freebsd-boot:=${src}/boot/gptboot \ 76082c6764SWarner Losh -p freebsd-ufs:=${img}.p3 \ 77082c6764SWarner Losh -o ${img} 7822cf6021SWarner Losh rm -f ${src}/etc/fstab 79082c6764SWarner Losh} 80082c6764SWarner Losh 81082c6764SWarner Loshmk_nogeli_gpt_zfs_legacy() { 82082c6764SWarner Losh src=$1 83082c6764SWarner Losh img=$2 84082c6764SWarner Losh mntpt=$3 85082c6764SWarner Losh geli=$4 86082c6764SWarner Losh scheme=$5 87082c6764SWarner Losh fs=$6 88082c6764SWarner Losh bios=$7 89082c6764SWarner Losh pool=nogeli-gpt-zfs-legacy 90082c6764SWarner Losh 91082c6764SWarner Losh dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 92082c6764SWarner Losh md=$(mdconfig -f ${img}) 93082c6764SWarner Losh gpart create -s gpt ${md} 94082c6764SWarner Losh gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 95082c6764SWarner Losh gpart add -t freebsd-zfs -l root $md 96082c6764SWarner Losh # install-boot will make this bootable 97082c6764SWarner Losh zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 98082c6764SWarner Losh zpool set bootfs=${pool} ${pool} 992145d0ecSAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 100082c6764SWarner Losh # NB: The online guides go nuts customizing /var and other mountpoints here, no need 101082c6764SWarner Losh cpsys ${src} ${mntpt} 102082c6764SWarner Losh # need to make a couple of tweaks 103082c6764SWarner Losh cat > ${mntpt}/boot/loader.conf <<EOF 104082c6764SWarner Loshzfs_load=YES 105082c6764SWarner Loshopensolaris_load=YES 106082c6764SWarner LoshEOF 107082c6764SWarner Losh cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 108082c6764SWarner Losh cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 109082c6764SWarner Losh # end tweaks 1102145d0ecSAllan Jude zfs umount -f ${pool}/ROOT/default 1112145d0ecSAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 1122145d0ecSAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 113082c6764SWarner Losh zpool set autoexpand=on ${pool} 114082c6764SWarner Losh zpool export ${pool} 115082c6764SWarner Losh ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 116082c6764SWarner Losh mdconfig -d -u ${md} 117082c6764SWarner Losh} 118082c6764SWarner Losh 119082c6764SWarner Loshmk_nogeli_gpt_zfs_uefi() { 120712b4ca9SAllan Jude src=$1 121712b4ca9SAllan Jude img=$2 122712b4ca9SAllan Jude mntpt=$3 123712b4ca9SAllan Jude geli=$4 124712b4ca9SAllan Jude scheme=$5 125712b4ca9SAllan Jude fs=$6 126712b4ca9SAllan Jude bios=$7 127712b4ca9SAllan Jude pool=nogeli-gpt-zfs-uefi 128712b4ca9SAllan Jude 129712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 130712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 131712b4ca9SAllan Jude gpart create -s gpt ${md} 132712b4ca9SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 133712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 134712b4ca9SAllan Jude # install-boot will make this bootable 135712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2 136712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 137712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 138712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 139712b4ca9SAllan Jude cpsys ${src} ${mntpt} 140712b4ca9SAllan Jude # need to make a couple of tweaks 141712b4ca9SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 142712b4ca9SAllan Judezfs_load=YES 143712b4ca9SAllan Judeopensolaris_load=YES 144712b4ca9SAllan JudeEOF 145712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 146712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 147712b4ca9SAllan Jude # end tweaks 148712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 149712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 150712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 151712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 152712b4ca9SAllan Jude zpool export ${pool} 153712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 154712b4ca9SAllan Jude mdconfig -d -u ${md} 155082c6764SWarner Losh} 156082c6764SWarner Losh 157082c6764SWarner Loshmk_nogeli_gpt_zfs_both() { 158712b4ca9SAllan Jude src=$1 159712b4ca9SAllan Jude img=$2 160712b4ca9SAllan Jude mntpt=$3 161712b4ca9SAllan Jude geli=$4 162712b4ca9SAllan Jude scheme=$5 163712b4ca9SAllan Jude fs=$6 164712b4ca9SAllan Jude bios=$7 165712b4ca9SAllan Jude pool=nogeli-gpt-zfs-both 166712b4ca9SAllan Jude 167712b4ca9SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 168712b4ca9SAllan Jude md=$(mdconfig -f ${img}) 169712b4ca9SAllan Jude gpart create -s gpt ${md} 170712b4ca9SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 171712b4ca9SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 172712b4ca9SAllan Jude gpart add -t freebsd-zfs -l root $md 173712b4ca9SAllan Jude # install-boot will make this bootable 174712b4ca9SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3 175712b4ca9SAllan Jude zpool set bootfs=${pool} ${pool} 176712b4ca9SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 177712b4ca9SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 178712b4ca9SAllan Jude cpsys ${src} ${mntpt} 179712b4ca9SAllan Jude # need to make a couple of tweaks 180712b4ca9SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 181712b4ca9SAllan Judezfs_load=YES 182712b4ca9SAllan Judeopensolaris_load=YES 183712b4ca9SAllan JudeEOF 184712b4ca9SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 185712b4ca9SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 186712b4ca9SAllan Jude # end tweaks 187712b4ca9SAllan Jude zfs umount -f ${pool}/ROOT/default 188712b4ca9SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 189712b4ca9SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 190712b4ca9SAllan Jude zpool set autoexpand=on ${pool} 191712b4ca9SAllan Jude zpool export ${pool} 192712b4ca9SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 193712b4ca9SAllan Jude mdconfig -d -u ${md} 194082c6764SWarner Losh} 195082c6764SWarner Losh 196082c6764SWarner Loshmk_nogeli_mbr_ufs_legacy() { 19722cf6021SWarner Losh src=$1 19822cf6021SWarner Losh img=$2 19922cf6021SWarner Losh 20022cf6021SWarner Losh cat > ${src}/etc/fstab <<EOF 20122cf6021SWarner Losh/dev/ada0s1a / ufs rw 1 1 20222cf6021SWarner LoshEOF 20322cf6021SWarner Losh makefs -t ffs -B little -s 200m ${img}.s1a ${src} 20422cf6021SWarner Losh mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1 205*f438a143SAllan Jude mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img} 20622cf6021SWarner Losh rm -f ${src}/etc/fstab 207082c6764SWarner Losh} 208082c6764SWarner Losh 209082c6764SWarner Loshmk_nogeli_mbr_ufs_uefi() { 210*f438a143SAllan Jude src=$1 211*f438a143SAllan Jude img=$2 212*f438a143SAllan Jude 213*f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 214*f438a143SAllan Jude/dev/ada0s1a / ufs rw 1 1 215*f438a143SAllan JudeEOF 216*f438a143SAllan Jude cp ${src}/boot/boot1.efifat ${img}.s1 217*f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 218*f438a143SAllan Jude mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2 219*f438a143SAllan Jude mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 220*f438a143SAllan Jude rm -f ${src}/etc/fstab 221082c6764SWarner Losh} 222082c6764SWarner Losh 223082c6764SWarner Loshmk_nogeli_mbr_ufs_both() { 224*f438a143SAllan Jude src=$1 225*f438a143SAllan Jude img=$2 226*f438a143SAllan Jude 227*f438a143SAllan Jude cat > ${src}/etc/fstab <<EOF 228*f438a143SAllan Jude/dev/ada0s1a / ufs rw 1 1 229*f438a143SAllan JudeEOF 230*f438a143SAllan Jude cp ${src}/boot/boot1.efifat ${img}.s1 231*f438a143SAllan Jude makefs -t ffs -B little -s 200m ${img}.s2a ${src} 232*f438a143SAllan Jude mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2 233*f438a143SAllan Jude mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img} 234*f438a143SAllan Jude rm -f ${src}/etc/fstab 235082c6764SWarner Losh} 236082c6764SWarner Losh 237082c6764SWarner Loshmk_nogeli_mbr_zfs_legacy() { 238*f438a143SAllan Jude src=$1 239*f438a143SAllan Jude img=$2 240*f438a143SAllan Jude mntpt=$3 241*f438a143SAllan Jude geli=$4 242*f438a143SAllan Jude scheme=$5 243*f438a143SAllan Jude fs=$6 244*f438a143SAllan Jude bios=$7 245*f438a143SAllan Jude pool=nogeli-mbr-zfs-legacy 246*f438a143SAllan Jude 247*f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 248*f438a143SAllan Jude md=$(mdconfig -f ${img}) 249*f438a143SAllan Jude gpart create -s mbr ${md} 250*f438a143SAllan Jude gpart add -t freebsd ${md} 251*f438a143SAllan Jude gpart set -a active -i 1 ${md} 252*f438a143SAllan Jude gpart create -s bsd ${md}s1 253*f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s1 254*f438a143SAllan Jude # install-boot will make this bootable 255*f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a 256*f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 257*f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 258*f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 259*f438a143SAllan Jude cpsys ${src} ${mntpt} 260*f438a143SAllan Jude # need to make a couple of tweaks 261*f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 262*f438a143SAllan Judezfs_load=YES 263*f438a143SAllan Judeopensolaris_load=YES 264*f438a143SAllan JudeEOF 265*f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 266*f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 267*f438a143SAllan Jude # end tweaks 268*f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 269*f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 270*f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 271*f438a143SAllan Jude zpool set autoexpand=on ${pool} 272*f438a143SAllan Jude zpool export ${pool} 273*f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 274*f438a143SAllan Jude mdconfig -d -u ${md} 275082c6764SWarner Losh} 276082c6764SWarner Losh 277082c6764SWarner Loshmk_nogeli_mbr_zfs_uefi() { 278*f438a143SAllan Jude src=$1 279*f438a143SAllan Jude img=$2 280*f438a143SAllan Jude mntpt=$3 281*f438a143SAllan Jude geli=$4 282*f438a143SAllan Jude scheme=$5 283*f438a143SAllan Jude fs=$6 284*f438a143SAllan Jude bios=$7 285*f438a143SAllan Jude pool=nogeli-mbr-zfs-uefi 286*f438a143SAllan Jude 287*f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 288*f438a143SAllan Jude md=$(mdconfig -f ${img}) 289*f438a143SAllan Jude gpart create -s mbr ${md} 290*f438a143SAllan Jude gpart add -t \!239 -s 800k ${md} 291*f438a143SAllan Jude gpart add -t freebsd ${md} 292*f438a143SAllan Jude gpart set -a active -i 2 ${md} 293*f438a143SAllan Jude gpart create -s bsd ${md}s2 294*f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 295*f438a143SAllan Jude # install-boot will make this bootable 296*f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 297*f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 298*f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 299*f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 300*f438a143SAllan Jude cpsys ${src} ${mntpt} 301*f438a143SAllan Jude # need to make a couple of tweaks 302*f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 303*f438a143SAllan Judezfs_load=YES 304*f438a143SAllan Judeopensolaris_load=YES 305*f438a143SAllan JudeEOF 306*f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 307*f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 308*f438a143SAllan Jude # end tweaks 309*f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 310*f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 311*f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 312*f438a143SAllan Jude zpool set autoexpand=on ${pool} 313*f438a143SAllan Jude zpool export ${pool} 314*f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 315*f438a143SAllan Jude mdconfig -d -u ${md} 316082c6764SWarner Losh} 317082c6764SWarner Losh 318082c6764SWarner Loshmk_nogeli_mbr_zfs_both() { 319*f438a143SAllan Jude src=$1 320*f438a143SAllan Jude img=$2 321*f438a143SAllan Jude mntpt=$3 322*f438a143SAllan Jude geli=$4 323*f438a143SAllan Jude scheme=$5 324*f438a143SAllan Jude fs=$6 325*f438a143SAllan Jude bios=$7 326*f438a143SAllan Jude pool=nogeli-mbr-zfs-both 327*f438a143SAllan Jude 328*f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512)) 329*f438a143SAllan Jude md=$(mdconfig -f ${img}) 330*f438a143SAllan Jude gpart create -s mbr ${md} 331*f438a143SAllan Jude gpart add -t \!239 -s 800k ${md} 332*f438a143SAllan Jude gpart add -t freebsd ${md} 333*f438a143SAllan Jude gpart set -a active -i 2 ${md} 334*f438a143SAllan Jude gpart create -s bsd ${md}s2 335*f438a143SAllan Jude gpart add -t freebsd-zfs ${md}s2 336*f438a143SAllan Jude # install-boot will make this bootable 337*f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a 338*f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 339*f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 340*f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 341*f438a143SAllan Jude cpsys ${src} ${mntpt} 342*f438a143SAllan Jude # need to make a couple of tweaks 343*f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 344*f438a143SAllan Judezfs_load=YES 345*f438a143SAllan Judeopensolaris_load=YES 346*f438a143SAllan JudeEOF 347*f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 348*f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 349*f438a143SAllan Jude # end tweaks 350*f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 351*f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 352*f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 353*f438a143SAllan Jude zpool set autoexpand=on ${pool} 354*f438a143SAllan Jude zpool export ${pool} 355*f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 356*f438a143SAllan Jude mdconfig -d -u ${md} 357082c6764SWarner Losh} 358082c6764SWarner Losh 359082c6764SWarner Loshmk_geli_gpt_ufs_legacy() { 360*f438a143SAllan Jude src=$1 361*f438a143SAllan Jude img=$2 362*f438a143SAllan Jude mntpt=$3 363*f438a143SAllan Jude geli=$4 364*f438a143SAllan Jude scheme=$5 365*f438a143SAllan Jude fs=$6 366*f438a143SAllan Jude bios=$7 367*f438a143SAllan Jude 368*f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 369*f438a143SAllan Jude md=$(mdconfig -f ${img}) 370*f438a143SAllan Jude gpart create -s gpt ${md} 371*f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 372*f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 373*f438a143SAllan Jude # install-boot will make this bootable 374*f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2 375*f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p2 376*f438a143SAllan Jude newfs /dev/${md}p2.eli 377*f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 378*f438a143SAllan Jude cpsys ${src} ${mntpt} 379*f438a143SAllan Jude # need to make a couple of tweaks 380*f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 381*f438a143SAllan Judegeom_eli_load=YES 382*f438a143SAllan JudeEOF 383*f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 384*f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 385*f438a143SAllan JudeEOF 386*f438a143SAllan Jude 387*f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 388*f438a143SAllan Jude # end tweaks 389*f438a143SAllan Jude umount -f ${mntpt} 390*f438a143SAllan Jude geli detach ${md}p2 391*f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 392*f438a143SAllan Jude mdconfig -d -u ${md} 393082c6764SWarner Losh} 394082c6764SWarner Losh 395082c6764SWarner Loshmk_geli_gpt_ufs_uefi() { 396*f438a143SAllan Jude src=$1 397*f438a143SAllan Jude img=$2 398*f438a143SAllan Jude mntpt=$3 399*f438a143SAllan Jude geli=$4 400*f438a143SAllan Jude scheme=$5 401*f438a143SAllan Jude fs=$6 402*f438a143SAllan Jude bios=$7 403*f438a143SAllan Jude 404*f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 405*f438a143SAllan Jude md=$(mdconfig -f ${img}) 406*f438a143SAllan Jude gpart create -s gpt ${md} 407*f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 408*f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 409*f438a143SAllan Jude # install-boot will make this bootable 410*f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2 411*f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p2 412*f438a143SAllan Jude newfs /dev/${md}p2.eli 413*f438a143SAllan Jude mount /dev/${md}p2.eli ${mntpt} 414*f438a143SAllan Jude cpsys ${src} ${mntpt} 415*f438a143SAllan Jude # need to make a couple of tweaks 416*f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 417*f438a143SAllan Judegeom_eli_load=YES 418*f438a143SAllan JudeEOF 419*f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 420*f438a143SAllan Jude/dev/ada0p2.eli / ufs rw 1 1 421*f438a143SAllan JudeEOF 422*f438a143SAllan Jude 423*f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 424*f438a143SAllan Jude # end tweaks 425*f438a143SAllan Jude umount -f ${mntpt} 426*f438a143SAllan Jude geli detach ${md}p2 427*f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 428*f438a143SAllan Jude mdconfig -d -u ${md} 429082c6764SWarner Losh} 430082c6764SWarner Losh 431082c6764SWarner Loshmk_geli_gpt_ufs_both() { 432*f438a143SAllan Jude src=$1 433*f438a143SAllan Jude img=$2 434*f438a143SAllan Jude mntpt=$3 435*f438a143SAllan Jude geli=$4 436*f438a143SAllan Jude scheme=$5 437*f438a143SAllan Jude fs=$6 438*f438a143SAllan Jude bios=$7 439*f438a143SAllan Jude 440*f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 441*f438a143SAllan Jude md=$(mdconfig -f ${img}) 442*f438a143SAllan Jude gpart create -s gpt ${md} 443*f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 444*f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 445*f438a143SAllan Jude gpart add -t freebsd-ufs -l root $md 446*f438a143SAllan Jude # install-boot will make this bootable 447*f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p3 448*f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p3 449*f438a143SAllan Jude newfs /dev/${md}p3.eli 450*f438a143SAllan Jude mount /dev/${md}p3.eli ${mntpt} 451*f438a143SAllan Jude cpsys ${src} ${mntpt} 452*f438a143SAllan Jude # need to make a couple of tweaks 453*f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 454*f438a143SAllan Judegeom_eli_load=YES 455*f438a143SAllan JudeEOF 456*f438a143SAllan Jude cat > ${mntpt}/etc/fstab <<EOF 457*f438a143SAllan Jude/dev/ada0p3.eli / ufs rw 1 1 458*f438a143SAllan JudeEOF 459*f438a143SAllan Jude 460*f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 461*f438a143SAllan Jude # end tweaks 462*f438a143SAllan Jude umount -f ${mntpt} 463*f438a143SAllan Jude geli detach ${md}p3 464*f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 465*f438a143SAllan Jude mdconfig -d -u ${md} 466082c6764SWarner Losh} 467082c6764SWarner Losh 468082c6764SWarner Loshmk_geli_gpt_zfs_legacy() { 469*f438a143SAllan Jude src=$1 470*f438a143SAllan Jude img=$2 471*f438a143SAllan Jude mntpt=$3 472*f438a143SAllan Jude geli=$4 473*f438a143SAllan Jude scheme=$5 474*f438a143SAllan Jude fs=$6 475*f438a143SAllan Jude bios=$7 476*f438a143SAllan Jude pool=geli-gpt-zfs-legacy 477*f438a143SAllan Jude 478*f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 479*f438a143SAllan Jude md=$(mdconfig -f ${img}) 480*f438a143SAllan Jude gpart create -s gpt ${md} 481*f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 482*f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 483*f438a143SAllan Jude # install-boot will make this bootable 484*f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2 485*f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p2 486*f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli 487*f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 488*f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 489*f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 490*f438a143SAllan Jude cpsys ${src} ${mntpt} 491*f438a143SAllan Jude # need to make a couple of tweaks 492*f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 493*f438a143SAllan Judezfs_load=YES 494*f438a143SAllan Judeopensolaris_load=YES 495*f438a143SAllan Judegeom_eli_load=YES 496*f438a143SAllan JudeEOF 497*f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 498*f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 499*f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 500*f438a143SAllan Jude # end tweaks 501*f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 502*f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 503*f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 504*f438a143SAllan Jude zpool set autoexpand=on ${pool} 505*f438a143SAllan Jude zpool export ${pool} 506*f438a143SAllan Jude geli detach ${md}p2 507*f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 508*f438a143SAllan Jude mdconfig -d -u ${md} 509082c6764SWarner Losh} 510082c6764SWarner Losh 511082c6764SWarner Loshmk_geli_gpt_zfs_uefi() { 512*f438a143SAllan Jude src=$1 513*f438a143SAllan Jude img=$2 514*f438a143SAllan Jude mntpt=$3 515*f438a143SAllan Jude geli=$4 516*f438a143SAllan Jude scheme=$5 517*f438a143SAllan Jude fs=$6 518*f438a143SAllan Jude bios=$7 519*f438a143SAllan Jude pool=geli-gpt-zfs-uefi 520*f438a143SAllan Jude 521*f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 522*f438a143SAllan Jude md=$(mdconfig -f ${img}) 523*f438a143SAllan Jude gpart create -s gpt ${md} 524*f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 525*f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 526*f438a143SAllan Jude # install-boot will make this bootable 527*f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p2 528*f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p2 529*f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli 530*f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 531*f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 532*f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 533*f438a143SAllan Jude cpsys ${src} ${mntpt} 534*f438a143SAllan Jude # need to make a couple of tweaks 535*f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 536*f438a143SAllan Judezfs_load=YES 537*f438a143SAllan Judeopensolaris_load=YES 538*f438a143SAllan Judegeom_eli_load=YES 539*f438a143SAllan JudeEOF 540*f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 541*f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 542*f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 543*f438a143SAllan Jude # end tweaks 544*f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 545*f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 546*f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 547*f438a143SAllan Jude zpool set autoexpand=on ${pool} 548*f438a143SAllan Jude zpool export ${pool} 549*f438a143SAllan Jude geli detach ${md}p2 550*f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 551*f438a143SAllan Jude mdconfig -d -u ${md} 552082c6764SWarner Losh} 553082c6764SWarner Losh 554082c6764SWarner Loshmk_geli_gpt_zfs_both() { 555*f438a143SAllan Jude src=$1 556*f438a143SAllan Jude img=$2 557*f438a143SAllan Jude mntpt=$3 558*f438a143SAllan Jude geli=$4 559*f438a143SAllan Jude scheme=$5 560*f438a143SAllan Jude fs=$6 561*f438a143SAllan Jude bios=$7 562*f438a143SAllan Jude pool=geli-gpt-zfs-both 563*f438a143SAllan Jude 564*f438a143SAllan Jude dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 )) 565*f438a143SAllan Jude md=$(mdconfig -f ${img}) 566*f438a143SAllan Jude gpart create -s gpt ${md} 567*f438a143SAllan Jude gpart add -t efi -s 800k -a 4k ${md} 568*f438a143SAllan Jude gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k 569*f438a143SAllan Jude gpart add -t freebsd-zfs -l root $md 570*f438a143SAllan Jude # install-boot will make this bootable 571*f438a143SAllan Jude echo passphrase | geli init -bg -e AES-XTS -i 50000 -J - -l 256 -s 4096 ${md}p3 572*f438a143SAllan Jude echo passphrase | geli attach -j - ${md}p3 573*f438a143SAllan Jude zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli 574*f438a143SAllan Jude zpool set bootfs=${pool} ${pool} 575*f438a143SAllan Jude zfs create -po mountpoint=/ ${pool}/ROOT/default 576*f438a143SAllan Jude # NB: The online guides go nuts customizing /var and other mountpoints here, no need 577*f438a143SAllan Jude cpsys ${src} ${mntpt} 578*f438a143SAllan Jude # need to make a couple of tweaks 579*f438a143SAllan Jude cat > ${mntpt}/boot/loader.conf <<EOF 580*f438a143SAllan Judezfs_load=YES 581*f438a143SAllan Judeopensolaris_load=YES 582*f438a143SAllan Judegeom_eli_load=YES 583*f438a143SAllan JudeEOF 584*f438a143SAllan Jude cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko 585*f438a143SAllan Jude cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko 586*f438a143SAllan Jude cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko 587*f438a143SAllan Jude # end tweaks 588*f438a143SAllan Jude zfs umount -f ${pool}/ROOT/default 589*f438a143SAllan Jude zfs set mountpoint=none ${pool}/ROOT/default 590*f438a143SAllan Jude zpool set bootfs=${pool}/ROOT/default ${pool} 591*f438a143SAllan Jude zpool set autoexpand=on ${pool} 592*f438a143SAllan Jude zpool export ${pool} 593*f438a143SAllan Jude geli detach ${md}p3 594*f438a143SAllan Jude ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 595*f438a143SAllan Jude mdconfig -d -u ${md} 596082c6764SWarner Losh} 597082c6764SWarner Losh 598*f438a143SAllan Jude# GELI+MBR is not a valid configuration 599082c6764SWarner Loshmk_geli_mbr_ufs_legacy() { 600082c6764SWarner Losh} 601082c6764SWarner Losh 602082c6764SWarner Loshmk_geli_mbr_ufs_uefi() { 603082c6764SWarner Losh} 604082c6764SWarner Losh 605082c6764SWarner Loshmk_geli_mbr_ufs_both() { 606082c6764SWarner Losh} 607082c6764SWarner Losh 608082c6764SWarner Loshmk_geli_mbr_zfs_legacy() { 609082c6764SWarner Losh} 610082c6764SWarner Losh 611082c6764SWarner Loshmk_geli_mbr_zfs_uefi() { 612082c6764SWarner Losh} 613082c6764SWarner Losh 614082c6764SWarner Loshmk_geli_mbr_zfs_both() { 615082c6764SWarner Losh} 616082c6764SWarner Losh 617082c6764SWarner Losh# iso 618082c6764SWarner Losh# pxeldr 619082c6764SWarner Losh# u-boot 62022cf6021SWarner Losh# powerpc 62122cf6021SWarner Losh 622ba8d50d0SMarius Stroblmk_sparc64_nogeli_vtoc8_ufs_ofw() { 623ba8d50d0SMarius Strobl src=$1 624ba8d50d0SMarius Strobl img=$2 625ba8d50d0SMarius Strobl mntpt=$3 626ba8d50d0SMarius Strobl geli=$4 627ba8d50d0SMarius Strobl scheme=$5 628ba8d50d0SMarius Strobl fs=$6 629ba8d50d0SMarius Strobl bios=$7 630ba8d50d0SMarius Strobl 631ba8d50d0SMarius Strobl cat > ${src}/etc/fstab <<EOF 632ba8d50d0SMarius Strobl/dev/ada0a / ufs rw 1 1 633ba8d50d0SMarius StroblEOF 634ba8d50d0SMarius Strobl makefs -t ffs -B big -s 200m ${img} ${src} 635ba8d50d0SMarius Strobl md=$(mdconfig -f ${img}) 636ba8d50d0SMarius Strobl # For non-native builds, ensure that geom_part(4) supports VTOC8. 637ba8d50d0SMarius Strobl kldload geom_part_vtoc8.ko 638ba8d50d0SMarius Strobl gpart create -s VTOC8 ${md} 639ba8d50d0SMarius Strobl gpart add -t freebsd-ufs ${md} 640ba8d50d0SMarius Strobl ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md} 641ba8d50d0SMarius Strobl mdconfig -d -u ${md} 642ba8d50d0SMarius Strobl rm -f ${src}/etc/fstab 643ba8d50d0SMarius Strobl} 644ba8d50d0SMarius Strobl 64522cf6021SWarner Loshqser="-serial telnet::4444,server -nographic" 64622cf6021SWarner Losh 64722cf6021SWarner Losh# https://wiki.freebsd.org/QemuRecipes 64822cf6021SWarner Losh# aarch64 64922cf6021SWarner Loshqemu_aarch64_uefi() 65022cf6021SWarner Losh{ 65122cf6021SWarner Losh img=$1 65222cf6021SWarner Losh sh=$2 65322cf6021SWarner Losh 65422cf6021SWarner Losh echo "qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt \ 65522cf6021SWarner Losh -bios QEMU_EFI.fd ${qser} \ 65622cf6021SWarner Losh -drive if=none,file=${img},id=hd0 \ 65722cf6021SWarner Losh -device virtio-blk-device,drive=hd0" > $sh 65822cf6021SWarner Losh# https://wiki.freebsd.org/arm64/QEMU also has 65922cf6021SWarner Losh# -device virtio-net-device,netdev=net0 66022cf6021SWarner Losh# -netdev user,id=net0 66122cf6021SWarner Losh} 66222cf6021SWarner Losh 66322cf6021SWarner Losh# Amd64 qemu 66422cf6021SWarner Loshqemu_amd64_legacy() 66522cf6021SWarner Losh{ 66622cf6021SWarner Losh img=$1 66722cf6021SWarner Losh sh=$2 66822cf6021SWarner Losh 66948cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh 67022cf6021SWarner Losh} 67122cf6021SWarner Losh 67222cf6021SWarner Loshqemu_amd64_uefi() 67322cf6021SWarner Losh{ 67422cf6021SWarner Losh img=$1 67522cf6021SWarner Losh sh=$2 67622cf6021SWarner Losh 67748cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh 67822cf6021SWarner Losh} 67922cf6021SWarner Losh 68022cf6021SWarner Loshqemu_amd64_both() 68122cf6021SWarner Losh{ 68222cf6021SWarner Losh img=$1 68322cf6021SWarner Losh sh=$2 68422cf6021SWarner Losh 68548cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh 68648cb46aaSWarner Losh echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh 68722cf6021SWarner Losh} 68822cf6021SWarner Losh 68922cf6021SWarner Losh# arm 69022cf6021SWarner Losh# nothing listed? 69122cf6021SWarner Losh 69222cf6021SWarner Losh# i386 69322cf6021SWarner Loshqemu_i386_legacy() 69422cf6021SWarner Losh{ 69522cf6021SWarner Losh img=$1 69622cf6021SWarner Losh sh=$2 69722cf6021SWarner Losh 69822cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 69922cf6021SWarner Losh} 70022cf6021SWarner Losh 70122cf6021SWarner Losh# Not yet supported 70222cf6021SWarner Loshqemu_i386_uefi() 70322cf6021SWarner Losh{ 70422cf6021SWarner Losh img=$1 70522cf6021SWarner Losh sh=$2 70622cf6021SWarner Losh 70722cf6021SWarner Losh echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh 70822cf6021SWarner Losh} 70922cf6021SWarner Losh 71022cf6021SWarner Losh# Needs UEFI to be supported 71122cf6021SWarner Loshqemu_i386_both() 71222cf6021SWarner Losh{ 71322cf6021SWarner Losh img=$1 71422cf6021SWarner Losh sh=$2 71522cf6021SWarner Losh 71622cf6021SWarner Losh echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh 717712b4ca9SAllan Jude echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" >> $sh 71822cf6021SWarner Losh} 71922cf6021SWarner Losh 72022cf6021SWarner Losh# mips 72122cf6021SWarner Losh# qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048 72222cf6021SWarner Losh 72322cf6021SWarner Losh# Powerpc -- doesn't work but maybe it would enough for testing -- needs details 72422cf6021SWarner Losh# powerpc64 72522cf6021SWarner Losh# qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw 72622cf6021SWarner Losh 72722cf6021SWarner Losh# sparc64 72822cf6021SWarner Losh# qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw 72922cf6021SWarner Losh 730082c6764SWarner Losh# Misc variables 731082c6764SWarner LoshSRCTOP=$(make -v SRCTOP) 732082c6764SWarner Loshcd ${SRCTOP}/stand 733082c6764SWarner LoshOBJDIR=$(make -v .OBJDIR) 734082c6764SWarner LoshIMGDIR=${OBJDIR}/boot-images 735082c6764SWarner Loshmkdir -p ${IMGDIR} 736082c6764SWarner LoshMNTPT=$(mktemp -d /tmp/stand-test.XXXXXX) 737082c6764SWarner Losh 738082c6764SWarner Losh# Setup the installed tree... 739082c6764SWarner LoshDESTDIR=${OBJDIR}/boot-tree 740082c6764SWarner Loshrm -rf ${DESTDIR} 741082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/defaults 742082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/kernel 743ba8d50d0SMarius Strobl# XXX boot1 exists only on sparc64 744ba8d50d0SMarius Stroblcp /boot/boot1 ${DESTDIR}/boot 745082c6764SWarner Loshcp /boot/kernel/kernel ${DESTDIR}/boot/kernel 746328884aeSWarner Loshecho -h -D -S115200 > ${DESTDIR}/boot.config 747082c6764SWarner Losh# XXX 748082c6764SWarner Loshcp /boot/device.hints ${DESTDIR}/boot/device.hints 749082c6764SWarner Losh# Assume we're already built 750082c6764SWarner Loshmake install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_AS_USER=yes 75122cf6021SWarner Losh# Copy init, /bin/sh, minimal libraries and testing /etc/rc 75222cf6021SWarner Loshmkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \ 75322cf6021SWarner Losh ${DESTDIR}/lib ${DESTDIR}/libexec \ 75422cf6021SWarner Losh ${DESTDIR}/etc ${DESTDIR}/dev 75522cf6021SWarner Loshfor f in /sbin/halt /sbin/init /bin/sh $(ldd /bin/sh | awk 'NF == 4 { print $3; }') /libexec/ld-elf.so.1; do 756082c6764SWarner Losh cp $f ${DESTDIR}/$f 757082c6764SWarner Loshdone 75822cf6021SWarner Loshcat > ${DESTDIR}/etc/rc <<EOF 75922cf6021SWarner Losh#!/bin/sh 76022cf6021SWarner Losh 76122cf6021SWarner Loshecho "RC COMMAND RUNNING -- SUCCESS!!!!!" 76222cf6021SWarner Loshhalt -p 76322cf6021SWarner LoshEOF 764082c6764SWarner Losh 765082c6764SWarner Losh# OK. Let the games begin 766082c6764SWarner Losh 76722cf6021SWarner Loshfor arch in amd64; do 768082c6764SWarner Losh for geli in nogeli geli; do 769082c6764SWarner Losh for scheme in gpt mbr; do 770082c6764SWarner Losh for fs in ufs zfs; do 771082c6764SWarner Losh for bios in legacy uefi both; do 772082c6764SWarner Losh # Create sparse file and mount newly created filesystem(s) on it 77322cf6021SWarner Losh img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 77422cf6021SWarner Losh sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 775082c6764SWarner Losh echo "vvvvvvvvvvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvvvvvvvvvv" 77622cf6021SWarner Losh rm -f ${img}* 777082c6764SWarner Losh eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 77822cf6021SWarner Losh eval qemu_${arch}_${bios} ${img} ${sh} 77922cf6021SWarner Losh [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 780082c6764SWarner Losh echo "^^^^^^^^^^^^^^^^^^^^^^ Creating $img ^^^^^^^^^^^^^^^^^^^^^^^" 781082c6764SWarner Losh done 782082c6764SWarner Losh done 783082c6764SWarner Losh done 784082c6764SWarner Losh done 78522cf6021SWarner Loshdone 786082c6764SWarner Losh 787082c6764SWarner Loshrmdir ${MNTPT} 78822cf6021SWarner Losh 78922cf6021SWarner Loshexit 0 79022cf6021SWarner Losh 79122cf6021SWarner Losh# Notes for the future 79222cf6021SWarner Losh 79322cf6021SWarner Loshfor arch in i386; do 79422cf6021SWarner Losh for geli in nogeli geli; do 79522cf6021SWarner Losh for scheme in gpt mbr; do 79622cf6021SWarner Losh for fs in ufs zfs; do 79722cf6021SWarner Losh for bios in legacy; do 79822cf6021SWarner Losh # Create sparse file and mount newly created filesystem(s) on it 79922cf6021SWarner Losh img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 80022cf6021SWarner Losh sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 80122cf6021SWarner Losh echo "vvvvvvvvvvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvvvvvvvvvv" 80222cf6021SWarner Losh rm -f ${img}* 80322cf6021SWarner Losh eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 80422cf6021SWarner Losh eval qemu_${arch}_${bios} ${img} ${sh} 80522cf6021SWarner Losh [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 80622cf6021SWarner Losh echo "^^^^^^^^^^^^^^^^^^^^^^ Creating $img ^^^^^^^^^^^^^^^^^^^^^^^" 80722cf6021SWarner Losh done 80822cf6021SWarner Losh done 80922cf6021SWarner Losh done 81022cf6021SWarner Losh done 81122cf6021SWarner Loshdone 81222cf6021SWarner Losh 81322cf6021SWarner Loshfor arch in arm aarch64; do 81422cf6021SWarner Losh for scheme in gpt mbr; do 81522cf6021SWarner Losh fs=ufs 81622cf6021SWarner Losh for bios in uboot efi; do 81722cf6021SWarner Losh # Create sparse file and mount newly created filesystem(s) on it 81822cf6021SWarner Losh img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 81922cf6021SWarner Losh sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 82022cf6021SWarner Losh echo "vvvvvvvvvvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvvvvvvvvvv" 82122cf6021SWarner Losh rm -f ${img}* 82222cf6021SWarner Losh eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 82322cf6021SWarner Losh eval qemu_${arch}_${bios} ${img} ${sh} 82422cf6021SWarner Losh [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 82522cf6021SWarner Losh echo "^^^^^^^^^^^^^^^^^^^^^^ Creating $img ^^^^^^^^^^^^^^^^^^^^^^^" 82622cf6021SWarner Losh done 82722cf6021SWarner Losh done 82822cf6021SWarner Loshdone 82922cf6021SWarner Losh 83022cf6021SWarner Loshfor arch in powerpc powerpc64; do 83122cf6021SWarner Losh for scheme in ppc-wtf; do 83222cf6021SWarner Losh fs=ufs 83322cf6021SWarner Losh for bios in ofw uboot chrp; do 83422cf6021SWarner Losh # Create sparse file and mount newly created filesystem(s) on it 83522cf6021SWarner Losh img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 83622cf6021SWarner Losh sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 83722cf6021SWarner Losh echo "vvvvvvvvvvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvvvvvvvvvv" 83822cf6021SWarner Losh rm -f ${img}* 83922cf6021SWarner Losh eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 84022cf6021SWarner Losh eval qemu_${arch}_${bios} ${img} ${sh} 84122cf6021SWarner Losh [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 84222cf6021SWarner Losh echo "^^^^^^^^^^^^^^^^^^^^^^ Creating $img ^^^^^^^^^^^^^^^^^^^^^^^" 84322cf6021SWarner Losh done 84422cf6021SWarner Losh done 84522cf6021SWarner Loshdone 84622cf6021SWarner Losh 84722cf6021SWarner Loshfor arch in sparc64; do 848ba8d50d0SMarius Strobl for geli in nogeli; do 849ba8d50d0SMarius Strobl for scheme in vtoc8; do 850ba8d50d0SMarius Strobl for fs in ufs; do 85122cf6021SWarner Losh for bios in ofw; do 85222cf6021SWarner Losh # Create sparse file and mount newly created filesystem(s) on it 85322cf6021SWarner Losh img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img 85422cf6021SWarner Losh sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh 85522cf6021SWarner Losh echo "vvvvvvvvvvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvvvvvvvvvv" 85622cf6021SWarner Losh rm -f ${img}* 857ba8d50d0SMarius Strobl eval mk_${arch}_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios} 85822cf6021SWarner Losh eval qemu_${arch}_${bios} ${img} ${sh} 85922cf6021SWarner Losh [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}* 86022cf6021SWarner Losh echo "^^^^^^^^^^^^^^^^^^^^^^ Creating $img ^^^^^^^^^^^^^^^^^^^^^^^" 86122cf6021SWarner Losh done 86222cf6021SWarner Losh done 86322cf6021SWarner Losh done 864ba8d50d0SMarius Strobl done 865ba8d50d0SMarius Strobldone 866