From e5fa5e6d84b12730219986d507f036f096c4dfeb Mon Sep 17 00:00:00 2001 From: longpanda Date: Wed, 12 Jan 2022 10:24:44 +0800 Subject: [PATCH] VTOY_LINUX_REMOUNT support for both 64bit(x86_64) and 32bit(i386) linux distro. --- DMPATCH/dmpatch.c | 12 ++++++++++-- DMPATCH/readme.txt | 2 +- IMG/cpio/ventoy/hook/ventoy-hook-lib.sh | 2 ++ IMG/cpio_x86/ventoy/tool/dm_patch_32.ko | Bin 0 -> 5348 bytes IMG/cpio_x86/ventoy/tool/dm_patch_64.ko | Bin 7064 -> 7064 bytes 5 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 IMG/cpio_x86/ventoy/tool/dm_patch_32.ko 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 0000000000000000000000000000000000000000..ff41d2c9752da0112c5e13a6791834c784d5a33b GIT binary patch literal 5348 zcmeHLe{3AZ6`u9AV4|e?p;&?vl?7syR`qi0T%0)cA`9Zg0VhggOp}JNtZ&D@C3m~m zyT)YaCQmJY^a5~iac5F>CN9Rt?KZOJ=Lfp z&s3b9cxNf-f;{yq2yE*1OE}<@H&m-tF=PIvsaI|hjv5S>uZ4At5>=cVpj>?&flF<) z*S+br=&NVSD**csOkC_+KDh?o^0#3VwF)dJr11$EYoswphAxd+GRTweLU*DC-7z|6 zStkvRm1&{!I&`JBIH|P4+4yJG>i4kD3j_Nxa9#Sng#lu;O2)q8Z0X>o-_EFulOH3q^RtpLJgpY}N2!gn_CVj>^mQUOp3M9Q!_za``kWo6()zF;=s#5FH9l?AItF+X-lvdaGb1QS+3_|ozM}hW zbGR6!obhkBW@}wE}>0{j{{J$t{f;{}>+81iA=mbF)c2i++0pe)sp*~ZPBU(rs1Yxh_g^v?V_$9Z z#u$BNEJ%!9vtU4rv8Cc$<}T>u(b(0Ds%MfOG>x^gcHrG;OND(k+XB2FP4UU+qJ0gG z=BI%VqK!zq03@MWSYs{hF<~)w6H43`?BF@rt!Pv~Ygpyy(%&cSYuJm@R{oQ)Nmur1 z=yAmIWV{byA4Nq@6*R@K07=yTKb87gAnkVuY~XeJU(W2#m(6YH7f`60J9qIj=W z-~rEN>=d_BzQfs}T!5&2+`I^`xa?;NPDBSw@ABB+BPBL zJtD_T(ter{YtVPIrsHpy>>FSh`NLU!0s_OJhH0hIYh{dhkuemx8K=W_m?4I0|0^*9 zo-sl`7BVC79Xqrsf@zq|W`Y@b-mW+7@e1Ib z6O39%@rXAhQEln_aQwMO5j}B8D1)Rc-u?L5>Vd69m&z!Rcvw!zQSj(@L5VJv00ygHQe`PIaloz_0RbGAqo${mB?ZJ-+{eCDR9?8$pXkGgKAR*rFnksto zQF}q67(_SS7_7lZT$K~z5^n_t=(&Cajn*Zd&Y<=Nl^w-}wTC84Q7Vqt#Jd**uPYKz G@jeH2I?xIL literal 0 HcmV?d00001 diff --git a/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko b/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko index 7c548e5f8cc408f66f43bfe6704f4362dbdfc9d7..948f92747790bb2467143f428028bd32ad772a3b 100644 GIT binary patch delta 31 ncmbPXKEr%MfXI=sLXp<9a!QFhUFt$JWxcMiDYx2~Vj>Lyz5@%a delta 31 ncmbPXKEr%MfXHpv