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.
30 . $(dirname $0)/install-boot.sh
36 # Copy kernel + boot loader
37 (cd $src ; tar cf - .) | (cd $dst; tar xf -)
40 mk_nogeli_gpt_ufs_legacy() {
44 cat > ${src}/etc/fstab <<EOF
45 /dev/ada0p2 / ufs rw 1 1
47 makefs -t ffs -B little -s 200m ${img}.p2 ${src}
48 mkimg -s gpt -b ${src}/boot/pmbr \
49 -p freebsd-boot:=${src}/boot/gptboot \
50 -p freebsd-ufs:=${img}.p2 -o ${img}
51 rm -f ${src}/etc/fstab
54 mk_nogeli_gpt_ufs_uefi() {
58 cat > ${src}/etc/fstab <<EOF
59 /dev/ada0p2 / ufs rw 1 1
61 make_esp_file ${img}.p1 ${espsize} ${src}/boot/loader.efi
62 makefs -t ffs -B little -s 200m ${img}.p2 ${src}
65 -p freebsd-ufs:=${img}.p2 -o ${img}
66 rm -f ${src}/etc/fstab
69 mk_nogeli_gpt_ufs_both() {
73 cat > ${src}/etc/fstab <<EOF
74 /dev/ada0p3 / ufs rw 1 1
76 make_esp_file ${img}.p1 ${espsize} ${src}/boot/loader.efi
77 makefs -t ffs -B little -s 200m ${img}.p3 ${src}
78 # p1 is boot for uefi, p2 is boot for gpt, p3 is /
79 mkimg -b ${src}/boot/pmbr -s gpt \
81 -p freebsd-boot:=${src}/boot/gptboot \
82 -p freebsd-ufs:=${img}.p3 \
84 rm -f ${src}/etc/fstab
87 mk_nogeli_gpt_zfs_legacy() {
95 pool=nogeli-gpt-zfs-legacy
97 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
98 md=$(mdconfig -f ${img})
99 gpart create -s gpt ${md}
100 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
101 gpart add -t freebsd-zfs -l root $md
102 # install-boot will make this bootable
103 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2
104 zpool set bootfs=${pool} ${pool}
105 zfs create -po mountpoint=/ ${pool}/ROOT/default
106 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
107 cpsys ${src} ${mntpt}
108 # need to make a couple of tweaks
109 cat >> ${mntpt}/boot/loader.conf <<EOF
113 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
114 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
116 zfs umount -f ${pool}/ROOT/default
117 zfs set mountpoint=none ${pool}/ROOT/default
118 zpool set bootfs=${pool}/ROOT/default ${pool}
119 zpool set autoexpand=on ${pool}
121 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
125 mk_nogeli_gpt_zfs_uefi() {
133 pool=nogeli-gpt-zfs-uefi
135 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
136 md=$(mdconfig -f ${img})
137 gpart create -s gpt ${md}
138 gpart add -t efi -s ${espsize}k -a 4k ${md}
139 gpart add -t freebsd-zfs -l root $md
140 # install-boot will make this bootable
141 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2
142 zpool set bootfs=${pool} ${pool}
143 zfs create -po mountpoint=/ ${pool}/ROOT/default
144 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
145 cpsys ${src} ${mntpt}
146 # need to make a couple of tweaks
147 cat >> ${mntpt}/boot/loader.conf <<EOF
151 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
152 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
154 zfs umount -f ${pool}/ROOT/default
155 zfs set mountpoint=none ${pool}/ROOT/default
156 zpool set bootfs=${pool}/ROOT/default ${pool}
157 zpool set autoexpand=on ${pool}
159 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
163 mk_nogeli_gpt_zfs_both() {
171 pool=nogeli-gpt-zfs-both
173 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
174 md=$(mdconfig -f ${img})
175 gpart create -s gpt ${md}
176 gpart add -t efi -s ${espsize}k -a 4k ${md}
177 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
178 gpart add -t freebsd-zfs -l root $md
179 # install-boot will make this bootable
180 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3
181 zpool set bootfs=${pool} ${pool}
182 zfs create -po mountpoint=/ ${pool}/ROOT/default
183 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
184 cpsys ${src} ${mntpt}
185 # need to make a couple of tweaks
186 cat >> ${mntpt}/boot/loader.conf <<EOF
190 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
191 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
193 zfs umount -f ${pool}/ROOT/default
194 zfs set mountpoint=none ${pool}/ROOT/default
195 zpool set bootfs=${pool}/ROOT/default ${pool}
196 zpool set autoexpand=on ${pool}
198 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
202 mk_nogeli_mbr_ufs_legacy() {
206 cat > ${src}/etc/fstab <<EOF
207 /dev/ada0s1a / ufs rw 1 1
209 makefs -t ffs -B little -s 200m ${img}.s1a ${src}
210 mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s1a -o ${img}.s1
211 mkimg -a 1 -s mbr -b ${src}/boot/boot0sio -p freebsd:=${img}.s1 -o ${img}
212 rm -f ${src}/etc/fstab
215 mk_nogeli_mbr_ufs_uefi() {
219 cat > ${src}/etc/fstab <<EOF
220 /dev/ada0s2a / ufs rw 1 1
222 make_esp_file ${img}.s1 ${espsize} ${src}/boot/loader.efi
223 makefs -t ffs -B little -s 200m ${img}.s2a ${src}
224 mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2
225 mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
226 rm -f ${src}/etc/fstab
229 mk_nogeli_mbr_ufs_both() {
233 cat > ${src}/etc/fstab <<EOF
234 /dev/ada0s2a / ufs rw 1 1
236 make_esp_file ${img}.s1 ${espsize} ${src}/boot/loader.efi
237 makefs -t ffs -B little -s 200m ${img}.s2a ${src}
238 mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2
239 mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
240 rm -f ${src}/etc/fstab
243 mk_nogeli_mbr_zfs_legacy() {
251 pool=nogeli-mbr-zfs-legacy
253 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
254 md=$(mdconfig -f ${img})
255 gpart create -s mbr ${md}
256 gpart add -t freebsd ${md}
257 gpart set -a active -i 1 ${md}
258 gpart create -s bsd ${md}s1
259 gpart add -t freebsd-zfs ${md}s1
260 # install-boot will make this bootable
261 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s1a
262 zpool set bootfs=${pool} ${pool}
263 zfs create -po mountpoint=/ ${pool}/ROOT/default
264 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
265 cpsys ${src} ${mntpt}
266 # need to make a couple of tweaks
267 cat >> ${mntpt}/boot/loader.conf <<EOF
271 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
272 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
274 zfs umount -f ${pool}/ROOT/default
275 zfs set mountpoint=none ${pool}/ROOT/default
276 zpool set bootfs=${pool}/ROOT/default ${pool}
277 zpool set autoexpand=on ${pool}
279 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
283 mk_nogeli_mbr_zfs_uefi() {
291 pool=nogeli-mbr-zfs-uefi
293 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
294 md=$(mdconfig -f ${img})
295 gpart create -s mbr ${md}
296 gpart add -t efi -s ${espsize}k ${md}
297 gpart add -t freebsd ${md}
298 gpart set -a active -i 2 ${md}
299 gpart create -s bsd ${md}s2
300 gpart add -t freebsd-zfs ${md}s2
301 # install-boot will make this bootable
302 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a
303 zpool set bootfs=${pool} ${pool}
304 zfs create -po mountpoint=/ ${pool}/ROOT/default
305 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
306 cpsys ${src} ${mntpt}
307 # need to make a couple of tweaks
308 cat >> ${mntpt}/boot/loader.conf <<EOF
312 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
313 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
315 zfs umount -f ${pool}/ROOT/default
316 zfs set mountpoint=none ${pool}/ROOT/default
317 zpool set bootfs=${pool}/ROOT/default ${pool}
318 zpool set autoexpand=on ${pool}
320 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
324 mk_nogeli_mbr_zfs_both() {
332 pool=nogeli-mbr-zfs-both
334 dd if=/dev/zero of=${img} count=1 seek=$((200 * 1024 * 1024 / 512))
335 md=$(mdconfig -f ${img})
336 gpart create -s mbr ${md}
337 gpart add -t efi -s ${espsize}k ${md}
338 gpart add -t freebsd ${md}
339 gpart set -a active -i 2 ${md}
340 gpart create -s bsd ${md}s2
341 gpart add -t freebsd-zfs ${md}s2
342 # install-boot will make this bootable
343 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}s2a
344 zpool set bootfs=${pool} ${pool}
345 zfs create -po mountpoint=/ ${pool}/ROOT/default
346 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
347 cpsys ${src} ${mntpt}
348 # need to make a couple of tweaks
349 cat >> ${mntpt}/boot/loader.conf <<EOF
353 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
354 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
356 zfs umount -f ${pool}/ROOT/default
357 zfs set mountpoint=none ${pool}/ROOT/default
358 zpool set bootfs=${pool}/ROOT/default ${pool}
359 zpool set autoexpand=on ${pool}
361 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
365 mk_geli_gpt_ufs_legacy() {
374 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
375 md=$(mdconfig -f ${img})
376 gpart create -s gpt ${md}
377 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
378 gpart add -t freebsd-ufs -l root $md
379 # install-boot will make this bootable
380 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
381 echo ${passphrase} | geli attach -j - ${md}p2
382 newfs /dev/${md}p2.eli
383 mount /dev/${md}p2.eli ${mntpt}
384 cpsys ${src} ${mntpt}
385 # need to make a couple of tweaks
386 cat > ${mntpt}/boot/loader.conf <<EOF
389 cat > ${mntpt}/etc/fstab <<EOF
390 /dev/ada0p2.eli / ufs rw 1 1
393 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
397 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
401 mk_geli_gpt_ufs_uefi() {
410 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
411 md=$(mdconfig -f ${img})
412 gpart create -s gpt ${md}
413 gpart add -t efi -s ${espsize}k -a 4k ${md}
414 gpart add -t freebsd-ufs -l root $md
415 # install-boot will make this bootable
416 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
417 echo ${passphrase} | geli attach -j - ${md}p2
418 newfs /dev/${md}p2.eli
419 mount /dev/${md}p2.eli ${mntpt}
420 cpsys ${src} ${mntpt}
421 # need to make a couple of tweaks
422 cat > ${mntpt}/boot/loader.conf <<EOF
425 cat > ${mntpt}/etc/fstab <<EOF
426 /dev/ada0p2.eli / ufs rw 1 1
429 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
433 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
437 mk_geli_gpt_ufs_both() {
446 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
447 md=$(mdconfig -f ${img})
448 gpart create -s gpt ${md}
449 gpart add -t efi -s ${espsize}k -a 4k ${md}
450 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
451 gpart add -t freebsd-ufs -l root $md
452 # install-boot will make this bootable
453 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3
454 echo ${passphrase} | geli attach -j - ${md}p3
455 newfs /dev/${md}p3.eli
456 mount /dev/${md}p3.eli ${mntpt}
457 cpsys ${src} ${mntpt}
458 # need to make a couple of tweaks
459 cat > ${mntpt}/boot/loader.conf <<EOF
462 cat > ${mntpt}/etc/fstab <<EOF
463 /dev/ada0p3.eli / ufs rw 1 1
466 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
470 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
474 mk_geli_gpt_zfs_legacy() {
482 pool=geli-gpt-zfs-legacy
484 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
485 md=$(mdconfig -f ${img})
486 gpart create -s gpt ${md}
487 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
488 gpart add -t freebsd-zfs -l root $md
489 # install-boot will make this bootable
490 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
491 echo ${passphrase} | geli attach -j - ${md}p2
492 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli
493 zpool set bootfs=${pool} ${pool}
494 zfs create -po mountpoint=/ ${pool}/ROOT/default
495 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
496 cpsys ${src} ${mntpt}
497 # need to make a couple of tweaks
498 cat >> ${mntpt}/boot/loader.conf <<EOF
503 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
504 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
505 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
507 zfs umount -f ${pool}/ROOT/default
508 zfs set mountpoint=none ${pool}/ROOT/default
509 zpool set bootfs=${pool}/ROOT/default ${pool}
510 zpool set autoexpand=on ${pool}
513 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
517 mk_geli_gpt_zfs_uefi() {
525 pool=geli-gpt-zfs-uefi
527 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
528 md=$(mdconfig -f ${img})
529 gpart create -s gpt ${md}
530 gpart add -t efi -s ${espsize}k -a 4k ${md}
531 gpart add -t freebsd-zfs -l root $md
532 # install-boot will make this bootable
533 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p2
534 echo ${passphrase} | geli attach -j - ${md}p2
535 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p2.eli
536 zpool set bootfs=${pool} ${pool}
537 zfs create -po mountpoint=/ ${pool}/ROOT/default
538 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
539 cpsys ${src} ${mntpt}
540 # need to make a couple of tweaks
541 cat >> ${mntpt}/boot/loader.conf <<EOF
546 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
547 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
548 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
550 zfs umount -f ${pool}/ROOT/default
551 zfs set mountpoint=none ${pool}/ROOT/default
552 zpool set bootfs=${pool}/ROOT/default ${pool}
553 zpool set autoexpand=on ${pool}
556 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
560 mk_geli_gpt_zfs_both() {
568 pool=geli-gpt-zfs-both
570 dd if=/dev/zero of=${img} count=1 seek=$(( 200 * 1024 * 1024 / 512 ))
571 md=$(mdconfig -f ${img})
572 gpart create -s gpt ${md}
573 gpart add -t efi -s ${espsize}k -a 4k ${md}
574 gpart add -t freebsd-boot -s 400k -a 4k ${md} # <= ~540k
575 gpart add -t freebsd-zfs -l root $md
576 # install-boot will make this bootable
577 echo ${passphrase} | geli init -bg -e AES-XTS -i ${iterations} -J - -l 256 -s 4096 ${md}p3
578 echo ${passphrase} | geli attach -j - ${md}p3
579 zpool create -O mountpoint=none -R ${mntpt} ${pool} ${md}p3.eli
580 zpool set bootfs=${pool} ${pool}
581 zfs create -po mountpoint=/ ${pool}/ROOT/default
582 # NB: The online guides go nuts customizing /var and other mountpoints here, no need
583 cpsys ${src} ${mntpt}
584 # need to make a couple of tweaks
585 cat > ${mntpt}/boot/loader.conf <<EOF
590 cp /boot/kernel/zfs.ko ${mntpt}/boot/kernel/zfs.ko
591 cp /boot/kernel/opensolaris.ko ${mntpt}/boot/kernel/opensolaris.ko
592 cp /boot/kernel/geom_eli.ko ${mntpt}/boot/kernel/geom_eli.ko
594 zfs umount -f ${pool}/ROOT/default
595 zfs set mountpoint=none ${pool}/ROOT/default
596 zpool set bootfs=${pool}/ROOT/default ${pool}
597 zpool set autoexpand=on ${pool}
600 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
604 # GELI+MBR is not a valid configuration
605 mk_geli_mbr_ufs_legacy() {
608 mk_geli_mbr_ufs_uefi() {
611 mk_geli_mbr_ufs_both() {
614 mk_geli_mbr_zfs_legacy() {
617 mk_geli_mbr_zfs_uefi() {
620 mk_geli_mbr_zfs_both() {
628 mk_sparc64_nogeli_vtoc8_ufs_ofw() {
637 cat > ${src}/etc/fstab <<EOF
638 /dev/ada0a / ufs rw 1 1
640 makefs -t ffs -B big -s 200m ${img} ${src}
641 md=$(mdconfig -f ${img})
642 # For non-native builds, ensure that geom_part(4) supports VTOC8.
643 kldload geom_part_vtoc8.ko
644 gpart create -s VTOC8 ${md}
645 gpart add -t freebsd-ufs ${md}
646 ${SRCTOP}/tools/boot/install-boot.sh -g ${geli} -s ${scheme} -f ${fs} -b ${bios} -d ${src} ${md}
648 rm -f ${src}/etc/fstab
651 qser="-serial telnet::4444,server -nographic"
653 # https://wiki.freebsd.org/QemuRecipes
660 echo "qemu-system-aarch64 -m 4096M -cpu cortex-a57 -M virt \
661 -bios QEMU_EFI.fd ${qser} \
662 -drive if=none,file=${img},id=hd0 \
663 -device virtio-blk-device,drive=hd0" > $sh
665 # https://wiki.freebsd.org/arm64/QEMU also has
666 # -device virtio-net-device,netdev=net0
667 # -netdev user,id=net0
676 echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh
685 echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" > $sh
694 echo "qemu-system-x86_64 -m 256m --drive file=${img},format=raw ${qser}" > $sh
695 echo "qemu-system-x86_64 -m 256m -bios ~/bios/OVMF-X64.fd --drive file=${img},format=raw ${qser}" >> $sh
708 echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh
718 echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" > $sh
722 # Needs UEFI to be supported
728 echo "qemu-system-i386 --drive file=${img},format=raw ${qser}" > $sh
729 echo "qemu-system-i386 -bios ~/bios/OVMF-X32.fd --drive file=${img},format=raw ${qser}" >> $sh
741 # Create sparse file and mount newly created filesystem(s) on it
742 img=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.img
743 sh=${IMGDIR}/${arch}-${geli}-${scheme}-${fs}-${bios}.sh
744 echo "vvvvvvvvvvvvvv Creating $img vvvvvvvvvvvvvvv"
746 eval mk_${geli}_${scheme}_${fs}_${bios} ${DESTDIR} ${img} ${MNTPT} ${geli} ${scheme} ${fs} ${bios}
747 eval qemu_${arch}_${bios} ${img} ${sh}
748 [ -n "${SUDO_USER}" ] && chown ${SUDO_USER} ${img}*
749 echo "^^^^^^^^^^^^^^ Created $img ^^^^^^^^^^^^^^^"
753 # qemu-system-mips -kernel /path/to/rootfs/boot/kernel/kernel -nographic -hda /path/to/disk.img -m 2048
755 # Powerpc -- doesn't work but maybe it would enough for testing -- needs details
757 # qemu-system-ppc64 -drive file=/path/to/disk.img,format=raw
760 # qemu-system-sparc64 -drive file=/path/to/disk.img,format=raw
763 SRCTOP=$(make -v SRCTOP)
765 OBJDIR=$(make -v .OBJDIR)
766 IMGDIR=${OBJDIR}/boot-images
768 MNTPT=$(mktemp -d /tmp/stand-test.XXXXXX)
770 # Setup the installed tree...
771 DESTDIR=${OBJDIR}/boot-tree
773 mkdir -p ${DESTDIR}/boot/defaults
774 mkdir -p ${DESTDIR}/boot/kernel
775 cp /boot/kernel/kernel ${DESTDIR}/boot/kernel
776 echo -h -D -S115200 > ${DESTDIR}/boot.config
777 cat > ${DESTDIR}/boot/loader.conf <<EOF
779 comconsole_speed=115200
784 cp /boot/device.hints ${DESTDIR}/boot/device.hints
785 # Assume we're already built
786 make install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_AS_USER=yes
787 # Copy init, /bin/sh, minimal libraries and testing /etc/rc
788 mkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \
789 ${DESTDIR}/lib ${DESTDIR}/libexec \
790 ${DESTDIR}/etc ${DESTDIR}/dev
791 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
794 cat > ${DESTDIR}/etc/rc <<EOF
797 sysctl machdep.bootmethod
798 echo "RC COMMAND RUNNING -- SUCCESS!!!!!"
802 # If we were given exactly 5 args, go make that one image.
804 if [ $# -eq 5 ]; then
809 # OK. Let the games begin
811 for arch in amd64; do
812 for geli in nogeli geli; do
813 for scheme in gpt mbr; do
814 for fs in ufs zfs; do
815 for bios in legacy uefi both; do
816 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
827 # Notes for the future
830 for geli in nogeli geli; do
831 for scheme in gpt mbr; do
832 for fs in ufs zfs; do
833 for bios in legacy; do
834 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
841 for arch in arm aarch64; do
842 for scheme in gpt mbr; do
844 for bios in uboot efi; do
845 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
850 for arch in powerpc powerpc64; do
851 for scheme in ppc-wtf; do
853 for bios in ofw uboot chrp; do
854 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}
859 for arch in sparc64; do
860 for geli in nogeli; do
861 for scheme in vtoc8; do
864 make_one_image ${arch} ${geli} ${scheme} ${fs} ${bios}