#!/bin/bash # # depends: # - cdrtools (for mkisofs) # - syslinux (for isohybrid) # - p7zip (extracting the iso) # - cpio (for creating the cpio file) # - squashfs-tools (for extracting the tcz files) if [ "$ARCH" == "x86_64" ]; then export gz_file="corepure64" sed -i 's/vmlinuz/vmlinuz64/g' resources/isolinux.cfg sed -i 's/core.gz/corepure64.gz/g' resources/isolinux.cfg else export gz_file="core" fi # take use of timeout sudo true # extract our iso printf "extracting $origISO..." 7z x iso/$origISO -oisoext > /dev/null echo "done" # get extensions printf "downloading extensions..." cd resources sudo -E ./FetchExt.sh $extensions > /dev/null cd .. echo "done" # extract $gz_file.gz printf "extracting $gz_file.gz..." mv isoext/boot/$gz_file.gz . mkdir coreext cd coreext zcat ../$gz_file.gz | sudo cpio -i -H newc -d --quiet cd .. echo "done" # extract extensions printf "extracting extensions..." cd resources for tcztoext in *.tcz; do unsquashfs -q -n -f $tcztoext done echo "done" # inject extensions to core and inject a script to run at login printf "injecting extensions and login script..." sudo cp -r squashfs-root/* ../coreext/ cd ../coreext/ sudo cp ../resources/startup.sh etc/profile.d/startup.sh echo "done" # compile new core.gz printf "creating new $gz_file.gz..." sudo rm ../$gz_file.gz sudo find | sudo cpio -o -H newc --quiet | gzip -11 > ../$gz_file.gz cd ../isoext/ sudo mv ../$gz_file.gz boot/$gz_file.gz cd .. echo "done" # remove boot menu and force directly booting printf "removing boot menu..." rm isoext/boot/isolinux/boot.msg isoext/boot/isolinux/f2 isoext/boot/isolinux/f3 isoext/boot/isolinux/f4 cp resources/isolinux.cfg isoext/boot/isolinux/isolinux.cfg echo "done" # make our new iso printf "creating iso..." mkisofs -l -J -R -V shackle -quiet -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -o iso/shackle_$ARCH.iso isoext isohybrid -o 64 iso/shackle_$ARCH.iso echo "done" # clean up cd resources/ rm -r *.tcz *.dep *.md5.txt Log.txt info.lst Dependency.list squashfs-root/ cd .. sudo rm -r isoext/ coreext/ if [ "$ARCH" == "x86_64" ]; then sed -i 's/vmlinuz64/vmlinuz/g' resources/isolinux.cfg sed -i 's/corepure64.gz/core.gz/g' resources/isolinux.cfg fi