web-dev-qa-db-ja.com

カーネルのグラフィックスドライバーとXorgのグラフィックスドライバーの違いは何ですか?

Kernel 4.15.0メインラインを Kernel PPA からインストールし、PCを起動して最小限のGUIをインストールしました。その後、何が実行されているかを確認し、nouveauドライバーがロードされていることに気付きましたが、GUIをインストールするときにUbuntuパッケージxserver-xorg-video-nouveauのインストールを明示的に選択しませんでした。

modinfoを使用して、ロードされているモジュールを確認しました。これは出力です:/lib/modules/4.15.0-041500-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko

Ubuntuが提供するパッケージの内容を buntuパッケージディレクトリ で検索すると、これらのファイルが一覧表示されます。

/usr/lib/xorg/modules/drivers/nouveau_drv.so /usr/share/bug/xserver-xorg-video-nouveau/script /usr/share/doc/xserver-xorg-video-nouveau/NEWS.Debian.gz /usr/share/doc/xserver-xorg-video-nouveau/README.Debian /usr/share/doc/xserver-xorg-video-nouveau/changelog.Debian.gz /usr/share/doc/xserver-xorg-video-nouveau/copyright /usr/share/man/man4/nouveau.4.gz

そして、私は明らかにドライバーを使用していますが、システムにこのファイルがありません:/usr/lib/xorg/modules/drivers/nouveau_drv.so

これらの2つのファイルに違いがある場合、どのような違いがありますか?.

3
Uri Herrera

2つのファイルの違い

違いは多くのレベルで見つけることができます。この限られた答えのために、サイズの違いとアプリケーションの違いが説明されています。

サイズの違い

$ ll /usr/lib/xorg/modules/drivers/nouveau_drv.so
-rw-r--r-- 1 root root 221200 Jul  6  2017 /usr/lib/xorg/modules/drivers/nouveau_drv.so
$ ll /lib/modules/4.14.20-041420-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko
-rw-r--r-- 1 root root 3646510 Feb 16 15:53 /lib/modules/4.14.20-041420-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko

カーネルNouveauモジュールは、Xorgドライバーの16倍です。これは、カーネルモジュールがより多くのことを行うことを意味します。

追加のXorgドライバー いくつかのシステム(特にラップトップ)には次のものがあります。

Debianでは、X.Org Serverの2Dグラフィックドライバーは個別にパッケージ化され、xserver-xorg-video- *と呼ばれます。[7]インストール後、2Dグラフィックドライバーファイルは/ usr/lib/xorg/modules/drivers /にあります。パッケージxserver-xorg-video-nouveauは215 KiBのサイズでnouveau_drv.soをインストールし、独自のNvidia GeForceドライバーはnvidia_drv.soと呼ばれる8 MiBサイズのファイルをインストールします...

nvidia_drv.sonouveau_drv.soの37倍です。

アプリケーションの違い

カーネルNouveauモジュールは.koファイルであり、Xorgドライバーは.drv.soファイルタイプです。 この質問 は、2つのファイルタイプの違いを尋ねます。ベストアンサー(IMO)の状態:

素人の言葉で:

カーネルモジュール(ko)はカーネルスペースで実行され、ユーザーモジュール(so)はユーザースペースで実行されます。

カーネルスペースは、ユーザースペースではできないさまざまな機能へのアクセスを容易にします(または許可しません)。

カーネルモジュールは常にカーネルスペースで実行され、バグがある場合やエラーがある場合は、システムがフリーズする可能性があります。

ユーザー空間は「保護」されており、バグのあるモジュールやアプリがシステムをクラッシュさせる可能性は低くなります。

4