xref: /freebsd/release/Makefile.firecracker (revision ac4f03e03e6d94ac46fed7c4f7801b522d290423)
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