linux – 修补和编译Ext4作为内核模块

linux – 修补和编译Ext4作为内核模块,第1张

概述我目前正在为学术目的修补Ext4(只有 linux / fs / ext4 / *,如file.c,ioctl.c,ext4.h).我正在研究QEMU虚拟机,为了加快整个过程,我选择Ext4作为内核模块进行编译.在测试新的更改时会出现问题,即使我运行make modules ARCH = x86&& make modules_install ARCH = x86并重启机器(/是Ext4),除非我重 我目前正在为学术目的修补Ext4(只有 linux / fs / ext4 / *,如file.c,ioctl.c,ext4.h).我正在研究QEMU虚拟机,为了加快整个过程,我选择Ext4作为内核模块进行编译.在测试新的更改时会出现问题,即使我运行make modules ARCH = x86&& make modules_install ARCH = x86并重启机器(/是Ext4),除非我重新编译整个内核,否则它们不可见.这有点奇怪,因为我有各种迹象表明Ext4已被编译为模块:

>它被配置为:

$grep EXT4 .configCONfig_EXT4_FS=m

>它确实编译为一个模块:

$make modules ARCH=x86(...)CC [M]  fs/ext4/ioctl.oLD [M]  fs/ext4/ext4.oBuilding modules,stage 2.MODPOST 3 modulesLD [M]  fs/ext4/ext4.ko

> $make modules_install ARCH = x86之后/lib/modules/3.13.3/kernel/fs/中的文件具有正确的时间戳.
>最后:

$lsmodModule                  Size  Used byext4                  340817  1(...)

出于某种原因,我必须做$make所有ARCH = x86,以便看到我的更改出现在运行时中.我错过了什么?谢谢!

解决方法 大多数启动进程使用“初始ramdisk”(initrd),其中包含内核需要加载的所有内核模块才能执行任何 *** 作 – 毕竟,要从Ext4文件系统读取文件,内核需要此文件的驱动程序系统,如果驱动程序在所述文件系统上,那么……

所以解决方案是将所有这些文件打包到一个存档(初始ramdisk)中,并将硬盘块保存为引导加载程序中的数字列表.然后,它可以使用原始IDE / SATA驱动程序直接加载块,提取驱动程序并加载它们.

查看linux发行版的文档,了解如何更新initrd.在我的Ubuntu linux上,它是mkinitramfs.

有关:

> Linux initial RAM disk (initrd) overview

总结

以上是内存溢出为你收集整理的linux – 修补和编译Ext4作为内核模块全部内容,希望文章能够帮你解决linux – 修补和编译Ext4作为内核模块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1050008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存