178 lines
5.7 KiB
Bash
178 lines
5.7 KiB
Bash
#!/bin/bash
|
|
#Check for root
|
|
if [[ $EUID -ne "0" ]]
|
|
then
|
|
echo "You must be root - try: sudo $0 or sudo bash $0"
|
|
exit 1
|
|
fi
|
|
|
|
#check for wipefs
|
|
command -v wipefs >/dev/null 2>&1 || { echo >&2 "I require wipefs but it's not installed. Aborting."; exit 1; }
|
|
|
|
script="$0"
|
|
basename="$(dirname $script)"
|
|
DIR="/home/temp/rescueusb"
|
|
|
|
#Warn user that this will detroit the things
|
|
echo "This will destroy all data and partitions on the device name you enter without further warning!!"
|
|
|
|
#get device name
|
|
echo "Please enter the device you wish to use (/dev/sdX):"
|
|
read dev
|
|
device=${dev}1
|
|
|
|
echo "Unmounting $device Partitions..."
|
|
for part in $dev*
|
|
do umount $part > /dev/null 2>&1
|
|
done
|
|
#umount $device
|
|
DD="${device:0:7}"
|
|
if [ "$DD" == "/dev/sd" ];
|
|
then
|
|
echo ""
|
|
else
|
|
echo "Bad device - must start with /dev/sd"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ${device:8:1} == 0 ]
|
|
then
|
|
echo "Bad Partition! should end in the number 1 or 2 - e.g. /dev/sdc1"
|
|
exit1
|
|
fi
|
|
|
|
#format device
|
|
|
|
echo "Partitioning: $dev"
|
|
read -p "Proceed with partitioning (y/n): " opinion2
|
|
if [[ $opinion2 == 'y' ]] || [[ $opinion2 == 'yes' ]]
|
|
|
|
then
|
|
|
|
#umount $device > /dev/null 2>&1
|
|
label="RESCUE-USB"
|
|
|
|
##Remove existing data/partitions
|
|
echo "Removing existing partitions and data from $dev..."
|
|
#dd if=/dev/zero of=$dev bs=512 count=1 conv=notrunc > /dev/null 2>&1
|
|
wipefs -a $dev > /dev/null 2>&1
|
|
|
|
##Create partition table
|
|
echo "Creating partition table..."
|
|
parted $dev --script -- mklabel msdos > /dev/null 2>&1
|
|
|
|
##Create partitions
|
|
echo "Creating partitions on $device..."
|
|
parted $dev --script -- mkpart primary 0% 90% > /dev/null 2>&1
|
|
parted $dev --script -- mkpart primary 91% 100% > /dev/null 2>&1
|
|
|
|
#Create /home/temp if it doesn't exist
|
|
echo "Creating working directory of $DIR..."
|
|
mkdir -p $DIR
|
|
|
|
#Fetch Easy2Boot
|
|
echo "Fetching Easy2Boot..."
|
|
wget -O $DIR/E2B.zip "https://f002.backblazeb2.com/file/tfmm-files/E2B.zip" > /dev/null 2>&1
|
|
#Extract it
|
|
echo "Extracting Easy2Boot..."
|
|
unzip -d $DIR/ $DIR/E2B.zip > /dev/null 2>&1
|
|
|
|
#Remove the zip
|
|
echo "Removing Easy2Boot zip..."
|
|
rm -f $DIR/E2B.zip > /dev/null 2>&1
|
|
|
|
echo "Formatting primary partition..."
|
|
#Run E2B's fmt.sh
|
|
/sbin/mkfs.vfat -F32 -n "$label" $device > /dev/null 2>&1
|
|
ptn=${device: -1}
|
|
echo Making partition "$ptn" active using parted...
|
|
sudo parted -s ${device%?} set $ptn boot on > /dev/null 2>&1
|
|
sleep 2
|
|
sync
|
|
sleep 5
|
|
|
|
echo "Mounting $device as /mnt/myusb"
|
|
mkdir -p /mnt/myusb 2>/dev/null
|
|
mount $device /mnt/myusb > /dev/null 2>&1
|
|
|
|
|
|
echo "Installing grub4dos to MBR"
|
|
chmod +rwx $DIR/_ISO/docs/linux_utils/bootlace.com > /dev/null 2>&1
|
|
$DIR/_ISO/docs/linux_utils/bootlace.com --time-out=0 ${device%?} > /dev/null 2>&1
|
|
echo "Installing grub4dos to PBR"
|
|
$DIR/_ISO/docs/linux_utils/bootlace.com --floppy=1 $device > /dev/null 2>&1
|
|
|
|
echo "Copying $DIR to /mnt/myusb..."
|
|
cp -r -i $DIR/* /mnt/myusb > /dev/null 2>&1
|
|
|
|
#Fetch ISOs to device
|
|
echo "Copying ISOs from internet to the USB..."
|
|
pushd $DIR
|
|
wget -O $DIR/chntpw.zip http://pogostick.net/~pnh/ntpasswd/cd140201.zip > /dev/null 2>&1
|
|
unzip chntpw.zip
|
|
cp cd140201.iso /mnt/myusb/_ISO/MAINMENU/chntpw.iso
|
|
wget -O $DIR/clonezilla.iso "https://osdn.net/frs/redir.php?m=constant&f=clonezilla%2F71318%2Fclonezilla-live-2.6.2-15-amd64.iso" > /dev/null 2>&1
|
|
cp clonezilla.iso /mnt/myusb/_ISO/MAINMENU/
|
|
wget -O $DIR/supergrub2disk.iso "https://sourceforge.net/settings/mirror_choices?projectname=supergrub2&filename=2.04s1/super_grub2_disk_2.04s1/super_grub2_disk_hybrid_2.04s1.iso&selected=managedway" > /dev/null 2>&1
|
|
cp supergrub2disk.iso /mnt/myusb/_ISO/MAINMENU/
|
|
wget -O $DIR/systemrescuecd.iso "https://osdn.net/projects/systemrescuecd/storage/releases/6.0.3/systemrescuecd-6.0.3.iso" > /dev/null 2>&1
|
|
cp systemrescuecd.iso /mnt/myusb/_ISO/MAINMENU/
|
|
popd > /dev/null 2>&1
|
|
pushd /mnt/myusb/_ISO/MAINMENU/ > /dev/null 2>&1
|
|
# wget -nd -e robots=off -r --no-parent /mnt/myusb/_ISO/MAINMENU/ http://files.tfmm.co/isos/ --reject index.htm* > /dev/null 2>&1
|
|
# for iso in $(curl -s -X GET 'https://registry.tfmm.co/service/rest/v1/assets?repository=tfmm-raw'| jq -r '.items | .[].downloadUrl'); do wget $iso; done
|
|
wget -O $DIR/acti-new.iso "https://f002.backblazeb2.com/file/tfmm-files/acti-new.iso" > /dev/null 2>&1
|
|
mv acti-new.iso acronis-new.iso
|
|
wget -O $DIR/acti-2012.iso "https://f002.backblazeb2.com/file/tfmm-files/acti-2012.iso" > /dev/null 2>&1
|
|
mv acti-2012.iso acronis-2012.iso
|
|
wget -O $DIR/WPEF.iso "https://f002.backblazeb2.com/file/tfmm-files/WPEF.iso" > /dev/null 2>&1
|
|
mv WPEF.iso WinPE_Fixer.iso
|
|
popd > /dev/null 2>&1
|
|
|
|
#Use E2B's defragger
|
|
echo "Defragmenting the drive and ISOs..."
|
|
chmod +x $DIR/_ISO/docs/linux_utils/defragfs > /dev/null 2>&1
|
|
|
|
$DIR/_ISO/docs/linux_utils/defragfs /mnt/myusb -f > /dev/null 2>&1
|
|
#mount WinPE iso to copy /tools dir
|
|
echo "Mounting WinPE ISO and copying tools directory..."
|
|
mkdir $DIR/isomount > /dev/null 2>&1
|
|
mount -o loop /mnt/myusb/_ISO/MAINMENU/WinPE_Fixer.iso $DIR/isomount > /dev/null 2>&1
|
|
|
|
#copy tools dir
|
|
cp -r $DIR/isomount/tools /mnt/myusb/ > /dev/null 2>&1
|
|
|
|
#unmount ISO
|
|
umount $DIR/isomount > /dev/null 2>&1
|
|
|
|
#Get files to Update Menu settings
|
|
echo "Placing menu config files..."
|
|
cp resources/menu_defaults.txt /mnt/myusb/_ISO/menu_defaults.txt > /dev/null 2>&1
|
|
cp resources/MyE2B.cfg /mnt/myusb/_ISO/MyE2B.cfg > /dev/null 2>&1
|
|
|
|
#Remove working dir
|
|
echo "Removing working directory..."
|
|
rm -rf $DIR > /dev/null 2>&1
|
|
|
|
#unmount drive
|
|
echo "Unmounting drive..."
|
|
sleep 20
|
|
umount $dev* > /dev/null 2>&1
|
|
umount /mnt/myusb > /dev/null 2>&1
|
|
|
|
#remove mountpoint
|
|
echo "Removing mountpoint..."
|
|
rm -r /mnt/myusb > /dev/null 2>&1
|
|
|
|
#Complete
|
|
echo "Script completed, your USB has been created!"
|
|
|
|
exit 1
|
|
|
|
else
|
|
|
|
echo "You said no, stopping."
|
|
exit 1
|
|
|
|
fi
|