Minha resposta comercial para essa pergunta é neste artigo no blog da Turnkeylinux. É uma distro derivada do Ubuntu e eles têm um conjunto de scripts físicos para viver em seu repositório que funciona muito bem. Bônus, você pode instalar seus scripts na linha principal do Ubuntu.
Há também remastersys e alguns outros, mas achei os scripts prontos para uso realmente simples para as minhas necessidades.
O artigo:
Convertendo uma imagem de disco virtual: VDI ou VMDK para um ISO, você pode distribuir
Por Alon Swartz - 58 comentários | Últimas por unidade
Por que alguém em sã consciência deseja converter uma VM em uma ISO?
Boa pergunta, a resposta para Conor Fox (que foi a inspiração para este post - obrigado Conor!) foi distribuir sua imagem personalizada do TurnKey PostgreSQL para que outros pudessem usá-la.
A distribuição de um ISO em oposição a uma imagem de VM permite que ele seja instalado em qualquer plataforma de virtualização, bem como em bare-metal, com a vantagem adicional de ser executado em tempo real.
Suponho que isso seja uma boa razão, então vamos ao assunto.
Converta o disco da VM em imagem bruta e monte-o
Primeiramente, precisamos obter o qemu-img, uma ferramenta empacotada com o qemu (back-end de virtualização do KVM) para converter o disco da VM em uma imagem bruta e o TKLPatch, o mecanismo de personalização do TurnKey para empacotar a ISO.
Se você não estiver usando uma instalação do TurnKey, consulte as notas de instalação do TKLPatch .
apt-get install qemu
apt-get install tklpatch
Mostrarei como converter uma imagem VMWare VMDK em formato de disco bruto. Se você estiver usando uma plataforma de virtualização diferente, como o Virtualbox, veja este post ao converter um VDI em um arquivo raw imagem.
qemu-img convert -f vmdk turnkey-core.vmdk -O raw turnkey-core.raw
Em seguida, monte o disco bruto como um dispositivo de loopback.
mkdir turnkey-core.mount monte -o laço turnkey-core.raw turnkey-core.mount
GOTCHA 1 : Se sua VM tiver partições, é um pouco complicado. Você precisará configurar o dispositivo de loop, mapear partições e, finalmente, montar a partição rootfs. Você precisará do kpartx para configurar os mapeamentos.
loopdev=$(losetup -s -f turnkey-core.raw) apt-get install kpartx kpartx -a $loopdev # p1 refers to the first partition (rootfs) mkdir turnkey-core.mount mount /dev/mapper/$(basename $loopdev)p1 turnkey-core.mount
Extrair o sistema de arquivos raiz e ajustar a configuração ISO
Agora, faça uma cópia do sistema de arquivos raiz e desmonte o loopback.
mkdir turnkey-core.rootfs rsync -a -t -r -S -I turnkey-core.mount/ turnkey-core.rootfs umount -d turnkey-core.mount
Se sua VM tiver partições (GOTCHA 1):
kpartx -d $ loopdev losetup -d $ loopdev
Como a VM é um sistema instalado, ao contrário do ISO, a tabela do sistema de arquivos precisa ser atualizada.
cat>turnkey-core.rootfs/etc/fstab<<EOF aufs / aufs rw 0 0 tmpfs /tmp tmpfs nosuid,nodev 0 0 EOF
GOTCHA 2 : Se sua VM usa um kernel otimizado para virtualização (como o incluído nas compilações de TurnKey VM), você precisa substituí-lo por um kernel genérico e também remover as ferramentas vmware se instalado.
tklpatch-chroot turnkey-core.rootfs # inside the chroot apt-get update apt-get install linux-image-generic dpkg --purge $(dpkg-query --showformat='${Package}\n' -W 'vmware-tools*') dpkg --purge $(dpkg-query --showformat='${Package}\n' -W '*-virtual') exit
Gerar o ISO
Finalmente, prepare o cdroot e gere o ISO.
tklpatch-prepare-cdroot turnkey-core.rootfs/ tklpatch-geniso turnkey-core.cdroot/
É isso!
Bônus: Por padrão, o ISO será inicializado automaticamente. Se você quiser incluir o bootsplash e o bootmenu do TurnKey, extraia o cdroot de um ISO do TurnKey e diga ao tklpatch-prepare-cdroot para usá-lo como um modelo.
tklpatch-extractiso turnkey-core.iso tklpatch-prepare-cdroot turnkey-core.rootfs/ turnkey-core.cdroot/ tklpatch-geniso turnkey-core.cdroot/