]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
VTOY_LINUX_REMOUNT support for both 64bit(x86_64) and 32bit(i386) linux distro.
authorlongpanda <admin@ventoy.net>
Wed, 12 Jan 2022 02:24:44 +0000 (10:24 +0800)
committerlongpanda <admin@ventoy.net>
Wed, 12 Jan 2022 02:24:44 +0000 (10:24 +0800)
DMPATCH/dmpatch.c
DMPATCH/readme.txt
IMG/cpio/ventoy/hook/ventoy-hook-lib.sh
IMG/cpio_x86/ventoy/tool/dm_patch_32.ko [new file with mode: 0644]
IMG/cpio_x86/ventoy/tool/dm_patch_64.ko

index 1106d79e3b09421fc6444d3c692e3af8b971275b..590014252308cd8dfead2bcbec735696ee5a1e42 100644 (file)
@@ -68,9 +68,17 @@ static volatile ko_param g_ko_param =
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 };
 
-
+#if defined(CONFIG_X86_64)
+#define PATCH_OP_POS    3
 #define CODE_MATCH(code, i) \
     (code[i] == 0x40 && code[i + 1] == 0x80 && code[i + 2] == 0xce && code[i + 3] == 0x80)
+#elif defined(CONFIG_X86_32)
+#define PATCH_OP_POS    2
+#define CODE_MATCH(code, i) \
+    (code[i] == 0x80 && code[i + 1] == 0xca && code[i + 2] == 0x80 && code[i + 3] == 0xe8)
+#else
+#error "unsupported arch"
+#endif
 
 #define vdebug(fmt, args...) if(kprintf) kprintf(KERN_ERR fmt, ##args)
 
@@ -88,7 +96,7 @@ static int notrace dmpatch_replace_code(unsigned long addr, unsigned long size,
     {
         if (CODE_MATCH(opCode, i) && cnt < MAX_PATCH)
         {
-            patch[cnt] = opCode + i + 3;
+            patch[cnt] = opCode + i + PATCH_OP_POS;
             cnt++;
         }
     }
index 542e30a8cd37f9e9af8725d459742e4d4948e0c2..c71e06995512dfbf36b6529d2dee4c2d5abb89a0 100644 (file)
@@ -1,5 +1,5 @@
 1. install ubuntu 21.10\r
-2. apt-get install build-essential flex ncurse linux-headers-generic linux-source ...... and so on\r
+2. apt-get install build-essential flex libncurses-dev linux-headers-generic linux-source libssl-dev ...... and so on\r
 3. cp /lib/modules/5.13.0-23-generic/build/Module.symvers ./\r
 4. /boot/config-5.13.0-23-generic as .config   make oldconfig\r
 5. make menuconfig \r
index cbff60a6fe4401d75f65bed9e0a4d1fb00794d28..067bfc4b0d73577da891a8a93a156baeb5b7d8ff 100644 (file)
@@ -256,6 +256,8 @@ ventoy_dm_patch() {
 
     if echo $vtMType | $EGREP -i -q "x86.64|amd64"; then
         vtKoName=dm_patch_64.ko
+    elif echo $vtMType | $EGREP -i -q "i[3-6]86"; then
+        vtKoName=dm_patch_32.ko
     else
         vtlog "unsupported machine type $vtMType"
         return
diff --git a/IMG/cpio_x86/ventoy/tool/dm_patch_32.ko b/IMG/cpio_x86/ventoy/tool/dm_patch_32.ko
new file mode 100644 (file)
index 0000000..ff41d2c
Binary files /dev/null and b/IMG/cpio_x86/ventoy/tool/dm_patch_32.ko differ
index 7c548e5f8cc408f66f43bfe6704f4362dbdfc9d7..948f92747790bb2467143f428028bd32ad772a3b 100644 (file)
Binary files a/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko and b/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko differ