100 lines
3.7 KiB
Bash
Executable File
100 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
set -eE
|
|
|
|
function clean() {
|
|
echo "==== CLEAN ===="
|
|
sudo umount "$WORKDIR/squashfs" || :
|
|
sudo umount /tmp/livecd || :
|
|
}
|
|
|
|
trap clean ERR
|
|
|
|
SPATH=$(cd $(dirname $0) && pwd)
|
|
if [ -z $1 ]; then
|
|
echo "Usage: prepare.sh <iso_path>"
|
|
exit 1
|
|
fi
|
|
full_iso=$1
|
|
iso_wo_ext=${full_iso##*/}
|
|
iso_wo_ext=${iso_wo_ext%.iso}
|
|
|
|
WORKDIR="$SPATH/$iso_wo_ext"
|
|
|
|
echo "==== Prepare CD ===="
|
|
mkdir /tmp/livecd || :
|
|
fuseiso "$1" /tmp/livecd
|
|
|
|
mkdir -p "$WORKDIR"
|
|
# rsync --exclude=/casper/filesystem.squashfs -a /tmp/livecd/ "$WORKDIR/cd"
|
|
mkdir "$WORKDIR/squashfs"
|
|
squashfuse /tmp/livecd/casper/filesystem.squashfs "$WORKDIR/squashfs/"
|
|
|
|
echo "==== Copy squashfs contents to $WORKDIR/squashfs/squashfs-root ===="
|
|
nprocs=$(($(nproc)-1)) # leave 1 proc for use
|
|
unsquashfs -p$nprocs -no-xattrs /tmp/livecd/casper/filesystem.squashfs
|
|
|
|
# network access
|
|
cp /etc/resolv.conf /etc/hosts "$WORKDIR/squashfs/squashfs-root/etc/"
|
|
|
|
# mount proc, sys, opens a shell (for changes), and clean everything after
|
|
echo "==== CHROOT ===="
|
|
cat "$SPATH/tasks.sh" | chroot "$WORKDIR/squashfs/squashfs-root" /bin/bash
|
|
|
|
echo "==== Copy custom background ===="
|
|
sudo cp background/sele_ring_lis67.jpg "$WORKDIR/squashfs/squashfs-root/usr/share/backgrounds/linuxmint/sele_ring_lis67.jpg"
|
|
|
|
echo "==== Copy Firefox settings ===="
|
|
sudo cp "$SPATH/firefox/distribution.ini" "$WORKDIR/squashfs/squashfs-root/usr/lib/firefox/distribution/distribution.ini"
|
|
sudo cp "$SPATH/firefox/distribution.ini" "$WORKDIR/squashfs/squashfs-root/usr/share/ubuntu-system-adjustments/firefox/distribution.ini"
|
|
|
|
sudo cp "$SPATH/firefox/vendor-firefox.js" "$WORKDIR/squashfs/squashfs-root/usr/lib/firefox/browser/defaults/preferences/vendor-firefox.js"
|
|
sudo cp "$SPATH/firefox/vendor-firefox.js" "$WORKDIR/squashfs/squashfs-root/usr/share/ubuntu-system-adjustments/firefox/firefox.js"
|
|
|
|
echo "==== Disable Yahoo, enable Startpage on Firefox ===="
|
|
cd "$SPATH/firefox"
|
|
sudo zip "$WORKDIR/squashfs/squashfs-root/usr/lib/firefox/browser/omni.ja" defaults/settings/main/search-config.json
|
|
cd -
|
|
|
|
echo "==== Install extensions ===="
|
|
sudo cp "$SPATH/firefox/extensions/"* "$WORKDIR/squashfs/squashfs-root/usr/lib/firefox/distribution/extensions/"
|
|
|
|
echo "==== Mod ISOLINUX (BIOS) AND GRUB (EFI) ===="
|
|
if [[ -d isolinux ]]; then
|
|
# isolinux
|
|
chmod -R +w "$WORKDIR/cd/isolinux"
|
|
cp isolinux/* "$WORKDIR/cd/isolinux/"
|
|
fi
|
|
if [[ -d grub ]]; then
|
|
# grub
|
|
chmod -R +w "$WORKDIR/cd/boot/grub"
|
|
cp grub/* "$WORKDIR/cd/boot/grub/"
|
|
fi
|
|
|
|
# setup iso
|
|
echo "==== Setup ISO ===="
|
|
chmod +w "$WORKDIR/cd/casper/filesystem.manifest"
|
|
sudo chroot "$WORKDIR/squashfs/squashfs-root" dpkg-query -W --showformat='${Package} ${Version}\n' > "$WORKDIR/cd/casper/filesystem.manifest"
|
|
sudo cp "$WORKDIR/cd/casper/filesystem.manifest" "$WORKDIR/cd/casper/filesystem.manifest-desktop"
|
|
sudo mksquashfs "$WORKDIR/squashfs/squashfs-root" "$WORKDIR/cd/casper/filesystem.squashfs"
|
|
sudo rm "$WORKDIR/cd/MD5SUMS"
|
|
sudo chmod +w "$WORKDIR/cd"
|
|
sudo bash -c 'cd '"$WORKDIR"'/cd && find . -type f -exec md5sum {} +' > "$WORKDIR"/cd/MD5SUMS
|
|
|
|
# create iso
|
|
echo "==== Create ISO ===="
|
|
cd "$WORKDIR/cd"
|
|
# create a DVD-burnable ISO with BIOS (isolinux) and EFI (grub) support
|
|
sudo mkisofs -U -A "$iso_wo_ext-LIS67" -V "$iso_wo_ext-LIS67" -volset "$iso_wo_ext-LIS67" -J -joliet-long -r -v -T -o "$WORKDIR/$iso_wo_ext-lis67.iso" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot .
|
|
|
|
# convert iso to a bootable USB drive iso
|
|
sudo isohybrid --uefi "$WORKDIR/$iso_wo_ext-lis67.iso"
|
|
|
|
# umount & clean
|
|
echo "==== Clean ===="
|
|
sudo umount "$WORKDIR/squashfs"
|
|
sudo umount /tmp/livecd
|
|
sudo chown -R $USER: "$WORKDIR"
|
|
|
|
echo "Final ISO: $WORKDIR/$iso_wo_ext-lis67.iso"
|
|
echo "Done"
|