Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/ventoy/Ventoy
Browse files Browse the repository at this point in the history
  • Loading branch information
ventoy committed Jul 11, 2020
2 parents 49ceaa0 + 23986d7 commit aa0a2ed
Show file tree
Hide file tree
Showing 28 changed files with 269 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ STATIC EFI_STATUS EFIAPI ventoy_read_iso_sector
MapLba, secRead * 2048, pCurBuf);
if (EFI_ERROR(Status))
{
debug("Raw disk read block failed %r", Status);
debug("Raw disk read block failed %r LBA:%lu Count:%u", Status, MapLba, secRead);
return Status;
}

Expand Down
1 change: 1 addition & 0 deletions GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_def.h
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,7 @@ void ventoy_debug(const char *fmt, ...);
#define FLAG_HEADER_COMPRESS_RESERVED 0x00010000
#define FLAG_HEADER_COMPRESS_XPRESS 0x00020000
#define FLAG_HEADER_COMPRESS_LZX 0x00040000
#define FLAG_HEADER_COMPRESS_LZMS 0x00080000

#define RESHDR_FLAG_FREE 0x01
#define RESHDR_FLAG_METADATA 0x02
Expand Down
4 changes: 2 additions & 2 deletions GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_windows.c
Original file line number Diff line number Diff line change
Expand Up @@ -811,9 +811,9 @@ static int ventoy_wimdows_locate_wim(const char *disk, wim_patch *patch)
return 1;
}

if (head->flags & FLAG_HEADER_COMPRESS_XPRESS)
if ((head->flags & FLAG_HEADER_COMPRESS_XPRESS) || (head->flags & FLAG_HEADER_COMPRESS_LZMS))
{
debug("Xpress compress is not supported 0x%x\n", head->flags);
debug("Xpress or LZMS compress is not supported 0x%x\n", head->flags);
grub_file_close(file);
return 1;
}
Expand Down
47 changes: 47 additions & 0 deletions IMG/cpio/ventoy/hook/cdlinux/disk-hook.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/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

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
43 changes: 43 additions & 0 deletions IMG/cpio/ventoy/hook/cdlinux/ventoy-hook.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/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

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"
12 changes: 11 additions & 1 deletion IMG/cpio/ventoy/hook/debian/default-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
#
#************************************************************************************

CD_DETECT="/var/lib/dpkg/info/cdrom-detect.postinst"

if [ -e /init ] && $GREP -q '^mountroot$' /init; then
echo "Here before mountroot ..." >> $VTLOG

Expand All @@ -29,7 +31,15 @@ if [ -e /init ] && $GREP -q '^mountroot$' /init; then
$SED "s#^ *LIVEMEDIA=.*#LIVEMEDIA=/dev/mapper/ventoy#" -i /scripts/casper
fi
fi

elif [ -e "$CD_DETECT" ]; then
echo "$CD_DETECT exist, now add hook in it..." >> $VTLOG

$SED "1 a $BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/disk_mount_hook.sh" -i "$CD_DETECT"
TITLE_LINE=$($GREP -m1 '^hw-detect.*detect_progress_title' "$CD_DETECT")
if [ $? -eq 0 ]; then
echo "add $TITLE_LINE for hook" >> $VTLOG
$SED "1 a$TITLE_LINE" -i "$CD_DETECT"
fi
elif [ -e /init ] && $GREP -q '/start-udev$' /init; then
echo "Here use notify ..." >> $VTLOG

Expand Down
4 changes: 3 additions & 1 deletion IMG/cpio/ventoy/hook/debian/ventoy-inotifyd-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@ if is_ventoy_hook_finished; then
exit 0
fi

vtlog "##### INOTIFYD: $2/$3 is created ..."

VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH

if is_inotify_ventoy_part $3; then
vtlog "##### INOTIFYD: $2/$3 is created (YES) ..."
vtlog "find ventoy partition $3 ..."
$BUSYBOX_PATH/sh $VTOY_PATH/hook/debian/udev_disk_hook.sh "$3"
else
vtlog "##### INOTIFYD: $2/$3 is created (NO)..."
fi

PATH=$VTPATH_OLD
6 changes: 4 additions & 2 deletions IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ if is_ventoy_hook_finished; then
exit 0
fi

vtlog "##### INOTIFYD: $2/$3 is created ..."

VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH

if is_inotify_ventoy_part $3; then
vtlog "##### INOTIFYD: $2/$3 is created (YES)..."

