mirror of
https://github.com/ventoy/Ventoy.git
synced 2024-12-26 23:25:57 -05:00
Support LibreELEC 11.0+ (#2281)
This commit is contained in:
parent
d8698b2194
commit
b47aa1abc7
@ -1533,7 +1533,7 @@ module = {
|
|||||||
name = squash4;
|
name = squash4;
|
||||||
common = fs/squash4.c;
|
common = fs/squash4.c;
|
||||||
cflags = '$(CFLAGS_POSIX) -Wno-undef';
|
cflags = '$(CFLAGS_POSIX) -Wno-undef';
|
||||||
cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/xzembed -I$(srcdir)/lib/minilzo -DMINILZO_HAVE_CONFIG_H';
|
cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/xzembed -I$(srcdir)/lib/minilzo -I$(srcdir)/lib/zstd -DMINILZO_HAVE_CONFIG_H';
|
||||||
};
|
};
|
||||||
|
|
||||||
module = {
|
module = {
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include <grub/fshelp.h>
|
#include <grub/fshelp.h>
|
||||||
#include <grub/deflate.h>
|
#include <grub/deflate.h>
|
||||||
#include <minilzo.h>
|
#include <minilzo.h>
|
||||||
|
#include <zstd.h>
|
||||||
|
|
||||||
#include "xz.h"
|
#include "xz.h"
|
||||||
#include "xz_stream.h"
|
#include "xz_stream.h"
|
||||||
@ -184,6 +185,7 @@ enum
|
|||||||
COMPRESSION_LZO = 3,
|
COMPRESSION_LZO = 3,
|
||||||
COMPRESSION_XZ = 4,
|
COMPRESSION_XZ = 4,
|
||||||
COMPRESSION_LZ4 = 5,
|
COMPRESSION_LZ4 = 5,
|
||||||
|
COMPRESSION_ZSTD = 6,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -398,6 +400,33 @@ static grub_ssize_t lz4_decompress_wrap(char *inbuf, grub_size_t insize, grub_of
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static grub_ssize_t zstd_decompress_wrap(char *inbuf, grub_size_t insize, grub_off_t off,
|
||||||
|
char *outbuf, grub_size_t len, struct grub_squash_data *data)
|
||||||
|
{
|
||||||
|
char *udata = NULL;
|
||||||
|
int usize = data->blksz;
|
||||||
|
|
||||||
|
if (off == 0)
|
||||||
|
{
|
||||||
|
ZSTD_decompress(outbuf, len, inbuf, insize);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (usize < 8192)
|
||||||
|
usize = 8192;
|
||||||
|
|
||||||
|
udata = grub_malloc (usize);
|
||||||
|
if (!udata)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
ZSTD_decompress(udata, usize, inbuf, insize);
|
||||||
|
grub_memcpy(outbuf, udata + off, len);
|
||||||
|
grub_free(udata);
|
||||||
|
}
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
static struct grub_squash_data *
|
static struct grub_squash_data *
|
||||||
squash_mount (grub_disk_t disk)
|
squash_mount (grub_disk_t disk)
|
||||||
{
|
{
|
||||||
@ -447,6 +476,9 @@ squash_mount (grub_disk_t disk)
|
|||||||
case grub_cpu_to_le16_compile_time (COMPRESSION_LZ4):
|
case grub_cpu_to_le16_compile_time (COMPRESSION_LZ4):
|
||||||
data->decompress = lz4_decompress_wrap;
|
data->decompress = lz4_decompress_wrap;
|
||||||
break;
|
break;
|
||||||
|
case grub_cpu_to_le16_compile_time (COMPRESSION_ZSTD):
|
||||||
|
data->decompress = zstd_decompress_wrap;
|
||||||
|
break;
|
||||||
case grub_cpu_to_le16_compile_time (COMPRESSION_XZ):
|
case grub_cpu_to_le16_compile_time (COMPRESSION_XZ):
|
||||||
data->decompress = xz_decompress;
|
data->decompress = xz_decompress;
|
||||||
data->xzbuf = grub_malloc (XZBUFSIZ);
|
data->xzbuf = grub_malloc (XZBUFSIZ);
|
||||||
|
@ -34,9 +34,12 @@ else
|
|||||||
vtBit=32
|
vtBit=32
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko.xz ]; then
|
||||||
xz -d $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko.xz
|
xz -d $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko.xz
|
||||||
insmod $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko
|
insmod $VTOY_PATH/vtloopex/dm-mod/$vtKerVer/$vtBit/dm-mod.ko
|
||||||
|
elif [ -f $VTOY_PATH/modules/dm-mod.ko ]; then
|
||||||
|
insmod $VTOY_PATH/modules/dm-mod.ko
|
||||||
|
fi
|
||||||
|
|
||||||
wait_for_usb_disk_ready
|
wait_for_usb_disk_ready
|
||||||
|
|
||||||
|
@ -1926,6 +1926,20 @@ function ventoy_img_openelec {
|
|||||||
loopback vtloopex $vtoy_efi_part/ventoy/vtloopex.cpio
|
loopback vtloopex $vtoy_efi_part/ventoy/vtloopex.cpio
|
||||||
vt_img_extra_initrd_append (vtloopex)/$elec_ver/vtloopex.tar.xz
|
vt_img_extra_initrd_append (vtloopex)/$elec_ver/vtloopex.tar.xz
|
||||||
|
|
||||||
|
if [ "$elec_ver" = "LibreELEC" ]; then
|
||||||
|
if [ -f (vtimghd,1)/system ]; then
|
||||||
|
loopback elecsfs (vtimghd,1)/system
|
||||||
|
vt_get_lib_module_ver (elecsfs) /usr/lib/kernel-overlays/base/lib/modules/ vt_module_ver
|
||||||
|
if [ -n "$vt_module_ver" ]; then
|
||||||
|
for mod in "kernel/drivers/md/dm-mod.ko"; do
|
||||||
|
if [ -e (elecsfs)/usr/lib/kernel-overlays/base/lib/modules/$vt_module_ver/$mod ]; then
|
||||||
|
vt_img_extra_initrd_append (elecsfs)/usr/lib/kernel-overlays/base/lib/modules/$vt_module_ver/$mod
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
ventoy_debug_pause
|
ventoy_debug_pause
|
||||||
|
|
||||||
#boot image file
|
#boot image file
|
||||||
@ -1938,6 +1952,7 @@ function ventoy_img_openelec {
|
|||||||
vt_img_unhook_root
|
vt_img_unhook_root
|
||||||
vt_unset_boot_opt
|
vt_unset_boot_opt
|
||||||
loopback -d vtloopex
|
loopback -d vtloopex
|
||||||
|
loopback -d elecsfs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user