有没有办法区分真正的可加载模块和编译到内核中的模块?

有没有办法区分真正的可加载模块和编译到内核中的模块?

当查看 FreeBSD/boot/kernel和 时/boot/modules,有没有办法确定哪个是哪个而不尝试加载它们?因为如果尝试加载已编译的模块,则会kldload以“已加载”响应,这并不总是准确的。

答案1

您始终可以使用以下方式获取当前加载的模块列表kldstat(8)。例如:

Id Refs Address                Size Name
 1   58 0xffffffff80200000   fbee78 kernel
 2    1 0xffffffff81400000   3f3128 zfs.ko
 3    1 0xffffffff81310000    e6dd0 nvidia-modeset.ko
 4    1 0xffffffff81800000   db7e30 nvidia.ko
 5    2 0xffffffff825b8000    2ec10 linux.ko
 6    6 0xffffffff817f4000     add8 linux_common.ko
 7    1 0xffffffff813f7000     3378 acpi_wmi.ko
 8    1 0xffffffff813fb000     3320 usbhid.ko
 9    1 0xffffffff825e7000     31f8 hidbus.ko
10    1 0xffffffff825eb000     32c0 wmt.ko
11    1 0xffffffff825ef000    2ae90 linux64.ko
12    1 0xffffffff8261a000     2260 pty.ko
13    1 0xffffffff8261d000     73b0 linprocfs.ko
14    1 0xffffffff82625000     3284 linsysfs.ko
15    1 0xffffffff82629000     3530 fdescfs.ko

通常,输出如上所示,这应该足够了。然而,通过-v开关,实用程序将给出完整路径每个模块的目标文件 ( .ko),您可以使用它来更好地确定加载了哪个确切文件:

...
15    1 0xffffffff82629000     3530 fdescfs.ko (/boot/kernel/fdescfs.ko)
        Contains modules:
                 Id Name
                253 fdescfs

相关内容