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_failover
net_failover
virtio_net
net_failover
lsmod
ハードウェア情報がファームウェア(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_simd
aesni_intel
CPUタイプ固有の自動検出エイリアスを使用してロードできる依存関係としてロードされます。cryptd
crypto_simd
両方のモジュール(上記を参照)によってロードする必要があります。ghash_clmulni_intel
これは、CPUタイプ固有の自動検索エイリアスによってロードできます。GPU
cirrus
モジュールはPCI IDによって自動的に検出され、次に依存関係で必要になるdrm_kms_helper
場合があります。また、に独自の依存関係を指定します。drm
drm_kms_helper
drm
psmouse
、ACPIファームウェア情報によって自動的に検出されますpata_acpi
。floppy
i2c_piix4
PCIデバイスIDを介して自動的に検出できます。virtio_blk
VirtIOは、特定の検出メカニズムによって自動的に検出され、virtio_net
VirtIOは、virtioバスドライバがロードされた場合(またはプライマリカーネルに組み込まれている場合)、ACPI情報またはPCIデバイスIDを介して独自に検出できる「仮想バス」を定義します。 。 、利用可能なVirtIO機能をハイパーバイザー/ホストOSに照会する独自の方法があります。クエリへの応答に基づいてカーネルが要求され、ロードされvirtio_blk
ますvirtio_net
。