87 lines
No EOL
2.2 KiB
Bash
Executable file
87 lines
No EOL
2.2 KiB
Bash
Executable file
#!/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 |