/etc/modules-load.d/および/etc/modprobe.dにエントリが提供されていない場合、起動時にカーネルモジュールがどのようにロードされますか?

/etc/modules-load.d/および/etc/modprobe.dにエントリが提供されていない場合、起動時にカーネルモジュールがどのようにロードされますか?

Ubuntu表示するマシンがあります。

root@test:/etc# lsmod | tail
crypto_simd            16384  1 aesni_intel
net_failover           20480  1 virtio_net
cryptd                 24576  2 crypto_simd,ghash_clmulni_intel
drm                   622592  3 drm_kms_helper,cirrus
psmouse               176128  0
i2c_piix4              32768  0
virtio_blk             20480  1
failover               16384  1 net_failover
pata_acpi              16384  0
floppy                118784  0

/etc/modules-load.dただし、上記のモジュールにはまたはに項目がありません/etc/modprobe.d

私の質問は、上記のディレクトリにエントリがないと、このモジュールをどのようにロードできるかということです。

答え1

一部のモジュールは、他のモジュールがそれに依存するためにロードされます。あなたの例では必要なのでロードされ、必要なのでfailoverロードされます。リストの4番目の列は、このような依存関係を表します。net_failovernet_failovervirtio_netnet_failoverlsmod

ハードウェア情報がファームウェア(ACPIやDMIなど)によって提供されている場合、またはハードウェアが自動的に検出可能な場合(PCI / PCIe、USBバス、またはCPUタイプなど)、カーネルは自動的にそのモジュールをロードできます。

次の行の後にsudo modprobe -c | less長いシーケンスを実行して見つけます。alias

# End of configuration files. Dumping indexes now:

デフォルトでは、カーネルモジュールには、ファームウェアまたはバス固有の自動検出メカニズムが提供できる識別子を使用してサポートするハードウェアを記述するためのエイリアス情報が組み込まれています。モジュールツールはこの情報をインデックスとして収集し、設定の一部にしますmodprobe

カーネルがハードウェアを調査したら、ファームウェアから提供された情報またはハードウェア自動調査の結果を使用して、各ファームウェアまたはバスタイプに固有の方法でフォーマットされた名前を使用してモジュールロード要求を生成します。リストされているエイリアスの1つがカーネルから要求されたエイリアスと一致すると、そのモジュールがロードされます。

/etc/initramfs-tools/modulesルートファイルシステムをマウントする前にinitramfsに含まれてロードされる必要があるモジュールのリストを指定するために使用できるファイルもあります。

あなたの具体的な場合:

  • crypto_simdaesni_intelCPUタイプ固有の自動検出エイリアスを使用してロードできる依存関係としてロードされます。

  • cryptdcrypto_simd両方のモジュール(上記を参照)によってロードする必要があります。ghash_clmulni_intelこれは、CPUタイプ固有の自動検索エイリアスによってロードできます。

  • GPUcirrusモジュールはPCI IDによって自動的に検出され、次に依存関係で必要になるdrm_kms_helper場合があります。また、に独自の依存関係を指定します。drmdrm_kms_helperdrm

  • psmouse、ACPIファームウェア情報によって自動的に検出されますpata_acpifloppy

  • i2c_piix4PCIデバイスIDを介して自動的に検出できます。

  • virtio_blkVirtIOは、特定の検出メカニズムによって自動的に検出され、virtio_netVirtIOは、virtioバスドライバがロードされた場合(またはプライマリカーネルに組み込まれている場合)、ACPI情報またはPCIデバイスIDを介して独自に検出できる「仮想バス」を定義します。 。 、利用可能なVirtIO機能をハイパーバイザー/ホストOSに照会する独自の方法があります。クエリへの応答に基づいてカーネルが要求され、ロードされvirtio_blkますvirtio_net

関連情報