X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/84c500666addc8378fb03c3844bf6d25faf54a87..a2d732c170ca63e51a16299ae23d1a1db14ca020:/INSTALL/tool/ventoy_lib.sh diff --git a/INSTALL/tool/ventoy_lib.sh b/INSTALL/tool/ventoy_lib.sh index 86317c7..69d3e1e 100644 --- a/INSTALL/tool/ventoy_lib.sh +++ b/INSTALL/tool/ventoy_lib.sh @@ -22,40 +22,17 @@ ventoy_is_linux64() { ventoy_false } -ventoy_is_dash() { - if [ -L /bin/sh ]; then - vtdst=$(readlink /bin/sh) - if [ "$vtdst" = "dash" ]; then - ventoy_true - return - fi - fi - ventoy_false -} - vtinfo() { - if ventoy_is_dash; then - echo "\033[32m$*\033[0m" - else - echo -e "\033[32m$*\033[0m" - fi + echo -e "\033[32m$*\033[0m" } vtwarn() { - if ventoy_is_dash; then - echo "\033[33m$*\033[0m" - else - echo -e "\033[33m$*\033[0m" - fi + echo -e "\033[33m$*\033[0m" } vterr() { - if ventoy_is_dash; then - echo "\033[31m$*\033[0m" - else - echo -e "\033[31m$*\033[0m" - fi + echo -e "\033[31m$*\033[0m" } vtdebug() { @@ -207,9 +184,9 @@ get_disk_ventoy_version() { ventoy_false } - format_ventoy_disk() { DISK=$1 + PART1=$(get_disk_part_name $DISK 1) PART2=$(get_disk_part_name $DISK 2) sector_num=$(cat /sys/block/${DISK#/dev/}/size) @@ -219,15 +196,30 @@ format_ventoy_disk() { export part2_start_sector=$(expr $part1_end_sector + 1) part2_end_sector=$(expr $sector_num - 1) + 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 $PART2 ]; then echo "delete $PART2" rm -f $PART2 fi echo "" - echo "Create partitions on $DISK ..." + echo "Create partitions on $DISK by $2 ..." + + if [ "$2" = "parted" ]; then + vtdebug "format disk by parted ..." + parted -a none --script $DISK \ + mklabel msdos \ + unit s \ + mkpart primary ntfs $part1_start_sector $part1_end_sector \ + mkpart primary fat16 $part2_start_sector $part2_end_sector \ + set 2 boot on \ + quit + else + vtdebug "format disk by fdisk ..." -fdisk $DISK >/dev/null 2>&1 <>./log.txt 2>&1 </dev/null 2>&1 partprobe >/dev/null 2>&1 sleep 3 - echo 'mkfs on disk partitions ...' - while ! [ -e $PART2 ]; do - echo "wait $PART2 ..." - sleep 1 + for i in 1 2 3 4 5 6 7; do + if [ -b $PART2 ]; then + break + else + echo "wait $PART2 ..." + sleep 1 + fi done + if [ "$2" = "parted" ]; then + echo -en '\xEF' | dd of=$DISK conv=fsync bs=1 count=1 seek=466 + 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 + fi + echo "create efi fat fs ..." for i in 0 1 2 3 4 5 6 7 8 9; do if mkfs.vfat -F 16 -n EFI $PART2; then