11 # Builds all the bat-shit crazy combinations we support booting from,
12 # at least for amd64. It assume you have a ~sane kernel in /boot/kernel
13 # and copies that into the ~150MB root images we create (we create the du
14 # size of the kernel + 20MB
16 # Sad panda sez: this runs as root, but could be userland if someone
17 # creates userland geli and zfs tools.
19 # This assumes an external prograam install-boot.sh which will install
20 # the appropriate boot files in the appropriate locations.
22 # These images assume ada0 will be the root image. We should likely
23 # use labels, but we don't.
25 # ASsumes you've already rebuilt... maybe bad? Also maybe bad: the env
26 # vars should likely be conditionally set to allow better automation.
33 # Copy kernel + boot loader
34 (cd $src ; tar cf - .) | (cd $dst; tar xf -)
39 local src dst md mntpt
43 if [ "${do_boot1_efi}" -eq 1 ]; then
44 cp ${src}/boot/boot1.efifat ${dst}
46 dd if=/dev/zero of=${dst} count=1 seek=$((100 * 1024 * 1024 / 512))
47 md=$(mdconfig -f ${dst})
48 newfs_msdos -a 32 /dev/${md}
49 mntpt=$(mktemp -d /tmp/stand-test.XXXXXX)
50 mount -t msdos /dev/${md} ${mntpt}
51 # mkdir -p ${mntpt}/efi/freebsd # not yet
52 mkdir -p ${mntpt}/efi/boot
53 cp ${src}/boot/loader.efi ${mntpt}/efi/boot/bootx64.efi
60 mk_nogeli_gpt_ufs_legacy() {
64 cat > ${src}/etc/fstab <<EOF
65 /dev/ada0p2 / ufs rw 1 1
67 makefs -t ffs -B little -s 200m ${img}.p2 ${src}
68 mkimg -s gpt -b ${src}/boot/pmbr \
69 -p freebsd-boot:=${src}/boot/gptboot \
70 -p freebsd-ufs:=${img}.p2 -o ${img}
71 rm -f ${src}/etc/fstab
74 mk_nogeli_gpt_ufs_uefi() {
78 cat > ${src}/etc/fstab <<EOF
79 /dev/ada0p2 / ufs rw 1 1
81 make_esp ${src} ${img}.p1
82 makefs -t ffs -B little -s 200m ${img}.p2 ${src}
85 -p freebsd-ufs:=${img}.p2 -o ${img}
86 rm -f ${src}/etc/fstab
89 mk_nogeli_gpt_ufs_both() {
93 cat > ${src}/etc/fstab <<EOF
94 /dev/ada0p3 / ufs rw 1 1
96 make_esp ${src} ${img}.p1
97 makefs -t ffs -B little -s 200m ${img}.p3 ${src}
98 # p1 is boot for uefi, p2 is boot for gpt, p3 is /
99 mkimg -b ${src}/boot/pmbr -s gpt \
101 -p freebsd-boot:=${src}/boot/gptboot \
102 -p freebsd-ufs:=${img}.p3 \
104 rm -f ${src}/etc/fstab
107 mk_nogeli_gpt_zfs_legacy() {
115 pool=nogeli-gpt-zfs-legacy
117 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
118 md=$(mdconfig -f ${img})
119 gpart create -s gpt ${md}
120 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
121 gpart add -t freebsd-zfs -l root $md
122 # install-boot will make this bootable
123 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2
124 zpool set bootfs=${pool} ${pool}
125 zfs create -po mountpoint=/ ${pool}/ROOT/default
126 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
127 cpsys ${src} ${mntpt}
128 # need to make a couple of tweaks
129 cat >> ${mntpt}/boot/loader.conf <<EOF
133 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
134 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
136 zfs umount -f ${pool}/ROOT/default
137 zfs set mountpoint=none ${pool}/ROOT/default
138 zpool set bootfs=${pool}/ROOT/default ${pool}
139 zpool set autoexpand=on ${pool}
141 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
145 mk_nogeli_gpt_zfs_uefi() {
153 pool=nogeli-gpt-zfs-uefi
155 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
156 md=$(mdconfig -f ${img})
157 gpart create -s gpt ${md}
158 gpart add -t efi -s 800k -a 4k ${md}
159 gpart add -t freebsd-zfs -l root $md
160 # install-boot will make this bootable
161 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2
162 zpool set bootfs=${pool} ${pool}
163 zfs create -po mountpoint=/ ${pool}/ROOT/default
164 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
165 cpsys ${src} ${mntpt}
166 # need to make a couple of tweaks
167 cat >> ${mntpt}/boot/loader.conf <<EOF
171 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
172 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
174 zfs umount -f ${pool}/ROOT/default
175 zfs set mountpoint=none ${pool}/ROOT/default
176 zpool set bootfs=${pool}/ROOT/default ${pool}
177 zpool set autoexpand=on ${pool}
179 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
183 mk_nogeli_gpt_zfs_both() {
191 pool=nogeli-gpt-zfs-both
193 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
194 md=$(mdconfig -f ${img})
195 gpart create -s gpt ${md}
196 gpart add -t efi -s 800k -a 4k ${md}
197 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
198 gpart add -t freebsd-zfs -l root $md
199 # install-boot will make this bootable
200 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3
201 zpool set bootfs=${pool} ${pool}
202 zfs create -po mountpoint=/ ${pool}/ROOT/default
203 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
204 cpsys ${src} ${mntpt}
205 # need to make a couple of tweaks
206 cat >> ${mntpt}/boot/loader.conf <<EOF
210 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
211 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
213 zfs umount -f ${pool}/ROOT/default
214 zfs set mountpoint=none ${pool}/ROOT/default
215 zpool set bootfs=${pool}/ROOT/default ${pool}
216 zpool set autoexpand=on ${pool}
218 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
222 mk_nogeli_mbr_ufs_legacy() {
226 cat > ${src}/etc/fstab <<EOF
227 /dev/ada0s1a / ufs rw 1 1
229 makefs -t ffs -B little -s 200m ${img}.s1a ${src}
230 mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1
231 mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img}
232 rm -f ${src}/etc/fstab
235 mk_nogeli_mbr_ufs_uefi() {
239 cat > ${src}/etc/fstab <<EOF
240 /dev/ada0s2a / ufs rw 1 1
242 make_esp ${src} ${img}.s1
243 makefs -t ffs -B little -s 200m ${img}.s2a ${src}
244 mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2
245 mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
246 rm -f ${src}/etc/fstab
249 mk_nogeli_mbr_ufs_both() {
253 cat > ${src}/etc/fstab <<EOF
254 /dev/ada0s2a / ufs rw 1 1
256 make_esp ${src} ${img}.s1
257 makefs -t ffs -B little -s 200m ${img}.s2a ${src}
258 mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2
259 mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
260 rm -f ${src}/etc/fstab
263 mk_nogeli_mbr_zfs_legacy() {
271 pool=nogeli-mbr-zfs-legacy
273 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
274 md=$(mdconfig -f ${img})
275 gpart create -s mbr ${md}
276 gpart add -t freebsd ${md}
277 gpart set -a active -i 1 ${md}
278 gpart create -s bsd ${md}s1
279 gpart add -t freebsd-zfs ${md}s1
280 # install-boot will make this bootable
281 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a
282 zpool set bootfs=${pool} ${pool}
283 zfs create -po mountpoint=/ ${pool}/ROOT/default
284 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
285 cpsys ${src} ${mntpt}
286 # need to make a couple of tweaks
287 cat >> ${mntpt}/boot/loader.conf <<EOF
291 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
292 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
294 zfs umount -f ${pool}/ROOT/default
295 zfs set mountpoint=none ${pool}/ROOT/default
296 zpool set bootfs=${pool}/ROOT/default ${pool}
297 zpool set autoexpand=on ${pool}
299 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
303 mk_nogeli_mbr_zfs_uefi() {
311 pool=nogeli-mbr-zfs-uefi
313 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
314 md=$(mdconfig -f ${img})
315 gpart create -s mbr ${md}
316 gpart add -t \!239 -s 800k ${md}
317 gpart add -t freebsd ${md}
318 gpart set -a active -i 2 ${md}
319 gpart create -s bsd ${md}s2
320 gpart add -t freebsd-zfs ${md}s2
321 # install-boot will make this bootable
322 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a
323 zpool set bootfs=${pool} ${pool}
324 zfs create -po mountpoint=/ ${pool}/ROOT/default
325 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
326 cpsys ${src} ${mntpt}
327 # need to make a couple of tweaks
328 cat >> ${mntpt}/boot/loader.conf <<EOF
332 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
333 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
335 zfs umount -f ${pool}/ROOT/default
336 zfs set mountpoint=none ${pool}/ROOT/default
337 zpool set bootfs=${pool}/ROOT/default ${pool}
338 zpool set autoexpand=on ${pool}
340 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
344 mk_nogeli_mbr_zfs_both() {
352 pool=nogeli-mbr-zfs-both
354 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
355 md=$(mdconfig -f ${img})
356 gpart create -s mbr ${md}
357 gpart add -t \!239 -s 800k ${md}
358 gpart add -t freebsd ${md}
359 gpart set -a active -i 2 ${md}
360 gpart create -s bsd ${md}s2
361 gpart add -t freebsd-zfs ${md}s2
362 # install-boot will make this bootable
363 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a
364 zpool set bootfs=${pool} ${pool}
365 zfs create -po mountpoint=/ ${pool}/ROOT/default
366 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
367 cpsys ${src} ${mntpt}
368 # need to make a couple of tweaks
369 cat >> ${mntpt}/boot/loader.conf <<EOF
373 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
374 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
376 zfs umount -f ${pool}/ROOT/default
377 zfs set mountpoint=none ${pool}/ROOT/default
378 zpool set bootfs=${pool}/ROOT/default ${pool}
379 zpool set autoexpand=on ${pool}
381 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
385 mk_geli_gpt_ufs_legacy() {
394 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
395 md=$(mdconfig -f ${img})
396 gpart create -s gpt ${md}
397 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
398 gpart add -t freebsd-ufs -l root $md
399 # install-boot will make this bootable
400 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
401 echo ${passphrase} | geli attach -j - ${md}p2
402 newfs /dev/${md}p2.eli
403 mount /dev/${md}p2.eli ${mntpt}
404 cpsys ${src} ${mntpt}
405 # need to make a couple of tweaks
406 cat > ${mntpt}/boot/loader.conf <<EOF
409 cat > ${mntpt}/etc/fstab <<EOF
410 /dev/ada0p2.eli / ufs rw 1 1
413 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
417 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
421 mk_geli_gpt_ufs_uefi() {
430 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
431 md=$(mdconfig -f ${img})
432 gpart create -s gpt ${md}
433 gpart add -t efi -s 800k -a 4k ${md}
434 gpart add -t freebsd-ufs -l root $md
435 # install-boot will make this bootable
436 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
437 echo ${passphrase} | geli attach -j - ${md}p2
438 newfs /dev/${md}p2.eli
439 mount /dev/${md}p2.eli ${mntpt}
440 cpsys ${src} ${mntpt}
441 # need to make a couple of tweaks
442 cat > ${mntpt}/boot/loader.conf <<EOF
445 cat > ${mntpt}/etc/fstab <<EOF
446 /dev/ada0p2.eli / ufs rw 1 1
449 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
453 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
457 mk_geli_gpt_ufs_both() {
466 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
467 md=$(mdconfig -f ${img})
468 gpart create -s gpt ${md}
469 gpart add -t efi -s 800k -a 4k ${md}
470 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
471 gpart add -t freebsd-ufs -l root $md
472 # install-boot will make this bootable
473 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3
474 echo ${passphrase} | geli attach -j - ${md}p3
475 newfs /dev/${md}p3.eli
476 mount /dev/${md}p3.eli ${mntpt}
477 cpsys ${src} ${mntpt}
478 # need to make a couple of tweaks
479 cat > ${mntpt}/boot/loader.conf <<EOF
482 cat > ${mntpt}/etc/fstab <<EOF
483 /dev/ada0p3.eli / ufs rw 1 1
486 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
490 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
494 mk_geli_gpt_zfs_legacy() {
502 pool=geli-gpt-zfs-legacy
504 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
505 md=$(mdconfig -f ${img})
506 gpart create -s gpt ${md}
507 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
508 gpart add -t freebsd-zfs -l root $md
509 # install-boot will make this bootable
510 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
511 echo ${passphrase} | geli attach -j - ${md}p2
512 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli
513 zpool set bootfs=${pool} ${pool}
514 zfs create -po mountpoint=/ ${pool}/ROOT/default
515 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
516 cpsys ${src} ${mntpt}
517 # need to make a couple of tweaks
518 cat >> ${mntpt}/boot/loader.conf <<EOF
523 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
524 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
525 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
527 zfs umount -f ${pool}/ROOT/default
528 zfs set mountpoint=none ${pool}/ROOT/default
529 zpool set bootfs=${pool}/ROOT/default ${pool}
530 zpool set autoexpand=on ${pool}
533 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
537 mk_geli_gpt_zfs_uefi() {
545 pool=geli-gpt-zfs-uefi
547 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
548 md=$(mdconfig -f ${img})
549 gpart create -s gpt ${md}
550 gpart add -t efi -s 800k -a 4k ${md}
551 gpart add -t freebsd-zfs -l root $md
552 # install-boot will make this bootable
553 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
554 echo ${passphrase} | geli attach -j - ${md}p2
555 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli
556 zpool set bootfs=${pool} ${pool}
557 zfs create -po mountpoint=/ ${pool}/ROOT/default
558 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
559 cpsys ${src} ${mntpt}
560 # need to make a couple of tweaks
561 cat >> ${mntpt}/boot/loader.conf <<EOF
566 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
567 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
568 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
570 zfs umount -f ${pool}/ROOT/default
571 zfs set mountpoint=none ${pool}/ROOT/default
572 zpool set bootfs=${pool}/ROOT/default ${pool}
573 zpool set autoexpand=on ${pool}
576 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
580 mk_geli_gpt_zfs_both() {
588 pool=geli-gpt-zfs-both
590 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
591 md=$(mdconfig -f ${img})
592 gpart create -s gpt ${md}
593 gpart add -t efi -s 800k -a 4k ${md}
594 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
595 gpart add -t freebsd-zfs -l root $md
596 # install-boot will make this bootable
597 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3
598 echo ${passphrase} | geli attach -j - ${md}p3
599 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli
600 zpool set bootfs=${pool} ${pool}
601 zfs create -po mountpoint=/ ${pool}/ROOT/default
602 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
603 cpsys ${src} ${mntpt}
604 # need to make a couple of tweaks
605 cat > ${mntpt}/boot/loader.conf <<EOF
610 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
611 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
612 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
614 zfs umount -f ${pool}/ROOT/default
615 zfs set mountpoint=none ${pool}/ROOT/default
616 zpool set bootfs=${pool}/ROOT/default ${pool}
617 zpool set autoexpand=on ${pool}
620 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
624 # GELI+MBR is not a valid configuration
625 mk_geli_mbr_ufs_legacy() {
628 mk_geli_mbr_ufs_uefi() {
631 mk_geli_mbr_ufs_both() {
634 mk_geli_mbr_zfs_legacy() {
637 mk_geli_mbr_zfs_uefi() {
640 mk_geli_mbr_zfs_both() {
648 mk_sparc64_nogeli_vtoc8_ufs_ofw() {
657 cat > ${src}/etc/fstab <<EOF
658 /dev/ada0a / ufs rw 1 1
660 makefs -t ffs -B big -s 200m ${img} ${src}
661 md=$(mdconfig -f ${img})
662 # For non-native builds, ensure that geom_part(4) supports VTOC8.
663 kldload geom_part_vtoc8.ko
664 gpart create -s VTOC8 ${md}
665 gpart add -t freebsd-ufs ${md}
666 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
668 rm -f ${src}/etc/fstab
671 qser="-serial telnet::4444,server -nographic"
673 # https://wiki.freebsd.org/QemuRecipes
680 echo "qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt \
681 -bios QEMU_EFI.fd ${qser} \
682 -drive if=none,file=${img},id=hd0 \
683 -device virtio-blk-device,drive=hd0" > $sh
685 # https://wiki.freebsd.org/arm64/QEMU also has
686 # -device virtio-net-device,netdev=net0
687 # -netdev user,id=net0
696 echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh
705 echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh
714 echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh
715 echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh
728 echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh
738 echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh
742 # Needs UEFI to be supported
748 echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh
749 echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" >> $sh
761 # Create sparse file and mount newly created filesystem(s) on it
762 img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img
763 sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh
764 echo "vvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvv"
766 eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios}
767 eval qemu_${arch}_${bios} ${img} ${sh}
768 [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}*
769 echo "^^^^^^^^^^^^^^ Created $img ^^^^^^^^^^^^^^^"
773 # qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048
775 # Powerpc -- doesn't work but maybe it would enough for testing -- needs details
777 # qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw
780 # qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw
783 SRCTOP=$(make -v SRCTOP)
785 OBJDIR=$(make -v .OBJDIR)
786 IMGDIR=${OBJDIR}/boot-images
788 MNTPT=$(mktemp -d /tmp/stand-test.XXXXXX)
790 # Setup the installed tree...
791 DESTDIR=${OBJDIR}/boot-tree
793 mkdir -p ${DESTDIR}/boot/defaults
794 mkdir -p ${DESTDIR}/boot/kernel
795 # XXX boot1 exists only on sparc64
796 cp /boot/boot1 ${DESTDIR}/boot
797 cp /boot/kernel/kernel ${DESTDIR}/boot/kernel
798 echo -h -D -S115200 > ${DESTDIR}/boot.config
799 cat > ${DESTDIR}/boot/loader.conf <<EOF
801 comconsole_speed=115200
806 cp /boot/device.hints ${DESTDIR}/boot/device.hints
807 # Assume we're already built
808 make install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_AS_USER=yes
809 # Copy init, /bin/sh, minimal libraries and testing /etc/rc
810 mkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \
811 ${DESTDIR}/lib ${DESTDIR}/libexec \
812 ${DESTDIR}/etc ${DESTDIR}/dev
813 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
816 cat > ${DESTDIR}/etc/rc <<EOF
819 sysctl machdep.bootmethod
820 echo "RC COMMAND RUNNING -- SUCCESS!!!!!"
824 # If we were given exactly 5 args, go make that one image.
826 if [ $# -eq 5 ]; then
831 # OK. Let the games begin
833 for arch in amd64; do
834 for geli in nogeli geli; do
835 for scheme in gpt mbr; do
836 for fs in ufs zfs; do
837 for bios in legacy uefi both; do
838 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
849 # Notes for the future
852 for geli in nogeli geli; do
853 for scheme in gpt mbr; do
854 for fs in ufs zfs; do
855 for bios in legacy; do
856 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
863 for arch in arm aarch64; do
864 for scheme in gpt mbr; do
866 for bios in uboot efi; do
867 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
872 for arch in powerpc powerpc64; do
873 for scheme in ppc-wtf; do
875 for bios in ofw uboot chrp; do
876 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
881 for arch in sparc64; do
882 for geli in nogeli; do
883 for scheme in vtoc8; do
886 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}