112 lines
3.2 KiB
Markdown
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 .
|
|
``` |