diff --git a/IMG/cpio/ventoy/hook/crux/disk_hook.sh b/IMG/cpio/ventoy/hook/crux/disk_hook.sh index a4a6ed0a..70d31b4d 100644 --- a/IMG/cpio/ventoy/hook/crux/disk_hook.sh +++ b/IMG/cpio/ventoy/hook/crux/disk_hook.sh @@ -29,13 +29,21 @@ for i in 0 1 2 3 4 5 6 7 8 9; do fi done -ventoy_extract_vtloopex ${vtdiskname}2 crux +# no need since 3.6.1 +$BUSYBOX_PATH/modprobe dax > /dev/null 2>&1 +$BUSYBOX_PATH/modprobe dm-mod > /dev/null 2>&1 +if $GREP -q 'device-mapper' /proc/devices; then + vtlog "dm-mod module check success ..." +else + vtlog "Need to load dm-mod module ..." + ventoy_extract_vtloopex ${vtdiskname}2 crux -vtKver=$(uname -r) -vtLoopExDir=$VTOY_PATH/vtloopex/crux/vtloopex + vtKver=$(uname -r) + vtLoopExDir=$VTOY_PATH/vtloopex/crux/vtloopex -ventoy_check_install_module_xz $vtLoopExDir/dm-mod/$vtKver/64/dax.ko -ventoy_check_install_module_xz $vtLoopExDir/dm-mod/$vtKver/64/dm-mod.ko + ventoy_check_install_module_xz $vtLoopExDir/dm-mod/$vtKver/64/dax.ko + ventoy_check_install_module_xz $vtLoopExDir/dm-mod/$vtKver/64/dm-mod.ko +fi ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index 6e1dd64a..0ef69122 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -2018,7 +2018,7 @@ function img_unsupport_menuentry { ############################################################# ############################################################# -set VENTOY_VERSION="1.0.61" +set VENTOY_VERSION="1.0.62" #ACPI not compatible with Window7/8, so disable by default set VTOY_PARAM_NO_ACPI=1 diff --git a/INSTALL/ventoy/dragonfly.mfs.xz b/INSTALL/ventoy/dragonfly.mfs.xz index 6c71a87a..c15a0067 100644 Binary files a/INSTALL/ventoy/dragonfly.mfs.xz and b/INSTALL/ventoy/dragonfly.mfs.xz differ diff --git a/README.md b/README.md index fe0b1e77..05e50eb8 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,9 @@ VMware ESXi, Citrix XenServer, Xen XCP-ng # Tested Image Report [【How to report a successfully tested image file】](https://github.com/ventoy/Ventoy/issues/1195) - +# VentoyPlugson +A GUI Ventoy plugin configurator. [VentoyPlugson](https://www.ventoy.net/en/plugin_plugson.html) + # Features * 100% open source * Simple to use @@ -61,7 +63,7 @@ VMware ESXi, Citrix XenServer, Xen XCP-ng * Not only boot but also complete installation process * Menu dynamically switchable between List/TreeView mode * "Ventoy Compatible" concept -* Plugin Framework +* Plugin Framework and GUI plugin configurator * Injection files to runtime environment * Boot configuration file dynamically replacement * Highly customizable theme and menu diff --git a/Unix/ventoy_unix/DragonFly/sbin/init b/Unix/ventoy_unix/DragonFly/sbin/init index a720b579..d01482b6 100644 Binary files a/Unix/ventoy_unix/DragonFly/sbin/init and b/Unix/ventoy_unix/DragonFly/sbin/init differ diff --git a/Unix/ventoy_unix_src/DragonFly/oinit.c b/Unix/ventoy_unix_src/DragonFly/oinit.c index ae591239..53233345 100644 --- a/Unix/ventoy_unix_src/DragonFly/oinit.c +++ b/Unix/ventoy_unix_src/DragonFly/oinit.c @@ -84,7 +84,7 @@ static int setctty(const char *name) return fd; } -static void ventoy_init(char **argv_orig) +static void ventoy_init(void) { pid_t pid, wpid; int status, error; @@ -155,56 +155,55 @@ static void ventoy_init(char **argv_orig) /* step 7: swich_root */ vdebug("[VTOY] step 7: switch root ...\n"); - error = chdir("/new_root"); +} + +int main(int argc __unused, char **argv) +{ + pid_t pid, wpid; + int status, error; + size_t varsize = sizeof(int); + + /* Dispose of random users. */ + if (getuid() != 0) + errx(1, "%s", strerror(EPERM)); + + /* Init is not allowed to die, it would make the kernel panic */ + signal(SIGTERM, SIG_IGN); + + if ((pid = fork()) == 0) { + + setctty(_PATH_CONSOLE); + sysctlbyname("debug.bootverbose", &boot_verbose, &varsize, NULL, 0); + + vdebug("======= Ventoy Init Start ========\n"); + + ventoy_init(); + exit(1); /* force single user mode */ + } + + do { + wpid = waitpid(-1, &status, WUNTRACED); + } while (wpid != pid); + + error = chdir("/new_root"); if (error) - { - printf("[VTOY] chdir /new_root failed %d\n", error); goto chroot_failed; - } error = chroot_kernel("/new_root"); if (error) - { - printf("[VTOY] chroot_kernel /new_root failed %d\n", error); goto chroot_failed; - } error = chroot("/new_root"); if (error) - { - printf("[VTOY] chroot /new_root failed %d\n", error); goto chroot_failed; - } - vdebug("[VTOY] step 8: now run /sbin/init ...\n"); - execv("/sbin/init", __DECONST(char **, argv_orig)); + execv("/sbin/init", __DECONST(char **, argv)); /* We failed to exec /sbin/init in the chroot, sleep forever */ chroot_failed: - printf("[VTOY] ################### DEAD ################\n"); while(1) { sleep(3); }; -} - -int main(int argc __unused, char **argv) -{ - size_t varsize = sizeof(int); - - /* Dispose of random users. */ - if (getuid() != 0) - errx(1, "%s", strerror(EPERM)); - - /* Init is not allowed to die, it would make the kernel panic */ - signal(SIGTERM, SIG_IGN); - - setctty(_PATH_CONSOLE); - - sysctlbyname("debug.bootverbose", &boot_verbose, &varsize, NULL, 0); - - vdebug("======= Ventoy Init Start ========\n"); - - ventoy_init(argv); return 1; } diff --git a/Unix/ventoy_unix_src/DragonFly/vtutil.h b/Unix/ventoy_unix_src/DragonFly/vtutil.h index 883aeba6..4b2c6651 100644 --- a/Unix/ventoy_unix_src/DragonFly/vtutil.h +++ b/Unix/ventoy_unix_src/DragonFly/vtutil.h @@ -3,6 +3,8 @@ #define __UTIL_H__ extern int boot_verbose; +//#define vdebug(fmt, ...) +//#define verror #define vdebug(fmt, ...) if (boot_verbose) { printf(fmt, ##__VA_ARGS__); usleep(500000); } #define verror printf