Finalizadas as devidas personalizações no sistema, é hora de desmontar tudo e botar de volta na caixa, no nosso caso, na ISO.
Saia do chroot e desmonte tudo:
# umount -R dev
# umount -R sys
# umount -R proc
Antes de fazer um squashfs do nosso novo live é interessante remover alguns arquivos:
# rm -rf /usr/portage/*
# rm -rf /var/tmp/portage/
Para fazer nosso squashfs devemos saber o tipo de compressão utilizado no original para evitar problemas no boot, você pode obter essa informação assim:
unsquashfs -s /mnt/cdrom/image.squashfs
Agora sim, proceda com a criação do squashfs:
# mksquashfs squashfs-root image.squashfs.new -comp xz
O processo deve rodar como root pois há arquivos no live que pertencem ao mesmo e se rodarmos como usuário comum eles serão ignorados, nos levando há um sistema quebrado.
Fato curioso, nossa squashfs descompactada terminou com um tamanho total de 10 GB:
du -sch squashfs-root
10G squashfs-root
10G total
Enquanto que a squashfs...
ls -lah image.squashfs.new
-rw-r--r-- 1 root root 1,9G mai 5 05:00 image.squashfs.new
Incrível o nível de compressão que se consegue com isso.
Agora continuando, crie uma pasta (se já não criou) para ser a base da ISO do seu novo live, copie todo o conteúdo de /mnt/cdrom e cuidado pois ele possui um image.squashfs (motivo pelo qual nomeamos a nossa com a extensão .new), se livre da mesma e deixe a sua no lugar.
# cp -r /mnt/cdrom/* .
# rm image.squashfs
# mv image.squashfs.new image.squashfs
Para a criação da ISO estarei usando o mkisofs que é parte do pacote cdrtools.
Você deve estar em uma pasta contendo todo o necessário (o novo image.squashfs e os conteúdos originais da ISO). Para que a criação da ISO ocorra sem problemas as informações como o label devem ser mantidas como no original, você pode usar o blkid para isso:
# blkid Downloads/livedvd-amd64-multilib-20160704.iso
Downloads/livedvd-amd64-multilib-20160704.iso: UUID="2016-07-04-02-56-54-00" LABEL="Gentoo-amd64" TYPE="iso9660" PTUUID="13d41d02" PTTYPE="dos"
Adicionalmente, para que possamos usar essa ISO em um pen drive ou HD deveremos utilizar o isohybryd, parte do pacote syslinux. O truque aqui é que a versão do arquivo isolinux.bin da ISO deve ser a mesma da versão instalada no seu sistema, para que não haja complicações iremos simplesmente copiar o da nossa instalação para a ISO:
# cp /usr/share/syslinux/isolinux.bin /home/pylm/Downloads/gentooDVD/
Agora crie a ISO utilizando a label descoberta com o blkid:
# mkisofs -l -r -J -V "Gentoo-amd64" -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o /home/pylm/gentoo-dvd.iso .
Para finalizar a preparação da ISO para boot em pen drive ou HD:
# isohybrid gentoo-dvd.iso
Se estiver utilizando um computador com UEFI adicione também o parâmetro -u ao comando acima.
Finalizando
Agora você já tem um sistema personalizado para usar como bem entender, entretanto deixo aqui um "bônus" que está descrito no título desse artigo, a possibilidade de iniciar essa ISO customizada diretamente do grub sem a necessidade de um DVD ou pen drive. A utilidade? Suponha que você fez algo muito muito errado no seu sistema e agora ele não boota mais, você não tem um pen drive com um live no mesmo e a última vez que usou um DVD foi a 5 anos atrás, seu leitor sequer funciona mais, e é aí que entra essa dica.
O processo é mais simples do que parece, basta mover a sua ISO para a raiz e adicionar a seguinte entrada no seu
/boot/grub/grub.cfg:
menuentry "Gentoo Live" {
set iso=/.gentoo-dvd.iso
loopback loop ${iso}
linux (loop)/isolinux/gentoo isoloop=${iso}
initrd (loop)/isolinux/gentoo.xz
}
Note o . na frente do nome, deixei a ISO oculta na raiz por questões de organização.
Entretanto essa entrada é temporária e não "sobreviveria" a uma atualização automatizada na configuração do grub, motivo pelo qual a adicionaremos no arquivo /etc/grub.d/40_custom que existe para esse propósito.