X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/12e8ae26ae543b518517243e13d5cf8b53f37f9b..69bc90da422b8ec4d355f81df78c8bd7137addeb:/INSTALL/tool/VentoyWorker.sh diff --git a/INSTALL/tool/VentoyWorker.sh b/INSTALL/tool/VentoyWorker.sh index 7e276db..543ac69 100644 --- a/INSTALL/tool/VentoyWorker.sh +++ b/INSTALL/tool/VentoyWorker.sh @@ -6,9 +6,9 @@ print_usage() { echo 'Usage: Ventoy2Disk.sh CMD [ OPTION ] /dev/sdX' echo ' CMD:' - echo ' -i install ventoy to sdX (fail if disk already installed with ventoy)' - echo ' -I force install ventoy to sdX (no matter installed or not)' - echo ' -u update ventoy in sdX' + echo ' -i install Ventoy to sdX (fails if disk already installed with Ventoy)' + echo ' -I force install Ventoy to sdX (no matter installed or not)' + echo ' -u update Ventoy in sdX' echo ' -l list Ventoy information in sdX' echo '' echo ' OPTION: (optional)' @@ -96,7 +96,7 @@ vtdebug "MODE=$MODE FORCE=$FORCE RESERVE_SPACE=$RESERVE_SPACE RESERVE_SIZE_MB=$R if check_tool_work_ok; then vtdebug "check tool work ok" else - vterr "Some tools can not run in current system. Please check log.txt for detail." + vterr "Some tools can not run on current system. Please check log.txt for details." exit 1 fi @@ -125,11 +125,7 @@ if [ "$MODE" = "list" ]; then fi #check mountpoint -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 +check_umount_disk "$DISK" if grep "$DISK" /proc/mounts; then vterr "$DISK is already mounted, please umount it first!" @@ -160,14 +156,14 @@ if [ -d ./tmp_mnt ]; then umount ./tmp_mnt >/dev/null 2>&1 rm -rf ./tmp_mnt if [ -d ./tmp_mnt ]; then - vterr "tmp_mnt directory exit, please delete it first." + vterr "tmp_mnt directory exits, please delete it first." exit 1 fi fi if [ "$MODE" = "install" ]; then - vtdebug "install ventoy ..." + vtdebug "install Ventoy ..." if [ -n "$VTGPT" ]; then if parted -v > /dev/null 2>&1; then @@ -193,7 +189,7 @@ if [ "$MODE" = "install" ]; then if [ -z "$FORCE" ]; then vtwarn "$DISK already contains a Ventoy with version $version" vtwarn "Use -u option to do a safe upgrade operation." - vtwarn "OR if you really want to reinstall ventoy to $DISK, please use -I option." + vtwarn "OR if you really want to reinstall Ventoy to $DISK, please use -I option." vtwarn "" exit 1 fi @@ -299,6 +295,9 @@ if [ "$MODE" = "install" ]; then xzcat ./boot/core.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=2047 seek=1 fi + # check and umount + check_umount_disk "$DISK" + xzcat ./ventoy/ventoy.disk.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=$VENTOY_SECTOR_NUM seek=$part2_start_sector #test UUID @@ -317,10 +316,7 @@ if [ "$MODE" = "install" ]; then vtinfo "esp partition processing ..." sleep 1 - mtpnt=$(grep "^${PART2}" /proc/mounts | awk '{print $2}') - if [ -n "$mtpnt" ]; then - umount $mtpnt >/dev/null 2>&1 - fi + check_umount_disk "$DISK" if [ "$SECUREBOOT" != "YES" ]; then mkdir ./tmp_mnt @@ -332,10 +328,7 @@ if [ "$MODE" = "install" ]; then break fi - mtpnt=$(grep "^${PART2}" /proc/mounts | awk '{print $2}') - if [ -n "$mtpnt" ]; then - umount $mtpnt >/dev/null 2>&1 - fi + check_umount_disk "$DISK" sleep 2 done @@ -349,6 +342,8 @@ if [ "$MODE" = "install" ]; then mv ./tmp_mnt/EFI/BOOT/grubx64_real.efi ./tmp_mnt/EFI/BOOT/BOOTX64.EFI mv ./tmp_mnt/EFI/BOOT/grubia32_real.efi ./tmp_mnt/EFI/BOOT/BOOTIA32.EFI + sync + for tt in 1 2 3; do if umount ./tmp_mnt; then vtdebug "umount part2 success" @@ -366,15 +361,19 @@ if [ "$MODE" = "install" ]; then echo "" else - vtdebug "update ventoy ..." + vtdebug "update Ventoy ..." oldver=$(get_disk_ventoy_version $DISK) if [ $? -ne 0 ]; then - vtwarn "$DISK does not contain ventoy or data corupted" - echo "" - vtwarn "Please use -i option if you want to install ventoy to $DISK" - echo "" - exit 1 + if is_disk_contains_ventoy $DISK; then + oldver="Unknown" + else + vtwarn "$DISK does not contain Ventoy or data corrupted" + echo "" + vtwarn "Please use -i option if you want to install ventoy to $DISK" + echo "" + exit 1 + fi fi #reserve secure boot option @@ -439,15 +438,19 @@ else dd status=none conv=fsync if=./rsvdata.bin seek=2040 bs=512 count=8 of=${DISK} rm -f ./rsvdata.bin + check_umount_disk "$DISK" + xzcat ./ventoy/ventoy.disk.img.xz | dd status=none conv=fsync of=$DISK bs=512 count=$VENTOY_SECTOR_NUM seek=$part2_start sync - + if [ "$SECUREBOOT" != "YES" ]; then mkdir ./tmp_mnt vtdebug "mounting part2 ...." - for tt in 1 2 3 4 5; do + for tt in 1 2 3 4 5; do + check_umount_disk "$DISK" + if mount ${PART2} ./tmp_mnt > /dev/null 2>&1; then vtdebug "mounting part2 success" break @@ -467,6 +470,7 @@ else mv ./tmp_mnt/EFI/BOOT/grubx64_real.efi ./tmp_mnt/EFI/BOOT/BOOTX64.EFI mv ./tmp_mnt/EFI/BOOT/grubia32_real.efi ./tmp_mnt/EFI/BOOT/BOOTIA32.EFI + sync for tt in 1 2 3; do if umount ./tmp_mnt > /dev/null 2>&1; then @@ -481,7 +485,7 @@ else fi echo "" - vtinfo "Update Ventoy to $DISK successfully finished." + vtinfo "Update Ventoy on $DISK successfully finished." echo "" fi