]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - INSTALL/Ventoy2Disk.sh
update Italian format
[Ventoy.git] / INSTALL / Ventoy2Disk.sh
index 29e30710d05c8434c62ff3a4f1c85c09efe49474..01a5ab4c96e162eb4e9b5bece2be618e6f33a366 100644 (file)
@@ -9,12 +9,16 @@ fi
 . ./tool/ventoy_lib.sh
 
 print_usage() {
-    echo 'Usage:  VentoyInstaller.sh OPTION /dev/sdX'
-    echo '  OPTION:'
+    echo 'Usage:  Ventoy2Disk.sh CMD [ OPTION ] /dev/sdX'
+    echo '  CMD:'
     echo '   -i  install ventoy to sdX (fail if disk already installed with ventoy)'
     echo '   -u  update ventoy in sdX'
     echo '   -I  force install ventoy to sdX (no matter installed or not)'
     echo ''
+    echo '  OPTION: (optional)'
+    echo '   -s  enable secure boot support (default is disabled)'
+    echo ''
+    
 }
 
 echo ''
@@ -38,6 +42,7 @@ while [ -n "$1" ]; do
         SECUREBOOT="YES"
     else
         if ! [ -b "$1" ]; then
+            vterr "$1 is NOT a valid device"
             print_usage
             cd $OLDDIR
             exit 1
@@ -54,13 +59,25 @@ if [ -z "$MODE" ]; then
     exit 1
 fi
 
-if [ -z "$SUDO_USER" ]; then
-    if [ "$USER" != "root" ]; then
-        vterr "EUID is $EUID root permission is required."
-        echo ''
-        cd $OLDDIR
-        exit 1
-    fi
+if ! [ -b "$DISK" ]; then
+    vterr "Disk $DISK does not exist"
+    cd $OLDDIR
+    exit 1
+fi
+
+if [ -e /sys/class/block/${DISK#/dev/}/start ]; then
+    vterr "$DISK is a partition, please use the whole disk"
+    cd $OLDDIR
+    exit 1
+fi
+
+if dd if="$DISK" of=/dev/null bs=1 count=1 >/dev/null 2>&1; then
+    vtdebug "root permission check ok ..."
+else
+    vterr "Failed to access $DISK, maybe root privilege is needed!"
+    echo ''
+    cd $OLDDIR
+    exit 1
 fi
 
 vtdebug "MODE=$MODE FORCE=$FORCE"
@@ -93,28 +110,28 @@ if ! check_tool_work_ok; then
     exit 1
 fi
 
+grep "^$DISK" /proc/mounts | while read mtline; do
+    mtpnt=$(echo $mtline | awk '{print $2}')
+    vtdebug "Trying to umount $mtpnt ..."
+    umount $mtpnt >/dev/null 2>&1
+done
 
-if ! [ -b "$DISK" ]; then
-    vterr "Disk $DISK does not exist"
-    cd $OLDDIR
-    exit 1
+if swapon -s | grep -q "^${DISK}[0-9]"; then
+    swapon -s | grep "^${DISK}[0-9]" | awk '{print $1}' | while read line; do
+        vtdebug "Trying to swapoff $line ..."
+        swapoff $line
+    done
 fi
 
 
-if [ -e /sys/class/block/${DISK#/dev/}/start ]; then
-    vterr "$DISK is a partition, please use the whole disk"
+if grep "$DISK" /proc/mounts; then
+    vterr "$DISK is already mounted, please umount it first!"
     cd $OLDDIR
     exit 1
 fi
 
-grep "^$DISK" /proc/mounts | while read mtline; do
-    mtpnt=$(echo $mtline | awk '{print $DISK}')
-    vtdebug "Trying to umount $mtpnt ..."
-    umount $mtpnt >/dev/null 2>&1
-done
-
-if grep "$DISK" /proc/mounts; then
-    vterr "$DISK is already mounted, please umount it first!"
+if swapon -s | grep -q "^${DISK}[0-9]"; then
+    vterr "$DISK is used as swap, please swapoff it first!"
     cd $OLDDIR
     exit 1
 fi
@@ -227,6 +244,12 @@ if [ "$MODE" = "install" ]; then
     
     vtinfo "esp partition processing ..."
     
+    sleep 1
+    mtpnt=$(grep "^${DISK}2" /proc/mounts | awk '{print $2}')
+    if [ -n "$mtpnt" ]; then
+        umount $mtpnt >/dev/null 2>&1
+    fi
+    
     if [ "$SECUREBOOT" != "YES" ]; then
         mkdir ./tmp_mnt
         
@@ -236,12 +259,18 @@ if [ "$MODE" = "install" ]; then
                 vtdebug "mounting part2 success"
                 break
             fi
+            
+            mtpnt=$(grep "^${DISK}2" /proc/mounts | awk '{print $2}')
+            if [ -n "$mtpnt" ]; then
+                umount $mtpnt >/dev/null 2>&1
+            fi
             sleep 2
         done
-              
+
         rm -f ./tmp_mnt/EFI/BOOT/BOOTX64.EFI
         rm -f ./tmp_mnt/EFI/BOOT/grubx64.efi
         rm -f ./tmp_mnt/EFI/BOOT/MokManager.efi
+        rm -f ./tmp_mnt/ENROLL_THIS_KEY_IN_MOKMANAGER.cer
         mv ./tmp_mnt/EFI/BOOT/grubx64_real.efi  ./tmp_mnt/EFI/BOOT/BOOTX64.EFI
         
         umount ./tmp_mnt
@@ -305,6 +334,7 @@ else
         rm -f ./tmp_mnt/EFI/BOOT/BOOTX64.EFI
         rm -f ./tmp_mnt/EFI/BOOT/grubx64.efi
         rm -f ./tmp_mnt/EFI/BOOT/MokManager.efi
+        rm -f ./tmp_mnt/ENROLL_THIS_KEY_IN_MOKMANAGER.cer
         mv ./tmp_mnt/EFI/BOOT/grubx64_real.efi  ./tmp_mnt/EFI/BOOT/BOOTX64.EFI
         
         umount ./tmp_mnt