1 1. install ubuntu 21.10
2 2. apt-get install build-essential flex libncurses-dev linux-headers-generic linux-source libssl-dev ...... and so on
3 3. cp /lib/modules/5.13.0-23-generic/build/Module.symvers ./
4 4. /boot/config-5.13.0-23-generic as .config make oldconfig
6 1. close CONFIG_STACKPROTECTOR
7 2. close CONFIG_RETPOLINE
9 6. modify ./scripts/mod/modpost.c
10 1. skip add_srcversion (just return)
11 2. force add_retpoline (#ifdef --> #ifndef)
12 3. force add_intree_flag
14 7. make modules_prepare LOCALVERSION=-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
16 8. Append padding at the end of struct module <include/linux/module.h>
18 enum module_state state;
20 /* Member of list of modules */
21 struct list_head list;
23 /* Unique handle for this module */
24 char name[MODULE_NAME_LEN];
31 This is because struct module size is different in different kernel versions or with different CONFIG item.
34 9. make modules M=/home/dmpatch
35 10. strip --strip-debug /home/dmpatch/dm_patch.ko