diff --git a/DMPATCH/dmpatch.c b/DMPATCH/dmpatch.c index 1106d79e..59001425 100644 --- a/DMPATCH/dmpatch.c +++ b/DMPATCH/dmpatch.c @@ -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++; } } diff --git a/DMPATCH/readme.txt b/DMPATCH/readme.txt index 542e30a8..c71e0699 100644 --- a/DMPATCH/readme.txt +++ b/DMPATCH/readme.txt @@ -1,5 +1,5 @@ 1. install ubuntu 21.10 -2. apt-get install build-essential flex ncurse linux-headers-generic linux-source ...... and so on +2. apt-get install build-essential flex libncurses-dev linux-headers-generic linux-source libssl-dev ...... and so on 3. cp /lib/modules/5.13.0-23-generic/build/Module.symvers ./ 4. /boot/config-5.13.0-23-generic as .config make oldconfig 5. make menuconfig diff --git a/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh b/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh index cbff60a6..067bfc4b 100644 --- a/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh +++ b/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh @@ -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 index 00000000..ff41d2c9 Binary files /dev/null and b/IMG/cpio_x86/ventoy/tool/dm_patch_32.ko differ diff --git a/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko b/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko index 7c548e5f..948f9274 100644 Binary files a/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko and b/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko differ