Eu tive uma pergunta semelhante. Eu encontrei este tópico de discussão sobre o uso do Packer com inicialização PXE.
Do tópico, Vasiliy Tolstov comentou:
[É] muito simples: instale todas as coisas necessárias dentro de uma VM (para o live-boot do Debian, para o fedora / centos Dracut com a capacidade de inicializar a partir da rede). depois de [construir] que [com] packer, execute o seguinte script (exemplo para o Debian):
#!/bin/sh -ex
apt-get -y install squashfs-tools
mkdir -p /mnt/squashfs /squashfs
mount -o bind / /mnt/squashfs
mksquashfs /mnt/squashfs /squashfs/filesystem.squashfs -comp gzip -no-exports -xattrs -noappend -no-recovery -e
/mnt/squashfs/squashfs/filesystem.squashfs
find /boot -name 'vmlinuz-*' -type f -exec cp {} /squashfs/vmlinuz \;
find /boot -name 'init*' -type f -exec cp {} /squashfs/initrd.img \;
e em artefatos de download do empacotador de vm:
{
"type": "file",
"direction": "download",
"sources": [
"/squashfs/vmlinuz"
],
"destination": "output/{{user 'name'}}-squashfs/{{user 'name'}}.vmlinuz"
},
{
"type": "file",
"direction": "download",
"sources": [
"/squashfs/initrd.img"
],
"destination": "output/{{user 'name'}}-squashfs/{{user 'name'}}.initrd"
},
{
"type": "file",
"direction": "download",
"sources": [
"/squashfs/filesystem.squashfs"
],
"destination": "output/{{user 'name'}}-squashfs/{{user 'name'}}.squashfs"
}