Tips_and_Hacks/Creating a LiveCD from an e...

112 lines
3.2 KiB
Markdown

# Creating a LiveCD from an existing ISO #
_These instructions are condensed and simplified from the guide at https://help.ubuntu.com/community/LiveCDCustomization. Other information, like regional defaults, or changing the kernel used, can be found in that more complete guide._
1. Make sure you have squashfs-tools and genisoimage
`sudo apt install squashfs-tools genisoimage`
2. Extract the iso contents into a folder
```
mkdir mnt
sudo mount -o loop _iso filename_ mnt
mkdir extract-cd
sudo rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
```
3. Extract the Desktop system
```
sudo unsquashfs mnt/casper/filesystem.squashfs
sudo mv squashfs-root edit
```
4. Mount the necessary volumes
```
sudo mount --bind /dev/ edit/dev
sudo chroot edit
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
```
To have network resolution in the chroot use:
```
sudo mount -o bind /run/ edit/run
```
5. (Optional) If you want to remove some of the installed software, to shrink the volume:
```
dpkg-query -W --showformat='${Installed-Size}\t${Package}\n' | sort -nr | less
```
This will give you a list of installed apps sorted by size. Remember to `purge` any apps you remove. Alternatively, you can `rm-rf /tmp/* ~/.bash_history`.
6. ####Make all of the changes to the installed software and configuration here.
6. Unmount the volumes from within the chroot
```
umount /proc || umount -lf /proc
umount /sys
umount /dev/pts
```
Note that if `umount /proc` fails it will cascade to the bruteforce `umount -lf /proc`
7. Exit the chroot
```
exit
sudo umount edit/dev
```
If you added the network layer:
```
sudo umount edit/run
```
8. Assemble the file system
9. Regenerate the manifest
```
chmod +w extract-cd/casper/filesystem.manifest
sudo su
chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
exit
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop
```
2. Compress the file system
```
sudo rm extract-cd/casper/filesystem.squashfs
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs
```
Alternately, for higher compression, try:
```
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -b 1048576
```
And for the highest possible compression:
```
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -comp xz -e edit/boot
```
3. Update the filesystem.size file, which is needed by the installer.
```
sudo su
printf $(du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size
exit
```
2. Set an image name in extract-cd/README.diskdefines
```
sudo nano extract-cd/README.diskdefines
```
1. Create the new md5sum.txt
```
cd extract-cd
sudo rm md5sum.txt
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt
```
2. Creat the new ISO image
```
sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../_new_iso_disk_image_name.iso .
```