From 524f1c7826f8353439cf6e3f30d6f5b8f4581648 Mon Sep 17 00:00:00 2001 From: sonique6784 Date: Sun, 8 Nov 2020 11:10:09 +1100 Subject: [PATCH] improved HD creator with partioning and formatting Drive with HFS. (#51) --- easyinstall.sh | 230 +++++++++++++++++++++++++++++++++--------------- lido-driver.img | Bin 0 -> 16384 bytes 2 files changed, 158 insertions(+), 72 deletions(-) create mode 100644 lido-driver.img diff --git a/easyinstall.sh b/easyinstall.sh index cf024119..790f1ba2 100755 --- a/easyinstall.sh +++ b/easyinstall.sh @@ -4,8 +4,26 @@ # Author @sonique6784 # Copyright (c) 2020, sonique6784 +function showRaSCSILogo(){ +logo=""" +    .~~.   .~~.\n +  '. \ ' ' / .'\n +   .╔═══════╗.\n +  : ║|¯¯¯¯¯|║ :\n + ~ (║|_____|║) ~\n +( : ║ .  __ ║ : )\n + ~ .╚╦═════╦╝. ~\n +  (  ¯¯¯¯¯¯¯  ) RaSCSI Assistant\n +   '~ .~~~. ~'\n +       '~'\n +""" +echo -e $logo +} VIRTUAL_DRIVER_PATH=/home/pi/images +HFS_FORMAT=/usr/bin/hformat +HFDISK_BIN=/usr/bin/hfdisk +LIDO_DRIVER=~/RASCSI/lido-driver.img function initialChecks() { @@ -17,6 +35,7 @@ function initialChecks() { if [ ! -d ~/RASCSI ]; then echo "You must checkout RASCSI repo into /user/pi/RASCSI" + echo "$ git clone git@github.com:akuker/RASCSI.git" exit 2 fi } @@ -109,7 +128,7 @@ function showRaScsiStatus() { } function createDrive600MB() { - createDrive 600 + createDrive 600 "HD600" } function createDriveCustom() { @@ -117,92 +136,159 @@ function createDriveCustom() { until [ $driveSize -ge "10" ] && [ $driveSize -le "4000" ]; do echo "What drive size would you like (in MB) (10-4000)" read driveSize + + echo "How would you like to name that drive?" + read driveName done - createDrive $driveSize + createDrive $driveSize "$driveName" +} + +function formatDrive() { + diskPath="$1" + volumeName="$2" + + if [ ! -x $HFS_FORMAT ]; then + # Install hfsutils to have hformat to format HFS + sudo apt-get install hfsutils + fi + + if [ ! -x $HFDISK_BIN ]; then + # Clone, compile and install 'hfdisk', partition tool + git clone git://www.codesrc.com/git/hfdisk.git + cd hfdisk + make + + sudo cp hfdisk /usr/bin/hfdisk + fi + + # Inject hfdisk commands to create Drive with correct partitions + (echo i; echo ; echo C; echo ; echo 32; echo "Driver_Partition"; echo "Apple_Driver"; echo C; echo ; echo ; echo "${volumeName}"; echo "Apple_HFS"; echo w; echo y; echo p;) | $HFDISK_BIN "$diskPath" + partitionOk=$? + + if [ $partitionOk -eq 0 ]; then + if [ ! -f $LIDO_DRIVER ];then + echo "Lido driver couldn't be found. Make sure RASCSI is up-to-date with git pull" + return 1 + fi + + # Burn Lido driver to the disk + dd if=$LIDO_DRIVER of="$diskPath" seek=64 count=32 bs=512 conv=notrunc + + driverInstalled=$? + if [ $driverInstalled -eq 0 ]; then + # Format the partition with HFS file system + $HFS_FORMAT -l "${volumeName}" "$diskPath" 1 + hfsFormattedOk=$? + if [ $hfsFormattedOk -eq 0 ]; then + echo "Disk created with success." + else + echo "Unable to format HFS partition." + return 4 + fi + else + echo "Unable to install Lido Driver." + return 3 + fi + else + echo "Unable to create the partition." + return 2 + fi } function createDrive() { + if [ $# -ne 2 ]; then + echo "To create a Drive, volume size and volume name must be provided" + echo "$ createDrive 600 \"RaSCSI Drive\"" + echo "Drive wasn't created." + return + fi + driveSize=$1 + driveName=$2 mkdir -p $VIRTUAL_DRIVER_PATH drivePath="${VIRTUAL_DRIVER_PATH}/${driveSize}MB.hda" - echo $drivePath + if [ ! -f $drivePath ]; then echo "Creating a ${driveSize}MB Drive" dd if=/dev/zero of=$drivePath bs=1M count=$driveSize + + echo "Formatting drive with HFS" + formatDrive "$drivePath" "$driveName" + else echo "Error: drive already exists" fi } +function showMenu() { + echo "" + echo "Choose among the following options:" + echo "INSTALL" + echo " 0) install RaSCSI Service + web interface + 600MB Drive (recommended)" + echo " 1) install RaSCSI Service (initial)" + echo " 2) install RaSCSI Web interface" + echo "UPDATE" + echo " 3) update RaSCSI Service + web interface (recommended)" + echo " 4) update RaSCSI Service" + echo " 5) update RaSCSI Web interface" + echo "CREATE EMPTY DRIVE" + echo " 6) 600MB drive (recommended)" + echo " 7) custom drive size (up to 4000MB)" + + choice=-1 + + until [ $choice -ge "0" ] && [ $choice -le "7" ]; do + echo "Enter your choice (0-7) or CTRL-C to exit" + read choice + done + + + case $choice in + 0) + echo "Installing RaSCSI Service + Web interface" + installRaScsi + installRaScsiWebInterface + createDrive600MB + showRaScsiStatus + ;; + 1) + echo "Installing RaSCSI Service" + installRaScsi + showRaScsiStatus + ;; + 2) + echo "Installing RaSCSI Web interface" + installRaScsiWebInterface + ;; + 3) + echo "Updating RaSCSI Service + Web interface" + updateRaScsi + updateRaScsiWebInterface + showRaScsiStatus + ;; + 4) + echo "Updating RaSCSI Service" + updateRaScsi + showRaScsiStatus + ;; + 5) + echo "Updating RaSCSI Web interface" + updateRaScsiWebInterface + ;; + 6) + echo "Creating a 600MB drive" + createDrive600MB + ;; + 7) + echo "Creating a custom drive" + createDriveCustom + ;; + esac +} + + +showRaSCSILogo initialChecks - - -echo "Welcome to Easy Install for RaSCSI" -echo "" -echo "Choose among the following options:" -echo "INSTALL" -echo " 0) install RaSCSI Service + web interface + 600MB Drive (recommended)" -echo " 1) install RaSCSI Service (initial)" -echo " 2) install RaSCSI Web interface" -echo "UPDATE" -echo " 3) update RaSCSI Service + web interface (recommended)" -echo " 4) update RaSCSI Service" -echo " 5) update RaSCSI Web interface" -echo "CREATE EMPTY DRIVE" -echo " 6) 600MB drive (recommended)" -echo " 7) custom drive size (up to 4000MB)" - - -choice=-1 - -until [ $choice -ge "0" ] && [ $choice -le "7" ]; do - echo "Enter your choice (0-7) or CTRL-C to exit" - read choice -done - - -case $choice in - 0) - echo "Installing RaSCSI Service + Web interface" - installRaScsi - installRaScsiWebInterface - createDrive600MB - showRaScsiStatus - ;; - 1) - echo "Installing RaSCSI Service" - installRaScsi - showRaScsiStatus - ;; - 2) - echo "Installing RaSCSI Web interface" - installRaScsiWebInterface - ;; - 3) - echo "Updating RaSCSI Service + Web interface" - updateRaScsi - updateRaScsiWebInterface - showRaScsiStatus - ;; - 4) - echo "Updating RaSCSI Service" - updateRaScsi - showRaScsiStatus - ;; - 5) - echo "Updating RaSCSI Web interface" - updateRaScsiWebInterface - ;; - 6) - echo "Creating a 600MB drive" - createDrive600MB - ;; - 7) - echo "Creating a custom drive" - createDriveCustom - ;; -esac - - +showMenu \ No newline at end of file diff --git a/lido-driver.img b/lido-driver.img new file mode 100644 index 0000000000000000000000000000000000000000..e938383e09f73816312c726d1febe053d9ade079 GIT binary patch literal 16384 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 literal 0 HcmV?d00001