X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/b0568922d20d7c19025f371fa9066044777d7b5b..HEAD:/INSTALL/tool/ventoy_lib.sh diff --git a/INSTALL/tool/ventoy_lib.sh b/INSTALL/tool/ventoy_lib.sh index ef047f3..854881d 100644 --- a/INSTALL/tool/ventoy_lib.sh +++ b/INSTALL/tool/ventoy_lib.sh @@ -92,6 +92,10 @@ get_disk_part_name() { echo ${DISK}p${2} elif echo $DISK | grep -q "/dev/nbd[0-9]"; then echo ${DISK}p${2} + elif echo $DISK | grep -q "/dev/zd[0-9]"; then + echo ${DISK}p${2} + elif echo $DISK | grep -q "/dev/md[0-9]"; then + echo ${DISK}p${2} else echo ${DISK}${2} fi @@ -206,6 +210,48 @@ get_disk_ventoy_version() { ventoy_false } +wait_and_create_part() { + vPART1=$1 + vPART2=$2 + echo 'Wait for partitions $vPART1 and $vPART2 ...' + for i in 0 1 2 3 4 5 6 7 8 9; do + if ls -l $vPART1 2>/dev/null | grep -q '^b'; then + if ls -l $vPART2 2>/dev/null | grep -q '^b'; then + break + fi + else + echo "Wait for $vPART1 and $vPART2 ..." + sleep 1 + fi + done + + if ls -l $vPART1 2>/dev/null | grep -q '^b'; then + echo "$vPART1 exist OK" + else + MajorMinor=$(sed "s/:/ /" /sys/class/block/${vPART1#/dev/}/dev) + echo "mknod -m 0660 $vPART1 b $MajorMinor ..." + mknod -m 0660 $vPART1 b $MajorMinor + fi + + if ls -l $vPART2 2>/dev/null | grep -q '^b'; then + echo "$vPART2 exist OK" + else + MajorMinor=$(sed "s/:/ /" /sys/class/block/${vPART2#/dev/}/dev) + echo "mknod -m 0660 $vPART2 b $MajorMinor ..." + mknod -m 0660 $vPART2 b $MajorMinor + fi + + if ls -l $vPART1 2>/dev/null | grep -q '^b'; then + if ls -l $vPART2 2>/dev/null | grep -q '^b'; then + echo "partition exist OK" + fi + else + echo "[FAIL] $vPART1/$vPART2 does not exist" + exit 1 + fi +} + + format_ventoy_disk_mbr() { reserve_mb=$1 DISK=$2 @@ -241,6 +287,11 @@ format_ventoy_disk_mbr() { vtdebug "part1_start_sector=$part1_start_sector part1_end_sector=$part1_end_sector" vtdebug "part2_start_sector=$part2_start_sector part2_end_sector=$part2_end_sector" + if [ -e $PART1 ]; then + echo "delete $PART1" + rm -f $PART1 + fi + if [ -e $PART2 ]; then echo "delete $PART2" rm -f $PART2 @@ -293,27 +344,34 @@ EOF sleep 3 echo "Done" - echo 'mkfs on disk partitions ...' - for i in 1 2 3 4 5 6 7; do - if [ -b $PART2 ]; then + + echo 'Wait for partitions ...' + for i in 0 1 2 3 4 5 6 7 8 9; do + if [ -b $PART1 -a -b $PART2 ]; then break else - echo "wait $PART2 ..." + echo "Wait for $PART1/$PART2 ..." sleep 1 fi done - + if ! [ -b $PART1 ]; then + MajorMinor=$(sed "s/:/ /" /sys/class/block/${PART1#/dev/}/dev) + echo "mknod -m 0660 $PART1 b $MajorMinor ..." + mknod -m 0660 $PART1 b $MajorMinor + fi + if ! [ -b $PART2 ]; then MajorMinor=$(sed "s/:/ /" /sys/class/block/${PART2#/dev/}/dev) echo "mknod -m 0660 $PART2 b $MajorMinor ..." - mknod -m 0660 $PART2 b $MajorMinor - - if ! [ -b $PART1 ]; then - MajorMinor=$(sed "s/:/ /" /sys/class/block/${PART1#/dev/}/dev) - echo "mknod -m 0660 $PART1 b $MajorMinor ..." - mknod -m 0660 $PART1 b $MajorMinor - fi + mknod -m 0660 $PART2 b $MajorMinor + fi + + if [ -b $PART1 -a -b $PART2 ]; then + echo "partition exist OK" + else + echo "[FAIL] $PART1/$PART2 does not exist" + exit 1 fi echo "create efi fat fs $PART2 ..." @@ -366,6 +424,11 @@ format_ventoy_disk_gpt() { vtdebug "part1_start_sector=$part1_start_sector part1_end_sector=$part1_end_sector" vtdebug "part2_start_sector=$part2_start_sector part2_end_sector=$part2_end_sector" + if [ -e $PART1 ]; then + echo "delete $PART1" + rm -f $PART1 + fi + if [ -e $PART2 ]; then echo "delete $PART2" rm -f $PART2 @@ -386,7 +449,6 @@ format_ventoy_disk_gpt() { mkpart Ventoy ntfs $part1_start_sector $part1_end_sector \ mkpart VTOYEFI fat16 $part2_start_sector $part2_end_sector \ $vt_set_efi_type \ - set 2 hidden on \ quit sync @@ -399,27 +461,33 @@ format_ventoy_disk_gpt() { sleep 3 echo "Done" - echo 'mkfs on disk partitions ...' - for i in 1 2 3 4 5 6 7; do - if [ -b $PART2 ]; then + echo 'Wait for partitions ...' + for i in 0 1 2 3 4 5 6 7 8 9; do + if [ -b $PART1 -a -b $PART2 ]; then break else - echo "wait $PART2 ..." + echo "Wait for $PART1/$PART2 ..." sleep 1 fi done - + if ! [ -b $PART1 ]; then + MajorMinor=$(sed "s/:/ /" /sys/class/block/${PART1#/dev/}/dev) + echo "mknod -m 0660 $PART1 b $MajorMinor ..." + mknod -m 0660 $PART1 b $MajorMinor + fi + if ! [ -b $PART2 ]; then MajorMinor=$(sed "s/:/ /" /sys/class/block/${PART2#/dev/}/dev) echo "mknod -m 0660 $PART2 b $MajorMinor ..." - mknod -m 0660 $PART2 b $MajorMinor - - if ! [ -b $PART1 ]; then - MajorMinor=$(sed "s/:/ /" /sys/class/block/${PART1#/dev/}/dev) - echo "mknod -m 0660 $PART1 b $MajorMinor ..." - mknod -m 0660 $PART1 b $MajorMinor - fi + mknod -m 0660 $PART2 b $MajorMinor + fi + + if [ -b $PART1 -a -b $PART2 ]; then + echo "partition exist OK" + else + echo "[FAIL] $PART1/$PART2 does not exist" + exit 1 fi echo "create efi fat fs $PART2 ..." @@ -427,7 +495,7 @@ format_ventoy_disk_gpt() { 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 + if mkfs.vfat -F 16 -n VTOYEFI -s 1 $PART2; then echo 'success' break else