]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - INSTALL/tool/ventoy_lib.sh
add support for UnionTechOS fuyu (#864)
[Ventoy.git] / INSTALL / tool / ventoy_lib.sh
index 0e6f9b6aae7dbc8278e8919f4d58aaa4fb407229..a394eb14c69f660128cd035fd511c69f78fe5758 100644 (file)
@@ -90,11 +90,21 @@ get_disk_part_name() {
         echo ${DISK}p${2}
     elif echo $DISK | grep -q "/dev/mmcblk[0-9]"; then
         echo ${DISK}p${2}
+    elif echo $DISK | grep -q "/dev/nbd[0-9]"; then
+        echo ${DISK}p${2}
     else
         echo ${DISK}${2}
     fi
 }
 
+check_umount_disk() {
+    DiskOrPart="$1"
+    grep "^${DiskOrPart}" /proc/mounts | while read mtline; do
+        mtpnt=$(echo $mtline | awk '{print $2}')
+        vtdebug "Trying to umount $mtpnt ..."
+        umount $mtpnt >/dev/null 2>&1
+    done
+}
 
 get_ventoy_version_from_cfg() {
     if grep -q 'set.*VENTOY_VERSION=' $1; then
@@ -216,6 +226,14 @@ format_ventoy_disk_mbr() {
     fi
     
     part2_start_sector=$(expr $part1_end_sector + 1)
+    
+    modsector=$(expr $part2_start_sector % 8)
+    if [ $modsector -gt 0 ]; then
+        vtdebug "modsector:$modsector need to be aligned with 4KB"
+        part1_end_sector=$(expr $part1_end_sector - $modsector)
+        part2_start_sector=$(expr $part1_end_sector + 1)
+    fi
+    
     part2_end_sector=$(expr $part2_start_sector + $VENTOY_SECTOR_NUM - 1)
 
     export part2_start_sector
@@ -300,6 +318,8 @@ EOF
 
     echo "create efi fat fs $PART2 ..."
     for i in 0 1 2 3 4 5 6 7 8 9; do
+        check_umount_disk "$PART2"
+
         if mkfs.vfat -F 16 -n VTOYEFI $PART2; then
             echo 'success'
             break
@@ -331,6 +351,14 @@ format_ventoy_disk_gpt() {
     fi
     
     part2_start_sector=$(expr $part1_end_sector + 1)
+    
+    modsector=$(expr $part2_start_sector % 8)
+    if [ $modsector -gt 0 ]; then
+        vtdebug "modsector:$modsector need to be aligned with 4KB"
+        part1_end_sector=$(expr $part1_end_sector - $modsector)
+        part2_start_sector=$(expr $part1_end_sector + 1)
+    fi
+    
     part2_end_sector=$(expr $part2_start_sector + $VENTOY_SECTOR_NUM - 1)
 
     export part2_start_sector
@@ -395,7 +423,10 @@ format_ventoy_disk_gpt() {
     fi
 
     echo "create efi fat fs $PART2 ..."
+    
     for i in 0 1 2 3 4 5 6 7 8 9; do
+        check_umount_disk "$PART2"
+        
         if mkfs.vfat -F 16 -n VTOYEFI $PART2; then
             echo 'success'
             break