X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/bf4e014023e6fd7b117b4f086fc0c190d46ecdcf..4707b76bb22e1ca60893bb6e9e79ac8331bf68b3:/INSTALL/tool/ventoy_lib.sh diff --git a/INSTALL/tool/ventoy_lib.sh b/INSTALL/tool/ventoy_lib.sh index f72d3fe..0e6f9b6 100644 --- a/INSTALL/tool/ventoy_lib.sh +++ b/INSTALL/tool/ventoy_lib.sh @@ -14,14 +14,6 @@ ventoy_true() { [ "1" = "1" ] } -ventoy_is_linux64() { - if uname -a | egrep -q 'x86_64|amd64'; then - ventoy_true - return - fi - - ventoy_false -} vtinfo() { echo -e "\033[32m$*\033[0m" @@ -40,17 +32,25 @@ vtdebug() { echo "$*" >> ./log.txt } -check_tool_work_ok() { - - if ventoy_is_linux64; then - vtdebug "This is linux 64" - mkexfatfs=mkexfatfs_64 - vtoyfat=vtoyfat_64 +vtoy_gen_uuid() { + if uuid -F BIN > /dev/null 2>&1; then + uuid -F BIN + elif uuidgen -V > /dev/null 2>&1; then + a=$(uuidgen | sed 's/-//g') + echo -en "\x${a:0:2}\x${a:2:2}\x${a:4:2}\x${a:6:2}\x${a:8:2}\x${a:10:2}\x${a:12:2}\x${a:14:2}\x${a:16:2}\x${a:18:2}\x${a:20:2}\x${a:22:2}\x${a:24:2}\x${a:26:2}\x${a:28:2}\x${a:30:2}" + elif python -V > /dev/null 2>&1; then + a=$(python -c 'import sys,uuid; sys.stdout.write(uuid.uuid4().hex)') + echo -en "\x${a:0:2}\x${a:2:2}\x${a:4:2}\x${a:6:2}\x${a:8:2}\x${a:10:2}\x${a:12:2}\x${a:14:2}\x${a:16:2}\x${a:18:2}\x${a:20:2}\x${a:22:2}\x${a:24:2}\x${a:26:2}\x${a:28:2}\x${a:30:2}" + elif [ -e /dev/urandom ]; then + dd if=/dev/urandom bs=1 count=16 status=none else - vtdebug "This is linux 32" - mkexfatfs=mkexfatfs_32 - vtoyfat=vtoyfat_32 + datestr=$(date +%N%N%N%N%N) + a=${datestr:0:32} + echo -en "\x${a:0:2}\x${a:2:2}\x${a:4:2}\x${a:6:2}\x${a:8:2}\x${a:10:2}\x${a:12:2}\x${a:14:2}\x${a:16:2}\x${a:18:2}\x${a:20:2}\x${a:22:2}\x${a:24:2}\x${a:26:2}\x${a:28:2}\x${a:30:2}" fi +} + +check_tool_work_ok() { if echo 1 | hexdump > /dev/null; then vtdebug "hexdump test ok ..." @@ -60,18 +60,18 @@ check_tool_work_ok() { return fi - if ./tool/$mkexfatfs -V > /dev/null; then - vtdebug "$mkexfatfs test ok ..." + if mkexfatfs -V > /dev/null; then + vtdebug "mkexfatfs test ok ..." else - vtdebug "$mkexfatfs test fail ..." + vtdebug "mkexfatfs test fail ..." ventoy_false return fi - if ./tool/$vtoyfat -T; then - vtdebug "$vtoyfat test ok ..." + if vtoyfat -T; then + vtdebug "vtoyfat test ok ..." else - vtdebug "$vtoyfat test fail ..." + vtdebug "vtoyfat test fail ..." ventoy_false return fi @@ -128,8 +128,8 @@ is_disk_contains_ventoy() { return fi - PART1_TYPE=$(dd if=$DISK bs=1 count=1 skip=450 status=none | ./tool/hexdump -n1 -e '1/1 "%02X"') - PART2_TYPE=$(dd if=$DISK bs=1 count=1 skip=466 status=none | ./tool/hexdump -n1 -e '1/1 "%02X"') + PART1_TYPE=$(dd if=$DISK bs=1 count=1 skip=450 status=none | hexdump -n1 -e '1/1 "%02X"') + PART2_TYPE=$(dd if=$DISK bs=1 count=1 skip=466 status=none | hexdump -n1 -e '1/1 "%02X"') # if [ "$PART1_TYPE" != "EE" ]; then # if [ "$PART2_TYPE" != "EF" ]; then @@ -139,7 +139,7 @@ is_disk_contains_ventoy() { # fi # fi - # PART1_TYPE=$(dd if=$DISK bs=1 count=1 skip=450 status=none | ./tool/hexdump -n1 -e '1/1 "%02X"') + # PART1_TYPE=$(dd if=$DISK bs=1 count=1 skip=450 status=none | hexdump -n1 -e '1/1 "%02X"') # if [ "$PART1_TYPE" != "07" ]; then # vtdebug "part1 type is $PART2_TYPE not 07" # ventoy_false @@ -165,8 +165,7 @@ is_disk_contains_ventoy() { ventoy_true } -get_disk_ventoy_version() { - +check_disk_secure_boot() { if ! is_disk_contains_ventoy $1; then ventoy_false return @@ -174,13 +173,19 @@ get_disk_ventoy_version() { PART2=$(get_disk_part_name $1 2) - if ventoy_is_linux64; then - cmd=./tool/vtoyfat_64 - else - cmd=./tool/vtoyfat_32 + vtoyfat -s $PART2 +} + +get_disk_ventoy_version() { + + if ! is_disk_contains_ventoy $1; then + ventoy_false + return fi - ParseVer=$($cmd $PART2) + PART2=$(get_disk_part_name $1 2) + + ParseVer=$(vtoyfat $PART2) if [ $? -eq 0 ]; then vtdebug "Ventoy version in $PART2 is $ParseVer" echo $ParseVer @@ -265,7 +270,7 @@ w EOF fi - udevadm trigger >/dev/null 2>&1 + udevadm trigger --name-match=$DISK >/dev/null 2>&1 partprobe >/dev/null 2>&1 sleep 3 echo "Done" @@ -342,27 +347,26 @@ format_ventoy_disk_gpt() { echo "Create partitions on $DISK by $PARTTOOL in GPT style ..." vtdebug "format disk by parted ..." + + if [ "$TOOLDIR" != "aarch64" ]; then + vt_set_efi_type="set 2 msftdata on" + fi + parted -a none --script $DISK \ mklabel gpt \ unit s \ mkpart Ventoy ntfs $part1_start_sector $part1_end_sector \ mkpart VTOYEFI fat16 $part2_start_sector $part2_end_sector \ - set 2 msftdata on \ + $vt_set_efi_type \ set 2 hidden on \ quit - + sync - if ventoy_is_linux64; then - vtoygpt=./tool/vtoygpt_64 - else - vtoygpt=./tool/vtoygpt_32 - fi - - $vtoygpt -f $DISK + vtoygpt -f $DISK sync - udevadm trigger >/dev/null 2>&1 + udevadm trigger --name-match=$DISK >/dev/null 2>&1 partprobe >/dev/null 2>&1 sleep 3 echo "Done"