我是初学者,学习linux内核模块开发。我正在按照一个教程说明重新编译我的内核,以便启用各种调试功能,如强制模块卸载e.t.c.如果我那样可以吗?它会影响我预先构建的内核吗?在什么情况下我被迫将模块插入到正在运行的内核中并且内核不允许我这样做?
答案 0 :(得分:0)
重新编译内核有助于我们了解内核的工作原理。
最新的内核补丁可以通过内核编译和安装来应用。
我们可以通过编译启用调试标志。
我们可以删除不需要的代码。
帮助添加自己的内核代码并测试代码。
很容易重新编译和安装Linux内核,但如果我们使用低速计算机或VM进行编译则需要更多时间。
答案 1 :(得分:0)
完全可以编译和安装内核来进行内核模块开发。如果您使用的是ubuntu,则可以按照以下步骤操作,以确保使用与引导计算机相同的内核源。
步骤1.找出从/boot/grub/grub.cfg文件启动时使用的linux。在启动时选择的引导选项条目中查找条目'linux'。 示例摘录:linux /boot/vmlinuz-3.13.0-24-generic root = UUID = e377a464-92db-4c07-86a9-b151800630c0 ro quiet splash $ vt_handoff
步骤2.使用以下命令查找具有相同版本的软件包的名称。
dpkg -l | grep linux | grep 3.13.0-24-generic
示例输出:
$ dpkg -l | grep linux | grep 3.13.0-24-generic
ii linux-headers-3.13.0-24-generic 3.13.0-24.46 amd64 Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
ii linux-image-3.13.0-24-generic 3.13.0-24.46 amd64 Linux kernel image for version 3.13.0 on 64 bit x86 SMP
ii linux-image-extra-3.13.0-24-generic 3.13.0-24.46 amd64 Linux kernel extra modules for version 3.13.0 on 64 bit x86 SMP
步骤3.下载软件包“linux-headers-3.13.0-24-generic”的源代码,以获得与PC中使用的内核相同的内核。
$ apt-get source linux-headers-3.13.0-24-generic
步骤4.使用/ boot /文件夹中的配置文件作为配置文件来编译此内核源
示例: $ ls /boot/config-3.13.0-24-generic(注意与此文件中使用的版本相同)
步骤5.打开此配置上的调试符号进行测试。