17acb5381SColin Percival# 27acb5381SColin Percival# Makefile for creating FreeBSD/Firecracker artifacts 37acb5381SColin Percival# 47acb5381SColin Percival 57acb5381SColin PercivalCLEANDIRS+= ${TARGET}/firecracker-kern ${TARGET}/firecracker-world 67acb5381SColin Percival 77acb5381SColin Percival# Bits related to hardware which won't exist in a VM. 87acb5381SColin PercivalWITHOUT_VM_ENOENT=WITHOUT_APM=YES WITHOUT_BLUETOOTH=YES WITHOUT_CXGBETOOL=YES \ 97acb5381SColin Percival WITHOUT_FLOPPY=YES WITHOUT_GPIO=YES WITHOUT_MLX5TOOL=YES WITHOUT_USB=YES \ 107acb5381SColin Percival WITHOUT_USB_GADGET_EXAMPLES=YES WITHOUT_VT=YES WITHOUT_WIRELESS=YES 117acb5381SColin Percival# Bits related to software which doesn't exist in Firecracker specifically. 127acb5381SColin PercivalWITHOUT_FC_ENOENT=WITHOUT_ACPI=YES WITHOUT_BOOT=YES WITHOUT_BHYVE=YES \ 137acb5381SColin Percival WITHOUT_EFI=YES WITHOUT_FDT=YES WITHOUT_HYPERV=YES \ 147acb5381SColin Percival WITHOUT_LEGACY_CONSOLE=YES WITHOUT_SYSCONS=YES 157acb5381SColin Percival# Bits which take up a lot of space and probably won't be wanted inside a 167acb5381SColin Percival# Firecracker VM. 177acb5381SColin PercivalWITHOUT_FC_FEATURES=WITHOUT_DEBUG_FILES=YES WITHOUT_INCLUDES=YES \ 187acb5381SColin Percival WITHOUT_INSTALLLIB=YES WITHOUT_TESTS=YES WITHOUT_TOOLCHAIN=YES 197acb5381SColin Percival# All the excluded bits 20*ac4f03e0SColin PercivalWITHOUTS?=${WITHOUT_VM_ENOENT} ${WITHOUT_FC_ENOENT} ${WITHOUT_FC_FEATURES} 217acb5381SColin Percival 227acb5381SColin Percivalfirecracker: firecracker-freebsd-kern.bin firecracker-freebsd-rootfs.bin 237acb5381SColin Percival 247acb5381SColin PercivalFCKDIR= ${.OBJDIR}/${TARGET}/firecracker-kern 257acb5381SColin Percivalfirecracker-freebsd-kern.bin: 267acb5381SColin Percival.if !defined(DESTDIR) || !exists(${DESTDIR}) 277acb5381SColin Percival @echo "--------------------------------------------------------------" 287acb5381SColin Percival @echo ">>> DESTDIR must point to destination for Firecracker binaries" 297acb5381SColin Percival @echo "--------------------------------------------------------------" 307acb5381SColin Percival @false 317acb5381SColin Percival.endif 327acb5381SColin Percival mkdir -p ${FCKDIR} 337acb5381SColin Percival ${MAKE} -C ${WORLDDIR} DESTDIR=${FCKDIR} \ 347acb5381SColin Percival KERNCONF=FIRECRACKER TARGET=${TARGET} installkernel 357acb5381SColin Percival cp ${FCKDIR}/boot/kernel/kernel ${DESTDIR}/freebsd-kern.bin 367acb5381SColin Percival 377acb5381SColin PercivalFCWDIR= ${.OBJDIR}/${TARGET}/firecracker-world 38*ac4f03e0SColin PercivalFCROOTFSSZ?= 1g 397acb5381SColin Percivalfirecracker-freebsd-rootfs.bin: 407acb5381SColin Percival mkdir -p ${FCWDIR} 417acb5381SColin Percival ${MAKE} -C ${WORLDDIR} DESTDIR=${FCWDIR} \ 427acb5381SColin Percival ${WITHOUTS} TARGET=${TARGET} installworld distribution distrib-dirs 437acb5381SColin Percival echo '/dev/ufs/rootfs / ufs rw 1 1' > ${FCWDIR}/etc/fstab 447acb5381SColin Percival echo 'hostname="freebsd"' >> ${FCWDIR}/etc/rc.conf 457acb5381SColin Percival echo 'ifconfig_vtnet0="inet 10.0.0.2 netmask 255.255.0.0"' >> ${FCWDIR}/etc/rc.conf 467acb5381SColin Percival echo 'defaultrouter="10.0.0.1"' >> ${FCWDIR}/etc/rc.conf 477acb5381SColin Percival echo 'sshd_enable="YES"' >> ${FCWDIR}/etc/rc.conf 487acb5381SColin Percival echo 'sshd_rsa_enable="NO"' >> ${FCWDIR}/etc/rc.conf 497acb5381SColin Percival echo 'growfs_enable="YES"' >> ${FCWDIR}/etc/rc.conf 507acb5381SColin Percival echo 'nameserver 8.8.8.8' >> ${FCWDIR}/etc/resolv.conf 517acb5381SColin Percival sed -i '' -e '/periodic/s/^/#/' ${FCWDIR}/etc/crontab 527acb5381SColin Percival pw -R ${FCWDIR} groupadd freebsd -g 1001 537acb5381SColin Percival mkdir -p ${FCWDIR}/home/freebsd 547acb5381SColin Percival pw -R ${FCWDIR} useradd freebsd -m -M 0755 -w yes -n freebsd \ 557acb5381SColin Percival -u 1001 -g 1001 -G 0 -c "FreeBSD User" -d /home/freebsd -s /bin/sh 567acb5381SColin Percival pw -R ${FCWDIR} usermod root -w yes 577acb5381SColin Percival touch ${FCWDIR}/firstboot 58*ac4f03e0SColin Percival makefs -s ${FCROOTFSSZ} -o label=rootfs -o version=2 -o softupdates=1 \ 597acb5381SColin Percival ${DESTDIR}/freebsd-rootfs.bin ${FCWDIR} 60