xref: /freebsd/tools/boot/rootgen.sh (revision 22cf6021fce330a2e856eef764b842c1403a603b)
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
36*22cf6021SWarner Losh    cat > ${src}/etc/fstab <<EOF
37*22cf6021SWarner Losh/dev/ada0p2	/		ufs	rw	1	1
38*22cf6021SWarner 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}
43*22cf6021SWarner 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
50*22cf6021SWarner Losh    cat > ${src}/etc/fstab <<EOF
51*22cf6021SWarner Losh/dev/ada0p2	/		ufs	rw	1	1
52*22cf6021SWarner LoshEOF
53*22cf6021SWarner Losh# XXX need to make msdos part for this to work XXXX
54*22cf6021SWarner Losh    cp ${src}/boot/boot.efifat ${img}.p1
55082c6764SWarner Losh    makefs -t ffs -B little -s 200m ${img}.p2 ${src}
56082c6764SWarner Losh    mkimg -s gpt -b ${src}/boot/pmbr \
57*22cf6021SWarner Losh	  -p efi:=${img}.p1 \
58082c6764SWarner Losh	  -p freebsd-ufs:=${img}.p2 -o ${img}
59*22cf6021SWarner 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
66*22cf6021SWarner Losh    cat > ${src}/etc/fstab <<EOF
67*22cf6021SWarner Losh/dev/ada0p3	/		ufs	rw	1	1
68*22cf6021SWarner LoshEOF
69*22cf6021SWarner Losh    # XXX need to make msdos part for this to work XXXX
70*22cf6021SWarner Losh    cp ${src}/boot/boot.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}
78*22cf6021SWarner 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}
99082c6764SWarner Losh    zfs create -o mountpoint=/ ${pool}/ROOT
100082c6764SWarner Losh    # NB: The online guides go nuts customizing /var and other mountpoints here, no need
101082c6764SWarner Losh    cpsys ${src} ${mntpt}
102082c6764SWarner Losh    df
103082c6764SWarner Losh    # need to make a couple of tweaks
104082c6764SWarner Losh    cat > ${mntpt}/boot/loader.conf <<EOF
105082c6764SWarner Loshzfs_load=YES
106082c6764SWarner Loshopensolaris_load=YES
107082c6764SWarner LoshEOF
108082c6764SWarner Losh    cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
109082c6764SWarner Losh    cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
11016457354SWarner Losh    ls -las ${mntpt}/boot
111082c6764SWarner Losh    # end tweaks
112082c6764SWarner Losh    zfs umount -f ${pool}/ROOT
113082c6764SWarner Losh    zfs set mountpoint=none ${pool}/ROOT
114082c6764SWarner Losh    zpool set bootfs=${pool}/ROOT ${pool}
115082c6764SWarner Losh    zpool set autoexpand=on ${pool}
116082c6764SWarner Losh    zpool export ${pool}
117082c6764SWarner Losh    ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
118082c6764SWarner Losh    mdconfig -d -u ${md}
119082c6764SWarner Losh}
120082c6764SWarner Losh
121082c6764SWarner Loshmk_nogeli_gpt_zfs_uefi() {
122082c6764SWarner Losh}
123082c6764SWarner Losh
124082c6764SWarner Loshmk_nogeli_gpt_zfs_both() {
125082c6764SWarner Losh}
126082c6764SWarner Losh
127082c6764SWarner Loshmk_nogeli_mbr_ufs_legacy() {
128*22cf6021SWarner Losh    src=$1
129*22cf6021SWarner Losh    img=$2
130*22cf6021SWarner Losh
131*22cf6021SWarner Losh    cat > ${src}/etc/fstab <<EOF
132*22cf6021SWarner Losh/dev/ada0s1a	/		ufs	rw	1	1
133*22cf6021SWarner LoshEOF
134*22cf6021SWarner Losh    makefs -t ffs -B little -s 200m ${img}.s1a ${src}
135*22cf6021SWarner Losh    mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1
136*22cf6021SWarner Losh    mkimg -a 1 ${bootmbr} -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img}
137*22cf6021SWarner Losh    rm -f ${src}/etc/fstab
138082c6764SWarner Losh}
139082c6764SWarner Losh
140082c6764SWarner Loshmk_nogeli_mbr_ufs_uefi() {
141082c6764SWarner Losh}
142082c6764SWarner Losh
143082c6764SWarner Loshmk_nogeli_mbr_ufs_both() {
144082c6764SWarner Losh}
145082c6764SWarner Losh
146082c6764SWarner Loshmk_nogeli_mbr_zfs_legacy() {
147082c6764SWarner Losh}
148082c6764SWarner Losh
149082c6764SWarner Loshmk_nogeli_mbr_zfs_uefi() {
150082c6764SWarner Losh}
151082c6764SWarner Losh
152082c6764SWarner Loshmk_nogeli_mbr_zfs_both() {
153082c6764SWarner Losh}
154082c6764SWarner Losh
155082c6764SWarner Loshmk_geli_gpt_ufs_legacy() {
156082c6764SWarner Losh}
157082c6764SWarner Losh
158082c6764SWarner Loshmk_geli_gpt_ufs_uefi() {
159082c6764SWarner Losh}
160082c6764SWarner Losh
161082c6764SWarner Loshmk_geli_gpt_ufs_both() {
162082c6764SWarner Losh}
163082c6764SWarner Losh
164082c6764SWarner Loshmk_geli_gpt_zfs_legacy() {
165082c6764SWarner Losh}
166082c6764SWarner Losh
167082c6764SWarner Loshmk_geli_gpt_zfs_uefi() {
168082c6764SWarner Losh}
169082c6764SWarner Losh
170082c6764SWarner Loshmk_geli_gpt_zfs_both() {
171082c6764SWarner Losh}
172082c6764SWarner Losh
173082c6764SWarner Loshmk_geli_mbr_ufs_legacy() {
174082c6764SWarner Losh}
175082c6764SWarner Losh
176082c6764SWarner Loshmk_geli_mbr_ufs_uefi() {
177082c6764SWarner Losh}
178082c6764SWarner Losh
179082c6764SWarner Loshmk_geli_mbr_ufs_both() {
180082c6764SWarner Losh}
181082c6764SWarner Losh
182082c6764SWarner Loshmk_geli_mbr_zfs_legacy() {
183082c6764SWarner Losh}
184082c6764SWarner Losh
185082c6764SWarner Loshmk_geli_mbr_zfs_uefi() {
186082c6764SWarner Losh}
187082c6764SWarner Losh
188082c6764SWarner Loshmk_geli_mbr_zfs_both() {
189082c6764SWarner Losh}
190082c6764SWarner Losh
191082c6764SWarner Losh# iso
192082c6764SWarner Losh# pxeldr
193082c6764SWarner Losh# u-boot
194*22cf6021SWarner Losh# powerpc
195*22cf6021SWarner Losh
196*22cf6021SWarner Loshqser="-serial telnet::4444,server -nographic"
197*22cf6021SWarner Losh
198*22cf6021SWarner Losh# https://wiki.freebsd.org/QemuRecipes
199*22cf6021SWarner Losh# aarch64
200*22cf6021SWarner Loshqemu_aarch64_uefi()
201*22cf6021SWarner Losh{
202*22cf6021SWarner Losh    img=$1
203*22cf6021SWarner Losh    sh=$2
204*22cf6021SWarner Losh
205*22cf6021SWarner Losh    echo "qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt  \
206*22cf6021SWarner Losh        -bios QEMU_EFI.fd ${qser} \
207*22cf6021SWarner Losh        -drive if=none,file=${img},id=hd0 \
208*22cf6021SWarner Losh        -device virtio-blk-device,drive=hd0" > $sh
209*22cf6021SWarner Losh# https://wiki.freebsd.org/arm64/QEMU also has
210*22cf6021SWarner Losh#       -device virtio-net-device,netdev=net0
211*22cf6021SWarner Losh#       -netdev user,id=net0
212*22cf6021SWarner Losh}
213*22cf6021SWarner Losh
214*22cf6021SWarner Losh# Amd64 qemu
215*22cf6021SWarner Loshqemu_amd64_legacy()
216*22cf6021SWarner Losh{
217*22cf6021SWarner Losh    img=$1
218*22cf6021SWarner Losh    sh=$2
219*22cf6021SWarner Losh
220*22cf6021SWarner Losh    echo "qemu-system-x86_64 --drive file=${img},format=raw ${qser}" > $sh
221*22cf6021SWarner Losh}
222*22cf6021SWarner Losh
223*22cf6021SWarner Loshqemu_amd64_uefi()
224*22cf6021SWarner Losh{
225*22cf6021SWarner Losh    img=$1
226*22cf6021SWarner Losh    sh=$2
227*22cf6021SWarner Losh
228*22cf6021SWarner Losh    echo "qemu-system-x86_64 -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh
229*22cf6021SWarner Losh}
230*22cf6021SWarner Losh
231*22cf6021SWarner Loshqemu_amd64_both()
232*22cf6021SWarner Losh{
233*22cf6021SWarner Losh    img=$1
234*22cf6021SWarner Losh    sh=$2
235*22cf6021SWarner Losh
236*22cf6021SWarner Losh    echo "qemu-system-x86_64 --drive file=${img},format=raw ${qser}" > $sh
237*22cf6021SWarner Losh    echo "qemu-system-x86_64 -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh
238*22cf6021SWarner Losh}
239*22cf6021SWarner Losh
240*22cf6021SWarner Losh# arm
241*22cf6021SWarner Losh# nothing listed?
242*22cf6021SWarner Losh
243*22cf6021SWarner Losh# i386
244*22cf6021SWarner Loshqemu_i386_legacy()
245*22cf6021SWarner Losh{
246*22cf6021SWarner Losh    img=$1
247*22cf6021SWarner Losh    sh=$2
248*22cf6021SWarner Losh
249*22cf6021SWarner Losh    echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh
250*22cf6021SWarner Losh}
251*22cf6021SWarner Losh
252*22cf6021SWarner Losh# Not yet supported
253*22cf6021SWarner Loshqemu_i386_uefi()
254*22cf6021SWarner Losh{
255*22cf6021SWarner Losh    img=$1
256*22cf6021SWarner Losh    sh=$2
257*22cf6021SWarner Losh
258*22cf6021SWarner Losh    echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh
259*22cf6021SWarner Losh}
260*22cf6021SWarner Losh
261*22cf6021SWarner Losh# Needs UEFI to be supported
262*22cf6021SWarner Loshqemu_i386_both()
263*22cf6021SWarner Losh{
264*22cf6021SWarner Losh    img=$1
265*22cf6021SWarner Losh    sh=$2
266*22cf6021SWarner Losh
267*22cf6021SWarner Losh    echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh
268*22cf6021SWarner Losh    echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh
269*22cf6021SWarner Losh}
270*22cf6021SWarner Losh
271*22cf6021SWarner Losh# mips
272*22cf6021SWarner Losh# qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048
273*22cf6021SWarner Losh
274*22cf6021SWarner Losh# Powerpc -- doesn't work but maybe it would enough for testing -- needs details
275*22cf6021SWarner Losh# powerpc64
276*22cf6021SWarner Losh# qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw
277*22cf6021SWarner Losh
278*22cf6021SWarner Losh# sparc64
279*22cf6021SWarner Losh# 10.3 works, 12-current (which one?) hangs
280*22cf6021SWarner Losh# qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw
281*22cf6021SWarner Losh
282082c6764SWarner Losh
283082c6764SWarner Losh# Misc variables
284082c6764SWarner LoshSRCTOP=$(make -v SRCTOP)
285082c6764SWarner Loshcd ${SRCTOP}/stand
286082c6764SWarner LoshOBJDIR=$(make -v .OBJDIR)
287082c6764SWarner LoshIMGDIR=${OBJDIR}/boot-images
288082c6764SWarner Loshmkdir -p ${IMGDIR}
289082c6764SWarner LoshMNTPT=$(mktemp -d /tmp/stand-test.XXXXXX)
290082c6764SWarner Losh
291082c6764SWarner Losh# Setup the installed tree...
292082c6764SWarner LoshDESTDIR=${OBJDIR}/boot-tree
293082c6764SWarner Loshrm -rf ${DESTDIR}
294082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/defaults
295082c6764SWarner Loshmkdir -p ${DESTDIR}/boot/kernel
296082c6764SWarner Loshcp /boot/kernel/kernel ${DESTDIR}/boot/kernel
297328884aeSWarner Loshecho -h -D -S115200 > ${DESTDIR}/boot.config
298082c6764SWarner Losh# XXX
299082c6764SWarner Loshcp /boot/device.hints ${DESTDIR}/boot/device.hints
300082c6764SWarner Losh# Assume we're already built
301082c6764SWarner Loshmake install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_AS_USER=yes
302*22cf6021SWarner Losh# Copy init, /bin/sh, minimal libraries and testing /etc/rc
303*22cf6021SWarner Loshmkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \
304*22cf6021SWarner Losh      ${DESTDIR}/lib ${DESTDIR}/libexec \
305*22cf6021SWarner Losh      ${DESTDIR}/etc ${DESTDIR}/dev
306*22cf6021SWarner Loshfor f in /sbin/halt /sbin/init /bin/sh $(ldd /bin/sh | awk 'NF == 4 { print $3; }') /libexec/ld-elf.so.1; do
307082c6764SWarner Losh    cp $f ${DESTDIR}/$f
308082c6764SWarner Loshdone
309*22cf6021SWarner Loshcat > ${DESTDIR}/etc/rc <<EOF
310*22cf6021SWarner Losh#!/bin/sh
311*22cf6021SWarner Losh
312*22cf6021SWarner Loshecho "RC COMMAND RUNNING -- SUCCESS!!!!!"
313*22cf6021SWarner Loshhalt -p
314*22cf6021SWarner LoshEOF
315082c6764SWarner Losh
316082c6764SWarner Losh# OK. Let the games begin
317082c6764SWarner Losh
318*22cf6021SWarner Loshfor arch in amd64; do
319082c6764SWarner Losh    for geli in nogeli geli; do
320082c6764SWarner Losh	for scheme in gpt mbr; do
321082c6764SWarner Losh	    for fs in ufs zfs; do
322082c6764SWarner Losh		for bios in legacy uefi both; do
323082c6764SWarner Losh		    # Create sparse file and mount newly created filesystem(s) on it
324*22cf6021SWarner Losh		    img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img
325*22cf6021SWarner Losh		    sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh
326082c6764SWarner Losh		    echo "vvvvvvvvvvvvvvvvvvvvvv   Creating $img  vvvvvvvvvvvvvvvvvvvvvvv"
327*22cf6021SWarner Losh		    rm -f ${img}*
328082c6764SWarner Losh		    eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios}
329*22cf6021SWarner Losh		    eval qemu_${arch}_${bios} ${img} ${sh}
330*22cf6021SWarner Losh		    [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}*
331082c6764SWarner Losh		    echo "^^^^^^^^^^^^^^^^^^^^^^   Creating $img  ^^^^^^^^^^^^^^^^^^^^^^^"
332082c6764SWarner Losh		done
333082c6764SWarner Losh	    done
334082c6764SWarner Losh	done
335082c6764SWarner Losh    done
336*22cf6021SWarner Loshdone
337082c6764SWarner Losh
338082c6764SWarner Loshrmdir ${MNTPT}
339*22cf6021SWarner Losh
340*22cf6021SWarner Loshexit 0
341*22cf6021SWarner Losh
342*22cf6021SWarner Losh# Notes for the future
343*22cf6021SWarner Losh
344*22cf6021SWarner Loshfor arch in i386; do
345*22cf6021SWarner Losh    for geli in nogeli geli; do
346*22cf6021SWarner Losh	for scheme in gpt mbr; do
347*22cf6021SWarner Losh	    for fs in ufs zfs; do
348*22cf6021SWarner Losh		for bios in legacy; do
349*22cf6021SWarner Losh		    # Create sparse file and mount newly created filesystem(s) on it
350*22cf6021SWarner Losh		    img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img
351*22cf6021SWarner Losh		    sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh
352*22cf6021SWarner Losh		    echo "vvvvvvvvvvvvvvvvvvvvvv   Creating $img  vvvvvvvvvvvvvvvvvvvvvvv"
353*22cf6021SWarner Losh		    rm -f ${img}*
354*22cf6021SWarner Losh		    eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios}
355*22cf6021SWarner Losh		    eval qemu_${arch}_${bios} ${img} ${sh}
356*22cf6021SWarner Losh		    [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}*
357*22cf6021SWarner Losh		    echo "^^^^^^^^^^^^^^^^^^^^^^   Creating $img  ^^^^^^^^^^^^^^^^^^^^^^^"
358*22cf6021SWarner Losh		done
359*22cf6021SWarner Losh	    done
360*22cf6021SWarner Losh	done
361*22cf6021SWarner Losh    done
362*22cf6021SWarner Loshdone
363*22cf6021SWarner Losh
364*22cf6021SWarner Loshfor arch in arm aarch64; do
365*22cf6021SWarner Losh    for scheme in gpt mbr; do
366*22cf6021SWarner Losh	fs=ufs
367*22cf6021SWarner Losh	for bios in uboot efi; do
368*22cf6021SWarner Losh	    # Create sparse file and mount newly created filesystem(s) on it
369*22cf6021SWarner Losh	    img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img
370*22cf6021SWarner Losh	    sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh
371*22cf6021SWarner Losh	    echo "vvvvvvvvvvvvvvvvvvvvvv   Creating $img  vvvvvvvvvvvvvvvvvvvvvvv"
372*22cf6021SWarner Losh	    rm -f ${img}*
373*22cf6021SWarner Losh	    eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios}
374*22cf6021SWarner Losh	    eval qemu_${arch}_${bios} ${img} ${sh}
375*22cf6021SWarner Losh	    [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}*
376*22cf6021SWarner Losh	    echo "^^^^^^^^^^^^^^^^^^^^^^   Creating $img  ^^^^^^^^^^^^^^^^^^^^^^^"
377*22cf6021SWarner Losh	done
378*22cf6021SWarner Losh    done
379*22cf6021SWarner Loshdone
380*22cf6021SWarner Losh
381*22cf6021SWarner Loshfor arch in powerpc powerpc64; do
382*22cf6021SWarner Losh    for scheme in ppc-wtf; do
383*22cf6021SWarner Losh	fs=ufs
384*22cf6021SWarner Losh	for bios in ofw uboot chrp; do
385*22cf6021SWarner Losh	    # Create sparse file and mount newly created filesystem(s) on it
386*22cf6021SWarner Losh	    img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img
387*22cf6021SWarner Losh	    sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh
388*22cf6021SWarner Losh	    echo "vvvvvvvvvvvvvvvvvvvvvv   Creating $img  vvvvvvvvvvvvvvvvvvvvvvv"
389*22cf6021SWarner Losh	    rm -f ${img}*
390*22cf6021SWarner Losh	    eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios}
391*22cf6021SWarner Losh	    eval qemu_${arch}_${bios} ${img} ${sh}
392*22cf6021SWarner Losh	    [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}*
393*22cf6021SWarner Losh	    echo "^^^^^^^^^^^^^^^^^^^^^^   Creating $img  ^^^^^^^^^^^^^^^^^^^^^^^"
394*22cf6021SWarner Losh	done
395*22cf6021SWarner Losh    done
396*22cf6021SWarner Loshdone
397*22cf6021SWarner Losh
398*22cf6021SWarner Loshfor arch in sparc64; do
399*22cf6021SWarner Losh    for scheme in sun; do
400*22cf6021SWarner Losh	fs=ufs
401*22cf6021SWarner Losh	for bios in ofw; do
402*22cf6021SWarner Losh	    # Create sparse file and mount newly created filesystem(s) on it
403*22cf6021SWarner Losh	    img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img
404*22cf6021SWarner Losh	    sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh
405*22cf6021SWarner Losh	    echo "vvvvvvvvvvvvvvvvvvvvvv   Creating $img  vvvvvvvvvvvvvvvvvvvvvvv"
406*22cf6021SWarner Losh	    rm -f ${img}*
407*22cf6021SWarner Losh	    eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios}
408*22cf6021SWarner Losh	    eval qemu_${arch}_${bios} ${img} ${sh}
409*22cf6021SWarner Losh	    [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}*
410*22cf6021SWarner Losh	    echo "^^^^^^^^^^^^^^^^^^^^^^   Creating $img  ^^^^^^^^^^^^^^^^^^^^^^^"
411*22cf6021SWarner Losh	done
412*22cf6021SWarner Losh    done
413*22cf6021SWarner Loshdone
414