From 1840cb8f38f3ee14a50a5779ecbf7897f8f02bd9 Mon Sep 17 00:00:00 2001 From: longpanda Date: Sat, 6 Mar 2021 19:53:50 +0800 Subject: [PATCH] 1.0.37 release --- IMG/cpio/ventoy/hook/manjaro/ventoy-disk.sh | 6 +- IMG/mkcpio.sh | 10 +- INSTALL/README | 2 + INSTALL/Ventoy2Disk.sh | 2 + INSTALL/VentoyWeb.sh | 2 + INSTALL/VentoyWebDeepin.sh | 192 ++++++++++++++++++++ INSTALL/grub/grub.cfg | 2 +- INSTALL/ventoy_pack.sh | 6 + LANGUAGES/languages.ini | Bin 167790 -> 168074 bytes LinuxGUI/WebUI/index.html | 18 +- LinuxGUI/WebUI/static/img/VentoyLogo.png | Bin 0 -> 26480 bytes vtoyfat/fat_io_lib/buildlib.sh | 4 + 12 files changed, 232 insertions(+), 12 deletions(-) create mode 100644 INSTALL/VentoyWebDeepin.sh create mode 100644 LinuxGUI/WebUI/static/img/VentoyLogo.png diff --git a/IMG/cpio/ventoy/hook/manjaro/ventoy-disk.sh b/IMG/cpio/ventoy/hook/manjaro/ventoy-disk.sh index c1765376..e325eabf 100644 --- a/IMG/cpio/ventoy/hook/manjaro/ventoy-disk.sh +++ b/IMG/cpio/ventoy/hook/manjaro/ventoy-disk.sh @@ -59,7 +59,11 @@ else vtlog "vtLABEL is $vtLABEL from cmdline" fi - ln -s /dev/$vtDM "/dev/disk/by-label/$vtLABEL" + if [ -e "/dev/disk/by-label/$vtLABEL" ]; then + vtlog "/dev/disk/by-label/$vtLABEL already exist" + else + ln -s /dev/$vtDM "/dev/disk/by-label/$vtLABEL" + fi fi # OK finish diff --git a/IMG/mkcpio.sh b/IMG/mkcpio.sh index 5daded7f..0fc88baf 100644 --- a/IMG/mkcpio.sh +++ b/IMG/mkcpio.sh @@ -142,6 +142,12 @@ rm -rf cpio_tmp echo '======== SUCCESS =============' -rm -f $VENTOY_PATH/INSTALL/ventoy/ventoy*.cpio -cp -a ventoy*.cpio $VENTOY_PATH/INSTALL/ventoy/ +rm -f $VENTOY_PATH/INSTALL/ventoy/ventoy.cpio +rm -f $VENTOY_PATH/INSTALL/ventoy/ventoy_x86.cpio +rm -f $VENTOY_PATH/INSTALL/ventoy/ventoy_arm64.cpio +rm -f $VENTOY_PATH/INSTALL/ventoy/ventoy_mips64.cpio +cp -a ventoy.cpio $VENTOY_PATH/INSTALL/ventoy/ +cp -a ventoy_x86.cpio $VENTOY_PATH/INSTALL/ventoy/ +cp -a ventoy_arm64.cpio $VENTOY_PATH/INSTALL/ventoy/ +cp -a ventoy_mips64.cpio $VENTOY_PATH/INSTALL/ventoy/ diff --git a/INSTALL/README b/INSTALL/README index db836ce6..c90d1896 100644 --- a/INSTALL/README +++ b/INSTALL/README @@ -21,6 +21,8 @@ Please refer https://www.ventoy.net/en/doc_start.html for details. 1. sudo sh VentoyWeb.sh 2. open your browser and visit http://127.0.0.1:24680 +========== VentoyWebDeepin.sh =============== +1. sudo sh VentoyWebDeepin.sh ========== CreatePersistentImg.sh =============== diff --git a/INSTALL/Ventoy2Disk.sh b/INSTALL/Ventoy2Disk.sh index fb499a95..5b1d6f4c 100644 --- a/INSTALL/Ventoy2Disk.sh +++ b/INSTALL/Ventoy2Disk.sh @@ -16,6 +16,8 @@ if uname -m | egrep -q 'aarch64|arm64'; then export TOOLDIR=aarch64 elif uname -m | egrep -q 'x86_64|amd64'; then export TOOLDIR=x86_64 +elif uname -m | egrep -q 'mips64'; then + export TOOLDIR=mips64el else export TOOLDIR=i386 fi diff --git a/INSTALL/VentoyWeb.sh b/INSTALL/VentoyWeb.sh index 4c811e00..061120b8 100644 --- a/INSTALL/VentoyWeb.sh +++ b/INSTALL/VentoyWeb.sh @@ -27,6 +27,8 @@ if uname -m | egrep -q 'aarch64|arm64'; then TOOLDIR=aarch64 elif uname -m | egrep -q 'x86_64|amd64'; then TOOLDIR=x86_64 +elif uname -m | egrep -q 'mips64'; then + TOOLDIR=mips64el else TOOLDIR=i386 fi diff --git a/INSTALL/VentoyWebDeepin.sh b/INSTALL/VentoyWebDeepin.sh new file mode 100644 index 00000000..c17607e6 --- /dev/null +++ b/INSTALL/VentoyWebDeepin.sh @@ -0,0 +1,192 @@ +#!/bin/sh + +print_usage() { + echo 'Usage: VentoyWebDeepin.sh [ OPTION ]' + echo ' OPTION: (optional)' + echo ' -H x.x.x.x http server IP address (default is 127.0.0.1)' + echo ' -p PORT http server PORT (default is 24680)' + echo ' -h print this help' + echo '' +} + +print_err() { + echo "" + echo "$*" + echo "" +} + + +get_user() { + name=$(logname) + if [ -n "$name" -a "$name" != "root" ]; then + echo $name; return + fi + + name=${HOME#/home/} + if [ -n "$name" -a "$name" != "root" ]; then + echo $name; return + fi +} + + +uid=$(id -u) +if [ $uid -ne 0 ]; then + exec sudo sh $0 $* +fi + +OLDDIR=$(pwd) + +if uname -m | egrep -q 'aarch64|arm64'; then + TOOLDIR=aarch64 +elif uname -m | egrep -q 'x86_64|amd64'; then + TOOLDIR=x86_64 +elif uname -m | egrep -q 'mips64'; then + TOOLDIR=mips64el +else + TOOLDIR=i386 +fi + +if [ ! -f ./tool/$TOOLDIR/V2DServer ]; then + if [ -f ${0%VentoyWebDeepin.sh}/tool/$TOOLDIR/V2DServer ]; then + cd ${0%VentoyWebDeepin.sh} + fi +fi + +PATH=./tool/$TOOLDIR:$PATH + +if [ ! -f ./boot/boot.img ]; then + if [ -d ./grub ]; then + echo "Don't run VentoyWebDeepin.sh here, please download the released install package, and run the script in it." + else + echo "Please run under the correct directory!" + fi + exit 1 +fi + +HOST="127.0.0.1" +PORT=24680 + +while [ -n "$1" ]; do + if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then + print_usage + exit 0 + elif [ "$1" = "-H" ]; then + shift + if echo $1 | grep -q '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'; then + HOST="$1" + else + print_err "Invalid host $1" + exit 1 + fi + elif [ "$1" = "-p" ]; then + shift + if [ $1 -gt 0 -a $1 -le 65535 ]; then + PORT="$1" + else + print_err "Invalid port $1" + exit 1 + fi + fi + + shift +done + + +if ps -ef | grep "V2DServer.*$HOST.*$PORT" | grep -q -v grep; then + print_err "Another ventoy server is running now, please close it first." + exit 1 +fi + +VUSER=$(get_user) + +LOGFILE=log.txt +if [ -e $LOGFILE ]; then + chown $VUSER $LOGFILE +else + su $VUSER -c "touch $LOGFILE" +fi + +#delete the log.txt if it's more than 8MB +if [ -f $LOGFILE ]; then + logsize=$(stat -c '%s' $LOGFILE) + if [ $logsize -gt 8388608 ]; then + rm -f $LOGFILE + fi +fi + + +if [ -f ./tool/$TOOLDIR/V2DServer.xz ]; then + xz -d ./tool/$TOOLDIR/V2DServer.xz + chmod +x ./tool/$TOOLDIR/V2DServer +fi + +rm -rf ./*_VTMPDIR +vtWebTmpDir=$(mktemp -d -p ./ --suffix=_VTMPDIR) +chown $VUSER $vtWebTmpDir + + +V2DServer "$HOST" "$PORT" & +V2DPid=$! +sleep 1 + +su $VUSER -c "browser --window-size=550,400 --app=\"http://${HOST}:${PORT}/index.html?chrome-app\" --user-data-dir=$vtWebTmpDir >> $LOGFILE 2>&1" & +WebPid=$! + + +vtoy_trap_exit() { + + [ -d /proc/$V2DPid ] && kill -2 $V2DPid + [ -d /proc/$WebPid ] && kill -9 $WebPid + + while [ -n "1" ]; do + curPid=$(ps -ef | grep -m1 "$vtWebTmpDir" | egrep -v '\sgrep\s' | awk '{print $2}') + if [ -z "$curPid" ]; then + break + fi + + if [ -d /proc/$curPid ]; then + kill -9 $curPid + fi + done + + [ -d $vtWebTmpDir ] && rm -rf $vtWebTmpDir + + if [ -n "$OLDDIR" ]; then + CURDIR=$(pwd) + if [ "$CURDIR" != "$OLDDIR" ]; then + cd "$OLDDIR" + fi + fi + + exit 1 +} + +trap vtoy_trap_exit HUP INT QUIT TSTP +sleep 1 + + +vtVer=$(cat ventoy/version) +echo "" +echo "==================================================" +if [ "$LANG" = "zh_CN.UTF-8" ]; then + echo " Ventoy Server $vtVer 已经启动 ..." +else + echo " Ventoy Server $vtVer is running ..." +fi +echo "==================================================" +echo "" +echo "########### Press Ctrl + C to exit ###############" +echo "" + +wait $WebPid + +[ -d /proc/$V2DPid ] && kill -2 $V2DPid + +[ -d $vtWebTmpDir ] && rm -rf $vtWebTmpDir + +if [ -n "$OLDDIR" ]; then + CURDIR=$(pwd) + if [ "$CURDIR" != "$OLDDIR" ]; then + cd "$OLDDIR" + fi +fi diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index 3513df39..85a630a1 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -1584,7 +1584,7 @@ function img_unsupport_menuentry { ############################################################# ############################################################# -set VENTOY_VERSION="1.0.36" +set VENTOY_VERSION="1.0.37" #ACPI not compatible with Window7/8, so disable by default set VTOY_PARAM_NO_ACPI=1 diff --git a/INSTALL/ventoy_pack.sh b/INSTALL/ventoy_pack.sh index 8c2655c3..8a5ad705 100644 --- a/INSTALL/ventoy_pack.sh +++ b/INSTALL/ventoy_pack.sh @@ -94,11 +94,15 @@ cp $OPT ./tool $tmpdir/ rm -f $tmpdir/ENROLL_THIS_KEY_IN_MOKMANAGER.cer cp $OPT Ventoy2Disk.sh $tmpdir/ cp $OPT VentoyWeb.sh $tmpdir/ +cp $OPT VentoyWebDeepin.sh $tmpdir/ +#cp $OPT Ventoy.desktop $tmpdir/ cp $OPT README $tmpdir/ cp $OPT plugin $tmpdir/ cp $OPT CreatePersistentImg.sh $tmpdir/ dos2unix -q $tmpdir/Ventoy2Disk.sh dos2unix -q $tmpdir/VentoyWeb.sh +dos2unix -q $tmpdir/VentoyWebDeepin.sh +#dos2unix -q $tmpdir/Ventoy.desktop dos2unix -q $tmpdir/CreatePersistentImg.sh cp $OPT ../LinuxGUI/WebUI $tmpdir/ @@ -130,6 +134,8 @@ find $tmpdir/ -type d -exec chmod 755 "{}" + find $tmpdir/ -type f -exec chmod 644 "{}" + chmod +x $tmpdir/Ventoy2Disk.sh chmod +x $tmpdir/VentoyWeb.sh +chmod +x $tmpdir/VentoyWebDeepin.sh +#chmod +x $tmpdir/Ventoy.desktop chmod +x $tmpdir/CreatePersistentImg.sh tar -czvf ventoy-${curver}-linux.tar.gz $tmpdir diff --git a/LANGUAGES/languages.ini b/LANGUAGES/languages.ini index 091bc27c6ab4be30a1bb52ca74e74aba1c7fb6c2..fdf6949bba01f7a648eb637704909c1196665172 100644 GIT binary patch delta 2649 zcmaDikE?4T*M=#XlNV)5a91)YFcdSSG88eCPk;EFQFzjFt;u4UN}I*9co-QIH!Ehp zw9ocoNMy)kNM=Z7C}F5#P+%xvNMtBxP+&-8C}b#Q_{5;Ypums|HY1tgC0HhfA(cUa zp@booA%`KAA(HC}PNGNM|TwNMy)mNMul8NMVpv$eetBjkvS| zSa%UvH^}Da42fWybs2Id2SzJzzOi}*6JzP*#&wpHS=QBXmonrrWIzm`eD{zzdon{N zLq0>^bVETV{plOL8HFbA+vvCX$NF6?(+dI^g<$fN6VC`UCQqJdCp!7S0vpymhEj%{ z$@(9hCl_pOnBL&WB&7~=RRP#vAXiH&q%stP{SLA~fdS+`aL7$Qctv#bgj5MmSB7G+ zU(+ThZWo?>;jY!>2OD+xOBgc2zAORzF?BNk2KC7gPAN>z+hivVF*A)JkpbjKP#ESh zz|<}LB+8uw){_Y`ck;#!#!Qk5lLa>GaECFZGGsvlWpd(XalssTpqDTtGUPC1OkP+b zJh`A>3G5`019Fgjd%;PIIh7%2^2amMrl6qD1X}`%Fe8Q#aO8lz1&KJ2SMwS2Aa*e* zFt{@WFoaB2JgYr$^9C_FjA)oAj&Iu1s#rN%JL3Jf6apl~Q+C}YTE z0Er_KK1e$#DS$#Ib8_Ks+e}c@gDikX9s?-iTo@7=QWpFxj7eRJcU<=#3DECwv*EG8_bEY>XEED8*cED8(|F&h?B76%qP78@1? z1``G;7D1NDAI{oH$gy~^Sg;tfSg{y@l^e16vzW73uuOii(%mNBfkY{XI>{x8U zn(SB%!5%S!28JGk0)sq@9g7i*6N?>-1Jt_;4E8K`EcPtkEKV#|EY2(tzB!B8WWnFU zlLhvu_@FukFQz|07ePG-npI4L)M9}|-Vy8=TQ!)>|D$rm$RC4CsK%Yo8z zIzuKyA~+3$N`?J$1)wZ$i&GYy7eg3c%PBBafUAlm28i_~3>gd?81KsEF{DraxXdyP zzX_2HuNX=h6c~~jmdk-?LB_`n3Je(x`@voTnROS*bufS2l>^1RD}JM07*5N9JPq>f zQ#l2OY=#VmFARAM>EPORD>%%O89q;b=xS~$0Jb)nVXa&Ng95nfS_^eR5yL`|SHR($ z!SE2A?U4$R>1P?4#Dzibd@Bd4kQRbnTg;F+{o@u!aKy`_yF-vM5$cL0hP85eU=u{K zn7~jvd0~U<_Fr5~-*Tq!U}xmxv;b!hN0zYZiaAV*pxAW~VzFRxUSC*#1h700?wLujcG#$wK5%M!-o0V^4T6v0I|DEvUB56CN)@Yu9uK`$K$ OnhPr*CR8)s69xd+GAU{R delta 178 zcmeBL$n|a>*M=#X+*J%I42cXm40#NxlP6|MPd8e?C^6YUU1_pdrqX7yEFQ+qD%mgW zr^iiTWSeZU|J3GltCulNKCsqkQW4waABUbzp0hD(dWa>X(B?1eSFlW9_nwh!+FVAi z%?9>2*f;y^?ednlXE9}QU@>JeX0c;&V6kH{VX - +
@@ -580,11 +580,16 @@ } function ResizeWindow() { - //console.log(window.screen.width + ' [x1] ' + window.screen.height); + //console.log(window.screen.availWidth + ' [x1] ' + window.screen.availHeight); //console.log(vtoy_app_width + ' [x2] ' + vtoy_app_height); - //console.log((window.screen.width - vtoy_app_width) / 2 + ' [x3] ' + (window.screen.height - vtoy_app_height) / 2); - window.moveTo((window.screen.width - vtoy_app_width) / 2, (window.screen.height - vtoy_app_height) / 2); - window.resizeTo(vtoy_app_width, vtoy_app_height); + //console.log((window.screen.availWidth - vtoy_app_width) / 2 + ' [x3] ' + (window.screen.availHeight - vtoy_app_height) / 2); + + window.onresize = function() { }; + + window.resizeTo(vtoy_app_width, vtoy_app_height); + window.moveTo((window.screen.availWidth - vtoy_app_width) / 2, (window.screen.availHeight - vtoy_app_height) / 2); + + window.onresize = ResizeWindow; } function MoveMainDivToCenter() { @@ -1012,9 +1017,6 @@ $('#vtoy_part_align_4kb').prop("checked", true); if (vtoy_chrome_app_mode) { - window.onresize = function() { - ResizeWindow(); - } ResizeWindow(); } else { $('#vtoy_main_div').css("border", '2px solid #f4f4f4'); diff --git a/LinuxGUI/WebUI/static/img/VentoyLogo.png b/LinuxGUI/WebUI/static/img/VentoyLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..a13884a46f46860dd2591f92adc4b18333cddb85 GIT binary patch literal 26480 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 literal 0 HcmV?d00001 diff --git a/vtoyfat/fat_io_lib/buildlib.sh b/vtoyfat/fat_io_lib/buildlib.sh index 50b5fc91..eaab1197 100644 --- a/vtoyfat/fat_io_lib/buildlib.sh +++ b/vtoyfat/fat_io_lib/buildlib.sh @@ -27,6 +27,10 @@ ar -rc libfat_io_aa64.a *.o rm -f *.o +mips64el-linux-musl-gcc -mips64r2 -mabi=64 -O2 -D_FILE_OFFSET_BITS=64 fat*.c -c +ar -rc libfat_io_m64e.a *.o +rm -f *.o + cd -