在 Linux 内核中,有一个“库例程”部分,其片段如下所示:
Library routines --->
<M> CRC-CCITT functions
<M> CRC ITU-T V.41 functions
<M> CRC7 functions
<M> CRC32c (Castagnoli, et al) Cyclic Redundancy-Check
<M> CRC8 function
...
...
我将大多数选项编译为“模块”,但这些模块永远不会被加载。我很想知道这些模块的用途是什么以及在什么情况下我需要它们?
内核配置帮助不是很有启发性:
This option is provided for the case where no in-kernel-tree
modules require <XYZ> functions, but a module built outside
the kernel tree does. Such modules that use library <XYZ>
functions require M here.
答案1
CCITT 代表“Comité Consultatif International Téléphonique et Télégraphique”,ITU 代表“国际电信联盟”。这些模块与电话调制解调器连接(纠错)有关。
由于即使是旧式高端调制解调器(通常通过真实的硬件串行端口与其进行通信)本身也会执行诸如 CRC 之类的操作,因此我猜测这些模块适用于低端硬件,其中很大一部分处理是由CPU完成,所谓软调制解调器
因此,除非您拥有并使用那种简单的调制解调器硬件,否则您的内核不太可能加载这些模块。
答案2
如果您启用了需要任何这些例程的驱动程序或模块,它们将自动为您强制启用。如果您可以禁用这些选项中的任何一个,则意味着您的内核中没有任何内容需要它们,这就是它们没有被加载的原因。
但并非所有驱动程序都来自内核。有些外部软件包也安装内核模块(例如二进制 nvidia 驱动程序)。如果其中任何一个需要某些库例程,您必须自己启用它们。您可以使用 来查看树外驱动程序依赖哪些模块lsmod
。
如果您不安装任何外部模块,则可以禁用所有外部模块。