vtlog "find ventoy partition $3 ..."
$BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 noreplace

Expand All @@ -42,6 +42,8 @@ if is_inotify_ventoy_part $3; then
# fi

set_ventoy_hook_finish
else
vtlog "##### INOTIFYD: $2/$3 is created (NO)..."
fi

PATH=$VTPATH_OLD
7 changes: 4 additions & 3 deletions IMG/cpio/ventoy/hook/mageia/ventoy-inotifyd-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,11 @@ if is_ventoy_hook_finished; then
exit 0
fi

vtlog "##### INOTIFYD: $2/$3 is created ..."

VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH

if is_inotify_ventoy_part $3; then

vtlog "##### INOTIFYD: $2/$3 is created (YES) ..."

vtlog "find ventoy partition ..."
$BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh $3 noreplace

Expand Down Expand Up @@ -64,6 +63,8 @@ if is_inotify_ventoy_part $3; then
fi

set_ventoy_hook_finish
else
vtlog "##### INOTIFYD: $2/$3 is created (NO) ..."
fi

PATH=$VTPATH_OLD
5 changes: 3 additions & 2 deletions IMG/cpio/ventoy/hook/manjaro/ventoy-inotifyd-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,10 @@ if is_ventoy_hook_finished; then
exit 0
fi

vtlog "##### INOTIFYD: $2/$3 is created ..."

VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH

if is_inotify_ventoy_part $3; then
vtlog "##### INOTIFYD: $2/$3 is created (YES) ..."
vtlog "find ventoy partition $3 ..."
$BUSYBOX_PATH/sh $VTOY_PATH/hook/default/udev_disk_hook.sh "$3"

Expand All @@ -41,6 +40,8 @@ if is_inotify_ventoy_part $3; then
mkdir -p /dev/disk/by-label
fi
$BUSYBOX_PATH/cp -a /dev/$vtDM /dev/disk/by-label/$vtLABEL
else
vtlog "##### INOTIFYD: $2/$3 is created (NO) ..."
fi

PATH=$VTPATH_OLD
47 changes: 47 additions & 0 deletions IMG/cpio/ventoy/hook/pmagic/disk-hook.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/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

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
32 changes: 32 additions & 0 deletions IMG/cpio/ventoy/hook/pmagic/udev_disk_hook.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/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

if is_ventoy_hook_finished || not_ventoy_disk "${1:0:-1}"; then
exit 0
fi

ventoy_udev_disk_common_hook $* "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

# OK finish
set_ventoy_hook_finish

31 changes: 31 additions & 0 deletions IMG/cpio/ventoy/hook/pmagic/ventoy-hook.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/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

if $GREP -q 'Searching *for *PMAGIC' /init; then
echo "Find Searching PMAGIC" >> $VTLOG
$SED "/Searching *for *PMAGIC/a\ root=/dev/ventoy" -i /init
$SED "/Searching *for *PMAGIC/a\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/pmagic/disk-hook.sh" -i /init
else
echo "Use default..." >> $VTLOG
$SED "s#^root=.*cmdline.*#root=/dev/ventoy#g'" -i /init
ventoy_systemd_udevd_work_around
ventoy_add_udev_rule "$VTOY_PATH/hook/pmagic/udev_disk_hook.sh %k"
fi
6 changes: 4 additions & 2 deletions IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ if is_ventoy_hook_finished; then
exit 0
fi

vtlog "##### INOTIFYD: $2/$3 is created ..."

VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH

if is_inotify_ventoy_part $3; then

vtlog "##### INOTIFYD: $2/$3 is created (YES) ..."

vtGenRulFile='/etc/udev/rules.d/99-live-squash.rules'
if [ -e $vtGenRulFile ] && $GREP -q dmsquash $vtGenRulFile; then
vtScript=$($GREP -m1 'RUN.=' $vtGenRulFile | $AWK -F'RUN.=' '{print $2}' | $SED 's/"\(.*\)".*/\1/')
Expand Down Expand Up @@ -57,6 +57,8 @@ if is_inotify_ventoy_part $3; then
fi

set_ventoy_hook_finish
else
vtlog "##### INOTIFYD: $2/$3 is created (NO) ..."
fi

PATH=$VTPATH_OLD
12 changes: 12 additions & 0 deletions IMG/cpio/ventoy/init
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
Loading

0 comments on commit aa0a2ed

Please sign in to comment.