diff --git a/IMG/cpio/ventoy/hook/cdlinux/disk-hook.sh b/IMG/cpio/ventoy/hook/cdlinux/disk-hook.sh new file mode 100644 index 00000000000..3e46fbfd15a --- /dev/null +++ b/IMG/cpio/ventoy/hook/cdlinux/disk-hook.sh @@ -0,0 +1,47 @@ +#!/ventoy/busybox/sh +#************************************************************************************ +# Copyright (c) 2020, longpanda +# +# 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 . +# +#************************************************************************************ + +. /ventoy/hook/ventoy-hook-lib.sh + +if is_ventoy_hook_finished; then + exit 0 +fi + +vtlog "####### $0 $* ########" + +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/') +mknod -m 0666 /dev/ventoy b $blkdev_num + + +PATH=$VTPATH_OLD + +set_ventoy_hook_finish diff --git a/IMG/cpio/ventoy/hook/cdlinux/ventoy-hook.sh b/IMG/cpio/ventoy/hook/cdlinux/ventoy-hook.sh new file mode 100644 index 00000000000..32c0b09396b --- /dev/null +++ b/IMG/cpio/ventoy/hook/cdlinux/ventoy-hook.sh @@ -0,0 +1,43 @@ +#!/ventoy/busybox/sh +#************************************************************************************ +# Copyright (c) 2020, longpanda +# +# 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 . +# +#************************************************************************************ + +. $VTOY_PATH/hook/ventoy-os-lib.sh + +echo "CDlinux process..." >> $VTLOG + +$BUSYBOX_PATH/mknod -m 0660 /ventoy/ram0 b 1 0 + +$BUSYBOX_PATH/mkdir /vtmnt /ventoy_rdroot +$BUSYBOX_PATH/mount -t squashfs /ventoy/ram0 /vtmnt + +$BUSYBOX_PATH/mount -nt tmpfs -o mode=755 tmpfs /ventoy_rdroot + +$BUSYBOX_PATH/cp -a /vtmnt/* /ventoy_rdroot +$BUSYBOX_PATH/ls -1a /vtmnt/ | $GREP '^\.[^.]' | while read vtLine; do + $BUSYBOX_PATH/cp -a /vtmnt/$vtLine /ventoy_rdroot +done + +$BUSYBOX_PATH/umount /vtmnt && $BUSYBOX_PATH/rm -rf /vtmnt +$BUSYBOX_PATH/cp -a /ventoy /ventoy_rdroot + +echo "CDL_DEV=/dev/mapper/ventoy" >> /ventoy_rdroot/etc/default/cdlinux + +ventoy_set_rule_dir_prefix /ventoy_rdroot +ventoy_systemd_udevd_work_around +ventoy_add_udev_rule "$VTOY_PATH/hook/default/udev_disk_hook.sh %k" diff --git a/IMG/cpio/ventoy/init b/IMG/cpio/ventoy/init index 61659fc38aa..e46aceb62c1 100644 --- a/IMG/cpio/ventoy/init +++ b/IMG/cpio/ventoy/init @@ -72,6 +72,13 @@ ventoy_is_initrd_ramdisk() { fi } +ventoy_mount_squashfs() { + mkdir /dev + mount -t devtmpfs devtmpfs /dev + dd if=$1 of=/dev/ram0 status=none + umount /dev && rm -rf /dev +} + # param: file skip magic tmp ventoy_unpack_initramfs() { vtfile=$1; vtskip=$2; vtmagic=$3; vttmp=$4 @@ -83,6 +90,11 @@ ventoy_unpack_initramfs() { # vtmagic='1F8B' #fi + if [ "${vtmagic:0:4}" = '6873' ]; then + ventoy_mount_squashfs $vtfile + return + fi + for vtx in '1F8B zcat' '1F9E zcat' '425A bzcat' '5D00 lzcat' 'FD37 xzcat' '894C lzopcat' '0221 lz4cat' '28B5 zstdcat' '3037 cat'; do if [ "${vtx:0:4}" = "${vtmagic:0:4}" ]; then echo "vtx=$vtx" >> $VTLOG diff --git a/IMG/cpio/ventoy/ventoy.sh b/IMG/cpio/ventoy/ventoy.sh index af1f2dfe5f7..42efb2ec1c1 100644 --- a/IMG/cpio/ventoy/ventoy.sh +++ b/IMG/cpio/ventoy/ventoy.sh @@ -200,6 +200,10 @@ ventoy_get_os_type() { echo 'pmagic'; return fi + if $GREP -q 'CDlinux' /proc/cmdline; then + echo 'cdlinux'; return + fi + echo "default" } diff --git a/INSTALL/EFI/BOOT/grubx64_real.efi b/INSTALL/EFI/BOOT/grubx64_real.efi index c6874c33424..c804bdbf3ba 100644 Binary files a/INSTALL/EFI/BOOT/grubx64_real.efi and b/INSTALL/EFI/BOOT/grubx64_real.efi differ diff --git a/INSTALL/grub/grub.cfg b/INSTALL/grub/grub.cfg index 6b94d74a610..c78473933a1 100644 --- a/INSTALL/grub/grub.cfg +++ b/INSTALL/grub/grub.cfg @@ -32,7 +32,8 @@ function ventoy_debug_pause { function ventoy_cli_console { if [ "$grub_platform" = "pc" ]; then - terminal_output vga_text + #terminal_output vga_text + terminal_output console else if [ "$vtoy_display_mode" != "CLI" ]; then terminal_output console @@ -177,6 +178,8 @@ function distro_specify_initrd_file_phase2 { vt_linux_specify_initrd_file /initrd.img elif [ -f (loop)/sysresccd/boot/x86_64/sysresccd.img ]; then vt_linux_specify_initrd_file /sysresccd/boot/x86_64/sysresccd.img + elif [ -f (loop)/CDlinux/initrd ]; then + vt_linux_specify_initrd_file /CDlinux/initrd fi } @@ -578,6 +581,8 @@ function efi_unsupport_menuentry { common_unsupport_menuentry } + + ############################################################# ############################################################# ############################################################# @@ -586,7 +591,7 @@ function efi_unsupport_menuentry { ############################################################# ############################################################# -set VENTOY_VERSION="1.0.14" +set VENTOY_VERSION="1.0.15" # Default menu display mode, you can change it as you want. # 0: List mode diff --git a/INSTALL/grub/i386-pc/core.img b/INSTALL/grub/i386-pc/core.img index fa74b5c9332..c0b4c11235c 100644 Binary files a/INSTALL/grub/i386-pc/core.img and b/INSTALL/grub/i386-pc/core.img differ diff --git a/INSTALL/ventoy/ventoy.cpio b/INSTALL/ventoy/ventoy.cpio index 96816e8dc05..e71b2b2e8fd 100644 Binary files a/INSTALL/ventoy/ventoy.cpio and b/INSTALL/ventoy/ventoy.cpio differ diff --git a/INSTALL/ventoy/ventoy_x64.efi b/INSTALL/ventoy/ventoy_x64.efi index d97097324e4..6290a3350de 100644 Binary files a/INSTALL/ventoy/ventoy_x64.efi and b/INSTALL/ventoy/ventoy_x64.efi differ diff --git a/INSTALL/ventoy/vtoyjump32.exe b/INSTALL/ventoy/vtoyjump32.exe index cc54475c65c..cb054e7496e 100644 Binary files a/INSTALL/ventoy/vtoyjump32.exe and b/INSTALL/ventoy/vtoyjump32.exe differ diff --git a/INSTALL/ventoy/vtoyutil_x64.efi b/INSTALL/ventoy/vtoyutil_x64.efi new file mode 100644 index 00000000000..06bdae5716d Binary files /dev/null and b/INSTALL/ventoy/vtoyutil_x64.efi differ