8 # The smallest FAT32 filesystem is 33292 KB
12 # Builds all the bat-shit crazy combinations we support booting from,
13 # at least for amd64. It assume you have a ~sane kernel in /boot/kernel
14 # and copies that into the ~150MB root images we create (we create the du
15 # size of the kernel + 20MB
17 # Sad panda sez: this runs as root, but could be userland if someone
18 # creates userland geli and zfs tools.
20 # This assumes an external program install-boot.sh which will install
21 # the appropriate boot files in the appropriate locations.
23 # These images assume ada0 will be the root image. We should likely
24 # use labels, but we don't.
26 # Assumes you've already rebuilt... maybe bad? Also maybe bad: the env
27 # vars should likely be conditionally set to allow better automation.
34 # Copy kernel + boot loader
35 (cd $src ; tar cf - .) | (cd $dst; tar xf -)
38 mk_nogeli_gpt_ufs_legacy() {
42 cat > ${src}/etc/fstab <<EOF
43 /dev/ada0p2 / ufs rw 1 1
45 makefs -t ffs -B little -s 200m ${img}.p2 ${src}
46 mkimg -s gpt -b ${src}/boot/pmbr \
47 -p freebsd-boot:=${src}/boot/gptboot \
48 -p freebsd-ufs:=${img}.p2 -o ${img}
49 rm -f ${src}/etc/fstab
52 mk_nogeli_gpt_ufs_uefi() {
56 cat > ${src}/etc/fstab <<EOF
57 /dev/ada0p2 / ufs rw 1 1
59 make_esp_file ${img}.p1 ${espsize} ${src}
60 makefs -t ffs -B little -s 200m ${img}.p2 ${src}
63 -p freebsd-ufs:=${img}.p2 -o ${img}
64 rm -f ${src}/etc/fstab
67 mk_nogeli_gpt_ufs_both() {
71 cat > ${src}/etc/fstab <<EOF
72 /dev/ada0p3 / ufs rw 1 1
74 make_esp_file ${img}.p1 ${espsize} ${src}
75 makefs -t ffs -B little -s 200m ${img}.p3 ${src}
76 # p1 is boot for uefi, p2 is boot for gpt, p3 is /
77 mkimg -b ${src}/boot/pmbr -s gpt \
79 -p freebsd-boot:=${src}/boot/gptboot \
80 -p freebsd-ufs:=${img}.p3 \
82 rm -f ${src}/etc/fstab
85 mk_nogeli_gpt_zfs_legacy() {
93 pool=nogeli-gpt-zfs-legacy
95 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
96 md=$(mdconfig -f ${img})
97 gpart create -s gpt ${md}
98 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
99 gpart add -t freebsd-zfs -l root $md
100 # install-boot will make this bootable
101 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2
102 zpool set bootfs=${pool} ${pool}
103 zfs create -po mountpoint=/ ${pool}/ROOT/default
104 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
105 cpsys ${src} ${mntpt}
106 # need to make a couple of tweaks
107 cat >> ${mntpt}/boot/loader.conf <<EOF
111 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
112 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
114 zfs umount -f ${pool}/ROOT/default
115 zfs set mountpoint=none ${pool}/ROOT/default
116 zpool set bootfs=${pool}/ROOT/default ${pool}
117 zpool set autoexpand=on ${pool}
119 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
123 mk_nogeli_gpt_zfs_uefi() {
131 pool=nogeli-gpt-zfs-uefi
133 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
134 md=$(mdconfig -f ${img})
135 gpart create -s gpt ${md}
136 gpart add -t efi -s ${espsize}k -a 4k ${md}
137 gpart add -t freebsd-zfs -l root $md
138 # install-boot will make this bootable
139 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2
140 zpool set bootfs=${pool} ${pool}
141 zfs create -po mountpoint=/ ${pool}/ROOT/default
142 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
143 cpsys ${src} ${mntpt}
144 # need to make a couple of tweaks
145 cat >> ${mntpt}/boot/loader.conf <<EOF
149 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
150 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
152 zfs umount -f ${pool}/ROOT/default
153 zfs set mountpoint=none ${pool}/ROOT/default
154 zpool set bootfs=${pool}/ROOT/default ${pool}
155 zpool set autoexpand=on ${pool}
157 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
161 mk_nogeli_gpt_zfs_both() {
169 pool=nogeli-gpt-zfs-both
171 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
172 md=$(mdconfig -f ${img})
173 gpart create -s gpt ${md}
174 gpart add -t efi -s ${espsize}k -a 4k ${md}
175 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
176 gpart add -t freebsd-zfs -l root $md
177 # install-boot will make this bootable
178 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3
179 zpool set bootfs=${pool} ${pool}
180 zfs create -po mountpoint=/ ${pool}/ROOT/default
181 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
182 cpsys ${src} ${mntpt}
183 # need to make a couple of tweaks
184 cat >> ${mntpt}/boot/loader.conf <<EOF
188 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
189 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
191 zfs umount -f ${pool}/ROOT/default
192 zfs set mountpoint=none ${pool}/ROOT/default
193 zpool set bootfs=${pool}/ROOT/default ${pool}
194 zpool set autoexpand=on ${pool}
196 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
200 mk_nogeli_mbr_ufs_legacy() {
204 cat > ${src}/etc/fstab <<EOF
205 /dev/ada0s1a / ufs rw 1 1
207 makefs -t ffs -B little -s 200m ${img}.s1a ${src}
208 mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1
209 mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img}
210 rm -f ${src}/etc/fstab
213 mk_nogeli_mbr_ufs_uefi() {
217 cat > ${src}/etc/fstab <<EOF
218 /dev/ada0s2a / ufs rw 1 1
220 make_esp_file ${img}.s1 ${espsize} ${src}
221 makefs -t ffs -B little -s 200m ${img}.s2a ${src}
222 mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2
223 mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
224 rm -f ${src}/etc/fstab
227 mk_nogeli_mbr_ufs_both() {
231 cat > ${src}/etc/fstab <<EOF
232 /dev/ada0s2a / ufs rw 1 1
234 make_esp_file ${img}.s1 ${espsize} ${src}
235 makefs -t ffs -B little -s 200m ${img}.s2a ${src}
236 mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2
237 mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
238 rm -f ${src}/etc/fstab
241 mk_nogeli_mbr_zfs_legacy() {
249 pool=nogeli-mbr-zfs-legacy
251 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
252 md=$(mdconfig -f ${img})
253 gpart create -s mbr ${md}
254 gpart add -t freebsd ${md}
255 gpart set -a active -i 1 ${md}
256 gpart create -s bsd ${md}s1
257 gpart add -t freebsd-zfs ${md}s1
258 # install-boot will make this bootable
259 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a
260 zpool set bootfs=${pool} ${pool}
261 zfs create -po mountpoint=/ ${pool}/ROOT/default
262 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
263 cpsys ${src} ${mntpt}
264 # need to make a couple of tweaks
265 cat >> ${mntpt}/boot/loader.conf <<EOF
269 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
270 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
272 zfs umount -f ${pool}/ROOT/default
273 zfs set mountpoint=none ${pool}/ROOT/default
274 zpool set bootfs=${pool}/ROOT/default ${pool}
275 zpool set autoexpand=on ${pool}
277 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
281 mk_nogeli_mbr_zfs_uefi() {
289 pool=nogeli-mbr-zfs-uefi
291 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
292 md=$(mdconfig -f ${img})
293 gpart create -s mbr ${md}
294 gpart add -t efi -s ${espsize}k ${md}
295 gpart add -t freebsd ${md}
296 gpart set -a active -i 2 ${md}
297 gpart create -s bsd ${md}s2
298 gpart add -t freebsd-zfs ${md}s2
299 # install-boot will make this bootable
300 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a
301 zpool set bootfs=${pool} ${pool}
302 zfs create -po mountpoint=/ ${pool}/ROOT/default
303 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
304 cpsys ${src} ${mntpt}
305 # need to make a couple of tweaks
306 cat >> ${mntpt}/boot/loader.conf <<EOF
310 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
311 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
313 zfs umount -f ${pool}/ROOT/default
314 zfs set mountpoint=none ${pool}/ROOT/default
315 zpool set bootfs=${pool}/ROOT/default ${pool}
316 zpool set autoexpand=on ${pool}
318 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
322 mk_nogeli_mbr_zfs_both() {
330 pool=nogeli-mbr-zfs-both
332 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
333 md=$(mdconfig -f ${img})
334 gpart create -s mbr ${md}
335 gpart add -t efi -s ${espsize}k ${md}
336 gpart add -t freebsd ${md}
337 gpart set -a active -i 2 ${md}
338 gpart create -s bsd ${md}s2
339 gpart add -t freebsd-zfs ${md}s2
340 # install-boot will make this bootable
341 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a
342 zpool set bootfs=${pool} ${pool}
343 zfs create -po mountpoint=/ ${pool}/ROOT/default
344 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
345 cpsys ${src} ${mntpt}
346 # need to make a couple of tweaks
347 cat >> ${mntpt}/boot/loader.conf <<EOF
351 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
352 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
354 zfs umount -f ${pool}/ROOT/default
355 zfs set mountpoint=none ${pool}/ROOT/default
356 zpool set bootfs=${pool}/ROOT/default ${pool}
357 zpool set autoexpand=on ${pool}
359 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
363 mk_geli_gpt_ufs_legacy() {
372 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
373 md=$(mdconfig -f ${img})
374 gpart create -s gpt ${md}
375 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
376 gpart add -t freebsd-ufs -l root $md
377 # install-boot will make this bootable
378 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
379 echo ${passphrase} | geli attach -j - ${md}p2
380 newfs /dev/${md}p2.eli
381 mount /dev/${md}p2.eli ${mntpt}
382 cpsys ${src} ${mntpt}
383 # need to make a couple of tweaks
384 cat > ${mntpt}/boot/loader.conf <<EOF
387 cat > ${mntpt}/etc/fstab <<EOF
388 /dev/ada0p2.eli / ufs rw 1 1
391 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
395 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
399 mk_geli_gpt_ufs_uefi() {
408 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
409 md=$(mdconfig -f ${img})
410 gpart create -s gpt ${md}
411 gpart add -t efi -s ${espsize}k -a 4k ${md}
412 gpart add -t freebsd-ufs -l root $md
413 # install-boot will make this bootable
414 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
415 echo ${passphrase} | geli attach -j - ${md}p2
416 newfs /dev/${md}p2.eli
417 mount /dev/${md}p2.eli ${mntpt}
418 cpsys ${src} ${mntpt}
419 # need to make a couple of tweaks
420 cat > ${mntpt}/boot/loader.conf <<EOF
423 cat > ${mntpt}/etc/fstab <<EOF
424 /dev/ada0p2.eli / ufs rw 1 1
427 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
431 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
435 mk_geli_gpt_ufs_both() {
444 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
445 md=$(mdconfig -f ${img})
446 gpart create -s gpt ${md}
447 gpart add -t efi -s ${espsize}k -a 4k ${md}
448 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
449 gpart add -t freebsd-ufs -l root $md
450 # install-boot will make this bootable
451 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3
452 echo ${passphrase} | geli attach -j - ${md}p3
453 newfs /dev/${md}p3.eli
454 mount /dev/${md}p3.eli ${mntpt}
455 cpsys ${src} ${mntpt}
456 # need to make a couple of tweaks
457 cat > ${mntpt}/boot/loader.conf <<EOF
460 cat > ${mntpt}/etc/fstab <<EOF
461 /dev/ada0p3.eli / ufs rw 1 1
464 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
468 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
472 mk_geli_gpt_zfs_legacy() {
480 pool=geli-gpt-zfs-legacy
482 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
483 md=$(mdconfig -f ${img})
484 gpart create -s gpt ${md}
485 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
486 gpart add -t freebsd-zfs -l root $md
487 # install-boot will make this bootable
488 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
489 echo ${passphrase} | geli attach -j - ${md}p2
490 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli
491 zpool set bootfs=${pool} ${pool}
492 zfs create -po mountpoint=/ ${pool}/ROOT/default
493 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
494 cpsys ${src} ${mntpt}
495 # need to make a couple of tweaks
496 cat >> ${mntpt}/boot/loader.conf <<EOF
501 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
502 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
503 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
505 zfs umount -f ${pool}/ROOT/default
506 zfs set mountpoint=none ${pool}/ROOT/default
507 zpool set bootfs=${pool}/ROOT/default ${pool}
508 zpool set autoexpand=on ${pool}
511 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
515 mk_geli_gpt_zfs_uefi() {
523 pool=geli-gpt-zfs-uefi
525 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
526 md=$(mdconfig -f ${img})
527 gpart create -s gpt ${md}
528 gpart add -t efi -s ${espsize}k -a 4k ${md}
529 gpart add -t freebsd-zfs -l root $md
530 # install-boot will make this bootable
531 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
532 echo ${passphrase} | geli attach -j - ${md}p2
533 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli
534 zpool set bootfs=${pool} ${pool}
535 zfs create -po mountpoint=/ ${pool}/ROOT/default
536 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
537 cpsys ${src} ${mntpt}
538 # need to make a couple of tweaks
539 cat >> ${mntpt}/boot/loader.conf <<EOF
544 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
545 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
546 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
548 zfs umount -f ${pool}/ROOT/default
549 zfs set mountpoint=none ${pool}/ROOT/default
550 zpool set bootfs=${pool}/ROOT/default ${pool}
551 zpool set autoexpand=on ${pool}
554 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
558 mk_geli_gpt_zfs_both() {
566 pool=geli-gpt-zfs-both
568 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
569 md=$(mdconfig -f ${img})
570 gpart create -s gpt ${md}
571 gpart add -t efi -s ${espsize}k -a 4k ${md}
572 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
573 gpart add -t freebsd-zfs -l root $md
574 # install-boot will make this bootable
575 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3
576 echo ${passphrase} | geli attach -j - ${md}p3
577 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli
578 zpool set bootfs=${pool} ${pool}
579 zfs create -po mountpoint=/ ${pool}/ROOT/default
580 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
581 cpsys ${src} ${mntpt}
582 # need to make a couple of tweaks
583 cat > ${mntpt}/boot/loader.conf <<EOF
588 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
589 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
590 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
592 zfs umount -f ${pool}/ROOT/default
593 zfs set mountpoint=none ${pool}/ROOT/default
594 zpool set bootfs=${pool}/ROOT/default ${pool}
595 zpool set autoexpand=on ${pool}
598 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
602 # GELI+MBR is not a valid configuration
603 mk_geli_mbr_ufs_legacy() {
606 mk_geli_mbr_ufs_uefi() {
609 mk_geli_mbr_ufs_both() {
612 mk_geli_mbr_zfs_legacy() {
615 mk_geli_mbr_zfs_uefi() {
618 mk_geli_mbr_zfs_both() {
626 mk_sparc64_nogeli_vtoc8_ufs_ofw() {
635 cat > ${src}/etc/fstab <<EOF
636 /dev/ada0a / ufs rw 1 1
638 makefs -t ffs -B big -s 200m ${img} ${src}
639 md=$(mdconfig -f ${img})
640 # For non-native builds, ensure that geom_part(4) supports VTOC8.
641 kldload geom_part_vtoc8.ko
642 gpart create -s VTOC8 ${md}
643 gpart add -t freebsd-ufs ${md}
644 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
646 rm -f ${src}/etc/fstab
649 qser="-serial telnet::4444,server -nographic"
651 # https://wiki.freebsd.org/QemuRecipes
658 echo "qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt \
659 -bios QEMU_EFI.fd ${qser} \
660 -drive if=none,file=${img},id=hd0 \
661 -device virtio-blk-device,drive=hd0" > $sh
663 # https://wiki.freebsd.org/arm64/QEMU also has
664 # -device virtio-net-device,netdev=net0
665 # -netdev user,id=net0
674 echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh
683 echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh
692 echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh
693 echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh
706 echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh
716 echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh
720 # Needs UEFI to be supported
726 echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh
727 echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" >> $sh
739 # Create sparse file and mount newly created filesystem(s) on it
740 img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img
741 sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh
742 echo "vvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvv"
744 eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios}
745 eval qemu_${arch}_${bios} ${img} ${sh}
746 [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}*
747 echo "^^^^^^^^^^^^^^ Created $img ^^^^^^^^^^^^^^^"
751 # qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048
753 # Powerpc -- doesn't work but maybe it would enough for testing -- needs details
755 # qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw
758 # qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw
761 SRCTOP=$(make -v SRCTOP)
763 OBJDIR=$(make -v .OBJDIR)
764 IMGDIR=${OBJDIR}/boot-images
766 MNTPT=$(mktemp -d /tmp/stand-test.XXXXXX)
768 # Setup the installed tree...
769 DESTDIR=${OBJDIR}/boot-tree
771 mkdir -p ${DESTDIR}/boot/defaults
772 mkdir -p ${DESTDIR}/boot/kernel
773 cp /boot/kernel/kernel ${DESTDIR}/boot/kernel
774 echo -h -D -S115200 > ${DESTDIR}/boot.config
775 cat > ${DESTDIR}/boot/loader.conf <<EOF
777 comconsole_speed=115200
782 cp /boot/device.hints ${DESTDIR}/boot/device.hints
783 # Assume we're already built
784 make install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_AS_USER=yes
785 # Copy init, /bin/sh, minimal libraries and testing /etc/rc
786 mkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \
787 ${DESTDIR}/lib ${DESTDIR}/libexec \
788 ${DESTDIR}/etc ${DESTDIR}/dev
789 for f in /sbin/halt /sbin/init /bin/sh /sbin/sysctl $(ldd /bin/sh | awk 'NF == 4 { print $3; }') /libexec/ld-elf.so.1; do
792 cat > ${DESTDIR}/etc/rc <<EOF
795 sysctl machdep.bootmethod
796 echo "RC COMMAND RUNNING -- SUCCESS!!!!!"
800 # If we were given exactly 5 args, go make that one image.
802 if [ $# -eq 5 ]; then
807 # OK. Let the games begin
809 for arch in amd64; do
810 for geli in nogeli geli; do
811 for scheme in gpt mbr; do
812 for fs in ufs zfs; do
813 for bios in legacy uefi both; do
814 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
825 # Notes for the future
828 for geli in nogeli geli; do
829 for scheme in gpt mbr; do
830 for fs in ufs zfs; do
831 for bios in legacy; do
832 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
839 for arch in arm aarch64; do
840 for scheme in gpt mbr; do
842 for bios in uboot efi; do
843 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
848 for arch in powerpc powerpc64; do
849 for scheme in ppc-wtf; do
851 for bios in ofw uboot chrp; do
852 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
857 for arch in sparc64; do
858 for geli in nogeli; do
859 for scheme in vtoc8; do
862 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}