mirror of
https://github.com/ventoy/Ventoy.git
synced 2025-04-16 15:35:19 +00:00
IA32 ARM64 support
This commit is contained in:
parent
2936666a78
commit
ebaa4d954a
1166
BUSYBOX/aarch64_hexdump.config
Normal file
1166
BUSYBOX/aarch64_hexdump.config
Normal file
File diff suppressed because it is too large
Load Diff
1166
BUSYBOX/aarch64_xzcat.config
Normal file
1166
BUSYBOX/aarch64_xzcat.config
Normal file
File diff suppressed because it is too large
Load Diff
20
BUSYBOX/build.txt
Normal file
20
BUSYBOX/build.txt
Normal file
@ -0,0 +1,20 @@
|
||||
======== Build busybox 1.32 for aarch64 ========
|
||||
|
||||
ARCH=arm64 CROSS_COMPILE=aarch64-linux- make defconfig
|
||||
ARCH=arm64 CROSS_COMPILE=aarch64-linux- make menuconfig
|
||||
----> enable static build
|
||||
----> enable ar
|
||||
----> enable inotifyd
|
||||
|
||||
|
||||
ARCH=arm64 CROSS_COMPILE=aarch64-linux- make
|
||||
|
||||
|
||||
|
||||
|
||||
ARCH=arm64 CROSS_COMPILE=aarch64-linux- make allnoconfig
|
||||
|
||||
|
||||
======== use mini-native-x86_64 uclibc to build ash/hexdump/busybox for x86_64 ==========
|
||||
|
||||
|
@ -2,17 +2,20 @@
|
||||
|
||||
DSTDIR=../../IMG/cpio/ventoy/busybox
|
||||
|
||||
rm -f vtchmod32 vtchmod64
|
||||
rm -f $DSTDIR/vtchmod32 $DSTDIR/vtchmod64
|
||||
rm -f vtchmod32 vtchmod64 vtchmodaa64
|
||||
rm -f $DSTDIR/vtchmod32 $DSTDIR/vtchmod64 $DSTDIR/vtchmodaa64
|
||||
|
||||
/opt/diet32/bin/diet gcc -Os -m32 vtchmod.c -o vtchmod32
|
||||
/opt/diet64/bin/diet gcc -Os vtchmod.c -o vtchmod64
|
||||
aarch64-linux-gcc -Os -static vtchmod.c -o vtchmodaa64
|
||||
aarch64-linux-strip --strip-all vtchmodaa64
|
||||
|
||||
|
||||
chmod 777 vtchmod32
|
||||
chmod 777 vtchmod64
|
||||
chmod 777 vtchmodaa64
|
||||
|
||||
cp -a vtchmod32 $DSTDIR/
|
||||
cp -a vtchmod64 $DSTDIR/
|
||||
|
||||
|
||||
cp -a vtchmodaa64 $DSTDIR/
|
||||
|
||||
|
BIN
BUSYBOX/chmod/vtchmodaa64
Normal file
BIN
BUSYBOX/chmod/vtchmodaa64
Normal file
Binary file not shown.
1181
BUSYBOX/config
Normal file
1181
BUSYBOX/config
Normal file
File diff suppressed because it is too large
Load Diff
1166
BUSYBOX/x86_64_ash.config
Normal file
1166
BUSYBOX/x86_64_ash.config
Normal file
File diff suppressed because it is too large
Load Diff
1166
BUSYBOX/x86_64_hexdump.config
Normal file
1166
BUSYBOX/x86_64_hexdump.config
Normal file
File diff suppressed because it is too large
Load Diff
1166
BUSYBOX/x86_64_xzcat.config
Normal file
1166
BUSYBOX/x86_64_xzcat.config
Normal file
File diff suppressed because it is too large
Load Diff
@ -47,3 +47,18 @@ https://www.uclibc.org/downloads/binaries/0.9.30.1/mini-native-x86_64.tar.bz2
|
||||
|
||||
|
||||
|
||||
|
||||
======================== Build for arm64 dmsetup =========================
|
||||
https://www.uclibc.org/downloads/binaries/0.9.30.1/mini-native-x86_64.tar.bz2
|
||||
1. extract device mapper source code
|
||||
2. ./configure CC=aarch64-linux-gcc --target=arm --host=x86_64-linux-gnu --disable-nls --disable-selinux --disable-shared --enable-static_link
|
||||
3. modify include/configure.h file
|
||||
--- delete the line with "#define malloc rpl_malloc"
|
||||
4. make
|
||||
5. aarch64-linux-strip dmsetup/dmsetup.static
|
||||
6. get dmsetup/dmsetup.static as the dmsetupaa64 binary file
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
BIN
DMSETUP/dmsetupaa64
Normal file
BIN
DMSETUP/dmsetupaa64
Normal file
Binary file not shown.
@ -31,7 +31,8 @@
|
||||
https://codeload.github.com/tianocore/edk2/zip/edk2-stable201911 ===> /home/Ventoy-master/EDK2/edk2-edk2-stable201911.zip
|
||||
https://codeload.github.com/relan/exfat/zip/v1.3.0 ===> /home/Ventoy-master/ExFAT/exfat-1.3.0.zip
|
||||
https://codeload.github.com/libfuse/libfuse/zip/fuse-2.9.9 ===> /home/Ventoy-master/ExFAT/libfuse-fuse-2.9.9.zip
|
||||
|
||||
https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/aarch64-linux-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz ===> /opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
|
||||
https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--stable-2020.08-1.tar.bz2 ===> /opt/aarch64--uclibc--stable-2020.08-1.tar.bz2
|
||||
|
||||
|
||||
==========================================
|
||||
@ -144,7 +145,7 @@
|
||||
4.18 IMG/cpio/ventoy/busybox/64h
|
||||
https://www.uclibc.org/downloads/binaries/0.9.30.1/mini-native-x86_64.tar.bz2
|
||||
https://busybox.net/downloads/busybox-1.32.0.tar.bz2
|
||||
use BUSYBOX/64h.config and uclibc to build busybox-1.32
|
||||
use BUSYBOX/x86_64_ash.config and uclibc to build busybox-1.32
|
||||
|
||||
4.19 == Build lunzip32/lunzip64 ==
|
||||
http://mirror.yongbok.net/nongnu/lzip/lunzip/lunzip-1.11.tar.gz
|
||||
@ -153,6 +154,11 @@
|
||||
make
|
||||
strip --strip-all lunzip
|
||||
|
||||
#aarch64
|
||||
./configure --disable-nls CC='aarch64-buildroot-linux-uclibc-gcc -static'
|
||||
make
|
||||
aarch64-buildroot-linux-uclibc-strip --strip-all lunzip
|
||||
|
||||
|
||||
|
||||
==========================================
|
||||
@ -181,11 +187,11 @@
|
||||
https://busybox.net/downloads/binaries/1.27.1-i686 busybox_XZ
|
||||
SHA-256: f6cdb6293680424c29b89bde0685ca27f455166c9b302cd6082ef90681456291
|
||||
|
||||
5.6 INSTALL/tool/xzcat
|
||||
5.6 INSTALL/tool/i386/xzcat
|
||||
https://busybox.net/downloads/binaries/1.30.0-i686/ busybox_XZCAT
|
||||
SHA-256: 7399db642c2beaf52a16ab5264ffc55cfd1ff5699a524f63e5d48edf84e20f44
|
||||
|
||||
5.7 INSTALL/tool/hexdump
|
||||
5.7 INSTALL/tool/i386/hexdump
|
||||
https://busybox.net/downloads/binaries/1.30.0-i686/ busybox_HEXDUMP
|
||||
SHA-256: cde08b6a2cf5ad914f05203e18e3f7c2ed6060a63604e3d75536f19b55e8e0af
|
||||
|
||||
|
@ -39,6 +39,7 @@
|
||||
BOOLEAN gDebugPrint = FALSE;
|
||||
BOOLEAN gDotEfiBoot = FALSE;
|
||||
BOOLEAN gLoadIsoEfi = FALSE;
|
||||
BOOLEAN gIsoUdf = FALSE;
|
||||
ventoy_ram_disk g_ramdisk_param;
|
||||
ventoy_chain_head *g_chain;
|
||||
ventoy_img_chunk *g_chunk;
|
||||
@ -56,6 +57,7 @@ ventoy_grub_param_file_replace *g_file_replace_list = NULL;
|
||||
ventoy_efi_file_replace g_efi_file_replace;
|
||||
|
||||
CONST CHAR16 gIso9660EfiDriverPath[] = ISO9660_EFI_DRIVER_PATH;
|
||||
CONST CHAR16 gUdfEfiDriverPath[] = UDF_EFI_DRIVER_PATH;
|
||||
|
||||
BOOLEAN g_fix_windows_1st_cdrom_issue = FALSE;
|
||||
|
||||
@ -69,10 +71,28 @@ CONST CHAR16 *gEfiBootFileName[] =
|
||||
{
|
||||
L"@",
|
||||
EFI_REMOVABLE_MEDIA_FILE_NAME,
|
||||
#if defined (MDE_CPU_IA32)
|
||||
L"\\EFI\\BOOT\\GRUBIA32.EFI",
|
||||
L"\\EFI\\BOOT\\BOOTia32.EFI",
|
||||
L"\\EFI\\BOOT\\bootia32.efi",
|
||||
L"\\efi\\boot\\bootia32.efi",
|
||||
#elif defined (MDE_CPU_X64)
|
||||
L"\\EFI\\BOOT\\GRUBX64.EFI",
|
||||
L"\\EFI\\BOOT\\BOOTx64.EFI",
|
||||
L"\\EFI\\BOOT\\bootx64.efi",
|
||||
L"\\efi\\boot\\bootx64.efi",
|
||||
#elif defined (MDE_CPU_ARM)
|
||||
L"\\EFI\\BOOT\\GRUBARM.EFI",
|
||||
L"\\EFI\\BOOT\\BOOTarm.EFI",
|
||||
L"\\EFI\\BOOT\\bootarm.efi",
|
||||
L"\\efi\\boot\\bootarm.efi",
|
||||
#elif defined (MDE_CPU_AARCH64)
|
||||
L"\\EFI\\BOOT\\GRUBAA64.EFI",
|
||||
L"\\EFI\\BOOT\\BOOTaa64.EFI",
|
||||
L"\\EFI\\BOOT\\bootaa64.efi",
|
||||
L"\\efi\\boot\\bootaa64.efi",
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
VOID EFIAPI VtoyDebug(IN CONST CHAR8 *Format, ...)
|
||||
@ -609,11 +629,22 @@ STATIC EFI_STATUS EFIAPI ventoy_load_isoefi_driver(IN EFI_HANDLE ImageHandle)
|
||||
EFI_STATUS Status = EFI_SUCCESS;
|
||||
CHAR16 LogVar[4] = L"5";
|
||||
|
||||
Status = ventoy_load_image(ImageHandle, gBlockData.pDiskFsDevPath,
|
||||
gIso9660EfiDriverPath,
|
||||
sizeof(gIso9660EfiDriverPath),
|
||||
&Image);
|
||||
debug("load iso efi driver status:%r", Status);
|
||||
if (gIsoUdf)
|
||||
{
|
||||
Status = ventoy_load_image(ImageHandle, gBlockData.pDiskFsDevPath,
|
||||
gUdfEfiDriverPath,
|
||||
sizeof(gUdfEfiDriverPath),
|
||||
&Image);
|
||||
debug("load iso UDF efi driver status:%r", Status);
|
||||
}
|
||||
else
|
||||
{
|
||||
Status = ventoy_load_image(ImageHandle, gBlockData.pDiskFsDevPath,
|
||||
gIso9660EfiDriverPath,
|
||||
sizeof(gIso9660EfiDriverPath),
|
||||
&Image);
|
||||
debug("load iso 9660 efi driver status:%r", Status);
|
||||
}
|
||||
|
||||
if (gDebugPrint)
|
||||
{
|
||||
@ -673,6 +704,11 @@ STATIC EFI_STATUS EFIAPI ventoy_parse_cmdline(IN EFI_HANDLE ImageHandle)
|
||||
gLoadIsoEfi = TRUE;
|
||||
}
|
||||
|
||||
if (StrStr(pCmdLine, L"iso_udf"))
|
||||
{
|
||||
gIsoUdf = TRUE;
|
||||
}
|
||||
|
||||
pPos = StrStr(pCmdLine, L"FirstTry=@");
|
||||
if (pPos)
|
||||
{
|
||||
|
@ -168,19 +168,26 @@ typedef struct ventoy_virt_chunk
|
||||
#define VTOY_BLOCK_DEVICE_PATH_GUID \
|
||||
{ 0x37b87ac6, 0xc180, 0x4583, { 0xa7, 0x05, 0x41, 0x4d, 0xa8, 0xf7, 0x7e, 0xd2 }}
|
||||
|
||||
#define ISO9660_EFI_DRIVER_PATH L"\\ventoy\\iso9660_x64.efi"
|
||||
|
||||
#define VTOY_BLOCK_DEVICE_PATH_NAME L"ventoy"
|
||||
|
||||
#if defined (MDE_CPU_IA32)
|
||||
#define VENTOY_UEFI_DESC L"IA32 UEFI"
|
||||
#define ISO9660_EFI_DRIVER_PATH L"\\ventoy\\iso9660_ia32.efi"
|
||||
#define UDF_EFI_DRIVER_PATH L"\\ventoy\\udf_ia32.efi"
|
||||
#elif defined (MDE_CPU_X64)
|
||||
#define VENTOY_UEFI_DESC L"X64 UEFI"
|
||||
#define ISO9660_EFI_DRIVER_PATH L"\\ventoy\\iso9660_x64.efi"
|
||||
#define UDF_EFI_DRIVER_PATH L"\\ventoy\\udf_x64.efi"
|
||||
#elif defined (MDE_CPU_EBC)
|
||||
#elif defined (MDE_CPU_ARM)
|
||||
#define VENTOY_UEFI_DESC L"ARM UEFI"
|
||||
#define ISO9660_EFI_DRIVER_PATH L"\\ventoy\\iso9660_arm.efi"
|
||||
#define UDF_EFI_DRIVER_PATH L"\\ventoy\\udf_arm.efi"
|
||||
#elif defined (MDE_CPU_AARCH64)
|
||||
#define VENTOY_UEFI_DESC L"ARM64 UEFI"
|
||||
#define ISO9660_EFI_DRIVER_PATH L"\\ventoy\\iso9660_aa64.efi"
|
||||
#define UDF_EFI_DRIVER_PATH L"\\ventoy\\udf_aa64.efi"
|
||||
#else
|
||||
#error Unknown Processor Type
|
||||
#endif
|
||||
|
@ -161,10 +161,19 @@ STATIC EFI_STATUS EFIAPI ventoy_read_iso_sector
|
||||
{
|
||||
MapLba = (Sector - pchunk->img_start_sector) * 4 + pchunk->disk_start_sector;
|
||||
}
|
||||
else
|
||||
else if (g_chain->disk_sector_size == 1024)
|
||||
{
|
||||
MapLba = (Sector - pchunk->img_start_sector) * 2048 / g_chain->disk_sector_size + pchunk->disk_start_sector;
|
||||
MapLba = (Sector - pchunk->img_start_sector) * 2 + pchunk->disk_start_sector;
|
||||
}
|
||||
else if (g_chain->disk_sector_size == 2048)
|
||||
{
|
||||
MapLba = (Sector - pchunk->img_start_sector) + pchunk->disk_start_sector;
|
||||
}
|
||||
else if (g_chain->disk_sector_size == 4096)
|
||||
{
|
||||
MapLba = ((Sector - pchunk->img_start_sector) >> 1) + pchunk->disk_start_sector;
|
||||
}
|
||||
|
||||
|
||||
secLeft = pchunk->img_end_sector + 1 - Sector;
|
||||
secRead = (Count < secLeft) ? Count : secLeft;
|
||||
@ -277,10 +286,19 @@ STATIC EFI_STATUS EFIAPI ventoy_write_iso_sector
|
||||
{
|
||||
MapLba = (Sector - pchunk->img_start_sector) * 4 + pchunk->disk_start_sector;
|
||||
}
|
||||
else
|
||||
else if (g_chain->disk_sector_size == 1024)
|
||||
{
|
||||
MapLba = (Sector - pchunk->img_start_sector) * 2048 / g_chain->disk_sector_size + pchunk->disk_start_sector;
|
||||
MapLba = (Sector - pchunk->img_start_sector) * 2 + pchunk->disk_start_sector;
|
||||
}
|
||||
else if (g_chain->disk_sector_size == 2048)
|
||||
{
|
||||
MapLba = (Sector - pchunk->img_start_sector) + pchunk->disk_start_sector;
|
||||
}
|
||||
else if (g_chain->disk_sector_size == 4096)
|
||||
{
|
||||
MapLba = ((Sector - pchunk->img_start_sector) >> 1) + pchunk->disk_start_sector;
|
||||
}
|
||||
|
||||
|
||||
secLeft = pchunk->img_end_sector + 1 - Sector;
|
||||
secRead = (Count < secLeft) ? Count : secLeft;
|
||||
|
@ -79,6 +79,14 @@ STATIC EFI_STATUS ParseCmdline(IN EFI_HANDLE ImageHandle)
|
||||
SetMem(pCmdLine, pImageInfo->LoadOptionsSize + 4, 0);
|
||||
CopyMem(pCmdLine, pImageInfo->LoadOptions, pImageInfo->LoadOptionsSize);
|
||||
|
||||
if (StrStr(pCmdLine, L"vtoyefitest"))
|
||||
{
|
||||
gST->ConOut->OutputString(gST->ConOut, L"\r\n##########################");
|
||||
gST->ConOut->OutputString(gST->ConOut, L"\r\n######### VTOY #########");
|
||||
gST->ConOut->OutputString(gST->ConOut, L"\r\n##########################");
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
if (StrStr(pCmdLine, L"debug"))
|
||||
{
|
||||
gVtoyDebugPrint = TRUE;
|
||||
@ -102,6 +110,7 @@ STATIC EFI_STATUS ParseCmdline(IN EFI_HANDLE ImageHandle)
|
||||
gCurFeature = pPos + StrLen(L"feature=");
|
||||
|
||||
gCmdLine = pCmdLine;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
@ -116,7 +125,7 @@ EFI_STATUS EFIAPI VtoyUtilEfiMain
|
||||
|
||||
ParseCmdline(ImageHandle);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(gFeatureList); i++)
|
||||
for (i = 0; gCurFeature && i < ARRAY_SIZE(gFeatureList); i++)
|
||||
{
|
||||
Len = StrLen(gFeatureList[i].Cmd);
|
||||
if (StrnCmp(gFeatureList[i].Cmd, gCurFeature, Len) == 0)
|
||||
@ -127,8 +136,11 @@ EFI_STATUS EFIAPI VtoyUtilEfiMain
|
||||
}
|
||||
}
|
||||
|
||||
FreePool(gCmdLine);
|
||||
gCmdLine = NULL;
|
||||
if (gCmdLine)
|
||||
{
|
||||
FreePool(gCmdLine);
|
||||
gCmdLine = NULL;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
32
ExFAT/buidexfat_aarch64.sh
Normal file
32
ExFAT/buidexfat_aarch64.sh
Normal file
@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
CUR="$PWD"
|
||||
|
||||
if ! [ -e LIBFUSE ]; then
|
||||
./buidlibfuse.sh
|
||||
fi
|
||||
|
||||
rm -f EXFAT/shared/*
|
||||
|
||||
|
||||
rm -rf exfat-1.3.0
|
||||
unzip exfat-1.3.0.zip
|
||||
sed "/printf.*VERSION/a\ if (access(\"/etc/initrd-release\", F_OK) >= 0) argv[0][0] = '@';" -i exfat-1.3.0/fuse/main.c
|
||||
|
||||
cd exfat-1.3.0
|
||||
autoreconf --install
|
||||
./configure --prefix="$CUR" CFLAGS='-O2 -D_FILE_OFFSET_BITS=64' FUSE_CFLAGS="-I$CUR/LIBFUSE/include/" FUSE_LIBS="$CUR/LIBFUSE/lib/libfuse.a -lpthread -ldl"
|
||||
make
|
||||
|
||||
strip --strip-all fuse/mount.exfat-fuse
|
||||
strip --strip-all mkfs/mkexfatfs
|
||||
|
||||
cp fuse/mount.exfat-fuse ../EXFAT/shared/mount.exfat-fuse
|
||||
cp mkfs/mkexfatfs ../EXFAT/shared/mkexfatfs
|
||||
|
||||
cd ..
|
||||
rm -rf exfat-1.3.0
|
||||
|
||||
|
||||
|
||||
|
29
ExFAT/buidlibfuse_aarch64.sh
Normal file
29
ExFAT/buidlibfuse_aarch64.sh
Normal file
@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
CUR="$PWD"
|
||||
|
||||
rm -rf libfuse
|
||||
rm -rf LIBFUSE
|
||||
|
||||
if [ -e mirrors-libfuse-fuse-2.9.9.zip ]; then
|
||||
unzip mirrors-libfuse-fuse-2.9.9.zip
|
||||
cd libfuse
|
||||
else
|
||||
unzip libfuse-fuse-2.9.9.zip
|
||||
cd libfuse-fuse-2.9.9
|
||||
fi
|
||||
|
||||
./makeconf.sh
|
||||
|
||||
./configure --prefix="$CUR/LIBFUSE"
|
||||
|
||||
sed '/#define *__u64/d' -i include/fuse_kernel.h
|
||||
sed '/#define *__s64/d' -i include/fuse_kernel.h
|
||||
|
||||
sed 's/__u64/uint64_t/g' -i include/fuse_kernel.h
|
||||
sed 's/__s64/int64_t/g' -i include/fuse_kernel.h
|
||||
|
||||
make -j 16
|
||||
make install
|
||||
cd ..
|
||||
rm -rf libfuse
|
@ -11,6 +11,10 @@ else
|
||||
opt=-lrt
|
||||
fi
|
||||
|
||||
#
|
||||
# use mini-native-x86_64 UCLIBC to build for x86_64
|
||||
#
|
||||
|
||||
export C_INCLUDE_PATH=$LIBFUSE_DIR/include
|
||||
|
||||
rm -f $name
|
||||
|
21
FUSEISO/build_aarch64.sh
Normal file
21
FUSEISO/build_aarch64.sh
Normal file
@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
CUR="$PWD"
|
||||
|
||||
LIBFUSE_DIR=$CUR/LIBFUSE
|
||||
|
||||
name=vtoy_fuse_iso_aa64
|
||||
|
||||
export C_INCLUDE_PATH=$LIBFUSE_DIR/include
|
||||
|
||||
rm -f $name
|
||||
aarch64-buildroot-linux-uclibc-gcc -static -O2 -D_FILE_OFFSET_BITS=64 vtoy_fuse_iso.c -o $name $LIBFUSE_DIR/lib/libfuse.a
|
||||
|
||||
if [ -e $name ]; then
|
||||
echo -e "\n############### SUCCESS $name ##################\n"
|
||||
else
|
||||
echo -e "\n############### FAILED $name ##################\n"
|
||||
fi
|
||||
|
||||
aarch64-buildroot-linux-uclibc-strip --strip-all $name
|
||||
|
@ -7,6 +7,8 @@
|
||||
#
|
||||
#
|
||||
|
||||
# use mini-native-x86_64 UCLIBC to build for x86_64
|
||||
|
||||
|
||||
CUR="$PWD"
|
||||
LIBFUSE_DIR=$CUR/LIBFUSE
|
||||
|
46
FUSEISO/build_libfuse_aarch64.sh
Normal file
46
FUSEISO/build_libfuse_aarch64.sh
Normal file
@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
#
|
||||
# Package Dependency:
|
||||
# gcc automake autoconf gettext gettext-devel libtool unzip
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
CUR="$PWD"
|
||||
LIBFUSE_DIR=$CUR/LIBFUSE
|
||||
|
||||
rm -rf libfuse
|
||||
rm -rf $LIBFUSE_DIR
|
||||
|
||||
# please download https://codeload.github.com/libfuse/libfuse/zip/fuse-2.9.9
|
||||
if [ -e ../ExFAT/mirrors-libfuse-fuse-2.9.9.zip ]; then
|
||||
rm -rf libfuse
|
||||
unzip ../ExFAT/mirrors-libfuse-fuse-2.9.9.zip
|
||||
cd libfuse
|
||||
elif [ -e ../ExFAT/libfuse-fuse-2.9.9.zip ]; then
|
||||
rm -rf libfuse-fuse-2.9.9
|
||||
unzip ../ExFAT/libfuse-fuse-2.9.9.zip
|
||||
cd libfuse-fuse-2.9.9
|
||||
else
|
||||
echo "Please download mirrors-libfuse-fuse-2.9.9.zip first"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
./makeconf.sh
|
||||
|
||||
sed '/#define *__u64/d' -i include/fuse_kernel.h
|
||||
sed '/#define *__s64/d' -i include/fuse_kernel.h
|
||||
|
||||
sed 's/__u64/uint64_t/g' -i include/fuse_kernel.h
|
||||
sed 's/__s64/int64_t/g' -i include/fuse_kernel.h
|
||||
|
||||
./configure --prefix="$LIBFUSE_DIR" --host=aarch64 CC=aarch64-buildroot-linux-uclibc-gcc
|
||||
|
||||
|
||||
make -j 16
|
||||
make install
|
||||
cd ..
|
||||
rm -rf libfuse
|
BIN
FUSEISO/vtoy_fuse_iso_aa64
Normal file
BIN
FUSEISO/vtoy_fuse_iso_aa64
Normal file
Binary file not shown.
@ -41,7 +41,6 @@
|
||||
#include <grub/time.h>
|
||||
#include <grub/video.h>
|
||||
#include <grub/acpi.h>
|
||||
#include <grub/relocator.h>
|
||||
#include <grub/charset.h>
|
||||
#include <grub/ventoy.h>
|
||||
#include "ventoy_def.h"
|
||||
@ -97,6 +96,7 @@ char *g_wimiso_path = NULL;
|
||||
int g_vhdboot_enable = 0;
|
||||
|
||||
grub_uint64_t g_conf_replace_offset = 0;
|
||||
grub_uint64_t g_svd_replace_offset = 0;
|
||||
conf_replace *g_conf_replace_node = NULL;
|
||||
grub_uint8_t *g_conf_replace_new_buf = NULL;
|
||||
int g_conf_replace_new_len = 0;
|
||||
@ -446,8 +446,8 @@ static grub_err_t ventoy_cmd_break(grub_extcmd_context_t ctxt, int argc, char **
|
||||
grub_printf(" 03/13: hook / (+cat log)\r\n");
|
||||
grub_printf("\r\n");
|
||||
grub_printf(" debug:\r\n");
|
||||
grub_printf(" 0: debug is on\r\n");
|
||||
grub_printf(" 1: debug is off\r\n");
|
||||
grub_printf(" 0: debug is off\r\n");
|
||||
grub_printf(" 1: debug is on\r\n");
|
||||
grub_printf("\r\n");
|
||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||
}
|
||||
@ -1651,7 +1651,7 @@ int ventoy_check_device(grub_device_t dev)
|
||||
|
||||
if (0 == ventoy_check_file_exist("(%s,2)/ventoy/ventoy.cpio", dev->disk->name) ||
|
||||
0 == ventoy_check_file_exist("(%s,2)/grub/localboot.cfg", dev->disk->name) ||
|
||||
0 == ventoy_check_file_exist("(%s,2)/tool/mount.exfat-fuse_64", dev->disk->name))
|
||||
0 == ventoy_check_file_exist("(%s,2)/tool/mount.exfat-fuse_aarch64", dev->disk->name))
|
||||
{
|
||||
return ventoy_check_device_result(2 | 0x1000);
|
||||
}
|
||||
@ -2057,6 +2057,8 @@ static grub_err_t ventoy_cmd_chosen_img_path(grub_extcmd_context_t ctxt, int arg
|
||||
grub_env_set(args[1], value);
|
||||
}
|
||||
|
||||
g_svd_replace_offset = 0;
|
||||
|
||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||
}
|
||||
|
||||
@ -2607,67 +2609,6 @@ static grub_err_t ventoy_cmd_dump_img_sector(grub_extcmd_context_t ctxt, int arg
|
||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||
}
|
||||
|
||||
#ifdef GRUB_MACHINE_EFI
|
||||
static grub_err_t ventoy_cmd_relocator_chaindata(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
(void)ctxt;
|
||||
(void)argc;
|
||||
(void)args;
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static grub_err_t ventoy_cmd_relocator_chaindata(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
int rc = 0;
|
||||
ulong chain_len = 0;
|
||||
char *chain_data = NULL;
|
||||
char *relocator_addr = NULL;
|
||||
grub_relocator_chunk_t ch;
|
||||
struct grub_relocator *relocator = NULL;
|
||||
char envbuf[64] = { 0 };
|
||||
|
||||
(void)ctxt;
|
||||
(void)argc;
|
||||
(void)args;
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
chain_data = (char *)grub_strtoul(args[0], NULL, 16);
|
||||
chain_len = grub_strtoul(args[1], NULL, 10);
|
||||
|
||||
relocator = grub_relocator_new ();
|
||||
if (!relocator)
|
||||
{
|
||||
debug("grub_relocator_new failed %p %lu\n", chain_data, chain_len);
|
||||
return 1;
|
||||
}
|
||||
|
||||
rc = grub_relocator_alloc_chunk_addr (relocator, &ch,
|
||||
0x100000, // GRUB_LINUX_BZIMAGE_ADDR,
|
||||
chain_len);
|
||||
if (rc)
|
||||
{
|
||||
debug("grub_relocator_alloc_chunk_addr failed %d %p %lu\n", rc, chain_data, chain_len);
|
||||
grub_relocator_unload (relocator);
|
||||
return 1;
|
||||
}
|
||||
|
||||
relocator_addr = get_virtual_current_address(ch);
|
||||
|
||||
grub_memcpy(relocator_addr, chain_data, chain_len);
|
||||
|
||||
grub_relocator_unload (relocator);
|
||||
|
||||
grub_snprintf(envbuf, sizeof(envbuf), "0x%lx", (unsigned long)relocator_addr);
|
||||
grub_env_set("vtoy_chain_relocator_addr", envbuf);
|
||||
|
||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||
}
|
||||
#endif
|
||||
|
||||
static grub_err_t ventoy_cmd_test_block_list(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
grub_uint32_t i;
|
||||
@ -3926,6 +3867,7 @@ static cmd_para ventoy_cmds[] =
|
||||
{ "vt_raw_chain_data", ventoy_cmd_raw_chain_data, 0, NULL, "", "", NULL },
|
||||
{ "vt_get_vtoy_type", ventoy_cmd_get_vtoy_type, 0, NULL, "", "", NULL },
|
||||
|
||||
{ "vt_skip_svd", ventoy_cmd_skip_svd, 0, NULL, "", "", NULL },
|
||||
{ "vt_cpio_busybox64", ventoy_cmd_cpio_busybox_64, 0, NULL, "", "", NULL },
|
||||
{ "vt_load_cpio", ventoy_cmd_load_cpio, 0, NULL, "", "", NULL },
|
||||
{ "vt_trailer_cpio", ventoy_cmd_trailer_cpio, 0, NULL, "", "", NULL },
|
||||
@ -3983,13 +3925,13 @@ static cmd_para ventoy_cmds[] =
|
||||
{ "vt_wim_chain_data", ventoy_cmd_wim_chain_data, 0, NULL, "", "", NULL },
|
||||
|
||||
{ "vt_add_replace_file", ventoy_cmd_add_replace_file, 0, NULL, "", "", NULL },
|
||||
{ "vt_relocator_chaindata", ventoy_cmd_relocator_chaindata, 0, NULL, "", "", NULL },
|
||||
{ "vt_test_block_list", ventoy_cmd_test_block_list, 0, NULL, "", "", NULL },
|
||||
{ "vt_file_exist_nocase", ventoy_cmd_file_exist_nocase, 0, NULL, "", "", NULL },
|
||||
|
||||
|
||||
{ "vt_load_plugin", ventoy_cmd_load_plugin, 0, NULL, "", "", NULL },
|
||||
{ "vt_check_plugin_json", ventoy_cmd_plugin_check_json, 0, NULL, "", "", NULL },
|
||||
{ "vt_check_password", ventoy_cmd_check_password, 0, NULL, "", "", NULL },
|
||||
|
||||
{ "vt_1st_line", ventoy_cmd_read_1st_line, 0, NULL, "", "", NULL },
|
||||
{ "vt_file_strstr", ventoy_cmd_file_strstr, 0, NULL, "", "", NULL },
|
||||
@ -4020,6 +3962,23 @@ GRUB_MOD_INIT(ventoy)
|
||||
|
||||
ventoy_env_init();
|
||||
|
||||
#ifdef GRUB_MACHINE_EFI
|
||||
if (grub_strcmp(GRUB_TARGET_CPU, "i386") == 0)
|
||||
{
|
||||
grub_snprintf(g_arch_mode_suffix, sizeof(g_arch_mode_suffix), "%s", "ia32");
|
||||
}
|
||||
else if (grub_strcmp(GRUB_TARGET_CPU, "arm64") == 0)
|
||||
{
|
||||
grub_snprintf(g_arch_mode_suffix, sizeof(g_arch_mode_suffix), "%s", "aa64");
|
||||
}
|
||||
else
|
||||
{
|
||||
grub_snprintf(g_arch_mode_suffix, sizeof(g_arch_mode_suffix), "%s", "uefi");
|
||||
}
|
||||
#else
|
||||
grub_snprintf(g_arch_mode_suffix, sizeof(g_arch_mode_suffix), "%s", "legacy");
|
||||
#endif
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(ventoy_cmds); i++)
|
||||
{
|
||||
cur = ventoy_cmds + i;
|
||||
|
@ -52,11 +52,14 @@
|
||||
|
||||
#define VTOY_WARNING "!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!"
|
||||
|
||||
#ifdef GRUB_MACHINE_EFI
|
||||
#define VTOY_DUAL_MODE_SUFFIX "uefi"
|
||||
#else
|
||||
#define VTOY_DUAL_MODE_SUFFIX "legacy"
|
||||
#endif
|
||||
#define VTOY_PWD_CORRUPTED(err) \
|
||||
{\
|
||||
grub_printf("\n\n Password corrupted, will reboot after 5 seconds.\n\n"); \
|
||||
grub_refresh(); \
|
||||
grub_sleep(5); \
|
||||
grub_exit(); \
|
||||
return (err);\
|
||||
}
|
||||
|
||||
typedef struct ventoy_initrd_ctx
|
||||
{
|
||||
@ -245,6 +248,7 @@ extern ventoy_guid g_ventoy_guid;
|
||||
extern ventoy_img_chunk_list g_img_chunk_list;
|
||||
extern ventoy_img_chunk_list g_wimiso_chunk_list;
|
||||
extern char *g_wimiso_path;
|
||||
extern char g_arch_mode_suffix[64];
|
||||
|
||||
extern int g_ventoy_debug;
|
||||
void ventoy_debug(const char *fmt, ...);
|
||||
@ -496,6 +500,7 @@ grub_err_t ventoy_cmd_linux_locate_initrd(grub_extcmd_context_t ctxt, int argc,
|
||||
grub_err_t ventoy_cmd_initrd_count(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_valid_initrd_count(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_load_cpio(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_skip_svd(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_cpio_busybox_64(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_trailer_cpio(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
int ventoy_cpio_newc_fill_head(void *buf, int filesize, const void *filedata, const char *name);
|
||||
@ -825,6 +830,15 @@ typedef struct image_list
|
||||
struct image_list *next;
|
||||
}image_list;
|
||||
|
||||
typedef struct vtoy_password
|
||||
{
|
||||
int pathlen;
|
||||
char isopath[256];
|
||||
grub_uint8_t sha256[32];
|
||||
|
||||
struct vtoy_password *next;
|
||||
}vtoy_password;
|
||||
|
||||
extern int g_ventoy_menu_esc;
|
||||
extern int g_ventoy_suppress_esc;
|
||||
extern int g_ventoy_last_entry;
|
||||
@ -837,6 +851,7 @@ extern int g_vhdboot_enable;
|
||||
extern int g_plugin_image_list;
|
||||
extern ventoy_gpt_info *g_ventoy_part_info;
|
||||
extern grub_uint64_t g_conf_replace_offset;
|
||||
extern grub_uint64_t g_svd_replace_offset;
|
||||
extern conf_replace *g_conf_replace_node;
|
||||
extern grub_uint8_t *g_conf_replace_new_buf;
|
||||
extern int g_conf_replace_new_len;
|
||||
@ -880,6 +895,7 @@ int ventoy_get_block_list(grub_file_t file, ventoy_img_chunk_list *chunklist, gr
|
||||
int ventoy_check_block_list(grub_file_t file, ventoy_img_chunk_list *chunklist, grub_disk_addr_t start);
|
||||
void ventoy_plugin_dump_persistence(void);
|
||||
grub_err_t ventoy_cmd_plugin_check_json(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_check_password(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_linux_get_main_initrd_index(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_collect_wim_patch(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_wim_patch_count(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
@ -898,6 +914,7 @@ grub_err_t ventoy_cmd_load_vhdboot(grub_extcmd_context_t ctxt, int argc, char **
|
||||
grub_err_t ventoy_cmd_patch_vhdboot(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_raw_chain_data(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
grub_err_t ventoy_cmd_get_vtoy_type(grub_extcmd_context_t ctxt, int argc, char **args);
|
||||
int ventoy_check_password(const grub_uint8_t *pwdsha256, int retry);
|
||||
|
||||
#endif /* __VENTOY_DEF_H__ */
|
||||
|
||||
|
@ -741,6 +741,11 @@ static grub_uint32_t ventoy_linux_get_override_chunk_count(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
if (g_svd_replace_offset > 0)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
@ -753,6 +758,11 @@ static grub_uint32_t ventoy_linux_get_override_chunk_size(void)
|
||||
count++;
|
||||
}
|
||||
|
||||
if (g_svd_replace_offset > 0)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
|
||||
return sizeof(ventoy_override_chunk) * count;
|
||||
}
|
||||
|
||||
@ -829,6 +839,14 @@ static void ventoy_linux_fill_override_data( grub_uint64_t isosize, void *ove
|
||||
cur++;
|
||||
}
|
||||
|
||||
if (g_svd_replace_offset > 0)
|
||||
{
|
||||
cur->img_offset = g_svd_replace_offset;
|
||||
cur->override_size = 1;
|
||||
cur->override_data[0] = 0xFF;
|
||||
cur++;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -995,12 +1013,15 @@ grub_err_t ventoy_cmd_linux_locate_initrd(grub_extcmd_context_t ctxt, int argc,
|
||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||
}
|
||||
|
||||
static int ventoy_cpio_busybox64(cpio_newc_header *head)
|
||||
static int ventoy_cpio_busybox64(cpio_newc_header *head, const char *file)
|
||||
{
|
||||
char *name;
|
||||
int namelen;
|
||||
int offset;
|
||||
int count = 0;
|
||||
char filepath[128];
|
||||
|
||||
grub_snprintf(filepath, sizeof(filepath), "ventoy/busybox/%s", file);
|
||||
|
||||
name = (char *)(head + 1);
|
||||
while (name[0] && count < 2)
|
||||
@ -1010,7 +1031,7 @@ static int ventoy_cpio_busybox64(cpio_newc_header *head)
|
||||
grub_memcpy(name, "ventoy/busybox/32h", 18);
|
||||
count++;
|
||||
}
|
||||
else if (grub_strcmp(name, "ventoy/busybox/64h") == 0)
|
||||
else if (grub_strcmp(name, filepath) == 0)
|
||||
{
|
||||
grub_memcpy(name, "ventoy/busybox/ash", 18);
|
||||
count++;
|
||||
@ -1037,10 +1058,48 @@ grub_err_t ventoy_cmd_cpio_busybox_64(grub_extcmd_context_t ctxt, int argc, char
|
||||
(void)args;
|
||||
|
||||
debug("ventoy_cmd_busybox_64 %d\n", argc);
|
||||
ventoy_cpio_busybox64((cpio_newc_header *)g_ventoy_cpio_buf);
|
||||
ventoy_cpio_busybox64((cpio_newc_header *)g_ventoy_cpio_buf, args[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
grub_err_t ventoy_cmd_skip_svd(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
int i;
|
||||
grub_file_t file;
|
||||
char buf[16];
|
||||
|
||||
(void)ctxt;
|
||||
(void)argc;
|
||||
|
||||
file = ventoy_grub_file_open(VENTOY_FILE_TYPE, "%s", args[0]);
|
||||
if (!file)
|
||||
{
|
||||
return grub_error(GRUB_ERR_BAD_ARGUMENT, "Can't open file %s\n", args[0]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
buf[0] = 0;
|
||||
grub_file_seek(file, (17 + i) * 2048);
|
||||
grub_file_read(file, buf, 16);
|
||||
|
||||
if (buf[0] == 2 && grub_strncmp(buf + 1, "CD001", 5) == 0)
|
||||
{
|
||||
debug("Find SVD at VD %d\n", i);
|
||||
g_svd_replace_offset = (17 + i) * 2048;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i >= 10)
|
||||
{
|
||||
debug("SVD not found %d\n", (int)g_svd_replace_offset);
|
||||
}
|
||||
|
||||
grub_file_close(file);
|
||||
|
||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||
}
|
||||
|
||||
grub_err_t ventoy_cmd_load_cpio(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
@ -1258,7 +1317,12 @@ grub_err_t ventoy_cmd_load_cpio(grub_extcmd_context_t ctxt, int argc, char **arg
|
||||
if (grub_strcmp(args[3], "busybox=64") == 0)
|
||||
{
|
||||
debug("cpio busybox proc %s\n", args[3]);
|
||||
ventoy_cpio_busybox64((cpio_newc_header *)g_ventoy_cpio_buf);
|
||||
ventoy_cpio_busybox64((cpio_newc_header *)g_ventoy_cpio_buf, "64h");
|
||||
}
|
||||
else if (grub_strcmp(args[3], "busybox=a64") == 0)
|
||||
{
|
||||
debug("cpio busybox proc %s\n", args[3]);
|
||||
ventoy_cpio_busybox64((cpio_newc_header *)g_ventoy_cpio_buf, "a64");
|
||||
}
|
||||
|
||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include <grub/datetime.h>
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/net.h>
|
||||
#include <grub/crypto.h>
|
||||
#include <grub/time.h>
|
||||
#include <grub/font.h>
|
||||
#include <grub/ventoy.h>
|
||||
@ -39,9 +40,13 @@
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
char g_arch_mode_suffix[64];
|
||||
static char g_iso_disk_name[128];
|
||||
static grub_uint8_t g_boot_pwd = 0;
|
||||
static grub_uint8_t g_boot_sha256[32];
|
||||
static install_template *g_install_template_head = NULL;
|
||||
static dud *g_dud_head = NULL;
|
||||
static vtoy_password *g_pwd_head = NULL;
|
||||
static persistence_config *g_persistence_head = NULL;
|
||||
static menu_alias *g_menu_alias_head = NULL;
|
||||
static menu_class *g_menu_class_head = NULL;
|
||||
@ -695,6 +700,173 @@ static int ventoy_plugin_dud_entry(VTOY_JSON *json, const char *isodisk)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ventoy_plugin_pwd_entry(VTOY_JSON *json, const char *isodisk)
|
||||
{
|
||||
int i = 0;
|
||||
int len = 0;
|
||||
const char *iso = NULL;
|
||||
const char *pwd = NULL;
|
||||
VTOY_JSON *pNode = NULL;
|
||||
VTOY_JSON *pCNode = NULL;
|
||||
vtoy_password *node = NULL;
|
||||
vtoy_password *tail = NULL;
|
||||
vtoy_password *next = NULL;
|
||||
char bytes[3];
|
||||
|
||||
(void)isodisk;
|
||||
|
||||
if (json->enDataType != JSON_TYPE_OBJECT)
|
||||
{
|
||||
debug("Not object %d\n", json->enDataType);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (g_pwd_head)
|
||||
{
|
||||
for (node = g_pwd_head; node; node = next)
|
||||
{
|
||||
next = node->next;
|
||||
grub_free(node);
|
||||
}
|
||||
|
||||
g_pwd_head = NULL;
|
||||
}
|
||||
|
||||
for (pNode = json->pstChild; pNode; pNode = pNode->pstNext)
|
||||
{
|
||||
if (pNode->pcName && grub_strcmp("bootpwd", pNode->pcName) == 0)
|
||||
{
|
||||
len = (int)grub_strlen(pNode->unData.pcStrVal);
|
||||
if (len == 64)
|
||||
{
|
||||
g_boot_pwd = 1;
|
||||
for (i = 0; i < 32; i++)
|
||||
{
|
||||
bytes[0] = pNode->unData.pcStrVal[i * 2];
|
||||
bytes[1] = pNode->unData.pcStrVal[i * 2 + 1];
|
||||
bytes[2] = 0;
|
||||
g_boot_sha256[i] = (grub_uint8_t)grub_strtoul(bytes, NULL, 16);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (pNode->pcName && grub_strcmp("menupwd", pNode->pcName) == 0)
|
||||
{
|
||||
for (pCNode = pNode->pstChild; pCNode; pCNode = pCNode->pstNext)
|
||||
{
|
||||
if (pCNode->enDataType != JSON_TYPE_OBJECT)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
iso = vtoy_json_get_string_ex(pCNode->pstChild, "file");
|
||||
pwd = vtoy_json_get_string_ex(pCNode->pstChild, "pwd");
|
||||
if (iso && pwd && iso[0] == '/')
|
||||
{
|
||||
node = grub_zalloc(sizeof(vtoy_password));
|
||||
if (node)
|
||||
{
|
||||
node->pathlen = grub_snprintf(node->isopath, sizeof(node->isopath), "%s", iso);
|
||||
len = (int)grub_strlen(pwd);
|
||||
if (len != 64)
|
||||
{
|
||||
grub_free(node);
|
||||
continue;
|
||||
}
|
||||
|
||||
for (i = 0; i < 32; i++)
|
||||
{
|
||||
bytes[0] = pwd[i * 2];
|
||||
bytes[1] = pwd[i * 2 + 1];
|
||||
bytes[2] = 0;
|
||||
node->sha256[i] = (grub_uint8_t)grub_strtoul(bytes, NULL, 16);
|
||||
}
|
||||
|
||||
if (g_pwd_head)
|
||||
{
|
||||
tail->next = node;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_pwd_head = node;
|
||||
}
|
||||
tail = node;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ventoy_plugin_pwd_check(VTOY_JSON *json, const char *isodisk)
|
||||
{
|
||||
int len = 0;
|
||||
const char *iso = NULL;
|
||||
const char *pwd = NULL;
|
||||
VTOY_JSON *pNode = NULL;
|
||||
VTOY_JSON *pCNode = NULL;
|
||||
|
||||
if (json->enDataType != JSON_TYPE_OBJECT)
|
||||
{
|
||||
grub_printf("Not object %d\n", json->enDataType);
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (pNode = json->pstChild; pNode; pNode = pNode->pstNext)
|
||||
{
|
||||
if (pNode->pcName && grub_strcmp("bootpwd", pNode->pcName) == 0)
|
||||
{
|
||||
len = (int)grub_strlen(pNode->unData.pcStrVal);
|
||||
if (len != 64)
|
||||
{
|
||||
grub_printf("Invalid bootpwd len :%d\n", len);
|
||||
}
|
||||
else
|
||||
{
|
||||
grub_printf("bootpwd:<%s>\n", pNode->unData.pcStrVal);
|
||||
}
|
||||
}
|
||||
else if (pNode->pcName && grub_strcmp("menupwd", pNode->pcName) == 0)
|
||||
{
|
||||
for (pCNode = pNode->pstChild; pCNode; pCNode = pCNode->pstNext)
|
||||
{
|
||||
if (pCNode->enDataType != JSON_TYPE_OBJECT)
|
||||
{
|
||||
grub_printf("Not object %d\n", pCNode->enDataType);
|
||||
continue;
|
||||
}
|
||||
|
||||
iso = vtoy_json_get_string_ex(pCNode->pstChild, "file");
|
||||
if (iso)
|
||||
{
|
||||
if (0 == ventoy_plugin_check_path(isodisk, iso))
|
||||
{
|
||||
pwd = vtoy_json_get_string_ex(pCNode->pstChild, "pwd");
|
||||
|
||||
len = (int)grub_strlen(pwd);
|
||||
if (len != 64)
|
||||
{
|
||||
grub_printf("Invalid sha256 len <%d>\n", len);
|
||||
}
|
||||
else
|
||||
{
|
||||
grub_printf("file:<%s> [OK]\n", iso);
|
||||
grub_printf("pwd:<%s>\n\n", pwd);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
grub_printf("No file found\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ventoy_plugin_persistence_check(VTOY_JSON *json, const char *isodisk)
|
||||
{
|
||||
int autosel = 0;
|
||||
@ -1439,6 +1611,7 @@ static plugin_entry g_plugin_entries[] =
|
||||
{ "image_list", ventoy_plugin_image_list_entry, ventoy_plugin_image_list_check },
|
||||
{ "conf_replace", ventoy_plugin_conf_replace_entry, ventoy_plugin_conf_replace_check },
|
||||
{ "dud", ventoy_plugin_dud_entry, ventoy_plugin_dud_check },
|
||||
{ "password", ventoy_plugin_pwd_entry, ventoy_plugin_pwd_check },
|
||||
};
|
||||
|
||||
static int ventoy_parse_plugin_config(VTOY_JSON *json, const char *isodisk)
|
||||
@ -1453,7 +1626,7 @@ static int ventoy_parse_plugin_config(VTOY_JSON *json, const char *isodisk)
|
||||
{
|
||||
for (i = 0; i < (int)ARRAY_SIZE(g_plugin_entries); i++)
|
||||
{
|
||||
grub_snprintf(key, sizeof(key), "%s_%s", g_plugin_entries[i].key, VTOY_DUAL_MODE_SUFFIX);
|
||||
grub_snprintf(key, sizeof(key), "%s_%s", g_plugin_entries[i].key, g_arch_mode_suffix);
|
||||
if (grub_strcmp(g_plugin_entries[i].key, cur->pcName) == 0 || grub_strcmp(key, cur->pcName) == 0)
|
||||
{
|
||||
debug("Plugin entry for %s\n", g_plugin_entries[i].key);
|
||||
@ -1478,7 +1651,7 @@ grub_err_t ventoy_cmd_load_plugin(grub_extcmd_context_t ctxt, int argc, char **a
|
||||
(void)ctxt;
|
||||
(void)argc;
|
||||
|
||||
file = ventoy_grub_file_open(VENTOY_FILE_TYPE, "%s/ventoy/ventoy.json", args[0]);
|
||||
file = ventoy_grub_file_open(GRUB_FILE_TYPE_LINUX_INITRD, "%s/ventoy/ventoy.json", args[0]);
|
||||
if (!file)
|
||||
{
|
||||
return GRUB_ERR_NONE;
|
||||
@ -1522,6 +1695,18 @@ grub_err_t ventoy_cmd_load_plugin(grub_extcmd_context_t ctxt, int argc, char **a
|
||||
|
||||
grub_free(buf);
|
||||
|
||||
if (g_boot_pwd)
|
||||
{
|
||||
grub_printf("\n\n\n\n");
|
||||
if (ventoy_check_password(g_boot_sha256, 3))
|
||||
{
|
||||
grub_printf("\n!!! Password check failed, will exit after 5 seconds. !!!\n");
|
||||
grub_refresh();
|
||||
grub_sleep(5);
|
||||
grub_exit();
|
||||
}
|
||||
}
|
||||
|
||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||
}
|
||||
|
||||
@ -1920,6 +2105,86 @@ int ventoy_plugin_load_dud(dud *node, const char *isopart)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const grub_uint8_t * ventoy_plugin_get_password(const char *isopath)
|
||||
{
|
||||
int len;
|
||||
vtoy_password *node = NULL;
|
||||
|
||||
if ((!g_pwd_head) || (!isopath))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
len = (int)grub_strlen(isopath);
|
||||
for (node = g_pwd_head; node; node = node->next)
|
||||
{
|
||||
if (node->pathlen == len && grub_strncmp(isopath, node->isopath, len) == 0)
|
||||
{
|
||||
return node->sha256;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int ventoy_check_password(const grub_uint8_t *pwdsha256, int retry)
|
||||
{
|
||||
char input[128];
|
||||
grub_uint8_t sha256[32];
|
||||
|
||||
while (retry--)
|
||||
{
|
||||
grub_memset(input, 0, sizeof(input));
|
||||
|
||||
grub_printf("Enter password: ");
|
||||
grub_refresh();
|
||||
grub_password_get(input, sizeof(input));
|
||||
|
||||
grub_crypto_hash(GRUB_MD_SHA256, sha256, input, grub_strlen(input));
|
||||
|
||||
if (grub_memcmp(pwdsha256, sha256, 32) == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
grub_printf("Invalid password!\n\n");
|
||||
grub_refresh();
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
grub_err_t ventoy_cmd_check_password(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
int ret;
|
||||
const grub_uint8_t *sha256 = NULL;
|
||||
|
||||
(void)ctxt;
|
||||
(void)argc;
|
||||
|
||||
sha256 = ventoy_plugin_get_password(args[0]);
|
||||
if (sha256)
|
||||
{
|
||||
if (0 == ventoy_check_password(sha256, 1))
|
||||
{
|
||||
ret = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
grub_errno = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
grub_err_t ventoy_cmd_plugin_check_json(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
int i = 0;
|
||||
@ -1937,7 +2202,7 @@ grub_err_t ventoy_cmd_plugin_check_json(grub_extcmd_context_t ctxt, int argc, ch
|
||||
return 0;
|
||||
}
|
||||
|
||||
file = ventoy_grub_file_open(VENTOY_FILE_TYPE, "%s/ventoy/ventoy.json", args[0]);
|
||||
file = ventoy_grub_file_open(GRUB_FILE_TYPE_LINUX_INITRD, "%s/ventoy/ventoy.json", args[0]);
|
||||
if (!file)
|
||||
{
|
||||
grub_printf("Plugin json file /ventoy/ventoy.json does NOT exist.\n");
|
||||
@ -1969,7 +2234,7 @@ grub_err_t ventoy_cmd_plugin_check_json(grub_extcmd_context_t ctxt, int argc, ch
|
||||
goto end;
|
||||
}
|
||||
|
||||
grub_snprintf(key, sizeof(key), "%s_%s", args[1], VTOY_DUAL_MODE_SUFFIX);
|
||||
grub_snprintf(key, sizeof(key), "%s_%s", args[1], g_arch_mode_suffix);
|
||||
for (node = json->pstChild; node; node = node->pstNext)
|
||||
{
|
||||
if (grub_strcmp(node->pcName, args[1]) == 0 || grub_strcmp(node->pcName, key) == 0)
|
||||
|
@ -21,7 +21,7 @@
|
||||
#ifndef __VENTOY_H__
|
||||
#define __VENTOY_H__
|
||||
|
||||
#define COMPILE_ASSERT(expr) extern char __compile_assert[(expr) ? 1 : -1]
|
||||
#define COMPILE_ASSERT(a, expr) extern char __compile_assert##a[(expr) ? 1 : -1]
|
||||
|
||||
#define VENTOY_COMPATIBLE_STR "VENTOY COMPATIBLE"
|
||||
#define VENTOY_COMPATIBLE_STR_LEN 17
|
||||
@ -139,11 +139,23 @@ typedef struct ventoy_windows_data
|
||||
}ventoy_windows_data;
|
||||
|
||||
|
||||
typedef struct ventoy_secure_data
|
||||
{
|
||||
grub_uint8_t magic1[16]; /* VENTOY_GUID */
|
||||
grub_uint8_t diskuuid[16];
|
||||
grub_uint8_t Checksum[16];
|
||||
grub_uint8_t adminSHA256[32];
|
||||
grub_uint8_t reserved[4000];
|
||||
grub_uint8_t magic2[16]; /* VENTOY_GUID */
|
||||
}ventoy_secure_data;
|
||||
|
||||
|
||||
|
||||
#pragma pack()
|
||||
|
||||
// compile assert check : sizeof(ventoy_os_param) must be 512
|
||||
COMPILE_ASSERT(sizeof(ventoy_os_param) == 512);
|
||||
COMPILE_ASSERT(1,sizeof(ventoy_os_param) == 512);
|
||||
COMPILE_ASSERT(2,sizeof(ventoy_secure_data) == 4096);
|
||||
|
||||
|
||||
|
||||
@ -242,7 +254,6 @@ typedef struct ventoy_grub_param
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
int grub_ext_get_file_chunk(grub_uint64_t part_start, grub_file_t file, ventoy_img_chunk_list *chunk_list);
|
||||
int grub_fat_get_file_chunk(grub_uint64_t part_start, grub_file_t file, ventoy_img_chunk_list *chunk_list);
|
||||
void grub_iso9660_set_nojoliet(int nojoliet);
|
||||
|
@ -17,11 +17,23 @@ all_modules_legacy="date drivemap blocklist regexp newc vga_text ntldr search at
|
||||
net_modules_uefi="efinet net tftp http"
|
||||
all_modules_uefi="blocklist ventoy test regexp newc search at_keyboard usb_keyboard gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux relocator jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop efi_uga video_bochs video_cirrus video video_fb gfxterm_background gfxterm_menu"
|
||||
|
||||
all_modules_arm64_uefi="blocklist ventoy test regexp newc search gcry_md5 hashsum gzio xzio lzopio ext2 xfs read halt sleep serial terminfo png password_pbkdf2 gcry_sha512 pbkdf2 part_gpt part_msdos ls tar squash4 loopback part_apple minicmd diskfilter linux jpeg iso9660 udf hfsplus halt acpi mmap gfxmenu video_colors trig bitmap_scale gfxterm bitmap font fat exfat ntfs fshelp efifwsetup reboot echo configfile normal terminal gettext chain priority_queue bufio datetime cat extcmd crypto gzio boot all_video efi_gop video video_fb gfxterm_background gfxterm_menu"
|
||||
|
||||
|
||||
if [ "$1" = "uefi" ]; then
|
||||
all_modules="$net_modules_uefi $all_modules_uefi "
|
||||
grub-mkimage -v --directory "$VT_DIR/GRUB2/INSTALL/lib/grub/x86_64-efi" --prefix '(,2)/grub' --output "$VT_DIR/INSTALL/EFI/BOOT/grubx64_real.efi" --format 'x86_64-efi' --compression 'auto' $all_modules_uefi 'fat' 'part_msdos'
|
||||
|
||||
grub-mkimage -v --directory "$VT_DIR/GRUB2/INSTALL/lib/grub/x86_64-efi" --prefix '(,2)/grub' --output "$VT_DIR/INSTALL/EFI/BOOT/grubx64_real.efi" --format 'x86_64-efi' --compression 'auto' $all_modules_uefi
|
||||
|
||||
#grub-mkimage -v --directory "$VT_DIR/GRUB2/INSTALL/lib/grub/x86_64-efi" -c "$VT_DIR/LiveCD/GRUB/embed.cfg" --prefix '/EFI/boot' --output "$VT_DIR/LiveCD/GRUB/bootx64.efi" --format 'x86_64-efi' --compression 'auto' $all_modules_uefi 'fat' 'part_msdos'
|
||||
elif [ "$1" = "i386efi" ]; then
|
||||
all_modules="$net_modules_uefi $all_modules_uefi "
|
||||
|
||||
grub-mkimage -v --directory "$VT_DIR/GRUB2/INSTALL/lib/grub/i386-efi" --prefix '(,2)/grub' --output "$VT_DIR/INSTALL/EFI/BOOT/grubia32_real.efi" --format 'i386-efi' --compression 'auto' $all_modules_uefi
|
||||
elif [ "$1" = "arm64" ]; then
|
||||
all_modules="$net_modules_uefi $all_modules_arm64_uefi "
|
||||
|
||||
grub-mkimage -v --directory "$VT_DIR/GRUB2/INSTALL/lib/grub/arm64-efi" --prefix '(,2)/grub' --output "$VT_DIR/INSTALL/EFI/BOOT/BOOTAA64.EFI" --format 'arm64-efi' --compression 'auto' $all_modules_arm64_uefi
|
||||
else
|
||||
all_modules="$net_modules_legacy $all_modules_legacy "
|
||||
grub-mkimage -v --directory "$VT_DIR/GRUB2/INSTALL/lib/grub/i386-pc" --prefix '(,2)/grub' --output "$VT_DIR/INSTALL/grub/i386-pc/core.img" --format 'i386-pc' --compression 'auto' $all_modules_legacy 'fat' 'part_msdos' 'biosdisk'
|
||||
@ -37,17 +49,50 @@ if [ "$1" = "uefi" ]; then
|
||||
rm -f $VT_DIR/GRUB2/NBP/core.efi
|
||||
cp -a $VT_DIR/GRUB2/PXE/grub2/x86_64-efi/core.efi $VT_DIR/GRUB2/NBP/core.efi || exit 1
|
||||
|
||||
rm -f $VT_DIR/INSTALL/grub/x86_64-efi/normal.mod
|
||||
rm -rf $VT_DIR/INSTALL/grub/x86_64-efi
|
||||
mkdir -p $VT_DIR/INSTALL/grub/x86_64-efi
|
||||
|
||||
cp -a $VT_DIR/GRUB2/PXE/grub2/x86_64-efi/normal.mod $VT_DIR/INSTALL/grub/x86_64-efi/normal.mod || exit 1
|
||||
|
||||
#copy other modules
|
||||
ls -1 $VT_DIR/GRUB2/INSTALL/lib/grub/x86_64-efi/ | egrep '\.(lst|mod)$' | while read line; do
|
||||
if ! echo $all_modules | grep -q " ${line%.mod} "; then
|
||||
echo "Copy $line ..."
|
||||
rm -f $VT_DIR/INSTALL/grub/x86_64-efi/$line
|
||||
cp -a $VT_DIR/GRUB2/INSTALL/lib/grub/x86_64-efi/$line $VT_DIR/INSTALL/grub/x86_64-efi/
|
||||
fi
|
||||
done
|
||||
elif [ "$1" = "i386efi" ]; then
|
||||
rm -f $VT_DIR/GRUB2/NBP/core.efi
|
||||
cp -a $VT_DIR/GRUB2/PXE/grub2/i386-efi/core.efi $VT_DIR/GRUB2/NBP/core.efi || exit 1
|
||||
|
||||
rm -rf $VT_DIR/INSTALL/grub/i386-efi
|
||||
mkdir -p $VT_DIR/INSTALL/grub/i386-efi
|
||||
|
||||
cp -a $VT_DIR/GRUB2/PXE/grub2/i386-efi/normal.mod $VT_DIR/INSTALL/grub/i386-efi/normal.mod || exit 1
|
||||
|
||||
#copy other modules
|
||||
ls -1 $VT_DIR/GRUB2/INSTALL/lib/grub/i386-efi/ | egrep '\.(lst|mod)$' | while read line; do
|
||||
if ! echo $all_modules | grep -q " ${line%.mod} "; then
|
||||
echo "Copy $line ..."
|
||||
cp -a $VT_DIR/GRUB2/INSTALL/lib/grub/i386-efi/$line $VT_DIR/INSTALL/grub/i386-efi/
|
||||
fi
|
||||
done
|
||||
elif [ "$1" = "arm64" ]; then
|
||||
rm -f $VT_DIR/GRUB2/NBP/core.efi
|
||||
cp -a $VT_DIR/GRUB2/PXE/grub2/arm64-efi/core.efi $VT_DIR/GRUB2/NBP/core.efi || exit 1
|
||||
|
||||
rm -rf $VT_DIR/INSTALL/grub/arm64-efi
|
||||
mkdir -p $VT_DIR/INSTALL/grub/arm64-efi
|
||||
|
||||
cp -a $VT_DIR/GRUB2/PXE/grub2/arm64-efi/normal.mod $VT_DIR/INSTALL/grub/arm64-efi/normal.mod || exit 1
|
||||
|
||||
#copy other modules
|
||||
ls -1 $VT_DIR/GRUB2/INSTALL/lib/grub/arm64-efi/ | egrep '\.(lst|mod)$' | while read line; do
|
||||
if ! echo $all_modules | grep -q " ${line%.mod} "; then
|
||||
echo "Copy $line ..."
|
||||
cp -a $VT_DIR/GRUB2/INSTALL/lib/grub/arm64-efi/$line $VT_DIR/INSTALL/grub/arm64-efi/
|
||||
fi
|
||||
done
|
||||
else
|
||||
rm -f $VT_DIR/GRUB2/NBP/core.0
|
||||
cp -a $VT_DIR/GRUB2/PXE/grub2/i386-pc/core.0 $VT_DIR/GRUB2/NBP/core.0 || exit 1
|
||||
|
@ -1,14 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
/opt/diet32/bin/diet gcc -Os -m32 vtoy_gen_uuid.c -o vtoy_gen_uuid
|
||||
|
||||
if [ -e vtoy_gen_uuid ]; then
|
||||
echo -e '\n############### SUCCESS ###############\n'
|
||||
|
||||
rm -f ../INSTALL/tool/vtoy_gen_uuid
|
||||
cp -a vtoy_gen_uuid ../INSTALL/tool/vtoy_gen_uuid
|
||||
else
|
||||
echo -e '\n############### FAILED ################\n'
|
||||
exit 1
|
||||
fi
|
||||
|
@ -1,50 +0,0 @@
|
||||
/******************************************************************************
|
||||
* vtoy_gen_uuid.c
|
||||
*
|
||||
* Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int i;
|
||||
int fd;
|
||||
unsigned char uuid[16];
|
||||
|
||||
fd = open("/dev/random", O_RDONLY);
|
||||
if (fd < 0)
|
||||
{
|
||||
srand(time(NULL));
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
uuid[i] = (unsigned char)(rand());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
read(fd, uuid, 16);
|
||||
}
|
||||
|
||||
fwrite(uuid, 1, 16, stdout);
|
||||
return 0;
|
||||
}
|
@ -36,17 +36,24 @@ export SED=$BUSYBOX_PATH/sed
|
||||
export SLEEP=$BUSYBOX_PATH/sleep
|
||||
export HEAD=$BUSYBOX_PATH/head
|
||||
|
||||
if [ -e $BUSYBOX_PATH/64h ]; then
|
||||
if [ -e $BUSYBOX_PATH/32h ]; then
|
||||
if [ -e $BUSYBOX_PATH/64h ]; then
|
||||
#this is arm64
|
||||
$BUSYBOX_PATH/xzminidecaa64 < $BUSYBOX_PATH/busyboxaa64.xz > $BUSYBOX_PATH/busybox
|
||||
$BUSYBOX_PATH/vtchmodaa64 $BUSYBOX_PATH/busybox
|
||||
else
|
||||
#this is x86_64
|
||||
$BUSYBOX_PATH/xzminidec64 < $BUSYBOX_PATH/busybox64.xz > $BUSYBOX_PATH/busybox
|
||||
if [ -s $BUSYBOX_PATH/busybox ]; then
|
||||
$BUSYBOX_PATH/vtchmod64 $BUSYBOX_PATH/busybox
|
||||
else
|
||||
$BUSYBOX_PATH/xzminidec64_uclibc < $BUSYBOX_PATH/busybox64.xz > $BUSYBOX_PATH/busybox
|
||||
$BUSYBOX_PATH/vtchmod64_uclibc $BUSYBOX_PATH/busybox
|
||||
fi
|
||||
fi
|
||||
else
|
||||
$BUSYBOX_PATH/xzminidec32 < $BUSYBOX_PATH/busybox32.xz > $BUSYBOX_PATH/busybox
|
||||
$BUSYBOX_PATH/vtchmod32 $BUSYBOX_PATH/busybox
|
||||
else
|
||||
$BUSYBOX_PATH/xzminidec64 < $BUSYBOX_PATH/busybox64.xz > $BUSYBOX_PATH/busybox
|
||||
if [ -s $BUSYBOX_PATH/busybox ]; then
|
||||
$BUSYBOX_PATH/vtchmod64 $BUSYBOX_PATH/busybox
|
||||
else
|
||||
$BUSYBOX_PATH/xzminidec64_uclibc < $BUSYBOX_PATH/busybox64.xz > $BUSYBOX_PATH/busybox
|
||||
$BUSYBOX_PATH/vtchmod64_uclibc $BUSYBOX_PATH/busybox
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -e $BUSYBOX_PATH/busybox ]; then
|
||||
@ -84,16 +91,26 @@ else
|
||||
xz -d -c loop.cpio.xz | cpio -idm 2>>$VTLOG
|
||||
fi
|
||||
|
||||
if [ -e $BUSYBOX_PATH/64h ]; then
|
||||
echo "Use busybox32 toolkit ..." >>$VTLOG
|
||||
if [ -e $BUSYBOX_PATH/32h ]; then
|
||||
if [ -e $BUSYBOX_PATH/64h ]; then
|
||||
echo "Use ARM64 busybox toolkit ..." >>$VTLOG
|
||||
echo aarch64 > $VTOY_PATH/ventoy_arch
|
||||
ln -s $BUSYBOX_PATH/xzminidecaa64 $BUSYBOX_PATH/xzminidec
|
||||
ln -s $VTOY_PATH/tool/dmsetupaa64 $VTOY_PATH/tool/dmsetup
|
||||
ln -s $VTOY_PATH/tool/lunzipaa64 $VTOY_PATH/tool/lunzip
|
||||
else
|
||||
echo "Use x86_64 busybox toolkit ..." >>$VTLOG
|
||||
echo x86_64 > $VTOY_PATH/ventoy_arch
|
||||
ln -s $BUSYBOX_PATH/xzminidec64 $BUSYBOX_PATH/xzminidec
|
||||
ln -s $VTOY_PATH/tool/dmsetup64 $VTOY_PATH/tool/dmsetup
|
||||
ln -s $VTOY_PATH/tool/lunzip64 $VTOY_PATH/tool/lunzip
|
||||
fi
|
||||
else
|
||||
echo "Use i386 busybox toolkit ..." >>$VTLOG
|
||||
echo i386 > $VTOY_PATH/ventoy_arch
|
||||
ln -s $BUSYBOX_PATH/xzminidec32 $BUSYBOX_PATH/xzminidec
|
||||
ln -s $VTOY_PATH/tool/dmsetup32 $VTOY_PATH/tool/dmsetup
|
||||
ln -s $VTOY_PATH/tool/lunzip32 $VTOY_PATH/tool/lunzip
|
||||
else
|
||||
echo "Use busybox64 toolkit ..." >>$VTLOG
|
||||
ln -s $BUSYBOX_PATH/xzminidec64 $BUSYBOX_PATH/xzminidec
|
||||
ln -s $VTOY_PATH/tool/dmsetup64 $VTOY_PATH/tool/dmsetup
|
||||
ln -s $VTOY_PATH/tool/lunzip64 $VTOY_PATH/tool/lunzip
|
||||
fi
|
||||
|
||||
rm -f *.xz
|
||||
|
BIN
IMG/cpio/ventoy/busybox/a64
Normal file
BIN
IMG/cpio/ventoy/busybox/a64
Normal file
Binary file not shown.
BIN
IMG/cpio/ventoy/busybox/busyboxaa64.xz
Normal file
BIN
IMG/cpio/ventoy/busybox/busyboxaa64.xz
Normal file
Binary file not shown.
BIN
IMG/cpio/ventoy/busybox/vtchmodaa64
Normal file
BIN
IMG/cpio/ventoy/busybox/vtchmodaa64
Normal file
Binary file not shown.
BIN
IMG/cpio/ventoy/busybox/xzminidecaa64
Normal file
BIN
IMG/cpio/ventoy/busybox/xzminidecaa64
Normal file
Binary file not shown.
68
IMG/cpio/ventoy/hook/debian/kylin-disk.sh
Normal file
68
IMG/cpio/ventoy/hook/debian/kylin-disk.sh
Normal file
@ -0,0 +1,68 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
. /ventoy/hook/ventoy-hook-lib.sh
|
||||
|
||||
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
|
||||
|
||||
|
||||
ventoy_os_install_dmsetup_by_fuse() {
|
||||
vtlog "ventoy_os_install_dmsetup_by_fuse $*"
|
||||
|
||||
mkdir -p $VTOY_PATH/mnt/fuse $VTOY_PATH/mnt/iso $VTOY_PATH/mnt/squashfs
|
||||
|
||||
vtoydm -p -f $VTOY_PATH/ventoy_image_map -d $1 > $VTOY_PATH/ventoy_dm_table
|
||||
vtoy_fuse_iso -f $VTOY_PATH/ventoy_dm_table -m $VTOY_PATH/mnt/fuse
|
||||
|
||||
mount -t iso9660 $VTOY_PATH/mnt/fuse/ventoy.iso $VTOY_PATH/mnt/iso
|
||||
|
||||
sfsfile=$VTOY_PATH/mnt/iso/casper/filesystem.squashfs
|
||||
|
||||
mount -t squashfs $sfsfile $VTOY_PATH/mnt/squashfs
|
||||
|
||||
kVer=$(uname -r)
|
||||
KoName=$(ls $VTOY_PATH/mnt/squashfs/lib/modules/$kVer/kernel/drivers/md/dm-mod.ko*)
|
||||
vtlog "insmod $KoName"
|
||||
insmod $KoName
|
||||
|
||||
umount $VTOY_PATH/mnt/squashfs
|
||||
umount $VTOY_PATH/mnt/iso
|
||||
umount $VTOY_PATH/mnt/fuse
|
||||
}
|
||||
|
||||
|
||||
wait_for_usb_disk_ready
|
||||
|
||||
vtdiskname=$(get_ventoy_disk_name)
|
||||
if [ "$vtdiskname" = "unknown" ]; then
|
||||
vtlog "ventoy disk not found"
|
||||
PATH=$VTPATH_OLD
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! grep -q 'device-mapper' /proc/devices; then
|
||||
ventoy_os_install_dmsetup_by_fuse $vtdiskname
|
||||
fi
|
||||
|
||||
ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace"
|
||||
|
||||
PATH=$VTPATH_OLD
|
||||
|
||||
# OK finish
|
||||
set_ventoy_hook_finish
|
26
IMG/cpio/ventoy/hook/debian/kylin-hook.sh
Normal file
26
IMG/cpio/ventoy/hook/debian/kylin-hook.sh
Normal file
@ -0,0 +1,26 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
if [ -e /init ] && $GREP -q '^mountroot$' /init; then
|
||||
echo "Here before mountroot ..." >> $VTLOG
|
||||
|
||||
$SED "/^mountroot$/i\\$BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/kylin-disk.sh" -i /init
|
||||
$SED "/^mountroot$/i\\export LIVEMEDIA=/dev/mapper/ventoy" -i /init
|
||||
$SED "/^mountroot$/i\\export LIVE_MEDIA=/dev/mapper/ventoy" -i /init
|
||||
fi
|
@ -70,6 +70,10 @@ ventoy_get_debian_distro() {
|
||||
echo 'vyos'; return
|
||||
fi
|
||||
|
||||
if $GREP -q 'kylin' /proc/version; then
|
||||
echo 'kylin'; return
|
||||
fi
|
||||
|
||||
echo 'default'
|
||||
}
|
||||
|
||||
|
38
IMG/cpio/ventoy/hook/primeos/ventoy-disk.sh
Normal file
38
IMG/cpio/ventoy/hook/primeos/ventoy-disk.sh
Normal file
@ -0,0 +1,38 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
. /ventoy/hook/ventoy-hook-lib.sh
|
||||
|
||||
VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
|
||||
|
||||
wait_for_usb_disk_ready
|
||||
vtdiskname=$(get_ventoy_disk_name)
|
||||
if [ "$vtdiskname" = "unknown" ]; then
|
||||
vtlog "ventoy disk not found"
|
||||
PATH=$VTPATH_OLD
|
||||
exit 0
|
||||
fi
|
||||
|
||||
ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace"
|
||||
|
||||
blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/')
|
||||
vtDM=$(ventoy_find_dm_id ${blkdev_num})
|
||||
echo -n "/dev/$vtDM" > /ventoy/rootdev
|
||||
|
||||
PATH=$VTPATH_OLD
|
25
IMG/cpio/ventoy/hook/primeos/ventoy-hook.sh
Normal file
25
IMG/cpio/ventoy/hook/primeos/ventoy-hook.sh
Normal file
@ -0,0 +1,25 @@
|
||||
#!/ventoy/busybox/sh
|
||||
#************************************************************************************
|
||||
# Copyright (c) 2020, longpanda <admin@ventoy.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#************************************************************************************
|
||||
|
||||
. $VTOY_PATH/hook/ventoy-os-lib.sh
|
||||
|
||||
$BUSYBOX_PATH/mkdir /dev
|
||||
|
||||
$SED '/Detecting *PrimeOS/a\ ROOT=$(cat /ventoy/rootdev)' -i /init
|
||||
$SED "/Detecting *PrimeOS/a\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/primeos/ventoy-disk.sh" -i /init
|
BIN
IMG/cpio/ventoy/tool/lz4cat64
Normal file
BIN
IMG/cpio/ventoy/tool/lz4cat64
Normal file
Binary file not shown.
BIN
IMG/cpio/ventoy/tool/lz4cataa64
Normal file
BIN
IMG/cpio/ventoy/tool/lz4cataa64
Normal file
Binary file not shown.
@ -19,46 +19,67 @@
|
||||
|
||||
echo "#### install vtoytool #####" >> $VTLOG
|
||||
|
||||
if ! [ -e $BUSYBOX_PATH/ar ]; then
|
||||
$BUSYBOX_PATH/ln -s $VTOY_PATH/tool/ar $BUSYBOX_PATH/ar
|
||||
fi
|
||||
|
||||
for vtdir in $(ls $VTOY_PATH/tool/vtoytool/); do
|
||||
echo "try $VTOY_PATH/tool/vtoytool/$vtdir/ ..." >> $VTLOG
|
||||
if $VTOY_PATH/tool/vtoytool/$vtdir/vtoytool_64 --install 2>>$VTLOG; then
|
||||
echo "vtoytool_64 OK" >> $VTLOG
|
||||
break
|
||||
fi
|
||||
|
||||
if $VTOY_PATH/tool/vtoytool/$vtdir/vtoytool_32 --install 2>>$VTLOG; then
|
||||
echo "vtoytool_32 OK" >> $VTLOG
|
||||
break
|
||||
for app in ar inotifyd; do
|
||||
if [ -e $BUSYBOX_PATH/$app ]; then
|
||||
$BUSYBOX_PATH/rm -f $VTOY_PATH/tool/$app
|
||||
$BUSYBOX_PATH/ln -s $BUSYBOX_PATH/$app $VTOY_PATH/tool/$app
|
||||
else
|
||||
$BUSYBOX_PATH/ln -s $VTOY_PATH/tool/$app $BUSYBOX_PATH/$app
|
||||
fi
|
||||
done
|
||||
|
||||
if $VTOY_PATH/tool/vtoy_fuse_iso_64 -t 2>>$VTLOG; then
|
||||
echo "use vtoy_fuse_iso_64" >>$VTLOG
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/vtoy_fuse_iso_64 $VTOY_PATH/tool/vtoy_fuse_iso
|
||||
|
||||
if $GREP -q aarch64 $VTOY_PATH/ventoy_arch; then
|
||||
for vtdir in $(ls $VTOY_PATH/tool/vtoytool/); do
|
||||
echo "try $VTOY_PATH/tool/vtoytool/$vtdir/ ..." >> $VTLOG
|
||||
if $VTOY_PATH/tool/vtoytool/$vtdir/vtoytool_aa64 --install 2>>$VTLOG; then
|
||||
echo "vtoytool_aa64 OK" >> $VTLOG
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
$BUSYBOX_PATH/rm -f $VTOY_PATH/tool/lz4cat $VTOY_PATH/tool/zstdcat
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/lz4cataa64 $VTOY_PATH/tool/lz4cat
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/zstdcataa64 $VTOY_PATH/tool/zstdcat
|
||||
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/vtoy_fuse_iso_aa64 $VTOY_PATH/tool/vtoy_fuse_iso
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/unsquashfs_aa64 $VTOY_PATH/tool/vtoy_unsquashfs
|
||||
else
|
||||
echo "use vtoy_fuse_iso_32" >>$VTLOG
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/vtoy_fuse_iso_32 $VTOY_PATH/tool/vtoy_fuse_iso
|
||||
fi
|
||||
|
||||
if $VTOY_PATH/tool/unsquashfs_64 -t 2>>$VTLOG; then
|
||||
echo "use unsquashfs_64" >>$VTLOG
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/unsquashfs_64 $VTOY_PATH/tool/vtoy_unsquashfs
|
||||
else
|
||||
echo "use unsquashfs_32" >>$VTLOG
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/unsquashfs_32 $VTOY_PATH/tool/vtoy_unsquashfs
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if $VTOY_PATH/tool/unsquashfs_64 -t 2>>$VTLOG; then
|
||||
echo "use unsquashfs_64" >>$VTLOG
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/unsquashfs_64 $VTOY_PATH/tool/vtoy_unsquashfs
|
||||
else
|
||||
echo "use unsquashfs_32" >>$VTLOG
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/unsquashfs_32 $VTOY_PATH/tool/vtoy_unsquashfs
|
||||
|
||||
if $GREP -q x86_64 $VTOY_PATH/ventoy_arch; then
|
||||
$BUSYBOX_PATH/rm -f $VTOY_PATH/tool/lz4cat $VTOY_PATH/tool/zstdcat
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/lz4cat64 $VTOY_PATH/tool/lz4cat
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/zstdcat64 $VTOY_PATH/tool/zstdcat
|
||||
fi
|
||||
|
||||
for vtdir in $(ls $VTOY_PATH/tool/vtoytool/); do
|
||||
echo "try $VTOY_PATH/tool/vtoytool/$vtdir/ ..." >> $VTLOG
|
||||
if $VTOY_PATH/tool/vtoytool/$vtdir/vtoytool_64 --install 2>>$VTLOG; then
|
||||
echo "vtoytool_64 OK" >> $VTLOG
|
||||
break
|
||||
fi
|
||||
|
||||
if $VTOY_PATH/tool/vtoytool/$vtdir/vtoytool_32 --install 2>>$VTLOG; then
|
||||
echo "vtoytool_32 OK" >> $VTLOG
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if $VTOY_PATH/tool/vtoy_fuse_iso_64 -t 2>>$VTLOG; then
|
||||
echo "use vtoy_fuse_iso_64" >>$VTLOG
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/vtoy_fuse_iso_64 $VTOY_PATH/tool/vtoy_fuse_iso
|
||||
else
|
||||
echo "use vtoy_fuse_iso_32" >>$VTLOG
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/vtoy_fuse_iso_32 $VTOY_PATH/tool/vtoy_fuse_iso
|
||||
fi
|
||||
|
||||
if $VTOY_PATH/tool/unsquashfs_64 -t 2>>$VTLOG; then
|
||||
echo "use unsquashfs_64" >>$VTLOG
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/unsquashfs_64 $VTOY_PATH/tool/vtoy_unsquashfs
|
||||
else
|
||||
echo "use unsquashfs_32" >>$VTLOG
|
||||
$BUSYBOX_PATH/cp -a $VTOY_PATH/tool/unsquashfs_32 $VTOY_PATH/tool/vtoy_unsquashfs
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
BIN
IMG/cpio/ventoy/tool/zstdcat64
Normal file
BIN
IMG/cpio/ventoy/tool/zstdcat64
Normal file
Binary file not shown.
BIN
IMG/cpio/ventoy/tool/zstdcataa64
Normal file
BIN
IMG/cpio/ventoy/tool/zstdcataa64
Normal file
Binary file not shown.
@ -305,6 +305,10 @@ ventoy_get_os_type() {
|
||||
echo 'blackPanther'; return
|
||||
fi
|
||||
|
||||
if $GREP -q 'primeos' /proc/version; then
|
||||
echo 'primeos'; return
|
||||
fi
|
||||
|
||||
echo "default"
|
||||
}
|
||||
|
||||
|
@ -21,8 +21,10 @@ cp -a $VENTOY_PATH/SQUASHFS/unsquashfs_* tool/
|
||||
cp -a $VENTOY_PATH/FUSEISO/vtoy_fuse_iso_* tool/
|
||||
cp -a $VENTOY_PATH/VtoyTool/vtoytool tool/
|
||||
cp -a $VENTOY_PATH/VBLADE/vblade-master/vblade_* tool/
|
||||
|
||||
cp -a $VENTOY_PATH/LZIP/lunzip32 tool/
|
||||
cp -a $VENTOY_PATH/LZIP/lunzip64 tool/
|
||||
cp -a $VENTOY_PATH/LZIP/lunzipaa64 tool/
|
||||
|
||||
|
||||
chmod -R 777 ./tool
|
||||
|
BIN
INSTALL/EFI/BOOT/BOOTAA64.EFI
Normal file
BIN
INSTALL/EFI/BOOT/BOOTAA64.EFI
Normal file
Binary file not shown.
BIN
INSTALL/EFI/BOOT/BOOTIA32.EFI
Normal file
BIN
INSTALL/EFI/BOOT/BOOTIA32.EFI
Normal file
Binary file not shown.
BIN
INSTALL/EFI/BOOT/grubia32.efi
Normal file
BIN
INSTALL/EFI/BOOT/grubia32.efi
Normal file
Binary file not shown.
BIN
INSTALL/EFI/BOOT/grubia32_real.efi
Normal file
BIN
INSTALL/EFI/BOOT/grubia32_real.efi
Normal file
Binary file not shown.
Binary file not shown.
BIN
INSTALL/EFI/BOOT/mmia32.efi
Normal file
BIN
INSTALL/EFI/BOOT/mmia32.efi
Normal file
Binary file not shown.
Binary file not shown.
@ -10,16 +10,26 @@ if [ -f ./ventoy/version ]; then
|
||||
curver=$(cat ./ventoy/version)
|
||||
fi
|
||||
|
||||
OLDDIR=$(pwd)
|
||||
|
||||
if uname -a | egrep -q 'aarch64|arm64'; then
|
||||
export TOOLDIR=aarch64
|
||||
elif uname -a | egrep -q 'x86_64|amd64'; then
|
||||
export TOOLDIR=x86_64
|
||||
else
|
||||
export TOOLDIR=i386
|
||||
fi
|
||||
export PATH=./tool/$TOOLDIR:$PATH
|
||||
|
||||
|
||||
echo ''
|
||||
echo '**********************************************'
|
||||
echo " Ventoy: $curver"
|
||||
echo " Ventoy: $curver $TOOLDIR"
|
||||
echo " longpanda admin@ventoy.net"
|
||||
echo " https://www.ventoy.net"
|
||||
echo '**********************************************'
|
||||
echo ''
|
||||
|
||||
OLDDIR=$(pwd)
|
||||
PATH=./tool:$PATH
|
||||
|
||||
if ! [ -f ./boot/boot.img ]; then
|
||||
if [ -d ./grub ]; then
|
||||
@ -30,30 +40,30 @@ if ! [ -f ./boot/boot.img ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "############# Ventoy2Disk $* ################" >> ./log.txt
|
||||
echo "############# Ventoy2Disk $* [$TOOLDIR] ################" >> ./log.txt
|
||||
date >> ./log.txt
|
||||
|
||||
#decompress tool
|
||||
if [ -f ./tool/VentoyWorker.sh ]; then
|
||||
if [ -f ./tool/$TOOLDIR/ash ]; then
|
||||
echo "no need to decompress tools" >> ./log.txt
|
||||
else
|
||||
cd tool
|
||||
cd ./tool/$TOOLDIR
|
||||
|
||||
if [ -f ./xzcat ]; then
|
||||
chmod +x ./xzcat
|
||||
fi
|
||||
[ -f ./xzcat ] && chmod +x ./xzcat
|
||||
|
||||
for file in $(ls *.xz); do
|
||||
xzcat $file > ${file%.xz}
|
||||
chmod +x ${file%.xz}
|
||||
[ -f ./$file ] && rm -f ./$file
|
||||
done
|
||||
cd ../
|
||||
cd $OLDDIR
|
||||
|
||||
chmod +x -R ./tool/$TOOLDIR
|
||||
fi
|
||||
|
||||
if [ -f /bin/bash ]; then
|
||||
bash ./tool/VentoyWorker.sh $*
|
||||
/bin/bash ./tool/VentoyWorker.sh $*
|
||||
else
|
||||
./tool/ash ./tool/VentoyWorker.sh $*
|
||||
ash ./tool/VentoyWorker.sh $*
|
||||
fi
|
||||
|
||||
if [ -n "$OLDDIR" ]; then
|
||||
|
BIN
INSTALL/grub/arm64-efi/adler32.mod
Normal file
BIN
INSTALL/grub/arm64-efi/adler32.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/affs.mod
Normal file
BIN
INSTALL/grub/arm64-efi/affs.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/afs.mod
Normal file
BIN
INSTALL/grub/arm64-efi/afs.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/archelp.mod
Normal file
BIN
INSTALL/grub/arm64-efi/archelp.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/bfs.mod
Normal file
BIN
INSTALL/grub/arm64-efi/bfs.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/blscfg.mod
Normal file
BIN
INSTALL/grub/arm64-efi/blscfg.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/bswap_test.mod
Normal file
BIN
INSTALL/grub/arm64-efi/bswap_test.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/btrfs.mod
Normal file
BIN
INSTALL/grub/arm64-efi/btrfs.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/cbfs.mod
Normal file
BIN
INSTALL/grub/arm64-efi/cbfs.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/cmdline_cat_test.mod
Normal file
BIN
INSTALL/grub/arm64-efi/cmdline_cat_test.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/cmp.mod
Normal file
BIN
INSTALL/grub/arm64-efi/cmp.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/cmp_test.mod
Normal file
BIN
INSTALL/grub/arm64-efi/cmp_test.mod
Normal file
Binary file not shown.
136
INSTALL/grub/arm64-efi/command.lst
Normal file
136
INSTALL/grub/arm64-efi/command.lst
Normal file
@ -0,0 +1,136 @@
|
||||
*acpi: acpi
|
||||
*all_functional_test: functional_test
|
||||
*background_image: gfxterm_background
|
||||
*bls_import: blscfg
|
||||
*blscfg: blscfg
|
||||
*cat: cat
|
||||
*crc: hashsum
|
||||
*cryptomount: cryptodisk
|
||||
*echo: echo
|
||||
*extract_syslinux_entries_configfile: syslinuxcfg
|
||||
*extract_syslinux_entries_source: syslinuxcfg
|
||||
*file: file
|
||||
*functional_test: functional_test
|
||||
*gettext: gettext
|
||||
*hashsum: hashsum
|
||||
*hello: hello
|
||||
*help: help
|
||||
*hexdump: hexdump
|
||||
*keystatus: keystatus
|
||||
*list_env: loadenv
|
||||
*load_env: loadenv
|
||||
*loopback: loopback
|
||||
*ls: ls
|
||||
*lsacpi: lsacpi
|
||||
*md5sum: hashsum
|
||||
*menuentry: normal
|
||||
*probe: probe
|
||||
*read_byte: memrw
|
||||
*read_dword: memrw
|
||||
*read_word: memrw
|
||||
*regexp: regexp
|
||||
*save_env: loadenv
|
||||
*search: search
|
||||
*serial: serial
|
||||
*sha1sum: hashsum
|
||||
*sha256sum: hashsum
|
||||
*sha512sum: hashsum
|
||||
*sleep: sleep
|
||||
*submenu: normal
|
||||
*syslinux_configfile: syslinuxcfg
|
||||
*syslinux_source: syslinuxcfg
|
||||
*terminfo: terminfo
|
||||
*test_blockarg: test_blockarg
|
||||
*testspeed: testspeed
|
||||
*tr: tr
|
||||
*trust: pgp
|
||||
*verify_detached: pgp
|
||||
*zfskey: zfscrypt
|
||||
.: configfile
|
||||
[: test
|
||||
authenticate: normal
|
||||
background_color: gfxterm_background
|
||||
badram: mmap
|
||||
blocklist: blocklist
|
||||
boot: boot
|
||||
break: normal
|
||||
cat: minicmd
|
||||
chainloader: chain
|
||||
clear: normal
|
||||
cmp: cmp
|
||||
configfile: configfile
|
||||
continue: normal
|
||||
cutmem: mmap
|
||||
date: date
|
||||
devicetree: fdt
|
||||
distrust: pgp
|
||||
dump: minicmd
|
||||
eval: eval
|
||||
exit: minicmd
|
||||
export: normal
|
||||
extract_entries_configfile: configfile
|
||||
extract_entries_source: configfile
|
||||
false: true
|
||||
fwsetup: efifwsetup
|
||||
gptsync: gptsync
|
||||
halt: halt
|
||||
help: minicmd
|
||||
initrd: linux
|
||||
linux: linux
|
||||
list_trusted: pgp
|
||||
loadfont: font
|
||||
lsefi: lsefi
|
||||
lsefimmap: lsefimmap
|
||||
lsefisystab: lsefisystab
|
||||
lsfonts: font
|
||||
lsmmap: lsmmap
|
||||
lsmod: minicmd
|
||||
lssal: lssal
|
||||
macppcbless: macbless
|
||||
mactelbless: macbless
|
||||
net_add_addr: net
|
||||
net_add_dns: net
|
||||
net_add_route: net
|
||||
net_bootp: net
|
||||
net_del_addr: net
|
||||
net_del_dns: net
|
||||
net_del_route: net
|
||||
net_dhcp: net
|
||||
net_get_dhcp_option: net
|
||||
net_ipv6_autoconf: net
|
||||
net_ls_addr: net
|
||||
net_ls_cards: net
|
||||
net_ls_dns: net
|
||||
net_ls_routes: net
|
||||
net_nslookup: net
|
||||
normal: normal
|
||||
normal_exit: normal
|
||||
parttool: parttool
|
||||
password: password
|
||||
password_pbkdf2: password_pbkdf2
|
||||
read: read
|
||||
reboot: reboot
|
||||
return: normal
|
||||
rmmod: minicmd
|
||||
search.file: search_fs_file
|
||||
search.fs_label: search_label
|
||||
search.fs_uuid: search_fs_uuid
|
||||
setparams: normal
|
||||
shift: normal
|
||||
source: configfile
|
||||
terminal_input: terminal
|
||||
terminal_output: terminal
|
||||
test: test
|
||||
testload: testload
|
||||
time: time
|
||||
true: true
|
||||
videoinfo: videoinfo
|
||||
videotest: videotest
|
||||
write_byte: memrw
|
||||
write_dword: memrw
|
||||
write_word: memrw
|
||||
xen_hypervisor: xen_boot
|
||||
xen_module: xen_boot
|
||||
xnu_uuid: xnu_uuid
|
||||
zfs-bootfs: zfsinfo
|
||||
zfsinfo: zfsinfo
|
BIN
INSTALL/grub/arm64-efi/cpio.mod
Normal file
BIN
INSTALL/grub/arm64-efi/cpio.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/cpio_be.mod
Normal file
BIN
INSTALL/grub/arm64-efi/cpio_be.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/crc64.mod
Normal file
BIN
INSTALL/grub/arm64-efi/crc64.mod
Normal file
Binary file not shown.
45
INSTALL/grub/arm64-efi/crypto.lst
Normal file
45
INSTALL/grub/arm64-efi/crypto.lst
Normal file
@ -0,0 +1,45 @@
|
||||
RIJNDAEL: gcry_rijndael
|
||||
RIJNDAEL192: gcry_rijndael
|
||||
RIJNDAEL256: gcry_rijndael
|
||||
AES128: gcry_rijndael
|
||||
AES-128: gcry_rijndael
|
||||
AES-192: gcry_rijndael
|
||||
AES-256: gcry_rijndael
|
||||
ADLER32: adler32
|
||||
CRC64: crc64
|
||||
ARCFOUR: gcry_arcfour
|
||||
BLOWFISH: gcry_blowfish
|
||||
CAMELLIA128: gcry_camellia
|
||||
CAMELLIA192: gcry_camellia
|
||||
CAMELLIA256: gcry_camellia
|
||||
CAST5: gcry_cast5
|
||||
CRC32: gcry_crc
|
||||
CRC32RFC1510: gcry_crc
|
||||
CRC24RFC2440: gcry_crc
|
||||
DES: gcry_des
|
||||
3DES: gcry_des
|
||||
DSA: gcry_dsa
|
||||
IDEA: gcry_idea
|
||||
MD4: gcry_md4
|
||||
MD5: gcry_md5
|
||||
RFC2268_40: gcry_rfc2268
|
||||
AES: gcry_rijndael
|
||||
AES192: gcry_rijndael
|
||||
AES256: gcry_rijndael
|
||||
RIPEMD160: gcry_rmd160
|
||||
RSA: gcry_rsa
|
||||
SEED: gcry_seed
|
||||
SERPENT128: gcry_serpent
|
||||
SERPENT192: gcry_serpent
|
||||
SERPENT256: gcry_serpent
|
||||
SHA1: gcry_sha1
|
||||
SHA224: gcry_sha256
|
||||
SHA256: gcry_sha256
|
||||
SHA512: gcry_sha512
|
||||
SHA384: gcry_sha512
|
||||
TIGER192: gcry_tiger
|
||||
TIGER: gcry_tiger
|
||||
TIGER2: gcry_tiger
|
||||
TWOFISH: gcry_twofish
|
||||
TWOFISH128: gcry_twofish
|
||||
WHIRLPOOL: gcry_whirlpool
|
BIN
INSTALL/grub/arm64-efi/cryptodisk.mod
Normal file
BIN
INSTALL/grub/arm64-efi/cryptodisk.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/ctz_test.mod
Normal file
BIN
INSTALL/grub/arm64-efi/ctz_test.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/date.mod
Normal file
BIN
INSTALL/grub/arm64-efi/date.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/datehook.mod
Normal file
BIN
INSTALL/grub/arm64-efi/datehook.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/disk.mod
Normal file
BIN
INSTALL/grub/arm64-efi/disk.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/div.mod
Normal file
BIN
INSTALL/grub/arm64-efi/div.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/div_test.mod
Normal file
BIN
INSTALL/grub/arm64-efi/div_test.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/dm_nv.mod
Normal file
BIN
INSTALL/grub/arm64-efi/dm_nv.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/efinet.mod
Normal file
BIN
INSTALL/grub/arm64-efi/efinet.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/elf.mod
Normal file
BIN
INSTALL/grub/arm64-efi/elf.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/eval.mod
Normal file
BIN
INSTALL/grub/arm64-efi/eval.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/exfctest.mod
Normal file
BIN
INSTALL/grub/arm64-efi/exfctest.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/f2fs.mod
Normal file
BIN
INSTALL/grub/arm64-efi/f2fs.mod
Normal file
Binary file not shown.
0
INSTALL/grub/arm64-efi/fdt.lst
Normal file
0
INSTALL/grub/arm64-efi/fdt.lst
Normal file
BIN
INSTALL/grub/arm64-efi/fdt.mod
Normal file
BIN
INSTALL/grub/arm64-efi/fdt.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/file.mod
Normal file
BIN
INSTALL/grub/arm64-efi/file.mod
Normal file
Binary file not shown.
37
INSTALL/grub/arm64-efi/fs.lst
Normal file
37
INSTALL/grub/arm64-efi/fs.lst
Normal file
@ -0,0 +1,37 @@
|
||||
affs
|
||||
afs
|
||||
bfs
|
||||
btrfs
|
||||
cbfs
|
||||
cpio
|
||||
cpio_be
|
||||
exfat
|
||||
ext2
|
||||
f2fs
|
||||
fat
|
||||
hfs
|
||||
hfsplus
|
||||
iso9660
|
||||
jfs
|
||||
minix
|
||||
minix2
|
||||
minix2_be
|
||||
minix3
|
||||
minix3_be
|
||||
minix_be
|
||||
newc
|
||||
nilfs2
|
||||
ntfs
|
||||
odc
|
||||
procfs
|
||||
reiserfs
|
||||
romfs
|
||||
sfs
|
||||
squash4
|
||||
tar
|
||||
udf
|
||||
ufs1
|
||||
ufs1_be
|
||||
ufs2
|
||||
xfs
|
||||
zfs
|
BIN
INSTALL/grub/arm64-efi/functional_test.mod
Normal file
BIN
INSTALL/grub/arm64-efi/functional_test.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/gcry_arcfour.mod
Normal file
BIN
INSTALL/grub/arm64-efi/gcry_arcfour.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/gcry_blowfish.mod
Normal file
BIN
INSTALL/grub/arm64-efi/gcry_blowfish.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/gcry_camellia.mod
Normal file
BIN
INSTALL/grub/arm64-efi/gcry_camellia.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/gcry_cast5.mod
Normal file
BIN
INSTALL/grub/arm64-efi/gcry_cast5.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/gcry_crc.mod
Normal file
BIN
INSTALL/grub/arm64-efi/gcry_crc.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/gcry_des.mod
Normal file
BIN
INSTALL/grub/arm64-efi/gcry_des.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/gcry_dsa.mod
Normal file
BIN
INSTALL/grub/arm64-efi/gcry_dsa.mod
Normal file
Binary file not shown.
BIN
INSTALL/grub/arm64-efi/gcry_idea.mod
Normal file
BIN
INSTALL/grub/arm64-efi/gcry_idea.mod
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user