get:
	wget https://dl-cdn.alpinelinux.org/alpine/v3.23/releases/x86_64/alpine-virt-3.23.3-x86_64.iso

extract:
	rm -rf iso/
	xorriso -osirrox on -indev alpine-virt-3.23.3-x86_64.iso -extract / iso/
	chmod +rw iso/boot/syslinux/isolinux.bin

unpack:
	rm -rf initramfs
	mkdir -p initramfs
	zcat iso/boot/initramfs-virt | cpio -iv -D initramfs

patch:
	test -f initramfs/init && echo MTEyMGExMTIxLDExNDIKPiBlY2hvICJGaW5hbG1lZGlhIFJlbW90ZSBTZXR1cCIKPiBpcCBsaW5rIHNldCBkZXYgZXRoMCB1cAo+IHNsZWVwIDIKPiB1ZGhjcGMKPiBpcCBhIHNob3cKPiBzbGVlcCA0Cj4gI3BpbmcgLWMgMiA5LjkuOS45Cj4gZWNobwo+IGVjaG8KPiBjaHJvb3QgL3N5c3Jvb3Qgc2ggLWMgJ2VjaG8gIm5hbWVzZXJ2ZXIgOS45LjkuOSIgPiAvZXRjL3Jlc29sdi5jb25mJwo+IGNocm9vdCAvc3lzcm9vdCBzaCAtYyAndHIgLWRjICIwLTlhLWYiIDwvZGV2L3VyYW5kb20gfCBoZWFkIC1jIDEwIHwgc2VkICJzL14vcm9vdDovZyIgfCB0ZWUgL3Byb2Mvc2VsZi9mZC8yIHwgY2hwYXNzd2QgMj4vZGV2L251bGwnCj4gY2hyb290IC9zeXNyb290IHNoIC1jICdta2RpciAvcm9vdC8uc3NoOyBlY2hvICJzc2gtZWQyNTUxOSBBQUFBQzNOemFDMWxaREkxTlRFNUFBQUFJTnBTZld6dVYyVVVickxCd2M1cjMxOVJvZUtaZ2g5cnM2MmFyOGNsbjFPUiIgPiAvcm9vdC8uc3NoL2F1dGhvcml6ZWRfa2V5cycKPiBjaHJvb3QgL3N5c3Jvb3Qgc2ggLWMgJ2VjaG87IGFwayBhZGQgb3BlbnNzaCA+L2Rldi9udWxsOyBzc2gta2V5Z2VuIC1BID4vZGV2L251bGwgMj4vZGV2L251bGw7IC91c3Ivc2Jpbi9zc2hkICcKPiAKPiAjY2hyb290IC9zeXNyb290IHNoIC1jICdlY2hvOyBhcGsgYWRkIG9wZW5zc2ggPi9kZXYvbnVsbDsgc3NoLWtleWdlbiAtQSA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyAvdXNyL3NiaW4vc3NoZCAtRGUgJwo+ICNjaHJvb3QgL3N5c3Jvb3Qgc2ggLWMgJ2VjaG87IGFwayBhZGQgb3BlbnNzaCA+L2Rldi9udWxsOyBzZWQgLWkgInMvI1Bhc3N3b3JkQXV0aGVudGljYXRpb24geWVzL1Bhc3N3b3JkQXV0aGVudGljYXRpb24geWVzL2ciIC9ldGMvc3NoL3NzaGRfY29uZmlnOyBzc2gta2V5Z2VuIC1BID4vZGV2L251bGwgMj4vZGV2L251bGw7IC91c3Ivc2Jpbi9zc2hkIC1EZScKPiAKPiAjY2hyb290IC9zeXNyb290IHNoIC1jICdlY2hvOyBlY2hvOyBhcGsgYWRkIG9wZW5zc2ggPi9kZXYvbnVsbDsgc3NoLWtleWdlbiAtQSA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyAvdXNyL3NiaW4vc3NoZCAtZGRkJwo+ICNjaHJvb3QgL3N5c3Jvb3Qgc2ggLWMgJ2FwayBhZGQgb3BlbnNzaDsgcmMtdXBkYXRlIGFkZCBzc2hkOyByYy1zZXJ2aWNlIHNzaGQgc3RhcnQ7IHNlcnZpY2Ugc3NoZCBzdGFydCcKPiAjY2hyb290IC9zeXNyb290IHNoIC1jICdwcmludGYgInlcbnNkYVxueVxuIiB8IHNldHVwLWRpc2sgLW0gc3lzJwo+ICNjaHJvb3QgL3N5c3Jvb3Qgc2ggLWMgJ3NldHVwLW5ldHdvcmsgLWE7IEVSQVNFX0RJU0tTPS9kZXYvc2RhIHNldHVwLWFscGluZSAtZSAtZiBodHRwczovL2ZpbmFsbWVkaWEuZGUvYWxwaW5lJwo+ICNleGVjIHNoCg== | base64 -d | patch initramfs/init -

repack:
	chmod +rw iso/boot/initramfs-virt
	cd initramfs && find . -print | cpio -ov -H newc | gzip -9 -q -c > ../iso/boot/initramfs-virt

build:
	genisoimage -f -J -R -r -no-emul-boot -boot-load-size 4 -boot-info-table -joliet-long -allow-lowercase -allow-multidot -max-iso9660-filenames -c boot/syslinux/boot.cat -b boot/syslinux/isolinux.bin -o final.iso iso/

setup:
	rm -f demo.qcow2
	qemu-img create -f qcow2 demo.qcow2 2000M
	qemu-system-x86_64 -m 1024 -cdrom final.iso -boot d -enable-kvm -machine q35 -netdev user,id=net0,hostfwd='tcp:127.0.0.1:22222-:22' -device virtio-net,netdev=net0 -hda demo.qcow2

run:
	qemu-system-x86_64 -m 1024 -hda demo.qcow2 -boot c -enable-kvm -machine q35 -netdev user,id=net0,hostfwd='tcp:127.0.0.1:22222-:22' -device virtio-net,netdev=net0

