]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
Fix a bug when booting latest Alpine linux.
authorlongpanda <admin@ventoy.net>
Tue, 31 May 2022 08:42:41 +0000 (16:42 +0800)
committerlongpanda <admin@ventoy.net>
Tue, 31 May 2022 08:42:41 +0000 (16:42 +0800)
IMG/cpio/ventoy/hook/alpine/insert.sh [new file with mode: 0644]
IMG/cpio/ventoy/hook/alpine/udev_disk_hook.sh
IMG/cpio/ventoy/hook/alpine/ventoy-hook.sh
IMG/cpio/ventoy/hook/debian/default-hook.sh

diff --git a/IMG/cpio/ventoy/hook/alpine/insert.sh b/IMG/cpio/ventoy/hook/alpine/insert.sh
new file mode 100644 (file)
index 0000000..65c47fa
--- /dev/null
@@ -0,0 +1,4 @@
+for i in 1 2; do 
+if [ $i -eq 2 ]; then
+    /ventoy/busybox/sh /ventoy/hook/alpine/udev_disk_hook.sh
+fi
index 91391cca10393bd85ffecbbf93d99d3262e6b7b1..df4953eccf7e6194b969880b41c033d1fed8bdb8 100644 (file)
 
 . /ventoy/hook/ventoy-hook-lib.sh
 
 
 . /ventoy/hook/ventoy-hook-lib.sh
 
-if [ "$SUBSYSTEM" != "block" ] || [ "$DEVTYPE" != "partition" ]; then    
-    exit 0
-fi
+PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
 
 
-if [ -b /dev/${MDEV:0:-1} ]; then
-    vtlog "/dev/${MDEV:0:-1} exist"
-else
-    $SLEEP 2
-fi
+wait_for_usb_disk_ready
 
 
-if is_ventoy_hook_finished || not_ventoy_disk "${MDEV:0:-1}"; then
+vtdiskname=$(get_ventoy_disk_name)
+if [ "$vtdiskname" = "unknown" ]; then
+    vtlog "ventoy disk not found"
+    PATH=$VTPATH_OLD
     exit 0
 fi
 
     exit 0
 fi
 
-PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
-
 #
 # longpanda:
 # Alpine initramfs doesn't contain dm-mod or fuse module, 
 #
 # longpanda:
 # Alpine initramfs doesn't contain dm-mod or fuse module, 
@@ -47,13 +42,17 @@ PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
 #   3. unmount and delete the squashfs file
 #
 
 #   3. unmount and delete the squashfs file
 #
 
+MDEV="${vtdiskname#/dev/}2"
+
 vtoydm -i -f $VTOY_PATH/ventoy_image_map -d /dev/${MDEV:0:-1} > $VTOY_PATH/iso_file_list
 
 vtLine=$(grep '[-][-] modloop-lts ' $VTOY_PATH/iso_file_list)
 sector=$(echo $vtLine | awk '{print $(NF-1)}')
 length=$(echo $vtLine | awk '{print $NF}')
 
 vtoydm -i -f $VTOY_PATH/ventoy_image_map -d /dev/${MDEV:0:-1} > $VTOY_PATH/iso_file_list
 
 vtLine=$(grep '[-][-] modloop-lts ' $VTOY_PATH/iso_file_list)
 sector=$(echo $vtLine | awk '{print $(NF-1)}')
 length=$(echo $vtLine | awk '{print $NF}')
 
+echo -n "Mounting boot media, please wait ......"
 vtoydm -e -f $VTOY_PATH/ventoy_image_map -d /dev/${MDEV:0:-1} -s $sector -l $length -o /vt_modloop
 vtoydm -e -f $VTOY_PATH/ventoy_image_map -d /dev/${MDEV:0:-1} -s $sector -l $length -o /vt_modloop
+echo "done"
 
 mkdir -p $VTOY_PATH/mnt
 mount /vt_modloop $VTOY_PATH/mnt
 
 mkdir -p $VTOY_PATH/mnt
 mount /vt_modloop $VTOY_PATH/mnt
index ae366cdf6daca9b21ca5f20701deb2a7867b48f1..f894966fd3b64621a6dfcead9bfe26a9ae1ecc28 100644 (file)
 
 . $VTOY_PATH/hook/ventoy-os-lib.sh
 
 
 . $VTOY_PATH/hook/ventoy-os-lib.sh
 
-echo "-[-a-z0-9]*2 root:root 0666 @$BUSYBOX_PATH/sh $VTOY_PATH/hook/alpine/udev_disk_hook.sh" >> /mdev.conf
-$CAT /etc/mdev.conf >> /mdev.conf
-$BUSYBOX_PATH/mv /mdev.conf /etc/mdev.conf
+PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH
+
+LineBegin=$(grep -n "ebegin.*Mounting boot media" /init | awk -F: '{print $1}')
+
+grep -n "^eend" /init > /t.list
+while read line; do
+    LineEnd=$(echo $line | awk -F: '{print $1}')
+    if [ $LineEnd -gt $LineBegin ]; then
+        sed "${LineEnd}i\done" -i /init
+        sed "${LineBegin}r /ventoy/hook/alpine/insert.sh" -i /init        
+        break
+    fi
+done < /t.list
+rm -f /t.list
index 37f5a9ed6f9ae03f468bf116da4db01d1e73a69f..5db56e350f56c125fd20e9a7d8f4df5215453b22 100644 (file)
@@ -64,6 +64,10 @@ if [ -f $VTOY_PATH/autoinstall ]; then
             $SED "/^mount \/proc/a export file=$VTOY_PATH/autoinstall; export auto='true'; export priority='critical'"  -i /init
         fi
     fi
             $SED "/^mount \/proc/a export file=$VTOY_PATH/autoinstall; export auto='true'; export priority='critical'"  -i /init
         fi
     fi
+    
+    # if [ -e /bin/check-missing-firmware ]; then
+    #     $SED "/^#!/a\exit 0" -i /bin/check-missing-firmware
+    # fi
 fi
 
 #for ARMA aka Omoikane
 fi
 
 #for ARMA aka Omoikane