/usr/share/drbl/samples/gen-rec-usb is in clonezilla 3.21.13-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | #!/bin/bash
# License: GPL
# Author: Steven Shiau <steven _at_ stevenshiau org>
# Description: Program to create a recovery USB flash drive directly from the machine by Clonezilla live.
# To use it:
# Prepare:
# (1) A bootable Clonezilla live, either on CD or USB flash drive (master one)
# (2) A USB flash drive with 1 FAT/EXT/BTRFS/NTFS partition (USB flash drive B)
# Then
# (1) Insert master one and USB flash drive B on the machine which you want to take the image
# (2) Boot Clonezilla live with master one. Do not choose TORAM mode. Use normal mode
# (3) Run this program. Without any option it will enter interactive mode. You can also use some options. Run with option "-h" for more info.
# Then it will take the hard drive (say /dev/sda) as an image, put the image on USB flash drive B (e.g. /dev/sdb1), make it bootable. Then you will have a recovery USB flash drive. All is done in this program.
# //NOTE// The boot loader of destination device (USB flash drive B) will be overwritten. USE IT CAREFULLY!!!
DRBL_SCRIPT_PATH="${DRBL_SCRIPT_PATH:-/usr/share/drbl}"
. $DRBL_SCRIPT_PATH/sbin/drbl-conf-functions
. /etc/drbl/drbl-ocs.conf
. $DRBL_SCRIPT_PATH/sbin/ocs-functions
# Settings
# img_name is the image name which will be saved in the USB flash drive. Normally you do not have to care about this.
img_name="recovery-img"
# ocs_batch_mode could be: true, false, semi
ocs_batch_mode="false"
tui="true" # Default to turn on TUI
boot_menu_prompt="Run USB Recovery - Powered By Clonezilla Live"
#
USAGE() {
echo "$ocs - To create a recovery USB flash drive"
echo "Usage:"
echo "To run $ocs:"
echo "$ocs [OPTION] SRC_HARD_DRIVE DEST_USB_FLASH_DRIVE"
echo "Options:"
echo "-b, --batch Run image checking in batch mode"
echo "-s, --semi-batch Run image checking in semi-batch mode, i.e. just comfirm once"
echo "-nogui, --nogui Do not show GUI (TUI) of Partclone or Partimage, use text only"
echo "SRC_HARD_DRIVE is the hard drive to be taken as an image, e.g. sda, sdb..."
echo "DEST_USB_FLASH_DRIVE is the USB flash drive partition name, e.g. sdf1, sdg1..."
echo "If no SRC_HARD_DRIVE/DEST_USB_FLASH_DRIVE is specified, a dialog menu will be shown."
echo "Ex:"
echo "To take the /dev/sda as an image and put on /dev/sdb1 as a recovery USB flash drive, run in batch mode:"
echo " $ocs -b sda sdb1"
echo
} # end of USAGE
####################
### Main program ###
####################
ocs_file="$0"
ocs=`basename $ocs_file`
#
while [ $# -gt 0 ]; do
case "$1" in
-b|--batch) ocs_batch_mode="true"; shift;;
-s|--semi-batch) ocs_batch_mode="semi"; shift;;
-nogui|--nogui)
shift;
# -nogui is for backward compatable, better to use --nogui
tui="false"
;;
-*) echo "${0}: ${1}: invalid option" >&2
USAGE >& 2
exit 2 ;;
*) break ;;
esac
done
target_hd="$1"
target_parts="$2"
#
ask_and_load_lang_set
#
if [ "$ocs_batch_mode" = "true" ]; then
ocs_sr_batch_opt="--batch"
ocs_live_dev_batch_opt="-f"
elif [ "$ocs_batch_mode" = "semi" ]; then
ocs_sr_batch_opt="-c"
ocs_live_dev_batch_opt="-f"
else
ocs_sr_batch_opt="-c"
ocs_live_dev_batch_opt=""
fi
if [ "$tui" = "false" ]; then
ocs_sr_nogui_opt="--nogui"
fi
#
if [ -z "$target_hd" ]; then
get_target_hd_name_from_local_machine "Choose the source disk to be imaged for the recovery" "menu"
fi
if [ -z "$target_parts" ]; then
get_target_parts_name_from_local_machine "Choose destination partition of USB flash drive to write" "menu"
fi
TMPMNT="$(mktemp -d /tmp/ocs_live.XXXXXX)"
mount /dev/$target_parts $TMPMNT
rc="$?"
if [ "$rc" -eq 0 ]; then
mkdir -p $TMPMNT/$ocsroot
mount --bind -o noatime,nodiratime $TMPMNT/$ocsroot /$ocsroot
ocs-sr $ocs_sr_batch_opt $ocs_sr_nogui_opt -q2 -j2 -z1p -i 2000 -sc -p true savedisk $img_name $target_hd
rc_sr="$?"
umount /$ocsroot
umount $TMPMNT
if [ "$rc_sr" -eq 0 ]; then
echo $msg_delimiter_star_line
ocs-live-dev $ocs_live_dev_batch_opt -q -g en_US.UTF-8 -t -k NONE -d /dev/$target_parts -e "-g auto -e1 auto -e2 -c -r -j2 -scr -p choose restoredisk $img_name ask_user" $img_name
# Process the label
# Only show the first boot menu
echo "Polishing the boot menu..."
mount /dev/$target_parts $TMPMNT
cfg_f="$TMPMNT/syslinux/syslinux.cfg"
cfg_tmp="$(mktemp /tmp/cfg.XXXXXX)"
line_no="$(LC_ALL=C grep -i -n "^MENU BEGIN Other modes of Clonezilla live" $cfg_f | awk -F":" '{print $1}')"
line_no="$((line_no - 1))"
head -n $line_no $cfg_f > $cfg_tmp
perl -pi -e "s|^([[:space:]].*)MENU LABEL.*|\$1MENU LABEL $boot_menu_prompt|g" $cfg_tmp
cp -a $cfg_tmp $cfg_f
cp -a $cfg_f $TMPMNT/syslinux/isolinux.cfg
rm -f $cfg_tmp
umount $TMPMNT
rmdir $TMPMNT
echo "done!"
fi
else
[ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
echo "Failed to mount /dev/$target_parts as image repository!"
[ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
echo "$msg_program_stop!"
exit 1
fi
|