第一次使用UOS虚拟机,想看看它的内核配置是否支持kprobe机制,于是开始了探索...
在网上查了查,应该是要去/boot目录下看config里有没有开启
首先要先获取root权限:
这与ubuntu等不同,需要进入控制中心,找到开发者模式,“开启开发者模式”。
重启以后:
不知道密码是什么了,我试了初始的用户的密码和union ID的密码都不行。
需要执行“sudo passwd root”,对root密码进行设置以后就可以成功改成root用户了。
这是/boot下面的config文件,是开了kprobe的
想要使用kprobe,加载内核模块,需要下载一个新的内核并进行编译,否则即使内核模块的make不报错,insmod时也会显示unknown symbol。
UOS编译新内核步骤:
1.新内核下载–清华镜像:https://mirror.tuna.tsinghua.edu.cn/kernel/v5.x/,找到想要版本的tar.gz文件下载
2.下载后,将其解压,并复制到/usr/src中,cp linux-5.10.8 /usr/src -r,并cd /usr/src
3.make menuconfig,直接save (这这里cat .config,就可以查看内核的配置信息)
4.make -j8
5.make modules_install
如果在下一步make install时,出现:Error 24 : Write error : cannot write compressed block错误,表示这一步生成的initrd.img过大,占满了/boot,这时要用:
sudo make INSTALL_MOD_STRIP=1 modules_install
6.make install
7.reboot
8.在进入开机的引导界面,按“E”,查看加载的内核版本信息,自动会加载新的内核,这里只是查看一下。进入后使用uname -r 查看加载的内核是不是新的内核。end
20230210更新
reboot以后遇到的新问题:end Kernel panic – not syncing:System is deadlocked on memory
解决办法:把虚拟机关机以后,修改内存大小4GB-》8GB。重启后,可以进入新的内核。
参考:内核编译 https://zhuanlan.zhihu.com/p/493122508