return rc;
}
+static grub_err_t ventoy_cmd_get_fs_label(grub_extcmd_context_t ctxt, int argc, char **args)
+{
+ int rc = 1;
+ char *device_name = NULL;
+ grub_device_t dev = NULL;
+ grub_fs_t fs = NULL;
+ char *label = NULL;
+
+ (void)ctxt;
+
+ if (argc != 2)
+ {
+ debug("ventoy_cmd_get_fs_label, invalid param num %d\n", argc);
+ return 1;
+ }
+
+ device_name = grub_file_get_device_name(args[0]);
+ if (!device_name)
+ {
+ debug("grub_file_get_device_name failed, %s\n", args[0]);
+ goto end;
+ }
+
+ dev = grub_device_open(device_name);
+ if (!dev)
+ {
+ debug("grub_device_open failed, %s\n", device_name);
+ goto end;
+ }
+
+ fs = grub_fs_probe(dev);
+ if (!fs)
+ {
+ debug("grub_fs_probe failed, %s\n", device_name);
+ goto end;
+ }
+
+ fs->fs_label(dev, &label);
+ if (label)
+ {
+ ventoy_set_env(args[1], label);
+ grub_free(label);
+ }
+
+ rc = 0;
+
+end:
+
+ check_free(device_name, grub_free);
+ check_free(dev, grub_device_close);
+
+ return rc;
+}
+
grub_uint64_t ventoy_grub_get_file_size(const char *fmt, ...)
{
grub_uint64_t size = 0;
{ "vt_push_last_entry", ventoy_cmd_push_last_entry, 0, NULL, "", "", NULL },
{ "vt_pop_last_entry", ventoy_cmd_pop_last_entry, 0, NULL, "", "", NULL },
{ "vt_get_lib_module_ver", ventoy_cmd_lib_module_ver, 0, NULL, "", "", NULL },
+ { "vt_get_fs_label", ventoy_cmd_get_fs_label, 0, NULL, "", "", NULL },
{ "vt_find_first_bootable_hd", ventoy_cmd_find_bootable_hdd, 0, NULL, "", "", NULL },
{ "vt_dump_menu", ventoy_cmd_dump_menu, 0, NULL, "", "", NULL },
--- /dev/null
+#!/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
+
+for i in 0 1 2 3 4 5 6 7 8 9; do
+ vtdiskname=$(get_ventoy_disk_name)
+ if [ "$vtdiskname" = "unknown" ]; then
+ vtlog "wait for disk ..."
+ $SLEEP 3
+ else
+ break
+ fi
+done
+
+ventoy_extract_vtloopex /dev/${vtdiskname#/dev/}2 crux
+
+vtLoopExDir=$VTOY_PATH/vtloopex/crux/vtloopex
+$BUSYBOX_PATH/xz -d $vtLoopExDir/dm-mod/$(uname -r)/64/dax.ko.xz
+$BUSYBOX_PATH/xz -d $vtLoopExDir/dm-mod/$(uname -r)/64/dm-mod.ko.xz
+$BUSYBOX_PATH/insmod $vtLoopExDir/dm-mod/$(uname -r)/64/dax.ko
+$BUSYBOX_PATH/insmod $vtLoopExDir/dm-mod/$(uname -r)/64/dm-mod.ko
+
+ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2"
--- /dev/null
+#!/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
+
+$SED "/find_and_mount_media.*(/a\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/crux/disk_hook.sh" -i /init
--- /dev/null
+#!/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
+
+# Just for KVM test enviroment
+$BUSYBOX_PATH/modprobe virtio_blk 2>/dev/null
+$BUSYBOX_PATH/modprobe virtio_pci 2>/dev/null
+
+for i in 0 1 2 3 4 5 6 7 8 9; do
+ vtdiskname=$(get_ventoy_disk_name)
+ if [ "$vtdiskname" = "unknown" ]; then
+ vtlog "wait for disk ..."
+ $SLEEP 2
+ else
+ break
+ fi
+done
+
+ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace"
--- /dev/null
+#!/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
+
+$SED "/mount_boot /i\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/gentoo/disk_hook.sh" -i /init
+
+$SED "s#'\.\*/block/mmcblk[^ ]*'#'\.\*/block/dm-[0-9]*'#" -i /init
--- /dev/null
+#!/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
+
+VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
+
+for i in 0 1 2 3 4 5 6 7 8 9; do
+ vtdiskname=$(get_ventoy_disk_name)
+ if [ "$vtdiskname" = "unknown" ]; then
+ vtlog "wait for disk ..."
+ sleep 3
+ else
+ break
+ fi
+done
+
+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
+
+set_ventoy_hook_finish
+
+PATH=$VTPATH_OLD
+
+
--- /dev/null
+#!/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 "/for device in/i\ $BUSYBOX_PATH/sh $VTOY_PATH/hook/phoenixos/disk_hook.sh" -i /init
+$SED "s#for device in #for device in /dev/ventoy #" -i /init
mv $VTOY_PATH/swap_tmp_dev $2
}
+ventoy_extract_vtloopex() {
+ vtCurPwd=$PWD
+ $BUSYBOX_PATH/mkdir -p $VTOY_PATH/partmnt $VTOY_PATH/vtloopex
+ $BUSYBOX_PATH/mount -o ro -t vfat /dev/${vtdiskname#/dev/}2 $VTOY_PATH/partmnt
+ cd $VTOY_PATH/vtloopex
+ $CAT $VTOY_PATH/partmnt/ventoy/vtloopex.cpio | $BUSYBOX_PATH/cpio -idm
+ $BUSYBOX_PATH/umount $VTOY_PATH/partmnt
+ $BUSYBOX_PATH/rm -rf $VTOY_PATH/partmnt
+
+ if [ -n "$2" ]; then
+ cd $VTOY_PATH/vtloopex/$2/
+ $BUSYBOX_PATH/tar -xJf vtloopex.tar.xz
+ fi
+
+ cd $vtCurPwd
+}
echo "kernel version" >> $VTLOG
$CAT /proc/version >> $VTLOG
+ if [ -d /twres ]; then
+ if $GREP -q 'Phoenix' /init; then
+ echo 'phoenixos'; return
+ fi
+ fi
+
# rhel5/CentOS5 and all other distributions based on them
if $GREP -q 'el5' /proc/version; then
echo 'rhel5'; return
# gentoo
elif $EGREP -q '[Gg]entoo' /proc/version; then
+ if $GREP -q 'daphile' /proc/version; then
+ echo 'daphile'; return
+ fi
+
echo 'gentoo'; return
# TinyCore
elif $GREP -q 'Alpine' /proc/version; then
echo 'alpine'; return
+ elif $GREP -i -q 'PhoenixOS' /proc/version; then
+ echo 'phoenixos'; return
+
# NixOS
elif $GREP -i -q 'NixOS' /proc/version; then
echo 'nixos'; return
+
fi
if [ -e /lib/debian-installer ]; then
echo 'hyperbola'; return
fi
+ if $GREP -q 'CRUX' /proc/version; then
+ echo 'crux'; return
+ fi
+
echo "default"
}
if [ -e (loop)/casper/initrd ]; then
vt_linux_specify_initrd_file /casper/initrd
fi
+ if [ -e (loop)/casper/initrd.gz ]; then
+ vt_linux_specify_initrd_file /casper/initrd.gz
+ fi
if [ -e (loop)/casper/initrd-oem ]; then
vt_linux_specify_initrd_file /casper/initrd-oem
fi
vt_linux_specify_initrd_file /initrd
elif [ -f (loop)/live/initrd1 ]; then
vt_linux_specify_initrd_file /live/initrd1
+ elif vt_strstr $vt_volume_id "Daphile"; then
+ vt_linux_parse_initrd_isolinux (loop)/isolinux/
fi
}
vt_unset_boot_opt
}
-function ventoy_img_fydeos {
-
- set ventoy_busybox_ver=64
-
- vt_load_cpio $vtoy_path/ventoy.cpio ${vt_chosen_path} ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
- vt_trailer_cpio ${vtoy_iso_part} ${vt_chosen_path} noinit
-
- # loopback easysfs (vtimghd,1)/easy.sfs
- # vt_get_lib_module_ver (easysfs) /lib/modules/ vt_module_ver
-
- # if [ -n "$vt_module_ver" ]; then
- # for mod in "kernel/drivers/md/dm-mod.ko" "kernel/drivers/dax/dax.ko"; do
- # vt_img_extra_initrd_append (easysfs)/lib/modules/$vt_module_ver/$mod
- # done
- # fi
-
- ventoy_debug_pause
-
- #boot image file
- vt_set_boot_opt rdinit=/vtoy/vtoy
- vt_img_hook_root
-
- set root=(vtimghd,12)
- configfile (vtimghd,12)/efi/boot/grub.cfg
- #syslinux_configfile (vtimghd,12)/syslinux/syslinux.cfg
-
- vt_img_unhook_root
- vt_unset_boot_opt
-}
-
function img_common_menuentry {
set ventoy_busybox_ver=32
vt_img_extra_initrd_reset
+ #vt_get_fs_label (vtimghd,1) vtImgHd1Label
+
if [ -e (vtimghd,1)/easy.sfs ]; then
ventoy_img_easyos
elif [ -e (vtimghd,1)/volumio.initrd ]; then
ventoy_img_volumio
- elif [ -e (vtimghd,3)/etc/os-release ]; then
- if vt_file_strstr (vtimghd,3)/etc/os-release FydeOS; then
- ventoy_img_fydeos
- fi
-
+
+
else
echo -e "\n This IMG file is NOT supported now. \n"
echo -e " 当前不支持启动此 IMG 文件 \n"
#############################################################
#############################################################
-set VENTOY_VERSION="1.0.18"
+set VENTOY_VERSION="1.0.19"
# Default menu display mode, you can change it as you want.
# 0: List mode
vbetest: videotest
videoinfo: videoinfo
videotest: videotest
+vt_img_extra_initrd_append: linux
+vt_img_extra_initrd_reset: linux
vt_set_boot_opt: linux
vt_unset_boot_opt: linux
write_byte: memrw
usb: usbtest
videoinfo: videoinfo
videotest: videotest
+vt_img_extra_initrd_append: linux
+vt_img_extra_initrd_reset: linux
vt_set_boot_opt: linux
vt_unset_boot_opt: linux
write_byte: memrw