#!/bin/bash
echo;echo "=== CloneZilla ISO grub entry installer";echo
if [ ! "$EUID" -eq 0 ];then echo " !! This script must be run as root.";echo;exit;fi
osarch=$(dpkg --print-architecture)
uuid=$(lsblk -o MOUNTPOINT,UUID | awk '$1 == "/" {print $2}')
current_locale=$(locale | grep LANG= | cut -d'=' -f2)
keyboard_layout=$(setxkbmap -query | grep layout | awk '{print $2}')
echo " # detected config:"
echo "  > architecture: $osarch"
echo "  > Root disk (/) UUID: $uuid"
echo "  > locales: $current_locale"
echo "  > keyboard layout: $keyboard_layout"
echo
echo -n " Proceed ? (y/n) " && read x
if [ "$x" == "y" ] || [ "$x" == "Y" ]; then
echo;echo " # downloading ISO..."
if [ "$osarch" = "amd64" ]; then
zillaiso="clonezilla-live-3.1.2-22-amd64.iso"
wget -q --show-progress https://deac-riga.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/3.1.2-22/$zillaiso
else
zillaiso="clonezilla-live-3.1.2-22-i686.iso"
wget -q --show-progress https://deac-fra.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/3.1.2-22/$zillaiso
fi
mkdir -p /iso
mv -f $zillaiso /iso/
echo;echo " # Creating /etc/grub.d/39_Clonezilla";echo
{
echo '#!/bin/sh'
echo 'exec tail -n +3 $0'
echo 'menuentry "Clonezilla" --class recovery {'
[ "$osarch" = "amd64" ] && echo 'rmmod tpm'
echo "search --no-floppy --fs-uuid --set $uuid"
echo 'insmod gzio'
echo 'if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi'
echo 'insmod part_gpt'
echo 'insmod ext2'
echo "set isofile=\"/iso/$zillaiso\""
echo 'loopback loop $isofile'
echo "linux (loop)/live/vmlinuz nomodeset boot=live live-config edd=on ocs_live_run=\"ocs-live-general\" ocs_live_extra_param=\"\" keyboard-layouts=\"$keyboard_layout\" ocs_live_batch=\"no\" locales=\"$current_locale\" ip=frommedia toram=filesystem.squashfs findiso=\$isofile"
echo 'initrd (loop)/live/initrd.img'
echo '}'
} > "/etc/grub.d/39_Clonezilla"
chmod +x "/etc/grub.d/39_Clonezilla"
echo " # Updating grub...";echo
update-grub
echo;echo "Done.";else echo;echo "Exited.";fi