X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/d1679871a6699172a7d19de4499dd9240f3602f4..HEAD:/IMG/cpio/ventoy/loop/openwrt/ventoy-disk.sh?ds=sidebyside diff --git a/IMG/cpio/ventoy/loop/openwrt/ventoy-disk.sh b/IMG/cpio/ventoy/loop/openwrt/ventoy-disk.sh index e1ef7e6..52f46d6 100644 --- a/IMG/cpio/ventoy/loop/openwrt/ventoy-disk.sh +++ b/IMG/cpio/ventoy/loop/openwrt/ventoy-disk.sh @@ -27,15 +27,83 @@ vtlog "####### $0 $* ########" VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH -for i in $(ls /sys/block/); do - if ! [ -e /dev/$i ]; then - blkdev_num=$(sed 's/:/ /g' /sys/block/$i/dev) - vtlog "mknod -m 0666 /dev/$i b $blkdev_num" - mknod -m 0666 /dev/$i b $blkdev_num +check_mkdev_node() { + for i in $(ls /sys/class/block/); do + if ! [ -e /dev/$i ]; then + blkdev_num=$(sed 's/:/ /g' /sys/class/block/$i/dev) + vtlog "mknod -m 0666 /dev/$i b $blkdev_num" + mknod -m 0666 /dev/$i b $blkdev_num + fi + done +} + +check_insmod() { + if [ -f "$1" ]; then + vtlog "insmod $1" + insmod "$1" >> $VTOY_PATH/log 2>&1 + else + vtlog "$1 not exist" + fi +} + +wrt_insmod() { + kbit=$1 + kv=$(uname -r) + + vtlog "insmod $kv $kbit" + + check_insmod /ventoy_openwrt/$kv/$kbit/dax.ko + check_insmod /ventoy_openwrt/$kv/$kbit/dm-mod.ko +} + +insmod_dm_mod() { + if grep -q "device-mapper" /proc/devices; then + vtlog "device-mapper enabled by system 0" + return + fi + + check_insmod /ventoy/modules/dax.ko + check_insmod /ventoy/modules/dm-mod.ko + + if grep -q "device-mapper" /proc/devices; then + vtlog "device-mapper enabled by system 1" + return + fi + + if [ -f /ventoy_openwrt.xz ]; then + tar xf /ventoy_openwrt.xz -C / + rm -f /ventoy_openwrt.xz fi + + if uname -m | egrep -q "amd64|x86_64"; then + wrt_insmod 64 + else + wrt_insmod generic + if lsmod | grep -q 'dm-mod'; then + vterr "insmod generic failed" + else + wrt_insmod legacy + fi + fi +} + +insmod_dm_mod + +check_mkdev_node +sleep 1 + +while [ -n "Y" ]; do + vtusb_disk=$(get_ventoy_disk_name) + if check_usb_disk_ready "$vtusb_disk"; then + vtlog "get_ventoy_disk_name $vtusb_disk ready" + break; + else + vtlog "get_ventoy_disk_name $vtusb_disk not ready" + sleep 2 + check_mkdev_node + fi done -wait_for_usb_disk_ready vtdiskname=$(get_ventoy_disk_name) if [ "$vtdiskname" = "unknown" ]; then @@ -52,6 +120,8 @@ echo -n $vtDM > /ventoy/vtDM ventoy_create_dev_ventoy_part mdev -s +check_mkdev_node + mkdir /ventoy_rdroot mount /dev/ventoy2 /ventoy_rdroot