<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AshMyzk</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AshMyzk"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/AshMyzk"/>
	<updated>2026-05-22T08:25:11Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=SDDM&amp;diff=41505</id>
		<title>SDDM</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=SDDM&amp;diff=41505"/>
		<updated>2026-05-05T22:17:25Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:KDE]]&lt;br /&gt;
[[Category:ディスプレイマネージャ]]&lt;br /&gt;
[[de:Login-Manager#SDDM]]&lt;br /&gt;
[[en:SDDM]]&lt;br /&gt;
[[fr:SDDM]]&lt;br /&gt;
[[hu:SDDM]]&lt;br /&gt;
[[ru:SDDM]]&lt;br /&gt;
[[zh-hans:SDDM]]&lt;br /&gt;
[https://github.com/sddm/sddm/ Simple Desktop Display Manager] (SDDM) は[[ディスプレイマネージャ]]です。[[LXQt]] デスクトップ環境の推奨ディスプレイマネージャです。&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Simple Desktop Display Manager]] より:&lt;br /&gt;
&lt;br /&gt;
:Simple Desktop Display Manager (SDDM) は、X Window SystemとWayland向けのディスプレイマネージャである。SDDMはC++11で書かれており、QMLによるテーマをサポートしている。&lt;br /&gt;
&lt;br /&gt;
{{Note|SDDM バージョン 0.20 の時点で、[[Wayland]] セッションは一覧に表示され、SDDM から起動することは可能ですが、SDDM greeter 自体はデフォルトでは依然として X11 モードで動作します。しかし、実験的な Wayland greeter を[[#Wayland|有効化することが可能です]]。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|sddm}} パッケージを[[インストール]]してください。任意で [[KDE#KCM|KConfig Module]] のための {{Pkg|sddm-kcm}} や Qt5 テーマのサポートを有効化する {{Pkg|qt5-declarative}} もインストールしてください。&lt;br /&gt;
&lt;br /&gt;
[[ディスプレイマネージャ#ディスプレイマネージャをロードする]]に従って、ブート時に SDDM を起動させてください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
SDDM のデフォルト設定ファイルは {{ic|/usr/lib/sddm/sddm.conf.d/default.conf}} に存在します。設定を変更するときは {{ic|/etc/sddm.conf.d/}} に設定ファイルを作成してください。利用可能なオプションは {{man|5|sddm.conf}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
({{grp|plasma}} グループに含まれている) {{pkg|sddm-kcm}} パッケージをインストールすることで Plasma のシステム設定から GUI で SDDM を設定できます。[[Qt]] ベースの設定エディタ {{AUR|sddm-conf-git}} も存在します。&lt;br /&gt;
&lt;br /&gt;
Arch Linux は [[systemd]] を使用していて、さらに SDDM はデフォルトで {{ic|systemd-logind}} をセッション管理に使用するので、特に設定せずに機能するはずです。&lt;br /&gt;
&lt;br /&gt;
=== 自動ログイン ===&lt;br /&gt;
&lt;br /&gt;
SDDM は設定ファイルによって自動ログインをサポートしています、例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/autologin.conf|2=&lt;br /&gt;
[Autologin]&lt;br /&gt;
User=john&lt;br /&gt;
Session=plasma&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上の設定だと、システムが起動した時に {{ic|john}} ユーザーで KDE Plasma セッションが起動します。利用できるセッションのタイプについては、X 用は {{ic|/usr/share/xsessions/}} で、Wayland 用は {{ic|/usr/share/wayland-sessions/}} でわかります。&lt;br /&gt;
&lt;br /&gt;
セッションをロックすると同時に KDE Plasma に自動ログインする方法は (例えば、自動起動させるアプリに起動する時間を与えるためなど)、[[KDE#ロックスクリーン]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== パスワードレスログイン ===&lt;br /&gt;
&lt;br /&gt;
パスワード無しで一部のアカウントにログインできるように SDDM を設定することができます。ログインするアカウントを選ぶ必要があるという点で自動ログインとは異なり、また、([[SSH]] 経由でログインしてきたリモートユーザなどを除く) インタラクティブユーザのみにログインを許可するという点で、アカウントのパスワードを空白に設定するのとも異なります。&lt;br /&gt;
&lt;br /&gt;
SDDM は [[PAM]] 経由で動作するので、PAM で SDDM に関連する設定を行う必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pam.d/sddm|2=&lt;br /&gt;
#%PAM-1.0&lt;br /&gt;
&#039;&#039;&#039;auth        sufficient  pam_succeed_if.so user ingroup nopasswdlogin&#039;&#039;&#039;&lt;br /&gt;
auth        include     system-login&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
パスワード無しで KDE Plasma のロック画面を解除できるようにするために、{{ic|/etc/pam.d/kde}} の先頭にも先と同じ行を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pam.d/kde|2=&lt;br /&gt;
#%PAM-1.0&lt;br /&gt;
&#039;&#039;&#039;auth        sufficient  pam_succeed_if.so user ingroup nopasswdlogin&#039;&#039;&#039;&lt;br /&gt;
auth        include     system-login&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、パスワードを入力せずにインタラクティブにログインできるようにするために、あなたのユーザーを {{ic|nopasswdlogin}} グループに追加する必要があります:&lt;br /&gt;
&lt;br /&gt;
 # groupadd -r nopasswdlogin&lt;br /&gt;
 # gpasswd -a &#039;&#039;username&#039;&#039; nopasswdlogin&lt;br /&gt;
&lt;br /&gt;
=== ログイン時に KDE Wallet のロックを解除 ===&lt;br /&gt;
&lt;br /&gt;
[[KDE Wallet#ログイン時に KDE ウォレットを自動的にアンロック]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== テーマ設定 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|[Theme]}} セクションでテーマの設定を変更できます。Plasma の KDE システム設定を使っている場合、テーマのプレビューを表示できます。&lt;br /&gt;
&lt;br /&gt;
デフォルトの Plasma テーマを使うには {{ic|breeze}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{AUR|archlinux-themes-sddm}} など、[[AUR]] から入手できるテーマもあります。&lt;br /&gt;
&lt;br /&gt;
==== 現在のテーマ ====&lt;br /&gt;
&lt;br /&gt;
現在のテーマは {{ic|Current}} で設定します。例: {{ic|1=Current=archlinux-simplyblack}}。&lt;br /&gt;
&lt;br /&gt;
==== テーマの編集 ====&lt;br /&gt;
&lt;br /&gt;
SDDM のデフォルトのテーマディレクトリは {{ic|/usr/share/sddm/themes/}} です。作成したカスタムテーマはこのディレクトリのサブディレクトリに追加することができます。サブディレクトリの名前はテーマの名前と同じである必要があります。インストールされているファイルを参考に自分自身のテーマを作成してみてください。&lt;br /&gt;
&lt;br /&gt;
==== テーマをカスタマイズ ====&lt;br /&gt;
&lt;br /&gt;
設定ファイル {{ic|theme.conf}} の設定をオーバーライドするには、カスタムの {{ic|theme.conf.user}} ファイルを同じディレクトリに作成してください。例えば、テーマの背景を変更するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=/usr/share/sddm/themes/&#039;&#039;name&#039;&#039;/theme.conf.user|output=&lt;br /&gt;
[General]&lt;br /&gt;
background=&#039;&#039;/path/to/background.png&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== テーマのテスト (プレビュー) ====&lt;br /&gt;
&lt;br /&gt;
必要であれば SDDM のテーマをプレビューすることができます。これは、テーマを編集した際などにテーマがどのような見た目になるか分からない場合や、ログアウトせずにテーマを確認したい場合などに便利です。以下のようにコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/breeze&lt;br /&gt;
&lt;br /&gt;
接続されているモニタすべてに新しいウィンドウが開き、テーマのプレビューが表示されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|これはプレビューだけです。このモードでは、シャットダウンやサスペンド、ログインなどの一部のアクションは効果がありません。}}&lt;br /&gt;
&lt;br /&gt;
==== マウスカーソル ====&lt;br /&gt;
&lt;br /&gt;
マウスカーソルのテーマを設定したい場合は、{{ic|CursorTheme}} を使用したいカーソルテーマに設定してください。&lt;br /&gt;
&lt;br /&gt;
[[Plasma]] で使用できるマウスカーソルのテーマの名前は、{{ic|breeze_cursors}}、{{ic|Breeze_Light}}、そして {{ic|breeze-dark}} です。&lt;br /&gt;
&lt;br /&gt;
KDE 環境で SDDM が Adwaita テーマになってしまう場合 (マウスカーソルが GNOME)、{{ic|/usr/share/icons/default/index.theme}} 内の {{ic|Inherits}} 変数に所望の値を手動で設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Plasma でアクティブなマウスカーソルテーマの名前を確認するには、{{ic|grep -i cursortheme ~/.config/kcminputrc}} を実行してください。}}&lt;br /&gt;
&lt;br /&gt;
==== ユーザアイコン (アバター) ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|設定をせずとも SDDM は {{ic|/var/lib/AccountsService/icons/}} 内のアイコンを検出します。そして、Plasma はもはや {{ic|$HOME/}} 内にファイル (以下で述べているアイコンファイルや、そのファイルへのシンボリックリンク) を作成しません。}}&lt;br /&gt;
&lt;br /&gt;
SDDM は、各ユーザの {{ic|~/.face.icon}} か、あるいは SDDM 設定ファイル内の {{ic|FacesDir}} で指定された全ユーザに共通の場所から PNG イメージのユーザアイコン (別名: &amp;quot;アバター&amp;quot;) を読み込みます。設定は {{ic|/etc/sddm.conf}} に直接、あるいは {{ic|/etc/sddm.conf.d/avatar.conf}} のように {{ic|/etc/sddm.conf.d/}} 下のファイルとして保存することができます (後者が推奨されます)。&lt;br /&gt;
&lt;br /&gt;
{{ic|FacesDir}} のオプションを使用するには、設定ファイルの {{ic|FacesDir}} キーで指定された場所に各ユーザに対して {{ic|&#039;&#039;ユーザ名&#039;&#039;.face.icon}} という名前で PNG イメージファイルを配置してください。デフォルトの {{ic|FacesDir}} は {{ic|/usr/share/sddm/faces/}} です。ニーズに応じてデフォルトの {{ic|FacesDir}} を変更することができます。例えば以下のように:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/avatar.conf|2=&lt;br /&gt;
[Theme]&lt;br /&gt;
FacesDir=/var/lib/AccountsService/icons/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
もう一つの方法は、ホームディレクトリのルートに {{ic|.face.icon}} という名前の PNG ファイルを置くことです。この場合、SDDM の設定ファイルを変更する必要はありません。ただし、{{ic|sddm}} ユーザがユーザアイコンの PNG イメージファイルを読むことができるようにしておく必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|多くの KDE バージョンで、ユーザのアイコンイメージファイルは {{ic|~/.face}} であり、{{ic|~/.face.icon}} はそのファイルへのシンボリックリンクとなっています。ユーザのアイコンイメージがシンボリックリンクである場合、シンボリックリンク先のファイルに適切なファイルパーミッションを設定する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
[[アクセス制御リスト#ACL の設定|適切なパーミッションを設定する]]には、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ setfacl -m u:sddm:x ~/&lt;br /&gt;
 $ setfacl -m u:sddm:r ~/.face.icon&lt;br /&gt;
&lt;br /&gt;
以下を実行することで、[[アクセス制御リスト#ACL の表示|パーミッションを確認する]]ことができます:&lt;br /&gt;
&lt;br /&gt;
 $ getfacl ~/&lt;br /&gt;
 $ getfacl ~/.face.icon&lt;br /&gt;
&lt;br /&gt;
[https://github.com/sddm/sddm#no-user-icon SDDM README: No User Icon] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Numlock ===&lt;br /&gt;
&lt;br /&gt;
Numlock を強制的に有効にしたい場合、{{ic|[General]}} セクションに {{ic|1=Numlock=on}} と設定してください。&lt;br /&gt;
&lt;br /&gt;
SDDM が Wayland で動作している場合、numlock の設定は現在反映されません。Numlock を有効化するには KWin の設定を変更する必要があるかもしれません。[https://github.com/sddm/sddm/issues/1830#issuecomment-1859339401 この issue] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイの回転 ===&lt;br /&gt;
&lt;br /&gt;
[[Xrandr#設定]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== DPI の設定 ===&lt;br /&gt;
&lt;br /&gt;
ディスプレイマネージャのレベルでディスプレイの PPI 設定を適切に設定できると便利です。[https://github.com/sddm/sddm/blob/master/README.md#custom-dpi] {{ic|ServerArguments}} の末尾にパラメータ {{ic|-dpi &#039;&#039;your_dpi&#039;&#039;}} を追加する必要があります。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=/etc/sddm.conf.d/dpi.conf|output=&lt;br /&gt;
[X11]&lt;br /&gt;
ServerArguments=-nolisten tcp -dpi 94&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== HiDPI の有効化 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|SDDM バージョン 0.20.0 から、HiDPI サポートがデフォルトで有効化されており、以下のステップは必要ではなくなりました。}}&lt;br /&gt;
&lt;br /&gt;
以下のファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/hidpi.conf|2=&lt;br /&gt;
[Wayland]&lt;br /&gt;
EnableHiDPI=true&lt;br /&gt;
&lt;br /&gt;
[X11]&lt;br /&gt;
EnableHiDPI=true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Wayland を使用する場合、HiDPI スケーリングは、使用する greeter に依存します。[https://github.com/sddm/sddm/issues/1704] 例えば、Breeze などの Qt ベースの greeter を使用する場合、以下の設定を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
[General]&lt;br /&gt;
GreeterEnvironment=QT_SCREEN_SCALE_FACTORS=2,QT_FONT_DPI=192&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 仮想キーボードを有効化する ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|qt6-virtualkeyboard}} (あるいは他の[[アプリケーション一覧/ユーティリティ#スクリーンキーボード|仮想キーボード]]) をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
以下のファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/virtualkbd.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
InputMethod=&#039;&#039;name_of_virtual_keyboard&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これで、SDDM は仮想キーボードを開くボタンをログインスクリーンの左下の角に表示するようになります。&lt;br /&gt;
&lt;br /&gt;
=== 指紋リーダーを使う ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|Plasma 6 以降、KDE のロック画面は既に指紋によるロック解除をサポートしており、{{ic|kscreenlocker}} には必須の {{ic|/etc/pam.d/kde-fingerprint}} が含まれています。&lt;br /&gt;
&lt;br /&gt;
しかし、これにはログインの設定は含まれておらず、既存のセッションのロック解除のみです。&lt;br /&gt;
&lt;br /&gt;
KWallet はログイン時にパスワードベースの認証を必要とするので (以下参照)、SDDM での指紋認証のセットアップはしないほうが良いかもしれません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|これらの変更を加える前に、あなたの指紋が登録されていることを確認してください。指紋リーダーへの対応はまだ不完全であり、この方法を使うとパスワードのみでのログインができなくなってしまうようです。}}&lt;br /&gt;
&lt;br /&gt;
SDDM では [[fprint]] を利用した指紋認証が可能です。{{Pkg|fprint}} をインストールして指紋署名を登録したのち、{{ic|/etc/pam.d/sddm}} の先頭に以下の行を加えてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pam.d/sddm|&lt;br /&gt;
auth 			sufficient  	pam_fprintd.so}}&lt;br /&gt;
&lt;br /&gt;
パスワードか指紋認証のいずれか片方を使うには、代わりに以下の行を {{ic|/etc/pam.d/sddm}} の先頭に加えてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/pam.d/sddm|2=&lt;br /&gt;
auth 			[success=1 new_authtok_reqd=1 default=ignore]  	pam_unix.so try_first_pass likeauth nullok&lt;br /&gt;
auth 			sufficient  	pam_fprintd.so}}&lt;br /&gt;
&lt;br /&gt;
KWallet は指紋リーダーを使ってロックを解除できないことに注意してください ([[KDE Wallet#ログイン時に KDE ウォレットを自動的にアンロック]] をご覧ください)。しかし、1行目の記述によりパスワードログインが自動的に KWallet を解除することが保証されます。&lt;br /&gt;
&lt;br /&gt;
パスワード欄を空にして {{ic|Enter}} キーを押すと、指紋認証が開始されます。&lt;br /&gt;
&lt;br /&gt;
=== Rootless ===&lt;br /&gt;
&lt;br /&gt;
従来、[[X11]] ディスプレイサーバーはデフォルトで root 権限で実行されてきました。この rootful モードでは、X11 はシステムリソースに無制限にアクセスできます (ハードウェアへの直接的なアクセスと管理が一般的であった環境では rootful モードが動作に不可欠だったのです)。しかし、最近のコンピューティング環境ではセキュリティが重要視されるようになり、rootless モードへ移行する作業が行われてきました。また、これは [[Wayland]] がデフォルトで rootless モードで動作する理由でもあります。&lt;br /&gt;
&lt;br /&gt;
非特権 X11 (及び Wayland) セッションは {{Pkg|sddm}} 0.20.0 からサポートされています。[https://github.com/sddm/sddm/blob/v0.20.0/ChangeLog]&lt;br /&gt;
&lt;br /&gt;
Rootless モードを有効化するには、{{ic|/etc/sddm.conf.d/}} に新しいファイルを適当な名前で作成し、以下を追加してください (必要に応じて {{ic|x11-user}} は {{ic|wayland}} に置き換えてください):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/rootless-x11.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
DisplayServer=x11-user}}&lt;br /&gt;
&lt;br /&gt;
Rootless モードで動作しているかどうかを確認するには、コンポジタのプロセス ({{ic|kwin_wayland}}) など) がどのユーザーによって所有されているかを調べてください。&lt;br /&gt;
&lt;br /&gt;
=== Wayland ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* SDDM では、Wayland のサポートは実験的とされています。&lt;br /&gt;
* デフォルトでは、{{ic|1=DisplayServer=wayland}} は、たとえインストールされていなくとも、[[weston]] コンポジタの使用を試みます。他の Wayland コンポジタを使用するには、[[#KDE Plasma / KWin]] で説明されているように {{ic|CompositorCommand}} オプションにプログラムと関連引数を指定してください。詳細は {{man|5|sddm.conf}} を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== KDE Plasma / KWin ====&lt;br /&gt;
&lt;br /&gt;
以下の記述を設定ファイルに追加すれば、KWin が Wayland コンポジタとして使用されるようになり、[https://wayland.app/protocols/wlr-layer-shell-unstable-v1 wlr_layer_shell] Wayland プロトコル拡張も有効化されます。Qt6 を使用する SDDM テーマを使うには {{Pkg|layer-shell-qt}} が、Qt5 を使用するものには {{AUR|layer-shell-qt5}} が必要です。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/10-wayland.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
DisplayServer=wayland&lt;br /&gt;
GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell&lt;br /&gt;
&lt;br /&gt;
[Wayland]&lt;br /&gt;
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1}}&lt;br /&gt;
&lt;br /&gt;
===== 仮想キーボード =====&lt;br /&gt;
&lt;br /&gt;
仮想キーボードのサポートを有効化するには (例えば、{{pkg|qt6-virtualkeyboard}} や {{pkg|plasma-keyboard}} を使う場合)、以下のように {{ic|--inputmethod}} フラグに適切なキーボードを指定して、{{ic|kwin_wayland}} コマンドに追加してください。{{ic|InputMethod}} オプションは {{ic|General}} セクションで指定しないでください。仮想キーボードが表示されなくなってしまいます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/10-wayland.conf|2=&lt;br /&gt;
[Wayland]&lt;br /&gt;
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1 --inputmethod plasma-keyboard}}&lt;br /&gt;
&lt;br /&gt;
===== Plasma のディスプレイ設定に合わせる =====&lt;br /&gt;
&lt;br /&gt;
Plasma Wayland セッションのディスプレイの設定 (例:モニターレイアウト、解像度など) に対する如何なる変更も SDDM に対しては適用されません。設定を適用させるには、Plasma の &#039;&#039;KDE システム設定&#039;&#039; を開き、&#039;&#039;起動と終了 &amp;gt; ログイン画面 (SDDM)&#039;&#039; へ行き、&amp;quot;&#039;&#039;Plasma 設定を適用...&#039;&#039;&amp;quot; をクリックしてください。この操作を行うためには許可が必要です。&lt;br /&gt;
&lt;br /&gt;
同じことは、以下のようにして手動で行うこともできます:&lt;br /&gt;
&lt;br /&gt;
SDDM でディスプレイを適切に管理するには (スケーリング、モニタの解像度、リフレッシュレートなど)、ホームディレクトリから適切な設定ファイルを SDDM の設定ディレクトリにコピー (かつ必要であれば変更) することができます:&lt;br /&gt;
&lt;br /&gt;
 # cp ~/.config/kwinoutputconfig.json /var/lib/sddm/.config/&lt;br /&gt;
 # chown sddm:sddm /var/lib/sddm/.config/kwinoutputconfig.json&lt;br /&gt;
&lt;br /&gt;
SDDM で適切な入力処理 (タップでクリックやタッチスクリーンのマッピングなど) を可能にするには、適切な設定ファイルをホームディレクトリから SDDM の設定ディレクトリにコピーしてください:&lt;br /&gt;
&lt;br /&gt;
 # cp ~/.config/kcminputrc /var/lib/sddm/.config/&lt;br /&gt;
 # chown sddm:sddm /var/lib/sddm/.config/kcminputrc&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== greeter が表示されず、カーソルのみの黒画面 ===&lt;br /&gt;
&lt;br /&gt;
利用可能なディスクの空き領域が存在しない場合、greeter はクラッシュします。{{ic|df -h}} でディスクの空き領域を確認してください。&lt;br /&gt;
&lt;br /&gt;
ディスクの空き領域の問題でないとしたら、[https://github.com/sddm/sddm/issues/1179 バグ]のせいかもしれません。[[Getty#インストール|他の TTY に切り替えて]]、{{ic|loginctl unlock-session &#039;&#039;session_id&#039;&#039;}} を実行するか、SDDM を[[再起動]]してみてください。&lt;br /&gt;
&lt;br /&gt;
=== ログイン後にフリーズする ===&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.Xauthority}} を削除し、再起動せずに再ログインしてみてください。ログインせずに再起動すると、このファイルが再び作成されてしまい、問題が解決されません。&lt;br /&gt;
&lt;br /&gt;
=== SDDM が tty7 ではなく tty1 で起動する ===&lt;br /&gt;
&lt;br /&gt;
SDDM は [https://web.archive.org/web/20260111214445/https://0pointer.de/blog/projects/serial-console.html systemd の慣習]に従って tty1 に最初のグラフィカルセッションを起動します。&lt;br /&gt;
&lt;br /&gt;
設定ファイルには {{ic|MinimumVT}} オプションがまだ存在しますが、SDDM 0.20 からこのオプションは無視されるようになったことに注意してください: {{man|5|sddm.conf|3=MinimumVT=|url=https://man.archlinux.org/man/sddm.conf.5#MinimumVT=}}。&lt;br /&gt;
&lt;br /&gt;
=== 1つ以上のユーザが greeter に表示されない ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|一般に、[https://systemd.io/UIDS-GIDS/ 1000 未満あるいは 60513 より大きい UID] に設定されているユーザは[[ディスプレイマネージャ]]に公開すべきではありません。}}&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、SDDM は 1000 から 60513 の範囲内の UID を持つユーザのみを表示するように設定されています。表示したいユーザの UID がこの範囲の外である場合、この範囲を変更しなければなりません。&lt;br /&gt;
&lt;br /&gt;
例えば、501 の UID を持つユーザの場合、{{ic|MinimumUid}} を設定し、システムユーザによって使用されるシェルを持つユーザは隠してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/uid.conf|2=&lt;br /&gt;
[Users]&lt;br /&gt;
HideShells=/usr/bin/nologin,/sbin/nologin,/bin/false,/usr/bin/git-shell&lt;br /&gt;
MinimumUid=500&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
高い UID を持つユーザの場合は {{ic|MaximumUid}} を適切な値に変更してください。&lt;br /&gt;
&lt;br /&gt;
=== ユーザのアバターが greeter に表示されない ===&lt;br /&gt;
&lt;br /&gt;
ユーザの数が {{ic|DisableAvatarsThreshold}} を超過した場合や、アバターが {{ic|EnableAvatars}} パラメータによって有効化されていない場合、ユーザのアバターは表示されません。これを回避するには、以下の記述を sddm の設定に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/avatars.conf|2=&lt;br /&gt;
[Theme]&lt;br /&gt;
EnableAvatars=true # enable avatars&lt;br /&gt;
DisableAvatarsThreshold=7 # set the threshold for the number of users. Avatars are not shown if this threshold is exceeded.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== SDDM が US キーボードのレイアウトしかロードしない ===&lt;br /&gt;
&lt;br /&gt;
SDDM は {{ic|/etc/X11/xorg.conf.d/00-keyboard.conf}} で指定されたキーボードレイアウトをロードします。{{ic|localectl set-x11-keymap}} コマンドを使うことでこの設定ファイルを生成することが可能です。詳しくは [[Xorg でのキーボード設定]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
SDDM でのみ効果を持ち、後続のセッションには適用されないキーボードレイアウトを設定するもう一つの方法は、SDDM のスタートアップスクリプト ({{ic|/usr/share/sddm/scripts/Xsetup}} にあり) で &#039;&#039;setxkbmap&#039;&#039; コマンドを実行することです。例は [[Xorg でのキーボード設定#setxkbmap を使う]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
また、SDDM は間違ってレイアウトを US キーボードとして表示することもありますが、パスワードを打ち始めると即座に正しいレイアウトに変わります [https://github.com/sddm/sddm/issues/202#issuecomment-76001543]。これは SDDM のバグではなく、[[X]] のバグのようです。[https://gitlab.freedesktop.org/xorg/xserver/-/issues/257]&lt;br /&gt;
&lt;br /&gt;
=== 画面解像度が低すぎる ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Extended Display Identification Data|EDID]] の情報が壊れているディスプレイで [[HiDPI]] を使用した場合に発生する可能性のある問題です [https://github.com/sddm/sddm/issues/692]。[[#HiDPI の有効化|HiDPI]] を有効化している場合、HiDPI を無効にしてみてください。&lt;br /&gt;
&lt;br /&gt;
無効にしても問題が解決しない場合、Xorg の設定ファイルでスクリーンのサイズを設定してみることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/90-monitor.conf|2=&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;&amp;lt;default monitor&amp;gt;&amp;quot;&lt;br /&gt;
        DisplaySize     345 194 # in millimeters&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ホームディレクトリが autofs の場合にロード時間が長い ===&lt;br /&gt;
&lt;br /&gt;
SDDM はデフォルトでユーザーのアバターとして {{ic|~/.face.icon}} ファイルを使います。ホームディレクトリが [[autofs]] の場合 (例えば [[dm-crypt]] を使っている場合)、autofs がディレクトリをマウントできないと報告するまで SDDM は60秒間待機します。&lt;br /&gt;
&lt;br /&gt;
以下の設定ファイルを作成することでアバターを無効化することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/avatar.conf|2=&lt;br /&gt;
[Theme]&lt;br /&gt;
EnableAvatars=false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== X authority (別名 MIT-MAGIC-COOKIE) ファイル ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/sddm/sddm/issues/622] で詳細が言及されているように、SDDM は 認証ファイルのためにランダムな新しい UUID を使います。そのため、そのファイルを見つけるためにスクリプトを使うことができます:&lt;br /&gt;
&lt;br /&gt;
 # find /var/run/sddm/ -type f&lt;br /&gt;
&lt;br /&gt;
ログイン中のユーザーがいない時に [[x11vnc]] を開始する必要がある場合、このスクリプトが必要である場合があります。例えば:&lt;br /&gt;
&lt;br /&gt;
 # x11vnc -display :0 -auth &amp;quot;$( find /var/run/sddm/ -type f )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== マルチモニタの環境で greeter が重複する ===&lt;br /&gt;
&lt;br /&gt;
複数スクリーンの環境で X モニターのレイアウトが正しく設定されずに greeter が重複することがあります。この問題を解決するためには、以下のスクリプトを追加して、sddm greeter のレイアウトを左から右に並べてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/sddm/scripts/Xsetup|2=&lt;br /&gt;
for next in $(xrandr --listmonitors {{!}} grep -E &amp;quot; *[0-9]+:.*&amp;quot; {{!}} cut -d&amp;quot; &amp;quot; -f6); do&lt;br /&gt;
  [ -z &amp;quot;$current&amp;quot; ] &amp;amp;&amp;amp; current=$next &amp;amp;&amp;amp; continue&lt;br /&gt;
  xrandr --output $current --auto --output $next --auto --right-of $current&lt;br /&gt;
  current=$next&lt;br /&gt;
done&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 予期しないディスプレイにログイン画面が表示される ===&lt;br /&gt;
&lt;br /&gt;
複数のディスプレイが接続されている場合に、SDDM のログインセッションがプライマリディスプレイではないディスプレイに表示されることがあります。サブディスプレイが回転されているがプライマリディスプレイはそうなっていない場合、この問題は腹立たしいでしょう。この問題に対するシンプルな修正法は、&#039;&#039;xrandr&#039;&#039; を使って、ログインセッションが &#039;&#039;Xsetup&#039;&#039; スクリプトを使用する前にディスプレイを設定することです。例えば、以下では、&#039;&#039;xrandr&#039;&#039; は、2つのディスプレイが接続されており、2つ目のディスプレイ (DP-2) はプライマリディスプレイ (DP-4) の左にあると報告しています。&lt;br /&gt;
&lt;br /&gt;
 # xrandr | grep -w connected&lt;br /&gt;
 DP-2 connected 2160x3840+0+0 left (normal left inverted right x axis y axis) 597mm x 336mm&lt;br /&gt;
 DP-4 connected primary 3840x2160+2160+0 (normal left inverted right x axis y axis) 697mm x 392mm&lt;br /&gt;
&lt;br /&gt;
{{Note|xrandr は、Wayland セッション内の出力には異なる名前を与えます。上記のコマンドを実行する前に、X11 セッション内にいることを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
以下の &#039;&#039;Xsetup&#039;&#039; は、上記のセットアップをログインウィンドウのために再作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/sddm/scripts/Xsetup|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# Xsetup - run as root before the login dialog appears&lt;br /&gt;
&lt;br /&gt;
xrandr --output DP-4 --auto --primary&lt;br /&gt;
xrandr --output DP-2 --left-of DP-4 --rotate left --noprimary&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA グラフィックカードでログアウト後に黒画面 ===&lt;br /&gt;
&lt;br /&gt;
ユーザからログアウトした後に、完全な黒画面や、カーソル/ディスプレイデバイスのロゴだけの黒画面が発生する場合があります。これは、{{ic|sddm.service}} が NVIDIA ドライバよりも早く起動してしまうため、発生します。[[NVIDIA#早期ロード|KMS の早期ロード]]を検討してください。&lt;br /&gt;
&lt;br /&gt;
=== パスワードの最初の試行に失敗すると、その後の試行で数回キーを押すと文字列が勝手に消されてしまう===&lt;br /&gt;
&lt;br /&gt;
デフォルト以外の別のテーマを使用してください。&lt;br /&gt;
&lt;br /&gt;
=== ハイブリッドグラフィックスで Wayland を使用すると画面の同期がずれる ===&lt;br /&gt;
&lt;br /&gt;
SDDM で {{ic|kwin_wayland}} コンポジタを使用すると、ブート時に画面の同期がずれる場合があります。{{ic|mesa-amber}} ドライバを使用していて、X11 に戻すと正しく動作する場合、{{ic|mesa-amber}} ドライバを {{ic|mesa}} に置き換えると Wayland が正しく動作する可能性があります。この問題に関する詳細は [https://bugs.kde.org/show_bug.cgi?id=483804 KDE Bug 483804] で見られます。&lt;br /&gt;
&lt;br /&gt;
=== 一部のテーマがクラッシュする ===&lt;br /&gt;
&lt;br /&gt;
一部の SDDM テーマは {{ic|metadata.desktop}} 内で {{ic|QtVersion}} を指定しないため、互換性の無い greeter (qt6 ではなく qt5) を SDDM が開始してしまいます。&lt;br /&gt;
&lt;br /&gt;
カスタムのテーマを設定しているが、再起動時に {{ic|Library import requires a version}} というエラーでデフォルトテーマになってしまう場合、{{ic|/usr/share/sddm/themes/&#039;&#039;テーマ名&#039;&#039;/metadata.desktop}} に {{ic|QtVersion{{=}}6}} を追加する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 時計の12時間表示と24時間表示 ===&lt;br /&gt;
&lt;br /&gt;
24時間表示の時計を表示してほしいのに、12時間表示の時計になってしまうことがあります。これが発生するのは、おそらくユーザの母国語以外を使用しているが (例えば、フランス語話者がアメリカ英語を使用するなど)、母国で使用されている単位を期待するためです。&lt;br /&gt;
&lt;br /&gt;
時計は、{{ic|/etc/locale.conf}} ではなく SDDM の設定に従います。{{ic|LC_TIME}} に所望のロケールが設定されていることを確認してください。詳細は [[ロケール]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|SDDM|2026-05-06|869024}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NetworkManager&amp;diff=41500</id>
		<title>NetworkManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NetworkManager&amp;diff=41500"/>
		<updated>2026-05-04T11:21:05Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ネットワークマネージャ]]&lt;br /&gt;
[[Category:DHCP]]&lt;br /&gt;
[[ar:Networkmanager]]&lt;br /&gt;
[[de:Networkmanager]]&lt;br /&gt;
[[en:NetworkManager]]&lt;br /&gt;
[[fr:NetworkManager]]&lt;br /&gt;
[[hu:NetworkManager]]&lt;br /&gt;
[[pt:NetworkManager]]&lt;br /&gt;
[[ru:NetworkManager]]&lt;br /&gt;
[[zh-hans:NetworkManager]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ネットワーク設定}}&lt;br /&gt;
{{Related|ワイヤレスネットワーク設定}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:NetworkManager|NetworkManager]] は、システムがネットワークに自動的に接続できるようにするためにネットワークの検出と設定の機能を提供するプログラムです。&lt;br /&gt;
&lt;br /&gt;
[https://networkmanager.dev/ NetworkManager] は無線ネットワークと有線ネットワークの両方で有用です。無線ネットワークでは、NetworkManager は既知の無線ネットワークを優先するようになっており、最も信頼性のあるネットワークに切り替える機能もあります。NetworkManager 対応のアプリケーションはオンラインモードとオフラインモードの切り替えが可能です。&lt;br /&gt;
&lt;br /&gt;
また、NetworkManager は無線接続よりも有線接続を優先するようになっており、モデム接続と特定の種類の VPN に対応しています。&lt;br /&gt;
&lt;br /&gt;
{{Warning|デフォルトでは、シークレット (Wi-Fi のパスワードなど) は root ユーザからファイルシステムでアクセス可能であり、さらに GUI ([[#nm-applet]] など) を介して設定にアクセスできるユーザからもアクセス可能です。詳細は [[#Wi-Fi パスワードの暗号化]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
NetworkManager は {{Pkg|networkmanager}} パッケージで[[インストール]]できます。このパッケージには、デーモン、コマンドラインインターフェイス (&#039;&#039;nmcli&#039;&#039;)、そして curses ベースのインターフェイス (&#039;&#039;nmtui&#039;&#039;) が含まれています。&lt;br /&gt;
&lt;br /&gt;
=== NetworkManager を有効化する ===&lt;br /&gt;
&lt;br /&gt;
インストールしたら、{{ic|NetworkManager.service}} を[[起動/有効化]]する必要があります。NetworkManager デーモンが起動すると、既に構成されている利用可能な &amp;quot;システム接続&amp;quot; に自動的に接続します。&amp;quot;ユーザ接続&amp;quot; や未構成の接続を設定したり接続したりするには、&#039;&#039;nmcli&#039;&#039; やアプレットが必要です。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 各ネットワークインターフェイスは、ただ一つの [[ネットワーク設定#ネットワークマネージャ|DHCP クライアントあるいはネットワークマネージャ]]のみで管理する必要があります。つまり、システム上には複数の DHCP クライアントあるいはネットワークマネージャを動かすべきではありません。現在実行中のサービスのリストを {{ic|1=systemctl --type=service}} で確認し、競合しているサービスを[[停止]]あるいは再設定してください。&lt;br /&gt;
* [[systemd-resolved]] が[[起動]]されていない場合、エラーメッセージがログに溢れ始めます。詳細は [[#Unit dbus-org.freedesktop.resolve1.service not found]] を見てください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 追加のインターフェイス ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|nm-connection-editor}}: グラフィカルユーザインターフェイス。&lt;br /&gt;
* {{Pkg|network-manager-applet}}: システムトレイアプレット ([[#nm-applet]] 章を参照)。&lt;br /&gt;
&lt;br /&gt;
=== モバイルブロードバンドサポート ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager はモバイルブロードバンド接続のサポートに [[ModemManager]] を使用します。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|modemmanager}} と {{Pkg|usb_modeswitch}} を[[インストール]]してください。その後、{{ic|ModemManager.service}} を[[有効化]]し、[[起動]]してください。&lt;br /&gt;
&lt;br /&gt;
ModemManager を認識させるために {{ic|NetworkManager.service}} を[[再起動]]する必要がある場合があります。サービスを再起動し、モデムを挿し直せば、認識されるはずです。&lt;br /&gt;
&lt;br /&gt;
フロントエンド (例えば {{Pkg|nm-connection-editor}}) から接続を追加し、接続タイプにモバイルブロードバンドを選択してください。ISP と料金プランを選んだら、[[Wikipedia:ja:APN|APN]] とその他の設定が {{Pkg|mobile-broadband-provider-info}} にある情報で自動的に書き込まれるはずです。&lt;br /&gt;
&lt;br /&gt;
=== PPPoE / DSL サポート ===&lt;br /&gt;
&lt;br /&gt;
PPPoE / DSL サポートに関しては {{Pkg|ppp}} を[[インストール]]してください。PPPoE 接続を追加するには、{{ic|1=nm-connection-editor}} を使って新しい DSL/PPPoE 接続を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== VPN サポート ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager 1.16 から [[WireGuard]] のネイティブなサポートが追加されました。必要なのは {{ic|wireguard}} カーネルモジュールだけです。詳細は [https://blogs.gnome.org/thaller/2019/03/15/wireguard-in-networkmanager/ NetworkManager のブログ記事の WireGuard] を見てください。&lt;br /&gt;
&lt;br /&gt;
その他の VPN タイプに対するサポートはプラグインなシステムをベースとしています。以下のパッケージで提供されています:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|networkmanager-openconnect}}: [[OpenConnect]] 用&lt;br /&gt;
* {{Pkg|networkmanager-openvpn}}: [[OpenVPN]] 用&lt;br /&gt;
* {{Pkg|networkmanager-pptp}}: [[PPTP クライアント]]用&lt;br /&gt;
* {{Pkg|networkmanager-strongswan}}: [[strongSwan]] 用&lt;br /&gt;
* {{Pkg|networkmanager-vpnc}}&lt;br /&gt;
* {{AUR|networkmanager-fortisslvpn}}&lt;br /&gt;
* {{AUR|networkmanager-iodine-git}}&lt;br /&gt;
* {{AUR|networkmanager-libreswan}}&lt;br /&gt;
* {{Pkg|networkmanager-l2tp}}&lt;br /&gt;
* {{AUR|networkmanager-ssh}}&lt;br /&gt;
* {{Pkg|network-manager-sstp}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=VPN サポートに関連する[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues?search=VPN&amp;amp;state=opened バグ]が大量に存在しています。デーモンプロセスのオプションが GUI から適切に設定されていることを確認し、パッケージのリリースの度にダブルチェックしてください。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&amp;lt;nowiki/&amp;gt;&lt;br /&gt;
* VPN 使用時に DNS 解決を完全に機能させるには、[[#DNS キャッシングと条件付きフォワーディング|条件付きフォワーディング]]をセットアップする必要があります。&lt;br /&gt;
* これらのプラグインは、ドキュメント化されたコマンドラインインターフェイスが存在しなかったり、アプレットが実行されていないと全く動作しなかったりする場合があります。通常のデスクトップ環境を使用している場合には問題になりません。通常とは異なるものを使用している場合は、接続を設定したりアクティブ化したりする際に必要なダイアログが表示されるようにするために [[#nm-applet]] を実行するべきです。[https://bbs.archlinux.org/viewtopic.php?id=246698]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
&lt;br /&gt;
NetworkManager には {{man|1|nmcli}} と {{man|1|nmtui}} が付属しています。&lt;br /&gt;
&lt;br /&gt;
=== nmcli 例 ===&lt;br /&gt;
&lt;br /&gt;
近くの Wi-Fi ネットワークを一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device wifi list&lt;br /&gt;
&lt;br /&gt;
Wi-Fi ネットワークに接続します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device wifi connect &#039;&#039;SSID_または_BSSID&#039;&#039; password &#039;&#039;パスワード&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
非表示の Wi-Fi ネットワークに接続します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device wifi connect &#039;&#039;SSID_または_BSSID&#039;&#039; password &#039;&#039;パスワード&#039;&#039; hidden yes&lt;br /&gt;
&lt;br /&gt;
{{ic|wlan1}} インターフェイスで Wi-Fi に接続します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device wifi connect &#039;&#039;SSID_または_BSSID&#039;&#039; password &#039;&#039;パスワード&#039;&#039; ifname wlan1 &#039;&#039;プロファイル名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
インターフェイスを切断します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device disconnect ifname eth0&lt;br /&gt;
&lt;br /&gt;
名前、UUID、タイプ、バッキングデバイスを含む接続のリストを取得します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection show&lt;br /&gt;
&lt;br /&gt;
接続を有効にします (つまり、既存のプロファイルでネットワークに接続します):&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection up &#039;&#039;名前_または_uuid&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
接続を削除します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection delete &#039;&#039;名前_または_uuid&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ネットワークデバイスとその状態のリストを表示します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device&lt;br /&gt;
&lt;br /&gt;
Wi-Fi をオフにします:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli radio wifi off&lt;br /&gt;
&lt;br /&gt;
=== 接続を編集する ===&lt;br /&gt;
&lt;br /&gt;
設定の包括的なリストについては、{{man|5|nm-settings}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
まず、接続のリストを取得する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nmcli connection|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
NAME                UUID                                  TYPE      DEVICE&lt;br /&gt;
有線接続 2          e7054040-a421-3bef-965d-bb7d60b7cecf  ethernet  enp5s0&lt;br /&gt;
有線接続 1          997f2782-f0fc-301d-bfba-15421a2735d8  ethernet  enp0s25&lt;br /&gt;
MY-HOME-WIFI-5G     92a0f7b3-2eba-49ab-a899-24d83978f308  wifi       --&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ここでは、後で使用する接続 ID として最初の列を使用できます。この例では、{{ic|有線接続 2}} を接続 ID として選択します。&lt;br /&gt;
&lt;br /&gt;
作成後に接続 {{ic|有線接続 2}} を設定するには、次の3つの方法があります:&lt;br /&gt;
&lt;br /&gt;
; nmcli 対話型エディタ&lt;br /&gt;
: {{ic|nmcli connection edit &#039;有線接続 2&#039;}}。&amp;lt;br&amp;gt; 使用法はエディタから十分に文書化されています。&lt;br /&gt;
&lt;br /&gt;
; nmcli コマンドラインインターフェイス&lt;br /&gt;
: {{ic|nmcli connection modify &#039;有線接続 2&#039; &#039;&#039;設定&#039;&#039;.&#039;&#039;プロパティ&#039;&#039; &#039;&#039;値&#039;&#039;}}。使用方法については {{man|1|nmcli}} を参照してください。例えば、{{ic|nmcli connection modify &#039;有線接続 2&#039; ipv4.route-metric 200}} コマンドを使用して、IPv4 ルートメトリックを 200 に変更できます。&lt;br /&gt;
設定を削除するには、次のように空のフィールド (&amp;quot;&amp;quot;) を渡します:&lt;br /&gt;
: {{ic|nmcli connection modify &#039;有線接続 2&#039; &#039;&#039;設定&#039;&#039;.&#039;&#039;プロパティ&#039;&#039; &amp;quot;&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
; 接続ファイル&lt;br /&gt;
: {{ic|/etc/NetworkManager/system-connections/}} で、対応する {{ic|有線接続 2.nmconnection}} ファイルを変更します。&amp;lt;br&amp;gt;{{ic|nmcli connection reload}} で設定ファイルをリロードすることを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
=== nmtui ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager には、接続、システムのホスト名、無線切り替え管理のためのテキストユーザインタフェース (TUI) が付いています。{{ic|nmtui}} と実行することで起動できます。&lt;br /&gt;
&lt;br /&gt;
== フロントエンド ==&lt;br /&gt;
&lt;br /&gt;
[[デスクトップ環境]]と統合するために、ほとんどのユーザはアプレットをインストールしたいと考えるでしょう。アプレットはネットワークの選択や設定を容易にするだけでなく、機密情報をセキュアに保存するために必要なエージェントも提供します。様々なデスクトップ環境は独自のアプレットを持っています。デスクトップ環境に独自のアプレットが存在しない場合、[[#nm-applet]] を使用することもできます。&lt;br /&gt;
&lt;br /&gt;
=== GNOME ===&lt;br /&gt;
&lt;br /&gt;
[[GNOME]] にはツールが内蔵されており、ネットワーク設定からアクセス可能です。&lt;br /&gt;
&lt;br /&gt;
=== KDE Plasma ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|plasma-nm}} パッケージを[[インストール]]してください。その後、&#039;&#039;パネルオプション &amp;gt; ウィジェットを追加 &amp;gt; ネットワーク&#039;&#039; で KDE タスクバーにアプレットを追加してください。&lt;br /&gt;
&lt;br /&gt;
=== nm-applet ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|network-manager-applet}} は、システムトレイのある Xorg 環境で機能する GTK 3 フロントエンドです。&lt;br /&gt;
&lt;br /&gt;
接続に関する機密情報 (Wi-Fi のパスワードなど) を保存するには、[https://specifications.freedesktop.org/secret-service-spec/latest/ Secret Service D-Bus API] を実装しているアプリケーション ([[GNOME/Keyring]]、[[KDE Wallet]]、[[KeePass|KeePassXC]] など) をインストールし設定してください。&lt;br /&gt;
&lt;br /&gt;
接続の設定で {{ic|Make available to other users}} チェックボックスオプションを有効化すると、NetworkManager はその接続のパスワードを平文で保存することに注意してください。とはいえ、パスワードが含まれるファイルは root (及び {{ic|nm-applet}} を通して他のユーザ) からしかアクセスできません。[[#Wi-Fi パスワードの暗号化]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{AUR|trayer}} か {{Pkg|stalonetray}} を使うことで、システムトレイ無しで {{ic|nm-applet}} を実行することができます。例えば、以下のようなスクリプトをパスに追加することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|nmgui|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
nm-applet    2&amp;gt;&amp;amp;1 &amp;gt; /dev/null &amp;amp;&lt;br /&gt;
stalonetray  2&amp;gt;&amp;amp;1 &amp;gt; /dev/null&lt;br /&gt;
killall nm-applet&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;stalonetray&#039;&#039; のウィンドウを閉じると、{{ic|nm-applet}} も閉じます。なので、ネットワークの設定を終えたら余分なメモリが消費されることはありません。&lt;br /&gt;
&lt;br /&gt;
このアプレットは、Wi-Fi ネットワークの接続や切断などのイベントの通知を表示することができます。これらの通知を表示させるには、通知サーバがインストールされている必要があります ([[デスクトップ通知]] を見てください)。アプレットを通知サーバ無しで使うと、標準出力や標準エラー出力にメッセージが表示され、最悪、アプレットがハングするかもしれません。[https://bugzilla.gnome.org/show_bug.cgi?id=788313] を参照してください。&lt;br /&gt;
&lt;br /&gt;
通知を無効化した状態で {{ic|nm-applet}} を実行するには、アプレットを以下のコマンドで起動してください:&lt;br /&gt;
&lt;br /&gt;
 $ nm-applet --no-agent&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|nm-applet}} は[[XDG Autostart|自動起動デスクトップファイル]]によって自動的に起動されるかもしれません。そのような場合に {{ic|--no-agent}} オプションを追加するには、デスクトップファイルの Exec 行を変更してください。つまり:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=Exec=nm-applet --no-agent}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|[[i3]] では、nm-applet が {{ic|--no-agent}} オプションで起動された場合、パスワード入力ダイアログが表示されないため、アイテムリストをクリックして新しい暗号化された Wi-Fi ネットワークに接続することができなくなります。[[journal]] には {{ic|no secrets: No agents were available for this request}} と出力されます。}}&lt;br /&gt;
&lt;br /&gt;
==== Appindicator ====&lt;br /&gt;
&lt;br /&gt;
バージョン 1.18.0 から、Appindicator のサポートが公式の {{Pkg|network-manager-applet}} パッケージで[https://gitlab.archlinux.org/archlinux/packaging/packages/network-manager-applet/-/commit/527448fb2a87d85055f504f463dfe961dccd75c3 利用可能]になりました。nm-applet を Appindicator の環境で使うには、アプレットを以下のコマンドで起動してください:&lt;br /&gt;
&lt;br /&gt;
 $ nm-applet --indicator&lt;br /&gt;
&lt;br /&gt;
=== networkmanager-dmenu ===&lt;br /&gt;
&lt;br /&gt;
フロントエンドのもう一つの選択肢は {{Pkg|networkmanager-dmenu}} です。これは、NetworkManager の接続を {{ic|nm-applet}} ではなく [[dmenu]] や [[rofi]] で管理する小さなスクリプトです。このスクリプトには必須の機能が全て揃っています。例えば: NetworkManager の既存の Wi-Fi 接続や有線接続に接続する、新しい Wi-Fi 接続に接続する、必要に応じてパスフレーズを要求する、既存の VPN 接続に接続する、ネットワークを有効化/無効化する、&#039;&#039;nm-connection-editor&#039;&#039; GUI を起動する、Bluetooth ネットワークに接続する。&lt;br /&gt;
&lt;br /&gt;
=== switchboard ===&lt;br /&gt;
&lt;br /&gt;
Pantheon の {{Pkg|switchboard}} は、{{Pkg|switchboard-plug-network}} と {{Pkg|nm-connection-editor}} と組み合わせて使えば、NetworkManager を設定するためのデスクトップ環境に依存しない方法になります。以下のコマンドで実行できます:&lt;br /&gt;
&lt;br /&gt;
 $ io.elementary.settings&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
NetworkManager を適切に実行させるには、いくつか追加の手順が必要になる場合があります。[[ネットワーク設定#ホスト名の設定]] で説明されているように、{{ic|/etc/hosts}} が設定されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
NetworkManager のグローバルな設定ファイルは {{ic|/etc/NetworkManager/NetworkManager.conf}} です。追加の設定ファイルは {{ic|/etc/NetworkManager/conf.d/}} に置くことができます。通常、グローバルなデフォルト値に対して設定を行う必要はありません。&lt;br /&gt;
&lt;br /&gt;
設定ファイルを編集したら、以下のコマンドで変更を適用することができます:&lt;br /&gt;
&lt;br /&gt;
 # nmcli general reload&lt;br /&gt;
&lt;br /&gt;
=== NetworkManager-wait-online ===&lt;br /&gt;
&lt;br /&gt;
{{ic|NetworkManager.service}} を有効化すると、{{ic|NetworkManager-wait-online.service}} も有効化されます。{{ic|NetworkManager-wait-online.service}} は oneshot なシステムサービスで、ネットワークが構成されるまで待機します。このサービスには {{ic|1=WantedBy=network-online.target}} が含まれているため、このサービスが終了するのは、{{ic|network-online.target}} 自体が有効化されている時か、あるいは {{ic|network-online.target}} が他のユニットによって実行された時のみです。[[systemd#ネットワークが稼働した後にサービスを実行する]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|NetworkManager-wait-online.service}} は、ネットワーク接続が確立されるのを待つ ({{man|1|nm-online}} を参照) のではなく、NetworkManager の起動が完了するのを待ちます。ネットワークの準備が整う前に {{ic|NetworkManager-wait-online.service}} が終了してしまってブート時に一部のサービスが失敗してしまう場合、{{ic|NetworkManager-wait-online.service}} [[ユニットを拡張]]し、{{ic|ExecStart}} 行から {{ic|-s}} を削除してください:&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=&lt;br /&gt;
 ExecStart=/usr/bin/nm-online -q&lt;br /&gt;
&lt;br /&gt;
ただし、これにより[https://lists.fedoraproject.org/archives/list/users@lists.fedoraproject.org/thread/EGC324JD3HJCGVN7J55WYPRLFDA3TP7N/ 他の問題]が発生する可能性があることに注意してください。&lt;br /&gt;
&lt;br /&gt;
一部のケースで、タイムアウトの設定が短すぎるために、このサービスの起動が失敗してしまう場合があります。サービスを[[編集]]して {{ic|NM_ONLINE_TIMEOUT}} を {{ic|60}} からより大きい値に変更してください。&lt;br /&gt;
&lt;br /&gt;
=== PolicyKit のパーミッションをセットアップする ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、アクティブなローカルセッションのユーザは全員パスワード無しでほぼ全てのネットワーク設定を変更することができます。セッションの種類を確認する方法については、[[一般的なトラブルシューティング#セッションのパーミッション]] を見てください。ほとんどの場合、特に設定しなくても全て動作するはずです。&lt;br /&gt;
&lt;br /&gt;
一部のアクション (システムのホスト名を変更するなど) においては、管理者のパスワードが必要です。そのような場合、自身のユーザを {{ic|wheel}} グループに[[ユーザーとグループ#グループ管理|追加]]し、パスワードのプロンプトを表示する [[Polkit#認証エージェント|Polkit の認証エージェント]]を実行する必要があります。&lt;br /&gt;
&lt;br /&gt;
リモートセッションの場合 (例えば、[[TigerVNC#vncserver をバーチャル(ヘッドレス)セッションで起動する|ヘッドレス VNC]])、NetworkManager を使用するために必要な特権を得る方法は複数あります:&lt;br /&gt;
&lt;br /&gt;
# 自身を {{ic|wheel}} グループに[[ユーザーとグループ#グループ管理|追加]]する。アクションの度にパスワードを入力する必要があります。注意点として、{{ic|wheel}} グループに追加すると他の権限 (root パスワードを入力せずに [[sudo]] を実行できるなど) も付与される場合があります。&lt;br /&gt;
# 自身を {{ic|network}} グループに[[ユーザーとグループ#グループ管理|追加]]し、以下の内容で {{ic|/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules}} を作成する: {{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
polkit.addRule(function(action, subject) {&lt;br /&gt;
  if (action.id.indexOf(&amp;quot;org.freedesktop.NetworkManager.&amp;quot;) == 0 &amp;amp;&amp;amp; subject.isInGroup(&amp;quot;network&amp;quot;)) {&lt;br /&gt;
    return polkit.Result.YES;&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}} {{ic|network}} グループ内の全ユーザがパスワード無しでネットワークの追加と削除を行えるようになります (これは、Polkit 認証エージェントを実行する必要がないことを意味します。なので、この方法は SSH セッションでも使えます。)。&lt;br /&gt;
&lt;br /&gt;
=== プロクシ設定 ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager はプロキシに関するいくつかの設定をサポートしています。それらは &#039;&#039;nmtui&#039;&#039; から直接変更することはできませんが、&#039;&#039;nm-applet&#039;&#039; と &#039;&#039;nmcli&#039;&#039; はそれらをサポートしています。&lt;br /&gt;
&lt;br /&gt;
プロキシの設定項目は {{man|5|nm-settings-nmcli}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
また、ディスパッチャスクリプトを使うことでカスタムのプロキシコマンドを常時実行することができます。[[#ディスパッチャの例]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
参照: [[プロキシ設定]]&lt;br /&gt;
&lt;br /&gt;
=== 接続の確認 ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager は、ネットワークに接続した後にウェブサーバへの接続を試みて、キャプティブポータルなどが存在しないか確認します。デフォルトの接続先ホスト ({{ic|/usr/lib/NetworkManager/conf.d/20-connectivity.conf}} で設定されています) は [https://ping.archlinux.org ping.archlinux.org] (redirect.archlinux.org の CNAME エイリアス) です。別のウェブサーバを使う、または接続チェックを無効化するには、{{ic|/etc/NetworkManager/conf.d/20-connectivity.conf}} を作成してください ({{man|5|NetworkManager.conf|CONNECTIVITY SECTION}} を参照)。以下は、GNOME のサーバを使用する例です ([[GNOME]] を使用する必要はありません):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/20-connectivity.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[connectivity]&lt;br /&gt;
uri=http://nmcheck.gnome.org/check_network_status.txt&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
NetworkManager の接続チェックを無効化するには、以下の設定を使用してください。これは、接続チェックを無効化する VPN に接続している場合に便利です。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/20-connectivity.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[connectivity]&lt;br /&gt;
enabled=false&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|自動的な接続チェックはプライバシーの問題を引き起こす可能性がありますが、Arch Linux のデフォルトの接続先 URL は如何なるアクセスも記録しません。[https://gitlab.archlinux.org/archlinux/infrastructure/-/commit/fabccd0f61e5dea3925e8a0c6a46d56d5750c121#a4f34381bbb18ea77bfb3dd11a8aeca707078fca_0_26] [https://gitlab.archlinux.org/archlinux/infrastructure/-/blob/master/roles/ping/templates/nginx.d.conf.j2] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== キャプティブポータル ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:キャプティブポータル|キャプティブポータル]]が存在している場合、デスクトップマネージャが、資格情報を求めるウィンドウを自動的に開く場合があります。あなたのデスクトップ環境がこれを行わない場合、{{Pkg|capnet-assist}} パッケージを使用することができます (しかし現在、このパッケージの NetworkManager ディスパッチャスクリプトは壊れています)。あるいは、NetworkManager ディスパッチャスクリプトを以下の内容で作成することもできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/90-open_captive_portal|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh -e&lt;br /&gt;
# Script to dispatch NetworkManager events&lt;br /&gt;
#&lt;br /&gt;
# Runs shows a login webpage on walled garden networks.&lt;br /&gt;
# See NetworkManager(8) for further documentation of the dispatcher events.&lt;br /&gt;
&lt;br /&gt;
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&lt;br /&gt;
&lt;br /&gt;
if [ -x &amp;quot;/usr/bin/logger&amp;quot; ]; then&lt;br /&gt;
    logger=&amp;quot;/usr/bin/logger -s -t captive-portal&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    logger=&amp;quot;:&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
wait_for_process() {&lt;br /&gt;
    PNAME=$1&lt;br /&gt;
    while [ -z &amp;quot;$(/usr/bin/pgrep $PNAME)&amp;quot; ]; do&lt;br /&gt;
        sleep 3;&lt;br /&gt;
    done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#launch the browser, but on boot we need to wait that nm-applet starts&lt;br /&gt;
start_browser() {&lt;br /&gt;
    local user=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local display=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    export DISPLAY=&amp;quot;$display&amp;quot;&lt;br /&gt;
    wait_for_process nm-applet&lt;br /&gt;
&lt;br /&gt;
    export XAUTHORITY=&amp;quot;/home/$user/.Xauthority&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    $logger &amp;quot;Running browser as &#039;$user&#039; with display &#039;$display&#039; to login in captive portal&amp;quot;&lt;br /&gt;
    sudo -u &amp;quot;$user&amp;quot; --preserve-env=DISPLAY,XAUTHORITY -H xdg-open http://capnet.elementary.io 2&amp;gt;&amp;amp;1 &amp;gt; /dev/null&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Run the right scripts&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
    connectivity-change)&lt;br /&gt;
    $logger -p user.debug &amp;quot;dispatcher script triggered on connectivity change: $CONNECTIVITY_STATE&amp;quot;&lt;br /&gt;
    if [ &amp;quot;$CONNECTIVITY_STATE&amp;quot; = &amp;quot;PORTAL&amp;quot; ]; then&lt;br /&gt;
        # Match last column of who&#039;s output with &#039; :[at least one digit] &#039;&lt;br /&gt;
        who | awk &#039;$NF ~ /\(:[0-9]+\)/ { print $1 &amp;quot; &amp;quot; substr($NF, 2, length($NF)-2) };&#039; | \&lt;br /&gt;
        while read user display; do&lt;br /&gt;
            start_browser $user $display || $logger -p user.err &amp;quot;Failed for user: &#039;$user&#039; display: &#039;$display&#039;&amp;quot;&lt;br /&gt;
        done&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
    *)&lt;br /&gt;
    # In a down phase&lt;br /&gt;
    exit 0&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
スクリプトには[[実行可能属性]]を付与してください。しかし、このスクリプトは X が使用されていることを仮定しており、単純に http ページを開きます。必ずしも動作するとは限らないかもしれません。&lt;br /&gt;
&lt;br /&gt;
このスクリプトを実行するには、{{ic|NetworkManager.service}} を[[再起動]]するか、システムを再起動する必要があります。そうしたら、ディスパッチャスクリプトはキャプティブポータルを検知するとログインウィンドウを開くはずです。&lt;br /&gt;
&lt;br /&gt;
簡潔な解決策は [https://github.com/Seme4eg/captive-portal-sh captive-portal-sh] です。これはキャプティブポータル URL を取得し、デフォルトのブラウザで開くシェルスクリプトです (Wayland のみ)。&lt;br /&gt;
&lt;br /&gt;
別の解決策は Google Chrome ベースの {{AUR|captive-browser-git}} です。&lt;br /&gt;
&lt;br /&gt;
==== 古いハードウェアにおける iwd のキャプティブポータルサポート ====&lt;br /&gt;
&lt;br /&gt;
一部の古い Fi-Fi チップ (Broadcom BCM4360 など) ではプロプライエタリな {{ic|wl}} ドライバが必要ですが、これには、多くのキャプティブポータルホットスポットがログインページ表示前に使用する OWE/Elliptic-Curve ハンドシェイクのサポートがありません。NetworkManager の Wi-Fi バックエンドを、既存のドライバ上でユーザスペース内で完全な OWE 鍵交換をサポートする {{ic|iwd}} に切り替えることにより ([[#Wi-Fi バックエンドとして iwd を使用する]] を参照)、暗号化されたアソシエーションを確立したり、DHCP を利用したり、ポータルの “PORTAL” ステートをトリガーできるようになります。以上が終わったら、他の方法では完全に接続できなかったハードウェア上でも、ディスパッチャスクリプトかブラウザランチャーがログインページをポップアップします。&lt;br /&gt;
&lt;br /&gt;
=== DHCP クライアント ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、NetworkManager は自身の内蔵 DHCP クライアントを使用します。内蔵 DHCPv4 プラグインは [https://nettools.github.io/n-dhcp4/ nettools の n-dhcp4] ライブラリをベースにしていますが、内蔵 DHCPv6 プラグインは systemd-networkd ベースのコードから作られています。&lt;br /&gt;
&lt;br /&gt;
別の DHCP クライアントを使用するには、以下の代替実装のどれかを[[インストール]]してください:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|dhcpcd}} - [[dhcpcd]]&lt;br /&gt;
* {{Pkg|dhclient}} - [[dhclient]]&lt;br /&gt;
&lt;br /&gt;
DHCP クライアントのバックエンドを変更するには、{{ic|/etc/NetworkManager/conf.d/}} 内に設定ファイルを作成して、そのファイル内で {{ic|1=main.dhcp=&#039;&#039;DHCP_クライアント名&#039;&#039;}} オプションを設定してください。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/NetworkManager/conf.d/dhcp-client.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
dhcp=dhcpcd&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
{{Pkg|dhclient}} パッケージと {{Pkg|dhcpcd}} パッケージに同梱されている systemd ユニットは有効化しないでください。NetworkManager と競合してしまいます。詳細は [[#インストール]] セクションに書かれているノートを見てください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== DNS の管理 ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager の DNS 管理については、GNOME プロジェクトの wiki ページ [https://wiki.gnome.org/Projects/NetworkManager/DNS Projects/NetworkManager/DNS] で説明されています。&lt;br /&gt;
&lt;br /&gt;
==== DNS キャッシングと条件付きフォワーディング ====&lt;br /&gt;
&lt;br /&gt;
NetworkManager には、[[dnsmasq]] または [[systemd-resolved]] を使用して DNS キャッシングと条件付きフォワーディングを有効化するプラグインが存在します ([https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/143 以前は]、&amp;quot;条件付きフォワーディング&amp;quot; は NetworkManager のドキュメントで &amp;quot;split DNS&amp;quot; と呼ばれていました)。このセットアップには、DNS ルックアップがキャッシュされるので名前解決の時間が短縮され、VPN ホストの DNS ルックアップが、関連する VPN の DNS サーバに転送されるという長所があります。これは、複数の VPN に接続する場合に特に便利です。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|/etc/resolv.conf}} が {{ic|/run/systemd/resolve/stub-resolv.conf}} や {{ic|/run/systemd/resolve/resolv.conf}}、{{ic|/lib/systemd/resolv.conf}}、{{ic|/usr/lib/systemd/resolv.conf}} へのシンボリックリンクである場合、NetworkManager は systemd-resolved を自動的に選択します。dnsmasq を使用するには、まずシンボリックリンクを削除する必要があります。その後で、NetworkManager を再起動してください。}}&lt;br /&gt;
&lt;br /&gt;
===== dnsmasq =====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|dnsmasq}} がインストールされていることを確認してください。そして、{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイル (無い場合は作成してください) で {{ic|1=main.dns=dnsmasq}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
dns=dnsmasq&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|nmcli general reload}} を root として実行してください。NetworkManager は自動的に dnsmasq を起動し、{{ic|/etc/resolv.conf}} に {{ic|127.0.0.1}} を追加します。元の DNS サーバは {{ic|/run/NetworkManager/no-stub-resolv.conf}} を見れば分かります。dnsmasq が使用されているかどうかは、{{ic|drill example.com}} で同じ DNS ルックアップを2度行ってサーバとクエリの時間を計測すれば確認できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{ic|dnsmasq.service}} を起動したり、{{ic|/etc/dnsmasq.conf}} を編集したりする必要はありません。NetworkManager は、その systemd サービスを使わず、さらに dnsmasq のデフォルトの設定ファイルを読み込まずに dnsmasq を起動します。&lt;br /&gt;
* NetworkManager によって起動された dnsmasq インスタンスは {{ic|127.0.0.1:53}} にバインドされます。なので、これと同じアドレスとポートで他のソフトウェア ({{ic|dnsmasq.service}} も含む) を実行することはできません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====== dnsmasq のカスタム設定 ======&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/NetworkManager/dnsmasq.d/}} 内に設定ファイルを作成することで、&#039;&#039;dnsmasq&#039;&#039; のカスタム設定を作成することができます。例えば、DNS キャッシュ (RAM 内に格納されます) のサイズを変更するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dnsmasq.d/cache.conf|2=&lt;br /&gt;
cache-size=1000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定ファイルの構文は以下のコマンドで確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ dnsmasq --test --conf-file=/dev/null --conf-dir=/etc/NetworkManager/dnsmasq.d&lt;br /&gt;
&lt;br /&gt;
利用可能な全てのオプションについては {{man|8|dnsmasq}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
====== IPv6 ======&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|NetworkManager は {{ic|::1}} を {{ic|/etc/resolv.conf}} に追加しないため、以下の方法では問題を解決できません。{{ic|@::1}} を手動で drill に渡さない限り、{{ic|Error: error sending query: No (valid) nameservers defined in the resolver}} というエラーで失敗します。}}&lt;br /&gt;
&lt;br /&gt;
NetworkManager で {{ic|dnsmasq}} を有効化すると、IPv6 のみの DNS ルックアップ (つまり、{{ic|drill -6 [hostname]}}) が機能しなくなる場合があります (しかし、それ以外では機能する)。この問題を解決するには、以下のファイルを作成し、IPv6 ループバックもリッスンするように &#039;&#039;dnsmasq&#039;&#039; を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dnsmasq.d/ipv6-listen.conf|2=&lt;br /&gt;
listen-address=::1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
さらに、{{ic|dnsmasq}} は上流の IPv6 DNS を優先しません。残念ながら、NetworkManager も IPv6 DNS を優先しません ([https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/936712 Ubuntu Bug])。回避策は、NetworkManager の設定で IPv6 DNS を無効化することです (IPv4 DNS があると仮定します)。&lt;br /&gt;
&lt;br /&gt;
====== DNSSEC ======&lt;br /&gt;
&lt;br /&gt;
NetworkManager によってデフォルトで開始される dnsmasq インスタンスは、[[DNSSEC]] を検証しません。DNSSEC 検証を有効化するには、以下の設定ファイルを作成してください (これにより、DNSSEC をサポートしない名前サーバでの DNS 解決が機能しなくなります):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dnsmasq.d/dnssec.conf|2=&lt;br /&gt;
conf-file=/usr/share/dnsmasq/trust-anchors.conf&lt;br /&gt;
dnssec&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== systemd-resolved =====&lt;br /&gt;
&lt;br /&gt;
NetworkManager は [[systemd-resolved]] を DNS リゾルバ及び DNS キャッシュとして使用することができます。まず先に、&#039;&#039;systemd-resolved&#039;&#039; が適切に設定されていて、{{ic|systemd-resolved.service}} が[[開始]]されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/resolv.conf}} が {{ic|/run/systemd/resolve/stub-resolv.conf}} や {{ic|/run/systemd/resolve/resolv.conf}}、{{ic|/usr/lib/systemd/resolv.conf}} への[[systemd-resolved#DNS|シンボリックリンク]]である場合、systemd-resolved は自動的に使用されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイルで {{ic|1=main.dns=systemd-resolved}} を設定することで、これを明示的に有効化することもできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
dns=systemd-resolved&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== openresolv サブスクライバのある DNS リゾルバ =====&lt;br /&gt;
&lt;br /&gt;
ローカルの [[DNS リゾルバ]]へのサブスクライバ (加入者) が [[openresolv]] に存在している場合、サブスクライバをセットアップし、[[#openresolv を使う|openresolv を使用するように NetworkManager を設定してください]]。&lt;br /&gt;
&lt;br /&gt;
NetworkManager は単一の &amp;quot;インターフェイス&amp;quot; を &#039;&#039;resolvconf&#039;&#039; に広告するため、2つの NetworkManager 接続間で条件付きフォワーディングを行うのは不可能です。[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 NetworkManager issue 153] を参照してください。&lt;br /&gt;
&lt;br /&gt;
この問題は {{ic|/etc/resolvconf.conf}} で {{ic|1=private_interfaces=&amp;quot;*&amp;quot;}} を設定すれば、部分的に緩和できます [https://roy.marples.name/projects/openresolv/configuration/]。検索ドメインリストに無いドメインのクエリは、フォワーディングされません。そのようなクエリは、他の DNS サーバにフォワーディングされるか、DNS ルートサーバから回帰的に解決されるなどして、ローカルのリゾルバの設定に従って処理されます。&lt;br /&gt;
&lt;br /&gt;
==== カスタム DNS サーバ ====&lt;br /&gt;
&lt;br /&gt;
===== カスタムグローバル DNS サーバの設定 =====&lt;br /&gt;
&lt;br /&gt;
全ての接続に対して DNS サーバを設定するには、{{man|5|NetworkManager.conf}} 内で {{ic|[global-dns-domain-*]}} というセクション内で {{ic|1=servers=&#039;&#039;serveripaddress1&#039;&#039;,&#039;&#039;serveripaddress2&#039;&#039;,&#039;&#039;serveripaddress3&#039;&#039;}} という構文を使ってDNS サーバを指定してください。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/dns-servers.conf|2=&lt;br /&gt;
[global-dns-domain-*]&lt;br /&gt;
servers=::1,127.0.0.1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* [[#DNS キャッシングと条件付きフォワーディング|NetworkManager の dnsmasq か systemd-resolved プラグイン]]、または [[#openresolv サブスクライバのある DNS リゾルバ|openresolv サブスクライバ]]を使用する場合、{{ic|1=servers=}} オプションにループバックアドレスを指定しないでください。DNS 解決が機能しなくなる可能性があります。&lt;br /&gt;
* 指定されたサーバは [[systemd-resolved]] に送られず、接続の DNS サーバが代わりに使用されます。[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1366 NetworkManager issue 1366] と [https://github.com/systemd/systemd/issues/33754 systemd issue 33754] を参照。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== 接続でのカスタム DNS サーバの設定 =====&lt;br /&gt;
&lt;br /&gt;
====== 接続でのカスタム DNS サーバの設定 (GUI) ======&lt;br /&gt;
&lt;br /&gt;
セットアップ方法は、使用するフロントエンドの種類に依ります。手順としては通常、アプレットを右クリックし、プロファイルを編集 (または作成) し、DHCP タイプに &#039;&#039;自動 (アドレスのみ)&#039;&#039; (&#039;&#039;Automatic (specify addresses)&#039;&#039;) を選択するというものです。DNS アドレスを入力する必要があり、通常、{{ic|127.0.0.1, &#039;&#039;DNS-server-one&#039;&#039;, ...}} という形です。&lt;br /&gt;
&lt;br /&gt;
====== 接続でのカスタム DNS サーバの設定 (nmcli / 設定ファイル) ======&lt;br /&gt;
&lt;br /&gt;
DNS サーバーを接続毎にセットアップするには、[[#接続を編集する|接続設定]]で {{ic|ipv4.dns}} と {{ic|ipv6.dns}} の設定 (及び、それらに関連する {{ic|dns-search}} と {{ic|dns-options}}) を変更してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|method}} が {{ic|auto}} に設定されている場合 (DHCP/RA を使用する場合)、{{ic|ignore-auto-dns}} を {{ic|yes}} に設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
DNS over TLS を使用するには ([[#systemd-resolved|systemd-resolved が必要です]])、{{ic|1=dns=&#039;&#039;ip.address&#039;&#039;#&#039;&#039;servername&#039;&#039;;}} のようにして DNS サーバーを指定し、さらに {{ic|connection.dns-over-tls}} を {{ic|2}} に設定してください。例えば、Quad9 を使用するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/system-connections/Example Wi-Fi.nmconnection|2=&lt;br /&gt;
...&lt;br /&gt;
[connection]&lt;br /&gt;
...&lt;br /&gt;
dns-over-tls=2&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
...&lt;br /&gt;
dns=9.9.9.9#dns.quad9.net;149.112.112.112#dns.quad9.net;&lt;br /&gt;
ignore-auto-dns=true&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
...&lt;br /&gt;
dns=2620:fe::fe#dns.quad9.net;2620:fe::9#dns.quad9.net;&lt;br /&gt;
ignore-auto-dns=true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|この例では Quad9 を使用しています。あなたにとって信頼できる DNS リゾルバに変更してください。[[ドメイン名前解決#サードパーティの DNS サービス]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== /etc/resolv.conf ====&lt;br /&gt;
&lt;br /&gt;
NetworkManager の {{ic|/etc/resolv.conf}} 管理モードは、{{ic|main.rc-manager}} で設定されます。{{Pkg|networkmanager}} パッケージはこれを、上流のデフォルトである {{ic|auto}} ではなく、{{ic|symlink}} に設定します。設定と値は {{man|5|NetworkManager.conf}} man ページでドキュメント化されています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|openresolv を使用すると、NetworkManager は、&#039;&#039;resolvconf&#039;&#039; によってサポートされている他のソフトウェアと共存できます。例えば、openresolv が [[openresolv#Subscribers|subscriber]] を持つローカル DNS キャッシングおよび分割 DNS リゾルバを実行できます。openresolv で NetworkManager を使用する場合、条件付きフォワーディングは[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 まだ完全にサポートされていない]ことに注意してください。}}&lt;br /&gt;
&lt;br /&gt;
また、&#039;&#039;NetworkManager&#039;&#039; は、ネットワークの変更後に {{ic|/etc/resolv.conf}} を変更するために使用できる、いわゆるディスパッチャスクリプトを介したフックも提供します。詳細は [[#ネットワークサービスで NetworkManager dispatcher を使用する]] と {{man|8|NetworkManager}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* NetworkManager が [[#dnsmasq|dnsmasq]] または [[systemd-resolved]] のいずれかを使用するように設定されている場合、適切なループバックアドレスが {{ic|/etc/resolv.conf}} に書き込まれます。&lt;br /&gt;
* NetworkManager が書き込む {{ic|resolv.conf}}、または {{ic|/etc/resolv.conf}} に書き込む内容は、{{ic|/run/NetworkManager/resolv.conf}} で見られます。&lt;br /&gt;
* 取得したネームサーバーと検索ドメインを含む {{ic|resolv.conf}} ファイルは、{{ic|/run/NetworkManager/no-stub-resolv.conf}} にあります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== 管理対象外の /etc/resolv.conf =====&lt;br /&gt;
&lt;br /&gt;
NetworkManager が {{ic|/etc/resolv.conf}} に干渉しないようにするには、{{ic|/etc/NetworkManager/conf.d/}} の設定ファイルで {{ic|1=main.dns=none}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
dns=none&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|NetworkManager が DNS 設定を [[systemd-resolved]] に送信しないように、{{ic|1=main.systemd-resolved=false}} を設定することもできます。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|1=main.dns=none}} を使うのではなく、[[dnsmasq]] や [[systemd-resolved]] などの他の DNS バックエンドを使用するように NetworkManager を設定する方法については、[[#DNS キャッシングと条件付きフォワーディング]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|/etc/resolv.conf}} が壊れたシンボリックリンクになり、削除する必要が生じるかもしれません。その場合、新しい {{ic|/etc/resolv.conf}} ファイルを作成してください。&lt;br /&gt;
&lt;br /&gt;
===== openresolv を使う =====&lt;br /&gt;
&lt;br /&gt;
{{Note|NetworkManager は、{{Pkg|systemd-resolvconf}} によって提供されている systemd-resolved の &#039;&#039;resolvconf&#039;&#039; インターフェイスの使用をサポートしていません ({{man|1|resolvectl|COMPATIBILITY WITH RESOLVCONF(8)}})。&lt;br /&gt;
* [[systemd-resolved]] を使用する際は {{ic|1=main.rc-manager=resolvconf}} を設定しないでください。代わりに、[[systemd-resolved#DNS|/etc/resolv.conf シンボリックリンクを適切に作成する]]か、[[#systemd-resolved|systemd-resolved を使用するように NetworkManager を明示的に設定]]してください。&lt;br /&gt;
* systemd-resolved を使用しない場合は、{{Pkg|systemd-resolvconf}} パッケージがインストールされていないことを確認してください。{{ic|systemd-resolved.service}} が起動されていないと、このパッケージは、resolvconf を使用する全てのネットワーキングソフトウェア (NetworkManager だけではありません) の機能を破壊します。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[openresolv]] を使用するように NetworkManager を設定するには、{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイルで {{ic|1=main.rc-manager=resolvconf}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/rc-manager.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
rc-manager=resolvconf&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ファイアウォール ===&lt;br /&gt;
&lt;br /&gt;
現在の接続に基づいて [[Firewalld#NetworkManager を使ったゾーン管理|firewalld ゾーンを割り当てる]]ことができます。たとえば、職場では制限の厳しいファイアウォールを使用し、自宅では制限の少ないファイアウォールを使用します。&lt;br /&gt;
&lt;br /&gt;
これは、[[#ネットワークサービスで NetworkManager dispatcher を使用する|NetworkManager dispatcher]] を使用して行うこともできます。&lt;br /&gt;
&lt;br /&gt;
== ネットワークサービスで NetworkManager dispatcher を使用する ==&lt;br /&gt;
&lt;br /&gt;
NetworkManager がインターフェイスを立ち上げるまで実行したくないようなネットワークサービスはたくさんあります。NetworkManager には、(例えば [[NFS]] や [[SMB]]、[[ネットワークタイムプロトコルデーモン|NTPd]] を使用する時などに) ネットワークに接続したらサービスを開始し、切断したらサービスを停止する機能があります。&lt;br /&gt;
&lt;br /&gt;
この機能を有効化するには、{{ic|NetworkManager-dispatcher.service}} を[[有効化]]し、かつ[[起動]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
このサービスを有効化したら、{{ic|/etc/NetworkManager/dispatcher.d}} 内にスクリプトを追加することができます。&lt;br /&gt;
&lt;br /&gt;
スクリプトは &#039;&#039;&#039;root&#039;&#039;&#039; によって所有されていなければなりません。ディスパッチャは、root によって所有されていないスクリプトを実行しません。セキュリティを高めるために、スクリプトのグループ[[所有権]]も root に設定してください:&lt;br /&gt;
&lt;br /&gt;
 # chown root:root /etc/NetworkManager/dispatcher.d/&#039;&#039;10-script.sh&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
スクリプトファイルを[[実行可能属性|実行可能]]にするのを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
スクリプトは、ネットワークへの接続時にはアルファベット順で実行され、切断時には逆アルファベット順で実行されます。実行される順番を保証するために、スクリプトの名前の前に数字を置くのが一般的です (例: {{ic|10-portmap}}、{{ic|30-netfs}}。こうすることで、NFS がマウントを試みる前に、&#039;&#039;portmapper&#039;&#039; が立ち上がります)&lt;br /&gt;
&lt;br /&gt;
スクリプトは以下の引数を受け取ります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;インターフェイス名:&#039;&#039;&#039; 例えば {{ic|eth0}}&lt;br /&gt;
* &#039;&#039;&#039;アクション:&#039;&#039;&#039; &#039;&#039;up&#039;&#039;、&#039;&#039;down&#039;&#039;、&#039;&#039;vpn-up&#039;&#039;、&#039;&#039;vpn-down&#039;&#039; など (完全なリストは {{man|8|NetworkManager-dispatcher}} を見てください)&lt;br /&gt;
&lt;br /&gt;
{{Warning|外部ネットワークや公開ネットワークに接続する場合は、どのサービスを起動するのか、どのサーバにサービスは接続できるのかに注意してください。公開ネットワークに接続する際に間違ったサービスを起動してしまうとセキュリティホールを作ってしまう可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
=== ディスパッチャのタイムアウトを防ぐ ===&lt;br /&gt;
&lt;br /&gt;
上記がうまくいっているのであれば、このセクションは関係しません。しかし、ディスパッチャのスクリプトの実行に時間が掛かってしまうという一般的な問題があります。最初は、3 秒だけの内部タイムアウトが使用されていました。呼ばれたスクリプトが時間内に完了しないと、そのスクリプトは kill されていました。後に、タイムアウトは約 20 秒に延長されました (詳細は [https://bugzilla.redhat.com/show_bug.cgi?id=982734 Bugtracker] を参照)。タイムアウトのせいで依然として問題が発生する場合は、{{ic|NetworkManager-dispatcher.service}} に対する[[ドロップインファイル]]を使って、終了後もアクティブ状態を維持するように設定することで問題を回避できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/NetworkManager-dispatcher.service.d/remain_after_exit.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、変更した {{ic|NetworkManager-dispatcher}} サービスを開始し、かつ有効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|RemainAfterExit}} 行を追加すると、ディスパッチャが閉じられなくなります。残念ながら、ディスパッチャは、スクリプトを再び実行する前に&#039;&#039;&#039;閉じなければなりません&#039;&#039;&#039;。先の設定により、ディスパッチャはタイムアウトしませんが、閉じられもしません。これは、スクリプトはブート毎に 1 度しか実行されないことを意味します。なので、タイムアウトが実際に問題を起こしていない限り、この行を追加しないでください。}}&lt;br /&gt;
&lt;br /&gt;
=== ディスパッチャの例 ===&lt;br /&gt;
&lt;br /&gt;
==== タイムゾーンを自動的に設定する ====&lt;br /&gt;
&lt;br /&gt;
[[#ネットワークサービスで NetworkManager dispatcher を使用する|NetworkManager ディスパッチャスクリプト]]を作成し、[[実行可能属性|実行可能]]にしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/09-timezone|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
    up)&lt;br /&gt;
        timedatectl set-timezone &amp;quot;$(curl --fail &amp;lt;nowiki&amp;gt;https://ipapi.co/timezone&amp;lt;/nowiki&amp;gt;)&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|up}} の代わりに {{ic|connectivity-change}} を使うと、[[OpenConnect]] などの VPN クライアントで VPN に接続した際に、タイムゾーンが変更されないようにすることができます。}}&lt;br /&gt;
&lt;br /&gt;
あるいは、{{AUR|tzupdate}} ツールを使うと、IP アドレスのいち情報に基づいてタイムゾーンを自動的に設定できます。運用環境内でどの API を使用するのかを決める際には、[https://medium.com/@ipdata_co/what-is-the-best-commercial-ip-geolocation-api-d8195cda7027 最も人気のある IP 位置情報 API の比較]をみると役立つかもしれません。&lt;br /&gt;
&lt;br /&gt;
==== sshfs でリモートディレクトリをマウントする ====&lt;br /&gt;
&lt;br /&gt;
このスクリプトは非常に制限された環境内で実行されるため、SSH エージェントに接続するためには {{ic|SSH_AUTH_SOCK}} 変数をエクスポートする必要があります。これを行う方法はいくつかあります (詳細は[https://bbs.archlinux.org/viewtopic.php?pid=1042030#p1042030 このメッセージ]を見てください)。以下の例は [[GNOME Keyring]] を使って動作し、キーリングがまだアンロックされていない場合はパスワードを要求します。NetworkManager がログイン時に自動的にネットワークに接続するような状況では、&#039;&#039;gnome-keyring&#039;&#039; がまだ開始されておらず、変数のエクスポートが失敗する可能性が高いです (そのために sleep コマンドがあります)。接続とマッチする {{ic|UUID}} は、{{ic|nmcli connection status}} か {{ic|nmcli connection list}} を実行すれば確認できます。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
USER=&#039;username&#039;&lt;br /&gt;
REMOTE=&#039;user@host:/remote/path&#039;&lt;br /&gt;
LOCAL=&#039;/local/path&#039;&lt;br /&gt;
&lt;br /&gt;
interface=$1 status=$2&lt;br /&gt;
if [ &amp;quot;$CONNECTION_UUID&amp;quot; = &amp;quot;&amp;lt;/nowiki&amp;gt;&#039;&#039;uuid&#039;&#039;&amp;lt;nowiki&amp;gt;&amp;quot; ]; then&lt;br /&gt;
  case $status in&lt;br /&gt;
    up)&lt;br /&gt;
      # sleep 10&lt;br /&gt;
      SSH_AUTH_SOCK=$(find /tmp -maxdepth 1 -type s -user &amp;quot;$USER&amp;quot; -name &#039;ssh&#039;)&lt;br /&gt;
      export SSH_AUTH_SOCK&lt;br /&gt;
      su &amp;quot;$USER&amp;quot; -c &amp;quot;sshfs $REMOTE $LOCAL&amp;quot;&lt;br /&gt;
      ;;&lt;br /&gt;
    down)&lt;br /&gt;
      fusermount -u &amp;quot;$LOCAL&amp;quot;&lt;br /&gt;
      ;;&lt;br /&gt;
  esac&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== SMB 共有をマウントする ====&lt;br /&gt;
&lt;br /&gt;
[[SMB]] 共有は特定のネットワークや場所 (例えば自宅) でしか利用できないことがあります。ディスパッチャを使えば、現在の場所で利用可能な SMB 共有のみをマウントすることができます。&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは、特定のネットワークに接続していることを確認し、それに応じて共有をマウントします:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/30-mount-smb.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# 接続 UUID はターミナルで &amp;quot;nmcli connection show&amp;quot; を実行して確認してください。&lt;br /&gt;
# 全種類の NetworkManager 接続がサポートされています: 無線、VPN、有線など。&lt;br /&gt;
if [ &amp;quot;$2&amp;quot; = &amp;quot;up&amp;quot; ]; then&lt;br /&gt;
  if [ &amp;quot;$CONNECTION_UUID&amp;quot; = &amp;quot;uuid&amp;quot; ]; then&lt;br /&gt;
    mount /your/mount/point &amp;amp; &lt;br /&gt;
    # add more shares as needed&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは、ソフトウェアが特定のネットワークからの切断を開始する前に、全ての SMB 共有をアンマウントします:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/pre-down.d/30-umount-smb.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$CONNECTION_UUID&amp;quot; = &amp;quot;uuid&amp;quot; ]; then&lt;br /&gt;
  umount -a -l -t cifs&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|このスクリプトは上記の通り {{ic|pre-down.d}} サブディレクトリに配置してください。さもないと、接続状態が変わる度に毎回、全ての共有がアンマウントされてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは、特定のネットワークから予期せずに切断されてしまった時に、全ての SMB 共有のアンマウントを試みます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/40-umount-smb.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$CONNECTION_UUID&amp;quot; = &amp;quot;uuid&amp;quot; ]; then&lt;br /&gt;
  if [ &amp;quot;$2&amp;quot; = &amp;quot;down&amp;quot; ]; then&lt;br /&gt;
    umount -a -l -t cifs&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* NetworkManager 0.9.8 から、&#039;&#039;pre-down&#039;&#039; と &#039;&#039;down&#039;&#039; のイベントはシャットダウン時や再起動時に実行されなくなりました。詳細は[https://bugzilla.gnome.org/show_bug.cgi?id&amp;amp;#61;701242 このバグレポート]を見てください。&lt;br /&gt;
* 上記 2 つの &#039;&#039;umount&#039;&#039; スクリプトでは、マウントに実際にアクセスしているアプリケーションが &#039;ハング&#039; してしまう傾向が依然としてあります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
代替案は、[[NFS#NetworkManager dispatcher を使う]] にあるスクリプトを使うことです:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/30-smb.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# 接続 UUID はターミナルで &amp;quot;nmcli connection show&amp;quot; を実行して確認してください。&lt;br /&gt;
# 全種類の NetworkManager 接続がサポートされています: 無線、VPN、有線など。&lt;br /&gt;
WANTED_CON_UUID=&amp;quot;CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$CONNECTION_UUID&amp;quot; = &amp;quot;$WANTED_CON_UUID&amp;quot; ]; then&lt;br /&gt;
    &lt;br /&gt;
    # スクリプトパラメータ $1: ネットワークインターフェイス名 (未使用)&lt;br /&gt;
    # スクリプトパラメータ $2: ディスパッチされたイベント&lt;br /&gt;
    &lt;br /&gt;
    case &amp;quot;$2&amp;quot; in&lt;br /&gt;
        &amp;quot;up&amp;quot;)&lt;br /&gt;
            mount -a -t cifs&lt;br /&gt;
            ;;&lt;br /&gt;
        &amp;quot;down&amp;quot;|&amp;quot;pre-down&amp;quot;|&amp;quot;vpn-pre-down&amp;quot;)&lt;br /&gt;
            umount -l -a -t cifs &amp;gt;/dev/null&lt;br /&gt;
            ;;&lt;br /&gt;
    esac&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|このスクリプトは {{ic|noauto}} オプションのマウントは無視します。これらのマウントをディスパッチャが管理できるようにするには、このオプションを取り除くか、{{ic|auto}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|pre-down}} イベントをキャッチできるようにするために {{ic|/etc/NetworkManager/dispatcher.d/pre-down/}} 内にシンボリックリンクを作成してください:&lt;br /&gt;
&lt;br /&gt;
 # ln -s ../30-smb.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-smb.sh&lt;br /&gt;
&lt;br /&gt;
==== NFS 共有をマウントする ====&lt;br /&gt;
&lt;br /&gt;
[[NFS#NetworkManager dispatcher を使う]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== ディスパッチャを使って、LAN ケーブルが挿入されているかに応じて Wi-Fi を自動的にオンオフする ====&lt;br /&gt;
&lt;br /&gt;
アイディアとしては、LAN ケーブルが抜かれた時にのみ Wi-Fi をオンにし (例えば、ラップトップのドックから取り外された時など)、LAN ケーブルが挿入されたら Wi-Fi を自動的に無効化します。&lt;br /&gt;
&lt;br /&gt;
以下のディスパッチャスクリプトを作成してください[https://superuser.com/questions/233448/disable-wlan-if-wired-cable-network-is-available]。{{ic|&#039;&#039;Your_Ethernet_Interface&#039;&#039;}} の部分は実際のイーサネットインターフェイスのデバイス名に変更してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[#nmcli 例|nmcli]] を使えばインターフェイスのリストを取得できます ({{ic|nmcli d {{!}} grep ethernet}})。イーサネットインターフェイスは {{ic|en}} か {{ic|eth}} で始まります (例: {{ic|enp0s5}}、{{ic|eth0}})。}}&lt;br /&gt;
&lt;br /&gt;
このスクリプトを[[実行可能属性|実行可能]]にすることを忘れないでください。{{ic|NetworkManager.service}} を[[再起動]]し、{{ic|ip a}} を実行して {{ic|wlp3s0}} (実際の Wi-Fi インターフェイス名) が {{ic|state DOWN}} であればうまく行っています。予想外の動作が起こった場合は、{{ic|NetworkManager-dispatcher.service}} の [[journal]] を確認してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/99-wifi-auto-toggle.sh|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
LOG_PREFIX=&amp;quot;WiFi Auto-Toggle&amp;quot;&lt;br /&gt;
ETHERNET_INTERFACE=&amp;quot;&#039;&#039;Your_Ethernet_Interface&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; = &amp;quot;$ETHERNET_INTERFACE&amp;quot; ]; then&lt;br /&gt;
    case &amp;quot;$2&amp;quot; in&lt;br /&gt;
        up)&lt;br /&gt;
            echo &amp;quot;$LOG_PREFIX ethernet up&amp;quot;&lt;br /&gt;
            nmcli radio wifi off&lt;br /&gt;
            ;;&lt;br /&gt;
        down)&lt;br /&gt;
            echo &amp;quot;$LOG_PREFIX ethernet down&amp;quot;&lt;br /&gt;
            nmcli radio wifi on&lt;br /&gt;
            ;;&lt;br /&gt;
    esac&lt;br /&gt;
elif [ &amp;quot;$(nmcli -g GENERAL.STATE device show $ETHERNET_INTERFACE)&amp;quot; = &amp;quot;20 (unavailable)&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$LOG_PREFIX failsafe&amp;quot;&lt;br /&gt;
    nmcli radio wifi on&lt;br /&gt;
fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|コンピュータが最後にオンであったときに接続されていた LAN インターフェイスが、コンピュータがオフになったときに切断された場合のフェイルセーフ機構が存在します。つまり、LAN インターフェイスが切断されている状態でコンピュータがオンに戻ったときにも無線がオフのままになるということです。この場合、ネットワークに接続されていない状態になります。}}&lt;br /&gt;
&lt;br /&gt;
==== ディスパッチャを使って、ネットワーク接続が確立された後に VPN に接続する ====&lt;br /&gt;
&lt;br /&gt;
この例では、特定の Wi-Fi ネットワークに接続した後に、以前定義された VPN 接続に自動的に接続したいと思います。最初にすべきことは、そのネットワークに接続した後にすることを定義するディスパッチャスクリプトを作成することです。&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|A scripting without {{ic|iwgetid}} does work too and may be more reliable? (議論: [[:en:Talk:NetworkManager#Fixes for automatic VPN dispatcher script]])}}&lt;br /&gt;
&lt;br /&gt;
{{Note|このスクリプトでは {{ic|iwgetid}} を使うために {{Pkg|wireless_tools}} を必要とします。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/vpn-up|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
VPN_NAME=&amp;quot;NetworkManager に定義されている VPN 接続の名前&amp;quot;&lt;br /&gt;
ESSID=&amp;quot;Wi-Fi ネットワークの ESSID (接続名ではない)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
interface=$1 status=$2&lt;br /&gt;
case $status in&lt;br /&gt;
  up|vpn-down)&lt;br /&gt;
    if iwgetid | grep -qs &amp;quot;:\&amp;quot;$ESSID\&amp;quot;&amp;quot;; then&lt;br /&gt;
      nmcli connection up id &amp;quot;$VPN_NAME&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
  down)&lt;br /&gt;
    if iwgetid | grep -qs &amp;quot;:\&amp;quot;$ESSID\&amp;quot;&amp;quot;; then&lt;br /&gt;
      if nmcli connection show --active | grep &amp;quot;$VPN_NAME&amp;quot;; then&lt;br /&gt;
        nmcli connection down id &amp;quot;$VPN_NAME&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
全ての Wi-Fi ネットワークで VPN への接続を試みたい場合は、次の ESSID 定義を使用できます: {{ic|1=ESSID=$(iwgetid -r)}}。スクリプトのパーミッションを[[#ネットワークサービスで NetworkManager dispatcher を使用する|適宜]]設定することを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
[https://developer.gnome.org/NetworkManager/0.9/secrets-flags.html VPN の機密情報が保管される方法]により、上記のスクリプトで VPN への接続しようとしても、{{ic|NetworkManager-dispatcher.service}} が &#039;no valid VPN secrets&#039; というエラーで失敗する場合があります。幸運なことに、スクリプトから VPN のパスワードにアクセスする方法は他にもあります。&lt;br /&gt;
&lt;br /&gt;
1: それらの方法の1つでは、VPN 接続の設定ファイルを編集して、[https://bugzilla.redhat.com/show_bug.cgi?id=710552 root からはアクセスできない]キーリングではなく自身で機密情報を保存させるように NetworkManager を設定する必要があります: {{ic|/etc/NetworkManager/system-connections/&#039;&#039;VPN接続の名前&#039;&#039;.nmconnection}} を開き、{{ic|password-flags}} と {{ic|secret-flags}} を {{ic|1}} から {{ic|0}} に変更してください。&lt;br /&gt;
&lt;br /&gt;
それだけではうまく行かない場合は、以下の内容で {{ic|passwd-file}} を安全な場所にディスパッチャスクリプトと同じパーミッションと所有権で作成する必要があるかもしれません:&lt;br /&gt;
&lt;br /&gt;
{{hc|/path/to/passwd-file|&lt;br /&gt;
vpn.secrets.password:パスワード&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ファイルからパスワードを得られるようにするために、スクリプトは適宜変更する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/vpn-up|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
VPN_NAME=&amp;quot;NetworkManager に定義されている VPN 接続の名前&amp;quot;&lt;br /&gt;
ESSID=&amp;quot;Wi-Fi ネットワークの ESSID (接続名ではない)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
interface=$1 status=$2&lt;br /&gt;
case $status in&lt;br /&gt;
  up|vpn-down)&lt;br /&gt;
    if iwgetid | grep -qs &amp;quot;:\&amp;quot;$ESSID\&amp;quot;&amp;quot;; then&lt;br /&gt;
      nmcli connection up id &amp;quot;$VPN_NAME&amp;quot; passwd-file /path/to/passwd-file&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
  down)&lt;br /&gt;
    if iwgetid | grep -qs &amp;quot;:\&amp;quot;$ESSID\&amp;quot;&amp;quot;; then&lt;br /&gt;
      if nmcli connection show --active | grep &amp;quot;$VPN_NAME&amp;quot;; then&lt;br /&gt;
        nmcli connection down id &amp;quot;$VPN_NAME&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
2: あるいは、{{ic|password-flags}} を変更して、設定ファイル内に {{ic|vpn-secrets}} セクションを追加してパスワードを直接書き込むという方法もあります:&lt;br /&gt;
&lt;br /&gt;
  [vpn]&lt;br /&gt;
  ....&lt;br /&gt;
  password-flags=0&lt;br /&gt;
  &lt;br /&gt;
  [vpn-secrets]&lt;br /&gt;
  password=&#039;&#039;パスワード&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|NetworkManager の接続エディタを再び開き、VPN のパスワード/機密情報を保存し直す必要があるかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
==== ディスパッチャを使って、VPN プロバイダの接続時に IPv6 を無効化する ====&lt;br /&gt;
&lt;br /&gt;
多くの[[:カテゴリ:VPN プロバイダー|商用 VPN プロバイダー]]は IPv4 のみをサポートしています。つまり、IPv6 のトラフィックは全て VPN をバイパスし、事実上、使い物にならなくなります。ディスパッチャを使って、VPN に接続されている時は全ての IPv6 トラフィックを無効化することで、この問題を回避できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/10-vpn-ipv6|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
	vpn-up)&lt;br /&gt;
		echo 1 &amp;gt; /proc/sys/net/ipv6/conf/all/disable_ipv6&lt;br /&gt;
		;;&lt;br /&gt;
	vpn-down)&lt;br /&gt;
		echo 0 &amp;gt; /proc/sys/net/ipv6/conf/all/disable_ipv6&lt;br /&gt;
		;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|WireGuard では、NetworkManager が {{ic|vpn-up/down}} イベントを出さないため、上記のスクリプトは動作しません。代わりに、[https://gist.github.com/TheDcoder/85e1ec99a31180e20ba8e4896024f265] のコードのように WireGuard インターフェイスに対しては汎用イベントに頼る必要があります。}}&lt;br /&gt;
&lt;br /&gt;
代替案としては、ディスパッチャを使って、VPN 接続に使用しているデバイスの IPv6 モードを一時的に {{ic|link-local}} に設定することもできます。これにより、NetworkManager が、IPv6 が無効化されていることについて警告をログに大量出力することを防ぐことができます。このスクリプトは、複数のデバイスや接続が IPv6 接続を提供している場合、動作しません。しかし、複数のデバイスを反復させることで応用することができます。注意点として、接続に対して何らかの変更が加えられた場合 ({{man|1|nmcli}} や[[デスクトップ環境]]の機能を使った場合)、そのデバイスに対する接続全体が再適用され、IPv6 が再有効化されます (その接続で有効化されている場合)。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/10-vpn-ipv6|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
	vpn-up)&lt;br /&gt;
		nmcli device modify &amp;quot;${DEVICE_IFACE}&amp;quot; ipv6.method link-local&lt;br /&gt;
		;;&lt;br /&gt;
	vpn-down)&lt;br /&gt;
		nmcli device reapply &amp;quot;${DEVICE_IFACE}&amp;quot;&lt;br /&gt;
		;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== OpenNTPD ====&lt;br /&gt;
&lt;br /&gt;
[[OpenNTPD#NetworkManager dispatcher を使う]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== systemd-timesyncd で DHCP 経由で受信した NTP サーバを動的に設定する ====&lt;br /&gt;
&lt;br /&gt;
異なるネットワーク間 (例: 会社の LAN、自宅の Wi-Fi、その他の様々な Wi-Fi) でローミングする場合、timesyncd によって使用されている NTP サーバを DHCP によって提供されているものに設定したい場合があります。ただし、NetworkManager 自体は systemd-timesyncd と通信して NTP サーバを設定することはできません。&lt;br /&gt;
&lt;br /&gt;
ディスパッチャを使うことで、この問題を回避できます。&lt;br /&gt;
&lt;br /&gt;
systemd-timesyncd の設定ようのオーバーレイディレクトリ {{ic|/etc/systemd/timesyncd.conf.d}} を[[作成]]してください (まだ存在していない場合)。{{ic|/etc/NetworkManager/dispatcher.d}} 内に以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/10-update-timesyncd|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
[ -z &amp;quot;$CONNECTION_UUID&amp;quot; ] &amp;amp;&amp;amp; exit 0&lt;br /&gt;
INTERFACE=&amp;quot;$1&amp;quot;&lt;br /&gt;
ACTION=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case $ACTION in&lt;br /&gt;
up | dhcp4-change | dhcp6-change)&lt;br /&gt;
	# `DHCP6_DHCP6_NTP_SERVERS` with double `DHCP6` is the correct variable name as varified by `printenv` as of NetworkManager 1.56.0-1&lt;br /&gt;
	set -- ${DHCP6_DHCP6_NTP_SERVERS-} ${DHCP4_NTP_SERVERS-}&lt;br /&gt;
	servers=$*&lt;br /&gt;
	[ -n &amp;quot;$servers&amp;quot; ] || exit 0&lt;br /&gt;
	mkdir -p /etc/systemd/timesyncd.conf.d&lt;br /&gt;
	cat &amp;lt;&amp;lt;-THE_END &amp;gt;&amp;quot;/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf&amp;quot;&lt;br /&gt;
		[Time]&lt;br /&gt;
		NTP=$servers&lt;br /&gt;
	THE_END&lt;br /&gt;
	systemctl restart systemd-timesyncd.service&lt;br /&gt;
	;;&lt;br /&gt;
down)&lt;br /&gt;
	rm -f &amp;quot;/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf&amp;quot;&lt;br /&gt;
	systemctl restart systemd-timesyncd.service&lt;br /&gt;
	;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
NetworkManager が新しいネットワーク接続を設定する ({{ic|1=ACTION=up}}) か、既存の接続の更新を取得する ({{ic|1=ACTION=dhcp4-change}} または {{ic|1=ACTION=dhcp6-change}}) 度に、接続データに NTP サーバ ({{ic|DHCP6_DHCP6_NTP_SERVERS}} と {{ic|DHCP4_NTP_SERVERS}}) に関する情報が含まれていると、接続固有のオーバーレイ設定ファイルが {{ic|/etc/systemd/timesyncd.conf.d}} に書き込まれ、このファイルには、提供された NTP サーバ (1台または複数) の情報が記述されます。提供された NTP サーバが含まれます。接続が停止される ({{ic|1=ACTION=down}}) と、接続固有のオーバーレイファイルは削除されます。systemd-timesyncd の設定が変更されるたびに、サービスは再起動され、更新された設定を取得します。NetworkManager で 2つ以上の接続を並行して管理する場合、{{ic|up}}、{{ic|dhcp4-change}}、{{ic|dhcp6-change}}、そして {{ic|down}} アクションが任意の順序で来るかもしれないので、設定内の異なる NTP サーバ名が上書きされないように接続固有の設定ファイルを意図的に使用しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|NetworkManager 1.56.0-1 の時点では、{{ic|1=DHCP6}} が2つある {{ic|1=DHCP6_DHCP6_NTP_SERVERS}} は、{{ic|1=printenv}} で確認できるように正しい変数名です。}}&lt;br /&gt;
&lt;br /&gt;
== テスト ==&lt;br /&gt;
&lt;br /&gt;
NetworkManager アプレットはログイン時にロードされるようになっているので、ほとんどのユーザにとって追加の設定は必要ないはずです。以前のネットワーク設定を無効化し、ネットワークから切断されているならば、NetworkManager が動作するかどうかをテストできます。まず始めに、{{ic|NetworkManager.service}} を[[起動]]してください。&lt;br /&gt;
&lt;br /&gt;
一部のアプレットは、NetworkManager アプレットをアプリケーションメニューからロードできるようにするために、{{ic|.desktop}} ファイルを提供しています。デスクトップファイルが提供されていない場合は、アプレットを使用するためのコマンドを見つけるか、アプレットをロードするために一度ログアウトして再度ログインする必要があります。アプレットが開始されれば、DHCP サーバを使って自動設定によるネットワーク接続のポーリングが開始されるでしょう。&lt;br /&gt;
&lt;br /&gt;
[[awesome]] などの XDG 非互換のウィンドウマネージャで GNOME のアプレットを開始するには:&lt;br /&gt;
&lt;br /&gt;
 nm-applet --sm-disable &amp;amp;&lt;br /&gt;
&lt;br /&gt;
固定 IP アドレスの場合は、NetworkManager にそのことを伝えなければなりません。手順としては通常、アプレットを右クリックし、&#039;接続を編集する&#039; (&#039;Edit Connections&#039;) などのような項目を選択します。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Wi-Fi パスワードの暗号化 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、NetworkManager はパスワードを平文で {{ic|/etc/NetworkManager/system-connections/}} 内の設定ファイルに保存します。保存されているパスワードを表示するには、以下のコマンドを使ってください:&lt;br /&gt;
&lt;br /&gt;
 # grep -r &#039;^psk=&#039; /etc/NetworkManager/system-connections/&lt;br /&gt;
&lt;br /&gt;
パスワードは root ユーザからファイルシステムでアクセス可能であり、さらに GUI (例: {{ic|nm-applet}}) を通して設定にアクセスできるユーザからもアクセス可能です。&lt;br /&gt;
&lt;br /&gt;
パスワードは、平文ではなく、キーリングの中で暗号化された形で保存するのが望ましいです。しかし、これの欠点は、それぞれのユーザで接続をセットアップしなけれならないことです。&lt;br /&gt;
&lt;br /&gt;
キーリングを読み書きするために、利用可能なシークレットエージェントが存在していなければなりません。いかのどれかを使用できます:&lt;br /&gt;
&lt;br /&gt;
* {{ic|nmcli}} で {{ic|--ask}} オプションを使う。&lt;br /&gt;
* [[#フロントエンド]] に挙げられているグラフィカルインターフェイス&lt;br /&gt;
&lt;br /&gt;
シークレットエージェントが利用できないと、{{ic|no secrets: No agents were available for this request.}} というエラーで認証が失敗します。&lt;br /&gt;
&lt;br /&gt;
==== GNOME Keyring を使う ====&lt;br /&gt;
&lt;br /&gt;
以下の方法を使うには、GNOME Keyring のキーリングデーモンが開始されていて、キーリングがアンロックされている必要があります。&lt;br /&gt;
&lt;br /&gt;
さらに、全ユーザのパスワードを保存しないように NetworkManager を設定する必要があります。GNOME の {{Pkg|network-manager-applet}} を使って、ターミナルから {{ic|nm-connection-editor}} を実行し、ネットワーク接続を選択し、&#039;&#039;編集&#039;&#039; (&#039;&#039;Edit&#039;&#039;) をクリックし、&#039;&#039;Wi-Fi セキュリティー&#039;&#039; (&#039;&#039;Wi-Fi Security&#039;&#039;) タブを選択し、パスワード入力欄の右のアイコンをクリックして、&#039;&#039;このユーザーのパスワードのみ保存する&#039;&#039; (&#039;&#039;Store the password only for this user&#039;&#039;) にチェックを入れてください。&lt;br /&gt;
&lt;br /&gt;
==== KDE Wallet を使う ====&lt;br /&gt;
&lt;br /&gt;
KDE の {{Pkg|plasma-nm}} を使う場合、アプレットをクリックし、右上の &#039;&#039;設定&#039;&#039; アイコンをクリックし、ネットワーク接続を選択し、&#039;&#039;一般設定&#039;&#039; (&#039;&#039;General configuration&#039;&#039;) タブを選択し、&#039;&#039;すべてのユーザはこのネットワークに接続可能&#039;&#039; (&#039;&#039;All users may connect to this network&#039;&#039;) のチェックを外してください。このオプションにチェックが入っていると、たとえキーリングデーモンが実行されていたとしても、パスワードが平文で保存されてしまいます。&lt;br /&gt;
&lt;br /&gt;
以前このオプションにチェックが入っていて、後にチェックを外した場合、ファイルからパスワードを消すために {{ic|reset}} オプションを使用する必要がある場合があります。あるいは、接続を削除し、再度セットアップしてください。&lt;br /&gt;
&lt;br /&gt;
=== Wi-Fi でインターネット接続を共有する ===&lt;br /&gt;
&lt;br /&gt;
数クリックでインターネット接続 (例: 3G、有線) を共有することができます。ただし、[[ファイアウォール]]はインターネット共有を妨害する場合があることに注意してください。&lt;br /&gt;
&lt;br /&gt;
AP モードをサポートする Wi-Fi カードが必要になります。詳細は [[ソフトウェアアクセスポイント#Wi-Fi デバイスが AP モードをサポートしていること]] を見てください。&lt;br /&gt;
&lt;br /&gt;
接続を共有できるようにするために {{Pkg|dnsmasq}} パッケージを[[インストール]]してください。NetworkManager は ({{ic|dnsmasq.service}} とは独立に) 独自の &#039;&#039;dnsmasq&#039;&#039; インスタンスを DHCP サーバとして開始することに注意してください。これに関する注意事項は [[#dnsmasq]] を見てください。&lt;br /&gt;
&lt;br /&gt;
共有された接続を作成してください:&lt;br /&gt;
&lt;br /&gt;
* アプレットをクリックし、&#039;&#039;新規 Wi-Fi ネットワークを作成&#039;&#039; (&#039;&#039;Create new wireless network&#039;&#039;) を選んでください。&lt;br /&gt;
* ウィザードに従ってください (WPA2 以上を選んでください。パスワードは 8 文字以上にしてください。さもないと失敗します)。&lt;br /&gt;
* Wi-Fi モードとして[[Fedora:Features/RealHotspot|ホットスポット]]かアドホックを選択してください。&lt;br /&gt;
&lt;br /&gt;
これで、次回必要になるときのために接続は保存されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|Android はアドホックネットワークへの接続をサポートしていません。Android と接続を共有するには、インフラストラクチャモードを使用してください (つまり、Wi-Fi モードを &amp;quot;ホットスポット&amp;quot; に設定する)。}}&lt;br /&gt;
&lt;br /&gt;
=== イーサネットでインターネット接続を共有する ===&lt;br /&gt;
&lt;br /&gt;
シナリオ: デバイスが Wi-Fi 経由でインターネットに接続されていて、イーサネットで他のデバイスとインターネット接続を共有したいと考えている場合。&lt;br /&gt;
&lt;br /&gt;
要件:&lt;br /&gt;
&lt;br /&gt;
* 接続を共有できるようにするために {{Pkg|dnsmasq}} パッケージと {{Pkg|nm-connection-editor}} パッケージを[[インストール]]してください。NetworkManager は ({{ic|dnsmasq.service}} とは独立に) 独自の &#039;&#039;dnsmasq&#039;&#039; インスタンスを DHCP サーバとして開始することに注意してください。これに関する注意事項は [[#dnsmasq]] を見てください。&lt;br /&gt;
* インターネットに接続されたデバイスとその他のデバイスが適切なイーサネットケーブルで接続されていること (これは通常、間をクロスオーバーケーブルやスイッチで繋ぐことを意味します)。&lt;br /&gt;
* インターネット共有が[[ファイアウォール]]によってブロックされていないこと。&lt;br /&gt;
&lt;br /&gt;
手順:&lt;br /&gt;
&lt;br /&gt;
* ターミナルから {{ic|nm-connection-editor}} を実行してください。&lt;br /&gt;
* 新しいイーサネット接続を追加してください。&lt;br /&gt;
* 何かわかりやすい名前を付けてください。例えば &amp;quot;Shared Internet&amp;quot;。&lt;br /&gt;
* &amp;quot;IPv4 設定&amp;quot; (&amp;quot;IPv4 Settings&amp;quot;) を開いてください。&lt;br /&gt;
* &amp;quot;メソッド:&amp;quot; (&amp;quot;Method:&amp;quot;) で &amp;quot;他のコンピューターへ共有&amp;quot; (&amp;quot;Shared to other computers&amp;quot;) を選択してください。&lt;br /&gt;
* 保存&lt;br /&gt;
&lt;br /&gt;
これで、NetworkManager の有線接続に &amp;quot;Shared Internet&amp;quot; という新しいオプションができたはずです。&lt;br /&gt;
&lt;br /&gt;
=== cron ジョブやスクリプトでネットワークが立ち上がっているか確認する ===&lt;br /&gt;
&lt;br /&gt;
{{Out of date|&#039;&#039;nm-tool&#039;&#039; は NetworkManager から削除されました [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/bb8c75bd536d4f8fb80a4366025a279078f0ec81]。代わりに &#039;&#039;nmcli&#039;&#039; を使用するべきです。}}&lt;br /&gt;
&lt;br /&gt;
一部の &#039;&#039;cron&#039;&#039; ジョブではネットワークが立ち上がっている必要があり、ネットワークが落ちている状態でそのようなジョブを実行したくない場合があります。そうするには、NetworkManager の &#039;&#039;nm-tool&#039;&#039; にクエリして、ネットワークの状態をチェックする &#039;&#039;&#039;if&#039;&#039;&#039; テストを追加してください。このテストは、何らかのインターフェイスが立ち上がっていれば成功し、インターフェイスが全て落ちている場合は失敗します。これは、ある時は有線接続されていて、ある時は無線で、またある時はネットワークから切断されているようなノート PC で便利です。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
if [ $(nm-tool|grep State|cut -f2 -d&#039; &#039;) == &amp;quot;connected&amp;quot; ]; then&lt;br /&gt;
    # ネットワークがオンラインの時に実行したいコード&lt;br /&gt;
else&lt;br /&gt;
    # ネットワークがオフラインの時に実行したいコード (注記: この部分と上の else は任意です)&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
これは、例えば F-Prot ウイルススキャナのシグネチャを更新するために &#039;&#039;fpupdate&#039;&#039; を実行する {{ic|cron.hourly}} で便利です。また、&#039;&#039;nm-tool&#039;&#039; の出力の様々な部分を使えば、ネットワークを識別することもできます。例えば、アクティブなワイヤレスネットワークにはアスタリスクが付くので、ネットワーク名を grep して、その後でアスタリスクを grep しますs。&lt;br /&gt;
&lt;br /&gt;
=== ブート時にシークレットを使ってネットワークに接続する ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、NetworkManager はシークレットを要求するネットワークにはブート時に自動的に接続しません。NetworkManager では、そのようなネットワークは、そのネットワークをデフォルトで使用するユーザがログインした後にのみ、接続されるからです。この動作を変更するには、以下を行ってください:&lt;br /&gt;
&lt;br /&gt;
# パネルの {{ic|nm-applet}} のアイコンを右クリックし、&amp;quot;接続を編集する&amp;quot; を選択し、Wi-Fi タブを開いてください。&lt;br /&gt;
# 使いたい接続を選択し、編集ボタンをクリックしてください。&lt;br /&gt;
# “Connect Automatically” と “Available to all users” のボックスにチェックを入れてください。&lt;br /&gt;
# 加えて、&amp;quot;Wi-Fi Security&amp;quot; タブで &amp;quot;Store password for all users (not encrypted)&amp;quot; が選択されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
ログアウトし、ログインし直せば完了です。&lt;br /&gt;
&lt;br /&gt;
=== OpenConnect で KWallet 内のパスワードを使う ===&lt;br /&gt;
&lt;br /&gt;
接続時にユーザ名とパスワードを入力することはできますが、{{Pkg|plasma-nm}} 0.9.3.2-1 から、[[KWallet]] から直接 OpenConnect のユーザ名とパスワードを取得することが可能になりました。&lt;br /&gt;
&lt;br /&gt;
&amp;quot;KDE Wallet Manager&amp;quot; を開き、&amp;quot;Network Management|Maps&amp;quot; で対象の OpenConnect VPN 接続を見つけてください。&amp;quot;Show values&amp;quot; をクリックし、認証情報を以下の形式で &amp;quot;VpnSecrets&amp;quot; に入力してください (&#039;&#039;ユーザ名&#039;&#039; と &#039;&#039;パスワード&#039;&#039; の部分は適宜置き換えてください):&lt;br /&gt;
&lt;br /&gt;
 form:main:username%SEP%&#039;&#039;ユーザ名&#039;&#039;%SEP%form:main:password%SEP%&#039;&#039;パスワード&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
次回の接続時に、ユーザ名とパスワードが &amp;quot;VPN secrets&amp;quot; ダイアログボックスに入力されるはずです。&lt;br /&gt;
&lt;br /&gt;
=== 特定のデバイスを無視する ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager で特定のデバイスを無視し、そのデバイスに対してはアドレスとルート (route) の設定を試みないようにすることが望ましい場合があります。{{ic|/etc/NetworkManager/conf.d/unmanaged.conf}} で以下のオプションを使うことで、MAC またはインターフェイス名によって特定のデバイスを無視することができます:&lt;br /&gt;
&lt;br /&gt;
 [keyfile]&lt;br /&gt;
 unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth0&lt;br /&gt;
&lt;br /&gt;
ファイルを編集したら、{{ic|nmcli general reload}} を root として実行してください。その後、NetworkManager があなたの設定を変更することなく、インターフェイスを構成できるようになっているはずです。&lt;br /&gt;
&lt;br /&gt;
=== MAC アドレスのランダム化を設定する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=(安定した) リンク接続[https://bbs.archlinux.org/viewtopic.php?id=220101]や、MAC アドレスに基づいてデバイスを制限したりネットワーク容量に制限を設けているネットワークへの接続には、MAC アドレスのランダム化を無効化する必要がある場合があります。}}&lt;br /&gt;
&lt;br /&gt;
MAC アドレスのランダム化は、本物の MAC アドレスをネットワークに開示しないことで、プライバシーを向上させることができます。&lt;br /&gt;
&lt;br /&gt;
NetworkManager は2種類の MAC アドレスランダム化をサポートしています: スキャン中のランダム化とネットワーク接続におけるランダム化です。どちらのモードも、{{ic|/etc/NetworkManager/NetworkManager.conf}} を変更するか、{{ic|/etc/NetworkManager/conf.d/}} 内に別の設定ファイルを作成することで設定できます (前者は NetworkManager によって上書きされる場合があるので、後者が推奨されます)。&lt;br /&gt;
&lt;br /&gt;
Wi-Fi スキャン中のランダム化はデフォルトで有効化されていますが、以下の行を {{ic|/etc/NetworkManager/NetworkManager.conf}} か {{ic|/etc/NetworkManager/conf.d}} 内の別の設定ファイルに追加することで無効化することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=&lt;br /&gt;
[device]&lt;br /&gt;
wifi.scan-rand-mac-address=no&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ネットワーク接続における MAC アドレスランダム化は、無線インターフェイスとイーサネットインターフェイスで別々のモードを設定することができます。モードに関する詳細は [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ GNOME のブログ記事]を参照してください。&lt;br /&gt;
&lt;br /&gt;
MAC アドレスランダム化に関して、最も重要なモードは {{ic|stable}} と {{ic|random}} です。{{ic|stable}} は、新しいネットワークに接続した時にランダムな MAC アドレスを生成し、そのネットワークと MAC アドレスを永続的に関連付けます。これはつまり、そのネットワークに接続すると毎回同じ MAC アドレスが使用されることを意味します。それとは対照的に、{{ic|random}} は、ネットワークに接続する度に、そのネットワークが新しかろうが既知であろうが、新しい MAC アドレスを生成します。{{ic|/etc/NetworkManager/conf.d}} 内に設定ファイルを追加してこの MAC アドレスランダム化を設定することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=&lt;br /&gt;
[device-mac-randomization]&lt;br /&gt;
# &amp;quot;yes&amp;quot; は既にスキャンにおけるデフォルトです。&lt;br /&gt;
wifi.scan-rand-mac-address=yes&lt;br /&gt;
 &lt;br /&gt;
[connection-mac-randomization]&lt;br /&gt;
# 全てのイーサネット接続に対して MAC をランダム化する&lt;br /&gt;
ethernet.cloned-mac-address=random&lt;br /&gt;
# 各 Wi-Fi に対してランダムな MAC を生成し、それらを関連付ける。&lt;br /&gt;
wifi.cloned-mac-address=stable&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
特定の接続に対して MAC ランダム化を設定するには (例えば、そのネットワークでランダムな MAC アドレスを使えない場合)、[[#接続を編集する|接続を編集して]] {{ic|802-11-wireless.cloned-mac-address}} に所望のモード (例: {{ic|stable}}、{{ic|random}}) を設定してください。&lt;br /&gt;
&lt;br /&gt;
詳細は [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ GNOME ブログ記事]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ホスト名の送信をオフにする ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、NetworkManager は DHCP サーバにホスト名を送ります。&lt;br /&gt;
&lt;br /&gt;
DHCP サーバへのホスト名の送信をグローバルに無効化するには、{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイルで2つのオプション {{ic|ipv4.dhcp-send-hostname{{=}}0}} と {{ic|ipv6.dhcp-send-hostname{{=}}0}} を設定してください。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/dhcp-send-hostname.conf|2=&lt;br /&gt;
[connection]&lt;br /&gt;
ipv4.dhcp-send-hostname=0&lt;br /&gt;
ipv6.dhcp-send-hostname=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
特定の接続においてのみ DHCP サーバへのホスト名の送信を無効化するには (あるいは、グローバルに無効化しておいて、特定の接続では有効化するには)、以下をネットワーク接続ファイルに追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/system-connections/&#039;&#039;your_connection_file&#039;&#039;.nmconnection|2=&lt;br /&gt;
...&lt;br /&gt;
[ipv4]&lt;br /&gt;
dhcp-send-hostname=false&lt;br /&gt;
...&lt;br /&gt;
[ipv6]&lt;br /&gt;
dhcp-send-hostname=false&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|デフォルトでは、[[#DHCP クライアント|内部 DHCP クライアント]]のみがこれらのオプションに従います。NetworkManager を dhcpcd と共に使用する際にホスト名の送信を省略するには、{{ic|/etc/dhcpcd.conf}} を編集して最後の行に {{ic|anonymous}} を挿入してください。}}&lt;br /&gt;
&lt;br /&gt;
=== IPv6 プライバシー拡張を有効にする ===&lt;br /&gt;
&lt;br /&gt;
[[IPv6#NetworkManager]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 接続ごとに一意の DUID を設定する ===&lt;br /&gt;
&lt;br /&gt;
DHCPv6 Unique Identifier (DUID) は、DHCPv6 クライアントが DHCPv6 サーバに対して自身を識別するために使用する値です。NetworkManager は3種類の DUID をサポートしています:&lt;br /&gt;
&lt;br /&gt;
* DUID-UUID ([[RFC:6355|RFC 6355]]): Universally Unique IDentifier (UUID) から生成されます。&lt;br /&gt;
* DUID-LL ([[RFC:3315|RFC 3315]]): リンク層アドレス (別名 MAC アドレス) から生成されます。&lt;br /&gt;
* DUID-LLT ([[RFC:3315|RFC 3315]]): リンク層アドレスとタイムスタンプから生成されます。&lt;br /&gt;
&lt;br /&gt;
NetworkManager の内部 DHCP クライアントが使用されている場合 (デフォルト)、machine-id ({{ic|/etc/machine-id}}) から生成されたグローバルで永続的な DUID-UUID で自身を識別します。これは、すべての接続が同じ UUID を共有することを意味し、プライバシーの侵害となる可能性があります。&lt;br /&gt;
&lt;br /&gt;
幸いなことに、NetworkManager は、接続の stable-id とホストごとの一意のキーから派生した、接続ごとの一意の DUID を提供できます。{{ic|/etc/NetworkManager/conf.d}} 内に次の設定を追加することで、これを有効にすることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/duid.conf|2=&lt;br /&gt;
[connection]&lt;br /&gt;
ipv6.dhcp-duid=stable-uuid&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|stable-ll}} および {{ic|stable-llt}} の値もサポートされています。詳細については、{{man|5|nm-settings|ipv6 setting}} の {{ic|dhcp-duid}} の説明を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 有線接続の操作 ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager は、デフォルトで、有線イーサネット接続を検出するたびにそれぞれに対して接続プロファイルを生成します。接続を生成する時点では、利用可能なイーサネットアダプターがさらにあるかどうかはわかりません。そのため、最初の有線接続は &amp;quot;有線接続 1&amp;quot; となります。{{ic|no-auto-default}} ({{man|5|NetworkManager.conf}} を参照) を設定するか、単に削除することで、この接続を生成しないようにできます。そうすれば、NetworkManager はこのインターフェイスの接続を二度と生成しないように記憶します。&lt;br /&gt;
&lt;br /&gt;
また、接続を編集 (およびディスクに永続化) したり、削除したりすることもできます。NetworkManager は新しい接続を再生成することはありません。それから、名前を好きなものに変更することができます。この作業には {{Pkg|nm-connection-editor}} などを使うことができます。&lt;br /&gt;
&lt;br /&gt;
=== Wi-Fi バックエンドとして iwd を使用する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&amp;lt;nowiki/&amp;gt;&lt;br /&gt;
* {{ic|iwd.service}} を有効化したり、[[iwd]] を手動で構成したりしないでください。NetworkManager は自身で iwd を開始し、管理します。&lt;br /&gt;
* &#039;&#039;iwd&#039;&#039; に切り替える前に、[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues?scope=all&amp;amp;utf8=%E2%9C%93&amp;amp;state=opened&amp;amp;search=iwd 既知の問題]を考慮してください。}}&lt;br /&gt;
&lt;br /&gt;
[https://archive.kernel.org/oldwiki/iwd.wiki.kernel.org/networkmanager.html 実験的な iwd バックエンド]を有効化するには、{{Pkg|iwd}} を[[インストール]]してから、以下の設定ファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/wifi_backend.conf|2=&lt;br /&gt;
[device]&lt;br /&gt;
wifi.backend=iwd&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
または、{{AUR|networkmanager-iwd}} をインストールすることもできます。これは、&#039;&#039;iwd&#039;&#039; のみで動作する &#039;&#039;NetworkManager&#039;&#039; をビルドするように設定された修正パッケージです。主な違いは、&#039;&#039;iwd&#039;&#039; が必要であり、&#039;&#039;wpa_supplicant&#039;&#039; はビルド後にアンインストールできることです。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&#039;&#039;iwd&#039;&#039; に切り替えた後、[https://archive.kernel.org/oldwiki/iwd.wiki.kernel.org/networkmanager.html#converting_network_profiles 既存の NetworkManager ネットワークプロファイルを変換する]必要がある場合があります。}}&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク名前空間内で実行する ===&lt;br /&gt;
&lt;br /&gt;
ネットワーク名前空間内で NetworkManager を実行する場合 (たとえば、選択したアプリケーションで使用する必要がある特定のデバイスを管理する場合)、その名前空間に移動させる前にデバイスを落としてください:&lt;br /&gt;
&lt;br /&gt;
 $ ip link set dev &#039;&#039;MY_DEVICE&#039;&#039; down&lt;br /&gt;
 $ ip link set dev &#039;&#039;MY_DEVICE&#039;&#039; netns &#039;&#039;MY_NAMESPACE&#039;&#039;&lt;br /&gt;
 $ ip netns exec &#039;&#039;MY_NAMESPACE&#039;&#039; NetworkManager&lt;br /&gt;
 ...&lt;br /&gt;
 $ ip netns exec &#039;&#039;MY_NAMESPACE&#039;&#039; killall NetworkManager&lt;br /&gt;
&lt;br /&gt;
そうしないと、NetworkManager は後で {{ic|device is strictly unmanaged}} エラーにより接続の確立に失敗します。&lt;br /&gt;
&lt;br /&gt;
=== VPN に自動的に接続する ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager は、インターネットへの接続時に VPN に自動的に接続するように (ネットワーク毎に) 設定できます。VPN 接続自体は、GNOME の NetworkManager フロントエンドで追加できますが、VPN を自動的に使用するようにするには、{{ic|nmcli}} を使用しなければなりません。他のフロントエンドにはこの制限はない場合があります。&lt;br /&gt;
&lt;br /&gt;
まず、対象の VPN が全ユーザで利用可能であることを確認してください。GNOME では、{{ic|details}} タブ内のあるボックスにチェックを入れれば良いです。{{ic|Identity}} タブのパスワード入力欄内の右側にあるアイコンをクリックし、{{ic|Store the password for all users}} を選択してください。&lt;br /&gt;
&lt;br /&gt;
そして、VPN 接続の UUID を見つけ、インターネット接続の {{ic|connection.secondaries}} にその UUID を追加してください:&lt;br /&gt;
&lt;br /&gt;
 # UUID=$(nmcli --get-values connection.uuid connection show &#039;&#039;VPN接続の名前&#039;&#039;)&lt;br /&gt;
 # nmcli connection modify &#039;&#039;インターネット接続の名前&#039;&#039; connection.secondaries &amp;quot;$UUID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NetworkManager を再起動して、設定したインターネット接続に接続したら、自動的に VPN に接続されるようになっているはずです。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== セキュアな Wi-Fi ネットワークのパスワードプロンプトが表示されない ===&lt;br /&gt;
&lt;br /&gt;
セキュアな Wi-Fi ネットワークに接続しようとすると、パスワードのプロンプトが表示されず、接続が確立されません。これは、キーリングのパッケージがインストールされていない時に起こります。簡単な解決法は、{{Pkg|gnome-keyring}} をインストールすることです。パスワードを暗号化して保存したい場合は、[[GNOME Keyring]] に書かれてある指示に従い、&#039;&#039;gnome-keyring-daemon&#039;&#039; をセットアップしてください。&lt;br /&gt;
&lt;br /&gt;
=== Network management disabled ===&lt;br /&gt;
&lt;br /&gt;
時々、NetworkManager を終了したときに pid (state) ファイルが削除されずに {{ic|Network management disabled}} というメッセージが表示されることがあります。これが発生した場合は、そのファイルを手動で削除してください:&lt;br /&gt;
&lt;br /&gt;
 # rm /var/lib/NetworkManager/NetworkManager.state&lt;br /&gt;
&lt;br /&gt;
=== 内蔵 DHCP クライアントに関する問題 ===&lt;br /&gt;
&lt;br /&gt;
内臓の DHCP クライアントを使用すると IP アドレスの取得に問題が発生する場合、他の DHCP クライアントを使用することを検討してください (手順は [[#DHCP クライアント]] を見てください)。この回避策は、eduroam などの巨大なワイヤレスネットワークにおける問題を解決するかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== dhclient における DHCP の問題 ===&lt;br /&gt;
&lt;br /&gt;
DHCP での IP アドレス取得に問題が発生する場合、以下を {{ic|/etc/dhclient.conf}} に追加してみてください:&lt;br /&gt;
&lt;br /&gt;
  interface &amp;quot;eth0&amp;quot; {&lt;br /&gt;
    send dhcp-client-identifier 01:&#039;&#039;aa:bb:cc:dd:ee:ff&#039;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;aa:bb:cc:dd:ee:ff&#039;&#039;}} は NIC の MAC アドレスです。この MAC アドレスは {{Pkg|iproute2}} パッケージの {{ic|ip link show &#039;&#039;インターフェイス&#039;&#039;}} コマンドを使って確認できます。&lt;br /&gt;
&lt;br /&gt;
=== 3G モデムが検知されない ===&lt;br /&gt;
&lt;br /&gt;
[[USB 3G モデム#NetworkManager]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ノートパソコンで WLAN をオフにする ===&lt;br /&gt;
&lt;br /&gt;
時々、ノートパソコンに付いているスイッチを使って Wi-Fi アダプタを無効化し、再び有効化しようとすると NetworkManager が機能しなくなることがあります。これは、しばしば &#039;&#039;rfkill&#039;&#039; の問題であることがあります。ドライバが &#039;&#039;rfkill&#039;&#039; にワイヤレスアダプタの状態について通知しているかどうか確認するには、以下のコマンドを使ってください:&lt;br /&gt;
&lt;br /&gt;
 $ watch -n1 rfkill list all&lt;br /&gt;
&lt;br /&gt;
アダプタを切り替えた後にどれかの識別子がブロックされたままになる場合、手動でアンロックしてみることができます (X の部分は、上記のコマンドで得られた識別子の番号です):&lt;br /&gt;
&lt;br /&gt;
 # rfkill event unblock X&lt;br /&gt;
&lt;br /&gt;
=== 固定 IP アドレスの設定が DHCP に戻る ===&lt;br /&gt;
&lt;br /&gt;
とある未解決のバグにより、デフォルトの接続を固定 IP アドレスに変更すると、{{ic|nm-applet}} が設定の変更を適切に保存せずに、自動 DHCP に戻ってしまいます。&lt;br /&gt;
&lt;br /&gt;
この問題を回避するには、{{ic|nm-applet}} でデフォルトの設定 (例: &amp;quot;Auto eth0&amp;quot;) を編集し、接続名を変更 (例: &amp;quot;my eth0&amp;quot;) し、&amp;quot;Available to all users&amp;quot; チェックボックスのチェックを外し、固定 IP アドレスの設定を好きに変更し、&#039;&#039;&#039;Apply&#039;&#039;&#039; をクリックしてください。これで、指定した名前で新しい接続が保存されます。&lt;br /&gt;
&lt;br /&gt;
そうしたら、デフォルトの接続に自動的に接続しないようにしたいと思うでしょう。そうするには、まず {{ic|nm-connection-editor}} を実行してください (root としてでは&#039;&#039;&#039;ありません&#039;&#039;&#039;)。接続エディタで、デフォルトの接続 (例: &amp;quot;Auto eth0&amp;quot;) を編集し、&amp;quot;Connect automatically&amp;quot; のチェックを外してください。&#039;&#039;&#039;Apply&#039;&#039;&#039; をクリックし、接続エディタを閉じてください。&lt;br /&gt;
&lt;br /&gt;
=== 通常ユーザとして接続を編集できない ===&lt;br /&gt;
&lt;br /&gt;
[[#PolicyKit のパーミッションをセットアップする]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 隠されたワイヤレスネットワークを削除する ===&lt;br /&gt;
&lt;br /&gt;
隠されたネットワークはワイヤレスの選択リストに表示されないので、GUI から削除することができません。以下のコマンドでそのようなネットワークを削除できます:&lt;br /&gt;
&lt;br /&gt;
 # rm /etc/NetworkManager/system-connections/&#039;&#039;SSID&#039;&#039;.nmconnection&lt;br /&gt;
&lt;br /&gt;
これは、他の接続でも使えます。&lt;br /&gt;
&lt;br /&gt;
=== VPN が GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
GNOME を使用している時に NetworkManager で OpenConnect や vpnc の接続をセットアップすると、ダイアログボックスが表示されず、以下のエラーが {{ic|/var/log/errors.log}} に現れることがあります:&lt;br /&gt;
&lt;br /&gt;
 localhost NetworkManager[399]: &amp;lt;error&amp;gt; [1361719690.10506] [nm-vpn-connection.c:1405] get_secrets_cb(): Failed to request VPN secrets #3: (6) No agents were available for this request.&lt;br /&gt;
&lt;br /&gt;
これは、GNOME NetworkManager Applet が、ダイアログスクリプトが {{ic|/usr/lib/gnome-shell}} にあると想定していることが原因です (NetworkManager のパッケージはダイアログスクリプトを {{ic|/usr/lib/networkmanager}} 内に置きます)。&amp;quot;一時的な&amp;quot; 修正として (このバグはしばらく前から存在しています)、以下のシンボリックリンクを作成してください:&lt;br /&gt;
&lt;br /&gt;
* OpenConnect の場合: {{ic|ln -s /usr/lib/nm-openconnect-auth-dialog /usr/lib/gnome-shell/}}&lt;br /&gt;
* VPNC (つまり Cisco VPN) の場合: {{ic|ln -s /usr/lib/nm-vpnc-auth-dialog /usr/lib/gnome-shell/}}&lt;br /&gt;
&lt;br /&gt;
これは、他の NetworkManager VPN プラグインでも行う必要がある場合がありますが、上記が最も一般的です。&lt;br /&gt;
&lt;br /&gt;
=== 検出されてはいるのにヨーロッパのワイヤレスネットワークに接続できない ===&lt;br /&gt;
&lt;br /&gt;
WLAN チップにはデフォルトの[[ネットワーク設定/ワイヤレス#規制範囲に従う|規制範囲]]が設定されています。アクセスポイントがその規制内で動作しない場合、そのネットワークに接続することはできません。これは簡単に解決できます:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|wireless-regdb}} を[[インストール]]してください。&lt;br /&gt;
# {{ic|/etc/conf.d/wireless-regdom}} で適切な国名コードをアンコメントしてください。&lt;br /&gt;
# システムを再起動してください。この設定はブート時にしか読み込まれないからです。&lt;br /&gt;
&lt;br /&gt;
=== ブート時の VPN への自動接続が機能しない ===&lt;br /&gt;
&lt;br /&gt;
この問題は、システム (つまり、root ユーザとして動作している NetworkManager) が VPN 接続を確立しようと試みたが、パスワードが特定のユーザの GNOME Keyring 内に保存されているためにアクセスできなかった場合に発生します。&lt;br /&gt;
&lt;br /&gt;
解決策は、[[#ディスパッチャを使って、ネットワーク接続が確立された後に VPN に接続する]] の手順 2 で説明されている通りに、VPN のパスワードを平文で保存することです。&lt;br /&gt;
&lt;br /&gt;
{{ic|nm-applet}} GUI で新しい &amp;quot;auto-connect VPN&amp;quot; オプションを使用している場合は、自動接続するために 手順 1 で説明されているディスパッチャを使用する必要はありません。&lt;br /&gt;
&lt;br /&gt;
=== systemd のボトルネック ===&lt;br /&gt;
&lt;br /&gt;
時が立つにつれてログファイル ({{ic|/var/log/journal}}) が膨大になってしまうことがあります。そうすると NetworkManager を使う場合にブートパフォーマンスに大きな影響を与えます。参照: [[systemd#少しづつ起動時間が長くなっている]]。&lt;br /&gt;
&lt;br /&gt;
=== 定期的なネットワーク接続断、遅延、パケットロス (Wi-Fi) ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager は2分ごとにスキャンを行います。&lt;br /&gt;
&lt;br /&gt;
一部の Wi-Fi ドライバは、接続/アソシエーション中にベースステーションのスキャンを行うと問題が発生します。症状としては、VPN 接続断/再接続、パケットロス、ウェブページのロードに失敗してリフレッシュすると良くなるなどがあります。&lt;br /&gt;
&lt;br /&gt;
{{ic|journalctl -f}} を root として実行すると、スキャンが行われていることがわかります。以下のようなメッセージが定期的にログに現れます:&lt;br /&gt;
&lt;br /&gt;
 NetworkManager[410]: &amp;lt;info&amp;gt;  (wlp3s0): roamed from BSSID 00:14:48:11:20:CF (my-wifi-name) to (none) ((none))&lt;br /&gt;
&lt;br /&gt;
ローミングが重要でないならば、Wi-Fi 接続プロファイルでアクセスポイントの BSSID をロックすることにより、定期的なスキャンの挙動を無効化することができます。&lt;br /&gt;
&lt;br /&gt;
=== Lenovo ラップトップ (IdeaPad、Legion など) で Wi-Fi をオンにできない ===&lt;br /&gt;
&lt;br /&gt;
これは、Wi-Fi ドライバがソフトブロックを誤って報告することによる、一部の Lenovo モデルにおける {{ic|ideapad_laptop}} モジュールの問題です。カードは依然として {{ic|netctl}} で操作できますが、NetworkManager などのマネージャーは機能しません。この問題が発生しているかどうかを確認するには、ハードウェアのスイッチをオンオフしたあとで {{ic|rfkill list}} の出力を確認し、ソフトブロックされ続けるかどうか確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|rfkill の問題を解決するには、{{ic|rfkill.default_state}} と {{ic|rfkill.master_switch_mode}} を使用してみてください ([https://docs.kernel.org/admin-guide/kernel-parameters.html kernel-parameters.html] を参照))。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ideapad_laptop}} モジュールを[[modprobe|アンロード]]すれば、この問題は解決するはずです。(&#039;&#039;&#039;警告&#039;&#039;&#039;: これにより、ラップトップのキーボードとタッチパッドも無効になる可能性があります!)&lt;br /&gt;
&lt;br /&gt;
=== nm-applet が i3wm で消える ===&lt;br /&gt;
&lt;br /&gt;
通知に {{ic|xfce4-notifyd.service}} を使用する場合は、そのユニットを[[編集]]して、以下を追加する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/user/xfce4-notifyd.service.d/display_env.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=&amp;quot;DISPLAY=:0.0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デーモンをロードし直したら、{{ic|xfce4-notifyd.service}} を[[再起動]]してください。i3 を終了し、再び起動すると、アプレットがトレイに表示されているはずです。&lt;br /&gt;
&lt;br /&gt;
=== Unit dbus-org.freedesktop.resolve1.service not found ===&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd-resolved.service}} が開始されていない場合、NetworkManager は D-Bus を使用して開始しようとし、失敗します:&lt;br /&gt;
&lt;br /&gt;
 dbus-daemon[991]: [system] Activating via systemd: service name=&#039;org.freedesktop.resolve1&#039; unit=&#039;dbus-org.freedesktop.resolve1.service&#039; requested by &#039;:1.23&#039; (uid=0 pid=1012 comm=&amp;quot;/usr/bin/NetworkManager --no-daemon &amp;quot;)&lt;br /&gt;
 dbus-daemon[991]: [system] Activation via systemd failed for unit &#039;dbus-org.freedesktop.resolve1.service&#039;: Unit dbus-org.freedesktop.resolve1.service not found.&lt;br /&gt;
 dbus-daemon[991]: [system] Activating via systemd: service name=&#039;org.freedesktop.resolve1&#039; unit=&#039;dbus-org.freedesktop.resolve1.service&#039; requested by &#039;:1.23&#039; (uid=0 pid=1012 comm=&amp;quot;/usr/bin/NetworkManager --no-daemon &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
これは、NetworkManager が {{man|5|NetworkManager.conf}} の {{ic|1=main.dns=}} 設定に関係なく、DNS 情報を [[systemd-resolved]] に送信しようとするためです。[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/d4eb4cb45f41b1751cacf71da558bf8f0988f383]&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイルで無効にできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/no-systemd-resolved.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
systemd-resolved=false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Bug|62138}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Secrets were required, but not provided ===&lt;br /&gt;
&lt;br /&gt;
ネットワークに接続しようとして以下のエラーが発生する場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nmcli device wifi connect &#039;&#039;SSID&#039;&#039; password &#039;&#039;パスワード&#039;&#039;|&lt;br /&gt;
Error: Connection activation failed: (7) Secrets were required, but not provided&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このエラーの原因となりうるものはたくさんあり、[[journal]] を読む必要があります ({{ic|-u NetworkManager}} で出力をフィルタしてください)。例えば、接続の確立に時間がかかりすぎると、NetworkManager はパスワードが正しくなかったと結論づけます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
NetworkManager[1372]: &amp;lt;warn&amp;gt;  [1643991888.3808] device (wlan0): Activation: (wifi) association took too long&lt;br /&gt;
NetworkManager[1372]: &amp;lt;info&amp;gt;  [1643991888.3809] device (wlan0): state change: config -&amp;gt; need-auth (reason &#039;none&#039;, sys-iface-state: &#039;managed&#039;)&lt;br /&gt;
NetworkManager[1372]: &amp;lt;warn&amp;gt;  [1643991888.3838] device (wlan0): Activation: (wifi) asking for new secrets&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
接続プロファイルを削除し、新しいプロファイルを作成してみてください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection delete &#039;&#039;SSID&#039;&#039;&lt;br /&gt;
 $ nmcli device wifi connect &#039;&#039;SSID&#039;&#039; password &#039;&#039;パスワード&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
また、MAC アドレスランダム化を無効化してみるのも良いでしょう:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=&lt;br /&gt;
[device]&lt;br /&gt;
wifi.scan-rand-mac-address=no&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== iwd での WPA Enterprise 接続 ===&lt;br /&gt;
&lt;br /&gt;
[[#Wi-Fi バックエンドとして iwd を使用する|iwd バックエンド]]と NetworkManager で &#039;eduroam&#039; などの WPA Enterprise ネットワークに接続しようとした際に、NetworkManager sで以下のエラーが発生します:&lt;br /&gt;
&lt;br /&gt;
  Connection &#039;eduroam&#039; is not avialable on device wlan0 because profile is not compatible with device (802.1x connections must have IWD provisioning files)&lt;br /&gt;
&lt;br /&gt;
NetworkManager は WPA Enterprise ネットワークを設定できないことが原因です。なので、[[iwd#WPA Enterprise]] で説明されているように iwd の設定ファイル {{ic|/var/lib/iwd/&#039;&#039;essid&#039;&#039;.8021x}} を使って設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== Failed to request VPN secrets ===&lt;br /&gt;
&lt;br /&gt;
以下のエラーが発生する場合:&lt;br /&gt;
&lt;br /&gt;
 Failed to request VPN secrets #1: No agents were available for this request.&lt;br /&gt;
&lt;br /&gt;
パスワードが空であるか、[[#PolicyKit のパーミッションをセットアップする|PolicyKit のパーミッションをセットアップする]]必要があるかのどちらかです。&lt;br /&gt;
&lt;br /&gt;
=== OpenVPN 接続が &amp;quot;secrets: failed to request VPN secrets&amp;quot; という警告で失敗する ===&lt;br /&gt;
&lt;br /&gt;
GNOME-Shell と統合させる場合、{{Pkg|networkmanager-openvpn}} パッケージは {{Pkg|libnma-gtk4}} と任意で {{Pkg|libnma}} (Gtk3) も必要とします。{{Pkg|libnma}} が必要であるが、インストールされていない場合、以下のようなメッセージがログに出力されます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
NetworkManager[642]: &amp;lt;warn&amp;gt;  [...] vpn[...&amp;quot;name_of_vpn_profile VPN&amp;quot;]: secrets: failed to request VPN secrets #3: No agents were available for this request.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL の &amp;quot;ca md too weak&amp;quot; エラーで OpenVPN の接続に失敗する ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|openssl}} がバージョン3に更新されたため、レガシーな暗号化アルゴリズムで生成された証明書はデフォルトで拒否されます。このような設定で {{Pkg|networkmanager-openvpn}} を使用しようとすると、ログに次のエラーが記録される可能性があります:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
nm-openvpn[14359]: OpenSSL: error:0A00018E:SSL routines::ca md too weak&lt;br /&gt;
nm-openvpn[14359]: Cannot load certificate file /home/archie/.local/share/networkmanagement/certificates/my_issued_cert.crt&lt;br /&gt;
nm-openvpn[14359]: Exiting due to fatal error&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
正しいアプローチは、OpenVPN サーバの管理者に、より安全な証明書を生成して再発行してもらうことです。ただし、当面の回避策として、OpenVPN には {{ic|1=tls-cipher &amp;quot;DEFAULT:@SECLEVEL=0&amp;quot;}} が必要です。この設定は、プラグイン GUI からでは無理かもしれませんが、&#039;&#039;nmcli&#039;&#039; からなら可能です。これとは別に、OpenSSL で&#039;&#039;レガシー&#039;&#039;なプロバイダを有効化する必要もあります。&lt;br /&gt;
&lt;br /&gt;
まず、以下のコマンドの出力から、問題のある VPN 接続の名前を取得してください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection show&lt;br /&gt;
&lt;br /&gt;
接続の名前は &#039;&#039;vpn.example.com&#039;&#039; であると仮定します。以下のように &#039;&#039;nmcli&#039;&#039; を使ってください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection modify vpn.example.com +vpn.data tls-cipher=DEFAULT:@SECLEVEL=0&lt;br /&gt;
&lt;br /&gt;
変更は即座に {{ic|/etc/NetworkManager/system-connections/vpn.example.com.nmconnection}} に反映されるはずです。&lt;br /&gt;
&lt;br /&gt;
OpenSSL に関しては、[https://wiki.openssl.org/index.php/OpenSSL_3.0#Providers OpenSSL wiki] で説明されている通りに {{ic|/etc/ssl/openssl.cnf}} を編集してください。&lt;br /&gt;
&lt;br /&gt;
具体的には、{{ic|[provider_sect]}} セクションの最後に {{ic|1=legacy = legacy_sect}} を追加してください。{{ic|[default_sect]}} で {{ic|1=activate = 1}} のコメントを外してください。最後に、{{ic|1=activate = 1}} という行も含む新しいセクション {{ic|[legacy_sect]}} を追加してください。他のほとんどの既存の構成セクションを除外すると、最終結果は次のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssl/openssl.cnf|2=&lt;br /&gt;
openssl_conf = openssl_init&lt;br /&gt;
&lt;br /&gt;
[openssl_init]&lt;br /&gt;
providers = provider_sect&lt;br /&gt;
&lt;br /&gt;
[provider_sect]&lt;br /&gt;
default = default_sect&lt;br /&gt;
legacy = legacy_sect&lt;br /&gt;
&lt;br /&gt;
[default_sect]&lt;br /&gt;
activate = 1&lt;br /&gt;
&lt;br /&gt;
[legacy_sect]&lt;br /&gt;
activate = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に、{{ic|NetworkManager.service}} を[[再起動]]して、新しい OpenSSL 設定を有効化してください。&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL の &amp;quot;unsupported protocol&amp;quot; エラーで WPA Enterprise の接続の認証に失敗する ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|openssl}} がバージョン 3 に更新されたため、[https://www.openssl.org/news/openssl-3.0-notes.html デフォルトで] SSL 3、TLS 1.0、TLS 1.1、そして DTLS 1.0 はセキュリティレベル 0 でのみ動作するようになりました。それよりも古い標準しかサポートしていない Wi-Fi ネットワークでの認証は、ログに以下のエラーを吐いて失敗します:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
wpa_supplicant[3320]: SSL: SSL3 alert: write (local SSL3 detected an error):fatal:protocol version&lt;br /&gt;
wpa_supplicant[3320]: OpenSSL: openssl_handshake - SSL_connect error:0A000102:SSL routines::unsupported protocol&lt;br /&gt;
wpa_supplicant[3320]: wlp3s0: CTRL-EVENT-EAP-FAILURE EAP authentication failed&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
正しい方法は、設備の管理者を説得して、暗号化されたネットワークトンネルのプロトコルを TLS 1.3 にアップグレードし、任意で TLS 1.0/1.1、DTLS 1.0、SSL 1-3 を含む非推奨となっているセキュリティ標準のサポートを落としてもらうことです。しかし、当面の回避策として、TLS 1.0 や 1.1 をデフォルトで許可する方法は複数あります。一つは、手動で OpenSSL にパッチを当てるか、破壊的な変更をもとに戻すことです ([https://github.com/openssl/openssl/commit/7bf2e4d7f0c7ae19b7a8c416910886a7171e9820])。これは、OpenSSL レベル 1 を使用する他の全てのプログラムのセキュリティも低下してしまうため、推奨されません。代わりに、([https://bbs.archlinux.org/viewtopic.php?id=286417#p2104492 BBS#286417] で説明されているように) wpa_supplicant によって使用されるレベルを直接設定することができます。問題のある接続設定ファイルの {{ic|1=[802-1x]}} セクションで {{ic|1=phase1-auth-flags=32}} または {{ic|1=phase1-auth-flags=64}} を設定することで、その接続のみを変更できます。これは GUI からは無理かもしれませんが、&#039;&#039;nmcli&#039;&#039; でなら可能です。&lt;br /&gt;
&lt;br /&gt;
まず、以下のコマンドの出力から、問題のある Wi-Fi 接続の名前を手に入れてください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection show&lt;br /&gt;
&lt;br /&gt;
この接続では TLS 1.0 が使用され、接続名は &#039;&#039;Example Wi-Fi&#039;&#039; であるとします。以下のように &#039;&#039;nmcli&#039;&#039; を使用してください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection modify &#039;Example Wi-Fi&#039; 802-1x.phase1-auth-flags 32&lt;br /&gt;
&lt;br /&gt;
TLS 1.1 接続に対しては、代わりに &amp;quot;64&amp;quot; を使用してください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection modify &#039;Example Wi-Fi&#039; 802-1x.phase1-auth-flags 64&lt;br /&gt;
&lt;br /&gt;
{{Note|1=ここで入力した数字は、2 の &#039;&#039;&#039;n&#039;&#039;&#039; 乗です。ただし、&#039;&#039;&#039;n&#039;&#039;&#039; はネットワーク認証ビットオクテットのインデックス (右から左に数えます) です。5番目のビットを1にすると TLS 1.0 が有効になり (&#039;&#039;&#039;[log(2) 32]&#039;&#039;&#039;)、6番目のビットを1にすると TLS 1.1 が有効になります (&#039;&#039;&#039;[log(2) 64]&#039;&#039;&#039;)。}}&lt;br /&gt;
&lt;br /&gt;
変更は即座に {{ic|/etc/NetworkManager/system-connections/Example Wi-Fi.nmconnection}} に反映されるはずです。&lt;br /&gt;
&lt;br /&gt;
最後に、{{ic|NetworkManager.service}} を[[再起動]]して、新しい OpenSSL の設定を有効化してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://blogs.gnome.org/dcbw/2015/02/16/networkmanager-for-administrators-part-1/ NetworkManager for Administrators Part 1]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NetworkManager|2026-05-04|872001}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Mkinitcpio&amp;diff=41494</id>
		<title>Mkinitcpio</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Mkinitcpio&amp;diff=41494"/>
		<updated>2026-05-03T10:19:57Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:initramfs]]&lt;br /&gt;
[[Category:カーネル]]&lt;br /&gt;
[[Category:Arch プロジェクト]]&lt;br /&gt;
[[Category:コマンド]]&lt;br /&gt;
[[de:Mkinitcpio]]&lt;br /&gt;
[[en:Mkinitcpio]]&lt;br /&gt;
[[fr:Mkinitcpio]]&lt;br /&gt;
[[hu:Mkinitcpio]]&lt;br /&gt;
[[pt:Mkinitcpio]]&lt;br /&gt;
[[ru:Mkinitcpio]]&lt;br /&gt;
[[zh-hans:Mkinitcpio]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|/Initramfs の最小化}}&lt;br /&gt;
{{Related|Booster}}&lt;br /&gt;
{{Related|ブートデバッグ}}&lt;br /&gt;
{{Related|カーネルモジュール}}&lt;br /&gt;
{{Related|ユニファイドカーネルイメージ}}&lt;br /&gt;
{{Related|dracut}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio mkinitcpio] は、[[initramfs]] イメージを作成するために使用される [[Bash]] スクリプトです。初期 RAM ディスクフェーズで行われる処理の実行方法については、2つあります:&lt;br /&gt;
&lt;br /&gt;
; systemd ベースの初期 RAM ファイルシステム&lt;br /&gt;
: [[systemd]] は、初期 RAM ディスクフェーズの最初に起動されます。通常の systemd ユニットファイルによって、実行されるべき処理が決定されます。[https://www.freedesktop.org/software/systemd/man/latest/bootup.html systemd bootup process] を参照。&lt;br /&gt;
: &#039;&#039;&#039;長所&#039;&#039;&#039;:&lt;br /&gt;
:* systemd エコシステムの他の部分と密接に統合されており、より一貫していて合理的なブートプロセスとなっています。&lt;br /&gt;
:* 特定のブート処理がより効率的に並列化されており、場合によっては全体的なブート時間がより早くなることがあります。&lt;br /&gt;
:* {{ic|/etc/crypttab.initramfs}} を使用する [[dm-crypt/システム設定#systemd-cryptsetup-generator を使う|systemd-cryptsetup-generator]] や [[Systemd#GPT パーティションの自動マウント|GPT パーティションの自動マウント]]など、使用できる機能はより包括的です。&lt;br /&gt;
: &#039;&#039;&#039;短所&#039;&#039;&#039;:&lt;br /&gt;
:* 依存関係が増え、サイズも増加します: 一般に、systemd 関連のバイナリや依存関係が含まれるため、initramfs のサイズは増加します。これにより、ブート時間がわずかに増加する可能性があります。&lt;br /&gt;
; Busybox ベースの初期 RAM ファイルシステム&lt;br /&gt;
: 実行すべきスクリプト (ランタイムフックと呼ばれます) を探すために初期 RAM ディスクのファイルシステムをスキャンする init スクリプトが開始されます。&lt;br /&gt;
: &#039;&#039;&#039;長所&#039;&#039;&#039;:&lt;br /&gt;
:* 軽量で、サイズも小さく、依存関係も少ないです。&lt;br /&gt;
:* Init スクリプトとランタイムフックは、順番に実行されます。これにより、ブート中に問題が発生した際は、どのステップが原因なのかをより簡単に特定できます。&lt;br /&gt;
&lt;br /&gt;
これらは、{{ic|/etc/mkinitcpio.conf}} 内の {{ic|HOOKS}} 配列に {{ic|systemd}} フックがあるかないかで決まります。詳細は [[#フックのリスト]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mkinitcpio&#039;&#039; は、Arch Linux の[https://archlinux.org/people/developers/ 開発者たち]とコミュニティによる貢献によって開発されています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mkinitcpio}} パッケージは、[[カーネル#公式サポートカーネル|カーネル]]のパッケージの依存関係なので、ほとんどの環境では既に[[インストール]]されています。&lt;br /&gt;
&lt;br /&gt;
== イメージ作成とアクティベーション ==&lt;br /&gt;
&lt;br /&gt;
=== 自動生成 ===&lt;br /&gt;
&lt;br /&gt;
カーネルがインストールまたはアップグレードされるたびに、[[pacman フック]]は {{ic|/etc/mkinitcpio.d/}} 内に保存される &#039;&#039;.preset&#039;&#039; ファイルを自動的に生成します。例えば、公式の安定版 {{Pkg|linux}} カーネルパッケージの場合は {{ic|linux.preset}} です。プリセットは、様々なパラメーターや出力ファイルの場所を手動で指定する手間を省き、初期 RAM ディスクイメージを作成するために必要な情報のリストです。デフォルトでは、以下の最初のイメージを作成する命令のみが含まれており、2つ目のイメージを作成するには[[#フォールバック initramfs の生成|明示的に有効化する]]必要があります:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;default&#039;&#039; RAM ディスクイメージ。このイメージの内容は、[[#設定|設定]]で指定されたディレクティブに従って生成されます。&lt;br /&gt;
# &#039;&#039;fallback&#039;&#039; RAM ディスクイメージ。作成時に &#039;&#039;autodetect&#039;&#039; フックがスキップされることを除いて上記と同じであるため、ほとんどのシステムをサポートするすべてのモジュールが含まれます。&lt;br /&gt;
&lt;br /&gt;
プリセットを作成した後、pacman フックは、プリセットで提供された情報を使用してイメージを生成する &#039;&#039;mkinitcpio&#039;&#039; スクリプトを呼び出します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;.preset&#039;&#039; ファイルは、カーネルの更新後に initramfs を自動的に再生成するために使用されます。編集するときは注意してください。}}&lt;br /&gt;
&lt;br /&gt;
=== 手動生成 ===&lt;br /&gt;
&lt;br /&gt;
スクリプトを手動で実行するには、マニュアルページ {{man|8|mkinitcpio}} で手順を確認してください。特に、カーネルパッケージによって提供されるプリセットに基づく initramfs イメージを(再)生成するには、使用するプリセットを {{ic|-p}}/{{ic|--preset}} オプションで指定してください。例えば、{{Pkg|linux}} パッケージの場合、次のコマンドを使用してください:&lt;br /&gt;
&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
&lt;br /&gt;
既存のすべてのプリセットに基づく initramfs イメージを(再)生成するには、{{ic|-P}}/{{ic|--allpresets}} スイッチを使用してください。これは通常、グローバルな[[#設定|設定]]の変更後にすべての initramfs イメージを再生成するために使用されます:&lt;br /&gt;
&lt;br /&gt;
 # mkinitcpio -P&lt;br /&gt;
&lt;br /&gt;
ユーザーは、さまざまな構成で initramfs イメージをいくつでも作成できます。生成したいイメージは、それぞれの[[ブートローダー]]の設定ファイルで指定する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 生成のカスタマイズ ===&lt;br /&gt;
&lt;br /&gt;
ユーザーは、代替の設定ファイルを使用してイメージを生成できます。次の例では、{{ic|/etc/mkinitcpio-custom.conf}} に記述されている指示に従って初期 RAM ディスクイメージを生成し、{{ic|/boot/initramfs-custom.img}} として保存します。&lt;br /&gt;
&lt;br /&gt;
 # mkinitcpio --config /etc/mkinitcpio-custom.conf --generate /boot/initramfs-custom.img&lt;br /&gt;
&lt;br /&gt;
現在実行中のカーネル以外のカーネルのイメージを生成する場合は、カーネルリリースバージョンをコマンドラインに追加してください。インストールされているカーネルリリースは {{ic|/usr/lib/modules/}} にあり、構文は各カーネルのコマンド {{ic|uname -r}} の出力と一致しています。&lt;br /&gt;
&lt;br /&gt;
 # mkinitcpio --generate /boot/initramfs-custom2.img --kernel 5.7.12-arch1-1&lt;br /&gt;
&lt;br /&gt;
=== ユニファイドカーネルイメージ ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mkinitcpio&#039;&#039; は、それ自体または {{Pkg|systemd-ukify}} 経由で[[ユニファイドカーネルイメージ]] (UKI) を作成することができます。{{Pkg|systemd-ukify}} が存在しないか、{{ic|--no-ukify}} によって明示的に無効化されている場合、UKI は mkinitcpio 自体によって構築されます。この場合、&#039;&#039;ukify&#039;&#039; の高度な機能は利用できません。&lt;br /&gt;
&lt;br /&gt;
UKI 生成については [[ユニファイドカーネルイメージ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mkinitcpio&#039;&#039; のプライマリ設定ファイルは、{{ic|/etc/mkinitcpio.conf}} です。ドロップインの設定ファイル (例: {{ic|/etc/mkinitcpio.conf.d/myhooks.conf}}) もサポートされています (ドロップインファイルは、mkinitcpio が {{ic|-c}}/{{ic|--config}} オプションと共に実行された場合や、{{ic|ALL_config}} を含んでいるプリセットを使用した場合には使用されません)。さらに、カーネルパッケージによって提供されるプリセット定義が {{ic|/etc/mkinitcpio.d}} ディレクトリにあります (例: {{ic|/etc/mkinitcpio.d/linux.preset}})。&lt;br /&gt;
&lt;br /&gt;
ユーザーは、設定ファイルの中にある7つの変数を変更できます (詳細は {{man|5|mkinitcpio.conf|VARIABLES}} を見てください):&lt;br /&gt;
&lt;br /&gt;
; {{ic|MODULES}}: ブートフックが実行される前にロードされるカーネルモジュール。&lt;br /&gt;
; {{ic|BINARIES}}: initramfs イメージに含める追加のバイナリ。&lt;br /&gt;
; {{ic|FILES}}: initramfs イメージに含める追加のファイル。&lt;br /&gt;
; {{ic|HOOKS}}: フックは初期 RAM ディスクで実行するスクリプトです。&lt;br /&gt;
; {{ic|COMPRESSION}}: initramfs イメージを圧縮する際に使用されます。&lt;br /&gt;
; {{ic|COMPRESSION_OPTIONS}}: {{ic|COMPRESSION}} のプログラムに渡す追加の引数。この設定の使用は推奨されません。&#039;&#039;mkinitcpio&#039;&#039; は圧縮プログラムに対する特殊な要件を処理するため (例: xz には {{ic|1=--check=crc32}} を指定します)、誤って利用するとシステムが起動できなくなる可能性があります。&lt;br /&gt;
; {{ic|MODULES_DECOMPRESS}}: ロード可能なカーネルモジュールとファームウェアのファイルを解凍しておくか、もとの圧縮した状態のままにしておくかを設定します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* システムが必要とする場合があるフックのいくつか (&#039;&#039;&#039;lvm2&#039;&#039;&#039;、&#039;&#039;&#039;mdadm_udev&#039;&#039;&#039;、&#039;&#039;&#039;encrypt&#039;&#039;&#039; など) は、デフォルトで有効化されて&#039;&#039;&#039;いません&#039;&#039;&#039;。これに関する指示は [[#HOOKS]] セクションを注意深く読んでください。&lt;br /&gt;
* バージョン 36 より前の &#039;&#039;mkinitcpio&#039;&#039; によって作成されたプリセットファイルでは、{{ic|ALL_config}} 変数が定義されており、この変数が存在しているとドロップインの設定ファイルが読み込まれません。ドロップインファイルを有効化するには、古いプリセットファイルにある {{ic|1=ALL_config=&amp;quot;/etc/mkinitcpio.conf&amp;quot;}} 行をコメントアウトしてください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== MODULES ===&lt;br /&gt;
&lt;br /&gt;
{{ic|MODULES}} 配列では、何か他のことが行われる前にロードするモジュールを指定します。&lt;br /&gt;
&lt;br /&gt;
モジュールの後ろに {{ic|?}} を付けると、モジュールが見つからなかったときでもエラーを投げません。これは、フックや設定ファイルにリストアップされたモジュールを含んでコンパイルするカスタムカーネルで有益かもしれません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* Out-of-tree のファイルシステムを初期ユーザー空間でマウントするつもりであるならば (例えば、そのようなファイルシステムをルートファイルシステムとしてを使用する場合)、そのファイルシステムのモジュール ({{ic|zfs}} など) を {{ic|MODULES}} 配列に&#039;&#039;&#039;追加しておかなければなりません&#039;&#039;&#039;。&lt;br /&gt;
* &#039;&#039;&#039;encrypt&#039;&#039;&#039; や &#039;&#039;&#039;sd-encrypt&#039;&#039;&#039; を使用し、かつ &#039;&#039;mkinitcpio&#039;&#039; が実行されるシステムと生成されたイメージが使用されるシステムが異なる場合、システムの起動中に LUKS デバイスをアンロックするために必要なキーボードモジュールやファイルシステムを {{ic|MODULES}} 配列に追加する必要があります。例えば、使用するキーファイルが ext2 ファイルシステム上にあるが、&#039;&#039;mkinitcpio&#039;&#039; が実行されたときには ext2 ファイルシステムがマウントされていなかった場合、{{ic|ext2}} を追加してください。詳細は [[Dm-crypt/システム設定#cryptkey]] を見てください。&lt;br /&gt;
* LUKS デバイスをアンロックするために USB 3 ハブのキーボードを使いたい場合、{{ic|usbhid xhci_hcd}} を追加してください。一部のノート PC では、搭載されているキーボードを使用するために {{ic|i2c_hid_acpi}} モジュールが必要です。&lt;br /&gt;
* ドッキングステーションに接続されているディスプレイを使用する場合、initrd の出力を見えるようにするためにあなたのグラフィックカードのモジュールを追加する必要があるかもしれません (例: ほとんどの Intel カードでは {{ic|i915}})。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== BINARIES と FILES ===&lt;br /&gt;
&lt;br /&gt;
以下のオプションを使ってイメージにファイルを追加することができます。{{ic|BINARIES}} と {{ic|FILES}} はフックが実行される前に追加され、フックによって使用/提供されるファイルを上書きすることがあります。{{ic|BINARIES}} は標準の {{ic|PATH}} に自動で配置され、依存関係がパースされます。つまり必要なライブラリも全て追加されます。{{ic|FILES}} は&#039;&#039;そのままの状態で&#039;&#039;追加されます。例:&lt;br /&gt;
&lt;br /&gt;
 FILES=(/etc/modprobe.d/modprobe.conf)&lt;br /&gt;
&lt;br /&gt;
 BINARIES=(kexec)&lt;br /&gt;
&lt;br /&gt;
{{ic|BINARIES}} と {{ic|FILES}} は両方とも [[Bash]] 配列です。なので、スペースで区切ることで複数のエントリを追加することができます。&lt;br /&gt;
&lt;br /&gt;
=== HOOKS ===&lt;br /&gt;
&lt;br /&gt;
{{ic|HOOKS}} 配列は、設定ファイルの中で最も重要な設定です。フックとは、initramfs イメージに何を追加するかが記述されている小さなスクリプトです。一部のフックには、通称ランタイムフックというものが付いており、これはデーモンを起動したり、スタックドブロックデバイスをアセンブルしたりといったスタートアップ機能を提供しています。&lt;br /&gt;
&lt;br /&gt;
フックは名前で指定し、設定ファイル内の {{ic|HOOKS}} 配列に記述した通りの順番で実行されます。自分が何をしているのか理解していない限り、[[#フックのリスト|フックのリスト]]の推奨される順番に従うのが良いです。&lt;br /&gt;
&lt;br /&gt;
ほとんどのシンプルな単一ディスク環境では、デフォルトの {{ic|HOOKS}} 設定で十分なはずです。ルートファイルシステムが、[[LVM]]、[[RAID]]、[[dm-crypt]] などといった、スタックドデバイスベースであったり、複数のデバイスにまたがる場合は、関連する wiki ページを見て必要な設定を調べて下さい。&lt;br /&gt;
&lt;br /&gt;
==== ビルドフック ====&lt;br /&gt;
&lt;br /&gt;
ビルドフック (インストールフックとも) とは、&#039;&#039;mkinitcpio&#039;&#039; の実行中に bash シェルによって source されるシェルスクリプトファイルであり、通常、{{ic|build}} と {{ic|help}} という2つの関数を含んでいます。{{ic|build}} 関数には、initramfs イメージに追加すべきモジュール、バイナリ、その他のファイルが記述されています。これらのアイテムの追加を用意にする API ({{man|8|mkinitcpio}} にドキュメント化されています) が存在しています。{{ic|help}} 関数は、そのフックの機能と使用方法の短い説明文を出力します。&lt;br /&gt;
&lt;br /&gt;
すべてのフックを一覧するには:&lt;br /&gt;
&lt;br /&gt;
 $ mkinitcpio -L&lt;br /&gt;
&lt;br /&gt;
特定のフックのヘルプを出力するには &#039;&#039;mkinitcpio&#039;&#039; の {{ic|-H}}/{{ic|--hookhelp}} オプションを使って下さい、例えば:&lt;br /&gt;
&lt;br /&gt;
 $ mkinitcpio -H udev&lt;br /&gt;
&lt;br /&gt;
ビルドフックは {{ic|/usr/lib/initcpio/install/}} にあり、カスタムのビルドフックは {{ic|/etc/initcpio/install/}} に置くことができます。&lt;br /&gt;
&lt;br /&gt;
==== ランタイムフック ====&lt;br /&gt;
&lt;br /&gt;
{{ic|HOOKS}} にあるビルドフックには、同じ名前のランタイムフックが付属している場合があります。ランタイムフックとは、initramfs フェーズで busybox の {{ic|ash}} シェルによって source されるシェルスクリプトです。これは、デーモンの起動、スタックドブロックデバイスのアセンブルといった、スタートアップ処理を担います。ビルドフックは、{{ic|add_runscript}} を呼び出すことで、対応するランタイムフックをインストールします。ランタイムフックには、複数の機能が含まれていることがあります:&lt;br /&gt;
&lt;br /&gt;
ランタイムフックは {{ic|/usr/lib/initcpio/hooks/}} にあります。カスタムランタイムフックは {{ic|/etc/initcpio/hooks/}} に配置します。全てのランタイムフックには同じ名前のビルドフックが存在している必要があり、そのビルドフックは {{ic|add_runscript}} をコールしてランタイムフックをイメージに追加します。これらのファイルは初期ユーザ空間で busybox の ash シェルによって実行されます。cleanup フックを除いて全てのフックは {{ic|HOOKS}} 設定の順番で実行されます。ランタイムフックには複数の関数を含めることができます:&lt;br /&gt;
&lt;br /&gt;
{{ic|run_earlyhook}}: API ファイルシステムがマウントされカーネルコマンドラインがパースされたときに、この名前の関数が実行されます。一般的に udev など初期ユーザ空間が始まったときに必要になる追加のデーモンはこの関数に置きます。&lt;br /&gt;
&lt;br /&gt;
{{ic|run_hook}}: 初期のフックの後すぐに、この名前の関数が実行されます。一番一般的なフックポイントで、スタックブロックデバイスのアセンブリなどのオペレーションはここで行なって下さい。&lt;br /&gt;
&lt;br /&gt;
{{ic|run_latehook}}: root デバイスがマウントされた後、この名前の関数が実行されます。root デバイスの後のセットアップや {{ic|/usr}} など他のファイルシステムのマウントなどに控えめに使われます。&lt;br /&gt;
&lt;br /&gt;
{{ic|run_cleanuphook}}: できる限り最後に、この名前の関数が実行されます。設定ファイルの {{ic|HOOKS}} の順番とは逆に実行されます。これらのフックは初期のフックによって起動したデーモンのシャットダウンなど、最後のクリーンアップに使われます。&lt;br /&gt;
&lt;br /&gt;
{{ic|run_cleanuphook}} を除き、これらの関数は、{{ic|HOOKS}} 配列に記述された、対応するビルドフックと同じ順番で実行されます。ランタイムフックは {{ic|/usr/lib/initcpio/hooks/}} に配置されており、カスタムのランタイムフックは {{ic|/etc/initcpio/hooks/}} に置くことができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ランタイムフックは busybox init でのみ使用されます。systemd ベースの initramfs ({{ic|HOOKS}} 配列に {{ic|systemd}} が存在する場合) では、ランタイムフックは実行されず、代わりに systemd ユニットが使用されます。}}&lt;br /&gt;
&lt;br /&gt;
==== ポストフック ====&lt;br /&gt;
&lt;br /&gt;
ポストフックとは、署名などといった追加の処理を行うために、イメージが (再) 生成された後に実行されるシェルスクリプトです。&lt;br /&gt;
&lt;br /&gt;
スクリプトには、以下の引数が以下の順番で渡されます:&lt;br /&gt;
&lt;br /&gt;
# 使用された&#039;&#039;&#039;カーネル&#039;&#039;&#039; (一部の状況では空になる場合があります)&lt;br /&gt;
# 生成された &#039;&#039;&#039;initramfs イメージ&#039;&#039;&#039;&lt;br /&gt;
# (オプション) 生成された&#039;&#039;&#039;ユニファイドカーネルイメージ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
さらに、以下の環境変数も設定されます:&lt;br /&gt;
&lt;br /&gt;
{{ic|KERNELVERSION}}: カーネルの完全なバージョン&lt;br /&gt;
{{ic|KERNELDESTINATION}}: カーネルが起動されるために配置されるべきデフォルトの場所。&lt;br /&gt;
&lt;br /&gt;
ポストフックは、{{ic|/usr/lib/initcpio/post/}} (パッケージによって提供されているフック) と {{ic|/etc/initcpio/post/}} (カスタムのフック) に置かれます。&lt;br /&gt;
&lt;br /&gt;
==== フックのリスト ====&lt;br /&gt;
&lt;br /&gt;
以下は、フックと、それらがイメージの作成とランタイムに与える影響をまとめた表です。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! busybox init !! systemd init !! [[#ビルドフック|ビルドフック]] !! [[#ランタイムフック|ランタイムフック]] (busybox init のみ)&lt;br /&gt;
|-&lt;br /&gt;
| {{C|&#039;&#039;&#039;base&#039;&#039;&#039;}} || {{Grey|&#039;&#039;任意&#039;&#039;}} || 全ての初期ディレクトリをセットアップし、基本のユーティリティとライブラリをインストールします。&#039;&#039;&#039;systemd&#039;&#039;&#039; フックを使用していない場合にこのフックは重要な busybox init を提供するので、何をしようとしているか理解していない限りはこのフックを常に1番最初に置いてください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;systemd&#039;&#039;&#039; フックを使用する際は、このフックは busybox のリカバリシェルを提供するだけなので、任意です。シェルを使用するには、&#039;&#039;&#039;base&#039;&#039;&#039; を有効化することに加え、{{ic|SYSTEMD_SULOGIN_FORCE{{=}}1}} を[[カーネルパラメータ]]に追加する必要があります。&lt;br /&gt;
| {{-}}&lt;br /&gt;
|-&lt;br /&gt;
| {{C|&#039;&#039;&#039;udev&#039;&#039;&#039;}} ||rowspan=&amp;quot;3&amp;quot; {{C|&#039;&#039;&#039;systemd&#039;&#039;&#039;}} || イメージに udevd, udevadm, そして udev ルールの小さなサブセットを追加します。 || udev デーモンを起動して、カーネルからの uevent を処理します; デバイスノードを作成します。ブートプロセスの単純化として、必要なモジュールを明示的に指定する必要をなくすため、udev フックの使用が推奨されています。&lt;br /&gt;
|-&lt;br /&gt;
| {{C|&#039;&#039;&#039;usr&#039;&#039;&#039;}} || {{ic|/usr}} の分割パーティションのサポートを追加します。詳細は [[#/usr を別のパーティションに分割する]] を見てください。 || 本物のルートファイルシステムがマウントされた後に {{ic|/usr}} パーティションをマウントします。&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| {{C|&#039;&#039;&#039;resume&#039;&#039;&#039;}} || ハイバネートイメージにカーネルのコンパイル時デフォルト以外の圧縮アルゴリズムを使用する際に復帰できるようにするために、{{ic|lzo}} と {{ic|lz4}} カーネルモジュールを (initramfs に) 追加します。{{ic|HibernateLocation}} UEFI 変数で指定されたハイバネートイメージから復帰できるようにするために {{man|8|systemd-hibernate-resume}} バイナリを追加します。|| &amp;quot;ハイバネート&amp;quot; (suspend to disk) 状態からの復帰を試みます。詳しい設定方法は [[ハイバネート]] を見てください。&lt;br /&gt;
|-&lt;br /&gt;
| {{C|&#039;&#039;&#039;btrfs&#039;&#039;&#039;}} || {{Grey|–}} || [[Btrfs]] を有効にして、Btrfs でフォーマットされた複数のデバイスを使用するために必要なモジュールを設定します。このフックを使うには、{{Pkg|btrfs-progs}} をインストールする必要があります。単一のデバイスで Btrfs を使うだけならこのフックは不要であり、{{ic|filesystems}} フックで十分です。 || udev フックが存在しないときに {{ic|btrfs device scan}} を実行してマルチデバイスの Btrfs root ファイルシステムを構築します。このフックを使うには {{Pkg|btrfs-progs}} パッケージが必要です。&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;autodetect&#039;&#039;&#039;}} || sysfs のスキャンによってモジュールのホワイトリストを作成して initramfs を小さくします。含まれているモジュールが正しく、欠けているものがないか確認してください。自動検知の利点を活かすためにこのフックは他の subsystem フックより前に実行してください。&#039;autodetect&#039; より前に置かれたフックは完全にインストールされます。 || {{-}}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;microcode&#039;&#039;&#039;}} || Intel 及び AMD プロセッサ向けの[[マイクロコード]]早期アップデートファイルを未圧縮 initramfs イメージの先頭に埋め込みます。これは、利用可能であれば {{ic|/usr/lib/firmware/amd-ucode/}} と {{ic|/usr/lib/firmware/intel-ucode/}} にあるマイクロコードファイルを使用します。これらのファイルが利用できない場合は、{{ic|/boot/amd-ucode.img}} と {{ic|/boot/intel-ucode.img}} を展開して使用します。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;autodetect&#039;&#039;&#039; フックがこのフックより前に実行される場合、イメージをビルドする際に使用したシステムに搭載されているプロセッサ向けのマイクロコードの早期アップデートファイルのみが追加されます。&lt;br /&gt;
&lt;br /&gt;
このフックは、非推奨となっている {{ic|--microcode}} フラグと、プリセットファイルの {{ic|microcode}} オプションの機能を置き換えるものです。また、このフックによって、メインの initramfs イメージにマイクロコードのアップデートが埋め込まれるようになるため、マイクロコードを読み込む {{ic|initrd}} 行をブートローダーの設定に追加する必要が無くなります。&lt;br /&gt;
| {{-}}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;modconf&#039;&#039;&#039;}} || {{ic|/etc/modprobe.d/}} と {{ic|/usr/lib/modprobe.d/}} から modprobe 設定ファイルをロードします。 || {{-}}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;kms&#039;&#039;&#039;}} || [[カーネルモード設定#設定|KMS の早期開始]] を提供する GPU モジュールを追加します。加えて、一部のノート PC の LCD パネルに組み込まれているプライバシースクリーンに必要なモジュールも追加します。|| {{-}}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;keyboard&#039;&#039;&#039;}} || キーボードデバイスに必要なモジュールを追加します。あなたが USB キーボードを使っていて、それを初期ユーザ空間で使う必要があるとき (暗号化のパスフレーズを入力したりインタラクティブシェルを使う場合) はこのフックを使って下さい。副作用としてキーボード以外の入力デバイス用のモジュールが追加されることがありますが、困ることはないはずです。&lt;br /&gt;
&lt;br /&gt;
{{Note|異なるハードウェア構成で起動されるシステム(たとえば、外部キーボードと内部キーボードを備えたラップトップまたは [[Wikipedia:Headless computer|ヘッドレスシステム]]) の場合、起動時にキーボードを利用できるようにするために (例えば、{{ic|encrypt}} フックが使用されている場合に暗号化済みデバイスをアンロックするために)、このフックを &#039;&#039;&#039;autodetect&#039;&#039;&#039; の前に配置する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
| {{-}}&lt;br /&gt;
|-&lt;br /&gt;
| {{C|&#039;&#039;&#039;keymap&#039;&#039;&#039;}} ||rowspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;sd-vconsole&#039;&#039;&#039;}} || {{ic|/etc/vconsole.conf}} から initramfs に、指定した[[コンソールでのキーボード設定#永続的な設定|コンソールキーマップ]]を追加します。[[Dm-crypt/システム全体の暗号化|システム暗号化]]を使用する場合 (特にフルディスク暗号化) 、{{ic|1=encrypt}} フックよりも前に追加するようにしてください。 || 初期ユーザ空間で {{ic|/etc/vconsole.conf}} から指定されたキーマップをロードします。&lt;br /&gt;
|-&lt;br /&gt;
| {{C|&#039;&#039;&#039;consolefont&#039;&#039;&#039;}} || {{ic|/etc/vconsole.conf}} から initramfs に、指定した[[コンソールでのキーボード設定#永続的な設定|コンソールフォント]]を追加します。 || 初期ユーザ空間で {{ic|/etc/vconsole.conf}} から指定されたコンソールフォントをロードします。&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;block&#039;&#039;&#039;}} || ブロックデバイスのモジュールを追加します。&#039;&#039;&#039;autodetect&#039;&#039;&#039; フックがこのフックより前に実行される場合、このフックはシステム上で使用されているブロックデバイスのモジュールのみを追加します。例外は {{ic|ahci}}、{{ic|sd_mod}}、{{ic|usb_storage}}、{{ic|uas}}、{{ic|mmc_block}}、{{ic|nvme}}、{{ic|virtio_scsi}}、{{ic|virtio_blk}} モジュールで、これらは無条件に必ず追加されます。 || {{-}}&lt;br /&gt;
|-&lt;br /&gt;
| {{C|&#039;&#039;&#039;net&#039;&#039;&#039;}} || {{Grey|&#039;&#039;未実装&#039;&#039;}} || ネットワークデバイスに必要なモジュールを追加します。このフックを使うには {{Pkg|mkinitcpio-nfs-utils}} をインストールしなければなりません。詳細は [[#net を使う]] を見てください。 || NFS の root ファイルシステムの管理を提供します。&lt;br /&gt;
|-&lt;br /&gt;
| {{C|&#039;&#039;&#039;dmraid&#039;&#039;&#039;}} || {{Grey|&#039;&#039;?&#039;&#039;}} || fakeRAID root デバイスのサポートを提供します。これを使うには {{Pkg|dmraid}} をインストールする必要があります。コントローラがサポートしている場合、fakeRAID では &#039;&#039;mdadm_udev&#039;&#039; フックと一緒に [[mdadm]] を使うことが推奨されます。詳細は [[#RAID を使う]] を見てください。 || {{ic|dmraid}} を使用して fakeRAID ブロックデバイスを検索・構築します。&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;mdadm_udev&#039;&#039;&#039;}} || udev を使って RAID アレイの構築をサポートします。このフックを使うには {{Pkg|mdadm}} をインストールする必要があります。詳細は [[RAID#mkinitcpio を設定する]] を見てください。 || {{-}}&lt;br /&gt;
|-&lt;br /&gt;
| {{C|&#039;&#039;&#039;encrypt&#039;&#039;&#039;}} || {{C|&#039;&#039;&#039;sd-encrypt&#039;&#039;&#039;}} || {{ic|dm_crypt}} カーネルモジュールと {{ic|cryptsetup}} ツールをイメージに追加します。これを使うには {{Pkg|cryptsetup}} をインストールする必要があります。{{Note|暗号化されたデバイスを起動時にアンロックするための  &#039;&#039;keyboard&#039;&#039; フックの注意書きや、ファイルをアンロックする際はファイルシステムについての [[#MODULES]] にある注意書きを見てください。}} || 暗号化された root パーティションを検知してアンロックします。設定については [[#ランタイムのカスタマイズ]] を見て下さい。&lt;br /&gt;
&#039;&#039;&#039;sd-encrypt&#039;&#039;&#039; については [[Dm-crypt/システム設定#sd-encrypt フックを使う]]を見てください。&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;lvm2&#039;&#039;&#039;}} || device mapper カーネルモジュールと {{ic|lvm}} ツールをイメージに追加します。これを使うには {{Pkg|lvm2}} をインストールする必要があります。ルートファイルシステムを [[LVM]] 上に置いている場合、このフックは必須です。 || {{-}}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;filesystems&#039;&#039;&#039;}} || イメージに必要なファイルシステムモジュールを含めます。ファイルシステムモジュールを {{ic|MODULES}} で指定していない限りこのフックが&#039;&#039;&#039;必要&#039;&#039;&#039;になります。 || {{-}}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;fsck&#039;&#039;&#039;}} || fsck バイナリとファイルシステム固有のヘルパーを追加し、マウント前にルードデバイスに対して fsck を実行できるようにします。&#039;&#039;&#039;autodetect&#039;&#039;&#039; フックの後ろにこのフックを追加した場合、root ファイルシステムのヘルパーだけが追加されます。このフックの使用は&#039;&#039;&#039;強く&#039;&#039;&#039;推奨されており、{{ic|/usr}} パーティションを分割する場合は必須です。このフックを含める場合、初期ユーザ空間でキーボードが動作することを保証するために必要なモジュールも追加することを強く推奨します。&lt;br /&gt;
&lt;br /&gt;
このフックを使用するには、[[カーネルコマンドライン]]にパラメータ {{ic|rw}} を設定する必要があります ([https://bbs.archlinux.org/viewtopic.php?pid=1307895#p1307895 議論])。詳細は [[fsck#ブート時のチェック]] を見てください。&lt;br /&gt;
| {{-}}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; {{C|&#039;&#039;&#039;acpi_override&#039;&#039;&#039;}} || {{ic|/usr/initcpio/acpi_override/}} と {{ic|/etc/initcpio/acpi_override/}} ディレクトリ内にある ACPI Machine Language (&#039;&#039;.aml&#039;&#039;) ファイルを未圧縮早期 initramfs イメージに追加します。そうすることで、カーネルがブートの非常に早い段階で ACPI テーブル (例えば [[DSDT]]) をオーバーライドできるようにします。[https://docs.kernel.org/admin-guide/acpi/initrd_table_override.html] || {{-}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|パッケージがカスタムのフックを提供していることがあるため、この表は完全ではありません。}}&lt;br /&gt;
&lt;br /&gt;
=== COMPRESSION ===&lt;br /&gt;
&lt;br /&gt;
カーネルは、initramfs の圧縮にいくつかの形式をサポートしています: {{Pkg|gzip}}、{{Pkg|bzip2}}、lzma ({{Pkg|xz}})、{{Pkg|xz}}、lzo ({{Pkg|lzop}})、{{Pkg|lz4}}、{{Pkg|zstd}}。mkinitcpio はデフォルトで zstd 圧縮イメージを使用します。mkinitcpio は デフォルトで、カーネル 5.9 及びそれ以降に対しては zstd 圧縮を、5.9 より前のカーネルバージョンに対しては gzip を使用します。&lt;br /&gt;
&lt;br /&gt;
提供されている {{ic|mkinitcpio.conf}} には、さまざまな {{ic|COMPRESSION}} オプションがコメントアウトされています。別の圧縮方法に切り替える場合は、コメントを解除し、対応する圧縮ユーティリティがインストールされていることを確認してください。何も指定しない場合は、デフォルトのメソッドが使用されます。非圧縮イメージを作成する場合は、設定ファイルで {{ic|1=COMPRESSION=&#039;&#039;&#039;cat&#039;&#039;&#039;}} を指定するか、コマンドラインで {{ic|-z cat}} を使用します。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* lz4 と xz 圧縮ユーティリティはデフォルトでマルチスレッド化されており、zstd はマルチスレッドモードで実行されます ({{ic|-T0}} オプションが使用され、検出されたコアと同じ数のスレッドを作成しようと試みます)。&lt;br /&gt;
* lz4 は、高圧縮モード ({{ic|-9}}) のイメージの圧縮率は通常約2.5で、最速の解凍速度を達成しています。zstd は、マルチスレッド圧縮と、オプションによる幅広い圧縮レベルにより、多用途のソリューションを提供します - {{man|1|zstd|Operation Modifiers}} を参照。xz は、その高圧縮プリセット ({{ic|-9}}) で約5の縮小率により最小サイズを実現しますが、その代償として展開速度がかなり遅くなります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== COMPRESSION_OPTIONS ===&lt;br /&gt;
&lt;br /&gt;
{{ic|COMPRESSION}} で指定したプログラムに渡す追加のフラグを記述します、例:&lt;br /&gt;
&lt;br /&gt;
 COMPRESSION_OPTIONS=(-9)&lt;br /&gt;
&lt;br /&gt;
このオプションは空のままにしておくことができます。&#039;&#039;mkinitcpio&#039;&#039; は、サポートされている圧縮メソッドに、機能するイメージを生成するために必須なフラグを渡すことを保証しています。&lt;br /&gt;
&lt;br /&gt;
{{Warning|このオプションを間違って使用すると、カーネルが生成されたイメージを解凍できない場合、&#039;&#039;システムが起動不能になる&#039;&#039;場合があります。}}&lt;br /&gt;
&lt;br /&gt;
デフォルトの zstd 圧縮では、カスタムカーネルのスペースを節約するために (特に[[デュアルブート]]環境で、EFI システムパーティションを {{ic|/boot}} として使用する場合)、{{ic|--long}} オプションは非常に効果的です。ただし、RAM の限られたシステムは、このオプションをした場合に initramfs を解凍できない場合があります。また、{{ic|-v}} オプションは、initramfs の生成中に詳細を見たい場合に必要になるかもしれません。例:&lt;br /&gt;
&lt;br /&gt;
 COMPRESSION=&amp;quot;zstd&amp;quot;&lt;br /&gt;
 COMPRESSION_OPTIONS=(-v -5 --long)&lt;br /&gt;
&lt;br /&gt;
xz で圧縮レベル {{ic|-9e}} を使用し、ローダブルなカーネルモジュールとファームウェアを解凍しておくことで、圧縮速度が最も遅くなりますが、圧縮率を最大に高めることができます:&lt;br /&gt;
&lt;br /&gt;
 COMPRESSION=&amp;quot;xz&amp;quot;&lt;br /&gt;
 COMPRESSION_OPTIONS=(-9e)&lt;br /&gt;
 MODULES_DECOMPRESS=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== MODULES_DECOMPRESS ===&lt;br /&gt;
&lt;br /&gt;
{{ic|MODULES_DECOMPRESS}} は、initramfs の作成時にカーネルモジュールとファームウェアのファイルを解凍しておくかを決めます。デフォルトは {{ic|no}} です。&lt;br /&gt;
&lt;br /&gt;
Arch では[[カーネルモジュール]]と {{Pkg|linux-firmware}} を zstd でレベル 19 で圧縮しています。Initramfs でより高い圧縮率を使用する場合、{{ic|1=MODULES_DECOMPRESS=&amp;quot;yes&amp;quot;}} を設定することで、initramfs のサイズをさらに小さくすることができます。しかし、カーネルが個々のモジュールとファームウェアをロード時に解凍する場合よりも、initramfs イメージ全体を解凍するのにより多くの時間が掛かるようになるため、ブートの初期段階で RAM と CPU の使用率を増加させ、RAM 容量が限られていて CPU の性能が低いシステムで悪影響を及ぼします。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Initramfs の生成プロセスの終わりあたりになると、二重圧縮を防ぐために、残りの &#039;&#039;.bz2&#039;&#039;、&#039;&#039;.gz&#039;&#039;、&#039;&#039;.lz4&#039;&#039;、&#039;&#039;.lzma&#039;&#039;、&#039;&#039;.lzo&#039;&#039;、&#039;&#039;.xz&#039;&#039;、&#039;&#039;.zst&#039;&#039; ファイルは全て未圧縮早期 initramfs イメージに移動されます。}}&lt;br /&gt;
&lt;br /&gt;
== ランタイムのカスタマイズ ==&lt;br /&gt;
&lt;br /&gt;
ランタイム設定オプションはカーネルコマンドラインを通して {{ic|init}} や特定のフックに渡すことができます。カーネルコマンドラインパラメータはブートローダによって与えられることがほとんどです。下で書かれているオプションをカーネルコマンドラインに追加することでデフォルトの挙動を変えることができます。詳しくは [[カーネルパラメータ]] や [[Arch ブートプロセス]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== base フックの init ===&lt;br /&gt;
&lt;br /&gt;
; {{ic|1=root=}}: カーネルコマンドラインで指定する一番重要なパラメータであり、どのデバイスを root デバイスとしてマウントするかを決めます。&#039;&#039;mkinitcpio&#039;&#039; は柔軟に様々な形式を使うことができるようになっています。形式の例は [[永続的なブロックデバイスの命名#カーネルパラメータ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|以下のブートパラメーターは initramfs 環境における {{ic|init}} のデフォルトの挙動を変更します。詳しくは {{ic|/usr/lib/initcpio/init}} を参照。{{ic|systemd}} フックが使われている場合 {{ic|base}} フックの {{ic|init}} は置き換わるため機能しません。}}&lt;br /&gt;
&lt;br /&gt;
; {{ic|break}}: {{ic|break}} や {{ic|1=break=premount}} が指定された場合、(フックをロードした後、root ファイルシステムをマウントする前に) {{ic|init}} はブートプロセスを停止してトラブルシューティングに使うことができるインタラクティブシェルを起動します。{{ic|1=break=postmount}} と指定することで root がマウントされた後にこのシェルを起動することもできます。シェルを終了すると通常通りに起動が行われます。&lt;br /&gt;
&lt;br /&gt;
; {{ic|1=disablehooks=}}: {{ic|1=disablehooks=hook1[,hook2,...]}} を追加すると実行時にフックを無効化します。例: {{bc|1=disablehooks=resume}}&lt;br /&gt;
&lt;br /&gt;
; {{ic|1=earlymodules=}}: {{ic|1=earlymodules=mod1[,mod2,...]}} という風に先にロードするモジュールを指定することでモジュールがロードされる順番を変更することができます (例えば、複数のネットワークインターフェイスの順番を適切に確定したいときなどに使います)。&lt;br /&gt;
&lt;br /&gt;
他のパラメータについては [[ブートデバッグ]] や {{man|8|mkinitcpio}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== RAID を使う ===&lt;br /&gt;
&lt;br /&gt;
[[RAID#mkinitcpio の設定]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== net を使う ===&lt;br /&gt;
&lt;br /&gt;
{{Note|NFSv4 はまだサポートされていません {{Bug|28287}}。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;必要なパッケージ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|net}} は {{Pkg|mkinitcpio-nfs-utils}} パッケージを必要とします。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;カーネルパラメータ&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
公式の[https://docs.kernel.org/admin-guide/nfs/nfsroot.html カーネルドキュメント]に包括的で最新の情報が載っています。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ip=&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
このパラメータはカーネルに、デバイスの IP アドレスの設定方法と、IP ルーティングテーブルの設定方法を指定します。コロンで区切った9つまでの引数を指定できます: {{ic|1=ip=&amp;lt;client-ip&amp;gt;:&amp;lt;server-ip&amp;gt;:&amp;lt;gw-ip&amp;gt;:&amp;lt;netmask&amp;gt;:&amp;lt;hostname&amp;gt;:&amp;lt;device&amp;gt;:&amp;lt;autoconf&amp;gt;:&amp;lt;dns0-ip&amp;gt;:&amp;lt;dns1-ip&amp;gt;:&amp;lt;ntp0-ip&amp;gt;}}。&lt;br /&gt;
&lt;br /&gt;
カーネルコマンドラインにこのパラメータが存在しなかった場合、全てのフィールドが空とされて、[https://docs.kernel.org/admin-guide/nfs/nfsroot.html カーネルドキュメント]に書かれているデフォルト設定が適用されます。一般的にはカーネルは自動設定を使って全てを設定しようとします。&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;autoconf&amp;gt;}} パラメータは {{ic|ip}} パラメータの唯一の値として指定できます (前の全ての {{ic|:}} 文字を排除)。値が {{ic|1=ip=off}} や {{ic|1=ip=none}} の場合、自動設定は行われません。そうでないなら、自動的に設定されます。最も一般的な使い方は {{ic|1=ip=dhcp}} です。&lt;br /&gt;
&lt;br /&gt;
パラメータの説明は、[https://docs.kernel.org/admin-guide/nfs/nfsroot.html カーネルドキュメント]を参照してください。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
 ip=127.0.0.1:::::lo:none  --&amp;gt; ループバックインターフェイスを有効化。&lt;br /&gt;
 ip=192.168.1.1:::::eth2:none --&amp;gt; 静的 eth2 インターフェイスを有効化。&lt;br /&gt;
 ip=:::::eth0:dhcp --&amp;gt; eth0 構成に対して dhcp プロトコルを有効化。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|&amp;lt;device&amp;gt;}} パラメータにはカーネルのデバイス名を使用してください (例: {{ic|eth0}})、永続的な名前のデバイス名 (例: {{ic|enp2s0}}) では動作しません。詳細は [[ネットワーク設定#ネットワークインターフェイス]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BOOTIF=&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のネットワークカードを使っているときは、このパラメータに起動するインターフェイスの MAC アドレスを含めることができます。インターフェイスの数字が変わってしまったり、pxelinux の IPAPPEND 2 や IPAPPEND 3 オプションを使うときに便利です。指定しなかった場合、{{ic|eth0}} が使われます。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
 BOOTIF=01-A1-B2-C3-D4-E5-F6  # 先頭の &amp;quot;01-&amp;quot; と大文字に注意&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;nfsroot=&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|nfsroot}} パラメータがコマンドラインで指定されなかった場合、デフォルトで {{ic|/tftpboot/%s}} が使われます。&lt;br /&gt;
&lt;br /&gt;
 nfsroot=[&amp;lt;server-ip&amp;gt;:]&amp;lt;root-dir&amp;gt;[,&amp;lt;nfs-options&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
パラメータの説明を見るには {{ic|mkinitcpio -H net}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== LVM を使う ===&lt;br /&gt;
&lt;br /&gt;
root デバイスを [[LVM]] 上に置く場合は、[[LVM に Arch Linux をインストールする#mkinitcpio フックを追加する]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== 暗号化されたルートを使う ===&lt;br /&gt;
&lt;br /&gt;
[[Dm-crypt/システム全体の暗号化|root を暗号化]]している場合、どのフックを含めるべきかに関する詳細な情報は [[Dm-crypt/システム設定#mkinitcpio]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== /usr を別のパーティションに分割する ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr}} のパーティションを別にする場合、以下を行う必要があります:&lt;br /&gt;
&lt;br /&gt;
* 起動時にこのパーティションのチェックを実行するために、{{ic|fsck}} フックを追加して、{{ic|/etc/fstab}} で {{ic|/usr}} の {{ic|passno}} を {{ic|2}} にする。起動時に {{ic|/usr}} を fsck したい場合は必須です (これはすべてのユーザに推奨されます)。このフックが存在しないと、{{ic|/usr}} は永遠に fsck されません。&lt;br /&gt;
* systemd フックを使っていない場合、{{ic|usr}} フックを追加する。ルートがマウントされた後に {{ic|/usr}} パーティションがマウントされるようになります。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== フォールバック initramfs の生成 ===&lt;br /&gt;
&lt;br /&gt;
[[#自動生成|フォールバック]] initramfs の生成は、デフォルトで無効化されています。有効化するには:&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/mkinitcpio.d/}} 内のそれぞれの &#039;&#039;&#039;.preset&#039;&#039;&#039; ファイルを修正する&lt;br /&gt;
** {{ic|1=PRESETS=(&#039;default&#039;)}} を無効化し、代わりに {{ic|1=PRESETS=(&#039;default&#039; &#039;fallback&#039;)}} を有効化する&lt;br /&gt;
** {{ic|1=fallback_image=&amp;quot;/boot/initramfs-linux-fallback.img&amp;quot;}} を有効化する&lt;br /&gt;
** {{ic|1=fallback_options=&amp;quot;--skiphooks autodetect&amp;quot;}} を有効化する&lt;br /&gt;
* initramfs を再生成する&lt;br /&gt;
* [[ブートローダー]]の設定を更新する&lt;br /&gt;
&lt;br /&gt;
{{Note|フォールバック initramfs が無いと、デフォルトの initramfs でシステムの起動が失敗した場合に、システムを起動するためのもう一つの手段が失われることになります。システムリカバリのための起動可能[[USB インストールメディア|インストールメディア]]を作成しておいてください。}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== イメージの展開 ===&lt;br /&gt;
&lt;br /&gt;
initramfs イメージの中に何が入っているか気になるときは、イメージを展開して中に入っているファイルを調べることができます。&lt;br /&gt;
&lt;br /&gt;
initramfs イメージは SVR4 CPIO アーカイブであり、&#039;&#039;find&#039;&#039; と &#039;&#039;bsdcpio&#039;&#039; コマンドによって生成されています。また、任意で、カーネルが対応した圧縮方法によって圧縮されています。圧縮方法について詳しくは [[#COMPRESSION]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mkinitcpio}} パッケージには {{man|1|lsinitcpio}} というユーティリティが含まれており initramfs イメージの中身を一覧・展開することができます。&lt;br /&gt;
&lt;br /&gt;
イメージ内のファイルを一覧するには:&lt;br /&gt;
&lt;br /&gt;
 # lsinitcpio /boot/initramfs-linux.img&lt;br /&gt;
&lt;br /&gt;
カレントディレクトリにファイルを全て展開するには:&lt;br /&gt;
&lt;br /&gt;
 # lsinitcpio --extract /boot/initramfs-linux.img&lt;br /&gt;
&lt;br /&gt;
イメージの重要なパーツについて読みやすいリストを取得することもできます (カーネルバージョン、初期 CPIO の存在、含まれているモジュールやバイナリなど):&lt;br /&gt;
&lt;br /&gt;
 # lsinitcpio --analyze /boot/initramfs-linux.img&lt;br /&gt;
&lt;br /&gt;
=== 展開して修正を加えたイメージの再圧縮 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/bin/mkinitcpio}} スクリプトの {{ic|build_image}} 関数を以下のパラメータで実行してください:&lt;br /&gt;
&lt;br /&gt;
 build_image &#039;&#039;出力ファイル&#039;&#039; &#039;&#039;圧縮方式&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|build_image}} 関数の内容で新しいスクリプトを作成することでこれを実行できます。&lt;br /&gt;
これはカレントディレクトリ内の内容を {{ic|&#039;&#039;出力ファイル&#039;&#039;}} というファイルに圧縮します。&lt;br /&gt;
&lt;br /&gt;
{{Warning|上書きするまえに自動生成された {{ic|/boot/initramfs-linux.img}} の名前を変更することで、簡単に元に戻すことができるようになります。何か問題が発生して起動できなくなった場合、fallback イメージやブート CD で起動して、{{ic|mkinitcpio}} を実行して元のイメージに戻してください。あるいは、自分で修正してイメージを再圧縮してください。}}&lt;br /&gt;
&lt;br /&gt;
=== マウントされているのに &amp;quot;/dev must be mounted&amp;quot; と表示される ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/dev}} がマウントされているかどうか確認するために mkinitcpio は {{ic|/dev/fd/}} が存在するかどうかを確かめます。問題がないようでしたら、手動で作成することができます:&lt;br /&gt;
&lt;br /&gt;
 # ln -s /proc/self/fd /dev/&lt;br /&gt;
&lt;br /&gt;
(当然 {{ic|/proc}} のマウントも必要です。&#039;&#039;mkinitcpio&#039;&#039; によって次にチェックされます。)&lt;br /&gt;
&lt;br /&gt;
=== Possibly missing firmware for module XXXX ===&lt;br /&gt;
&lt;br /&gt;
カーネルのアップデート後に initramfs を再生成する際、以下のような警告が表示されることがあります:&lt;br /&gt;
&lt;br /&gt;
 ==&amp;gt; WARNING: Possibly missing firmware for module: &#039;&amp;lt;nowiki/&amp;gt;&#039;&#039;module_name&#039;&#039;&amp;lt;nowiki/&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;default&#039;&#039; initramfs イメージを生成するときに同じようなメッセージが表示される場合、警告メッセージが言っている通り、追加のファームウェアをインストールする必要があるかもしれません。ほとんどの一般的なファームウェアファイルは {{Pkg|linux-firmware}} パッケージを[[インストール]]することで入手できます。ファームウェアを提供する他のパッケージについては、以下の表を見るか、[[公式リポジトリ]]や [[AUR]] でモジュール名を検索してみてください。&lt;br /&gt;
&lt;br /&gt;
メッセージが &#039;&#039;fallback&#039;&#039; initramfs イメージの生成時にのみ表示される場合は、以下の2つの選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* 影響を受けるハードウェアを使用しないことがわかっている場合は、警告を安全に無視できます。&lt;br /&gt;
* 警告を抑制したい場合、不足しているファームウェアをインストールできます。メタパッケージ {{AUR|mkinitcpio-firmware}} には、ほどんどのオプションのファームウェアが含まれています。あるいは、手動で必要なパッケージをインストールしてください:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! モジュール !! パッケージ&lt;br /&gt;
|-&lt;br /&gt;
| aic94xx        || {{AUR|aic94xx-firmware}}&lt;br /&gt;
|-&lt;br /&gt;
| ast            || {{AUR|ast-firmware}}&lt;br /&gt;
|-&lt;br /&gt;
| bfa            || {{Pkg|linux-firmware-qlogic}}&lt;br /&gt;
|-&lt;br /&gt;
| bnx2x          || {{Pkg|linux-firmware-broadcom}}&lt;br /&gt;
|-&lt;br /&gt;
| liquidio       || {{Pkg|linux-firmware-liquidio}}&lt;br /&gt;
|-&lt;br /&gt;
| mlxsw_spectrum || {{Pkg|linux-firmware-mellanox}}&lt;br /&gt;
|-&lt;br /&gt;
| nfp            || {{Pkg|linux-firmware-nfp}}&lt;br /&gt;
|-&lt;br /&gt;
| qat_420xx      || {{Pkg|linux-firmware-intel}}&lt;br /&gt;
|-&lt;br /&gt;
| qed            || {{Pkg|linux-firmware-qlogic}}&lt;br /&gt;
|-&lt;br /&gt;
| qla1280        || {{Pkg|linux-firmware-qlogic}}&lt;br /&gt;
|-&lt;br /&gt;
| qla2xxx        || {{Pkg|linux-firmware-qlogic}}&lt;br /&gt;
|-&lt;br /&gt;
| wd719x         || {{AUR|wd719x-firmware}}&lt;br /&gt;
|-&lt;br /&gt;
| xhci_pci&amp;lt;br&amp;gt;xhci_pci_renesas || {{AUR|upd72020x-fw}}&lt;br /&gt;
|}&lt;br /&gt;
* 警告を取り除きたいが、必要ないファームウェアパッケージのためにシステムの空き領域を無駄にしたくない場合、[[#フォールバック initramfs の生成|フォールバック initramfs の生成]]を無効化することができます。&lt;br /&gt;
&lt;br /&gt;
利用できないファームウェアに関しては、ダミーのファイルを作成することで警告を消すことができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;Silence the &amp;quot;Possibly missing firmware for module&amp;quot; message&#039; \&lt;br /&gt;
     | tee /usr/lib/firmware/qat_6xxx{,_mmp}.bin &amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
=== No PS/2 controller found ===&lt;br /&gt;
&lt;br /&gt;
一部のマザーボードで (ほとんどの場合、古いもの。しかし、一部の新しいものでも起こります)、i8042 コントローラが自動検出できません。稀なケースですが、キーボードが使えなくなってしまうことがあります。この状況を事前に察知することができます。PS/2 ポートがあり、{{ic|i8042: PNP: No PS/2 controller found. Probing ports directly}} というメッセージが表示される場合、{{ic|MODULES}} 配列に {{ic|atkbd}} を追加してください。[https://archlinux.org/news/linux-313-warning-ps2-keyboard-support-is-now-modular/]&lt;br /&gt;
&lt;br /&gt;
=== あるマシンでは起動できるが他のマシンでは起動できない ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mkinitcpio&#039;&#039; の {{ic|autodetect}} フックは {{ic|/sys}} をスキャンして、ロードされている[[カーネルモジュール]]を確認して不要なカーネルモジュールを排除します。{{ic|/boot}} ディレクトリを他のマシンに移動して、初期ユーザー空間でブートが失敗する場合、カーネルモジュールが存在しないために新しいハードウェアが検出されていないのが原因かもしれません。USB 2.0 と 3.0 では必要なカーネルモジュールが異なるので注意してください。&lt;br /&gt;
&lt;br /&gt;
修正するには、[[ブートローダー]]から [[#イメージ作成とアクティベーション|fallback]] イメージを選択してください (fallback は {{ic|autodetect}} によるフィルタリングがされていません) 起動したら、新しいマシンで &#039;&#039;mkinitcpio&#039;&#039; を実行して適切なモジュールでイメージを再生成してください。fallback イメージで起動できない場合、Arch Linux のライブ CD/USB で起動して、chroot し、新しいマシンで &#039;&#039;mkinitcpio&#039;&#039; を実行して下さい。それでも駄目な場合、initramfs にモジュールを[[#MODULES|手動]]で追加します。&lt;br /&gt;
&lt;br /&gt;
=== コンソールにアクセスできない、ルートアカウントがロックされている ===&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd}} フックは、[https://gitlab.archlinux.org/archlinux/packaging/packages/systemd/-/commit/292cdf8a2f7dd7c6c7d91d2b59617391935c837c (initramfs の) ルートアカウントを無効化します]。緊急シェルを有効化するには、一時的に {{ic|SYSTEMD_SULOGIN_FORCE{{=}}1}} を[[カーネルパラメータ]]に追加してください。&lt;br /&gt;
&lt;br /&gt;
あるいは、{{AUR|initcpio-hook-shadowcopy}} を使う方法もあります。このパッケージをインストールし、{{ic|/etc/mkinitcpio.conf}} の {{ic|systemd}} フックの後に {{ic|shadowcopy}} フックを追加し、{{ic|mkinitcpio -P}} で initramfs を再生成してください。ドキュメントは [https://github.com/iTrooz/initcpio-hook-shadowcopy GitHub リポジトリ]にあります。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* Linux カーネルドキュメント [https://docs.kernel.org/filesystems/ramfs-rootfs-initramfs.html#what-is-rootfs initramfs, &amp;quot;What is rootfs?&amp;quot;]&lt;br /&gt;
* Linux カーネルドキュメント [https://docs.kernel.org/admin-guide/initrd.html initrd]&lt;br /&gt;
* Wikipedia 記事 [[wikipedia:ja:initrd|initrd]]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|mkinitcpio|2026-05-03|870746}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB&amp;diff=41466</id>
		<title>カーネル</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB&amp;diff=41466"/>
		<updated>2026-04-11T21:11:20Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:カーネル]]&lt;br /&gt;
[[Category:ソフトウェア一覧]]&lt;br /&gt;
[[bs:Kernel]]&lt;br /&gt;
[[en:Kernel]]&lt;br /&gt;
[[fr:Kernel]]&lt;br /&gt;
[[hu:Kernel]]&lt;br /&gt;
[[pt:Kernel]]&lt;br /&gt;
[[ru:Kernel]]&lt;br /&gt;
[[zh-hans:内核]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|/Arch build system}}&lt;br /&gt;
{{Related|/伝統的なコンパイル方法}}&lt;br /&gt;
{{Related|カーネルモジュールのコンパイル}}&lt;br /&gt;
{{Related|カーネルモジュール}}&lt;br /&gt;
{{Related|kernel-install}}&lt;br /&gt;
{{Related|sysctl}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
Wikipedia によると:&lt;br /&gt;
:[[Wikipedia:ja:Linuxカーネル|Linux カーネル]]とは、モノリシックで Unix ライクなオープンソースのコンピュータ[[Wikipedia:ja:カーネル|オペレーティングシステムカーネル]]である。&lt;br /&gt;
&lt;br /&gt;
[[Arch Linux]] は Linux カーネルをベースにしています。Arch Linux では最新の安定版カーネルに加え、様々な代替 Linux カーネルを利用することができます。この記事では、リポジトリで利用可能な選択肢のいくつかを、それぞれの簡単な説明とともにリストアップしています。また、システムのカーネルに適用できるパッチについての説明もあります。記事の最後には、カスタムカーネルのコンパイルについての概要と、様々な方法へのリンクがあります。&lt;br /&gt;
&lt;br /&gt;
カーネルパッケージは、パス {{ic|/usr/lib/modules/}} に[[インストール]]され、その後 {{ic|/boot/}} 内へ [[Wikipedia:ja:vmlinuz|vmlinuz]] 実行可能イメージをコピーするために使用されます。[https://archlinux.org/news/new-kernel-packages-and-mkinitcpio-hooks/]&lt;br /&gt;
別のカーネルをインストールする場合や複数のカーネルを切り替える場合は、それに応じて[[ブートローダー]]を設定する必要があります。&lt;br /&gt;
カーネルを古いバージョンにダウングレードする方法については、[[パッケージのダウングレード#カーネルのダウングレード|カーネルのダウングレード]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 公式サポートカーネル ==&lt;br /&gt;
&lt;br /&gt;
公式にサポートされているカーネルについては、[https://bbs.archlinux.org/viewforum.php?id=22 フォーラム]でのコミュニティサポートと[[バグ報告ガイドライン|バグレポート]]を利用できます。&lt;br /&gt;
&lt;br /&gt;
* {{App|Stable|いくつかのパッチを適用したバニラな Linux カーネル。|https://www.kernel.org/|{{Pkg|linux}}}}&lt;br /&gt;
* {{App|Hardened|カーネルおよびユーザ空間の脆弱性を緩和するための一連の堅牢化パッチを適用した、セキュリティ特化の Linux カーネルです。また、{{Pkg|linux}} よりも多くの上流のカーネル堅牢化機能を有効にします。|https://github.com/anthraxx/linux-hardened|{{Pkg|linux-hardened}}}}&lt;br /&gt;
* {{App|Longterm|長期サポート (LTS) Linux カーネル及びモジュール。最新の安定版カーネルと互換性のあるバージョンがタイムリーにリリースされないような out-of-tree のモジュールを使用する際に有用です。|https://www.kernel.org/|{{Pkg|linux-lts}}}}&lt;br /&gt;
* {{App|[[リアルタイムカーネル]]|[[Wikipedia:en:Ingo Molnár|Ingo Molnár]] 率いるコア開発者の小グループによって維持されています。このパッチを使用すると、コードのいくつかの非常に小さな領域(&amp;quot;raw_spinlock クリティカル領域&amp;quot;)を除いて、ほぼすべてのカーネルをプリエンプトできます。これは、ほとんどのカーネルスピンロックを優先度継承をサポートするミューテックスに置き換え、すべての割り込みとソフトウェア割り込みをカーネルスレッドに移動することによって行われます。|https://wiki.linuxfoundation.org/realtime/start|{{Pkg|linux-rt}}, {{Pkg|linux-rt-lts}}}}&lt;br /&gt;
&lt;br /&gt;
: {{Note|1=リアルタイムカーネルサポートは [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=baeb9a7d8b60b021d907127509c44507539c15e5 Linux 6.12] にマージされました。}}&lt;br /&gt;
&lt;br /&gt;
* {{App|Zen Kernel|カーネルハッカーの共同作業により、日常的なシステムに最適な Linux カーネルです。より詳細な情報は [https://github.com/zen-kernel/zen-kernel/wiki/FAQ FAQ] と [https://github.com/zen-kernel/zen-kernel/wiki/Detailed-Feature-List Detailed Feature List] を参照してください。|https://github.com/zen-kernel/zen-kernel|{{Pkg|linux-zen}}}}&lt;br /&gt;
&lt;br /&gt;
== コンパイル ==&lt;br /&gt;
&lt;br /&gt;
次の方法を使って、独自のカーネルをコンパイルできます。&lt;br /&gt;
&lt;br /&gt;
; [[カーネル/Arch build system|Arch Build System]]: 既存の {{Pkg|linux}} [[PKGBUILD]] の高い品質と[[Wikipedia:Package management system|パッケージ管理]]の利点を生かします。&lt;br /&gt;
; [[カーネル/伝統的なコンパイル方法|伝統的な方法]]: 手動でソースの tarball をダウンロードし、ホームディレクトリで通常のユーザーとしてコンパイルする必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* カスタムカーネルを使用すると、データの損失など、あらゆる種類の安定性と信頼性の問題が発生する可能性があります。[[バックアップ]]をとることを強くお勧めします。&lt;br /&gt;
* Arch Linux は [[#公式サポートカーネル]]のみを公式にサポートしています。別のカーネルを使用する場合は、サポートリクエストにその旨を記載してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* システムの速度を上げる最良の方法は、まず、カーネルの設定をアーキテクチャやプロセッサの種類に合わせることです。&lt;br /&gt;
* 自分が持っていないもの、使っていないもののサポートを含まないようにすることで、カーネルのサイズ (つまりビルド時間) を小さくすることができます。例えば、Bluetooth、video4linux、1000Mbit イーサネットなどのサポートです。&lt;br /&gt;
&lt;br /&gt;
Arch のカーネルパッケージ設定ファイルは Arch のパッケージのソースファイルに含まれています。例えば {{Pkg|linux}} の場合 [https://gitlab.archlinux.org/archlinux/packaging/packages/linux] にリンクがあります。今現在動かしているカーネルのコンフィグファイルはファイルシステムの {{ic|/proc/config.gz}} に存在します (カーネルオプションの {{ic|CONFIG_IKCONFIG_PROC}} が有効になっている場合。)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
リストにあるパッケージの中には、[[非公式ユーザーリポジトリ]]からバイナリパッケージを入手できるものもあります。&lt;br /&gt;
&lt;br /&gt;
=== kernel.org カーネル ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Git|Linus Torvalds の git リポジトリから得たソースを使ってビルドする Linux カーネルとモジュール。|https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git|{{AUR|linux-git}}}}&lt;br /&gt;
* {{App|Mainline|すべての新機能が導入されるカーネル、2〜3ヶ月ごとにリリースされます。|https://www.kernel.org/|{{AUR|linux-mainline}}}}&lt;br /&gt;
* {{App|Next|次の mainline リリースにマージされる予定の機能を持つ最先端のカーネル。|https://www.kernel.org/doc/man-pages/linux-next.html|{{AUR|linux-next-git}}}}&lt;br /&gt;
* {{App|DRM|最先端の GPU ドライバ付き Linux カーネル。|https://gitlab.freedesktop.org/drm|{{AUR|linux-drm-tip-git}}, {{AUR|linux-drm-next-git}}}}&lt;br /&gt;
* {{App|Longterm|長期サポート (LTS) Linux カーネルとモジュール。|https://www.kernel.org/|{{AUR|linux-lts612}}, {{AUR|linux-lts66}}, {{AUR|linux-lts61}}, {{AUR|linux-lts515}}, {{AUR|linux-lts510}}}}&lt;br /&gt;
&lt;br /&gt;
=== 非公式カーネル ===&lt;br /&gt;
&lt;br /&gt;
* {{App|linux-cachyos|SCHED-EXT + BORE + &amp;quot;Cachy sauce&amp;quot; が組み合わされた Linux カーネル。これら以外のパッチや改良が施されたカーネルやモジュールも組み合わされています。|https://github.com/CachyOS/linux-cachyos|{{AUR|linux-cachyos}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Linux-libre|Libre]]|[[Wikipedia:ja:難読化 (ソフトウェア)|難読化された]]デバイスドライバや[[Wikipedia:ja:バイナリ・ブロブ|プロプライエタリ]]のデバイスドライバーを使用しません。|https://www.fsfla.org/ikiwiki/selibre/linux-libre/|{{AUR|linux-libre}}}}&lt;br /&gt;
* {{App|Liquorix|Debian をターゲットとした設定と Zen カーネルソースを使用して構築されたカーネル代替品。デスクトップ、マルチメディア、ゲームなどのワークロード向けに設計されており、Debian Linux の性能代替カーネルとしてよく利用されます。Liquorix パッチセットのメンテナである Damentz は、同様に Zen パッチセットの開発者でもあります。|https://liquorix.net|{{AUR|linux-lqx}}}}&lt;br /&gt;
* {{App|pf-kernel|カーネルメインラインにマージされない、ほんの少しの素晴らしい機能を提供します。カーネルエンジニアによって管理されています。新しいカーネルのための含まれるパッチのポートが公式にリリースされていない場合、パッチセットは新しいカーネルへのパッチポートを提供し、サポートします。linux-pf の現在の最も代表的なパッチは、UKSM、DDCCI、v4l2loopback、そして BBRv3 です。|https://pfkernel.natalenko.name|パッケージ:}}&lt;br /&gt;
:* [[非公式ユーザーリポジトリ#post-factum kernels|リポジトリ]]: pf-kernel の開発者 [https://aur.archlinux.org/account/post-factum post-factum] による {{AUR|linux-pf}}&lt;br /&gt;
* {{App|Project C|Alfred Chen 氏の Project C パッチセット (BMQ スケジューラと PDS スケジューラ) を当てたカーネル。|https://gitlab.com/alfredchen/projectc|{{AUR|linux-prjc}}}}&lt;br /&gt;
* {{App|Nitrous|Skylake 及びそれ以降に対して最適化された修正版 Linux カーネル。|https://gitlab.com/xdevs23/linux-nitrous|{{AUR|linux-nitrous}}}}&lt;br /&gt;
* {{App|Tachyon|Intel の Clear Linux プロジェクトからのパッチが含まれています。Clear Linux プロジェクトは放棄されたため、現在は新しいプロジェクトにフォークされています。パフォーマンスとセキュリティの最適化を提供します。|https://git.staropensource.de/StarOpenSource/Linux-Tachyon|{{AUR|linux-tachyon}}}}&lt;br /&gt;
* {{App|tkg|デスクトップやゲームのパフォーマンスを向上させるためのパッチや調整を提供する、高度にカスタマイズ可能なカーネルビルドシステム。Etienne Juvigny によってメンテナンスされています。他のパッチの中で、様々な CPU スケージューラを提供しています: CFS、Project C PDS、Project C BMQ、MuQSS、CacULE。|https://github.com/Frogging-Family/linux-tkg|[[非公式ユーザーリポジトリ#chaotic-aur|chaotic-aur]] リポジトリで利用可能}}&lt;br /&gt;
* {{App|VFIO|Alex Williamson によって作成されたいくつかのパッチ(acs オーバーライドおよび i915)により、一部のマシンで KVM を使用して PCI パススルーを実行できるようになります。|https://lwn.net/Articles/499240/|{{AUR|linux-vfio}}, {{AUR|linux-vfio-lts}}}}&lt;br /&gt;
* {{App|XanMod|高性能ワークステーション、ゲーミングデスクトップ、メディアセンターなどで最大限に活用されることを目指し、より強固で応答性の高い、スムーズなデスクトップ体験を提供するために構築されています。このカーネルでは、BFQ I/O スケジューラ、[https://github.com/google/bbr/tree/v3 TCP BBRv3] 輻輳制御、x86_64 高度命令セットのサポート、部分的な Clear Linux パッチセットが使用されており、また一部のデフォルトも変更されています。|https://xanmod.org/|{{AUR|linux-xanmod}}, {{AUR|linux-xanmod-lts}}, {{AUR|linux-xanmod-rt}}, {{AUR|linux-xanmod-bore}}}}&lt;br /&gt;
&lt;br /&gt;
これらの非公式カーネルの多くには、手動で有効化する必要のある機能が含まれています。パッチ自体に含まれるドキュメントを読むか (これらの多くはカーネルソース内の {{ic|Documentation/}} ディレクトリに変更点が含まれています)、ウェブ上でパッチセットの名前を検索してみましょう。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== カーネルパニック ===&lt;br /&gt;
&lt;br /&gt;
Linux カーネルが回復不能な障害状態になると、&#039;&#039;カーネルパニック&#039;&#039;が発生します。この状態は通常、バグのあるハードウェアドライバーが原因で、マシンがデッドロックされ、応答しなくなり、再起動が必要になります。デッドロックの直前に、診断メッセージが生成されます。これは、障害が発生したときの&#039;&#039;マシンの状態&#039;&#039;、障害を検出したカーネルの関数までの &#039;&#039;呼び出しトレース&#039;&#039;、および現在ロードされているモジュールのリストです。ありがたいことに、カーネルのメインラインバージョン (公式リポジトリで提供されているものなど) を使用してカーネルパニックが発生することはあまりありませんが、発生した場合に備えて対処方法を知る必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|カーネルパニックは、&#039;&#039;oops&#039;&#039; または&#039;&#039;カーネル oops&#039;&#039; と呼ばれることもあります。パニックと oops は両方とも障害状態の結果として発生するものですが、oops はより一般的なものであり、必ずしもマシンがデッドロックするわけではありません。問題のあるタスクを強制終了して実行を継続することで、カーネルが oops から回復できる場合があります。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|回復可能な oops で代わりにパニックを発生させることを強制するには、カーネルパラメータ {{ic|1=oops=panic}} を起動時に渡すか、{{ic|/proc/sys/kernel/panic_on_oops}} に {{ic|1}} を書き込んでください。oops リカバリによってシステムが不安定になり将来のエラーの診断が困難になることを懸念しているのであれば、これは推奨される方法です。}}&lt;br /&gt;
&lt;br /&gt;
==== パニックメッセージの検証 ====&lt;br /&gt;
&lt;br /&gt;
ブートプロセスの非常に早い段階でカーネルパニックが発生すると、{{ic|Kernel panic - not syncing:}} という文字列が含まれるメッセージがコンソールに表示されます。ただし、[[systemd]] が実行され始めると、カーネルのメッセージはたいていキャプチャーされ、システムログに書き込まれます。しかし、パニックが発生した際、カーネルによる診断メッセージは&#039;&#039;ほとんどの場合において&#039;&#039;ディスク上のログファイルには書き込まれません。{{ic|system-journald}} がディスクにログを書き込む前に、マシンがデッドロックしてしまうためです。&lt;br /&gt;
&lt;br /&gt;
===== ブルースクリーン上の QR コード =====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|linux}} 6.10 から ({{ic|drm_panic}} により)、カーネルはパニックをブルースクリーン上の [[Wikipedia:ja:QRコード|QR コード]]として表示するようになりました。QR コードによって与えられた URL で&#039;&#039;スタックトレース&#039;&#039;を見ることができます。Arch Linux では、QR コードは https://panic.archlinux.org/panic_report へのリンクとなっています。URL には、gzip によって圧縮され、[[Wikipedia:URL fragment|URL フラグメント]] 内にエンコードされた様々な情報やスタックトレースが含まれています。この情報はサーバには転送されません (クライアントサイドで処理されます)。&lt;br /&gt;
&lt;br /&gt;
この[https://bbs.archlinux.org/viewtopic.php?pid=2256536#p2256536 フォーラムの投稿]にパニックのスクリーンショット例があります。&lt;br /&gt;
&lt;br /&gt;
{{ic|drm}} カーネルモジュールにパラメータ {{ic|panic_screen{{=}}kmsg}} (あるいは[[カーネルパラメータ]]として {{ic|drm.panic_screen{{=}}kmsg}}) を渡すことで、コンソールにスタックトレースを表示する以前の挙動に戻すことができます。&lt;br /&gt;
&lt;br /&gt;
===== コンソールによる方法 =====&lt;br /&gt;
&lt;br /&gt;
コンソール上にクラッシュを表示される「以前の」スタイルは依然として使用できます (&#039;&#039;kdump crashkernel&#039;&#039; のセットアップをする必要はありません)。以下のカーネルパラメータで起動すると、tty1 上でパニックを表示しようとします:&lt;br /&gt;
&lt;br /&gt;
 systemd.journald.forward_to_console=1 console=tty1&lt;br /&gt;
&lt;br /&gt;
{{Tip|パニックメッセージが速くスクロールしすぎて検証できない場合、起動時にカーネルパラメータ {{ic|1=pause_on_oops=&#039;&#039;秒数&#039;&#039;}} を渡してみてください。}}&lt;br /&gt;
&lt;br /&gt;
===== 例: 不良モジュール =====&lt;br /&gt;
&lt;br /&gt;
診断メッセージの情報を使って、何のサブシステムやモジュールがパニックを引き起こしているかを推測できます。この例では、とある架空のマシンで起動中にパニックが発生してしまいました。&#039;&#039;&#039;太字&#039;&#039;&#039;で強調した行に注目してください。&lt;br /&gt;
&lt;br /&gt;
{{bc|&#039;&#039;&#039;kernel: BUG: unable to handle kernel NULL pointer dereference at (null)&#039;&#039;&#039; &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;kernel: IP: fw_core_init+0x18/0x1000 [firewire_core]&#039;&#039;&#039; &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
kernel: PGD 718d00067&lt;br /&gt;
kernel: P4D 718d00067&lt;br /&gt;
kernel: PUD 7b3611067&lt;br /&gt;
kernel: PMD 0&lt;br /&gt;
kernel:&lt;br /&gt;
kernel: Oops: 0002 [#1] PREEMPT SMP&lt;br /&gt;
&#039;&#039;&#039;kernel: Modules linked in: firewire_core(+) crc_itu_t cfg80211 rfkill ipt_REJECT nf_reject_ipv4 nf_log_ipv4 nf_log_common xt_LOG nf_conntrack_ipv4 ...&#039;&#039;&#039; &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
kernel: CPU: 6 PID: 1438 Comm: modprobe Tainted: P           O    4.13.3-1-ARCH #1&lt;br /&gt;
kernel: Hardware name: Gigabyte Technology Co., Ltd. H97-D3H/H97-D3H-CF, BIOS F5 06/26/2014&lt;br /&gt;
kernel: task: ffff9c667abd9e00 task.stack: ffffb53b8db34000&lt;br /&gt;
kernel: RIP: 0010:fw_core_init+0x18/0x1000 [firewire_core]&lt;br /&gt;
kernel: RSP: 0018:ffffb53b8db37c68 EFLAGS: 00010246&lt;br /&gt;
kernel: RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000&lt;br /&gt;
kernel: RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffffffffc16d3af4&lt;br /&gt;
kernel: RBP: ffffb53b8db37c70 R08: 0000000000000000 R09: ffffffffae113e95&lt;br /&gt;
kernel: R10: ffffe93edfdb9680 R11: 0000000000000000 R12: ffffffffc16d9000&lt;br /&gt;
kernel: R13: ffff9c6729bf8f60 R14: ffffffffc16d5710 R15: ffff9c6736e55840&lt;br /&gt;
kernel: FS:  00007f301fc80b80(0000) GS:ffff9c675dd80000(0000) knlGS:0000000000000000&lt;br /&gt;
kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033&lt;br /&gt;
kernel: CR2: 0000000000000000 CR3: 00000007c6456000 CR4: 00000000001406e0&lt;br /&gt;
kernel: Call Trace:&lt;br /&gt;
&#039;&#039;&#039;kernel:  do_one_initcall+0x50/0x190&#039;&#039;&#039; &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
kernel:  ? do_init_module+0x27/0x1f2&lt;br /&gt;
kernel:  do_init_module+0x5f/0x1f2&lt;br /&gt;
kernel:  load_module+0x23f3/0x2be0&lt;br /&gt;
kernel:  SYSC_init_module+0x16b/0x1a0&lt;br /&gt;
kernel:  ? SYSC_init_module+0x16b/0x1a0&lt;br /&gt;
kernel:  SyS_init_module+0xe/0x10&lt;br /&gt;
kernel:  entry_SYSCALL_64_fastpath+0x1a/0xa5&lt;br /&gt;
kernel: RIP: 0033:0x7f301f3a2a0a&lt;br /&gt;
kernel: RSP: 002b:00007ffcabbd1998 EFLAGS: 00000246 ORIG_RAX: 00000000000000af&lt;br /&gt;
kernel: RAX: ffffffffffffffda RBX: 0000000000c85a48 RCX: 00007f301f3a2a0a&lt;br /&gt;
kernel: RDX: 000000000041aada RSI: 000000000001a738 RDI: 00007f301e7eb010&lt;br /&gt;
kernel: RBP: 0000000000c8a520 R08: 0000000000000001 R09: 0000000000000085&lt;br /&gt;
kernel: R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000c79208&lt;br /&gt;
kernel: R13: 0000000000c8b4d8 R14: 00007f301e7fffff R15: 0000000000000030&lt;br /&gt;
kernel: Code: &amp;lt;c7&amp;gt; 04 25 00 00 00 00 01 00 00 00 bb f4 ff ff ff e8 73 43 9c ec 48&lt;br /&gt;
kernel: RIP: fw_core_init+0x18/0x1000 [firewire_core] RSP: ffffb53b8db37c68&lt;br /&gt;
kernel: CR2: 0000000000000000&lt;br /&gt;
kernel: ---[ end trace 71f4306ea1238f17 ]---&lt;br /&gt;
&#039;&#039;&#039;kernel: Kernel panic - not syncing: Fatal exception&#039;&#039;&#039; &amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
kernel: Kernel Offset: 0x80000000 from 0xffffffff810000000 (relocation range: 0xffffffff800000000-0xfffffffffbffffffff&lt;br /&gt;
kernel: ---[ end Kernel panic - not syncing: Fatal exception}}&lt;br /&gt;
&lt;br /&gt;
# パニックを引き起こしたエラーの種類を示しています。この場合、プログラマのバグです。&lt;br /&gt;
# モジュール &#039;&#039;firewire_core&#039;&#039; 内の &#039;&#039;fw_core_init&#039;&#039; という関数でパニックが発生したことを示しています。&lt;br /&gt;
# &#039;&#039;firewire_core&#039;&#039; は最後にロードされたモジュールであることを示しています。&lt;br /&gt;
# &#039;&#039;fw_core_init&#039;&#039; 関数を呼んだ関数は &#039;&#039;do_one_initcall&#039;&#039; であったことを示しています。&lt;br /&gt;
# この &#039;&#039;oops&#039;&#039; メッセージが実際にカーネルパニックであり、システムがデッドロックしていることを示しています。&lt;br /&gt;
&lt;br /&gt;
以上のメッセージにより、&#039;&#039;firewire_core&#039;&#039; モジュールがロードされたときの初期ルーチン中にパニックが発生したということを推測できます。(マシンのファームウェアハードウェアは、プログラマのエラーによりこのバージョンのファームウェアドライバモジュールと互換性が無いかもしれないことが推測でき、新しいリリースを待つ必要があることになります。) その間、マシンを再び走らせる最も簡単な方法は、モジュールがロードされないようにすることです。以下の方法のうち1つを取ってください:&lt;br /&gt;
&lt;br /&gt;
* モジュールが &#039;&#039;initramfs&#039;&#039; の実行中にロードされる場合、[[カーネルパラメータ]] {{ic|1=rd.blacklist=firewire_core}} を設定して再起動してください。&lt;br /&gt;
* それ以外の場合、カーネルパラメータ {{ic|1=module_blacklist=firewire_core}} を設定して再起動してください。&lt;br /&gt;
&lt;br /&gt;
==== 再起動して root シェルに入り問題を修正する ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|[https://gitlab.archlinux.org/archlinux/packaging/packages/systemd/-/commit/292cdf8a2f7dd7c6c7d91d2b59617391935c837c initramfs の root アカウントはロックされているため]、{{ic|rd.rescue}} と {{ic|rd.emergency}} は動作しません。}}&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|{{ic|rd.emergency}} ではキーボードは動作しないため、使用できません。}}&lt;br /&gt;
&lt;br /&gt;
システムに変更を加えてパニックが起こらないようにするには、root シェルが必要です。パニックが起動時に発生する場合、マシンがデッドロックする前に root シェルに入るための戦略が複数あります:&lt;br /&gt;
&lt;br /&gt;
* カーネルパラメータ {{ic|emergency}} か {{ic|rd.emergency}} か {{ic|-b}} を設定して再起動する。これで、root ファイルシステムがマウントされて {{ic|systemd}} が起動した直後にログインプロンプトが表示されます。&lt;br /&gt;
&lt;br /&gt;
: {{Note|この時点では、root ファイルシステムは&#039;&#039;&#039;読み取り専用&#039;&#039;&#039;でマウントされます。ファイルシステムに変更を加えるには、{{ic|mount -o remount,rw /}} を root ユーザとして実行してください。}}&lt;br /&gt;
&lt;br /&gt;
* カーネルパラメータ {{ic|rescue}}、{{ic|rd.rescue}}、{{ic|single}}、{{ic|s}}、{{ic|S}}、{{ic|1}} のどれか設定して再起動する。これで、ローカルのファイルシステムがマウントされた直後にログインプロンプトが表示されます。&lt;br /&gt;
* カーネルパラメータ {{ic|1=systemd.debug_shell}} を設定して再起動する。これで、非常に初期の root シェルが tty9 で表示されます。{{ic|Ctrl+Alt+F9}} を押してそのシェルに切り替えてください。&lt;br /&gt;
* パニックを引き起こしているカーネルの機能を無効化するために、異なるカーネルパラメータの組で再起動して実験する。&amp;quot;定番&amp;quot; の {{ic|1=acpi=off}} と {{ic|nolapic}} を試してみてください。&lt;br /&gt;
&lt;br /&gt;
: {{Tip|すべてのカーネルパラメータは [https://docs.kernel.org/admin-guide/kernel-parameters.html kernel-parameters.html] を参照して下さい。}}&lt;br /&gt;
&lt;br /&gt;
* 最後の手段として、[[インストールガイド#インストールメディアの準備|Arch Linux インストールメディア]]を起動し、ルートファイルシステムを {{ic|/mnt}} にマウントし、{{ic|arch-chroot /mnt}} を root ユーザとして実行する。&lt;br /&gt;
* パニックを引き起こしているサービスやプログラムを無効化する。不具合のあるアップデートをロールバックする。設定の問題を修正する。&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[Wikipedia:Initial ramdisk|初期 RAM ディスク]]イメージが破損している場合、新しいイメージを生成する必要があるかもしれません。イメージの破損は、カーネルアップデートが中断された場合に起こる可能性があります。新しいイメージを作成する方法は、[[mkinitcpio#イメージ作成とアクティベーション]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== リグレッションをデバッグする ===&lt;br /&gt;
&lt;br /&gt;
[[一般的なトラブルシューティング#リグレッションをデバッグする]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{AUR|linux-mainline}} を試して、その問題が既に上流で修正されているかどうかを確認してください。ピン留めされたコメントは既にビルドされたカーネルを含むリポジトリにも言及しているので、時間がかかる手動でのビルドは必要ないかもしれません。&lt;br /&gt;
&lt;br /&gt;
最近発生しなかった問題をデバッグするために LTS カーネル ({{Pkg|linux-lts}}) を試してみることも検討する価値があるかもしれません。LTS カーネルの古いバージョンは [[Arch Linux Archive]] で見つけることができます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
引き続き問題が発生する場合は、{{AUR|linux-git}} カーネルを [[bisect]] し、Linux カーネルにおける[https://docs.kernel.org/admin-guide/reporting-regressions.html リグレッション報告]の方法に従ってバグを報告してください。[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/MAINTAINERS {{ic|MAINTAINERS}}] ファイル内の Bugtracker ({{ic|B:}}) エントリによっては、サブシステムのメーリングリスト、Kernel Bugzilla、あるいは DRM Gitlab などの他のイシュートラッカーでイシューを開く必要があります。パッチと関係ないことを確認するために、パッチなしの &amp;quot;バニラ&amp;quot;バージョンを試すことが重要です。もしパッチが問題を引き起こすなら、そのパッチの作者に報告してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|カーネルの bisect は何度も作り直さなければならないので、かなりの時間がかかるかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
==== より小さなカーネルを構築する ====&lt;br /&gt;
&lt;br /&gt;
[[modprobed-db]] か {{ic|make localmodconfig}} を使って、ローカルシステムに必要なモジュールだけをビルドしたり、によってカーネルビルド時間を短縮したりできます。もちろん、ネットワークの問題をデバッグするために、サウンドドライバなど、無関係なドライバを完全に削除することも可能です。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.kroah.com/lkn/ O&#039;Reilly - Linux Kernel in a Nutshell] (フリーの電子書籍)&lt;br /&gt;
* [http://kroah.com/log/blog/2018/08/24/what-stable-kernel-should-i-use/ What stable kernel should I use?] by Greg Kroah-Hartman&lt;br /&gt;
* [https://docs.kernel.org/index.html Linux カーネルのドキュメント]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Kernel|2026-04-12|870571}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0&amp;diff=41443</id>
		<title>環境変数</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0&amp;diff=41443"/>
		<updated>2026-03-29T09:32:42Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: リンクを修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:システム管理]]&lt;br /&gt;
[[de:Umgebungsvariablen]]&lt;br /&gt;
[[en:Environment variables]]&lt;br /&gt;
[[es:Environment variables]]&lt;br /&gt;
[[hu:Environment variables]]&lt;br /&gt;
[[pt:Environment variables]]&lt;br /&gt;
[[ru:Environment variables]]&lt;br /&gt;
[[zh-hans:Environment variables]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|デフォルトアプリケーション}}&lt;br /&gt;
{{Related|systemd/ユーザー#環境変数}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
環境変数は、1つ以上のアプリケーションによって使用されるデータを含む名前付きのオブジェクトです。簡単に言えば、名前と値を持つ変数です。環境変数の値には、例えばファイルシステム内のすべての実行可能ファイルの場所、使用すべきデフォルトのエディタ、またはシステムロケールの設定などが含まれます。Linux に不慣れなユーザーは、このような設定の管理方法を少し扱いづらいと感じることがよくあります。しかし、環境変数は、複数のアプリケーションやプロセス間で設定を共有する簡単な方法を提供します。&lt;br /&gt;
&lt;br /&gt;
== ユーティリティ ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|coreutils}} パッケージには {{man|1|printenv}} と {{man|1|env}} というプログラムが含まれています。現在の環境変数とその値を一覧表示するには:&lt;br /&gt;
&lt;br /&gt;
 $ printenv&lt;br /&gt;
&lt;br /&gt;
{{Note|環境変数の中にはユーザ個別のものも存在します。{{ic|printenv}} の出力を非特権ユーザの場合と root ユーザの場合で比較して確認してみましょう。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;env&#039;&#039; ユーティリティを使うことで、環境変数を変更してコマンドを実行することができます。以下の例では、環境変数 {{ic|EDITOR}} を {{ic|vim}} に設定して &#039;&#039;xterm&#039;&#039; を起動します。以下のコマンドを実行しても、グローバルな {{ic|EDITOR}} 変数には影響を与えません。&lt;br /&gt;
&lt;br /&gt;
 $ env EDITOR=vim xterm&lt;br /&gt;
&lt;br /&gt;
[[シェル]] の {{man|1p|set}} 組み込みコマンドを使えば、シェルオプションの値を変更したり、位置のパラメータを設定したり、シェル変数の名前とその値を出力したりできます。&lt;br /&gt;
&lt;br /&gt;
各プロセスはその環境変数を {{ic|/proc/$PID/environ}} ファイルに保存しています。このファイルには、ヌル文字 ({{ic|\x0}}) で区切られたキーと値のペアが含まれています。[[sed]] を使用すると、より読み易い形式で取得できます。例: {{ic|sed &#039;s:\x0:\n:g&#039; /proc/$PID/environ}}。&lt;br /&gt;
&lt;br /&gt;
== 変数の定義 ==&lt;br /&gt;
&lt;br /&gt;
環境を不必要に汚染しないために、変数のスコープを制限するように努めるべきです。実際、グラフィカルセッションや systemd サービスでは、変数を有効にするために特定の場所で設定することが要求されます。環境変数のスコープは、それらが影響を与えるコンテキストに分けられます:&lt;br /&gt;
&lt;br /&gt;
* [[#グローバル|グローバル]]: あらゆるユーザが実行する全プログラム。Systemd サービスは含まれません。&lt;br /&gt;
* [[#ユーザーごと|ユーザ別]]: 特定のユーザが実行する全プログラム。Systemd ユーザサービス ([[systemd/ユーザー#環境変数]] を参照) やグラフィカルアプリケーション ([[#グラフィック環境]] を参照) は含まれません。&lt;br /&gt;
&lt;br /&gt;
=== グローバル ===&lt;br /&gt;
&lt;br /&gt;
==== シェルの初期化ファイルを使う ====&lt;br /&gt;
&lt;br /&gt;
大半の Linux ディストリビューションは、あなたに {{ic|/etc/profile}} 等のファイルに環境変数の追加・変更を行うよう指示します。また、{{ic|/etc/locale.conf}} のような変数設定を含むパッケージ固有の設定ファイルがあることも覚えておいてください。環境変数の維持・管理は必ず行い、環境変数を含むことができる多数のファイルに注意を払うようにしてください。原則的に、あらゆるシェルスクリプトは環境変数の初期化に使うことができますが、以下のような UNIX の慣例に従い特定のファイルでのみ行われるべきです。&lt;br /&gt;
&lt;br /&gt;
以下のファイルは、システムのグローバルな環境変数を定義するために使用できますが、それぞれに異なる制限があります:&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/environment}} は [[#pam_env を使う|pam_env モジュール]]によって使用され、シェルに依存しないため、スクリプトやグロブ展開は使用できません。このファイルは、{{ic|1=&#039;&#039;変数=値&#039;&#039;}} という形式しか受け入れません。&lt;br /&gt;
* {{ic|/etc/profile}} は、ログインシェル&#039;&#039;のみ&#039;&#039;に対して変数を初期化します。しかし、このファイルはスクリプト (例: {{ic|/etc/profile.d/}} 内にあるファイル) を実行し、すべての [[wikipedia:ja:Bourne Shell|Bourne shell]] 互換シェルで使用することができます。&lt;br /&gt;
* シェル固有の設定ファイル - [[シェル]]のグローバルな設定ファイルで、変数の初期化やスクリプトの実行を行います。例えば [[Bash#設定ファイル]] (例: {{ic|~/.bashrc}})) や [[Zsh#スタートアップ/シャットダウン ファイル]] (例: {{ic|~/.zshrc}}) です。&lt;br /&gt;
&lt;br /&gt;
以下の Bash ヘルパ関数を使えば、複数のディレクトリを {{ic|PATH}} 環境変数に末尾追加することができます。環境変数を定義しているファイル ({{ic|~/.bashrc}} など) の戦闘にこの関数を追加してください。この関数は、ファイルシステム上に実際に存在するディレクトリのみを追加し、重複するエントリは作成しません。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
add_paths() {&lt;br /&gt;
  for d in &amp;quot;$@&amp;quot;; do&lt;br /&gt;
    [[ -d &amp;quot;$d&amp;quot; &amp;amp;&amp;amp; ! &amp;quot;$PATH&amp;quot; =~ (^|:)$d(:|$) ]] &amp;amp;&amp;amp; PATH=&amp;quot;$PATH:$d&amp;quot;&lt;br /&gt;
  done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
add_paths ~/bin ~/scripts&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ほとんどのシェル (Bash、Zsh、[[fish]] を含む) では、{{ic|export}} コマンドを使って環境に変数を追加することができます。これにより、{{ic|~/my-environment.sh}} などのように通常のファイルで環境変数を定義することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/my-environment.sh|2=&lt;br /&gt;
export EDITOR=vim&lt;br /&gt;
export XDG_CACHE_HOME=&amp;quot;$HOME/.cache&amp;quot;&lt;br /&gt;
export XDG_CONFIG_HOME=&amp;quot;$HOME/.config&amp;quot;&lt;br /&gt;
export XDG_DATA_HOME=&amp;quot;$HOME/.local/share&amp;quot;&lt;br /&gt;
export XDG_STATE_HOME=&amp;quot;$HOME/.local/state&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このファイルは、シェルのスタートアップファイルから source することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bashrc|source ~/my-environment.sh}}&lt;br /&gt;
{{hc|~/.config/fish/config.fish|source ~/my-environment.sh}}&lt;br /&gt;
&lt;br /&gt;
==== pam_env を使う ====&lt;br /&gt;
&lt;br /&gt;
{{man|8|pam_env}} [[PAM]] モジュールは、環境変数の設定を以下のファイルから順番にロードします: {{ic|/etc/security/pam_env.conf}} と {{ic|/etc/environment}} の順です。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* これらのファイルは、他のファイル、特に、{{ic|~/.profile}}、{{ic|~/.bash_profile}}、{{ic|~/.zshenv}} より前に読み込まれます。&lt;br /&gt;
* 非推奨の {{ic|~/.pam_environment}} はもう読み込まれません。{{Bug|68945}} を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/environment}} では、{{ic|1=&#039;&#039;変数&#039;&#039;=&#039;&#039;値&#039;&#039;}} というペアを1行に1つずつ記述しなければなりません。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/environment|2=&lt;br /&gt;
EDITOR=nano&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/security/pam_env.conf}} は以下の形式で記述します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/security/pam_env.conf|2=&lt;br /&gt;
VARIABLE [DEFAULT=&#039;&#039;value&#039;&#039;] [OVERRIDE=&#039;&#039;value&#039;&#039;]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|@{HOME} }} と {{ic|@{SHELL} }} は、{{ic|/etc/passwd}} で定義されているものに拡張される特別な変数です。次の例は、{{ic|HOME}} 環境変数を別の変数に展開する方法を示しています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/security/pam_env.conf|2=&lt;br /&gt;
XDG_CONFIG_HOME   DEFAULT=@{HOME}/.config&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|変数 {{ic|${HOME} }} および {{ic|${SHELL} }} は、{{ic|HOME}} および {{ic|SHELL}} 環境変数にはリンクされていません。これらはデフォルトでは設定されていません。}}&lt;br /&gt;
&lt;br /&gt;
また、この形式では、{{ic|${&#039;&#039;VARIABLE&#039;&#039;} }} を使って、既に定義されている変数を他の変数の値で展開することができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 GOPATH DEFAULT=${XDG_DATA_HOME}/go&lt;br /&gt;
&lt;br /&gt;
{{ic|1=&#039;&#039;VARIABLE&#039;&#039;=&#039;&#039;value&#039;&#039;}} のペアも可能ですが、これらのペアでは変数の展開はサポートされていません。詳しくは {{man|5|pam_env.conf}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ユーザーごと ===&lt;br /&gt;
&lt;br /&gt;
環境変数をグローバルに定義したくないという時もあるでしょう。例えば、{{ic|PATH}} に {{ic|/home/my_user/bin}} を追加したいが、システム上の他のユーザーには同じ {{ic|PATH}} を使って欲しくないという場合が考えられます。様々なファイルを使うことでローカルに環境変数を定義することができます:&lt;br /&gt;
&lt;br /&gt;
* [[シェル]]のユーザ設定ファイル。例えば、[[Bash#設定ファイル]] や [[Zsh#スタートアップ/シャットダウン ファイル]]。&lt;br /&gt;
** あなたが開くターミナル (例: コマンドラインアプリケーションのみ) に変数のスコープを制限しない限り、ログインシェルの変数も変更されます。&lt;br /&gt;
* [[systemd/ユーザー#環境変数|systemd ユーザ環境変数]]は {{ic|~/.config/environment.d/*.conf}} から読み込まれます。&lt;br /&gt;
&lt;br /&gt;
ローカルで使用するディレクトリを {{ic|PATH}} に追加するには、{{ic|~/.bash_profile}} に次のように記述します:&lt;br /&gt;
&lt;br /&gt;
 export PATH=&amp;quot;${PATH}:/home/my_user/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
変数をアップデートするために、再ログインするかファイルを [[source]] してください: {{ic|$ source ~/.bash_profile}}&lt;br /&gt;
&lt;br /&gt;
{{Note|dbus デーモンや systemd のユーザインスタンスは、{{ic|~/.bashrc}} などのような場所で設定された環境変数を継承しません。これはつまり、dbus によってアクティブ化されたプログラム ([[GNOME Files]] など) は、そのような変数をデフォルトで使用しないことを意味します。[[Systemd/ユーザー#環境変数]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|export -p}} を実行することで、ユーザセッションに対して宣言されたグローバルな環境変数とローカルな環境変数を見ることができます。}}&lt;br /&gt;
&lt;br /&gt;
==== グラフィック環境 ====&lt;br /&gt;
&lt;br /&gt;
環境変数がグラフィカルなアプリケーションにしか影響しない場合は、グラフィカルセッション内でのみ設定することにより、その範囲を制限することができます。スコープを大きい順に並べると:&lt;br /&gt;
&lt;br /&gt;
* [[#Xorg セッションごと]] および [[#Wayland セッションごと]] - DE を含むグラフィカルセッション全体に影響します。&lt;br /&gt;
* [[#デスクトップ環境セッションごと]] - グラフィカルセッション内で生成されたアプリケーションに影響を与えます。DE 自体にも影響を与える可能性があります。&lt;br /&gt;
* [[#アプリケーションごと]] - 特定のグラフィカル アプリケーションだけに影響します。&lt;br /&gt;
&lt;br /&gt;
===== デスクトップ環境セッションごと =====&lt;br /&gt;
&lt;br /&gt;
一部のグラフィカル環境 (例えば [[KDE Plasma]]) は、ログイン時のシェルスクリプト実行をサポートしており、環境変数の設定に利用することができます。例としては [[KDE#自動起動]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
===== Xorg セッションごと =====&lt;br /&gt;
&lt;br /&gt;
Xorg セッションの環境を変更する手順は、Xorg セッションの起動方法によって異なります:&lt;br /&gt;
* ほとんどの[[ディスプレイマネージャ]]は [[xprofile]] を読み込みます。&lt;br /&gt;
* [[startx]] と [[SLiM]] は [[xinitrc]] を実行します。&lt;br /&gt;
* [[XDM]] は {{ic|~/.xsession}} を実行します: [[XDM#セッションの定義]] を参照して下さい。&lt;br /&gt;
* [[LightDM]][https://gitlab.archlinux.org/archlinux/packaging/packages/lightdm/-/blob/main/Xsession]、[[Plasma Login Manager]][https://github.com/KDE/plasma-login-manager/blob/master/data/scripts/Xsession]、[[SDDM]][https://github.com/sddm/sddm/blob/master/data/scripts/Xsession] は、ログイン シェルのスタートアップ スクリプトも読み込みます。例えば、[[bash]] の場合は {{ic|~/.bash_profile}}、[[zsh]] の場合は {{ic|~/.zprofile}} および {{ic|~/.zlogin}} です。&lt;br /&gt;
&lt;br /&gt;
スクリプトの終わりはどのファイルであるかに依存し、高度な構文は使用するシェルに依存しますが、基本的な使い方は普遍的です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xprofile, ~/.xinitrc, or ~/.xsession|2=&lt;br /&gt;
...&lt;br /&gt;
export &#039;&#039;GUI_VAR&#039;&#039;=&#039;&#039;value&#039;&#039;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Wayland セッションごと =====&lt;br /&gt;
&lt;br /&gt;
[[Wayland]] は Xorg 関連のファイルを起動しないので、[[GDM]] と [[KDE Plasma]] は代わりに [[systemd/ユーザー#環境変数|systemd ユーザ環境変数]]を読み込みます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/environment.d/envvars.conf|2=&lt;br /&gt;
&#039;&#039;GUI_VAR&#039;&#039;=&#039;&#039;value&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Wayland セッションをサポートする他のディスプレイマネージャ (例: [[SDDM]]) は、まだこれを直接はサポートしていません。しかし、[[LightDM]]、[[Plasma Login Manager]]、[[SDDM]] はログインシェルのスタートアップスクリプトを Wayland セッションでも読み込みます。&lt;br /&gt;
&lt;br /&gt;
[[greetd]] も {{ic|/etc/profile}} および {{ic|~/.profile}} を読み込みます。この動作は、デフォルトで有効になっている {{ic|source_profile}} 設定によって制御されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.bash_profile}} などのスタートアップスクリプトを読み込むディスプレイマネージャを使用していて、{{ic|environment.d}} を使用したい場合、以下のように読み込むことができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bash_profile|&lt;br /&gt;
# systemd-environment-d-generator(8) を使用して環境を生成し、その変数をエクスポートする&lt;br /&gt;
set -o allexport&lt;br /&gt;
source &amp;lt;(/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator)&lt;br /&gt;
set +o allexport&lt;br /&gt;
}}&lt;br /&gt;
{{Note|{{ic|/usr/lib/systemd/user-environment-generators}} にある他のジェネレーター、例えば {{ic|60-flatpak}} は環境変数の値を引用符で囲まない場合があります。この場合、出力は {{ic|export -- &amp;quot;$(/usr/lib/systemd/user-environment-generators/60-flatpak)&amp;quot;}} を使用して読み込む必要があります。}}&lt;br /&gt;
&lt;br /&gt;
===== アプリケーションごと =====&lt;br /&gt;
&lt;br /&gt;
セッション全体ではなく、特定のアプリケーションにのみ環境変数を設定するには、そのアプリケーションの &#039;&#039;.desktop&#039;&#039; ファイルを編集してください。その方法は [[デスクトップエントリ#環境変数の変更]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
[[Steam]] ゲームでは、起動オプションを編集することでプログラムの環境を設定することができます。[[Steam#起動オプション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== セッションまたはシェルごと ===&lt;br /&gt;
&lt;br /&gt;
時として、一時的な変数のみが必要である場合もあります。特定のディレクトリ内の実行ファイルを実行する際に一時的に絶対パスを入力する手間を省きたい場合や、一時的な短いシェルスクリプトでそのパスを使用したい場合があるでしょう。&lt;br /&gt;
&lt;br /&gt;
例えば、セッション固有のディレクトリを {{ic|PATH}} に追加するには:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;${PATH}:/home/my_user/tmp/usr/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
シェル固有のディレクトリのみを {{ic|PATH}} に追加するには:&lt;br /&gt;
&lt;br /&gt;
 $ PATH=&amp;quot;${PATH}:/home/my_user/tmp/usr/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Bash では、{{ic|PATH}} は既にデフォルトで export されているので、上記のどちらの方法を用いても、変数を上書きしない限り、変数の変更がサブプロセスから見えてしまいます。export された変数とされていない変数の違いをよりわかりやすく比較するには、以下を実行してみてください:&lt;br /&gt;
&lt;br /&gt;
 $ MYVAR=&amp;quot;shell-only&amp;quot;&lt;br /&gt;
 $ bash -c &#039;echo $MYVAR&#039;  # 何も表示されない&lt;br /&gt;
 &lt;br /&gt;
 $ export MYVAR=&amp;quot;session-wide&amp;quot;&lt;br /&gt;
 $ bash -c &#039;echo $MYVAR&#039;  # 表示される。すなわち、セッション全体に反映されている&lt;br /&gt;
&lt;br /&gt;
== 例 ==&lt;br /&gt;
&lt;br /&gt;
以下のセクションでは Linux システムで一般的に使われている環境変数を並べており、それぞれの値について説明しています。&lt;br /&gt;
&lt;br /&gt;
=== デスクトップ環境の検出 ===&lt;br /&gt;
&lt;br /&gt;
; XDG_CURRENT_DESKTOP:&lt;br /&gt;
コロンで区切られた文字列リストを含む [[freedesktop.org]] 変数。現在の[[デスクトップ環境]]を示します[https://specifications.freedesktop.org/mime-apps-spec/latest/file.html]。活発に開発されているデスクトップ環境の標準化された値として次があります: {{ic|GNOME}}、{{ic|GNOME-Flashback}}、{{ic|KDE}}、{{ic|LXDE}}、{{ic|LXQt}}、{{ic|MATE}}、{{ic|TDE}}、{{ic|Unity}}、{{ic|XFCE}}、{{ic|EDE}}、{{ic|Cinnamon}}、{{ic|Pantheon}}、{{ic|DDE}} [https://specifications.freedesktop.org/menu-spec/latest/onlyshowin-registry.html]。&lt;br /&gt;
{{Tip|&lt;br /&gt;
* Cinnamon は、他のデスクトップ環境[https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/commit/be0c630a19aa1788ef731def911770ce497d6ba3 より後に]登録されました。そのため、[[Qt]][https://github.com/qt/qtbase/blob/dev/src/gui/platform/unix/qgenericunixtheme.cpp#L156] など一部のソフトウェアは、登録前の値である {{ic|X-CINNAMON}} を期待します。&lt;br /&gt;
* {{ic|Hyprland}} は、[[Hyprland]] 用として非公式に認められています。&lt;br /&gt;
}}&lt;br /&gt;
; XDG_SESSION_DESKTOP:&lt;br /&gt;
{{ic|XDG_CURRENT_DESKTOP}} と似ていますが、単一の文字列しか許可しません。その名前にも関わらず、[https://gitlab.gnome.org/GNOME/gtk/-/issues/1224#note_270915 これは freedesktop.org によって標準化されたものではありません]。&lt;br /&gt;
; DE:&lt;br /&gt;
使用中のデスクトップ環境 (&#039;&#039;d&#039;&#039;esktop &#039;&#039;e&#039;&#039;nvironment) を示すレガシーな変数です。どのような値を取りうるかについての中心的なドキュメントはありませんが、[[xdg-utils#環境変数|xdg-utils]] は多くのデスクトップ環境についてのリファレンスを提供しています。&lt;br /&gt;
; DESKTOP_SESSION:&lt;br /&gt;
これもレガシーな変数です。{{ic|DE}} に似ていますが、それよりは一般的ではありません。セッションの ({{ic|/usr/share/xsessions/}} 内の) [[デスクトップエントリ]]へのパスを格納できます [https://github.com/qt/qtbase/blob/6.3/src/gui/platform/unix/qgenericunixservices.cpp#L92-L107]。&lt;br /&gt;
; WINDOW_MANAGER:&lt;br /&gt;
デスクトップ環境で使用する[[ウィンドウマネージャ]]を&#039;&#039;選択&#039;&#039;するために時々使われる変数です。他のプログラムが読み取るために、既に選択されているディスプレイマネージャやデスクトップ環境によって設定される他の変数とは対照的です。&lt;br /&gt;
; DISPLAY:&lt;br /&gt;
ホスト、ディスプレイ、スクリーンを指定するために X Window System によって使用されます。形式は {{ic|&#039;&#039;ホスト名&#039;&#039;:&#039;&#039;ディスプレイ&#039;&#039;.&#039;&#039;スクリーン&#039;&#039;}} です。ディスプレイとは、共通の入力デバイス群 (キーボードやマウスなど) を共有するスクリーンの集まりを指します。ホスト名は、ディスプレイが接続されるマシンの名前を指定するためにかつて使用されていましたが、X クライアントと同じコンピュータ上で X サーバが実行される場合は空欄になっているはずです。詳細は {{man|7|X}} を参照してください。&lt;br /&gt;
; WAYLAND_DISPLAY:&lt;br /&gt;
Wayland における {{ic|DISPLAY}} のようなものです。コンポジタによって設定されます。これが設定されていない場合、アプリケーションは {{ic|wayland-0}} を使おうと試みます。&lt;br /&gt;
; XAUTHORITY:&lt;br /&gt;
{{ic|.Xauthority}} ファイルへのパスです。このファイルには、X Window Server にアクセスするための資格情報が入っています。これは、認証のために X サーバに送られるクッキー (任意のデータ) の形で保存されます (例: {{ic|MIT-MAGIC-COOKIE-1}})。&lt;br /&gt;
&lt;br /&gt;
=== システムやセッションのパス ===&lt;br /&gt;
&lt;br /&gt;
; HOME:&lt;br /&gt;
現在のユーザのホームディレクトリへのパスが格納されます。この変数は、アプリケーションが現在のユーザに関連した設定ファイル等を見つけるために使うことができます。&lt;br /&gt;
; PATH:&lt;br /&gt;
コロンで区切られたディレクトリのリストが格納されています。システムは、この変数に登録されているディレクトリから実行ファイルを探索します。通常のコマンド (&#039;&#039;ls&#039;&#039;、&#039;&#039;systemctl&#039;&#039;、&#039;&#039;pacman&#039;&#039; など) がシェル (&#039;&#039;bash&#039;&#039; や &#039;&#039;zsh&#039;&#039; など) によって解釈される際、シェルは {{ic|PATH}} のリスト内のディレクトリからそのコマンドと同じ名前の実行ファイルを探索し、それを実行します。{{ic|PATH}} に含まれないディレクトリにある実行ファイルを実行するには、実行ファイルへの相対パスや絶対パスを指定する必要があります。例えば、{{ic|./a.out}} や {{ic|/bin/ls}} といった形です。&lt;br /&gt;
{{Note|セキュリティ上の理由により {{ic|PATH}} にはカレント作業ディレクトリ ({{ic|.}}) を含めないことが推奨されます。ユーザが騙されて、悪意のあるコマンドを実行してしまうかもしれないからです。}}&lt;br /&gt;
; PWD:&lt;br /&gt;
[[Wikipedia:ja:Pwd|作業ディレクトリへのパス]]が入ります。&lt;br /&gt;
; OLDPWD:&lt;br /&gt;
前の作業ディレクトリへのパスが入ります。つまり、最後に &#039;&#039;cd&#039;&#039; を実行する前の {{ic|PWD}} です。&lt;br /&gt;
; MAIL:&lt;br /&gt;
受信したメールの保存場所が入ります。伝統的な設定は {{ic|/var/spool/mail/$LOGNAME}} です。&lt;br /&gt;
&lt;br /&gt;
=== ネットワークプロキシ ===&lt;br /&gt;
&lt;br /&gt;
; ftp_proxy:&lt;br /&gt;
FTP [[プロキシサーバー]]が入ります。&lt;br /&gt;
 ftp_proxy=&amp;quot;&amp;lt;nowiki&amp;gt;ftp://192.168.0.1:21&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
;http_proxy:&lt;br /&gt;
HTTP [[プロキシサーバー]]が入ります。&lt;br /&gt;
 http_proxy=&amp;quot;&amp;lt;nowiki&amp;gt;http://192.168.0.1:80&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ドキュメントのパス ===&lt;br /&gt;
&lt;br /&gt;
; MANPATH:&lt;br /&gt;
&#039;&#039;man&#039;&#039; が man ページを探索するディレクトリのリストがコンマで区切られて格納されます。&lt;br /&gt;
{{Note|{{ic|/etc/profile}} に &amp;quot;Man is much better than us at figuring this out&amp;quot; (man は我々よりずっと上手くこれを解決する) と書いてあるとおり、一般的にこの変数はデフォルトのままにしておくべきです。 {{man|5|manpath}} を参照。}}&lt;br /&gt;
; INFODIR:&lt;br /&gt;
&#039;&#039;info&#039;&#039; コマンドが info ページを探索するディレクトリのリストがコンマで区切られて格納されます。例: {{ic|/usr/share/info:/usr/local/share/info}}。&lt;br /&gt;
&lt;br /&gt;
=== デフォルトプログラム ===&lt;br /&gt;
&lt;br /&gt;
; SHELL:&lt;br /&gt;
ユーザの[https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap08.html#tag_08_03 優先シェル]へのパスが含まれます。この変数の値は、現在実行中のシェルである必要はないことに注意してください。この変数に値がない場合、[[Bash]] は自動的に {{ic|/etc/passwd}} で定義されているユーザのログインシェルに設定するか、判断できない場合は {{ic|/bin/sh}} にします。&lt;br /&gt;
; PAGER:&lt;br /&gt;
ファイルの内容を一覧表示するために使用されるプログラムを実行するコマンドが含まれます。例: {{ic|/bin/less}}。&lt;br /&gt;
; EDITOR:&lt;br /&gt;
ファイルの編集に使用される軽量プログラムを実行するコマンドが含まれています (例:{{ic|/usr/bin/nano}})。例えば、以下の例のように、[[X]] 下では &#039;&#039;gedit&#039;&#039; を使い、それ以外では &#039;&#039;nano&#039;&#039; を使うように設定するインタラクティブスイッチを記述することができます:&lt;br /&gt;
 [ -n &amp;quot;$DISPLAY&amp;quot; ] &amp;amp;&amp;amp; export EDITOR=gedit || export EDITOR=nano&lt;br /&gt;
; VISUAL:&lt;br /&gt;
メールの編集などより高度な作業に使われる本格的なエディタを実行するコマンドが含まれています (例: {{ic|vi}}、[[vim]]、[[emacs]] など)。&lt;br /&gt;
; TERMINAL:&lt;br /&gt;
ユーザの優先ターミナルエミュレータを実行するコマンドが含まれます。これは、現在実行中のターミナル ({{ic|TERM}}) と同じであるとは限りません。&lt;br /&gt;
; BROWSER:&lt;br /&gt;
ウェブブラウザへのパスが含まれています。グラフィカル環境 ([[X]] など) が利用できるかに応じてこの変数を動的に変更するようなコードをインタラクティブシェルの設定ファイルに記述しておくと便利です:&lt;br /&gt;
 [ -n &amp;quot;$DISPLAY&amp;quot; ] &amp;amp;&amp;amp; export BROWSER=firefox || export BROWSER=links&lt;br /&gt;
{{Tip|{{ic|WAYLAND_DISPLAY}} 環境変数を使うことで、[[Wayland#コンポジタ|Wayland コンポジタ]]が実行されているかどうかに応じてこれらのデフォルトプログラムを設定することができます。}}&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
&lt;br /&gt;
; TERM:&lt;br /&gt;
実行中のターミナル (&#039;&#039;term&#039;&#039;inal) の種類が格納されます (例: {{ic|xterm-256color}})。この変数は、ターミナル固有の機能を期待する、ターミナル内で実行されるプログラムによって使用されます ({{man|5|terminfo}} を参照)。この変数は、ターミナルエミュレータによって設定されるため、シェルから上書きすることは推奨されません。&lt;br /&gt;
; TZ:&lt;br /&gt;
ユーザ毎にシステムのタイムゾーンとは異なるタイムゾーンを設定するために使用することができます。{{ic|/usr/share/zoneinfo/}} 内にはタイムゾーンが列挙されているので、これをリファレンスとして使用することができます (例: {{ic|1=TZ=&amp;quot;:/usr/share/zoneinfo/Pacific/Fiji&amp;quot;}})。{{ic|TZ}} 変数に zoneinfo ファイルを指定する場合、[https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html GNU マニュアル] に従ってコロンで始める必要があります。&lt;br /&gt;
&lt;br /&gt;
=== シェル環境の検出 ===&lt;br /&gt;
&lt;br /&gt;
シェル環境を検出するテストは、[https://gitlab.com/jdorel-documentation/shell-environment-detection シェル環境の検出に関して書かれたリポジトリ]を見てください。これには、ログイン/インタラクティブシェル、Xorg セッション、TTY、SSH セッションの検出も含まれています。 &lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Gentoo:Handbook:X86/Working/EnvVar]]&lt;br /&gt;
* [https://help.ubuntu.com/community/EnvironmentVariables Ubuntu Community Wiki - Environment Variables]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Environment variables|2026-03-29|869026}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Plasma_Login_Manager&amp;diff=41442</id>
		<title>Plasma Login Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Plasma_Login_Manager&amp;diff=41442"/>
		<updated>2026-03-29T09:31:47Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: ページの作成:「Category:KDE Category:ディスプレイマネージャ en:Plasma Login Manager it:Plasma Login Manager zh-hans:Plasma Login Manager {{Related articles start}} {{Related|ディスプレイマネージャ}} {{Related|KDE}} {{Related articles end}}  [https://invent.kde.org/plasma/plasma-login-manager/ Plasma Login Manager 上流]のページより (日訳):  :Plasma Login は、KDE Plasma のためのディスプレイマネージャを提供…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:KDE]]&lt;br /&gt;
[[Category:ディスプレイマネージャ]]&lt;br /&gt;
[[en:Plasma Login Manager]]&lt;br /&gt;
[[it:Plasma Login Manager]]&lt;br /&gt;
[[zh-hans:Plasma Login Manager]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ディスプレイマネージャ}}&lt;br /&gt;
{{Related|KDE}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://invent.kde.org/plasma/plasma-login-manager/ Plasma Login Manager 上流]のページより (日訳):&lt;br /&gt;
&lt;br /&gt;
:Plasma Login は、KDE Plasma のための[[ディスプレイマネージャ]]を提供します。[[SDDM]] からフォークされ、greeter、壁紙プラグインの統合、システム設定モジュール ([[KDE#KCM|KCM]]) を提供する新しいフロントエンドを搭載しています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|plasma-login-manager}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
[[ディスプレイマネージャ#ディスプレイマネージャをロードする]] に従って Plasma Login Manager を起動時に起動してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
SDDM から移行する場合は、先に {{ic|sddm.service}} を[[無効化]]することを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
移行完了後、コマンド {{ic|userdel -r sddm}} を root ユーザとして実行することで、もはや使用されない {{ic|sddm}} ユーザをクリーンアップし削除することもできます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
インストール後、システム設定アプリに &#039;&#039;Login Screen&#039;&#039; という新しいセクションが追加されます。ここから、設定をグラフィカルに行うことができます。&lt;br /&gt;
&lt;br /&gt;
手動で設定を変更するには、設定ファイル {{ic|/etc/plasmalogin.conf}} を作成してください。あるいは、{{ic|/etc/plasmalogin.conf.d/}} 内に設定ファイルを追加してください。&lt;br /&gt;
&lt;br /&gt;
=== カスタム壁紙のプラグイン ===&lt;br /&gt;
&lt;br /&gt;
Plasma Login Manager の KCM (システム設定モジュール) には、サードパーティあるいはカスタムの壁紙プラグインが ({{ic|/usr/share/plasma/wallpapers/}} に正しくインストールされていたとしても) 表示されない場合があります。&lt;br /&gt;
&lt;br /&gt;
そのような場合にカスタムの壁紙プラグインを使用するには、設定ファイルでプラグイン ID を手動で指定してください。プラグイン ID を調べてください ({{ic|/usr/share/plasma/wallpapers/}} 内のフォルダ名、あるいはプラグインの {{ic|metadata.json}} ファイル内の {{ic|Id}} フィールドです)。設定ファイルを以下のように[[編集]]してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/plasmalogin.conf|2=&lt;br /&gt;
[Greeter]&lt;br /&gt;
WallpaperPluginId=&#039;&#039;your.plugin.id&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ファイルを保存し、変更を適用するためにログアウトか再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== 自動ログイン ===&lt;br /&gt;
&lt;br /&gt;
Plasma Login は、設定ファイルで自動ログインを設定できます。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/plasmalogin.conf.d/autologin.conf|2=&lt;br /&gt;
[Autologin]&lt;br /&gt;
User=john&lt;br /&gt;
Session=plasma.desktop&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この設定により、システムのブート時に KDE Plasma セッションが {{ic|john}} ユーザで開始されます。使用できるセッションの種類は、X については {{ic|/usr/share/xsessions/}} で、Wayland については {{ic|/usr/share/wayland-sessions/}} で確認できます。&lt;br /&gt;
&lt;br /&gt;
セッションをロックすると同時に KDE Plasma に自動的にログインするには (自動起動されたアプリの準備ができるまで待つためなど)、[[KDE#ロックスクリーン]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== パスワードレスログイン ===&lt;br /&gt;
&lt;br /&gt;
Plasma Login では、パスワードなしで一部のアカウントにログインできるようにすることができます。これは、ユーザはログインするアカウントを選択する必要のある自動ログインとは異なり、またアカウントのパスワードを空の文字列する (この場合、インタラクティブユーザしかログインできず、[[SSH]] 経由などリモートユーザはログインできません) こととも異なります。&lt;br /&gt;
&lt;br /&gt;
Plasma Login は [[PAM]] を経由するため、PAM 用の Plasma Login 設定ファイル {{ic|/etc/pam.d/plasmalogin}} を作成する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pam.d/plasmalogin|2=&lt;br /&gt;
#%PAM-1.0&lt;br /&gt;
auth       sufficient   pam_succeed_if.so user ingroup nopasswdlogin&lt;br /&gt;
auth       include      system-login&lt;br /&gt;
account    include      system-login&lt;br /&gt;
session    include      system-login&lt;br /&gt;
password   include      system-login&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
KDE Plasma のロックスクリーンをパスワードなしでアンロックできるようにするために、PAM 用の KDE 設定ファイル {{ic|/etc/pam.d/kde}} も作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pam.d/kde|2=&lt;br /&gt;
#%PAM-1.0&lt;br /&gt;
auth       sufficient   pam_succeed_if.so user ingroup nopasswdlogin&lt;br /&gt;
auth       include      system-login&lt;br /&gt;
account    include      system-login&lt;br /&gt;
session    include      system-login&lt;br /&gt;
password   include      system-login&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
さらに、パスワードを入力せずにインタラクティブにログインできるようにするために、{{ic|nopasswdlogin}} [[ユーザグループ]]に自身のユーザを追加する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== ログイン時に KDE Wallet を自動的にアンロックする ===&lt;br /&gt;
&lt;br /&gt;
[[KDE Wallet#ログイン時に KDE ウォレットを自動的にアンロック]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Arch ブートプロセス]]&lt;br /&gt;
* [[:Category:ブートスプラッシュ]] — ブート過程の見た目をよりスムーズに変化させるために&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Plasma Login Manager|2026-03-29|868599}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0&amp;diff=41441</id>
		<title>環境変数</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0&amp;diff=41441"/>
		<updated>2026-03-29T08:59:08Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: /* デスクトップ環境の検出 */ 修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:システム管理]]&lt;br /&gt;
[[de:Umgebungsvariablen]]&lt;br /&gt;
[[en:Environment variables]]&lt;br /&gt;
[[es:Environment variables]]&lt;br /&gt;
[[hu:Environment variables]]&lt;br /&gt;
[[pt:Environment variables]]&lt;br /&gt;
[[ru:Environment variables]]&lt;br /&gt;
[[zh-hans:Environment variables]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|デフォルトアプリケーション}}&lt;br /&gt;
{{Related|systemd/ユーザー#環境変数}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
環境変数は、1つ以上のアプリケーションによって使用されるデータを含む名前付きのオブジェクトです。簡単に言えば、名前と値を持つ変数です。環境変数の値には、例えばファイルシステム内のすべての実行可能ファイルの場所、使用すべきデフォルトのエディタ、またはシステムロケールの設定などが含まれます。Linux に不慣れなユーザーは、このような設定の管理方法を少し扱いづらいと感じることがよくあります。しかし、環境変数は、複数のアプリケーションやプロセス間で設定を共有する簡単な方法を提供します。&lt;br /&gt;
&lt;br /&gt;
== ユーティリティ ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|coreutils}} パッケージには {{man|1|printenv}} と {{man|1|env}} というプログラムが含まれています。現在の環境変数とその値を一覧表示するには:&lt;br /&gt;
&lt;br /&gt;
 $ printenv&lt;br /&gt;
&lt;br /&gt;
{{Note|環境変数の中にはユーザ個別のものも存在します。{{ic|printenv}} の出力を非特権ユーザの場合と root ユーザの場合で比較して確認してみましょう。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;env&#039;&#039; ユーティリティを使うことで、環境変数を変更してコマンドを実行することができます。以下の例では、環境変数 {{ic|EDITOR}} を {{ic|vim}} に設定して &#039;&#039;xterm&#039;&#039; を起動します。以下のコマンドを実行しても、グローバルな {{ic|EDITOR}} 変数には影響を与えません。&lt;br /&gt;
&lt;br /&gt;
 $ env EDITOR=vim xterm&lt;br /&gt;
&lt;br /&gt;
[[シェル]] の {{man|1p|set}} 組み込みコマンドを使えば、シェルオプションの値を変更したり、位置のパラメータを設定したり、シェル変数の名前とその値を出力したりできます。&lt;br /&gt;
&lt;br /&gt;
各プロセスはその環境変数を {{ic|/proc/$PID/environ}} ファイルに保存しています。このファイルには、ヌル文字 ({{ic|\x0}}) で区切られたキーと値のペアが含まれています。[[sed]] を使用すると、より読み易い形式で取得できます。例: {{ic|sed &#039;s:\x0:\n:g&#039; /proc/$PID/environ}}。&lt;br /&gt;
&lt;br /&gt;
== 変数の定義 ==&lt;br /&gt;
&lt;br /&gt;
環境を不必要に汚染しないために、変数のスコープを制限するように努めるべきです。実際、グラフィカルセッションや systemd サービスでは、変数を有効にするために特定の場所で設定することが要求されます。環境変数のスコープは、それらが影響を与えるコンテキストに分けられます:&lt;br /&gt;
&lt;br /&gt;
* [[#グローバル|グローバル]]: あらゆるユーザが実行する全プログラム。Systemd サービスは含まれません。&lt;br /&gt;
* [[#ユーザーごと|ユーザ別]]: 特定のユーザが実行する全プログラム。Systemd ユーザサービス ([[systemd/ユーザー#環境変数]] を参照) やグラフィカルアプリケーション ([[#グラフィック環境]] を参照) は含まれません。&lt;br /&gt;
&lt;br /&gt;
=== グローバル ===&lt;br /&gt;
&lt;br /&gt;
==== シェルの初期化ファイルを使う ====&lt;br /&gt;
&lt;br /&gt;
大半の Linux ディストリビューションは、あなたに {{ic|/etc/profile}} 等のファイルに環境変数の追加・変更を行うよう指示します。また、{{ic|/etc/locale.conf}} のような変数設定を含むパッケージ固有の設定ファイルがあることも覚えておいてください。環境変数の維持・管理は必ず行い、環境変数を含むことができる多数のファイルに注意を払うようにしてください。原則的に、あらゆるシェルスクリプトは環境変数の初期化に使うことができますが、以下のような UNIX の慣例に従い特定のファイルでのみ行われるべきです。&lt;br /&gt;
&lt;br /&gt;
以下のファイルは、システムのグローバルな環境変数を定義するために使用できますが、それぞれに異なる制限があります:&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/environment}} は [[#pam_env を使う|pam_env モジュール]]によって使用され、シェルに依存しないため、スクリプトやグロブ展開は使用できません。このファイルは、{{ic|1=&#039;&#039;変数=値&#039;&#039;}} という形式しか受け入れません。&lt;br /&gt;
* {{ic|/etc/profile}} は、ログインシェル&#039;&#039;のみ&#039;&#039;に対して変数を初期化します。しかし、このファイルはスクリプト (例: {{ic|/etc/profile.d/}} 内にあるファイル) を実行し、すべての [[wikipedia:ja:Bourne Shell|Bourne shell]] 互換シェルで使用することができます。&lt;br /&gt;
* シェル固有の設定ファイル - [[シェル]]のグローバルな設定ファイルで、変数の初期化やスクリプトの実行を行います。例えば [[Bash#設定ファイル]] (例: {{ic|~/.bashrc}})) や [[Zsh#スタートアップ/シャットダウン ファイル]] (例: {{ic|~/.zshrc}}) です。&lt;br /&gt;
&lt;br /&gt;
以下の Bash ヘルパ関数を使えば、複数のディレクトリを {{ic|PATH}} 環境変数に末尾追加することができます。環境変数を定義しているファイル ({{ic|~/.bashrc}} など) の戦闘にこの関数を追加してください。この関数は、ファイルシステム上に実際に存在するディレクトリのみを追加し、重複するエントリは作成しません。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
add_paths() {&lt;br /&gt;
  for d in &amp;quot;$@&amp;quot;; do&lt;br /&gt;
    [[ -d &amp;quot;$d&amp;quot; &amp;amp;&amp;amp; ! &amp;quot;$PATH&amp;quot; =~ (^|:)$d(:|$) ]] &amp;amp;&amp;amp; PATH=&amp;quot;$PATH:$d&amp;quot;&lt;br /&gt;
  done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
add_paths ~/bin ~/scripts&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ほとんどのシェル (Bash、Zsh、[[fish]] を含む) では、{{ic|export}} コマンドを使って環境に変数を追加することができます。これにより、{{ic|~/my-environment.sh}} などのように通常のファイルで環境変数を定義することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/my-environment.sh|2=&lt;br /&gt;
export EDITOR=vim&lt;br /&gt;
export XDG_CACHE_HOME=&amp;quot;$HOME/.cache&amp;quot;&lt;br /&gt;
export XDG_CONFIG_HOME=&amp;quot;$HOME/.config&amp;quot;&lt;br /&gt;
export XDG_DATA_HOME=&amp;quot;$HOME/.local/share&amp;quot;&lt;br /&gt;
export XDG_STATE_HOME=&amp;quot;$HOME/.local/state&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このファイルは、シェルのスタートアップファイルから source することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bashrc|source ~/my-environment.sh}}&lt;br /&gt;
{{hc|~/.config/fish/config.fish|source ~/my-environment.sh}}&lt;br /&gt;
&lt;br /&gt;
==== pam_env を使う ====&lt;br /&gt;
&lt;br /&gt;
{{man|8|pam_env}} [[PAM]] モジュールは、環境変数の設定を以下のファイルから順番にロードします: {{ic|/etc/security/pam_env.conf}} と {{ic|/etc/environment}} の順です。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* これらのファイルは、他のファイル、特に、{{ic|~/.profile}}、{{ic|~/.bash_profile}}、{{ic|~/.zshenv}} より前に読み込まれます。&lt;br /&gt;
* 非推奨の {{ic|~/.pam_environment}} はもう読み込まれません。{{Bug|68945}} を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/environment}} では、{{ic|1=&#039;&#039;変数&#039;&#039;=&#039;&#039;値&#039;&#039;}} というペアを1行に1つずつ記述しなければなりません。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/environment|2=&lt;br /&gt;
EDITOR=nano&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/security/pam_env.conf}} は以下の形式で記述します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/security/pam_env.conf|2=&lt;br /&gt;
VARIABLE [DEFAULT=&#039;&#039;value&#039;&#039;] [OVERRIDE=&#039;&#039;value&#039;&#039;]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|@{HOME} }} と {{ic|@{SHELL} }} は、{{ic|/etc/passwd}} で定義されているものに拡張される特別な変数です。次の例は、{{ic|HOME}} 環境変数を別の変数に展開する方法を示しています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/security/pam_env.conf|2=&lt;br /&gt;
XDG_CONFIG_HOME   DEFAULT=@{HOME}/.config&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|変数 {{ic|${HOME} }} および {{ic|${SHELL} }} は、{{ic|HOME}} および {{ic|SHELL}} 環境変数にはリンクされていません。これらはデフォルトでは設定されていません。}}&lt;br /&gt;
&lt;br /&gt;
また、この形式では、{{ic|${&#039;&#039;VARIABLE&#039;&#039;} }} を使って、既に定義されている変数を他の変数の値で展開することができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 GOPATH DEFAULT=${XDG_DATA_HOME}/go&lt;br /&gt;
&lt;br /&gt;
{{ic|1=&#039;&#039;VARIABLE&#039;&#039;=&#039;&#039;value&#039;&#039;}} のペアも可能ですが、これらのペアでは変数の展開はサポートされていません。詳しくは {{man|5|pam_env.conf}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ユーザーごと ===&lt;br /&gt;
&lt;br /&gt;
環境変数をグローバルに定義したくないという時もあるでしょう。例えば、{{ic|PATH}} に {{ic|/home/my_user/bin}} を追加したいが、システム上の他のユーザーには同じ {{ic|PATH}} を使って欲しくないという場合が考えられます。様々なファイルを使うことでローカルに環境変数を定義することができます:&lt;br /&gt;
&lt;br /&gt;
* [[シェル]]のユーザ設定ファイル。例えば、[[Bash#設定ファイル]] や [[Zsh#スタートアップ/シャットダウン ファイル]]。&lt;br /&gt;
** あなたが開くターミナル (例: コマンドラインアプリケーションのみ) に変数のスコープを制限しない限り、ログインシェルの変数も変更されます。&lt;br /&gt;
* [[systemd/ユーザー#環境変数|systemd ユーザ環境変数]]は {{ic|~/.config/environment.d/*.conf}} から読み込まれます。&lt;br /&gt;
&lt;br /&gt;
ローカルで使用するディレクトリを {{ic|PATH}} に追加するには、{{ic|~/.bash_profile}} に次のように記述します:&lt;br /&gt;
&lt;br /&gt;
 export PATH=&amp;quot;${PATH}:/home/my_user/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
変数をアップデートするために、再ログインするかファイルを [[source]] してください: {{ic|$ source ~/.bash_profile}}&lt;br /&gt;
&lt;br /&gt;
{{Note|dbus デーモンや systemd のユーザインスタンスは、{{ic|~/.bashrc}} などのような場所で設定された環境変数を継承しません。これはつまり、dbus によってアクティブ化されたプログラム ([[GNOME Files]] など) は、そのような変数をデフォルトで使用しないことを意味します。[[Systemd/ユーザー#環境変数]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|export -p}} を実行することで、ユーザセッションに対して宣言されたグローバルな環境変数とローカルな環境変数を見ることができます。}}&lt;br /&gt;
&lt;br /&gt;
==== グラフィック環境 ====&lt;br /&gt;
&lt;br /&gt;
環境変数がグラフィカルなアプリケーションにしか影響しない場合は、グラフィカルセッション内でのみ設定することにより、その範囲を制限することができます。スコープを大きい順に並べると:&lt;br /&gt;
&lt;br /&gt;
* [[#Xorg セッションごと]] および [[#Wayland セッションごと]] - DE を含むグラフィカルセッション全体に影響します。&lt;br /&gt;
* [[#デスクトップ環境セッションごと]] - グラフィカルセッション内で生成されたアプリケーションに影響を与えます。DE 自体にも影響を与える可能性があります。&lt;br /&gt;
* [[#アプリケーションごと]] - 特定のグラフィカル アプリケーションだけに影響します。&lt;br /&gt;
&lt;br /&gt;
===== デスクトップ環境セッションごと =====&lt;br /&gt;
&lt;br /&gt;
一部のグラフィカル環境 (例えば [[KDE Plasma]]) は、ログイン時のシェルスクリプト実行をサポートしており、環境変数の設定に利用することができます。例としては [[KDE#自動起動]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
===== Xorg セッションごと =====&lt;br /&gt;
&lt;br /&gt;
Xorg セッションの環境を変更する手順は、Xorg セッションの起動方法によって異なります:&lt;br /&gt;
* ほとんどの[[ディスプレイマネージャ]]は [[xprofile]] を読み込みます。&lt;br /&gt;
* [[startx]] と [[SLiM]] は [[xinitrc]] を実行します。&lt;br /&gt;
* [[XDM]] は {{ic|~/.xsession}} を実行します: [[XDM#セッションの定義]] を参照して下さい。&lt;br /&gt;
* [[LightDM]][https://gitlab.archlinux.org/archlinux/packaging/packages/lightdm/-/blob/main/Xsession]、[[Plasma login manager]][https://github.com/KDE/plasma-login-manager/blob/master/data/scripts/Xsession]、[[SDDM]][https://github.com/sddm/sddm/blob/master/data/scripts/Xsession] は、ログイン シェルのスタートアップ スクリプトも読み込みます。例えば、[[bash]] の場合は {{ic|~/.bash_profile}}、[[zsh]] の場合は {{ic|~/.zprofile}} および {{ic|~/.zlogin}} です。&lt;br /&gt;
&lt;br /&gt;
スクリプトの終わりはどのファイルであるかに依存し、高度な構文は使用するシェルに依存しますが、基本的な使い方は普遍的です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xprofile, ~/.xinitrc, or ~/.xsession|2=&lt;br /&gt;
...&lt;br /&gt;
export &#039;&#039;GUI_VAR&#039;&#039;=&#039;&#039;value&#039;&#039;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Wayland セッションごと =====&lt;br /&gt;
&lt;br /&gt;
[[Wayland]] は Xorg 関連のファイルを起動しないので、[[GDM]] と [[KDE Plasma]] は代わりに [[systemd/ユーザー#環境変数|systemd ユーザ環境変数]]を読み込みます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/environment.d/envvars.conf|2=&lt;br /&gt;
&#039;&#039;GUI_VAR&#039;&#039;=&#039;&#039;value&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Wayland セッションをサポートする他のディスプレイマネージャ (例: [[SDDM]]) は、まだこれを直接はサポートしていません。しかし、[[LightDM]]、[[Plasma login manager]]、[[SDDM]] はログインシェルのスタートアップスクリプトを Wayland セッションでも読み込みます。&lt;br /&gt;
&lt;br /&gt;
[[greetd]] も {{ic|/etc/profile}} および {{ic|~/.profile}} を読み込みます。この動作は、デフォルトで有効になっている {{ic|source_profile}} 設定によって制御されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.bash_profile}} などのスタートアップスクリプトを読み込むディスプレイマネージャを使用していて、{{ic|environment.d}} を使用したい場合、以下のように読み込むことができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bash_profile|&lt;br /&gt;
# systemd-environment-d-generator(8) を使用して環境を生成し、その変数をエクスポートする&lt;br /&gt;
set -o allexport&lt;br /&gt;
source &amp;lt;(/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator)&lt;br /&gt;
set +o allexport&lt;br /&gt;
}}&lt;br /&gt;
{{Note|{{ic|/usr/lib/systemd/user-environment-generators}} にある他のジェネレーター、例えば {{ic|60-flatpak}} は環境変数の値を引用符で囲まない場合があります。この場合、出力は {{ic|export -- &amp;quot;$(/usr/lib/systemd/user-environment-generators/60-flatpak)&amp;quot;}} を使用して読み込む必要があります。}}&lt;br /&gt;
&lt;br /&gt;
===== アプリケーションごと =====&lt;br /&gt;
&lt;br /&gt;
セッション全体ではなく、特定のアプリケーションにのみ環境変数を設定するには、そのアプリケーションの &#039;&#039;.desktop&#039;&#039; ファイルを編集してください。その方法は [[デスクトップエントリ#環境変数の変更]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
[[Steam]] ゲームでは、起動オプションを編集することでプログラムの環境を設定することができます。[[Steam#起動オプション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== セッションまたはシェルごと ===&lt;br /&gt;
&lt;br /&gt;
時として、一時的な変数のみが必要である場合もあります。特定のディレクトリ内の実行ファイルを実行する際に一時的に絶対パスを入力する手間を省きたい場合や、一時的な短いシェルスクリプトでそのパスを使用したい場合があるでしょう。&lt;br /&gt;
&lt;br /&gt;
例えば、セッション固有のディレクトリを {{ic|PATH}} に追加するには:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;${PATH}:/home/my_user/tmp/usr/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
シェル固有のディレクトリのみを {{ic|PATH}} に追加するには:&lt;br /&gt;
&lt;br /&gt;
 $ PATH=&amp;quot;${PATH}:/home/my_user/tmp/usr/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Bash では、{{ic|PATH}} は既にデフォルトで export されているので、上記のどちらの方法を用いても、変数を上書きしない限り、変数の変更がサブプロセスから見えてしまいます。export された変数とされていない変数の違いをよりわかりやすく比較するには、以下を実行してみてください:&lt;br /&gt;
&lt;br /&gt;
 $ MYVAR=&amp;quot;shell-only&amp;quot;&lt;br /&gt;
 $ bash -c &#039;echo $MYVAR&#039;  # 何も表示されない&lt;br /&gt;
 &lt;br /&gt;
 $ export MYVAR=&amp;quot;session-wide&amp;quot;&lt;br /&gt;
 $ bash -c &#039;echo $MYVAR&#039;  # 表示される。すなわち、セッション全体に反映されている&lt;br /&gt;
&lt;br /&gt;
== 例 ==&lt;br /&gt;
&lt;br /&gt;
以下のセクションでは Linux システムで一般的に使われている環境変数を並べており、それぞれの値について説明しています。&lt;br /&gt;
&lt;br /&gt;
=== デスクトップ環境の検出 ===&lt;br /&gt;
&lt;br /&gt;
; XDG_CURRENT_DESKTOP:&lt;br /&gt;
コロンで区切られた文字列リストを含む [[freedesktop.org]] 変数。現在の[[デスクトップ環境]]を示します[https://specifications.freedesktop.org/mime-apps-spec/latest/file.html]。活発に開発されているデスクトップ環境の標準化された値として次があります: {{ic|GNOME}}、{{ic|GNOME-Flashback}}、{{ic|KDE}}、{{ic|LXDE}}、{{ic|LXQt}}、{{ic|MATE}}、{{ic|TDE}}、{{ic|Unity}}、{{ic|XFCE}}、{{ic|EDE}}、{{ic|Cinnamon}}、{{ic|Pantheon}}、{{ic|DDE}} [https://specifications.freedesktop.org/menu-spec/latest/onlyshowin-registry.html]。&lt;br /&gt;
{{Tip|&lt;br /&gt;
* Cinnamon は、他のデスクトップ環境[https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/commit/be0c630a19aa1788ef731def911770ce497d6ba3 より後に]登録されました。そのため、[[Qt]][https://github.com/qt/qtbase/blob/dev/src/gui/platform/unix/qgenericunixtheme.cpp#L156] など一部のソフトウェアは、登録前の値である {{ic|X-CINNAMON}} を期待します。&lt;br /&gt;
* {{ic|Hyprland}} は、[[Hyprland]] 用として非公式に認められています。&lt;br /&gt;
}}&lt;br /&gt;
; XDG_SESSION_DESKTOP:&lt;br /&gt;
{{ic|XDG_CURRENT_DESKTOP}} と似ていますが、単一の文字列しか許可しません。その名前にも関わらず、[https://gitlab.gnome.org/GNOME/gtk/-/issues/1224#note_270915 これは freedesktop.org によって標準化されたものではありません]。&lt;br /&gt;
; DE:&lt;br /&gt;
使用中のデスクトップ環境 (&#039;&#039;d&#039;&#039;esktop &#039;&#039;e&#039;&#039;nvironment) を示すレガシーな変数です。どのような値を取りうるかについての中心的なドキュメントはありませんが、[[xdg-utils#環境変数|xdg-utils]] は多くのデスクトップ環境についてのリファレンスを提供しています。&lt;br /&gt;
; DESKTOP_SESSION:&lt;br /&gt;
これもレガシーな変数です。{{ic|DE}} に似ていますが、それよりは一般的ではありません。セッションの ({{ic|/usr/share/xsessions/}} 内の) [[デスクトップエントリ]]へのパスを格納できます [https://github.com/qt/qtbase/blob/6.3/src/gui/platform/unix/qgenericunixservices.cpp#L92-L107]。&lt;br /&gt;
; WINDOW_MANAGER:&lt;br /&gt;
デスクトップ環境で使用する[[ウィンドウマネージャ]]を&#039;&#039;選択&#039;&#039;するために時々使われる変数です。他のプログラムが読み取るために、既に選択されているディスプレイマネージャやデスクトップ環境によって設定される他の変数とは対照的です。&lt;br /&gt;
; DISPLAY:&lt;br /&gt;
ホスト、ディスプレイ、スクリーンを指定するために X Window System によって使用されます。形式は {{ic|&#039;&#039;ホスト名&#039;&#039;:&#039;&#039;ディスプレイ&#039;&#039;.&#039;&#039;スクリーン&#039;&#039;}} です。ディスプレイとは、共通の入力デバイス群 (キーボードやマウスなど) を共有するスクリーンの集まりを指します。ホスト名は、ディスプレイが接続されるマシンの名前を指定するためにかつて使用されていましたが、X クライアントと同じコンピュータ上で X サーバが実行される場合は空欄になっているはずです。詳細は {{man|7|X}} を参照してください。&lt;br /&gt;
; WAYLAND_DISPLAY:&lt;br /&gt;
Wayland における {{ic|DISPLAY}} のようなものです。コンポジタによって設定されます。これが設定されていない場合、アプリケーションは {{ic|wayland-0}} を使おうと試みます。&lt;br /&gt;
; XAUTHORITY:&lt;br /&gt;
{{ic|.Xauthority}} ファイルへのパスです。このファイルには、X Window Server にアクセスするための資格情報が入っています。これは、認証のために X サーバに送られるクッキー (任意のデータ) の形で保存されます (例: {{ic|MIT-MAGIC-COOKIE-1}})。&lt;br /&gt;
&lt;br /&gt;
=== システムやセッションのパス ===&lt;br /&gt;
&lt;br /&gt;
; HOME:&lt;br /&gt;
現在のユーザのホームディレクトリへのパスが格納されます。この変数は、アプリケーションが現在のユーザに関連した設定ファイル等を見つけるために使うことができます。&lt;br /&gt;
; PATH:&lt;br /&gt;
コロンで区切られたディレクトリのリストが格納されています。システムは、この変数に登録されているディレクトリから実行ファイルを探索します。通常のコマンド (&#039;&#039;ls&#039;&#039;、&#039;&#039;systemctl&#039;&#039;、&#039;&#039;pacman&#039;&#039; など) がシェル (&#039;&#039;bash&#039;&#039; や &#039;&#039;zsh&#039;&#039; など) によって解釈される際、シェルは {{ic|PATH}} のリスト内のディレクトリからそのコマンドと同じ名前の実行ファイルを探索し、それを実行します。{{ic|PATH}} に含まれないディレクトリにある実行ファイルを実行するには、実行ファイルへの相対パスや絶対パスを指定する必要があります。例えば、{{ic|./a.out}} や {{ic|/bin/ls}} といった形です。&lt;br /&gt;
{{Note|セキュリティ上の理由により {{ic|PATH}} にはカレント作業ディレクトリ ({{ic|.}}) を含めないことが推奨されます。ユーザが騙されて、悪意のあるコマンドを実行してしまうかもしれないからです。}}&lt;br /&gt;
; PWD:&lt;br /&gt;
[[Wikipedia:ja:Pwd|作業ディレクトリへのパス]]が入ります。&lt;br /&gt;
; OLDPWD:&lt;br /&gt;
前の作業ディレクトリへのパスが入ります。つまり、最後に &#039;&#039;cd&#039;&#039; を実行する前の {{ic|PWD}} です。&lt;br /&gt;
; MAIL:&lt;br /&gt;
受信したメールの保存場所が入ります。伝統的な設定は {{ic|/var/spool/mail/$LOGNAME}} です。&lt;br /&gt;
&lt;br /&gt;
=== ネットワークプロキシ ===&lt;br /&gt;
&lt;br /&gt;
; ftp_proxy:&lt;br /&gt;
FTP [[プロキシサーバー]]が入ります。&lt;br /&gt;
 ftp_proxy=&amp;quot;&amp;lt;nowiki&amp;gt;ftp://192.168.0.1:21&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
;http_proxy:&lt;br /&gt;
HTTP [[プロキシサーバー]]が入ります。&lt;br /&gt;
 http_proxy=&amp;quot;&amp;lt;nowiki&amp;gt;http://192.168.0.1:80&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ドキュメントのパス ===&lt;br /&gt;
&lt;br /&gt;
; MANPATH:&lt;br /&gt;
&#039;&#039;man&#039;&#039; が man ページを探索するディレクトリのリストがコンマで区切られて格納されます。&lt;br /&gt;
{{Note|{{ic|/etc/profile}} に &amp;quot;Man is much better than us at figuring this out&amp;quot; (man は我々よりずっと上手くこれを解決する) と書いてあるとおり、一般的にこの変数はデフォルトのままにしておくべきです。 {{man|5|manpath}} を参照。}}&lt;br /&gt;
; INFODIR:&lt;br /&gt;
&#039;&#039;info&#039;&#039; コマンドが info ページを探索するディレクトリのリストがコンマで区切られて格納されます。例: {{ic|/usr/share/info:/usr/local/share/info}}。&lt;br /&gt;
&lt;br /&gt;
=== デフォルトプログラム ===&lt;br /&gt;
&lt;br /&gt;
; SHELL:&lt;br /&gt;
ユーザの[https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap08.html#tag_08_03 優先シェル]へのパスが含まれます。この変数の値は、現在実行中のシェルである必要はないことに注意してください。この変数に値がない場合、[[Bash]] は自動的に {{ic|/etc/passwd}} で定義されているユーザのログインシェルに設定するか、判断できない場合は {{ic|/bin/sh}} にします。&lt;br /&gt;
; PAGER:&lt;br /&gt;
ファイルの内容を一覧表示するために使用されるプログラムを実行するコマンドが含まれます。例: {{ic|/bin/less}}。&lt;br /&gt;
; EDITOR:&lt;br /&gt;
ファイルの編集に使用される軽量プログラムを実行するコマンドが含まれています (例:{{ic|/usr/bin/nano}})。例えば、以下の例のように、[[X]] 下では &#039;&#039;gedit&#039;&#039; を使い、それ以外では &#039;&#039;nano&#039;&#039; を使うように設定するインタラクティブスイッチを記述することができます:&lt;br /&gt;
 [ -n &amp;quot;$DISPLAY&amp;quot; ] &amp;amp;&amp;amp; export EDITOR=gedit || export EDITOR=nano&lt;br /&gt;
; VISUAL:&lt;br /&gt;
メールの編集などより高度な作業に使われる本格的なエディタを実行するコマンドが含まれています (例: {{ic|vi}}、[[vim]]、[[emacs]] など)。&lt;br /&gt;
; TERMINAL:&lt;br /&gt;
ユーザの優先ターミナルエミュレータを実行するコマンドが含まれます。これは、現在実行中のターミナル ({{ic|TERM}}) と同じであるとは限りません。&lt;br /&gt;
; BROWSER:&lt;br /&gt;
ウェブブラウザへのパスが含まれています。グラフィカル環境 ([[X]] など) が利用できるかに応じてこの変数を動的に変更するようなコードをインタラクティブシェルの設定ファイルに記述しておくと便利です:&lt;br /&gt;
 [ -n &amp;quot;$DISPLAY&amp;quot; ] &amp;amp;&amp;amp; export BROWSER=firefox || export BROWSER=links&lt;br /&gt;
{{Tip|{{ic|WAYLAND_DISPLAY}} 環境変数を使うことで、[[Wayland#コンポジタ|Wayland コンポジタ]]が実行されているかどうかに応じてこれらのデフォルトプログラムを設定することができます。}}&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
&lt;br /&gt;
; TERM:&lt;br /&gt;
実行中のターミナル (&#039;&#039;term&#039;&#039;inal) の種類が格納されます (例: {{ic|xterm-256color}})。この変数は、ターミナル固有の機能を期待する、ターミナル内で実行されるプログラムによって使用されます ({{man|5|terminfo}} を参照)。この変数は、ターミナルエミュレータによって設定されるため、シェルから上書きすることは推奨されません。&lt;br /&gt;
; TZ:&lt;br /&gt;
ユーザ毎にシステムのタイムゾーンとは異なるタイムゾーンを設定するために使用することができます。{{ic|/usr/share/zoneinfo/}} 内にはタイムゾーンが列挙されているので、これをリファレンスとして使用することができます (例: {{ic|1=TZ=&amp;quot;:/usr/share/zoneinfo/Pacific/Fiji&amp;quot;}})。{{ic|TZ}} 変数に zoneinfo ファイルを指定する場合、[https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html GNU マニュアル] に従ってコロンで始める必要があります。&lt;br /&gt;
&lt;br /&gt;
=== シェル環境の検出 ===&lt;br /&gt;
&lt;br /&gt;
シェル環境を検出するテストは、[https://gitlab.com/jdorel-documentation/shell-environment-detection シェル環境の検出に関して書かれたリポジトリ]を見てください。これには、ログイン/インタラクティブシェル、Xorg セッション、TTY、SSH セッションの検出も含まれています。 &lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Gentoo:Handbook:X86/Working/EnvVar]]&lt;br /&gt;
* [https://help.ubuntu.com/community/EnvironmentVariables Ubuntu Community Wiki - Environment Variables]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Environment variables|2026-03-29|869026}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0&amp;diff=41440</id>
		<title>環境変数</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0&amp;diff=41440"/>
		<updated>2026-03-29T08:58:22Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:システム管理]]&lt;br /&gt;
[[de:Umgebungsvariablen]]&lt;br /&gt;
[[en:Environment variables]]&lt;br /&gt;
[[es:Environment variables]]&lt;br /&gt;
[[hu:Environment variables]]&lt;br /&gt;
[[pt:Environment variables]]&lt;br /&gt;
[[ru:Environment variables]]&lt;br /&gt;
[[zh-hans:Environment variables]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|デフォルトアプリケーション}}&lt;br /&gt;
{{Related|systemd/ユーザー#環境変数}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
環境変数は、1つ以上のアプリケーションによって使用されるデータを含む名前付きのオブジェクトです。簡単に言えば、名前と値を持つ変数です。環境変数の値には、例えばファイルシステム内のすべての実行可能ファイルの場所、使用すべきデフォルトのエディタ、またはシステムロケールの設定などが含まれます。Linux に不慣れなユーザーは、このような設定の管理方法を少し扱いづらいと感じることがよくあります。しかし、環境変数は、複数のアプリケーションやプロセス間で設定を共有する簡単な方法を提供します。&lt;br /&gt;
&lt;br /&gt;
== ユーティリティ ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|coreutils}} パッケージには {{man|1|printenv}} と {{man|1|env}} というプログラムが含まれています。現在の環境変数とその値を一覧表示するには:&lt;br /&gt;
&lt;br /&gt;
 $ printenv&lt;br /&gt;
&lt;br /&gt;
{{Note|環境変数の中にはユーザ個別のものも存在します。{{ic|printenv}} の出力を非特権ユーザの場合と root ユーザの場合で比較して確認してみましょう。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;env&#039;&#039; ユーティリティを使うことで、環境変数を変更してコマンドを実行することができます。以下の例では、環境変数 {{ic|EDITOR}} を {{ic|vim}} に設定して &#039;&#039;xterm&#039;&#039; を起動します。以下のコマンドを実行しても、グローバルな {{ic|EDITOR}} 変数には影響を与えません。&lt;br /&gt;
&lt;br /&gt;
 $ env EDITOR=vim xterm&lt;br /&gt;
&lt;br /&gt;
[[シェル]] の {{man|1p|set}} 組み込みコマンドを使えば、シェルオプションの値を変更したり、位置のパラメータを設定したり、シェル変数の名前とその値を出力したりできます。&lt;br /&gt;
&lt;br /&gt;
各プロセスはその環境変数を {{ic|/proc/$PID/environ}} ファイルに保存しています。このファイルには、ヌル文字 ({{ic|\x0}}) で区切られたキーと値のペアが含まれています。[[sed]] を使用すると、より読み易い形式で取得できます。例: {{ic|sed &#039;s:\x0:\n:g&#039; /proc/$PID/environ}}。&lt;br /&gt;
&lt;br /&gt;
== 変数の定義 ==&lt;br /&gt;
&lt;br /&gt;
環境を不必要に汚染しないために、変数のスコープを制限するように努めるべきです。実際、グラフィカルセッションや systemd サービスでは、変数を有効にするために特定の場所で設定することが要求されます。環境変数のスコープは、それらが影響を与えるコンテキストに分けられます:&lt;br /&gt;
&lt;br /&gt;
* [[#グローバル|グローバル]]: あらゆるユーザが実行する全プログラム。Systemd サービスは含まれません。&lt;br /&gt;
* [[#ユーザーごと|ユーザ別]]: 特定のユーザが実行する全プログラム。Systemd ユーザサービス ([[systemd/ユーザー#環境変数]] を参照) やグラフィカルアプリケーション ([[#グラフィック環境]] を参照) は含まれません。&lt;br /&gt;
&lt;br /&gt;
=== グローバル ===&lt;br /&gt;
&lt;br /&gt;
==== シェルの初期化ファイルを使う ====&lt;br /&gt;
&lt;br /&gt;
大半の Linux ディストリビューションは、あなたに {{ic|/etc/profile}} 等のファイルに環境変数の追加・変更を行うよう指示します。また、{{ic|/etc/locale.conf}} のような変数設定を含むパッケージ固有の設定ファイルがあることも覚えておいてください。環境変数の維持・管理は必ず行い、環境変数を含むことができる多数のファイルに注意を払うようにしてください。原則的に、あらゆるシェルスクリプトは環境変数の初期化に使うことができますが、以下のような UNIX の慣例に従い特定のファイルでのみ行われるべきです。&lt;br /&gt;
&lt;br /&gt;
以下のファイルは、システムのグローバルな環境変数を定義するために使用できますが、それぞれに異なる制限があります:&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/environment}} は [[#pam_env を使う|pam_env モジュール]]によって使用され、シェルに依存しないため、スクリプトやグロブ展開は使用できません。このファイルは、{{ic|1=&#039;&#039;変数=値&#039;&#039;}} という形式しか受け入れません。&lt;br /&gt;
* {{ic|/etc/profile}} は、ログインシェル&#039;&#039;のみ&#039;&#039;に対して変数を初期化します。しかし、このファイルはスクリプト (例: {{ic|/etc/profile.d/}} 内にあるファイル) を実行し、すべての [[wikipedia:ja:Bourne Shell|Bourne shell]] 互換シェルで使用することができます。&lt;br /&gt;
* シェル固有の設定ファイル - [[シェル]]のグローバルな設定ファイルで、変数の初期化やスクリプトの実行を行います。例えば [[Bash#設定ファイル]] (例: {{ic|~/.bashrc}})) や [[Zsh#スタートアップ/シャットダウン ファイル]] (例: {{ic|~/.zshrc}}) です。&lt;br /&gt;
&lt;br /&gt;
以下の Bash ヘルパ関数を使えば、複数のディレクトリを {{ic|PATH}} 環境変数に末尾追加することができます。環境変数を定義しているファイル ({{ic|~/.bashrc}} など) の戦闘にこの関数を追加してください。この関数は、ファイルシステム上に実際に存在するディレクトリのみを追加し、重複するエントリは作成しません。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
add_paths() {&lt;br /&gt;
  for d in &amp;quot;$@&amp;quot;; do&lt;br /&gt;
    [[ -d &amp;quot;$d&amp;quot; &amp;amp;&amp;amp; ! &amp;quot;$PATH&amp;quot; =~ (^|:)$d(:|$) ]] &amp;amp;&amp;amp; PATH=&amp;quot;$PATH:$d&amp;quot;&lt;br /&gt;
  done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
add_paths ~/bin ~/scripts&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ほとんどのシェル (Bash、Zsh、[[fish]] を含む) では、{{ic|export}} コマンドを使って環境に変数を追加することができます。これにより、{{ic|~/my-environment.sh}} などのように通常のファイルで環境変数を定義することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/my-environment.sh|2=&lt;br /&gt;
export EDITOR=vim&lt;br /&gt;
export XDG_CACHE_HOME=&amp;quot;$HOME/.cache&amp;quot;&lt;br /&gt;
export XDG_CONFIG_HOME=&amp;quot;$HOME/.config&amp;quot;&lt;br /&gt;
export XDG_DATA_HOME=&amp;quot;$HOME/.local/share&amp;quot;&lt;br /&gt;
export XDG_STATE_HOME=&amp;quot;$HOME/.local/state&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このファイルは、シェルのスタートアップファイルから source することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bashrc|source ~/my-environment.sh}}&lt;br /&gt;
{{hc|~/.config/fish/config.fish|source ~/my-environment.sh}}&lt;br /&gt;
&lt;br /&gt;
==== pam_env を使う ====&lt;br /&gt;
&lt;br /&gt;
{{man|8|pam_env}} [[PAM]] モジュールは、環境変数の設定を以下のファイルから順番にロードします: {{ic|/etc/security/pam_env.conf}} と {{ic|/etc/environment}} の順です。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* これらのファイルは、他のファイル、特に、{{ic|~/.profile}}、{{ic|~/.bash_profile}}、{{ic|~/.zshenv}} より前に読み込まれます。&lt;br /&gt;
* 非推奨の {{ic|~/.pam_environment}} はもう読み込まれません。{{Bug|68945}} を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/environment}} では、{{ic|1=&#039;&#039;変数&#039;&#039;=&#039;&#039;値&#039;&#039;}} というペアを1行に1つずつ記述しなければなりません。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/environment|2=&lt;br /&gt;
EDITOR=nano&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/security/pam_env.conf}} は以下の形式で記述します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/security/pam_env.conf|2=&lt;br /&gt;
VARIABLE [DEFAULT=&#039;&#039;value&#039;&#039;] [OVERRIDE=&#039;&#039;value&#039;&#039;]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|@{HOME} }} と {{ic|@{SHELL} }} は、{{ic|/etc/passwd}} で定義されているものに拡張される特別な変数です。次の例は、{{ic|HOME}} 環境変数を別の変数に展開する方法を示しています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/security/pam_env.conf|2=&lt;br /&gt;
XDG_CONFIG_HOME   DEFAULT=@{HOME}/.config&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|変数 {{ic|${HOME} }} および {{ic|${SHELL} }} は、{{ic|HOME}} および {{ic|SHELL}} 環境変数にはリンクされていません。これらはデフォルトでは設定されていません。}}&lt;br /&gt;
&lt;br /&gt;
また、この形式では、{{ic|${&#039;&#039;VARIABLE&#039;&#039;} }} を使って、既に定義されている変数を他の変数の値で展開することができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 GOPATH DEFAULT=${XDG_DATA_HOME}/go&lt;br /&gt;
&lt;br /&gt;
{{ic|1=&#039;&#039;VARIABLE&#039;&#039;=&#039;&#039;value&#039;&#039;}} のペアも可能ですが、これらのペアでは変数の展開はサポートされていません。詳しくは {{man|5|pam_env.conf}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ユーザーごと ===&lt;br /&gt;
&lt;br /&gt;
環境変数をグローバルに定義したくないという時もあるでしょう。例えば、{{ic|PATH}} に {{ic|/home/my_user/bin}} を追加したいが、システム上の他のユーザーには同じ {{ic|PATH}} を使って欲しくないという場合が考えられます。様々なファイルを使うことでローカルに環境変数を定義することができます:&lt;br /&gt;
&lt;br /&gt;
* [[シェル]]のユーザ設定ファイル。例えば、[[Bash#設定ファイル]] や [[Zsh#スタートアップ/シャットダウン ファイル]]。&lt;br /&gt;
** あなたが開くターミナル (例: コマンドラインアプリケーションのみ) に変数のスコープを制限しない限り、ログインシェルの変数も変更されます。&lt;br /&gt;
* [[systemd/ユーザー#環境変数|systemd ユーザ環境変数]]は {{ic|~/.config/environment.d/*.conf}} から読み込まれます。&lt;br /&gt;
&lt;br /&gt;
ローカルで使用するディレクトリを {{ic|PATH}} に追加するには、{{ic|~/.bash_profile}} に次のように記述します:&lt;br /&gt;
&lt;br /&gt;
 export PATH=&amp;quot;${PATH}:/home/my_user/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
変数をアップデートするために、再ログインするかファイルを [[source]] してください: {{ic|$ source ~/.bash_profile}}&lt;br /&gt;
&lt;br /&gt;
{{Note|dbus デーモンや systemd のユーザインスタンスは、{{ic|~/.bashrc}} などのような場所で設定された環境変数を継承しません。これはつまり、dbus によってアクティブ化されたプログラム ([[GNOME Files]] など) は、そのような変数をデフォルトで使用しないことを意味します。[[Systemd/ユーザー#環境変数]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|export -p}} を実行することで、ユーザセッションに対して宣言されたグローバルな環境変数とローカルな環境変数を見ることができます。}}&lt;br /&gt;
&lt;br /&gt;
==== グラフィック環境 ====&lt;br /&gt;
&lt;br /&gt;
環境変数がグラフィカルなアプリケーションにしか影響しない場合は、グラフィカルセッション内でのみ設定することにより、その範囲を制限することができます。スコープを大きい順に並べると:&lt;br /&gt;
&lt;br /&gt;
* [[#Xorg セッションごと]] および [[#Wayland セッションごと]] - DE を含むグラフィカルセッション全体に影響します。&lt;br /&gt;
* [[#デスクトップ環境セッションごと]] - グラフィカルセッション内で生成されたアプリケーションに影響を与えます。DE 自体にも影響を与える可能性があります。&lt;br /&gt;
* [[#アプリケーションごと]] - 特定のグラフィカル アプリケーションだけに影響します。&lt;br /&gt;
&lt;br /&gt;
===== デスクトップ環境セッションごと =====&lt;br /&gt;
&lt;br /&gt;
一部のグラフィカル環境 (例えば [[KDE Plasma]]) は、ログイン時のシェルスクリプト実行をサポートしており、環境変数の設定に利用することができます。例としては [[KDE#自動起動]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
===== Xorg セッションごと =====&lt;br /&gt;
&lt;br /&gt;
Xorg セッションの環境を変更する手順は、Xorg セッションの起動方法によって異なります:&lt;br /&gt;
* ほとんどの[[ディスプレイマネージャ]]は [[xprofile]] を読み込みます。&lt;br /&gt;
* [[startx]] と [[SLiM]] は [[xinitrc]] を実行します。&lt;br /&gt;
* [[XDM]] は {{ic|~/.xsession}} を実行します: [[XDM#セッションの定義]] を参照して下さい。&lt;br /&gt;
* [[LightDM]][https://gitlab.archlinux.org/archlinux/packaging/packages/lightdm/-/blob/main/Xsession]、[[Plasma login manager]][https://github.com/KDE/plasma-login-manager/blob/master/data/scripts/Xsession]、[[SDDM]][https://github.com/sddm/sddm/blob/master/data/scripts/Xsession] は、ログイン シェルのスタートアップ スクリプトも読み込みます。例えば、[[bash]] の場合は {{ic|~/.bash_profile}}、[[zsh]] の場合は {{ic|~/.zprofile}} および {{ic|~/.zlogin}} です。&lt;br /&gt;
&lt;br /&gt;
スクリプトの終わりはどのファイルであるかに依存し、高度な構文は使用するシェルに依存しますが、基本的な使い方は普遍的です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xprofile, ~/.xinitrc, or ~/.xsession|2=&lt;br /&gt;
...&lt;br /&gt;
export &#039;&#039;GUI_VAR&#039;&#039;=&#039;&#039;value&#039;&#039;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Wayland セッションごと =====&lt;br /&gt;
&lt;br /&gt;
[[Wayland]] は Xorg 関連のファイルを起動しないので、[[GDM]] と [[KDE Plasma]] は代わりに [[systemd/ユーザー#環境変数|systemd ユーザ環境変数]]を読み込みます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/environment.d/envvars.conf|2=&lt;br /&gt;
&#039;&#039;GUI_VAR&#039;&#039;=&#039;&#039;value&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Wayland セッションをサポートする他のディスプレイマネージャ (例: [[SDDM]]) は、まだこれを直接はサポートしていません。しかし、[[LightDM]]、[[Plasma login manager]]、[[SDDM]] はログインシェルのスタートアップスクリプトを Wayland セッションでも読み込みます。&lt;br /&gt;
&lt;br /&gt;
[[greetd]] も {{ic|/etc/profile}} および {{ic|~/.profile}} を読み込みます。この動作は、デフォルトで有効になっている {{ic|source_profile}} 設定によって制御されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.bash_profile}} などのスタートアップスクリプトを読み込むディスプレイマネージャを使用していて、{{ic|environment.d}} を使用したい場合、以下のように読み込むことができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bash_profile|&lt;br /&gt;
# systemd-environment-d-generator(8) を使用して環境を生成し、その変数をエクスポートする&lt;br /&gt;
set -o allexport&lt;br /&gt;
source &amp;lt;(/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator)&lt;br /&gt;
set +o allexport&lt;br /&gt;
}}&lt;br /&gt;
{{Note|{{ic|/usr/lib/systemd/user-environment-generators}} にある他のジェネレーター、例えば {{ic|60-flatpak}} は環境変数の値を引用符で囲まない場合があります。この場合、出力は {{ic|export -- &amp;quot;$(/usr/lib/systemd/user-environment-generators/60-flatpak)&amp;quot;}} を使用して読み込む必要があります。}}&lt;br /&gt;
&lt;br /&gt;
===== アプリケーションごと =====&lt;br /&gt;
&lt;br /&gt;
セッション全体ではなく、特定のアプリケーションにのみ環境変数を設定するには、そのアプリケーションの &#039;&#039;.desktop&#039;&#039; ファイルを編集してください。その方法は [[デスクトップエントリ#環境変数の変更]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
[[Steam]] ゲームでは、起動オプションを編集することでプログラムの環境を設定することができます。[[Steam#起動オプション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== セッションまたはシェルごと ===&lt;br /&gt;
&lt;br /&gt;
時として、一時的な変数のみが必要である場合もあります。特定のディレクトリ内の実行ファイルを実行する際に一時的に絶対パスを入力する手間を省きたい場合や、一時的な短いシェルスクリプトでそのパスを使用したい場合があるでしょう。&lt;br /&gt;
&lt;br /&gt;
例えば、セッション固有のディレクトリを {{ic|PATH}} に追加するには:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;${PATH}:/home/my_user/tmp/usr/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
シェル固有のディレクトリのみを {{ic|PATH}} に追加するには:&lt;br /&gt;
&lt;br /&gt;
 $ PATH=&amp;quot;${PATH}:/home/my_user/tmp/usr/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Bash では、{{ic|PATH}} は既にデフォルトで export されているので、上記のどちらの方法を用いても、変数を上書きしない限り、変数の変更がサブプロセスから見えてしまいます。export された変数とされていない変数の違いをよりわかりやすく比較するには、以下を実行してみてください:&lt;br /&gt;
&lt;br /&gt;
 $ MYVAR=&amp;quot;shell-only&amp;quot;&lt;br /&gt;
 $ bash -c &#039;echo $MYVAR&#039;  # 何も表示されない&lt;br /&gt;
 &lt;br /&gt;
 $ export MYVAR=&amp;quot;session-wide&amp;quot;&lt;br /&gt;
 $ bash -c &#039;echo $MYVAR&#039;  # 表示される。すなわち、セッション全体に反映されている&lt;br /&gt;
&lt;br /&gt;
== 例 ==&lt;br /&gt;
&lt;br /&gt;
以下のセクションでは Linux システムで一般的に使われている環境変数を並べており、それぞれの値について説明しています。&lt;br /&gt;
&lt;br /&gt;
=== デスクトップ環境の検出 ===&lt;br /&gt;
&lt;br /&gt;
; XDG_CURRENT_DESKTOP:&lt;br /&gt;
コロンで区切られた文字列リストを含む [[freedesktop.org]] 変数。現在の[[デスクトップ環境]]を示します[https://specifications.freedesktop.org/mime-apps-spec/latest/file.html]。活発に開発されているデスクトップ環境の標準化された値として次があります: {{ic|GNOME}}、{{ic|GNOME-Flashback}}、{{ic|KDE}}、{{ic|LXDE}}、{{ic|LXQt}}、{{ic|MATE}}、{{ic|TDE}}、{{ic|Unity}}、{{ic|XFCE}}、{{ic|EDE}}、{{ic|Cinnamon}}、{{ic|Pantheon}}、and {{ic|DDE}} [https://specifications.freedesktop.org/menu-spec/latest/onlyshowin-registry.html]。&lt;br /&gt;
{{Tip|&lt;br /&gt;
* Cinnamon は、他のデスクトップ環境[https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/commit/be0c630a19aa1788ef731def911770ce497d6ba3 より後に]登録されました。そのため、[[Qt]][https://github.com/qt/qtbase/blob/dev/src/gui/platform/unix/qgenericunixtheme.cpp#L156] など一部のソフトウェアは、登録前の値である {{ic|X-CINNAMON}} を期待します。&lt;br /&gt;
* {{ic|Hyprland}} は、[[Hyprland]] 用として非公式に認められています。&lt;br /&gt;
}}&lt;br /&gt;
; XDG_SESSION_DESKTOP:&lt;br /&gt;
{{ic|XDG_CURRENT_DESKTOP}} と似ていますが、単一の文字列しか許可しません。その名前にも関わらず、[https://gitlab.gnome.org/GNOME/gtk/-/issues/1224#note_270915 これは freedesktop.org によって標準化されたものではありません]。&lt;br /&gt;
; DE:&lt;br /&gt;
使用中のデスクトップ環境 (&#039;&#039;d&#039;&#039;esktop &#039;&#039;e&#039;&#039;nvironment) を示すレガシーな変数です。どのような値を取りうるかについての中心的なドキュメントはありませんが、[[xdg-utils#環境変数|xdg-utils]] は多くのデスクトップ環境についてのリファレンスを提供しています。&lt;br /&gt;
; DESKTOP_SESSION:&lt;br /&gt;
これもレガシーな変数です。{{ic|DE}} に似ていますが、それよりは一般的ではありません。セッションの ({{ic|/usr/share/xsessions/}} 内の) [[デスクトップエントリ]]へのパスを格納できます [https://github.com/qt/qtbase/blob/6.3/src/gui/platform/unix/qgenericunixservices.cpp#L92-L107]。&lt;br /&gt;
; WINDOW_MANAGER:&lt;br /&gt;
デスクトップ環境で使用する[[ウィンドウマネージャ]]を&#039;&#039;選択&#039;&#039;するために時々使われる変数です。他のプログラムが読み取るために、既に選択されているディスプレイマネージャやデスクトップ環境によって設定される他の変数とは対照的です。&lt;br /&gt;
; DISPLAY:&lt;br /&gt;
ホスト、ディスプレイ、スクリーンを指定するために X Window System によって使用されます。形式は {{ic|&#039;&#039;ホスト名&#039;&#039;:&#039;&#039;ディスプレイ&#039;&#039;.&#039;&#039;スクリーン&#039;&#039;}} です。ディスプレイとは、共通の入力デバイス群 (キーボードやマウスなど) を共有するスクリーンの集まりを指します。ホスト名は、ディスプレイが接続されるマシンの名前を指定するためにかつて使用されていましたが、X クライアントと同じコンピュータ上で X サーバが実行される場合は空欄になっているはずです。詳細は {{man|7|X}} を参照してください。&lt;br /&gt;
; WAYLAND_DISPLAY:&lt;br /&gt;
Wayland における {{ic|DISPLAY}} のようなものです。コンポジタによって設定されます。これが設定されていない場合、アプリケーションは {{ic|wayland-0}} を使おうと試みます。&lt;br /&gt;
; XAUTHORITY:&lt;br /&gt;
{{ic|.Xauthority}} ファイルへのパスです。このファイルには、X Window Server にアクセスするための資格情報が入っています。これは、認証のために X サーバに送られるクッキー (任意のデータ) の形で保存されます (例: {{ic|MIT-MAGIC-COOKIE-1}})。&lt;br /&gt;
&lt;br /&gt;
=== システムやセッションのパス ===&lt;br /&gt;
&lt;br /&gt;
; HOME:&lt;br /&gt;
現在のユーザのホームディレクトリへのパスが格納されます。この変数は、アプリケーションが現在のユーザに関連した設定ファイル等を見つけるために使うことができます。&lt;br /&gt;
; PATH:&lt;br /&gt;
コロンで区切られたディレクトリのリストが格納されています。システムは、この変数に登録されているディレクトリから実行ファイルを探索します。通常のコマンド (&#039;&#039;ls&#039;&#039;、&#039;&#039;systemctl&#039;&#039;、&#039;&#039;pacman&#039;&#039; など) がシェル (&#039;&#039;bash&#039;&#039; や &#039;&#039;zsh&#039;&#039; など) によって解釈される際、シェルは {{ic|PATH}} のリスト内のディレクトリからそのコマンドと同じ名前の実行ファイルを探索し、それを実行します。{{ic|PATH}} に含まれないディレクトリにある実行ファイルを実行するには、実行ファイルへの相対パスや絶対パスを指定する必要があります。例えば、{{ic|./a.out}} や {{ic|/bin/ls}} といった形です。&lt;br /&gt;
{{Note|セキュリティ上の理由により {{ic|PATH}} にはカレント作業ディレクトリ ({{ic|.}}) を含めないことが推奨されます。ユーザが騙されて、悪意のあるコマンドを実行してしまうかもしれないからです。}}&lt;br /&gt;
; PWD:&lt;br /&gt;
[[Wikipedia:ja:Pwd|作業ディレクトリへのパス]]が入ります。&lt;br /&gt;
; OLDPWD:&lt;br /&gt;
前の作業ディレクトリへのパスが入ります。つまり、最後に &#039;&#039;cd&#039;&#039; を実行する前の {{ic|PWD}} です。&lt;br /&gt;
; MAIL:&lt;br /&gt;
受信したメールの保存場所が入ります。伝統的な設定は {{ic|/var/spool/mail/$LOGNAME}} です。&lt;br /&gt;
&lt;br /&gt;
=== ネットワークプロキシ ===&lt;br /&gt;
&lt;br /&gt;
; ftp_proxy:&lt;br /&gt;
FTP [[プロキシサーバー]]が入ります。&lt;br /&gt;
 ftp_proxy=&amp;quot;&amp;lt;nowiki&amp;gt;ftp://192.168.0.1:21&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
;http_proxy:&lt;br /&gt;
HTTP [[プロキシサーバー]]が入ります。&lt;br /&gt;
 http_proxy=&amp;quot;&amp;lt;nowiki&amp;gt;http://192.168.0.1:80&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ドキュメントのパス ===&lt;br /&gt;
&lt;br /&gt;
; MANPATH:&lt;br /&gt;
&#039;&#039;man&#039;&#039; が man ページを探索するディレクトリのリストがコンマで区切られて格納されます。&lt;br /&gt;
{{Note|{{ic|/etc/profile}} に &amp;quot;Man is much better than us at figuring this out&amp;quot; (man は我々よりずっと上手くこれを解決する) と書いてあるとおり、一般的にこの変数はデフォルトのままにしておくべきです。 {{man|5|manpath}} を参照。}}&lt;br /&gt;
; INFODIR:&lt;br /&gt;
&#039;&#039;info&#039;&#039; コマンドが info ページを探索するディレクトリのリストがコンマで区切られて格納されます。例: {{ic|/usr/share/info:/usr/local/share/info}}。&lt;br /&gt;
&lt;br /&gt;
=== デフォルトプログラム ===&lt;br /&gt;
&lt;br /&gt;
; SHELL:&lt;br /&gt;
ユーザの[https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap08.html#tag_08_03 優先シェル]へのパスが含まれます。この変数の値は、現在実行中のシェルである必要はないことに注意してください。この変数に値がない場合、[[Bash]] は自動的に {{ic|/etc/passwd}} で定義されているユーザのログインシェルに設定するか、判断できない場合は {{ic|/bin/sh}} にします。&lt;br /&gt;
; PAGER:&lt;br /&gt;
ファイルの内容を一覧表示するために使用されるプログラムを実行するコマンドが含まれます。例: {{ic|/bin/less}}。&lt;br /&gt;
; EDITOR:&lt;br /&gt;
ファイルの編集に使用される軽量プログラムを実行するコマンドが含まれています (例:{{ic|/usr/bin/nano}})。例えば、以下の例のように、[[X]] 下では &#039;&#039;gedit&#039;&#039; を使い、それ以外では &#039;&#039;nano&#039;&#039; を使うように設定するインタラクティブスイッチを記述することができます:&lt;br /&gt;
 [ -n &amp;quot;$DISPLAY&amp;quot; ] &amp;amp;&amp;amp; export EDITOR=gedit || export EDITOR=nano&lt;br /&gt;
; VISUAL:&lt;br /&gt;
メールの編集などより高度な作業に使われる本格的なエディタを実行するコマンドが含まれています (例: {{ic|vi}}、[[vim]]、[[emacs]] など)。&lt;br /&gt;
; TERMINAL:&lt;br /&gt;
ユーザの優先ターミナルエミュレータを実行するコマンドが含まれます。これは、現在実行中のターミナル ({{ic|TERM}}) と同じであるとは限りません。&lt;br /&gt;
; BROWSER:&lt;br /&gt;
ウェブブラウザへのパスが含まれています。グラフィカル環境 ([[X]] など) が利用できるかに応じてこの変数を動的に変更するようなコードをインタラクティブシェルの設定ファイルに記述しておくと便利です:&lt;br /&gt;
 [ -n &amp;quot;$DISPLAY&amp;quot; ] &amp;amp;&amp;amp; export BROWSER=firefox || export BROWSER=links&lt;br /&gt;
{{Tip|{{ic|WAYLAND_DISPLAY}} 環境変数を使うことで、[[Wayland#コンポジタ|Wayland コンポジタ]]が実行されているかどうかに応じてこれらのデフォルトプログラムを設定することができます。}}&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
&lt;br /&gt;
; TERM:&lt;br /&gt;
実行中のターミナル (&#039;&#039;term&#039;&#039;inal) の種類が格納されます (例: {{ic|xterm-256color}})。この変数は、ターミナル固有の機能を期待する、ターミナル内で実行されるプログラムによって使用されます ({{man|5|terminfo}} を参照)。この変数は、ターミナルエミュレータによって設定されるため、シェルから上書きすることは推奨されません。&lt;br /&gt;
; TZ:&lt;br /&gt;
ユーザ毎にシステムのタイムゾーンとは異なるタイムゾーンを設定するために使用することができます。{{ic|/usr/share/zoneinfo/}} 内にはタイムゾーンが列挙されているので、これをリファレンスとして使用することができます (例: {{ic|1=TZ=&amp;quot;:/usr/share/zoneinfo/Pacific/Fiji&amp;quot;}})。{{ic|TZ}} 変数に zoneinfo ファイルを指定する場合、[https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html GNU マニュアル] に従ってコロンで始める必要があります。&lt;br /&gt;
&lt;br /&gt;
=== シェル環境の検出 ===&lt;br /&gt;
&lt;br /&gt;
シェル環境を検出するテストは、[https://gitlab.com/jdorel-documentation/shell-environment-detection シェル環境の検出に関して書かれたリポジトリ]を見てください。これには、ログイン/インタラクティブシェル、Xorg セッション、TTY、SSH セッションの検出も含まれています。 &lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Gentoo:Handbook:X86/Working/EnvVar]]&lt;br /&gt;
* [https://help.ubuntu.com/community/EnvironmentVariables Ubuntu Community Wiki - Environment Variables]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Environment variables|2026-03-29|869026}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Zsh&amp;diff=41439</id>
		<title>Zsh</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Zsh&amp;diff=41439"/>
		<updated>2026-03-29T08:05:47Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:コマンドラインシェル]]&lt;br /&gt;
[[de:Zsh]]&lt;br /&gt;
[[en:Zsh]]&lt;br /&gt;
[[es:Zsh]]&lt;br /&gt;
[[hu:Zsh]]&lt;br /&gt;
[[pt:Zsh]]&lt;br /&gt;
[[ru:Zsh]]&lt;br /&gt;
[[zh-hans:Zsh]]&lt;br /&gt;
[https://www.zsh.org/ Zsh] は対話式シェルとしてもスクリプト言語のインタプリタとしても使えるパワフルな[[シェル]]です。POSIX sh と互換性がありながら (デフォルトではありません、{{ic|emulate sh}} を実行した時だけです)、[https://zsh.sourceforge.io/Guide/zshguide06.html タブ補完]の改善や [https://zsh.sourceforge.io/Doc/Release/Expansion.html グロビング]などの利点があります。&lt;br /&gt;
&lt;br /&gt;
[https://zsh.sourceforge.io/FAQ/zshfaq01.html#l4 Zsh FAQ] には他にも Zsh をあなたのシェルとして使うべき理由が列挙されています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
インストールをする前に現在使っているシェルが何なのか知っておくとよいでしょう:&lt;br /&gt;
&lt;br /&gt;
 $ echo $SHELL&lt;br /&gt;
&lt;br /&gt;
{{Pkg|zsh}} パッケージを[[インストール]]してください。追加の補完定義を使いたい場合は、{{pkg|zsh-completions}} パッケージもインストールします。&lt;br /&gt;
&lt;br /&gt;
=== 初期設定 ===&lt;br /&gt;
&lt;br /&gt;
ターミナルで次のコマンドを実行して Zsh が正しくインストールされたか確認してください:&lt;br /&gt;
&lt;br /&gt;
 $ zsh&lt;br /&gt;
&lt;br /&gt;
基本的な設定を説明する &#039;&#039;zsh-newuser-install&#039;&#039; が表示されるはずです。これをスキップしたい場合、{{ic|q}} を押して下さい。表示されない場合は、次のコマンドで手動で呼び出すことができます:&lt;br /&gt;
&lt;br /&gt;
 $ autoload -Uz zsh-newuser-install&lt;br /&gt;
 $ zsh-newuser-install -f&lt;br /&gt;
&lt;br /&gt;
{{Note|あなたのターミナルのサイズが少なくとも 72×15 であることを確認してください。そうでないと &#039;&#039;zsh-newuser-install&#039;&#039; は実行されません。}}&lt;br /&gt;
&lt;br /&gt;
=== Zsh をデフォルトのシェルにする ===&lt;br /&gt;
&lt;br /&gt;
シェルを {{ic|/usr/bin/zsh}} に変更してください。[[コマンドラインシェル#デフォルトシェルを変更する]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{Pkg|bash}} を置き換える場合、{{ic|~/.bashrc}} から {{ic|~/.zshrc}} に (例: プロンプトと[[Bash#エイリアス|エイリアス]]) また {{ic|~/.bash_profile}} から {{ic|~/.zprofile}} に (例: [[ログイン時に X を起動|X Window System を起動するコード]]) にコードを移動するとよいでしょう。}}&lt;br /&gt;
&lt;br /&gt;
== スタートアップ/シャットダウン ファイル ==&lt;br /&gt;
&lt;br /&gt;
{{Tip|インタラクティブシェルとログインシェルの説明、およびスタートアップファイルに何を入れるかについては、[https://zsh.sourceforge.io/Guide/zshguide02.html A User&#039;s Guide to the Z-Shell] を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{ic|$ZDOTDIR}} が設定されていない場合は、代わりに {{ic|$HOME}} が使用されます。&lt;br /&gt;
* {{ic|RCS}} オプションが以下のファイルのどれかで unset された場合、そのファイル以降、設定ファイルは読み込まれません。&lt;br /&gt;
* {{ic|GLOBAL_RCS}} オプションが以下のファイルのどれかで unset された場合、そのファイル以降、グローバルな設定ファイル ({{ic|/etc/zsh/*}}) は読み込まれません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デフォルトで、Zsh は起動時に以下のファイルを以下の順番で実行します (存在しているもののみ実行されます)。&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/zsh/zshenv}} すべてのユーザに対して[[環境変数]]を設定するために使用されます。このファイルには、出力を行うコマンドや、シェルが TTY に接続されていることを期待するコマンドを含めるべきではありません。このファイルが存在する場合、このファイルは &#039;&#039;&#039;&#039;&#039;常に&#039;&#039;&#039;&#039;&#039; 読み込まれます。この挙動を上書きすることはできません。&lt;br /&gt;
* {{ic|$ZDOTDIR/.zshenv}} ユーザの[[環境変数]]を設定するために使用されます。このファイルには、出力を行うコマンドや、シェルが TTY に接続されていることを期待するコマンドを含めるべきではありません。このファイルが存在する場合、このファイルは &#039;&#039;&#039;&#039;&#039;常に&#039;&#039;&#039;&#039;&#039; 読み込まれます。&lt;br /&gt;
* {{ic|/etc/zsh/zprofile}} すべてのユーザに対して起動時にコマンドを実行するために使用されます。&#039;&#039;&#039;&#039;&#039;ログインシェル&#039;&#039;&#039;&#039;&#039;として起動した場合に、このファイルは読み込まれます。Arch Linux においては、このファイルには、{{ic|/etc/profile}} を source する [https://gitlab.archlinux.org/archlinux/packaging/packages/zsh/-/blob/main/zprofile 1行]がデフォルトで含まれていることを留意しておいてください。その行を削除したい場合は以下の警告を先に読んでください!&lt;br /&gt;
** {{ic|/etc/profile}} POSIX sh 互換のシェルはすべて、このファイルをログイン時に source する必要があります。このファイルは {{ic|$PATH}} や他の環境変数を設定し、ログイン時にはアプリケーション固有 ({{ic|/etc/profile.d/*.sh}}) の設定を行います。&lt;br /&gt;
* {{ic|$ZDOTDIR/.zprofile}} 起動時にユーザのコマンドを実行するために使用されます。&#039;&#039;&#039;&#039;&#039;ログインシェル&#039;&#039;&#039;&#039;&#039;として起動した場合に、このファイルは読み込まれます。通常、グラフィカルセッションを自動起動し、セッションの環境変数を設定するために使用されます。&lt;br /&gt;
* {{ic|/etc/zsh/zshrc}} すべてのユーザに対して、インタラクティブシェルを設定したりコマンドを実行したりするために使用されます。&#039;&#039;&#039;&#039;&#039;インタラクティブシェル&#039;&#039;&#039;&#039;&#039;として起動した場合に、このファイルは読み込まれます。&lt;br /&gt;
* {{ic|$ZDOTDIR/.zshrc}} ユーザのインタラクティブシェルを設定したり、コマンドを実行したりするために使用されます。&#039;&#039;&#039;&#039;&#039;インタラクティブシェル&#039;&#039;&#039;&#039;&#039;として起動した場合に、このファイルは読み込まれます。&lt;br /&gt;
* {{ic|/etc/zsh/zlogin}} すべてのユーザに対して初期化処理の最後にコマンドを実行するために使用されます。&#039;&#039;&#039;&#039;&#039;ログインシェル&#039;&#039;&#039;&#039;&#039;として起動した場合に、このファイルは読み込まれます。&lt;br /&gt;
* {{ic|$ZDOTDIR/.zlogin}} 初期化処理の最後にユーザのコマンドを実行するために使用されます。&#039;&#039;&#039;&#039;&#039;ログインシェル&#039;&#039;&#039;&#039;&#039;として起動した場合に、このファイルは読み込まれます。通常、コマンドラインユーティリティを自動起動するために使用されます。グラフィカルセッションを自動起動するために使用するべきではありません (この時点では、インタラクティブシェルにおいてのみ意味を持つ設定がセッションに含まれているかもしれないからです)。&lt;br /&gt;
* {{ic|$ZDOTDIR/.zlogout}} &#039;&#039;&#039;&#039;&#039;ログインシェル&#039;&#039;&#039;&#039;&#039; が &#039;&#039;&#039;終了&#039;&#039;&#039; する時にコマンドを実行するために使用されます。&lt;br /&gt;
* {{ic|/etc/zsh/zlogout}} &#039;&#039;&#039;&#039;&#039;ログインシェル&#039;&#039;&#039;&#039;&#039; が &#039;&#039;&#039;終了&#039;&#039;&#039; する時にすべてのユーザに対してコマンドを実行するために使用されます。&lt;br /&gt;
&lt;br /&gt;
[https://web.archive.org/web/20241008050626/https://blog.flowblok.id.au/2013-02/shell-startup-scripts.html#implementation この流れを図で表したもの]も参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|$HOME/.profile}} は Zsh のスタートアップファイルの一部ではありません。さらに、Zsh によって &#039;&#039;&#039;source されません&#039;&#039;&#039; (Zsh が {{ic|sh}} か {{ic|ksh}} として実行され、ログインシェルとして起動しない限り)。sh や [[ksh]] との互換性モードに関する詳細は {{man|1|zsh|COMPATIBILITY}} を見てください。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|/etc/zsh/zprofile}} 内にデフォルトで存在する [https://gitlab.archlinux.org/archlinux/packaging/packages/zsh/-/blob/main/zprofile 一行]を削除しないでください。さもないと、{{ic|/etc/profile.d/}} 内へスクリプトを提供するパッケージの整合性が破壊されてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
== Zsh の設定 ==&lt;br /&gt;
&lt;br /&gt;
Zsh は何も設定しなくても使うことができますが、ほとんどのユーザが使いたいと思うようには設定されていないことはほぼ確実です。ただし、Zsh で利用できるカスタマイズの量は膨大で、Zsh を設定するのは大変で時間を浪費する経験となるでしょう。自動的に設定するには [[#サードパーティ拡張]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== シンプルな .zshrc ===&lt;br /&gt;
&lt;br /&gt;
以下は設定ファイルのサンプルです。デフォルトのオプションの適切なセットと共に、Zsh でカスタマイズ可能な方法の例を提供します。この設定を使うには、{{ic|.zshrc}} という名前のファイルに保存してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ログアウトせずに変更を適用するには {{ic|source ~/.zshrc}} を実行してください。}}&lt;br /&gt;
&lt;br /&gt;
これはシンプルな {{ic|.zshrc}} です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&lt;br /&gt;
autoload -Uz compinit promptinit&lt;br /&gt;
compinit&lt;br /&gt;
promptinit&lt;br /&gt;
&lt;br /&gt;
# デフォルトのプロンプトを walters テーマに設定する&lt;br /&gt;
prompt walters&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
プロンプトテーマシステムに関する詳細は [[#プロンプトテーマ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== $PATH の設定 ===&lt;br /&gt;
&lt;br /&gt;
Zsh は {{ic|PATH}} 変数を {{ic|path}} 配列に結びつけます。これにより、{{ic|path}} 配列を変更するだけで {{ic|PATH}} 変数を操作することができます。詳細は [https://zsh.sourceforge.io/Guide/zshguide02.html#l24 A User&#039;s Guide to the Z-Shell] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.local/bin/}} を {{ic|PATH}} に追加するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshenv|2=&lt;br /&gt;
typeset -U path PATH&lt;br /&gt;
path=(~/.local/bin $path)&lt;br /&gt;
export PATH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== コマンド補完 ===&lt;br /&gt;
&lt;br /&gt;
Zsh の一番魅力的な機能はおそらく先進的な自動補完機能でしょう。少なくとも {{ic|.zshrc}} で自動補完を有効化してください。自動補完を有効にするには、以下を {{ic|~/.zshrc}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&lt;br /&gt;
autoload -Uz compinit&lt;br /&gt;
compinit&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の設定には ssh/scp/sftp ホスト名の補完が含まれていますが、この機能を動作させるためにはユーザは ssh のホスト名ハッシュ化 (つまり、ssh クライアントの設定の {{ic|HashKnownHosts}} オプション) を有効化してはなりません。&lt;br /&gt;
&lt;br /&gt;
矢印キーを使うインターフェイスで自動補完を行うには、以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&lt;br /&gt;
zstyle &#039;:completion:*&#039; menu select&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
メニューをアクティブにするには、{{ic|Tab}} を2回押してください。&lt;br /&gt;
&lt;br /&gt;
特権が与えられたコマンドで特権環境の自動補完を有効化するには (例えば、[[sudo]] で始まるコマンドを補完する場合、補完スクリプトは sudo の補完もしようと試みます)、以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&lt;br /&gt;
zstyle &#039;:completion::complete:*&#039; gain-privileges 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|これにより、Zsh の補完スクリプトが sudo 特権でコマンドを実行できてしまいます。信頼できない補完スクリプトを使用する場合はこれを有効化すべきではありません。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|この特殊な種類の文脈依存の補完は、少数のコマンドでしか利用できません。}}&lt;br /&gt;
&lt;br /&gt;
==== カスタムの補完 ====&lt;br /&gt;
&lt;br /&gt;
カスタムの補完を自分で作ることもできます。詳細は {{man|1|zshcompsys}} man ページを参照してください。&lt;br /&gt;
&lt;br /&gt;
公式のドキュメントは難解かもしれません。簡単なスタートポイントとして、よりシンプルな [https://github.com/zsh-users/zsh-completions/blob/master/zsh-completions-howto.org zsh-completion-howto] チュートリアルもあります。&lt;br /&gt;
&lt;br /&gt;
=== キーバインド ===&lt;br /&gt;
&lt;br /&gt;
Zsh は [[readline]] を使用しません。代わりに、よりパワフルな独自の Zsh Line Editor (ZLE) を使用します。ZLE は {{ic|/etc/inputrc}} と {{ic|~/.inputrc}} のどちらも読み込みません。ZLE 設定のイントロダクションは [https://sgeb.io/posts/2014/04/zsh-zle-custom-widgets/ A closer look at the zsh line editor and creating custom widgets] を読んでください。&lt;br /&gt;
&lt;br /&gt;
ZLE には [[Emacs]] モードと [[vi]] モードがあります。{{ic|VISUAL}} か {{ic|EDITOR}} のどちらか一方の[[環境変数]]に {{ic|vi}} という文字列が含まれている場合、vi モードが使用されます。それ以外の場合、Emacs モードをデフォルトで使用します。{{ic|bindkey -e}} (Emacs モード) や {{ic|bindkey -v}} (vi モード) でモードを明示的に設定することもできます。デフォルトでは、vi モードでの Esc キーを押した時の遅延は 0.4 秒ですが、{{ic|1=export KEYTIMEOUT=5}} でより短く (0.05 秒) することができます。&lt;br /&gt;
&lt;br /&gt;
キーバインドは、キープレスに対応するエスケープシーケンスを ZLE ウィジェットにマッピングすることにより割り当てます。利用可能なウィジェットは {{man|1|zshzle|STANDARD WIDGETS}} と {{man|1|zshcontrib|ZLE FUNCTIONS}} にリストアップされています (アクションとデフォルトのキーバインドの説明付き)。&lt;br /&gt;
&lt;br /&gt;
Zsh でキーバインドを設定する方法として推奨されるのは、{{man|5|terminfo}} の文字列ケーパビリティを使用することです。例えば [https://web.archive.org/web/20180704181216/http://zshwiki.org/home/zle/bindkeys][https://www.zsh.org/mla/users/2010/msg00065.html]:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|2=&lt;br /&gt;
# zkbd と互換性のあるハッシュテーブルを作成し、&lt;br /&gt;
# 他のキーをこのハッシュテーブルに追加する (man 5 terminfo を参照)&lt;br /&gt;
typeset -g -A key&lt;br /&gt;
&lt;br /&gt;
key[Home]=&amp;quot;${terminfo[khome]}&amp;quot;&lt;br /&gt;
key[End]=&amp;quot;${terminfo[kend]}&amp;quot;&lt;br /&gt;
key[Insert]=&amp;quot;${terminfo[kich1]}&amp;quot;&lt;br /&gt;
key[Backspace]=&amp;quot;${terminfo[kbs]}&amp;quot;&lt;br /&gt;
key[Delete]=&amp;quot;${terminfo[kdch1]}&amp;quot;&lt;br /&gt;
key[Up]=&amp;quot;${terminfo[kcuu1]}&amp;quot;&lt;br /&gt;
key[Down]=&amp;quot;${terminfo[kcud1]}&amp;quot;&lt;br /&gt;
key[Left]=&amp;quot;${terminfo[kcub1]}&amp;quot;&lt;br /&gt;
key[Right]=&amp;quot;${terminfo[kcuf1]}&amp;quot;&lt;br /&gt;
key[PageUp]=&amp;quot;${terminfo[kpp]}&amp;quot;&lt;br /&gt;
key[PageDown]=&amp;quot;${terminfo[knp]}&amp;quot;&lt;br /&gt;
key[Shift-Tab]=&amp;quot;${terminfo[kcbt]}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 適宜キーを設定する&lt;br /&gt;
[[ -n &amp;quot;${key[Home]}&amp;quot;      ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Home]}&amp;quot;       beginning-of-line&lt;br /&gt;
[[ -n &amp;quot;${key[End]}&amp;quot;       ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[End]}&amp;quot;        end-of-line&lt;br /&gt;
[[ -n &amp;quot;${key[Insert]}&amp;quot;    ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Insert]}&amp;quot;     overwrite-mode&lt;br /&gt;
[[ -n &amp;quot;${key[Backspace]}&amp;quot; ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Backspace]}&amp;quot;  backward-delete-char&lt;br /&gt;
[[ -n &amp;quot;${key[Delete]}&amp;quot;    ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Delete]}&amp;quot;     delete-char&lt;br /&gt;
[[ -n &amp;quot;${key[Up]}&amp;quot;        ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Up]}&amp;quot;         up-line-or-history&lt;br /&gt;
[[ -n &amp;quot;${key[Down]}&amp;quot;      ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Down]}&amp;quot;       down-line-or-history&lt;br /&gt;
[[ -n &amp;quot;${key[Left]}&amp;quot;      ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Left]}&amp;quot;       backward-char&lt;br /&gt;
[[ -n &amp;quot;${key[Right]}&amp;quot;     ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Right]}&amp;quot;      forward-char&lt;br /&gt;
[[ -n &amp;quot;${key[PageUp]}&amp;quot;    ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[PageUp]}&amp;quot;     beginning-of-buffer-or-history&lt;br /&gt;
[[ -n &amp;quot;${key[PageDown]}&amp;quot;  ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[PageDown]}&amp;quot;   end-of-buffer-or-history&lt;br /&gt;
[[ -n &amp;quot;${key[Shift-Tab]}&amp;quot; ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Shift-Tab]}&amp;quot;  reverse-menu-complete&lt;br /&gt;
&lt;br /&gt;
# 最後に、zle がアクティブのときにターミナルがアプリケーションモードになるようにする。&lt;br /&gt;
# そのときにだけ、$terminfo の値が有効になる。&lt;br /&gt;
if (( ${+terminfo[smkx]} &amp;amp;&amp;amp; ${+terminfo[rmkx]} )); then&lt;br /&gt;
	autoload -Uz add-zle-hook-widget&lt;br /&gt;
	function zle_application_mode_start { echoti smkx }&lt;br /&gt;
	function zle_application_mode_stop { echoti rmkx }&lt;br /&gt;
	add-zle-hook-widget -Uz zle-line-init zle_application_mode_start&lt;br /&gt;
	add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop&lt;br /&gt;
fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 修飾キー Shift、Alt、Ctrl、Meta ====&lt;br /&gt;
&lt;br /&gt;
xterm 互換端末は {{man|5|user_caps}} からの拡張キー定義を使うことができます。キー定義は、{{ic|Shift}}、{{ic|Alt}}、{{ic|Ctrl}}、{{ic|Meta}} と、{{ic|Up}}、{{ic|Down}}、{{ic|Left}}、{{ic|Right}}、{{ic|PageUp}}、{{ic|PageDown}}、{{ic|Home}}、{{ic|End}}、{{ic|Del}} のどれかを組み合わせたものです。修飾キーとキーの組み合わせに推奨される名前の一覧については、[https://sourceforge.net/p/zsh/code/ci/master/tree/Functions/Misc/zkbd zkbd のソース] を参照してください。&lt;br /&gt;
&lt;br /&gt;
たとえば、 {{ic|Ctrl+Left}} で前の単語の先頭に移動し、{{ic|Ctrl+Right}} で次の単語の先頭に移動させるには:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|2=&lt;br /&gt;
key[Control-Left]=&amp;quot;${terminfo[kLFT5]}&amp;quot;&lt;br /&gt;
key[Control-Right]=&amp;quot;${terminfo[kRIT5]}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[ -n &amp;quot;${key[Control-Left]}&amp;quot;  ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Control-Left]}&amp;quot;  backward-word&lt;br /&gt;
[[ -n &amp;quot;${key[Control-Right]}&amp;quot; ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Control-Right]}&amp;quot; forward-word&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 履歴 ===&lt;br /&gt;
&lt;br /&gt;
空白で始まるコマンドを履歴リストで無視するには、コマンドプロンプトか {{ic|.zshrc}} で {{ic|setopt HIST_IGNORE}} を実行してください。ただし、{{ic|setopt HIST_IGNORE}} では、別のコマンドが実行されるまで、最後に実行したコマンドは、{{ic|Up}} キーを押すなどして再度表示させることができます。{{ic|setopt &#039;&#039;OPT&#039;&#039;}} コマンドを取り消すには、{{ic|unsetopt &#039;&#039;OPT&#039;&#039;}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、履歴は {{ic|HISTSIZE}} (30) のサイズまで保持されます。これは、ターミナル毎に分かれており、リストからエントリを削除することはできず、セッション毎に保存もされません。{{ic|HISTFILE}} を設定することで、履歴リストをセッション毎に保存することができます。&lt;br /&gt;
&lt;br /&gt;
==== 履歴検索 ====&lt;br /&gt;
&lt;br /&gt;
以下の手順を使うには、{{ic|key}} 配列を設定し、ZLE がアプリケーションモードとなるようにする必要があります。[[#キーバインド]] を見てください。&lt;br /&gt;
&lt;br /&gt;
履歴検索を有効化するには、以下を {{ic|.zshrc}} ファイルに追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&lt;br /&gt;
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search&lt;br /&gt;
zle -N up-line-or-beginning-search&lt;br /&gt;
zle -N down-line-or-beginning-search&lt;br /&gt;
&lt;br /&gt;
[[ -n &amp;quot;${key[Up]}&amp;quot;   ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Up]}&amp;quot;   up-line-or-beginning-search&lt;br /&gt;
[[ -n &amp;quot;${key[Down]}&amp;quot; ]] &amp;amp;&amp;amp; bindkey -- &amp;quot;${key[Down]}&amp;quot; down-line-or-beginning-search&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これにより、{{ic|Up}} か {{ic|Down}} を押したときに、現在の行のカーソル位置までにマッチする過去のコマンドだけが表示されます。&lt;br /&gt;
&lt;br /&gt;
=== プロンプト ===&lt;br /&gt;
&lt;br /&gt;
Zsh は2つの選択肢を提供します: プロンプトテーマを使用するか、テーマに不満がある (または、テーマの使いやすさを自分で拡張したい) ユーザはカスタムのプロンプトを構築できます。&lt;br /&gt;
&lt;br /&gt;
==== プロンプトテーマ ====&lt;br /&gt;
&lt;br /&gt;
プロンプトテーマは、Zsh で色付きのプロンプトを設定するための手っ取り早く簡単な方法です。プロンプトテーマや、プロンプトテーマを自分で記述する方法については {{man|1|zshcontrib|PROMPT THEMES}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
テーマを使用するには、プロンプトテーマシステムが自動でロードされるように {{ic|.zshrc}} で設定されていることを確認してください。自動ロードを行うには、以下の行を追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&lt;br /&gt;
autoload -Uz promptinit&lt;br /&gt;
promptinit&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
以下のコマンドで、利用可能なプロンプトテーマをリストアップできます:&lt;br /&gt;
&lt;br /&gt;
 $ prompt -l&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|walters}} テーマを使うには:&lt;br /&gt;
&lt;br /&gt;
 $ prompt walters&lt;br /&gt;
&lt;br /&gt;
利用可能なテーマをすべてプレビューするには:&lt;br /&gt;
&lt;br /&gt;
 $ prompt -p&lt;br /&gt;
&lt;br /&gt;
===== プロンプトテーマを手動でインストールする =====&lt;br /&gt;
&lt;br /&gt;
外部の設定管理ツールを使わずに、テーマを手動でインストールすることもできます。ローカルにインストールする場合、まずフォルダを作成し、そのフォルダのパスを {{ic|fpath}} 配列に追加してください。例えば:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/.zprompts&lt;br /&gt;
 $ fpath=(&amp;quot;$HOME/.zprompts&amp;quot; &amp;quot;$fpath[@]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
次に、このフォルダ内にテーマファイルのシンボリックリンクを作成します:&lt;br /&gt;
&lt;br /&gt;
 $ ln -s mytheme.zsh ~/.zprompts/prompt_mytheme_setup&lt;br /&gt;
&lt;br /&gt;
代わりにテーマをグローバルにインストールする場合は、次のようにします:&lt;br /&gt;
&lt;br /&gt;
 # ln -s mytheme.zsh /usr/share/zsh/functions/Prompts/prompt_mytheme_setup&lt;br /&gt;
&lt;br /&gt;
これで、次のコマンドを使ってアクティブ化できるはずです:&lt;br /&gt;
&lt;br /&gt;
 $ prompt mytheme&lt;br /&gt;
&lt;br /&gt;
すべてが機能する場合は、{{ic|.zshrc}} を適宜編集することができます。&lt;br /&gt;
&lt;br /&gt;
===== テーマごとにファイルを分けずにプロンプトテーマを追加する =====&lt;br /&gt;
&lt;br /&gt;
プロンプトテーマは、テーマのファイルを使って追加するだけでなく、ある1つのファイル (例えば {{ic|.zshrc}}) 内からテーマを追加することもできます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|2=&lt;br /&gt;
# promptinit をロードする&lt;br /&gt;
autoload -Uz promptinit &amp;amp;&amp;amp; promptinit&lt;br /&gt;
&lt;br /&gt;
# テーマを定義する&lt;br /&gt;
prompt_mytheme_setup() {&lt;br /&gt;
  PS1=&amp;quot;%~%# &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# promptsys にそのテーマを追加する&lt;br /&gt;
prompt_themes+=( mytheme )&lt;br /&gt;
&lt;br /&gt;
# テーマをロードする&lt;br /&gt;
prompt mytheme&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== プロンプトのカスタマイズ ====&lt;br /&gt;
&lt;br /&gt;
すべてのシェルで一般的な主要な左側のプロンプト {{ic|PS1}} ({{ic|PROMPT}}、{{ic|prompt}}) に加えて、Zsh では右側のプロンプト {{ic|RPS1}} ({{ic|RPROMPT}}) もサポートしています。これら2つの変数は、好きな値にカスタムできます。&lt;br /&gt;
&lt;br /&gt;
他の特殊な目的のためのプロンプト ({{ic|PS2}} ({{ic|PROMPT2}})、{{ic|PS3}} ({{ic|PROMPT3}})、{{ic|PS4}} ({{ic|PROMPT4}})、{{ic|RPS1}} ({{ic|RPROMPT}})、{{ic|RPS2}} ({{ic|RPROMPT2}})、{{ic|SPROMPT}} など) は {{man|1|zshparam|PARAMETERS USED BY THE SHELL}} で説明されています。&lt;br /&gt;
&lt;br /&gt;
すべてのプロンプトは、プロンプトエスケープでカスタマイズできます (例えば、{{ic|%n}} はユーザ名になります)。利用可能なプロンプトエスケープは {{man|1|zshmisc|EXPANSION OF PROMPT SEQUENCES}} でリストアップされています。&lt;br /&gt;
&lt;br /&gt;
===== 色 =====&lt;br /&gt;
&lt;br /&gt;
Zsh は、[[Bash/プロンプトのカスタマイズ|Bash]] とは異なる方法で色を設定します。ANSI エスケープシーケンスや、{{man|5|terminfo}} のターミナルケーパビリティを多用する必要はありません。Zsh は、前景色、背景色、他の視覚エフェクトを設定するための便利なプロンプトエスケープを提供します。エスケープのリストや説明は {{man|1|zshmisc|Visual effects}} を見てください。&lt;br /&gt;
&lt;br /&gt;
[https://zsh.sourceforge.io/FAQ/zshfaq03.html#l42 色]を指定する方法は3つあります: 10進数の整数、8つの広くサポートされている色の名前、# のあとに16進数の RGB トリプレット。詳細は {{man|1|zshzle|CHARACTER HIGHLIGHTING}} 内の fg=colour の説明を見てください。&lt;br /&gt;
&lt;br /&gt;
ほとんどのターミナルは以下の色を名前でサポートしています:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 名前 !! 番号&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|black}} || {{ic|0}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|red}} || {{ic|1}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|green}} || {{ic|2}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|yellow}} || {{ic|3}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|blue}} || {{ic|4}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|magenta}} || {{ic|5}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|cyan}} || {{ic|6}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|white}} || {{ic|7}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
xterm 256 color と互換性のあるターミナルエミュレータの色番号 0 から 255 は、[https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg xterm-256color チャート]で見られます。&lt;br /&gt;
&lt;br /&gt;
TERM 環境変数が正しく設定されていれば、ターミナルのサポートする色の最大数は、{{man|5|terminfo}} データベースから {{ic|echoti colors}} を使って確認することができます。[https://github.com/termstandard/colors/blob/master/README.md 24-bit カラー]の場合は、{{ic|print $COLORTERM}} を使って COLORTERM 環境変数も確認してください。{{ic|24bit}} か {{ic|truecolor}} を返した場合、たとえ terminfo がより少ない数値を表示したとしても、あなたのターミナルは 16777216 (2&amp;lt;sup&amp;gt;24&amp;lt;/sup&amp;gt;) 色をサポートしています。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 0 から 15 の色は、ターミナルエミュレータやカラースキームごとに異なる場合があります。&lt;br /&gt;
* 多くのターミナルエミュレータは、太文字を明るい色で表示します。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* プロンプトのエスケープは {{ic|print -P &#039;&#039;&amp;quot;prompt escapes&amp;quot;&#039;&#039;}} コマンドでテストできます。例えば、{{bc|$ print -P &#039;%B%F{red}co%F{green}lo%F{blue}rs%f%b&#039;}}&lt;br /&gt;
* 24 ビットカラーを使用する場合、24 ビットカラーをサポートしていないターミナルでは {{ic|zsh/nearcolor}} モジュールをロードする必要があるかもしれません。例えば: {{bc|&amp;lt;nowiki&amp;gt;[[ &amp;quot;$COLORTERM&amp;quot; == (24bit|truecolor) || &amp;quot;${terminfo[colors]}&amp;quot; -eq &#039;16777216&#039; ]] || zmodload zsh/nearcolor&amp;lt;/nowiki&amp;gt;}} {{ic|zsh/nearcolor}} モジュールに関する詳細は {{man|1|zshmodules|THE ZSH/NEARCOLOR MODULE}} を見てください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== 例 =====&lt;br /&gt;
&lt;br /&gt;
これは、シンプルな色無しのプロンプトの例です:&lt;br /&gt;
&lt;br /&gt;
 PROMPT=&#039;%n@%m %~ %# &#039;&lt;br /&gt;
&lt;br /&gt;
以下のように出力されます:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-no-invert&amp;quot; style=&amp;quot;font-family: monospace, monospace; white-space: pre; padding: 1em; background-color: #000; border: 1px solid #bcd; color: #c0c0c0; overflow:hidden;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;float:left;&amp;quot;&amp;gt;username@host ~ % &amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、色付きの左右両方のプロンプトの例です:&lt;br /&gt;
&lt;br /&gt;
 PROMPT=&#039;%F{green}%n%f@%F{magenta}%m%f %F{blue}%B%~%b%f %# &#039;&lt;br /&gt;
 RPROMPT=&#039;[%F{yellow}%?%f]&#039;&lt;br /&gt;
&lt;br /&gt;
以下のように出力されます:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-no-invert&amp;quot; style=&amp;quot;font-family: monospace, monospace; white-space: pre; padding: 1em; background-color: #000; border: 1px solid #bcd; color: #c0c0c0; overflow: hidden;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;float:left;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: #008000;&amp;quot;&amp;gt;username&amp;lt;/span&amp;gt;@&amp;lt;span style=&amp;quot;color: #800080;&amp;quot;&amp;gt;host&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #0000ff;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt; % &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;float:right;&amp;quot;&amp;gt;[&amp;lt;span style=&amp;quot;color: #808000;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
16-255 の範囲の色は、欲しい色に割り当てた 0 から 255 までの数値を使うことで使用できます。また、24 ビットトゥルーカラーは16進数のカラーコードを使うことで使用できます:&lt;br /&gt;
&lt;br /&gt;
 PROMPT=&#039;%F{2}%n%f@%F{5}%m%f %F{4}%B%~%b%f %# &#039;&lt;br /&gt;
 RPROMPT=&#039;[%F{3}%?%f]&#039;&lt;br /&gt;
&lt;br /&gt;
 PROMPT=&#039;%F{#c0c0c0}%n%f@%F{#008000}%m%f %F{#800080}%B%~%b%f %# &#039;&lt;br /&gt;
 RPROMPT=&#039;[%F{#0000ff}%?%f]&#039;&lt;br /&gt;
&lt;br /&gt;
=== サンプルの .zshrc ファイル ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.archlinux.jp/download/ 月次 ISO リリース] (デフォルトで Zsh を使用します) と同じセットアップにするには、{{Pkg|grml-zsh-config}} をインストールしてください。これには、[https://grml.org/zsh/ grml] の多くの調整と高度な最適化が含まれています。&lt;br /&gt;
* https://github.com/MrElendig/dotfiles-alice/blob/master/.zshrc - ベーシックなセットアップ。動的なプロンプトとウィンドウのタイトル/hardinfo。&lt;br /&gt;
&lt;br /&gt;
さらに見たい場合は [[ドットファイル#ユーザーリポジトリ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ログイン時に X を自動起動 ===&lt;br /&gt;
&lt;br /&gt;
[[xinit#ログイン時に X を自動起動]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== プログラムが異常終了した後、端末の設定を復元する ===&lt;br /&gt;
&lt;br /&gt;
多くのプログラムはターミナルの状態を変更し、異常終了したときにターミナルの設定を復元しないことがあります (例えば、クラッシュしたときや、SIGINT を受け取ったとき)。&lt;br /&gt;
&lt;br /&gt;
通常、これは {{man|1|reset}} を実行することで解決できます:&lt;br /&gt;
&lt;br /&gt;
 $ reset&lt;br /&gt;
&lt;br /&gt;
以下のセクションでは、手動でターミナルをリセットする手間を省く方法について説明します。&lt;br /&gt;
&lt;br /&gt;
==== ttyctl コマンド ====&lt;br /&gt;
&lt;br /&gt;
[https://zsh.sourceforge.io/Doc/Release/Shell-Builtin-Commands.html#index-tty_002c-freezing ttyctl] コマンドを使ってターミナルを &amp;quot;freeze/unfreeze&amp;quot; することができます。起動時にインタラクティブシェルを freeze させるには、以下を使用してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&lt;br /&gt;
ttyctl -f&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== エスケープシーケンスで端末をリセットする ====&lt;br /&gt;
&lt;br /&gt;
[https://www.in-ulm.de/~mascheck/various/alternate_charset/ 代替の線画文字セット]は、ttyctl が防ぐことができない方法でターミナルを台無しにしてしまうことがあります。&lt;br /&gt;
&lt;br /&gt;
シンプルな解決法は、ターミナルをリセットするエスケープシーケンスを {{ic|precmd}} フック関数から出力することです。そうすれば、プロンプトが描画される前に毎回、そのエスケープシーケンスが出力されます。例えば、[https://www.in-ulm.de/~mascheck/various/alternate_charset/#solution エスケープシーケンス] {{ic|\e[0m\e(B\e)0\017\e[?5l\e7\e[0;0r\e8}} を使うと:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|2=&lt;br /&gt;
&lt;br /&gt;
autoload -Uz add-zsh-hook&lt;br /&gt;
&lt;br /&gt;
function reset_broken_terminal () {&lt;br /&gt;
	printf &#039;%b&#039; &#039;\e[0m\e(B\e)0\017\e[?5l\e7\e[0;0r\e8&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
add-zsh-hook -Uz precmd reset_broken_terminal&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
うまく行くか試すには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ print &#039;\e(0\e)B&#039;&lt;br /&gt;
&lt;br /&gt;
=== 最近のディレクトリを記憶させる ===&lt;br /&gt;
&lt;br /&gt;
==== Dirstack ====&lt;br /&gt;
&lt;br /&gt;
Zsh は、最後に訪れたフォルダのうち DIRSTACKSIZE 個を記憶するように設定できます。この機能を活用すれば、それらのフォルダへ非常に素早く &#039;&#039;cd&#039;&#039; することができます。設定ファイルにいくつかの行を追加する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
autoload -Uz add-zsh-hook&lt;br /&gt;
&lt;br /&gt;
DIRSTACKFILE=&amp;quot;${XDG_CACHE_HOME:-$HOME/.cache}/zsh/dirs&amp;quot;&lt;br /&gt;
if [[ -f &amp;quot;$DIRSTACKFILE&amp;quot; ]] &amp;amp;&amp;amp; (( ${#dirstack} == 0 )); then&lt;br /&gt;
	dirstack=(&amp;quot;${(@f)&amp;quot;$(&amp;lt; &amp;quot;$DIRSTACKFILE&amp;quot;)&amp;quot;}&amp;quot;)&lt;br /&gt;
	[[ -d &amp;quot;${dirstack[1]}&amp;quot; ]] &amp;amp;&amp;amp; cd -- &amp;quot;${dirstack[1]}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
chpwd_dirstack() {&lt;br /&gt;
	print -l -- &amp;quot;$PWD&amp;quot; &amp;quot;${(u)dirstack[@]}&amp;quot; &amp;gt; &amp;quot;$DIRSTACKFILE&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
add-zsh-hook -Uz chpwd chpwd_dirstack&lt;br /&gt;
&lt;br /&gt;
DIRSTACKSIZE=&#039;20&#039;&lt;br /&gt;
&lt;br /&gt;
setopt AUTO_PUSHD PUSHD_SILENT PUSHD_TO_HOME&lt;br /&gt;
&lt;br /&gt;
## 重複するエントリを削除する&lt;br /&gt;
setopt PUSHD_IGNORE_DUPS&lt;br /&gt;
&lt;br /&gt;
## +/- 演算子をもとに戻す。&lt;br /&gt;
setopt PUSHD_MINUS&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
これで、以下のコマンドを使えば dirstack を出力できます。&lt;br /&gt;
&lt;br /&gt;
 $ dirs -v&lt;br /&gt;
&lt;br /&gt;
訪れたフォルダに戻るには {{ic|cd -&amp;lt;NUM&amp;gt;}} を使ってください。ダッシュ記号の後でオートコンプリートを使ってください。オートコンプリートメニューを使う場合に便利です。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 2つ以上の &#039;&#039;zsh&#039;&#039; セッションを開いていて {{ic|cd}} を試みた場合、両方のセッションが同じファイルに書き込むことで競合が発生するため、これは機能しません。&lt;br /&gt;
* {{ic|no such file or directory}} エラーが発生しないように、{{ic|$HOME/.cache/zsh}} ディレクトリを作成して下さい。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== cdr ====&lt;br /&gt;
&lt;br /&gt;
cdr により、自動的に管理されるリストを使って現在の作業ディレクトリから以前の作業ディレクトリに移動することができます。cdr は、現在のセッションでセッション間および (デフォルトで) ターミナルエミュレータ間で管理されるファイルにすべてのエントリを保存します。&lt;br /&gt;
&lt;br /&gt;
セットアップの手順は {{man|1|zshcontrib|REMEMBERING RECENT DIRECTORIES}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== zoxide ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|zoxide}} は、よりスマートな &#039;&#039;cd&#039;&#039; コマンドで、数個のキーストロークで好きな場所に移動できます。zoxide は、頻繁に使用されるディレクトリを記憶し、スコアリングメカニズムを使って、あなたが行きたい場所を推測します。&lt;br /&gt;
&lt;br /&gt;
詳細は [https://github.com/ajeetdsouza/zoxide] か {{man|1|zoxide}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ヘルプコマンド ===&lt;br /&gt;
&lt;br /&gt;
[[Bash]] とは違い、Zsh は組み込みの {{ic|help}} コマンドを有効化しておらず、代わりに {{ic|run-help}} を提供しています。デフォルトでは、{{ic|run-help}} は {{ic|man}} のエイリアスとなっています。コマンドの前に {{ic|run-help}} と付けることで実行できますし、または今タイプしたコマンドに対してキーボードショートカット {{ic|Alt+h}} か {{ic|Esc}} {{ic|h}} を入力することでも実行できます。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは [[man]] のエイリアスとなっているので、外部コマンドに対してしか動作しません。シェルの組み込みコマンドやシェルの他の機能でも動作するようにするには、{{ic|run-help}} 関数を使う必要があります。{{ic|run-help}} や補助関数については {{man|1|zshcontrib}} を見てください。&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|run-help}} 関数をロードし、その次に既存の {{ic|run-help}} エイリアスを削除してください。{{ic|help}} は {{ic|run-help}} へのエイリアスにすることもできます。例えば、以下を {{ic|zshrc}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
 autoload -Uz run-help&lt;br /&gt;
 (( ${+aliases[run-help]} )) &amp;amp;&amp;amp; unalias run-help&lt;br /&gt;
 alias help=run-help&lt;br /&gt;
&lt;br /&gt;
補助関数は別で有効化する必要があります:&lt;br /&gt;
&lt;br /&gt;
 autoload -Uz run-help-git run-help-ip run-help-openssl run-help-p4 run-help-sudo run-help-svk run-help-svn&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|run-help git commit}} コマンドは、{{man|1|git}} ではなく {{man|1|git-commit}} の [[man ページ]]を開きます。&lt;br /&gt;
&lt;br /&gt;
=== 継続的に rehash する ===&lt;br /&gt;
&lt;br /&gt;
たいてい、{{man|1|zshcompsys|Use of compinit}} の {{ic|compinit}} は {{ic|$PATH}} 内の新しい実行ファイルを自動的には見つけません。例えば、新しいパッケージをインストールした後、{{ic|/usr/bin/}} 内に追加された新しいファイルは即座に、または自動的には補完に含まれないでしょう。なので、そのような新しい実行ファイルを補完に含めるには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ rehash&lt;br /&gt;
&lt;br /&gt;
この &#039;rehash&#039; は、自動的に実行するよう設定できます。[https://github.com/robbyrussell/oh-my-zsh/issues/3440] 以下を {{ic|zshrc}} に追加するだけです:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&lt;br /&gt;
zstyle &#039;:completion:*&#039; rehash true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 必要なときにだけ rehash する ====&lt;br /&gt;
&lt;br /&gt;
しかし、[[pacman フック]]を使って、自動的に {{ic|rehash}} を要求するように設定できます。こうすれば、先のセクションのように継続的に rehash してパフォーマンスが劣化してしまうようなことは起こりません。これを有効化するには、{{ic|/etc/pacman.d/hooks}} ディレクトリと {{ic|/var/cache/zsh}}  ディレクトリを作成し、フックファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=/etc/pacman.d/hooks/zsh-rehash.hook|output=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/bin/*&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = zsh&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
Exec = /usr/bin/install -Dm644 /dev/null /var/cache/zsh/pacman&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|/var/cache/zsh/pacman}} ファイルの変更日時を、最後にパッケージをインストール/アップグレード/アンインストールした時間に合わせます。次に、{{ic|zsh}} のコマンドキャッシュが古くなったときにコマンドキャッシュを rehash するように設定します。以下を {{ic|~/.zshrc}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
zshcache_time=&amp;quot;$(date +%s%N)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
autoload -Uz add-zsh-hook&lt;br /&gt;
&lt;br /&gt;
rehash_precmd() {&lt;br /&gt;
  if [[ -a /var/cache/zsh/pacman ]]; then&lt;br /&gt;
    local paccache_time=&amp;quot;$(date -r /var/cache/zsh/pacman +%s%N)&amp;quot;&lt;br /&gt;
    if (( zshcache_time &amp;lt; paccache_time )); then&lt;br /&gt;
      rehash&lt;br /&gt;
      zshcache_time=&amp;quot;$paccache_time&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
add-zsh-hook -Uz precmd rehash_precmd&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/cache/zsh/pacman}} が更新されるまえに {{ic|precmd}} フックがトリガーされた場合、新しいプロンプトが始まるまで補完が効かないかもしれません。そういうときは、空のコマンドを実行すれば良いはずです (例えば、{{ic|enter}} を押す)。&lt;br /&gt;
&lt;br /&gt;
==== SIGUSR1 を使って必要なときにだけ rehash する ====&lt;br /&gt;
&lt;br /&gt;
フックファイルは以下のようになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pacman.d/hooks/zsh-rehash.hook|output=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Operation = Remove&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/bin/*&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Depends = zsh&lt;br /&gt;
Depends = procps-ng&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
Exec = /usr/bin/pkill zsh --signal=USR1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|このフックは、実行中の {{ic|zsh}} インスタンスすべてに SIGUSR1 を送信します。注意すべきなのは、SIGUSR1 のデフォルトの挙動は「終了」だということです。なので、このフックを先に設定してしまうと、すべてのユーザの実行中の {{ic|zsh}} インスタンス (ログインシェルも含む) のうち以下のトラップを source していないものが、終了してしまいます。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&lt;br /&gt;
TRAPUSR1() { rehash }&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この &#039;&#039;関数トラップ&#039;&#039; は、&#039;&#039;リストトラップ&#039;&#039; {{ic|trap &#039;rehash&#039; USR1}} に置き換えることもできます。トラップの種類の違いについては {{man|1|zshmisc|Trap Functions}} を見てください。&lt;br /&gt;
&lt;br /&gt;
この方法は、すべての {{ic|zsh}} インスタンスを即座に {{ic|rehash}} します。なので、{{ic|precmd}} をトリガーするためにエンターキーを押す必要がありません。&lt;br /&gt;
&lt;br /&gt;
=== ncurses アプリケーションにキーをバインド ===&lt;br /&gt;
&lt;br /&gt;
ncurses アプリケーションをキーストロークにバインドしますが、対話を受け入れません。これを動作させるには {{ic|BUFFER}} 変数を使用します。次の例では、{{ic|Alt+\}} を使用して [[ncmpcpp]] を開くことができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|2=&lt;br /&gt;
ncmpcppShow() {&lt;br /&gt;
  BUFFER=&amp;quot;ncmpcpp&amp;quot;&lt;br /&gt;
  zle accept-line&lt;br /&gt;
}&lt;br /&gt;
zle -N ncmpcppShow&lt;br /&gt;
bindkey &#039;^[\&#039; ncmpcppShow&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
アプリケーションを呼び出す前に、行に入力した内容をすべて保持する別の方法&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|2=&lt;br /&gt;
ncmpcppShow() {&lt;br /&gt;
  ncmpcpp &amp;lt;$TTY&lt;br /&gt;
  zle redisplay&lt;br /&gt;
}&lt;br /&gt;
zle -N ncmpcppShow&lt;br /&gt;
bindkey &#039;^[\&#039; ncmpcppShow&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルマネージャ風のキーバインド ===&lt;br /&gt;
&lt;br /&gt;
グラフィックファイルマネージャで使われているようなキーバインドが便利かもしれません。1つ目はディレクトリ履歴 ({{ic|Alt+Left}}) に戻り、2つ目はユーザを親ディレクトリ ({{ic|Alt+Up}}) に移動させます。また、ディレクトリの内容も表示されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
cdUndoKey() {&lt;br /&gt;
  popd&lt;br /&gt;
  zle       reset-prompt&lt;br /&gt;
  print&lt;br /&gt;
  ls&lt;br /&gt;
  zle       reset-prompt&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cdParentKey() {&lt;br /&gt;
  pushd ..&lt;br /&gt;
  zle      reset-prompt&lt;br /&gt;
  print&lt;br /&gt;
  ls&lt;br /&gt;
  zle       reset-prompt&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
zle -N                 cdParentKey&lt;br /&gt;
zle -N                 cdUndoKey&lt;br /&gt;
bindkey &#039;^[[1;3A&#039;      cdParentKey&lt;br /&gt;
bindkey &#039;^[[1;3D&#039;      cdUndoKey&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== xterm のタイトル ===&lt;br /&gt;
&lt;br /&gt;
あなたのターミナルエミュレータがサポートしていれば、Zsh からターミナルのタイトルを設定できます。これにより、タイトルを動的に変更し、シェルの状態に関する状態 (例えば、ユーザ名とカレントディレクトリや現在実行中のコマンド) を表示できます。&lt;br /&gt;
&lt;br /&gt;
xterm のタイトルは [https://www.tldp.org/HOWTO/Xterm-Title-3.html#ss3.1 xterm の制御シーケンスオペレーティングシステムコマンド]である {{ic|\e]2;}}{{ic|\a}} か {{ic|\e]2;}}{{ic|\e\\}} で設定します。例えば:&lt;br /&gt;
&lt;br /&gt;
 $ print -n &#039;\e]2;My xterm title\a&#039;&lt;br /&gt;
&lt;br /&gt;
このコマンドは、タイトルを以下に設定します:&lt;br /&gt;
&lt;br /&gt;
 My xterm title&lt;br /&gt;
&lt;br /&gt;
タイトルを動的にするシンプルな方法は、{{ic|precmd}} フック関数と {{ic|preexec}} フック関数でタイトルを設定することです。利用可能なフック関数リストと説明は {{man|1|zshmisc|Hook Functions}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{ic|print -P}} を使えば、さらに Zsh のプロンプトエスケープも使用できます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* タイトルの表示は複数のコマンドに分けることができます。ただし、コマンドは連続していなければなりません。&lt;br /&gt;
* [[GNU Screen]] は、xterm のタイトルを hardstatus ({{ic|%h}}) に送信します。Screen の[https://www.gnu.org/software/screen/manual/html_node/String-Escapes.html 文字列エスケープ]を使いたい場合 (例えば、色を付けたい場合など)、エスケープシーケンス {{ic|\e_}}{{ic|\e\\}} を使って hardstatus を設定する必要があります。文字列エスケープを {{ic|\e]2;}}{{ic|\a}} 内で使用した場合、ターミナルエミュレータは、Screen の文字列エスケープを解釈できないため、タイトルが文字化けしてしまいます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 変数を表示するときに {{ic|print}} の {{ic|-P}} オプションは使用しないでください。変数がプロンプトエスケープとしてパースされてしまいます。&lt;br /&gt;
* 変数を表示するときには、[https://zsh.sourceforge.io/Doc/Release/Expansion.html#Parameter-Expansion-Flags パラメータ展開フラグ] {{ic|q}} を使用してください。変数がエスケープシーケンスとしてパースされないようにするためです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
autoload -Uz add-zsh-hook&lt;br /&gt;
&lt;br /&gt;
function xterm_title_precmd () {&lt;br /&gt;
	print -Pn -- &#039;\e]2;%n@%m %~\a&#039;&lt;br /&gt;
	[[ &amp;quot;$TERM&amp;quot; == &#039;screen&#039;* ]] &amp;amp;&amp;amp; print -Pn -- &#039;\e_\005{2}%n\005{-}@\005{5}%m\005{-} \005{+b 4}%~\005{-}\e\\&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function xterm_title_preexec () {&lt;br /&gt;
	print -Pn -- &#039;\e]2;%n@%m %~ %# &#039; &amp;amp;&amp;amp; print -n -- &amp;quot;${(q)1}\a&amp;quot;&lt;br /&gt;
	[[ &amp;quot;$TERM&amp;quot; == &#039;screen&#039;* ]] &amp;amp;&amp;amp; { print -Pn -- &#039;\e_\005{2}%n\005{-}@\005{5}%m\005{-} \005{+b 4}%~\005{-} %# &#039; &amp;amp;&amp;amp; print -n -- &amp;quot;${(q)1}\e\\&amp;quot;; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [[ &amp;quot;$TERM&amp;quot; == (Eterm*|alacritty*|aterm*|foot*|gnome*|konsole*|kterm*|putty*|rxvt*|screen*|wezterm*|tmux*|xterm*) ]]; then&lt;br /&gt;
	add-zsh-hook -Uz precmd xterm_title_precmd&lt;br /&gt;
	add-zsh-hook -Uz preexec xterm_title_preexec&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== ターミナルエミュレータのタブのタイトル ====&lt;br /&gt;
&lt;br /&gt;
一部のターミナルエミュレータとマルチプレクサは、タブのタイトルの設定をサポートしています。そのためのエスケープシーケンスはターミナルによります:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! ターミナル&lt;br /&gt;
! エスケープシーケンス&lt;br /&gt;
! 説明&lt;br /&gt;
|-&lt;br /&gt;
! [[GNU Screen]]&lt;br /&gt;
| {{ic|\ek}}{{ic|\e\\}}&lt;br /&gt;
| Screen のウィンドウタイトル ({{ic|%t}})。&lt;br /&gt;
|-&lt;br /&gt;
! [[Konsole]]&lt;br /&gt;
| {{ic|\e]30;}}{{ic|\a}}&lt;br /&gt;
| Konsole のタブタイトル。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== シェル環境の検出 ===&lt;br /&gt;
&lt;br /&gt;
[[環境変数#シェル環境の検出]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== /dev/tcp と等価な ztcp ===&lt;br /&gt;
&lt;br /&gt;
{{ic|zsh/net/tcp}} モジュールを使用してください:&lt;br /&gt;
&lt;br /&gt;
 $ zmodload zsh/net/tcp&lt;br /&gt;
&lt;br /&gt;
これで、TCP 接続を確立できます:&lt;br /&gt;
&lt;br /&gt;
 $ ztcp example.com 80&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|1|zshmodules|THE_ZSH/NET/TCP_MODULE}} と {{man|1|zshtcpsys}} で見られます。&lt;br /&gt;
&lt;br /&gt;
=== コマンドラインに文字があるときにもシェルを終了するショートカット ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、コマンドラインに文字が入力されている場合、{{ic|Ctrl+d}} はシェルを終了しません。これを修正するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|.zshrc|&lt;br /&gt;
exit_zsh() { exit }&lt;br /&gt;
zle -N exit_zsh&lt;br /&gt;
bindkey &#039;^D&#039; exit_zsh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== pacman -F &amp;quot;command not found&amp;quot; ハンドラー ===&lt;br /&gt;
&lt;br /&gt;
[[pacman]] には、あるファイルを含むパッケージを検索する機能があります。以下の command-not-found ハンドラは、不明なコマンドが実行されたときに、pacman を直接使用してマッチするパッケージを検索します。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.zshrc|2=&lt;br /&gt;
...&lt;br /&gt;
function command_not_found_handler {&lt;br /&gt;
    local purple=&#039;\e[1;35m&#039; bright=&#039;\e[0;1m&#039; green=&#039;\e[1;32m&#039; reset=&#039;\e[0m&#039;&lt;br /&gt;
    printf &#039;zsh: command not found: %s\n&#039; &amp;quot;$1&amp;quot;&lt;br /&gt;
    local entries=(&lt;br /&gt;
        ${(f)&amp;quot;$(/usr/bin/pacman -F --machinereadable -- &amp;quot;/usr/bin/$1&amp;quot;)&amp;quot;}&lt;br /&gt;
    )&lt;br /&gt;
    if (( ${#entries[@]} ))&lt;br /&gt;
    then&lt;br /&gt;
        printf &amp;quot;${bright}$1${reset} may be found in the following packages:\n&amp;quot;&lt;br /&gt;
        local pkg&lt;br /&gt;
        for entry in &amp;quot;${entries[@]}&amp;quot;&lt;br /&gt;
        do&lt;br /&gt;
            # (repo package version file)&lt;br /&gt;
            local fields=(&lt;br /&gt;
                ${(0)entry}&lt;br /&gt;
            )&lt;br /&gt;
            if [[ &amp;quot;$pkg&amp;quot; != &amp;quot;${fields[2]}&amp;quot; ]]&lt;br /&gt;
            then&lt;br /&gt;
                printf &amp;quot;${purple}%s/${bright}%s ${green}%s${reset}\n&amp;quot; &amp;quot;${fields[1]}&amp;quot; &amp;quot;${fields[2]}&amp;quot; &amp;quot;${fields[3]}&amp;quot;&lt;br /&gt;
            fi&lt;br /&gt;
            printf &#039;    /%s\n&#039; &amp;quot;${fields[4]}&amp;quot;&lt;br /&gt;
            pkg=&amp;quot;${fields[2]}&amp;quot;&lt;br /&gt;
        done&lt;br /&gt;
    fi&lt;br /&gt;
    return 127&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|pacman のファイルデータベースは、通常の同期データベースから分離されており、{{ic|pacman -Fy}} を使ってフェッチする必要があります。詳細は [[pacman#パッケージ・データベースに問い合わせる]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
[[pkgfile]] を使う代替としては、[[#pkgfile の &amp;quot;command not found&amp;quot; ハンドラー]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== キーバインドを使ってバックバッファをクリアする ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、画面をクリアするキーバインドは、ほとんどのターミナルエミュレータでバックバッファ (上にスクロールしないと見えない部分) をクリアしません。この問題の解決策とｈしては:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.zshrc|2=&lt;br /&gt;
...&lt;br /&gt;
function clear-screen-and-scrollback() {&lt;br /&gt;
    printf &#039;\x1Bc&#039;&lt;br /&gt;
    zle clear-screen&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
zle -N clear-screen-and-scrollback&lt;br /&gt;
bindkey &#039;^L&#039; clear-screen-and-scrollback&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== サードパーティ拡張 ==&lt;br /&gt;
&lt;br /&gt;
=== 設定フレームワーク ===&lt;br /&gt;
&lt;br /&gt;
{{Note|フレームワークは、抽象化と複雑化のレベルを導入します。それらは未定義の挙動をもたらす可能性があり、シェルが壊れた場合、&#039;&#039;最初の&#039;&#039; デバッグステップは、プレーンなシェルに戻ることです。}}&lt;br /&gt;
&lt;br /&gt;
* {{App|oh-my-posh|Oh My Posh は、関数か変数でプロンプト文字列を変更することのできる任意のシェルのためのカスタムプロンプトエンジンです。|https://github.com/JanDeDobbeleer/oh-my-posh|{{AUR|oh-my-posh}}}}&lt;br /&gt;
* {{App|oh-my-zsh|Zsh の設定を管理するためのコミュニティ運営の人気なフレームワークです。たくさんの便利な関数、ヘルパー、プラグイン、テーマをバンドルしています。|https://github.com/ohmyzsh/ohmyzsh|{{AUR|oh-my-zsh-git}}}}&lt;br /&gt;
* {{App|Prezto|Zsh 用の設定フレームワークです。モジュールが同梱されており、適切なデフォルト、エイリアス、関数、オートコンプリート、プロンプトテーマでコマンドラインインターフェイス環境を充実させることができます。|https://github.com/sorin-ionescu/prezto|{{AUR|prezto-git}}}}&lt;br /&gt;
* {{App|ZIM|驚異的なスピードとモジュール式拡張機能の付いた設定フレームワークです。Zim はとても簡単にカスタマイズでき、スピードと機能性を犠牲にせず、モジュールと機能の豊富なセットが付属しています。|https://github.com/zimfw/zimfw|{{AUR|zsh-zim-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== プラグインマネージャー ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Antidote|レガシーな Antibody プラグインマネージャの完全な Zsh 実装です。|https://github.com/mattmc3/antidote|{{AUR|zsh-antidote}}}}&lt;br /&gt;
* {{App|zinit (旧 &amp;quot;zplugin&amp;quot;)|柔軟な Zsh プラグインマネージャ。クリーンな fpath、レポート、補完管理、ターボモードが付いています。[https://github.com/zdharma-continuum/I_WANT_TO_HELP 復活しました]|https://github.com/zdharma-continuum/zinit|{{AUR|zinit}}}}&lt;br /&gt;
* {{App|zi (旧 &amp;quot;zplugin&amp;quot;)|zplugin の代替フォークです。zinit のようにオリジナルのプロジェクトの保持やメンテナンスではなく、オリジナルのプロジェクトを拡張することを目的としています。|https://github.com/z-shell/zi}}&lt;br /&gt;
* {{App|sheldon|高速で設定可能なシェルプラグインマネージャです。Rust で書かれています。[https://github.com/rossmacarthur/sheldon]|https://github.com/rossmacarthur/sheldon|{{Pkg|sheldon}}}}&lt;br /&gt;
* {{App|Antigen|Zsh 用のプラグインマネージャ。oh-my-zsh と vundle にインスパイアされました。[https://github.com/zsh-users/antigen/issues/673 放棄されています]|https://github.com/zsh-users/antigen|{{AUR|antigen-git}}}}&lt;br /&gt;
* {{App|zgen|Zsh 用の軽量でシンプルなプラグインマネージャ。[https://github.com/tarjoilija/zgen/issues/123 放棄されています]|https://github.com/tarjoilija/zgen|{{AUR|zgen-git}}}}&lt;br /&gt;
* {{App|zplug|Zsh 用の次世代プラグインマネージャ。[https://github.com/zplug/zplug/issues/403#issuecomment-477520784 放棄されています]|https://github.com/zplug/zplug|{{AUR|zplug}}}}&lt;br /&gt;
&lt;br /&gt;
=== Fish のようなシンタックスハイライトとオートサジェスト ===&lt;br /&gt;
&lt;br /&gt;
[[Fish]] には強力なシェルシンタックスハイライトとオートサジェスト機能があります。これらの機能を zsh で使うには、{{pkg|zsh-syntax-highlighting}} と {{pkg|zsh-autosuggestions}} をインストールし、提供されたスクリプトの一方または両方を zshrc の末尾から [[source]] してください ({{pkg|zsh-syntax-highlighting}} が {{pkg|zsh-autosuggestions}} よりも後で source されるようにするためです[https://github.com/zsh-users/zsh-syntax-highlighting#why-must-zsh-syntax-highlightingzsh-be-sourced-at-the-end-of-the-zshrc-file]):&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.zshrc|2=&lt;br /&gt;
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh&lt;br /&gt;
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== pkgfile の &amp;quot;command not found&amp;quot; ハンドラー ===&lt;br /&gt;
&lt;br /&gt;
[[pkgfile]] には、{{ic|command_not_found_handler}} 関数を提供する Zsh スクリプトファイルが含まれています。この関数は、認識されないコマンドが入力されたときに、pkgfile のデータベースを自動的に検索します。&lt;br /&gt;
&lt;br /&gt;
この関数を有効化するには、そのスクリプトを [[source]] する必要があります。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.zshrc|2=&lt;br /&gt;
source /usr/share/doc/pkgfile/command-not-found.zsh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|pkgfile のデータベースは、この機能を使う前に更新が必要な場合があります。詳細は [[pkgfile#インストール]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
pacman のネイティブな機能を使う代替は、[[#pacman -F &amp;quot;command not found&amp;quot; ハンドラー]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== IOT instruction ===&lt;br /&gt;
&lt;br /&gt;
{{ic|IOT instruction}} というメッセージは、単にアプリケーションがシグナル 6 (SIGABRT、Signal Abort) で終了したという意味です。[https://zsh.org/workers/51602 修正パッチ]は既に上流に上がっており (なので {{AUR|zsh-git}} で利用できます)、バージョン 5.10 で適用されるでしょう。詳細は、[https://stackoverflow.com/questions/75842144/can-anyone-explain-what-iot-instruction-core-dumped-refers-to/75844316#75844316]、[https://zsh.org/workers/51601]、{{man|7|signal|Standard signals}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:ja:Z Shell]]&lt;br /&gt;
* [https://zsh.sourceforge.io/Intro/intro_toc.html Z Shell イントロダクション]&lt;br /&gt;
* [https://zsh.sourceforge.io/Guide/zshguide.html ZSH ユーザガイド]&lt;br /&gt;
* [https://zsh.sourceforge.io/Doc/Release/index-frame.html Z Shell マニュアル] ([https://zsh.sourceforge.io/Doc/ このページ]とは形式が異なります)&lt;br /&gt;
* [https://zsh.sourceforge.io/FAQ/zshfaq01.html Zsh FAQ]&lt;br /&gt;
* {{man|1|zsh-lovers}} ({{pkg|zsh-lovers}} パッケージとして利用可能)&lt;br /&gt;
* [[Gentoo: Zsh/Guide]]&lt;br /&gt;
* [https://www.bash2zsh.com/zsh_refcard/refcard.pdf Bash2Zsh Reference Card]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Zsh|2026-03-29|867199}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA/%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0&amp;diff=41438</id>
		<title>NVIDIA/トラブルシューティング</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA/%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0&amp;diff=41438"/>
		<updated>2026-03-29T05:07:00Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[Category:X サーバー]]&lt;br /&gt;
[[en:NVIDIA/Troubleshooting]]&lt;br /&gt;
[[ru:NVIDIA (Русский)/Troubleshooting]]&lt;br /&gt;
[[zh-hans:NVIDIA/Troubleshooting]]&lt;br /&gt;
&lt;br /&gt;
== 起動に失敗する ==&lt;br /&gt;
&lt;br /&gt;
=== ドライバをインストールした後にシステムが起動しない ===&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA]] ドライバをインストールした後、ディスプレイマネージャに到達する前にシステムがハングする場合、[[カーネルモード設定#モード設定を無効にする|カーネルモード設定を無効]]にしてみてください。&lt;br /&gt;
&lt;br /&gt;
=== Xorg がロードに失敗する、またはレッドスクリーンになる ===&lt;br /&gt;
&lt;br /&gt;
GRUB を使っていてレッドスクリーンになる場合は、{{ic|/etc/default/grub}} を編集して {{ic|1=GRUB_TERMINAL_OUTPUT=console}} をアンコメントして GRUB のフレームバッファを無効にしてください。詳しくは [[GRUB/ヒントとテクニック#フレームバッファの無効化]] を参照。&lt;br /&gt;
&lt;br /&gt;
=== X の起動時に黒画面 / X のシャットダウン時にマシンの電源が切れる ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバーを更新した後に、Xorg の起動時に画面が黒くなったり、Xorg をシャットダウンするとマシンの電源がオフになるようになった場合、以下の回避策を試してください:&lt;br /&gt;
&lt;br /&gt;
* [[xinitrc]] の先頭に {{ic|xrandr --auto}} を追加する。&lt;br /&gt;
* {{ic|1=rcutree.gp_init_delay=1}} [[カーネルパラメータ]]を使用する。&lt;br /&gt;
* {{ic|nvidia}} モジュールを直接 [[mkinitcpio.conf]] に追加してみることもできます。&lt;br /&gt;
&lt;br /&gt;
=== 画面は認識されるが、設定が全くできない ===&lt;br /&gt;
&lt;br /&gt;
ときに NVIDIA と X が有効な画面を確認できないことがあります。グラフィックカードに複数の出力端子がある場合、モニターを別の端子に接続してみてください。ノートパソコンの場合、グラフィックカードに VGA/TV 出力が存在することが原因の可能性があります。Xorg.0.log に詳しい情報が出力されます。&lt;br /&gt;
&lt;br /&gt;
無効な {{ic|Option &amp;quot;ConnectedMonitor&amp;quot;}} を {{ic|Section &amp;quot;Device&amp;quot;}} にわざと追加することで Xorg にエラーを投げさせ、修正するにはどうすればよいかを Xorg に出力させるという方法もあります。ConnectedMonitor 設定に関する詳細は [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/xconfigoptions.html#ConnectedMonitor ドキュメント]を参照してください。&lt;br /&gt;
&lt;br /&gt;
X を再起動した後に Xorg.0.log を確認して正しい CRT-x,DFP-x,TV-x の値を見てください。&lt;br /&gt;
&lt;br /&gt;
{{ic|nvidia-xconfig --query-gpu-info}} で役に立つ情報が得られることもあります。&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Failing initialization of X screen&amp;quot; により X が起動しない ===&lt;br /&gt;
&lt;br /&gt;
もし {{ic|/var/log/Xorg.0.log}} に、X server がスクリーンの初期化に失敗したと書き込まれる場合&lt;br /&gt;
&lt;br /&gt;
 (EE) NVIDIA(G0): GPU screens are not yet supported by the NVIDIA driver&lt;br /&gt;
 (EE) NVIDIA(G0): Failing initialization of X screen&lt;br /&gt;
&lt;br /&gt;
そして &#039;&#039;nvidia-smi&#039;&#039; が {{ic|No running processes found}} と書き込む場合&lt;br /&gt;
&lt;br /&gt;
解決策は、まず始めに最新の {{Pkg|nvidia-utils}} を再インストールして、{{ic|/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf}} を {{ic|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf}} へとコピーします。その後、{{ic|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf}} を編集して {{ic|Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;}} という行を追加してください。コンピューターを再起動すれば、この問題は解決します。&lt;br /&gt;
&lt;br /&gt;
=== Xorg がブート時に失敗し、ブート完了後は起動できる ===&lt;br /&gt;
&lt;br /&gt;
起動時間がとても短いシステムの場合、NVIDIA ドライバーが完全に初期化される前に systemd がディスプレイマネージャを起動してしまうことがあります。起動時に Xorg が実行された時にだけ、ログに以下のようなメッセージが表示されます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/var/log/Xorg.0.log|output=&lt;br /&gt;
[     1.807] (EE) NVIDIA(0): Failed to initialize the NVIDIA kernel module. Please see the&lt;br /&gt;
[     1.807] (EE) NVIDIA(0):     system&#039;s kernel log for additional error messages and&lt;br /&gt;
[     1.808] (EE) NVIDIA(0):     consult the NVIDIA README for details.&lt;br /&gt;
[     1.808] (EE) NVIDIA(0):  *** Aborting ***&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このような場合、ディスプレイマネージャから DRI デバイスまでの順番付けをする必要があります。まず、新しい [[udev]] ルールファイルを作成して DRI デバイスのデバイスユニットを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-systemd-dri-devices.rules|output=&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, KERNEL==&amp;quot;card*&amp;quot;, SUBSYSTEM==&amp;quot;drm&amp;quot;, TAG+=&amp;quot;systemd&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次にディスプレイマネージャからデバイスまでの依存関係を作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/display-manager.service.d/10-wait-for-dri-devices.conf|output=&lt;br /&gt;
[Unit]&lt;br /&gt;
Wants=dev-dri-card0.device&lt;br /&gt;
After=dev-dri-card0.device&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デスクトップに必要な追加カードが存在する場合は、Wants と After にスペースで区切って記述してください。&lt;br /&gt;
&lt;br /&gt;
=== 統合 GPU が載っている環境で黒画面 ===&lt;br /&gt;
&lt;br /&gt;
統合 GPU (例: Intel HD 4000、VIA VX820 Chrome 9、AMD Cezanne) のあるシステムを使用していて、{{AUR|nvidia-580xx-dkms}} かこれより古いパッケージをインストールしている場合、起動時、仮想ターミナル切り替え時、X セッションの終了時に黒画面が発生する場合があります。これは、グラフィックモジュール間の競合が原因かもしれません。関連する GPU モジュールをブラックリストに入れることで解決できます。{{ic|/etc/modprobe.d/blacklist.conf}} を作成し、起動時に関連するモジュールがロードされないように設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/blacklist.conf|&lt;br /&gt;
install i915 /usr/bin/false&lt;br /&gt;
install intel_agp /usr/bin/false&lt;br /&gt;
install viafb /usr/bin/false&lt;br /&gt;
install radeon /usr/bin/false&lt;br /&gt;
install amdgpu /usr/bin/false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 複数の GPU を使うと &amp;quot;no screens found&amp;quot; によって X が起動しない ===&lt;br /&gt;
&lt;br /&gt;
複数の GPU が搭載されているようなシステムで X が以下のメッセージによって起動しない場合:&lt;br /&gt;
&lt;br /&gt;
 [ 76.633] (EE) No devices detected.&lt;br /&gt;
 [ 76.633] Fatal server error:&lt;br /&gt;
 [ 76.633] no screens found&lt;br /&gt;
&lt;br /&gt;
ディスクリートカードの BusID を X の設定に追加してください。これは、Intel CPU と内蔵 GPU があるシステムや、2つ以上の Nvidia カード が接続されているシステムで起こりえます。BusID を確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|# lspci -d ::03xx|&lt;br /&gt;
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)&lt;br /&gt;
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)&lt;br /&gt;
08:00.0 3D controller: NVIDIA Corporation GM108GLM [Quadro K620M / Quadro M500M] (rev a2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
X の設定ファイル内でカードの Device セクションに追加することで修正できます。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-nvidia.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BusID          &amp;quot;PCI:1:0:0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note| BusID のフォーマットが重要です! }}&lt;br /&gt;
&lt;br /&gt;
上の例では、{{ic|01:00.0}} が {{ic|1:0:0}} のように短縮されて記述されています。しかし、BusID の変換はより複雑になることもあります。{{ic|lspci}} の出力は16進法ですが、設定ファイルでは BusID は10進法で記述されるのです! これはつまり、BusID が9よりも大きい場合に16進数から10進数に変換する必要があるということです!&lt;br /&gt;
&lt;br /&gt;
例: lspci での {{ic|5e:00.0}} は {{ic|PCI:94:0:0}} となります。&lt;br /&gt;
&lt;br /&gt;
=== linux &amp;gt;= 4.8 で Modprobe エラー: &amp;quot;Could not insert &#039;nvidia&#039;: No such device&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
linux 4.8 ではディスクリートカードを使おうとすると次のエラーが発生することがあります:&lt;br /&gt;
&lt;br /&gt;
{{hc|# modprobe nvidia -vv|&lt;br /&gt;
modprobe: INFO: custom logging function 0x409c10 registered&lt;br /&gt;
modprobe: INFO: Failed to insert module &#039;/lib/modules/4.8.6-1-ARCH/extramodules/nvidia.ko.gz&#039;: No such device&lt;br /&gt;
modprobe: ERROR: could not insert &#039;nvidia&#039;: No such device&lt;br /&gt;
modprobe: INFO: context 0x24481e0 released&lt;br /&gt;
insmod /lib/modules/4.8.6-1-ARCH/extramodules/nvidia.ko.gz &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|# dmesg|&lt;br /&gt;
...&lt;br /&gt;
NVRM: The NVIDIA GPU 0000:01:00.0 (PCI ID: 10de:139b)&lt;br /&gt;
NVRM: installed in this system is not supported by the 370.28&lt;br /&gt;
NVRM: NVIDIA Linux driver release.  Please see &#039;Appendix&lt;br /&gt;
NVRM: A - Supported NVIDIA GPU Products&#039; in this release&#039;s&lt;br /&gt;
NVRM: README, available on the Linux driver download page&lt;br /&gt;
NVRM: at www.nvidia.com.&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この問題は Linux カーネルの PCIe 電源管理に関連する不適切なコミットによるものです( [https://devtalk.nvidia.com/default/topic/971733/-370-28-with-kernel-4-8-on-gt-2015-machines-driver-claims-card-not-supported-if-nvidia-is-not-primary-card/ この NVIDIA DevTalk スレッド] でドキュメント化されています)。&lt;br /&gt;
&lt;br /&gt;
回避策は {{ic|1=pcie_port_pm=off}} を[[カーネルパラメータ]]に追加することです。これにより、すべてのデバイスにおける PCIe 電源管理が無効化されることに注意してください。&lt;br /&gt;
&lt;br /&gt;
=== システムがサスペンドから復帰しない ===&lt;br /&gt;
&lt;br /&gt;
以下のようなログが発生するとき:&lt;br /&gt;
&lt;br /&gt;
 kernel: nvidia-modeset: ERROR: GPU:0: Failed detecting connected display devices&lt;br /&gt;
 kernel: nvidia-modeset: ERROR: GPU:0: Failed detecting connected display devices&lt;br /&gt;
 kernel: nvidia-modeset: WARNING: GPU:0: Failure processing EDID for display device DELL U2412M (DP-0).&lt;br /&gt;
 kernel: nvidia-modeset: WARNING: GPU:0: Unable to read EDID for display device DELL U2412M (DP-0)&lt;br /&gt;
 kernel: nvidia-modeset: ERROR: GPU:0: Failure reading maximum pixel clock value for display device DELL U2412M (DP-0).&lt;br /&gt;
&lt;br /&gt;
[https://forums.developer.nvidia.com/t/solution-for-nvidia-sleep-wake-issue-in-linux/110911] から考えられる解決策があります:&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行して {{ic|&#039;&#039;version&#039;&#039;}} の文字列を取得してください:&lt;br /&gt;
&lt;br /&gt;
 # strings /sys/firmware/acpi/tables/DSDT | grep -i &#039;windows &#039; | sort | tail -1&lt;br /&gt;
&lt;br /&gt;
{{ic|1=acpi_osi=! &amp;quot;acpi_osi=&#039;&#039;version&#039;&#039;&amp;quot;}} [[カーネルパラメータ]]を[[ブートローダー]]の設定に追加してください。&lt;br /&gt;
&lt;br /&gt;
この問題を引き起こす他の可能性として、{{Pkg|nvidia-open}} パッケージを使用しているというものもあります。以下で説明されています:&lt;br /&gt;
* https://bbs.archlinux.org/viewtopic.php?pid=2047692&lt;br /&gt;
* https://github.com/NVIDIA/open-gpu-kernel-modules/issues/450&lt;br /&gt;
* https://github.com/NVIDIA/open-gpu-kernel-modules/issues/223&lt;br /&gt;
* https://github.com/NVIDIA/open-gpu-kernel-modules/issues/94&lt;br /&gt;
&lt;br /&gt;
=== サスペンドから復帰すると黒画面 ===&lt;br /&gt;
&lt;br /&gt;
黒画面の問題が発生し、以下のようなログに出力がある場合:&lt;br /&gt;
&lt;br /&gt;
 archlinux kernel: NVRM: GPU at PCI:0000:08:00: GPU-926ecdb0-adb1-6ee9-2fad-52e7214c5011&lt;br /&gt;
 archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid=&#039;&amp;lt;unknown&amp;gt;&#039;, name=&amp;lt;unknown&amp;gt;, Graphi&amp;gt;&lt;br /&gt;
 archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid=&#039;&amp;lt;unknown&amp;gt;&#039;, name=&amp;lt;unknown&amp;gt;, Graphi&amp;gt;&lt;br /&gt;
 archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid=&#039;&amp;lt;unknown&amp;gt;&#039;, name=&amp;lt;unknown&amp;gt;, Graphi&amp;gt;&lt;br /&gt;
 archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid=&#039;&amp;lt;unknown&amp;gt;&#039;, name=&amp;lt;unknown&amp;gt;, Graphi&amp;gt;&lt;br /&gt;
 archlinux kernel: NVRM: Xid (PCI:0000:08:00): 13, pid=&#039;&amp;lt;unknown&amp;gt;&#039;, name=&amp;lt;unknown&amp;gt;, Graphi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA/ヒントとテクニック#サスペンド後にビデオメモリを保持する]] で説明されているように NVIDIA のサスペンド、ハイバネート、スリープに関連するサービスを有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
== クラッシュやハング ==&lt;br /&gt;
&lt;br /&gt;
=== クラッシュの一般的な対処方法 ===&lt;br /&gt;
&lt;br /&gt;
* [[#GSP ファームウェア|GSP ファームウェアを無効]]にしてみる.&lt;br /&gt;
* xorg.conf で {{ic|RenderAccel}} を無効にしてみる。&lt;br /&gt;
* Xorg が {{ic|&amp;quot;conflicting memory type&amp;quot;}} や {{ic|&amp;quot;failed to allocate primary buffer: out of memory&amp;quot;}} というエラーを出力する場合、あるいは nvidia-96xx ドライバーを使用しているときに &amp;quot;Signal 11&amp;quot; でクラッシュする場合、[[カーネルパラメータ]]に {{ic|nopat}} を追加してください。&lt;br /&gt;
* NVIDIA のコンパイラが、カーネルをコンパイルしたのに使用した GCC と現在使っている GCC のバージョンが異なるというエラーを出力する場合、{{ic|/etc/profile}} に以下を追加してください:&lt;br /&gt;
 export IGNORE_CC_MISMATCH=1&lt;br /&gt;
* フルスクリーンのアプリケーションがフリーズ/クラッシュする場合、あなたの使用しているデスクトップ環境の設定で {{ic|Display Compositing}} と {{ic|Direct fullscreen rendering}} を有効化してみてください。&lt;br /&gt;
&lt;br /&gt;
=== メッシュシェーダーのサポートの問題 ===&lt;br /&gt;
&lt;br /&gt;
このバグは、メッシュシェーダーに依存している新しいゲーム (例: Final Fantasy VII Rebirth) にのみ存在します。これは、NVIDIA GPU を使用している場合に環境が存在しないことによるもので、最新のベータ版ドライバを使用していても発生します。[https://github.com/ValveSoftware/Proton/issues/8408]&lt;br /&gt;
&lt;br /&gt;
しかし、[https://github.com/ValveSoftware/Proton/issues/8408#issuecomment-2657340142 pyroveil] を使えば、NVIDIA からフィックスがリリースされるまでの間、SPIR-V の問題を回避することができます。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/HansKristian-Work/pyroveil#pyroveil GitHub のチュートリアル]に従って、このツールをコンパイルしインストールする必要があります。その後、{{ic|1=PYROVEIL=1}} と {{ic|1=PYROVEIL_CONFIG=&#039;&#039;/path/to/pyroveil&#039;&#039;/hacks/&#039;&#039;ffvii-rebirth-nvidia&#039;&#039;/pyroveil.json}} [[環境変数]]を設定してゲームを実行してください。&lt;br /&gt;
&lt;br /&gt;
=== OpenGL アプリケーションで視覚的な不具合、ハング、エラー ===&lt;br /&gt;
&lt;br /&gt;
最近の CPU (Intel Sandy Bridge (2011) 以降や AMD Zen (2017) 以降) を使用している場合、その CPU にはマイクロ op キャッシュが搭載されています。マイクロ op キャッシュを使用すると、Cache Aliasing が原因で OpenGL で NVIDIA ドライバとの問題が発生する可能性があります [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/knownissues.html]。通常、マイクロ op キャッシュは BIOS で無効化できますが、パフォーマンスが犠牲になってしまいます [https://chipsandcheese.com/2021/07/03/how-zen-2s-op-cache-affects-performance/]。マイクロ op キャッシュを無効化すると、Xwayland アプリケーションの最も深刻なグラフィックの不具合にも効果がありますが、問題を完全に解決できるわけではありません [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/wayland-issues.html]。&lt;br /&gt;
&lt;br /&gt;
=== システムの更新時や再起動時にカーネルパニック ===&lt;br /&gt;
&lt;br /&gt;
これは NVIDIA 550 シリーズのドライバに存在する既知のバグです。[https://forums.developer.nvidia.com/t/series-550-freezes-laptop/284772] 今のところ原因は不明ですが、ノート PC でしか起こらないようです。詳細は [https://bbs.archlinux.org/viewtopic.php?id=293400&amp;amp;p=3 BBS#293400] を見てください。&lt;br /&gt;
&lt;br /&gt;
この問題の回避策は、ハードウェアによってサポートされている場合は {{Pkg|nvidia-open-dkms}} を、そうでない場合は {{AUR|nvidia-535xx-dkms}} を使用することです。&lt;br /&gt;
&lt;br /&gt;
=== GSP ファームウェア ===&lt;br /&gt;
&lt;br /&gt;
[https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/gsp.html GSP ファームウェア]を使用すると (2024年6月にリリースされた NVIDIA ドライババージョン 555 からデフォルトで有効化されています)、[[Vulkan]] の障害やシステムのクラッシュを含む[https://bbs.archlinux.org/viewtopic.php?pid=2181317 様々な問題]が発生することが知られています。&lt;br /&gt;
&lt;br /&gt;
無効化するには、{{ic|nvidia}} カーネルモジュールに {{ic|1=NVreg_EnableGpuFirmware=0}} [[モジュールパラメータ]]を使用してください。このパラメータはプロプライエタリな NVIDIA ドライバにしか使えません (オープンソースドライバから切り替える方法は [[NVIDIA#インストール]] を参照してください)。&lt;br /&gt;
&lt;br /&gt;
必要に応じて [[Initramfs を再生成する]]のを忘れないでください。このカーネルモジュールオプションを有効にするために、再移動してください。&lt;br /&gt;
&lt;br /&gt;
== 視覚的な問題 ==&lt;br /&gt;
&lt;br /&gt;
=== Xorg で画面のティアリングを防止する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* この方法は一部の OpenGL アプリケーションでパフォーマンスの低下が報告されており、WebGL で問題が発生することがあります。また、ドライバがロード後にクロックダウンする時間が大幅に増加します。([https://forums.developer.nvidia.com/t/if-you-have-gpu-clock-boost-problems-please-try-gl-experimentalperfstrategy-1/71762 NVIDIA Support Thread])&lt;br /&gt;
* {{ic|ForceFullCompositionPipeline}} は、NVIDIA ドライバ 535 で Proton 下で Vulkan を使用する[https://github.com/ValveSoftware/Proton/issues/6869 一部のゲームの機能を破壊する]ことが知られています。&lt;br /&gt;
* {{ic|ForceCompositionPipeline}} は、一部のフルスクリーンのアプリケーションが即座にフリーズする問題を引き起こすことが知られています。これにより、タブアウトするまでシステムが応答しなくなります。一つの回避策は、プログラムを [[Gamescope]] 内で枠無しウィンドウ ({{ic|-b}}) で動作させ、少なくとも一つの他のウィンドウ (タスクバーや何らかのグラフィカルアプリケーション) をスクリーン上に表示させておくことです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバは、条件付きで、画像を表示するために [https://www.reddit.com/r/linux_gaming/comments/6voivr/comment/dm1uz2j/ composition パイプライン]を使用します。これは、ウィンドウ表現を担う[[コンポジットマネージャ]]とは異なります (コンポジットマネージャはまた、VSync によって画面のティアリングを緩和します)。デフォルトでは、composition パイプラインが使用されるのは、現在の画面変換によって必要とされる場合に限ります。このパイプラインは、可能であれば GPU の特殊化されたディスプレイエンジンを使用し、無理であればより汎用のグラフィックスエンジンを使用します。この挙動を制御する方法は2つあります:&lt;br /&gt;
&lt;br /&gt;
* {{ic|ForceCompositionPipeline}} は、composition パイプラインの使用を強制します (詳細は [[#マルチモニタ]] で説明されています)。&lt;br /&gt;
* {{ic|ForceCompositionPipelineFull}} は、composition パイプラインの使用を強制し、かつ、それをグラフィックスエンジンで処理することを強制します。&lt;br /&gt;
&lt;br /&gt;
Xorg でのティアリングは、{{ic|ForceCompositionPipelineFull{{=}}On}} を設定することにより、防止可能です。このオプションが機能するかどうかをテストするには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-settings --assign CurrentMetaMode=&amp;quot;nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }&amp;quot;&lt;br /&gt;
&lt;br /&gt;
または、&#039;&#039;X Server Display Configuration&#039;&#039; メニューオプションにある &#039;&#039;Advanced&#039;&#039; を押してください。&#039;&#039;Force Composition Pipeline&#039;&#039; か &#039;&#039;Force Full Composition Pipeline&#039;&#039; のどちらか一方を選択して、&#039;&#039;Apply&#039;&#039; をクリックしてください。&lt;br /&gt;
&lt;br /&gt;
この変更を永続化させるには、[[Xorg]] 設定ファイルの {{ic|&amp;quot;Screen&amp;quot;}} セクションにこの設定を追加してください。そうする場合、ドライバーの設定で {{ic|TripleBuffering}} を有効化して、{{ic|AllowIndirectGLXProtocol}} を無効化するべきです。以下の設定例を見てください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-nvidia.conf|2=&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;NVIDIA Card&amp;quot;&lt;br /&gt;
        Driver     &amp;quot;nvidia&amp;quot;&lt;br /&gt;
        VendorName &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
        BoardName  &amp;quot;GeForce GTX 1050 Ti&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Screen0&amp;quot;&lt;br /&gt;
    Device         &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Monitor        &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;ForceFullCompositionPipeline&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option         &amp;quot;AllowIndirectGLXProtocol&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
    Option         &amp;quot;TripleBuffer&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] の設定ファイルが存在しない場合、{{ic|nvidia-xconfig}} を使って、現在使用しているハードウェア用の設定ファイルを作成することができます ([[NVIDIA#自動設定]]を参照してください)。そして、作成したファイルを {{ic|/etc/X11/xorg.conf}} から適当な場所 ({{ic|/etc/X11/xorg.conf.d/20-nvidia.conf}}) に移動してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|nvidia-xconfig}} を使って {{ic|20-nvidia.conf}} に生成された設定オプションの多くはドライバーによって自動的に設定され、必須ではありません。コンポジションパイプラインを有効化するためだけにこのファイルを使用するのであれば、{{ic|Identifier}} と {{ic|Option}} の値の行を含んでいる {{ic|&amp;quot;Screen&amp;quot;}} セクションだけが必須です。残りのセクションはファイルから削除できます。}}&lt;br /&gt;
&lt;br /&gt;
==== マルチモニタ ====&lt;br /&gt;
&lt;br /&gt;
マルチモニタ環境においては、それぞれのディスプレイに対して {{ic|1=ForceCompositionPipeline=On}} を指定する必要があります。例えば:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-settings --assign CurrentMetaMode=&amp;quot;DP-2: nvidia-auto-select +0+0 {ForceCompositionPipeline=On}, DP-4: nvidia-auto-select +3840+0 {ForceCompositionPipeline=On}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
こうしないと、{{ic|nvidia-settings}} コマンドはサブモニタを無効化してしまいます。&lt;br /&gt;
&lt;br /&gt;
{{ic|--query}} を使えば、現在のスクリーン名とオフセットを入手できます:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-settings --query CurrentMetaMode&lt;br /&gt;
&lt;br /&gt;
先のコマンドは、2台の 3840x2160 モニタが DP-2 と DP-4 に接続されている場合です。{{ic|xorg.conf}} をエクスポートして正しい {{ic|CurrentMetaMode}} を手に入れ、使用しているそれぞれのディスプレイに対して {{ic|ForceCompositionPipeline}} を追加する必要があります。{{ic|ForceCompositionPipeline}} の設定は対象にしたディスプレイにのみ影響します。&lt;br /&gt;
&lt;br /&gt;
{{Tip|異なるモデルのモニタを使用しているマルチモニタ環境では、リフレッシュレートが若干異なることがあります。垂直同期がドライバによって有効化されている場合、ドライバは複数あるモニタのリフレッシュレートの内たった一つに同期します。これにより、正しく同期できていないモニタではスクリーンのティアリングが発生する可能性があります。主要なモニタのディスプレイを同期させると、他のモニタは正しく同期されません。よって、どのモニタを同期させるか選択する必要があります。このような設定は、{{ic|~/.nvidia-settings-rc}} 内で {{ic|1=0/XVideoSyncToDisplayID=}} を使用するか、{{pkg|nvidia-settings}} をインストールしてグラフィカルな設定方法を使用することにより可能です。}}&lt;br /&gt;
&lt;br /&gt;
=== サスペンドやハイバネートからの復帰後にスクリーンがおかしくなる ===&lt;br /&gt;
&lt;br /&gt;
サスペンドやハイバネートからの復帰後に外部モニターが待機状態から復帰していない可能性もあります。&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA/ヒントとテクニック#サスペンド後にビデオメモリを保持する]] を見てください。&lt;br /&gt;
&lt;br /&gt;
[[GDM]] サービスを使用している際にサスペンド後に画面がおかしくなるバグは nvidia 515.43.04 ドライバで解決されました [https://forums.developer.nvidia.com/t/corrupted-graphics-upon-resume-gnome-41-x-org-495-44-driver/194565/18]。&lt;br /&gt;
&lt;br /&gt;
=== 画面が崩れる: &amp;quot;Six screens&amp;quot; 問題 ===&lt;br /&gt;
&lt;br /&gt;
GeForce GT 100M を使用している場合、X を起動した後に画面が6つに分割されて解像度が 640x480 になってしまうことがあります。同じ問題は Quadro 2000 や高解像度ディスプレイでも報告されています。&lt;br /&gt;
&lt;br /&gt;
この問題を解決するには、{{ic|Device}} セクションで Validation Mode {{ic|NoTotalSizeCheck}} を有効にしてください:&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  Option &amp;quot;ModeValidation&amp;quot; &amp;quot;NoTotalSizeCheck&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
=== nvidia-470 でテキストやアイコンが見えない ===&lt;br /&gt;
&lt;br /&gt;
GTK4 のアップデートにより、古いグラフィックカードを使うために nvidia-470 ドライバを使用している場合に問題が発生するようになりました。GTK4 をアップデートすると、テキストやアイコンがランダムに消え、ウィンドウ上にカーソルをかざすと再び見えるようになります。[https://forums.developer.nvidia.com/t/multiple-apps-do-not-invalidate-repaint-screen-correctly-with-geforce-gt-730-and-v470-driver-on-ubuntu-24-04/291106/2]&lt;br /&gt;
&lt;br /&gt;
回避策は [https://bbs.archlinux.org/viewtopic.php?pid=2159644#p2159644 Arch Linux のフォーラム]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== スリープから復帰した際に GNOME Shell でグラフィックがおかしくなる問題を解決する ===&lt;br /&gt;
&lt;br /&gt;
スリープから復帰した際に [[GNOME Shell]] でフォントがおかしくなったり、グラフィックのバグが発生する場合、以下の[[カーネルパラメータ]]を設定して電源管理を有効化してみてください:&lt;br /&gt;
&lt;br /&gt;
 nvidia.NVreg_DynamicPowerManagement=0x02&lt;br /&gt;
&lt;br /&gt;
詳細: https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/dynamicpowermanagement.html&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイのオフ時や復帰時にシステムがフリーズする ===&lt;br /&gt;
&lt;br /&gt;
デスクトップ環境がディスプレイをオフにした時 (DPMS) や、サスペンドからの復帰時にシステムがフリーズあるいはクラッシュし、dmesg/ジャーナルに以下のような GSP タイムアウトの記録がある場合:&lt;br /&gt;
&lt;br /&gt;
 NVRM: _kgspLogXid119: ********************************* GSP Timeout **********************************&lt;br /&gt;
 NVRM: Xid (PCI:0000:01:00): 119, Timeout after 6s of waiting for RPC response from GPU0 GSP! Expected function 76 (GSP_RM_CONTROL) sequence 1321 &lt;br /&gt;
&lt;br /&gt;
GPU が、電源状態の推移時に不安定な低クロック状態になっているのかもしれません。&lt;br /&gt;
&lt;br /&gt;
回避策は、nvidia-smi で GPU やメモリの最小クロックをより高い値に固定することです。&lt;br /&gt;
&lt;br /&gt;
{{ic|nvidia-persistenced.service}} を[[有効化]]/[[起動]]してください。&lt;br /&gt;
&lt;br /&gt;
Find supported clock values (use these to pick valid min/max pairs):&lt;br /&gt;
&lt;br /&gt;
以下で、サポートされているクロック値を見つけてください (有効な最小値と最大値のペアを探してください):&lt;br /&gt;
&lt;br /&gt;
 nvidia-smi -q -d SUPPORTED_CLOCKS&lt;br /&gt;
 nvidia-smi -q -d CLOCK&lt;br /&gt;
&lt;br /&gt;
一時的なテスト&lt;br /&gt;
&lt;br /&gt;
Set minimum clocks (example values; adjust to your GPU’s max supported clocks):&lt;br /&gt;
&lt;br /&gt;
最小クロックを設定 (以下は例の値です。使用中の GPU の最大クロックに調整してください):&lt;br /&gt;
&lt;br /&gt;
 nvidia-smi -lgc 800,2100&lt;br /&gt;
 nvidia-smi -lmc 800,10000&lt;br /&gt;
&lt;br /&gt;
DPMS とサスペンド/復帰をテストして、問題が解決したかしらべてください。&lt;br /&gt;
変更を元に戻すには:&lt;br /&gt;
&lt;br /&gt;
 nvidia-smi -rgc&lt;br /&gt;
 nvidia-smi -rmc&lt;br /&gt;
&lt;br /&gt;
永続的な設定 (systemd)&lt;br /&gt;
&lt;br /&gt;
以下の {{ic|nvidia-clocks.service}} のようなユニットを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/nvidia-clocks.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Set NVIDIA GPU minimum clocks to avoid  GSP timeouts&lt;br /&gt;
Requires=nvidia-persistenced.service&lt;br /&gt;
After=nvidia-persistenced.service &lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/nvidia-smi -lgc 500,2100&lt;br /&gt;
ExecStart=/usr/bin/nvidia-smi -lmc 500,10000&lt;br /&gt;
RemainAfterExit=yes &lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最小クロックを調整することで、先の 800 よりも小さくしてアイドル時の電力消費量を下げることができます。値を小さくしすぎると問題が再発することに注意してください。&lt;br /&gt;
&lt;br /&gt;
最後に、{{ic|nvidia-clocks.service}} [[有効化]]/[[起動]]してください。&lt;br /&gt;
&lt;br /&gt;
=== X11 でコンポジタでちらつく (nvidia-open) ===&lt;br /&gt;
&lt;br /&gt;
{{Remove|The release of [https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/commit/b314b7b3873c7dbe66e2b68fed7773e7f8e58267 nvidia-utils 595.58.3-1] on 24-Mar-2026 fixed this issue.}}&lt;br /&gt;
&lt;br /&gt;
Versions of {{Pkg|nvidia-open}} tracking the 590.x version introduced a regression in the GLX vblank path that causes window flickering when a compositor is active under X11. This affects xfwm4, and potentially other compositors relying on GLX for vertical sync.&lt;br /&gt;
&lt;br /&gt;
Users can use the {{AUR|nvidia-580xx-utils}} package which tracks the production versioned driver which is not affected by this bug or continue using the repo packages (which track the new features versioned drivers) implementing the below work-around until upstream fixes the issue.&lt;br /&gt;
&lt;br /&gt;
The default {{ic|vblank_mode}} in xfwm4 is {{ic|auto}}, which resolves to {{ic|glx}} on NVIDIA hardware and triggers the bug.&lt;br /&gt;
&lt;br /&gt;
A good work-around is to change the vblank_mode to a setting of either &#039;&#039;&#039;xpresent&#039;&#039;&#039; or to &#039;&#039;&#039;off&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For xfwm4, apply the setting persistently with:&lt;br /&gt;
&lt;br /&gt;
 $ xfconf-query -c xfwm4 -p /general/vblank_mode -s off&lt;br /&gt;
&lt;br /&gt;
Then restart the X session. Alternatively, {{ic|xpresent}} can be used to retain vblank sync at the cost of slightly higher GPU usage:&lt;br /&gt;
&lt;br /&gt;
 $ xfconf-query -c xfwm4 -p /general/vblank_mode -s xpresent&lt;br /&gt;
&lt;br /&gt;
{{Note|Tearing may be visible with {{ic|off}}. If this is unacceptable, prefer {{ic|xpresent}}. See [[#ForceCompositionPipeline]] to address tearing at the Xorg level alongside either setting.}}&lt;br /&gt;
&lt;br /&gt;
See also: [https://bbs.archlinux.org/viewtopic.php?id=311088 Flickering XFCE (X11 with compositor) and nvidia-open-dkms] (Arch Linux Forums)&lt;br /&gt;
&lt;br /&gt;
== パフォーマンスの問題 ==&lt;br /&gt;
&lt;br /&gt;
=== 新しいバージョンのドライバーをインストールした後にパフォーマンスが悪くなる ===&lt;br /&gt;
&lt;br /&gt;
古いドライバーと比べて FPS が落ちている場合、まずダイレクトレンダリングがオンになっているか確認してください ({{ic|glxinfo}} は {{Pkg|mesa-demos}} に含まれています):&lt;br /&gt;
&lt;br /&gt;
 $ glxinfo | grep direct&lt;br /&gt;
&lt;br /&gt;
上のコマンドで以下のように表示されるなら:&lt;br /&gt;
&lt;br /&gt;
 direct rendering: No&lt;br /&gt;
&lt;br /&gt;
前にインストールしたバージョンのドライバーに戻して再起動すれば解決することがあります。&lt;br /&gt;
&lt;br /&gt;
=== Xorg が極端にラグい ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|[https://gitlab.gnome.org/GNOME/mutter/-/issues/2233#note_1538392 ある NVIDIA 開発者]によると、この問題は GNOME 固有ではなく、この問題に関するコメントにはマルチモニタ環境に言及していません。}}&lt;br /&gt;
&lt;br /&gt;
Mutter の一般的な問題は、[https://gitlab.gnome.org/GNOME/mutter/-/issues/2233 アニメーション、動画再生、ゲーミングが Xorg 上でデスクトップの極端なラグを生じさせる]ことです。&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA/ヒントとテクニック#サスペンド後にビデオメモリを保持する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
これでこの問題を解決できるはずですが、できない場合、おそらく運がないのでしょう。この問題を軽減する1つの方法は、以下のオプションを追加することです:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/environment|2=&lt;br /&gt;
CLUTTER_DEFAULT_FPS=&#039;&#039;メインディスプレイのリフレッシュレート&#039;&#039;&lt;br /&gt;
__GL_SYNC_DISPLAY_DEVICE=&#039;&#039;メインディスプレイの出力名&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、NVIDIA Settings で &#039;&#039;Sync to VBlank&#039;&#039; と &#039;&#039;Allow flipping&#039;&#039; をオフにし、NVIDIA Settings を起動時に {{ic|--load-config-only}} フラグを使って起動するようにしてください。&lt;br /&gt;
これでもデスクトップの挙動がラグいでしょうが (特に最後の2番目 (または3番目) のモニタ)、遥かにマシになっているはずです。&lt;br /&gt;
&lt;br /&gt;
=== 400 シリーズのカードで CPU 使用率のスパイクが発生する ===&lt;br /&gt;
&lt;br /&gt;
400 シリーズのカードで時々 CPU の使用率が急上昇するような場合、PowerMizer が GPU のクロック周波数を断続的に変更しているのが原因です。以下を Xorg 設定の {{ic|Device}} セクションに追加して、PowerMizer の設定を Adaptive から Performance にしてください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;RegistryDwords&amp;quot; &amp;quot;PowerMizerEnable=0x1; PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== その他の問題 ==&lt;br /&gt;
&lt;br /&gt;
=== アプリケーション開始時に Vulkan のエラーが発生する ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|他のユーザによる確認が必要}}&lt;br /&gt;
&lt;br /&gt;
Vulkan アクセラレーションを必要とするアプリケーションの実行時に、以下のエラーが発生する場合&lt;br /&gt;
 Vulkan call failed: -4&lt;br /&gt;
{{ic|~/.nv}} か {{ic|~/.cache/nvidia}} ディレクトリを削除してみてください。&lt;br /&gt;
&lt;br /&gt;
=== HDMI で音が出ない ===&lt;br /&gt;
&lt;br /&gt;
時々 nvidia の HDMI オーディオデバイスが以下のコマンドで表示されないことがあります:&lt;br /&gt;
&lt;br /&gt;
 $ aplay -l&lt;br /&gt;
&lt;br /&gt;
何かしらの理由により一部の新しいマシンでは NVIDIA GPU のオーディオチップがブート時に無効化されます。詳しくは、[https://devtalk.nvidia.com/default/topic/1024022/linux/gtx-1060-no-audio-over-hdmi-only-hda-intel-detected-azalia/?offset=4 NVIDIA のウェブサイト]や[https://bbs.archlinux.org/viewtopic.php?id=230125 フォーラムの投稿]を読んでください。&lt;br /&gt;
&lt;br /&gt;
オーディオを有効化して NVIDIA デバイスを再読み込みする必要があります。そうするためには、(ノート PC/Bumblebee の場合) GPU がオンになっていることや、GPU がリセットされるので GPU 上で X を実行していないことを確認してください:&lt;br /&gt;
&lt;br /&gt;
 # setpci -s 01:00.0 0x488.l=0x2000000:0x2000000&lt;br /&gt;
 # rmmod nvidia-drm nvidia-modeset nvidia&lt;br /&gt;
 # echo 1 &amp;gt; /sys/bus/pci/devices/0000:01:00.0/remove&lt;br /&gt;
 # echo 1 &amp;gt; /sys/bus/pci/devices/0000:00:01.0/rescan&lt;br /&gt;
 # modprobe nvidia-drm&lt;br /&gt;
 # xinit -- -retro&lt;br /&gt;
&lt;br /&gt;
NVIDIA 上で TTY を実行している場合、スクリーンが表示されなくなってしまわないように上記のコマンドを1つのスクリプトに記述してください。&lt;br /&gt;
&lt;br /&gt;
=== バックライトがオフにならないことがある ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、タイムアウトを設定したり xset を実行すると DPMS はバックライトをオフにします。しかしながら、プロプライエタリの Nvidia ドライバーのバグによって、黒画面になるだけで節電ができないことがあります。バグが修正されるまで、対応策として root で {{ic|vbetool}} を使う方法があります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|vbetool}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
画面をオフにして、何かキーを押したときにバックライトを再度オンにするには:&lt;br /&gt;
&lt;br /&gt;
 vbetool dpms off &amp;amp;&amp;amp; read -n1; vbetool dpms on&lt;br /&gt;
&lt;br /&gt;
もしくは、xrandr でモニターの出力を有効化・無効化できます (root 権限は不要です):&lt;br /&gt;
&lt;br /&gt;
 xrandr --output DP-1 --off; read -n1; xrandr --output DP-1 --auto&lt;br /&gt;
&lt;br /&gt;
==== HardDPMS ====&lt;br /&gt;
&lt;br /&gt;
プロプライエタリの 415 ドライバには [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/xconfigoptions.html#HardDPMS HardDPMS] という新機能が含まれています。これは DisplayPort で接続されたモニターのサスペンドに関する問題を解決することが一部のユーザによって報告されています。&lt;br /&gt;
&lt;br /&gt;
これは 440.26 からデフォルトで有効化されています。古いバージョンのドライバを使っている場合は、{{ic|HardDPMS}} オプションは {{ic|Device}} か {{ic|Screen}} セクション内で設定することができます。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-nvidia.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Option         &amp;quot;HardDPMS&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
    Option         &amp;quot;HardDPMS&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|HardDPMS}} は {{ic|BlankTime}} のようなスクリーンセーバーの設定にトリガーされます。以下の {{ic|ServerFlags}} は何も操作せずに 10 分経つとモニターをサスペンドします。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-nvidia.conf|&lt;br /&gt;
Section &amp;quot;ServerFlags&amp;quot;&lt;br /&gt;
    Option     &amp;quot;BlankTime&amp;quot; &amp;quot;10&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== xrandr BadMatch ===&lt;br /&gt;
&lt;br /&gt;
[[xrandr]] を使って DELL U2515H のような WQHD モニターを設定しようとしたときに、{{ic|xrandr --addmode}} が {{ic|X Error of failed request: BadMatch}} というエラーを吐く場合、プロプライエタリの NVIDIA ドライバーが HDMI 出力のピクセルクロック最大周波数を 225 MHz 以下に制限しているのが原因かもしれません。モニターを最大解像度に設定するには [[nouveau]] ドライバーをインストールする必要があります。[[カーネルパラメータ]]で {{ic|1=nouveau.hdmimhz=297}} (あるいは {{ic|330}}) を設定することで強制的に特定のピクセルクロック周波数を使うことができます。&lt;br /&gt;
&lt;br /&gt;
もしくは、モニターの EDID が誤っている可能性があります。[[#EDID を上書きする]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
他に考えられる理由としては、デフォルトで現在の NVIDIA ドライバは EDID によって明示的に報告されたモードのみを許可しますが、モニタによって報告されていないリフレッシュレートや解像度のほうが望ましい場合もあります (とは言え、EDID 情報は正しいです。現在の NVIDIA ドライバの制限が厳しすぎるだけなのです)。&lt;br /&gt;
&lt;br /&gt;
そのような場合、非 EDID モードを許可するオプションを {{ic|xorg.conf}} に追加すると良いかもしれません:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
    Option         &amp;quot;ModeValidation&amp;quot; &amp;quot;AllowNonEdidModes&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これは出力毎に設定できます。詳細は [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/xconfigoptions.html#ModeValidation README - Appendix B. X Config Options] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== EDID を上書きする ===&lt;br /&gt;
&lt;br /&gt;
[[カーネルモード設定#モードと EDID を強制する]]、[[Xrandr#トラブルシューティング]]、[[:en:Qnix QX2710#Fixing X11 with Nvidia]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-settings GUI によるオーバークロックが機能しない ===&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA/ヒントとテクニック#nvidia-settings からオーバークロックを有効化する]]に書かれているように、オーバークロックを有効にした後、nvidia-settings の CLI を使って変数を設定することでオーバークロックできます。詳しくは {{man|1|nvidia-settings}} を参照。&lt;br /&gt;
&lt;br /&gt;
全ての変数を確認する例:&lt;br /&gt;
&lt;br /&gt;
  nvidia-settings -q all&lt;br /&gt;
&lt;br /&gt;
パフォーマンスモードを優先するように PowerMizerMode を設定する例:&lt;br /&gt;
&lt;br /&gt;
  nvidia-settings -a [gpu:0]/GPUPowerMizerMode=1&lt;br /&gt;
&lt;br /&gt;
ファンスピードを 21% 固定に設定する例:&lt;br /&gt;
&lt;br /&gt;
 nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUTargetFanSpeed=21&lt;br /&gt;
&lt;br /&gt;
複数の変数を同時に設定する例 (50MHz だけ GPU をオーバークロック、50MHz だけビデオメモリをオーバークロック、100mV だけ GPU 電圧を上昇):&lt;br /&gt;
&lt;br /&gt;
  nvidia-settings -a GPUGraphicsClockOffsetAllPerformanceLevels=50 -a GPUMemoryTransferRateOffsetGPUGraphicsClockOffsetAllPerformanceLevels=50 -a GPUOverVoltageOffset=100&lt;br /&gt;
&lt;br /&gt;
=== Unknown Error によりオーバークロックが動作しない ===&lt;br /&gt;
&lt;br /&gt;
Xorg を非 root ユーザとして実行していて NVIDIA GPU をオーバークロックしようとした場合、以下と似たようなエラーが発生します:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ nvidia-settings -a &amp;quot;[gpu:0]/GPUGraphicsClockOffset[3]=10&amp;quot;|2=&lt;br /&gt;
ERROR: Error assigning value 10 to attribute &#039;GPUGraphicsClockOffset&#039; (trinity-zero:1[gpu:0]) as specified in assignment&lt;br /&gt;
        &#039;[gpu:0]/GPUGraphicsClockOffset[3]=10&#039; (Unknown Error).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この問題を避けるためには、Xorg を root ユーザとして実行しなければなりません。詳しくは [[Xorg#Rootless Xorg]] をご覧ください。&lt;br /&gt;
&lt;br /&gt;
=== 電力消費 ===&lt;br /&gt;
&lt;br /&gt;
ドライバの使用状況を確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|# lsof /dev/nvidia*|&lt;br /&gt;
kwin_wayl  867      user   17u   CHR   195,0      0t0  418 /dev/nvidia&lt;br /&gt;
kwin_wayl  867      user   18u   CHR   195,0      0t0  418 /dev/nvidiactl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
NVIDIA のカーネルモジュールで省電力が設定されている場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ grep . /sys/bus/pci/devices/0000:01:00.0/power/*|&lt;br /&gt;
/sys/bus/pci/devices/0000:01:00.0/power/control:auto&lt;br /&gt;
/sys/bus/pci/devices/0000:01:00.0/power/runtime_active_time:445933&lt;br /&gt;
/sys/bus/pci/devices/0000:01:00.0/power/runtime_status:active&lt;br /&gt;
/sys/bus/pci/devices/0000:01:00.0/power/runtime_suspended_time:1266&lt;br /&gt;
/sys/bus/pci/devices/0000:01:00.0/power/wakeup:disabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 # rmmod nvidia_drm&lt;br /&gt;
&lt;br /&gt;
{{hc|$ grep . /sys/bus/pci/devices/0000:01:00.0/power/*|&lt;br /&gt;
/sys/bus/pci/devices/0000:01:00.0/power/control:auto&lt;br /&gt;
/sys/bus/pci/devices/0000:01:00.0/power/runtime_active_time:461023&lt;br /&gt;
/sys/bus/pci/devices/0000:01:00.0/power/runtime_status:suspended&lt;br /&gt;
/sys/bus/pci/devices/0000:01:00.0/power/runtime_suspended_time:1064192&lt;br /&gt;
/sys/bus/pci/devices/0000:01:00.0/power/wakeup:disabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ソフトウェア GL をテストする ===&lt;br /&gt;
&lt;br /&gt;
バイナリの NVIDIA ドライバは Mesa の {{ic|1=LIBGL_ALWAYS_SOFTWARE=1}} 環境変数を尊重しませんが、以下の[[環境変数]]を設定することで libglvnd と EGL に Mesa を使うように指定することができます:&lt;br /&gt;
&lt;br /&gt;
 __GLX_VENDOR_LIBRARY_NAME=mesa&lt;br /&gt;
 __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json&lt;br /&gt;
&lt;br /&gt;
これらを設定することにより、GLX と EGL に Mesa の libgm が使用され、ソフトウェア GL になります。これで、現在遭遇しているバグが NVIDIA の GL ライブラリに関連するものであるかを検証するのに役立ちます。&lt;br /&gt;
&lt;br /&gt;
=== リフレッシュレートが120Hzまでしか上がらない ===&lt;br /&gt;
&lt;br /&gt;
新しいバージョンのドライバ (550xxより後) では、8bpc 出力の帯域が浪費され、仕様帯域上限を超えて信号が送られることにより、より高いリフレッシュレートのモードに繰り替えることができなくなっている[https://bbs.archlinux.org/viewtopic.php?id=302969 ようです]。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=nvidia-modeset.hdmi_deepcolor=0}} を[[カーネルパラメータ]]か [[modprobe]] で設定してください。&lt;br /&gt;
&lt;br /&gt;
ただし、HDR モニターにおいては deep color が必要であることに注意してください。&lt;br /&gt;
&lt;br /&gt;
=== HDMI で Wayland 上で 60Hz にすると誤った色空間が使用される ===&lt;br /&gt;
&lt;br /&gt;
一部のケースで (1660 Super グラフィックスカードを HDMI ケーブルで 60 Hz で使用するなど)、ドライバが出力の色空間を誤って推定してしまうようです。これにより、色が通常よりも暗くなってしまいます。Wayland では色空間を明示的に設定する簡単な方法が存在しないため、{{ic|nvidia-modeset.debug_force_color_space{{=}}2}} を[[カーネルパラメータ]]あるいは [[modprobe]] で設定する方法が一つの回避策になります。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NVIDIA/Trableshooting|2026-03-29|869863}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA/%E3%83%92%E3%83%B3%E3%83%88%E3%81%A8%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF&amp;diff=41436</id>
		<title>NVIDIA/ヒントとテクニック</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA/%E3%83%92%E3%83%B3%E3%83%88%E3%81%A8%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF&amp;diff=41436"/>
		<updated>2026-03-29T01:18:12Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[Category:X サーバー]]&lt;br /&gt;
[[en:NVIDIA/Tips and tricks]]&lt;br /&gt;
[[ru:NVIDIA/Tips and tricks]]&lt;br /&gt;
[[zh-hans:NVIDIA/提示和技巧]]&lt;br /&gt;
&lt;br /&gt;
== ターミナルの解像度を修正する ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA#fbdev]] がデフォルトで有効であるため、[[Linux コンソール]]は追加の設定無しでモニタのネイティブな解像度を使用するはずです。&lt;br /&gt;
&lt;br /&gt;
{{ic|fbdev}} を無効化していたり、古いドライバを使用していたりする場合は、解像度が予想より小さい場合があります。回避策として、[[ブートローダー]]の設定で解像度を設定することができます。&lt;br /&gt;
&lt;br /&gt;
GRUB を使用している場合、[[GRUB/ヒントとテクニック#フレームバッファの解像度を設定する]]を見てください。&lt;br /&gt;
&lt;br /&gt;
[[systemd-boot]] を使用している場合、{{ic|&#039;&#039;esp&#039;&#039;/loader/loader.conf}} 内で {{ic|console-mode}} を設定してください。詳しくは [[systemd-boot#ローダー設定]] をご覧ください。[https://forums.fedoraforum.org/showthread.php?t=306271] [https://web.archive.org/web/20170405115954/https://www.reddit.com/r/archlinux/comments/4gwukx/nvidia_drivers_and_high_resolution_tty_possible/]&lt;br /&gt;
&lt;br /&gt;
[[rEFInd]] を使用している場合、{{ic|&#039;&#039;esp&#039;&#039;/EFI/refind/refind.conf}} で {{ic|use_graphics_for +,linux}} を設定してください。ちょっとした注意事項としては、これによりブート中にカーネルパラメータが表示されなくなります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|上記の方法でターミナルの解像度を修正できない場合、UEFI の設定で Legacy BIOS モード (しばしば、Compatibility Support Module、CSM、Legacy Boot と呼ばれます) を完全に無効化する必要があるかもしれません。無効化する前に、すべてのデバイスが UEFI ブートを使用するように設定されていることを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
== TV 出力を使う ==&lt;br /&gt;
&lt;br /&gt;
[[Wikibooks:NVIDIA/TV-OUT]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== X で TV (DFP) を唯一のディスプレイとして使う ==&lt;br /&gt;
&lt;br /&gt;
モニターが自動的に検出されない場合、X サーバーは何かしらのデフォルトの解像度 (通常であれば 640x480) にフォールバックします。これは、DVI/HDMI/DisplayPort 接続の TV をメインディスプレイとして使用していて TV がオフまたは切断されているときに X が起動すると問題になります。&lt;br /&gt;
&lt;br /&gt;
NVIDIA に正しい解像度を強制するには、EDID のコピーをファイルシステムのどこかに保存して、X がディスプレイから EDID を読み込まずにそのファイルをパースできるようにします。&lt;br /&gt;
&lt;br /&gt;
EDID を取得するには、{{ic|nvidia-settings}} を起動します。ツリー形式で情報が表示されますが、今は設定は無視して GPU を選択し (対応するエントリは &#039;&#039;GPU-0&#039;&#039; などのような名前であるはずです)、&#039;&#039;DFP&#039;&#039; セクションをクリックして (&#039;&#039;DFP-0&#039;&#039; などのような名前です)、&#039;&#039;Acquire Edid...&#039;&#039; ボタンをクリックしてファイルをどこかに保存してください (例: {{ic|/etc/X11/dfp0.edid}})。&lt;br /&gt;
&lt;br /&gt;
フロントエンドにマウスやキーボードが接続されていない場合、コマンドラインを使って EDID を取得することもできます。EDID ブロックも出力するように引数を指定して X サーバーを起動します:&lt;br /&gt;
&lt;br /&gt;
 $ startx -- -logverbose 6&lt;br /&gt;
&lt;br /&gt;
X サーバーが初期化を完了したら、サーバーを閉じ、&#039;&#039;nvidia-xconfig&#039;&#039; を使って [[Xorg#一般|Xorg のログファイル]]から EDID ブロックを抽出してください:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-xconfig --extract-edids-from-file ~/.local/share/xorg/Xorg.0.log --extract-edids-output-file ./dfp0.bin&lt;br /&gt;
&lt;br /&gt;
Xorg の設定で以下を {{ic|Device}} セクションに追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-nvidia.conf|&lt;br /&gt;
Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
Option &amp;quot;CustomEDID&amp;quot; &amp;quot;DFP-0:/etc/X11/dfp0.bin&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ConnectedMonitor}} オプションはドライバーに強制的に DFP を認識させます。{{ic|CustomEDID}} にはデバイスの EDID データを指定してください。TV/DFP が接続されているかのように X が起動するようになります。&lt;br /&gt;
&lt;br /&gt;
ブート時に自動的にディスプレイマネージャを起動して適切な X ディスプレイが設定されてから TV の電源を入れることができます。&lt;br /&gt;
&lt;br /&gt;
== ヘッドレス (モニターなし) 解像度 ==&lt;br /&gt;
&lt;br /&gt;
ヘッドレスモードでは解像度は VNC や Steam Link で利用される 640x480 に落ちます。より高い解像度(例えば、1920x1080)で開始するには、{{ic|xorg.conf}} 内の {{ic|Screen}} サブセクションの下にある {{ic|Virtual}} エントリ で指定します:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    [...]&lt;br /&gt;
    SubSection     &amp;quot;Display&amp;quot;&lt;br /&gt;
        Depth       24&lt;br /&gt;
        Virtual     1920 1080&lt;br /&gt;
    EndSubSection&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
{{Tip|ヘッドレスモードは扱いづらく、エラーが発生しがちかもしれません。例えば、ヘッドレスモードではデスクトップ環境や {{Pkg|nvidia-utils}} は解像度を変更するためのグラフィカルな手段を提供しません。解像度の設定を容易にするためには、ポートにモニターが接続されているように見せかける、ダミーの DP や HDMI アダプターを使うことができます。そうすれば、VNC や Steam Link のようなリモートセッションを使って、解像度を普通に変更できます。}}&lt;br /&gt;
&lt;br /&gt;
== 電源を確認 ==&lt;br /&gt;
&lt;br /&gt;
NVIDIA の X.org ドライバーを使って GPU の現在の電源を検出することもできます。現在の電源を表示するには、読み取り専用パラメータの &#039;GPUPowerSource&#039; をチェックしてください (0 - AC, 1 - バッテリー):&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q GPUPowerSource -t|1}}&lt;br /&gt;
&lt;br /&gt;
== ACPI イベントを Listen する ==&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバーは自動的に [[acpid]] デーモンに接続して、バッテリー電源やドッキング、ホットキーなどの ACPI イベントを listen します。接続が失敗した場合、X.org は以下のような警告を出力します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.local/share/xorg/Xorg.0.log|&lt;br /&gt;
NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon&lt;br /&gt;
NVIDIA(0):     may not be running or the &amp;quot;AcpidSocketPath&amp;quot; X&lt;br /&gt;
NVIDIA(0):     configuration option may not be set correctly.  When the&lt;br /&gt;
NVIDIA(0):     ACPI event daemon is available, the NVIDIA X driver will&lt;br /&gt;
NVIDIA(0):     try to use it to receive ACPI event notifications.  For&lt;br /&gt;
NVIDIA(0):     details, please see the &amp;quot;ConnectToAcpid&amp;quot; and&lt;br /&gt;
NVIDIA(0):     &amp;quot;AcpidSocketPath&amp;quot; X configuration options in Appendix B: X&lt;br /&gt;
NVIDIA(0):     Config Options in the README.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の警告は完全に無害ですが、{{ic|/etc/X11/xorg.conf.d/20-nvidia.conf}} で {{ic|ConnectToAcpid}} オプションを無効にすることでメッセージを消すことができます:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
   ...&lt;br /&gt;
   Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
   Option &amp;quot;ConnectToAcpid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
   ...&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
ノートパソコンを使っている場合、代わりに [[acpid]] デーモンをインストールして有効化すると良いかもしれません。&lt;br /&gt;
&lt;br /&gt;
== GPU の温度をシェルに表示する ==&lt;br /&gt;
&lt;br /&gt;
GPU の温度を確認する方法は3つあります。&#039;&#039;nvidia-settings&#039;&#039; は X を使用する必要があります。X を使っていない場合は &#039;&#039;nvidia-smi&#039;&#039; や &#039;&#039;nvclock&#039;&#039; による方法を使って下さい。また、&#039;&#039;nvclock&#039;&#039; は GeForce 200 シリーズのカードや Zotac IONITX の 8800GS などの内蔵 GPU など新しい NVIDIA カードでは機能しません。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-settings ===&lt;br /&gt;
&lt;br /&gt;
GPU の温度をシェルに表示するには、以下のように &#039;&#039;nvidia-settings&#039;&#039; を使って下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q gpucoretemp|&lt;br /&gt;
  Attribute &#039;GPUCoreTemp&#039; (hostname:0[gpu:0]): 49.&lt;br /&gt;
    &#039;GPUCoreTemp&#039; is an integer attribute.&lt;br /&gt;
    &#039;GPUCoreTemp&#039; is a read-only attribute.&lt;br /&gt;
    &#039;GPUCoreTemp&#039; can use the following target types: GPU.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の場合、ボードの GPU 温度は 49 °C になります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;rrdtool&#039;&#039; や &#039;&#039;conky&#039;&#039; などのユーティリティで使うために温度だけを表示したいときは:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q gpucoretemp -t|49}}&lt;br /&gt;
&lt;br /&gt;
=== nvidia-smi ===&lt;br /&gt;
&lt;br /&gt;
X を全く使わず (例: Wayland を実行している場合やヘッドレスサーバの場合) GPU から直接温度を読み込むことができる &#039;&#039;nvidia-smi&#039;&#039; を使います。&lt;br /&gt;
&lt;br /&gt;
GPU の温度をシェルに表示するには、&#039;&#039;nvidia-smi&#039;&#039; を使って下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-smi|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Wed Feb 28 14:27:35 2024&lt;br /&gt;
+-----------------------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 550.54.14              Driver Version: 550.54.14      CUDA Version: 12.4     |&lt;br /&gt;
|-----------------------------------------+------------------------+----------------------+&lt;br /&gt;
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                                         |                        |               MIG M. |&lt;br /&gt;
|=========================================+========================+======================|&lt;br /&gt;
|   0  NVIDIA GeForce GTX 1660 Ti     Off |   00000000:01:00.0  On |                  N/A |&lt;br /&gt;
|  0%   49C    P8              9W /  120W |     138MiB /   6144MiB |      2%      Default |&lt;br /&gt;
|                                         |                        |                  N/A |&lt;br /&gt;
+-----------------------------------------+------------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+-----------------------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                                              |&lt;br /&gt;
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |&lt;br /&gt;
|        ID   ID                                                               Usage      |&lt;br /&gt;
|=========================================================================================|&lt;br /&gt;
|    0   N/A  N/A    223179      G   weston                                        120MiB |&lt;br /&gt;
+-----------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
温度だけ見るには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-smi -q -d TEMPERATURE|2=&lt;br /&gt;
==============NVSMI LOG==============&lt;br /&gt;
&lt;br /&gt;
Timestamp                                 : Wed Feb 28 14:27:35 2024&lt;br /&gt;
Driver Version                            : 550.54.14&lt;br /&gt;
CUDA Version                              : 12.4&lt;br /&gt;
&lt;br /&gt;
Attached GPUs                             : 1&lt;br /&gt;
GPU 00000000:01:00.0&lt;br /&gt;
    Temperature&lt;br /&gt;
        GPU Current Temp                  : 49 C&lt;br /&gt;
        GPU T.Limit Temp                  : N/A&lt;br /&gt;
        GPU Shutdown Temp                 : 95 C&lt;br /&gt;
        GPU Slowdown Temp                 : 92 C&lt;br /&gt;
        GPU Max Operating Temp            : 90 C&lt;br /&gt;
        GPU Target Temperature            : 83 C&lt;br /&gt;
        Memory Current Temp               : N/A&lt;br /&gt;
        Memory Max Operating Temp         : N/A&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;rrdtool&#039;&#039; や &#039;&#039;conky&#039;&#039; などのユーティリティで使うために温度だけを取得したいときは:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits|2=49}}&lt;br /&gt;
&lt;br /&gt;
=== nvclock ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|nvclock}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;nvclock&#039;&#039; は Geforce 200 シリーズなどの新しい NVIDIA カードの温度センサーにはアクセスできません。}}&lt;br /&gt;
&lt;br /&gt;
たまに &#039;&#039;nvclock&#039;&#039; と &#039;&#039;nvidia-settings&#039;&#039;/&#039;&#039;nv-control&#039;&#039; が報告する温度が食い違うことがあります。&#039;&#039;nvclock&#039;&#039; の作者 (thunderbird) による [https://sourceforge.net/projects/nvclock/forums/forum/67426/topic/1906899 この投稿] によると、&#039;&#039;nvclock&#039;&#039; の値のほうが正確なようです。&lt;br /&gt;
&lt;br /&gt;
== オーバークロックと冷却 ==&lt;br /&gt;
&lt;br /&gt;
{{Warning| オーバークロックによってハードウェアに永久的な損傷が発生するかもしれません。警告しましたよ。}}&lt;br /&gt;
&lt;br /&gt;
=== nvidia-settings からオーバークロックを有効化する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* rootless モードで Xorg サーバを実行している場合、一部のオーバークロックの設定は適用できません。[[Xorg#root として Xorg を実行|Xorg を root として実行]]することを検討してください。&lt;br /&gt;
* &#039;&#039;nvidia-settings&#039;&#039; は root として実行する必要があるかもしれません。&lt;br /&gt;
* DRM カーネルモードセッティングを有効にすると Coolbits の値に関わらずオーバークロックができなくなる場合があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ドライバのバージョンによっては、一部のオーバークロック機能がデフォルトで有効になっています。一部のサポートされていないオーバークロック機能は {{ic|Device}} セクションで &#039;&#039;Coolbits&#039;&#039;  オプションで有効化する必要があります:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;Coolbits&amp;quot; &amp;quot;&#039;&#039;値&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Tip| &#039;&#039;Coolbits&#039;&#039; オプションは、Xorg の設定ファイルを操作する &#039;&#039;nvidia-xconfig&#039;&#039; を使って簡単に設定できます: {{bc|1=# nvidia-xconfig --cool-bits=&#039;&#039;value&#039;&#039;}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Coolbits&#039;&#039; の値は2進数の構成ビットを足し合わせたものです。構成ビットは以下のとおりです:&lt;br /&gt;
&lt;br /&gt;
* {{ic|8}} (ビット3) - &#039;&#039;nvidia-settings&#039;&#039; の &#039;&#039;PowerMizer&#039;&#039; ページの追加のオーバークロック機能を有効化します。Fermi や Fermi より新しいアーキテクチャでバージョン 337.12 から利用可能です。[https://www.phoronix.com/scan.php?px=MTY1OTM&amp;amp;page=news_item]&lt;br /&gt;
* {{ic|16}} (ビット4) - &#039;&#039;nvidia-settings&#039;&#039; の CLI のオプションを使ってオーバーボルテージできるようにします。Fermi や Fermi より新しいアーキテクチャでバージョン 346.16 から利用可能です。[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTg0MDI]&lt;br /&gt;
&lt;br /&gt;
サポートされていないバージョンのドライバを使用している場合は、以下のビットも使用する必要があるかもしれません:&lt;br /&gt;
&lt;br /&gt;
* {{ic|1}} (ビット0) - &#039;&#039;nvidia-settings&#039;&#039; の &#039;&#039;Clock Frequencies&#039;&#039; ページで古い(Fermi以前)コアをオーバークロックできるようにします。バージョン 343.13 で削除されました。&lt;br /&gt;
* {{ic|2}} (ビット1) - このビットがセットされると、ドライバは「ビデオメモリの容量が異なる複数の GPU を使用するときに SLI の初期化を試みます。」バージョン 470.42.01 で削除されました。&lt;br /&gt;
* {{ic|4}} (ビット2) - &#039;&#039;nvidia-settings&#039;&#039; の &#039;&#039;Thermal Monitor&#039;&#039; ページで GPU ファンの速度を手動設定できるようにします。バージョン 470.42.01 で削除されました。&lt;br /&gt;
&lt;br /&gt;
複数の機能を有効化するには &#039;&#039;Coolbits&#039;&#039; の値に上記の値を足し合わせてください。例えば、Fermi コアのオーバークロックとオーバーボルテージを有効化する場合は {{ic|Option &amp;quot;Coolbits&amp;quot; &amp;quot;24&amp;quot;}} をセットします。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Coolbits&#039;&#039; に関するドキュメントは {{ic|/usr/share/doc/nvidia/html/xconfigoptions.html}} と[https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/xconfigoptions.html#Coolbits ここ]にあります。&lt;br /&gt;
&lt;br /&gt;
{{Note| 別の手段としては DOS(推奨) 内から、あるいは [https://www.techpowerup.com/download/nvidia-nvflash/ nvflash] と [https://www.guru3d.com/files-details/nvidia-bios-editor-download-nibitor.html NiBiTor 6.0] を Win32 環境内で使って、GPU BIOS を編集しリフラッシュするというものがあります。BIOS をフラッシュする利点は電圧制限を上げられることだけでなく、一般に Coolbit のようなソフトウェアオーバークロッキングの方法で安定性が向上することです。[https://ivanvojtko.blogspot.sk/2014/03/how-to-overclock-geforce-460gtx-fermi.html Fermi BIOS modification tutorial]}}&lt;br /&gt;
&lt;br /&gt;
=== 静的な 2D/3D クロックを設定する ===&lt;br /&gt;
&lt;br /&gt;
[[カーネルモジュールパラメータ]]を使用して PowerMizer を最大パフォーマンスレベルで有効化してください (この設定がないと VSync が機能しません):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/nvidia.conf|2=&lt;br /&gt;
options nvidia NVreg_RegistryDwords=&amp;quot;PerfLevelSrc=0x2222&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== GPU のブーストクロックを下げる ===&lt;br /&gt;
&lt;br /&gt;
[https://nouveau.freedesktop.org/CodeNames.html#NV140 Volta (NV140/GVXXX)] GPU 及びそれ以降では、クロックブーストが異なる方法で動作します。最大クロックはブート時に、サポートされている最も高い制限値に設定されます。これが望ましい動作である場合は、設定は必要ありません。&lt;br /&gt;
&lt;br /&gt;
これの欠点は、電力効率が低いことです。クロックが上がると、安定性のために電圧を上げる必要があります。その結果として、電力消費量、発熱、ファンの音量が非線形的に増加します。なので、ブーストクロックの制限を下げることで、電力効率を上げることができます。&lt;br /&gt;
&lt;br /&gt;
ブーストクロックの制限は &#039;&#039;nvidia-smi&#039;&#039; を使用して変更できます:&lt;br /&gt;
&lt;br /&gt;
* サポートされているクロックレートを表示: {{bc|$ nvidia-smi -q -d SUPPORTED_CLOCKS}}&lt;br /&gt;
* GPU のブーストクロックの制限を 1695 MHz に設定: {{bc|1=# nvidia-smi --lock-gpu-clocks=0,1695 --mode=1}}&lt;br /&gt;
* メモリのブーストクロックの制限を 5001 MHz に設定: {{bc|1=# nvidia-smi --lock-memory-clocks=0,5001}}&lt;br /&gt;
&lt;br /&gt;
電力効率の最適化をするには、ゲームをプレイしながら &#039;&#039;nvidia-smi&#039;&#039; で GPU 使用率を確認してください。VSync はオンにしておく必要があります。ブーストクロックの制限を下げると、GPU 使用率が増加します。遅い GPU では、各フレームを描画するのにより長い時間がかかるからです。GPU 使用率が 100% になり、かつ、カクつきが発生しない程度にまでクロックを下げれば、効率は最大になります。このとき、各フレームはリフレッシュレートを維持するのにちょうど十分なほど高速に描画できていることになります。&lt;br /&gt;
&lt;br /&gt;
例として、RTX 3090 Ti でデフォルトから上記の設定に変更した場合、Hitman 3 を 4K 60 FPS でプレイしたところ、電力消費量が 30% 減少し、温度は 75 度から 63 度に、ファンの速度は 73% から 57% に低下しました。&lt;br /&gt;
&lt;br /&gt;
=== オーバークロックの設定を保存する ===&lt;br /&gt;
&lt;br /&gt;
通常、&#039;&#039;nvidia-settings&#039;&#039; インターフェイスで設定したクロックと電圧のオフセットは保存されず、再起動すると消えてしまいます。幸い、プロプライエタリドライバにおいてオーバークロック用のインターフェイスを提供し、ユーザのオーバークロック設定を保存することが可能で、起動時に自動的に設定を適用するツールがあります。以下にその一部を挙げます:&lt;br /&gt;
&lt;br /&gt;
* {{AUR|gwe}} - グラフィカル。デスクトップセッションの開始時に設定を適用します。&lt;br /&gt;
* {{AUR|nvclock}} と {{AUR|systemd-nvclock-unit}} - グラフィカル。システムの起動時に設定を適用します。&lt;br /&gt;
* {{AUR|nvoc}} - テキストベース。プロファイルは {{ic|/etc/nvoc.d/}} 下の設定ファイルです。デスクトップセッション開始時に設定を適用します。&lt;br /&gt;
&lt;br /&gt;
あるいは、{{ic|GPUGraphicsClockOffset}} 属性と {{ic|GPUMemoryTransferRateOffset}} 属性を[[自動起動|起動時に]] &#039;&#039;nvidia-settings&#039;&#039; のコマンドラインインターフェイスでセットすることができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-settings -a &amp;quot;GPUGraphicsClockOffset[&#039;&#039;performance_level&#039;&#039;]=&#039;&#039;offset&#039;&#039;&amp;quot;&lt;br /&gt;
 $ nvidia-settings -a &amp;quot;GPUMemoryTransferRateOffset[&#039;&#039;performance_level&#039;&#039;]=&#039;&#039;offset&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;performance_level&#039;&#039;}} は最も高いパフォーマンスレベルとなります。マシンに複数の GPU が存在する場合、GPU ID を指定する必要があります: {{ic|1=[gpu:&#039;&#039;gpu_id&#039;&#039;]GPUGraphicsClockOffset[&#039;&#039;performance_level&#039;&#039;]=&#039;&#039;offset&#039;&#039;}}。&lt;br /&gt;
&lt;br /&gt;
=== カスタムの TDP 制限 ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|It seems that not all cards support this. Among the 3 cards available to me: a desktop 3080 Ti, a mobile 1650 MaxQ, and a mobile 500 Ada, this only worked on the 3080 Ti; on the two laptops I got &amp;quot;not supported for GPU&amp;quot; warnings. Is this feature unavailable for mobile GPUs?}}&lt;br /&gt;
&lt;br /&gt;
最近の NVIDIA グラフィックカードは TDP と温度が制限内に収まるように周波数を調整します。パフォーマンスを上げるために TDP 制限を変更できます。これにより温度が上昇し、電力消費量が増加するでしょう。&lt;br /&gt;
&lt;br /&gt;
例えば、電力制限を 160.30W に設定するには:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-smi -pl 160.30&lt;br /&gt;
&lt;br /&gt;
(ドライバの永続化なしで)電力制限を起動時に設定するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/nvidia-tdp.timer|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Set NVIDIA power limit on boot&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnBootSec=5&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/nvidia-tdp.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Set NVIDIA power limit&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/nvidia-smi -pl 160.30&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|nvidia-tdp.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
=== ログイン時にファンの速度を設定する ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|GPU のファン速度を手動設定するには (たとえ Xorg が root として実行されていたとしても) &#039;&#039;nvidia-settings&#039;&#039; を root として実行する必要があるため、以下の方法はうまく行きません。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;nvidia-settings&#039;&#039; のコンソールインターフェイスを使ってグラフィックカードのファンの速度を調整することができます。まず、Xorg 設定の [[#nvidia-settings からオーバークロックを有効化する|Coolbits]] オプションでビット2を有効化していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Note| 現在 GeForce 400/500 シリーズのカードではこの方法を使ってログイン時にファンの速度を設定することはできません。この方法では &#039;&#039;nvidia-settings&#039;&#039; を使って現在の X セッション内でファンのスピードを変更することしかできません。}}&lt;br /&gt;
&lt;br /&gt;
Xorg が起動した時にファンを調整するには以下の行を [[xinitrc]] ファイルに記述します。{{ic|&#039;&#039;n&#039;&#039;}} は設定したいファンの速度のパーセンテージに置き換えて下さい。&lt;br /&gt;
&lt;br /&gt;
 nvidia-settings -a &amp;quot;[gpu:0]/GPUFanControlState=1&amp;quot; -a &amp;quot;[fan:0]/GPUTargetFanSpeed=&#039;&#039;n&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
GPU とファンの番号を増やすことで二番目の GPU を設定することもできます。&lt;br /&gt;
&lt;br /&gt;
 nvidia-settings -a &amp;quot;[gpu:0]/GPUFanControlState=1&amp;quot; -a &amp;quot;[fan:0]/GPUCurrentFanSpeed=&#039;&#039;n&#039;&#039;&amp;quot; \&lt;br /&gt;
                 -a &amp;quot;[gpu:1]/GPUFanControlState=1&amp;quot; -a  [fan:1]/GPUCurrentFanSpeed=&#039;&#039;n&#039;&#039;&amp;quot; &amp;amp;&lt;br /&gt;
&lt;br /&gt;
[[GDM]] や [[KDM]] などのログインマネージャを使用している場合、デスクトップエントリファイルを作成して設定をさせることもできます。{{ic|~/.config/autostart/nvidia-fan-speed.desktop}} を作成してその中に以下のテキストを入力してください。{{ic|&#039;&#039;n&#039;&#039;}} は速度のパーセンテージに置き換えて下さい。&lt;br /&gt;
&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Exec=nvidia-settings -a &amp;quot;[gpu:0]/GPUFanControlState=1&amp;quot; -a &amp;quot;[fan:0]/GPUCurrentFanSpeed=&#039;&#039;n&#039;&#039;&amp;quot;&lt;br /&gt;
 X-GNOME-Autostart-enabled=true&lt;br /&gt;
 Name=nvidia-fan-speed&lt;br /&gt;
&lt;br /&gt;
{{Note|ドライバーのバージョン 349.16 から、{{ic|GPUCurrentFanSpeed}} は {{ic|GPUTargetFanSpeed}} に置き換わっています [https://devtalk.nvidia.com/default/topic/821563/linux/can-t-control-fan-speed-with-beta-driver-349-12/post/4526208/#4526208]。}}&lt;br /&gt;
&lt;br /&gt;
複数のグラフィックカードのファン速度を調整できるようにしたい場合、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-xconfig --enable-all-gpus&lt;br /&gt;
 $ nvidia-xconfig --cool-bits=4&lt;br /&gt;
&lt;br /&gt;
{{Note|一部のラップトップ(ThinkPad [https://devtalk.nvidia.com/default/topic/1052110/linux/can-t-control-gtx-1050-ti-max-q-fan-on-thinkpad-x1-extreme-laptop/post/5340658/#5340658 X1 Extreme] や [https://devtalk.nvidia.com/default/topic/1048624/linux/how-to-set-gpu-fan-speed/post/5321818/#5321818 P51/P52] を含む)においては、2つのファンがあるものの、どちらも nvidia によって制御されません。}}&lt;br /&gt;
&lt;br /&gt;
=== NVML によるシンプルなオーバークロックスクリプト ===&lt;br /&gt;
&lt;br /&gt;
Nvidia Management Library (NVML) は、GPU のコアとメモリのクロックオフセットと電力制限値を管理できる API を提供しています。これを使うには、{{Pkg|python-nvidia-ml-py}} をインストールし、以下の Python スクリプトを所望の設定で使用してください。このスクリプトは、起動のたびに root として実行してオーバークロック/低電圧の設定を適用し直す必要があります。&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
from pynvml import *&lt;br /&gt;
&lt;br /&gt;
nvmlInit()&lt;br /&gt;
&lt;br /&gt;
# 調節対象の GPU を指定する。以下でエラーが発生する場合や、複数の GPU が存在する場合、1 に設定するか、他の値を試してください&lt;br /&gt;
myGPU = nvmlDeviceGetHandleByIndex(0)&lt;br /&gt;
&lt;br /&gt;
# 以下の行の &amp;quot;000&amp;quot; の部分を所望の GPU クロックオフセット値に置き換えてください。&lt;br /&gt;
nvmlDeviceSetGpcClkVfOffset(myGPU,000)&lt;br /&gt;
&lt;br /&gt;
# 以下の行の &amp;quot;000&amp;quot; の部分を、所望のメモリクロックオフセット値の「2倍」に置き換えてください。&lt;br /&gt;
# 例えば、オフセットが 500 である場合、以下の行には 1000 と記述してください。&lt;br /&gt;
nvmlDeviceSetMemClkVfOffset(myGPU,000)&lt;br /&gt;
&lt;br /&gt;
# 以下に電力制限値を mW で設定してください。例えば、216W は 216000 (mW) になります。電力制限値を調整したくない場合は以下の行を削除してください。&lt;br /&gt;
nvmlDeviceSetPowerManagementLimit(myGPU, 000000) &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVML で低電圧化 ===&lt;br /&gt;
&lt;br /&gt;
NVML API を用いることで GPU の低電圧化もできます。これにより、電力消費量を減らし、温度を下げることができます。パフォーマンスのロスは最小限であり、それどころか逆にパフォーマンスが向上することもあります。特にノート PC においては、低電圧化が望ましいかもしれません。&lt;br /&gt;
&lt;br /&gt;
{{Note|極度に低電圧化すると、深刻な安定性の問題を生じる可能性があります。特に、ファームウェアから直接設定した場合、コンピュータが起動不能になることもあります。一部のマザーボードには、これを防ぐための低電圧保護の設定が存在します。低電圧化を行う際は、この設定を事前に無効にしておく必要があります (Alienware m16 R1 がその例です)。(低電圧化による) 恩恵は、マザーボードのブランドとモデルにより異なります。&lt;br /&gt;
&lt;br /&gt;
さらに、オーバークロックの場合と同じく、電圧は少しずつ調整して、そのたびに[[ストレステスト|システムの安定性をテスト]]するべきです。}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|python-nvidia-ml-py}} を[[インストール]]し、以下のスクリプトを[[作成]]、そして[[実行可能属性|実行可能に]]してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/local/sbin/nvidia-undervolt.py|2=&lt;br /&gt;
#!/bin/env python&lt;br /&gt;
&lt;br /&gt;
from pynvml import *&lt;br /&gt;
from ctypes import byref&lt;br /&gt;
&lt;br /&gt;
nvmlInit()&lt;br /&gt;
&lt;br /&gt;
# 電圧を調整する GPU の選択。複数 GPU の環境でエラーになる場合は、1など他の値に設定してください。&lt;br /&gt;
myGPU = nvmlDeviceGetHandleByIndex(0)&lt;br /&gt;
##print(f&amp;quot;myGPU value: {myGPU}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# 許容最小・最大電力の取得。&lt;br /&gt;
##min_power, max_power = nvmlDeviceGetPowerManagementLimitConstraints(myGPU)&lt;br /&gt;
##print(f&amp;quot;Allowed range: {min_power} mW to {max_power} mW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# この行で電力制限を mW 単位で設定できます (例: 216W は 216000 になります)。&lt;br /&gt;
# この値は、許容最小・最大電力の制限内に収まっていなければなりません。&lt;br /&gt;
# 電力制限を設定しない場合は、以下の行を削除あるいはコメントアウトしてください。&lt;br /&gt;
nvmlDeviceSetPowerManagementLimit(myGPU, 000000)&lt;br /&gt;
&lt;br /&gt;
# 許容最小・最大クロックの定義。&lt;br /&gt;
# GPU によってサポートされているクロックは次のコマンドで確認できます:&lt;br /&gt;
# nvidia-smi -q -d SUPPORTED_CLOCKS&lt;br /&gt;
nvmlDeviceSetGpuLockedClocks(myGPU,&#039;&#039;210&#039;&#039;,&#039;&#039;2340&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
####################################&lt;br /&gt;
# ============ P0 State ============&lt;br /&gt;
####################################&lt;br /&gt;
&lt;br /&gt;
# ============ メモリ ============&lt;br /&gt;
# 必要に応じて以下のコードをアンコメント、編集してください。&lt;br /&gt;
# 注意: メモリクロックのオフセットは「2倍する」必要があります。&lt;br /&gt;
# 例えば、オフセットを 500 に設定したい場合は、&lt;br /&gt;
# clockOffsetMHz に 1000 を代入してください。&lt;br /&gt;
&lt;br /&gt;
##infoMemP0 = c_nvmlClockOffset_t()&lt;br /&gt;
##infoMemP0.version = nvmlClockOffset_v1&lt;br /&gt;
##infoMemP0.type = NVML_CLOCK_MEM&lt;br /&gt;
##infoMemP0.pstate = NVML_PSTATE_0&lt;br /&gt;
##infoMemP0.clockOffsetMHz = &#039;&#039;2000&#039;&#039;&lt;br /&gt;
### このオフセットは、メモリをどれだけより速くするかを表しています。&lt;br /&gt;
### 例えば、この場合、メモリは 8000 MHz ではなく、&lt;br /&gt;
### 8000 + (2000 / 2) = 9000 MHz で動作します。&lt;br /&gt;
&lt;br /&gt;
##nvmlDeviceSetClockOffsets(myGPU, byref(infoMemP0))&lt;br /&gt;
&lt;br /&gt;
# ============ グラフィックス =============&lt;br /&gt;
infoGraphicsP0 = c_nvmlClockOffset_t()&lt;br /&gt;
infoGraphicsP0.version = nvmlClockOffset_v1&lt;br /&gt;
infoGraphicsP0.type = NVML_CLOCK_GRAPHICS&lt;br /&gt;
infoGraphicsP0.pstate = NVML_PSTATE_0&lt;br /&gt;
infoGraphicsP0.clockOffsetMHz = &#039;&#039;270&#039;&#039;&lt;br /&gt;
## このオフセットの値は、周波数-電圧曲線が 270 MHz 上に上がることを意味します。&lt;br /&gt;
## 例えば、本来 2070 MHz で動作する電圧では、&lt;br /&gt;
## この設定により 2070 + 270 = 2340 MHz で動作するようになります。&lt;br /&gt;
&lt;br /&gt;
nvmlDeviceSetClockOffsets(myGPU, byref(infoGraphicsP0))&lt;br /&gt;
&lt;br /&gt;
nvmlShutdown()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
使用した関数の詳細は [https://docs.nvidia.com/deploy/nvml-api/index.html NVML API ドキュメント] Section 5.18 にあります。[https://www.reddit.com/r/linux_gaming/comments/1fm17ea/comment/lo7mo09/ この Reddit の投稿]では、低電圧化をクロックオフセットで行う理由について説明されています。&lt;br /&gt;
&lt;br /&gt;
このスクリプトは、GPU の最も高い [https://docs.nvidia.com/gameworks/content/gameworkslibrary/coresdk/nvapi/group__gpupstate.html P-state] における低電圧化しか行いません。P0 以外の P-state で設定したい場合は、[https://www.reddit.com/r/linux_gaming/comments/1fm17ea/comment/n4vmb4k この Reddit の投稿]を参考にしてください。&lt;br /&gt;
&lt;br /&gt;
{{Note|残念ながら、一部の GPU は、NVML API による電力制限の変更をサポートしていません。コマンド {{ic|nvidia-smi -pl &#039;&#039;000&#039;&#039;}} を root ユーザとして実行することで、サポートの有無を確認できます。&lt;br /&gt;
&lt;br /&gt;
サポートがない場合は、スクリプトから電力制限の部分を削除あるいはコメントアウトし、最後の手段として [[#Dynamic_Boost|Dynamic Boost を設定]]する方法があります。}}&lt;br /&gt;
&lt;br /&gt;
スクリプトを root ユーザとして手動で実行して GPU に設定を適用させ、[[ストレステスト|設定のテスト]]を行ってください。&#039;&#039;&#039;テストして問題が無いこと (つまり、設定が安定している) を確認せずに、設定を永続化しないでください。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
良い設定値を見つけたら、起動毎に設定を適用させる必要があります。一つの方法は、systemd サービスです:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/nvidia-undervolt.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Undervolt the NVIDIA GPU&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/bin/python &#039;&#039;/usr/local/sbin/&#039;&#039;nvidia-undervolt.py&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
StandardError=journal&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=graphical.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に、システムの起動時に設定を適用するために、このサービスを[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
== カーネルモジュールパラメータ ==&lt;br /&gt;
&lt;br /&gt;
一部のオプションはカーネルモジュールパラメータから設定できます。パラメータの完全なリストは {{ic|modinfo nvidia}} を実行するか {{ic|nv-reg.h}} を見てください。[[Gentoo:NVidia/nvidia-drivers/ja#カーネルモジュールのパラメーター]] も見てください。&lt;br /&gt;
&lt;br /&gt;
例えば、以下を有効化すると PAT 機能 [https://docs.kernel.org/arch/x86/pat.html] が有効になります。PAT 機能はメモリの割り当て方に影響を及ぼします。PAT は Pentium III に初めて導入され [https://www.kernel.org/doc/ols/2008/ols2008v2-pages-135-144.pdf]、それよりも新しい CPU の殆どでサポートされています([[wikipedia:Page attribute table#Processors]] を参照)。あなたのシステムでこの機能がサポートされている場合、パフォーマンスが向上するはずです。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/nvidia.conf|2=&lt;br /&gt;
options nvidia NVreg_UsePageAttributeTable=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
一部のノートパソコンでは NVIDIA の設定を有効化するために以下のオプションを含めなければなりません。さもないと &amp;quot;Setting applications clocks is not supported&amp;quot; などと表示されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/nvidia.conf|2=&lt;br /&gt;
options nvidia NVreg_RegistryDwords=&amp;quot;OverrideMaxPerf=0x1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[カーネルモジュール#/etc/modprobe.d/ 内のファイルを使う]] にある通り、[[NVIDIA#DRM カーネルモード設定|early KMS]] を使用している場合は [[Initramfs を再生成する]]必要があります。}}&lt;br /&gt;
&lt;br /&gt;
== サスペンド後にビデオメモリを保持する ==&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、システムのサスペンドと復帰時に NVIDIA の Linux ドライバーは必須のビデオメモリの割り当てのみを保存し復元します。NVIDIA 曰く:&lt;br /&gt;
:結果として生じるビデオメモリの内容の消失は、ユーザスペースの NVIDIA ドライバや一部のアプリケーションによって部分的に補われます。しかし、電源管理サイクルの終了時にレンダリングの破損やアプリケーションのクラッシュなどの機能不全が発生する可能性があります。&lt;br /&gt;
&lt;br /&gt;
&amp;quot;まだ実験段階の&amp;quot; インターフェイスを使用すれば、(ディスクまたは RAM に十分な領域があれば) ビデオメモリ全てを保存できるようになります。&lt;br /&gt;
&lt;br /&gt;
ビデオメモリの内容を全て保存し復元するようにするには、{{ic|nvidia}} カーネルモジュールに対して {{ic|1=NVreg_UseKernelSuspendNotifiers=1}} [[カーネルモジュールパラメータ]]を設定する必要があります。NVIDIA はこのパラメータをデフォルトで設定していませんが、一方 Arch Linux では、サポートされているドライバにおいてこのパラメータがデフォルトで設定されており、ビデオメモリはデフォルトで保持されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|NVreg_UseKernelSuspendNotifiers}} が有効であるかを調べるには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # sort /proc/driver/nvidia/params&lt;br /&gt;
&lt;br /&gt;
{{ic|UseKernelSuspendNotifiers: 1}} という行と、{{ic|TemporaryFilePath: &amp;quot;/var/tmp&amp;quot;}} という行があるはずです (これらのパラメータについては以下で説明されています)。&lt;br /&gt;
&lt;br /&gt;
上流の要件通り、サポートされているドライバ上では、サービス {{ic|nvidia-suspend.service}}、{{ic|nvidia-hibernate.service}}、{{ic|nvidia-resume.service}} はデフォルトで無効化されています。バージョン 595 以降のオープンソースなカーネルモジュールでは、ビデオメモリの保持は、カーネルの suspend notifier によって処理されます。これにより、NVIDIA のサスペンド/ハイバネートサービスは必要ありません。&lt;br /&gt;
&lt;br /&gt;
詳細は [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/powermanagement.html NVIDIA のドキュメント]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* [[NVIDIA#DRM カーネルモード設定|Early KMS]] を使用する場合 (つまり、{{ic|nvidia}} モジュールのロードが initramfs の段階で起こる場合)、モジュールは {{ic|NVreg_TemporaryFilePath}} (前回のビデオメモリを保持しているパス) にアクセスできません。よって、ハイバネートを使用する場合は、early KMS を使用するべきではありません。&lt;br /&gt;
* [[カーネルモジュール#/etc/modprobe.d/ 内のファイルを使う]] にある通り、early KMS を使用している場合は [[initramfs を再生成する]]必要があります。&lt;br /&gt;
* 上流のデフォルトでは、ビデオメモリの内容は ([[tmpfs]] である) {{ic|/tmp}} に保存されます。NVIDIA は、最高のパフォーマンスを得るために[https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/powermanagement.html#PreserveAllVide719f0 他のファイルシステムを使うことを推奨]しています。また、{{ic|/tmp}} のサイズがメモリの容量に対して不十分である場合も、他のファイルシステムを使う必要があります。このような理由から、Arch Linux では、サポートされているドライバにおいて {{ic|1=nvidia.NVreg_TemporaryFilePath=/var/tmp}} パラメータがデフォルトで設定されています。&lt;br /&gt;
* ビデオメモリの内容を保存するファイルシステムは、無名一時ファイルをサポートし (例えば、ext4 や XFS)、かつビデオメモリの割り当てを保存するのに十分な容量がある必要があります (つまり、すべての NVIDIA GPU のメモリ容量合計の 1.05 倍以上)。コマンド {{ic|1=nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits}} を使えば、システム上のすべての GPU ビデオメモリの容量を一覧表示できます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Dynamic Boost ==&lt;br /&gt;
&lt;br /&gt;
主なシステム要件は、Ampere (及びそれより新しい) GPU が搭載されているラップトップであることです。&lt;br /&gt;
&lt;br /&gt;
Dynamic Boost は、システムのワークロードに応じて GPU 及び CPU の電力消費を管理する、システム全体で動作する電力制御ソフトウェアです。[https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/dynamicboost.html] 適宜、電力制限を上げることによって、特に GPU を使用するアプリケーションでパフォーマンスを向上させることができます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
詳細は [[CPU 周波数スケーリング#nvidia-powerd]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|電力制限を手動で設定できない人にとっては特に役立つでしょう。[[NVIDIA Optimus#消費電力 (TDP) が低いままになる]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
== ドライバーの持続 ==&lt;br /&gt;
&lt;br /&gt;
NVIDIA はブート時に任意で実行できるデーモンを用意しています。標準的な単一 GPU の X デスクトップ環境では持続デーモンは必要ではなく、むしろ問題を引き起こします [https://devtalk.nvidia.com/default/topic/1044421/linux/nvidia-persistenced-causing-60-second-reboot-delays]。詳細については NVIDIA ドキュメントの [https://docs.nvidia.com/deploy/driver-persistence/index.html#persistence-daemon Driver Persistence] 章をご覧ください。&lt;br /&gt;
&lt;br /&gt;
ブート時に持続デーモンを開始するには {{ic|nvidia-persistenced.service}} を[[有効化]]してください。手動での使用については[https://docs.nvidia.com/deploy/driver-persistence/index.html#usage 上流のドキュメント]をご覧ください。&lt;br /&gt;
&lt;br /&gt;
== YCbCr 4:2:0 サブサンプリングを強制する ==&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:HDMI#Refresh frequency limits for standard video|古い出力規格の制限]]に悩まされているが、YUV 4:2:0 を使用することで問題を緩和できるような場合は、NVIDIA ドライバに YUV420 を強制するためのドキュメント化されていない X11 オプションがあります:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;ForceYUV420&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
&lt;br /&gt;
これで、より高い解像度とリフレッシュレートを利用できますが、画質に悪影響を及ぼします。&lt;br /&gt;
&lt;br /&gt;
== GPU を使ってレンダリングするようにアプリケーションを設定する ==&lt;br /&gt;
&lt;br /&gt;
[[PRIME#GPU を使ってレンダリングするようにアプリケーションを設定する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NVIDIA/Tips and tricks|2026-03-29|870075}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Pacman&amp;diff=41398</id>
		<title>Pacman</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Pacman&amp;diff=41398"/>
		<updated>2026-03-15T06:35:47Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:Arch プロジェクト]]&lt;br /&gt;
[[Category:パッケージマネージャー]]&lt;br /&gt;
[[de:Pacman]]&lt;br /&gt;
[[en:Pacman]]&lt;br /&gt;
[[es:Pacman]]&lt;br /&gt;
[[fi:Pacman]]&lt;br /&gt;
[[fr:Pacman]]&lt;br /&gt;
[[it:Pacman]]&lt;br /&gt;
[[hu:Pacman]]&lt;br /&gt;
[[pt:Pacman]]&lt;br /&gt;
[[ru:Pacman]]&lt;br /&gt;
[[sv:Pacman]]&lt;br /&gt;
[[zh-hans:Pacman]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|/パッケージの署名}}&lt;br /&gt;
{{Related|/Pacnew と Pacsave}}&lt;br /&gt;
{{Related|/ローカルデータベースの復元}}&lt;br /&gt;
{{Related|/比較表}}&lt;br /&gt;
{{Related|/ヒントとテクニック}}&lt;br /&gt;
{{Related|Arch User Repository}}&lt;br /&gt;
{{Related|パッケージの作成}}&lt;br /&gt;
{{Related|パッケージのダウングレード}}&lt;br /&gt;
{{Related|namcap}}&lt;br /&gt;
{{Related|FAQ#パッケージ管理}}&lt;br /&gt;
{{Related|システムメンテナンス}}&lt;br /&gt;
{{Related|Package Proxy Cache}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://pacman.archlinux.page/ pacman] [[Wikipedia:ja:パッケージ管理システム|パッケージマネージャ]]は [[Arch Linux]] の主要な機能のひとつです。pacman はシンプルなバイナリのパッケージ形式と簡単に利用できる [[Arch build system]] から成っています。pacman のゴールはパッケージ管理を楽にすることであり、[[公式リポジトリ]]にあるパッケージや、ユーザー自身が作成したパッケージを容易に管理することができます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; はマスターサーバーと同期してシステムを最新に保ちます。このサーバー・クライアントモデルによって、シンプルなコマンドだけで必要な依存性を解決してパッケージのダウンロード・インストールをすることができます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; は [[C]] 言語で書かれており、パッケージングに {{man|1|bsdtar}} [[Wikipedia:ja:tar|tar]] フォーマットを使用します。&lt;br /&gt;
&lt;br /&gt;
{{Tip|1={{Pkg|pacman}} パッケージには [[makepkg]] や {{man|8|vercmp}} などのツールが含まれています。[[#Pactree|pactree]] や [[checkupdates]] など、他の有用なツールは {{Pkg|pacman-contrib}} パッケージに含まれています ([https://gitlab.archlinux.org/pacman/pacman/commit/0c99eabd50752310f42ec808c8734a338122ec86 以前]は &#039;&#039;pacman&#039;&#039; パッケージに含まれていました)。ツールの一覧を見るには {{ic|pacman -Ql pacman pacman-contrib {{!}} grep -E &#039;bin/.+&#039;}} を実行してください。}}&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
&lt;br /&gt;
pacman で何ができるかをちゃんと学びたい場合、{{man|8|pacman}} を参照してください。以下にあるのは pacman でできることのほんの一例です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|他の Linux ディストリビューションを使ったことがある場合、[[Pacman/比較表]]の記事が役に立つでしょう。}}&lt;br /&gt;
&lt;br /&gt;
=== パッケージのインストール ===&lt;br /&gt;
&lt;br /&gt;
パッケージとは、以下を含むアーカイブです:&lt;br /&gt;
&lt;br /&gt;
* アプリケーションの (コンパイルされた) 全ファイル&lt;br /&gt;
* アプリケーションのメタデータ (アプリケーション名、バージョン、依存関係など)&lt;br /&gt;
* &#039;&#039;pacman&#039;&#039; によって使用されるインストールファイル及びディレクティブ&lt;br /&gt;
&lt;br /&gt;
Arch のパッケージマネージャである &#039;&#039;pacman&#039;&#039; は、このようなパッケージをインストール、アップデート、そして削除することができます。プログラムを自分でコンパイルしてインストールする代わりにパッケージを使用することには、様々な利点があります:&lt;br /&gt;
&lt;br /&gt;
* 簡単なアップデート: &#039;&#039;pacman&#039;&#039; は、アップデートが利用可能になるとすぐに既存のパッケージを更新します。&lt;br /&gt;
* 依存関係のチェック: &#039;&#039;pacman&#039;&#039; は依存関係を処理してくれます。あなたがすべきことは、インストールしたいプログラムを指定することだけです。&#039;&#039;pacman&#039;&#039; はそのプログラムと一緒に他の必要なプログラムもインストールします。&lt;br /&gt;
* 綺麗にアンインストール: &#039;&#039;pacman&#039;&#039; は、パッケージに含まれる全ファイルのリストを保持します。これにより、パッケージを削除する際に意図せずファイルが残留することはありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* パッケージには、[[PKGBUILD#optdepends|任意の依存パッケージ]]が設定されていることがあります。必ずインストールする必要はありませんが、インストールすることで機能が追加されます。&#039;&#039;pacman&#039;&#039; は、パッケージのインストール時に任意の依存パッケージのリストを表示しますが、そのリストは {{ic|pacman.log}} に残りません。[[#パッケージ・データベースに問い合わせる]] コマンドを使うことで、パッケージの任意の依存パッケージを見ることができます。&lt;br /&gt;
* 他のパッケージの (任意の) 依存パッケージとしてパッケージをインストールする場合 (つまり、そのパッケージ自体は必要としていない場合)、{{ic|--asdeps}} オプションを使用することを推奨します。詳しくは [[#インストール理由]] セクションを参照。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=Arch でパッケージのインストールをする際に、[[#パッケージのアップグレード|システムのアップグレード]]をせずにパッケージリストを更新することは避けてください (例えば、公式リポジトリで[[#インストール時にパッケージを取得できない|パッケージが見つからなくなった]]時など)。実際の場面でいうと、{{ic|pacman -Sy&#039;&#039;&#039;u&#039;&#039;&#039; &#039;&#039;パッケージ名&#039;&#039;}} の代わりに {{ic|pacman -Sy &#039;&#039;パッケージ名&#039;&#039;}} を実行しては&#039;&#039;&#039;いけない&#039;&#039;&#039;ということです。後者を実行すると依存関係に問題が発生する可能性があります。[[システムメンテナンス#部分的なアップグレードはサポートされていません]] や [https://bbs.archlinux.org/viewtopic.php?id=89328 BBS#89328] を参照。}}&lt;br /&gt;
&lt;br /&gt;
==== 特定のパッケージのインストール ====&lt;br /&gt;
&lt;br /&gt;
ひとつ、あるいは複数のパッケージを、依存パッケージも含めてインストールするには、以下のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S &#039;&#039;パッケージ名1&#039;&#039; &#039;&#039;パッケージ名2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
{{Tip|このコマンドは、パッケージを再インストールする際にも使えます。}}&lt;br /&gt;
&lt;br /&gt;
正規表現を使ってパッケージをインストールするには ([https://bbs.archlinux.org/viewtopic.php?id=7179 このフォーラムスレッド] を参照):&lt;br /&gt;
&lt;br /&gt;
 # pacman -S $(pacman -Ssq &#039;&#039;パッケージのパターン&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
別々のリポジトリ (例: &#039;&#039;extra&#039;&#039; と &#039;&#039;extra-testing&#039;&#039;) 内に同一のパッケージの複数のバージョンが存在していることがあります。この場合、パッケージ名の前にリポジトリ名を明示する必要があります。例えば &#039;&#039;extra&#039;&#039; リポジトリ内のバージョンをインストールするには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S extra/&#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
名前に類似パターンが存在するパッケージをインストールしたい場合、波括弧を使ってパッケージ名を展開することができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S plasma-{desktop,mediacenter,nm}&lt;br /&gt;
&lt;br /&gt;
必要に応じて更に複雑なパターンを指定することもできます:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S plasma-{workspace{,-wallpapers},pa}&lt;br /&gt;
&lt;br /&gt;
===== 仮想パッケージ =====&lt;br /&gt;
&lt;br /&gt;
仮想パッケージとは、それ自体は存在していないが、1つ以上のパッケージによって [[PKGBUILD#provides|provides (提供)]] 指定されている特殊なパッケージです。仮想パッケージが存在していることにより、あるパッケージの依存関係として複数の候補が存在している場合に、パッケージは特定のパッケージを依存関係として指定する必要がなくなります。仮想パッケージはその名前を使ってインストールすることはできません。仮想パッケージを &#039;&#039;provide (提供)&#039;&#039; するパッケージをインストールすると、その仮想パッケージがシステムにインストールされたことになります。例としては [[D-Bus#実装|dbus-units]] パッケージがあります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|複数の候補が存在する場合、候補のリストは、{{ic|pacman.conf}} 内に現れる[[リポジトリ]]の順番でソートされ、そして同一のリポジトリ内にも複数の候補が存在する場合はさらにアルファベット順にソートされます。}}&lt;br /&gt;
&lt;br /&gt;
==== パッケージグループのインストール ====&lt;br /&gt;
&lt;br /&gt;
[[パッケージグループ]]に属しているパッケージをすべて同時にインストールすることができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S gnome&lt;br /&gt;
&lt;br /&gt;
を実行すると {{Grp|gnome}} グループからインストールしたいパッケージを選択するように表示されます。&lt;br /&gt;
&lt;br /&gt;
パッケージグループには大量のパッケージが含まれており、しばしばインストールしたいパッケージはそのうちの少しだけということがあるかもしれません。インストールするパッケージの番号を全て入力するという方法でもよいですが、以下のような構文を使うことで簡単にパッケージを選択することが可能です:&lt;br /&gt;
&lt;br /&gt;
 Enter a selection (default=all): 1-10 15&lt;br /&gt;
&lt;br /&gt;
以上で1番から10番までと15番のパッケージがインストールされます。&lt;br /&gt;
&lt;br /&gt;
 Enter a selection (default=all): ^5-8 ^2&lt;br /&gt;
&lt;br /&gt;
以上で5番から8番までと2番のパッケージ以外の全てのパッケージをインストールします。&lt;br /&gt;
&lt;br /&gt;
どのパッケージが gnome グループに属しているか見るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Sg gnome&lt;br /&gt;
&lt;br /&gt;
どのようなパッケージグループがあるかは https://www.archlinux.jp/groups/ を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|グループの中にインストール済みのパッケージがある場合でも、グループにあわせて再インストールされます。{{ic|--needed}} オプションを使うことで無視できます。}}&lt;br /&gt;
&lt;br /&gt;
=== パッケージの削除 ===&lt;br /&gt;
&lt;br /&gt;
依存パッケージをすべて残したままパッケージを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -R &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
削除したいパッケージと、そのパッケージだけが必要としている依存パッケージを一緒に削除するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rs &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|グループ (例えば &#039;&#039;gnome&#039;&#039;) を削除する場合、このコマンドはそのグループ内のパッケージのインストール理由を無視します。グループを指定した場合、そのグループ内のパッケージを分けて指定したかのように振る舞うからです。依存関係のインストール理由は依然として考慮されます。}}&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは、必要とされているパッケージを含んでいるグループを削除する際に、実行を拒否する場合があります。そのような場合は、以下を試してください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rsu &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
削除したいパッケージと、そのパッケージの依存パッケージ、さらに削除したいパッケージに依存しているパッケージを削除するには:&lt;br /&gt;
&lt;br /&gt;
{{Warning|この操作は再帰的です。潜在的に必要とされているパッケージも削除してしまう可能性があるので、注意して使用しなければなりません。}}&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rsc &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
他のパッケージによって必要とされているパッケージを、必要としているパッケージを削除せずに削除するには:&lt;br /&gt;
&lt;br /&gt;
{{Warning|以下の操作はシステムを破壊する可能性があり、使用は避けるべきです。[[システムメンテナンス#特定の pacman コマンドを避けてください]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rdd &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; は、特定のアプリケーションを削除する際に、重要な設定ファイルを削除せずに &#039;&#039;.pacsave&#039;&#039; 拡張子を付けてバックアップします。これらのバックアップファイルの作成を行わないようにするには、{{ic|-n}} オプションを付けてください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rn &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;pacman&#039;&#039; は、アプリケーション自身が作成した設定ファイルを削除しません (例えば、ホームディレクトリ内の &amp;quot;ドットファイル&amp;quot;)。}}&lt;br /&gt;
&lt;br /&gt;
=== パッケージのアップグレード ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* Arch ユーザーは、[[システムメンテナンス#システムのアップグレード]] セクションのガイダンスに従ってシステムを定期的にアップグレードすることが期待されます。以下のコマンドを闇雲に実行するべきではありません。&lt;br /&gt;
* Arch Linux は完全なシステムアップグレードのみをサポートしています。詳細は [[システムメンテナンス#部分的なアップグレードはサポートされていません]] と [[#パッケージのインストール]] を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; はコマンド一つでシステム上の全パッケージをアップデートできます。この処理に掛かる時間は、システムがどれだけ新しいかによります。以下のコマンドは、リポジトリデータベースを同期し、&#039;&#039;かつ&#039;&#039;、システム内のパッケージをアップデートします (ただし、リポジトリに無い&amp;quot;ローカル&amp;quot;のパッケージを除く):&lt;br /&gt;
&lt;br /&gt;
 # pacman -Syu&lt;br /&gt;
&lt;br /&gt;
=== パッケージ・データベースに問い合わせる ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; からローカルデータベースに問い合わせるときは {{ic|-Q}} フラグを、同期データベースに問い合わせるときは {{ic|-S}} フラグを、ファイルデータベースに問い合わせるときは {{ic|-F}} フラグを使います。それぞれのフラグのサブオプションについては {{ic|pacman -Q --help}}、{{ic|pacman -S --help}}、{{ic|pacman -F --help}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|最新の結果を得るには、問い合わせる前にファイルデータベースを同期してください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Fy&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|pacman-filesdb-refresh.timer}} ({{Pkg|pacman-contrib}} パッケージに含まれています) を[[有効化/起動]]することで、&#039;&#039;pacman&#039;&#039; のファイルデータベースを週ごとに更新できます。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; はデータベースからパッケージを検索することができます。パッケージ名と説明の両方を検索するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Ss &#039;&#039;検索ワード1&#039;&#039; &#039;&#039;検索ワード2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
場合によっては、{{Ic|-s}} の組み込みの ERE (拡張正規表現) によって、余計な検索結果が大量に出てきてしまうことがあるでしょう。そのようなときは検索対象をパッケージ名だけに絞ってみてください:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Ss &#039;^vim-&#039;&lt;br /&gt;
&lt;br /&gt;
既にインストール済みのパッケージから検索するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qs &#039;&#039;検索ワード1&#039;&#039; &#039;&#039;検索ワード2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
リモートパッケージからパッケージファイルの名前で検索するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -F &#039;&#039;検索ワード1&#039;&#039; &#039;&#039;検索ワード2&#039;&#039; ...&lt;br /&gt;
&lt;br /&gt;
パッケージ名を指定して詳細な情報を得るには (例: そのパッケージの依存関係など):&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Si &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ローカルにインストールされているパッケージの詳細な情報を得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qi &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|-i}} フラグを2つ付けることで、バックファイルのリストとバックアップファイルの変更状態も同時に表示できます:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qii &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるパッケージによってインストールされたファイルの一覧を得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Ql &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
リモートパッケージによってインストールされるファイルのリストを得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Fl &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるパッケージによってインストールされたファイルが存在しているか確認するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qk &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|k}} フラグを2つ付けると、より徹底したチェックが行われます。&lt;br /&gt;
&lt;br /&gt;
データベースを検索して、あるファイルがどのパッケージに属しているかを調べるには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qo &#039;&#039;/パス/ファイル名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるファイルがどのリモートパッケージに属しているかデータベースに問い合わせるには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -F &#039;&#039;/パス/ファイル名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
他のパッケージに必要とされていないパッケージ (孤児) の一覧を得るには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qdt&lt;br /&gt;
&lt;br /&gt;
明示的にインストールしたパッケージで、依存関係として必要とされていないパッケージを全て表示するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qet&lt;br /&gt;
&lt;br /&gt;
その他の例については [[pacman/ヒントとテクニック]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
高度な使い方をしたい場合、[[pkgfile]] をインストールしてください。これは、すべてのファイルとそれらと関連するパッケージを記録している個別のデータベースを使用します。&lt;br /&gt;
&lt;br /&gt;
==== Pactree ====&lt;br /&gt;
&lt;br /&gt;
{{Note|{{man|8|pactree}} は {{Pkg|pacman}} パッケージの一部ではなくなりました。代わりに、{{Pkg|pacman-contrib}} でインストールできます。}}&lt;br /&gt;
&lt;br /&gt;
あるパッケージの依存関係ツリー (dependency tree、つまり、そのパッケージ&#039;&#039;&#039;が&#039;&#039;&#039;必要としているパッケージの木) を表示するには:&lt;br /&gt;
&lt;br /&gt;
 $ pactree &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるパッケージの被依存ツリー (dependant tree、つまり、そのパッケージ&#039;&#039;&#039;を&#039;&#039;&#039;必要としているパッケージの木) を表示するには、逆フラグ {{ic|-r}} を &#039;&#039;pactree&#039;&#039; に渡てください。&lt;br /&gt;
&lt;br /&gt;
==== データベースの構造 ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; データベースは通常、{{ic|/var/lib/pacman/sync}} にあります。{{ic|/etc/pacman.conf}} で指定された各リポジトリに対して、対応するデータベースファイルがこのディレクトリ内に存在します。データベースファイルは、パッケージごとに 1 つのディレクトリを含む gzip 圧縮された tar アーカイブです。たとえば、{{Pkg|which}} パッケージの場合は次のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ tree which-2.21-5|&lt;br /&gt;
which-2.21-5&lt;br /&gt;
{{!}}-- desc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|desc}} ファイルには、パッケージの説明、依存関係、ファイルサイズ、MD5 ハッシュなどのメタデータが含まれています。&lt;br /&gt;
&lt;br /&gt;
=== パッケージキャッシュの削除 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; は、ダウンロードしたファイルを {{ic|/var/cache/pacman/pkg/}} に保存しますが、これらは古くなってもアンインストールされても自動的に削除されません。これにはいくつかの利点があります:&lt;br /&gt;
&lt;br /&gt;
# パッケージを[[ダウングレード]]する際に、他の方法 ([[Arch Linux Archive]] など) によって以前のバージョンを入手する必要がない。&lt;br /&gt;
# アンインストールされたパッケージをキャッシュディレクトリから簡単に直接再インストールでき、リポジトリから新しくダウンロードする必要がない。&lt;br /&gt;
&lt;br /&gt;
しかし、ディレクトリのサイズが大きくなりすぎないようにするために、定期的にキャッシュを手動でクリーンアップする必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pacman-contrib}} パッケージで提供されている {{man|8|paccache}} スクリプトは、インストール済みパッケージとアンインストール済みパッケージのキャッシュ済みバージョンを、最も新しい3つを残して全て削除します (オプションを何も指定しなかった場合):&lt;br /&gt;
&lt;br /&gt;
 # paccache -r&lt;br /&gt;
&lt;br /&gt;
{{ic|paccache.timer}} を[[有効化]]し[[起動]]すれば、週に1度、未使用のパッケージキャッシュを削除してくれます。{{ic|/etc/conf.d/pacman-contrib}} でこのサービスへの引数を設定することもできます。例えば、以下の2つの例で言えば、{{ic|1=PACCACHE_ARGS=&#039;-k1&#039;}} や {{ic|1=PACCACHE_ARGS=&#039;-uk0&#039;}} となります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=&#039;&#039;pacman&#039;&#039; のトランザクションの度にこの操作を自動で実行する[[#フック|フック]]を作成することもできます。フックを導入する {{AUR|paccache-hook}} を[[インストール]]することもできます。[https://bbs.archlinux.org/viewtopic.php?pid=1694743#p1694743 フックの例]もあります。}}&lt;br /&gt;
&lt;br /&gt;
何個の新しいバージョンのキャッシュを保持するかを指定することも可能です。最も新しいバージョン1つだけを保持するには:&lt;br /&gt;
&lt;br /&gt;
 # paccache -rk1&lt;br /&gt;
&lt;br /&gt;
{{ic|-u}}/{{ic|--uninstalled}} スイッチを加えれば、アンインストールされたパッケージに対象を絞ることもできます。例えば、アンインストールされたパッケージのキャッシュを全て削除するには:&lt;br /&gt;
&lt;br /&gt;
 # paccache -ruk0&lt;br /&gt;
&lt;br /&gt;
その他のオプションは {{ic|paccache -h}} を見てください。&lt;br /&gt;
&lt;br /&gt;
また、&#039;&#039;pacman&#039;&#039; にも、パッケージキャッシュと、{{ic|/etc/pacman.conf}} 設定ファイルにもはや存在しないリポジトリの残留データベースファイルをクリーンアップする組み込みコマンドが存在します。しかし、&#039;&#039;pacman&#039;&#039; では、パッケージキャッシュのバージョンをいくつ残すか指定することができないため、&#039;&#039;paccache&#039;&#039; のデフォルトオプションよりも強引です。&lt;br /&gt;
&lt;br /&gt;
現在インストールされていないパッケージのキャッシュと、未使用の同期データベースをを全て削除するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Sc&lt;br /&gt;
&lt;br /&gt;
全てのキャッシュファイルを削除するには、{{ic|c}} スイッチを2度使用してください。これは最も強引なアプローチであり、キャッシュディレクトリには何も残りません:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Scc&lt;br /&gt;
&lt;br /&gt;
{{Warning|ディスクの空き容量がどうしても必要でない限り、インストール済みパッケージとアンインストール済みパッケージのキャッシュを全て削除することは避けるべきです。さもないと、パッケージをダウングレードしたり再インストールしたりするためにファイルを再ダウンロードしなければならなくなってしまいます。}}&lt;br /&gt;
&lt;br /&gt;
さらに、キャッシュをクリーンアップするツールとして {{AUR|pkgcacheclean}} と {{AUR|pacleaner}} もあります。&lt;br /&gt;
&lt;br /&gt;
=== その他のコマンド ===&lt;br /&gt;
&lt;br /&gt;
パッケージをダウンロードするが、インストールはしない:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Sw &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
リモートリポジトリ以外の&#039;ローカル&#039;のパッケージをインストールする (例えば、[[AUR]] のパッケージ):&lt;br /&gt;
&lt;br /&gt;
 # pacman -U &#039;&#039;/path/to/package/package_name-version.pkg.tar.zst&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ローカルパッケージのコピーを &#039;&#039;pacman&#039;&#039; のキャッシュに保持するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -U file:///&#039;&#039;path/to/package/package_name-version.pkg.tar.zst&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;pacman&#039;&#039; の設定ファイルに記述されているリポジトリ以外の) &#039;リモート&#039;パッケージをインストールする:&lt;br /&gt;
&lt;br /&gt;
 # pacman -U &#039;&#039;&amp;lt;nowiki&amp;gt;http://www.example.com/repo/example.pkg.tar.zst&amp;lt;/nowiki&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== ドライラン ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; は&#039;&#039;&#039;常に&#039;&#039;&#039;、インストールされるパッケージと削除されるパッケージを一覧表示して、操作を行う前にユーザに許可を求めます。&lt;br /&gt;
&lt;br /&gt;
{{ic|--print}} (短いバージョンは {{ic|-p}}) を使用することで、{{ic|-S}}、{{ic|-U}}、{{ic|-R}} のアクションを行わずに、パッケージの一覧を処理可能な形式で表示できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|--print-format}} を追加すれば、このリストを様々な形にフォーマットできます。例えば、{{ic|--print-format %n}} は、パッケージのバージョン無しでパッケージの一覧を表示します。&lt;br /&gt;
&lt;br /&gt;
=== インストール理由 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; データベースでは、インストールしたパッケージはインストール理由によって2つのグループに分別されます:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;明示的にインストール&#039;&#039;&#039;: &#039;&#039;pacman&#039;&#039; の {{ic|-S}} や {{ic|-U}} コマンドによって文字通り指定されたパッケージ。&lt;br /&gt;
*&#039;&#039;&#039;依存パッケージ&#039;&#039;&#039;: &#039;&#039;pacman&#039;&#039; のインストールコマンドにパッケージの名前は指定されず、明示的にインストールした他のパッケージから[[PKGBUILD#依存関係|必要]]とされたためにインストールされたパッケージ。&lt;br /&gt;
&lt;br /&gt;
パッケージのインストール時、以下のようにすることでインストール理由を&#039;&#039;依存パッケージ&#039;&#039;に強制的に変えることができます:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S --asdeps &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
明示的にインストールしたパッケージが、必須でない機能のための[[optdepends|任意の依存パッケージ]]を提供している場合があります。大抵、このコマンドはそのようなパッケージをインストールするために使用されます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|任意の依存パッケージを {{ic|--asdeps}} でインストールすると、[[pacman/ヒントとテクニック#使用していないパッケージ (孤立したパッケージ) の削除|孤立したパッケージを削除]]するときに &#039;&#039;pacman&#039;&#039; によって任意の依存パッケージも削除されるようになります。}}&lt;br /&gt;
&lt;br /&gt;
パッケージの&#039;&#039;&#039;再&#039;&#039;&#039;インストールを行っても、デフォルトではインストール理由は変更されません。&lt;br /&gt;
&lt;br /&gt;
明示的にインストールしたパッケージのリストは {{ic|pacman -Qe}} で表示でき、依存パッケージのリストは {{ic|pacman -Qd}} で表示できます。&lt;br /&gt;
&lt;br /&gt;
既にインストールしたパッケージのインストール理由を変更したい場合、以下のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -D --asdeps &#039;&#039;パッケージ名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Use {{ic|--asexplicit}} to do the opposite operation.&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|pacman -Syu &#039;&#039;パッケージ名&#039;&#039; --asdeps}} のように、アップグレードをするときに {{ic|--asdeps}} や {{ic|--asexplicit}} オプションを使用するのは推奨されません。インストールされるパッケージだけでなく、アップグレードされるパッケージのインストール理由まで変更されてしまうためです。}}&lt;br /&gt;
&lt;br /&gt;
=== パッケージのインストール/アップグレード/アンインストール時に起こること ===&lt;br /&gt;
&lt;br /&gt;
成功時のトランザクションは、5つのステップと、トランザクション前と後のフックで構成されます:&lt;br /&gt;
&lt;br /&gt;
# データベースがロックされていない場合、トランザクションを初期化する。&lt;br /&gt;
# トランザクション中に追加/削除すべきパッケージを選択する。&lt;br /&gt;
# 同期データベース、パッケージ、及びパッケージ間の依存関係のサニティチェックを行い、コマンドラインフラグに基づいてトランザクションの準備をする。&lt;br /&gt;
# トランザクションを実行する:&lt;br /&gt;
## 必要に応じてパッケージをダウンロードする ({{ic|_alpm_sync_load}})。&lt;br /&gt;
## &#039;&#039;pacman&#039;&#039; の既存の {{ic|PreTransaction}} フックが適用される場合、それらのフックを実行する。&lt;br /&gt;
## 最終的に置き換えられるパッケージ、衝突するパッケージ、明示的に削除するように指定されたパッケージを削除する。&lt;br /&gt;
## 追加するべきパッケージが存在する場合、各パッケージに対して以下を実行する:&lt;br /&gt;
### パッケージにインストールスクリプトが存在する場合、そのスクリプトの {{ic|pre_install}} 関数を実行する (アップグレードする場合は {{ic|pre_upgrade}} が、削除される場合は {{ic|pre_remove}} が代わりに実行されます)。&lt;br /&gt;
### 以前のバージョンのパッケージのファイルを全て削除する (パッケージをアップグレードまたは削除する場合)。ただし、パッケージによって設定ファイルであると指定されたファイルに関しては、削除しない ([[pacman/Pacnew と Pacsave]] を参照)。&lt;br /&gt;
### パッケージを解凍し、含まれているファイルをファイルシステムに保存する (パッケージをインストールまたはアップグレードする場合)。新しいパッケージのファイルが、ファイルシステム上の手動で変更された設定ファイル (前のステップを参照) を上書きしてしまう場合、パッケージ側のファイルに別の名前 (&#039;&#039;.pacnew&#039;&#039;) を付けて保存する。&lt;br /&gt;
### パッケージにインストールスクリプトが存在する場合、{{ic|post_install}} 関数を実行する (アップグレードする場合は {{ic|post_upgrade}} が、削除される場合は {{ic|post_remove}} が代わりに実行されます)。&lt;br /&gt;
## トランザクションの終わりの時点で存在している {{ic|PostTransaction}} フックが適用される場合、それらのフックを実行する。&lt;br /&gt;
# トランザクション及びトランザクションリソース (つまり、データベースロック) を解放する。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; の設定は {{ic|/etc/pacman.conf}} に記述します。ここで、pacman がどのように動作するかを設定することができます。この設定ファイルに関するより詳しい情報は {{man|5|pacman.conf}} にあります。&lt;br /&gt;
&lt;br /&gt;
=== 全般設定 ===&lt;br /&gt;
&lt;br /&gt;
全般的な設定は {{ic|[options]}} セクションにあります。ここで設定できる項目については {{man|5|pacman.conf}} を読むか、デフォルトの {{ic|pacman.conf}} ファイルを見てください。&lt;br /&gt;
&lt;br /&gt;
==== アップデートする前にバージョンを比較 ====&lt;br /&gt;
&lt;br /&gt;
利用可能なパッケージの新旧のバージョンを確認したい場合、{{ic|/etc/pacman.conf}} の &amp;quot;VerbosePkgLists&amp;quot; という行をアンコメントしてください。{{ic|pacman -Syu}} の出力が以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 パッケージ (6)          古いバージョン  新しいバージョン  最終的な変化 ダウンロード容量&lt;br /&gt;
 &lt;br /&gt;
 extra/libmariadbclient  10.1.9-4        10.1.10-1             0.03 MiB         4.35 MiB&lt;br /&gt;
 extra/libpng            1.6.19-1        1.6.20-1              0.00 MiB         0.23 MiB&lt;br /&gt;
 extra/mariadb           10.1.9-4        10.1.10-1             0.26 MiB        13.80 MiB&lt;br /&gt;
&lt;br /&gt;
==== 並列ダウンロード ====&lt;br /&gt;
&lt;br /&gt;
並列 (すなわち同時) にダウンロードするパッケージの数は、{{ic|/etc/pacman.conf}} の {{ic|[options]}} セクション内の {{ic|ParallelDownloads}} オプションで設定できます。{{Pkg|pacman}} パッケージに同梱されている {{ic|/etc/pacman.conf}} では、このオプションはすでに {{ic|5}} に設定されています。このオプションが設定されていない場合、パッケージは1つずつダウンロードされます。&lt;br /&gt;
&lt;br /&gt;
==== アップグレードさせないパッケージを設定 ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|[[部分的なアップグレード]]はサポートされていないので、パッケージのアップグレードをスキップする際は気をつけてください。。}}&lt;br /&gt;
&lt;br /&gt;
システムを[[#パッケージのアップグレード|アップグレード]]する際に特定のパッケージをアップグレードしないようにするには、{{ic|[options]}} セクションに以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 IgnorePkg=linux&lt;br /&gt;
&lt;br /&gt;
複数のパッケージを指定する場合は、スペースで区切るか、{{ic|IgnorePkg}} 行を追加してください。また、[[Wikipedia:ja:グロブ|グロブ]]パターンも使用できます。一度に限ってパッケージをアップグレードしないようにするには、コマンドラインで {{ic|--ignore}} オプションを使用してください (複数のパッケージを指定する場合は、コンマで区切ってください)。&lt;br /&gt;
&lt;br /&gt;
{{ic|pacman -S}} を使えば、依然として対象のパッケージをアップグレードすることが可能です。この場合、&#039;&#039;pacman&#039;&#039; はパッケージが {{ic|IgnorePkg}} 文に含まれていることを知らせてくれます。&lt;br /&gt;
&lt;br /&gt;
==== アップグレードさせないパッケージグループを設定 ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|[[部分的なアップグレード]]はサポートされていないので、パッケージグループのアップグレードをスキップする際は気をつけてください。。}}&lt;br /&gt;
&lt;br /&gt;
パッケージの場合と同様に、アップグレードさせないパッケージグループを指定することもできます:&lt;br /&gt;
&lt;br /&gt;
 IgnoreGroup=gnome&lt;br /&gt;
&lt;br /&gt;
==== アップグレードさせないファイルを設定 ====&lt;br /&gt;
&lt;br /&gt;
{{Ic|NoUpgrade}} ディレクティブで指定されたファイルは、パッケージのインストール/アップグレードの際に変更を加えられなくなり、代わりに新しいファイルは &#039;&#039;.pacnew&#039;&#039; 拡張子が付けられてインストールされます。&lt;br /&gt;
&lt;br /&gt;
 NoUpgrade=&#039;&#039;path/to/file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
以下のようにして複数のファイルを指定することができます:&lt;br /&gt;
&lt;br /&gt;
 NoUpgrade=&#039;&#039;path/to/file1 path/to/file2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|パスはパッケージアーカイブ内のファイルを示します。なので、一番最初にスラッシュを置かないでください。}}&lt;br /&gt;
&lt;br /&gt;
==== インストールさせないファイルを設定 ====&lt;br /&gt;
&lt;br /&gt;
特定のディレクトリまたはファイルをインストールさせないようにするには、{{Ic|NoExtract}} リストにそのディレクトリを加えてください。例えば、bash の補完スクリプトをインストールしないようにするには:&lt;br /&gt;
&lt;br /&gt;
 NoExtract=usr/share/bash-completion/completions/*&lt;br /&gt;
&lt;br /&gt;
後ろのルールは前のルールを上書きします。また、{{ic|!}} を前に付けることでルールを無効化できます。&lt;br /&gt;
&lt;br /&gt;
==== 複数の設定ファイルを使用 ====&lt;br /&gt;
&lt;br /&gt;
設定ファイルが複数あって (メインの設定と [[testing]] リポジトリを有効にした設定がある場合など)、設定ファイルのオプションを共有したい場合、設定ファイルで {{ic|Include}} オプションを宣言することができます。例:&lt;br /&gt;
&lt;br /&gt;
 Include = &#039;&#039;/path/to/common/settings&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;/path/to/common/settings&#039;&#039;}} は共有したいオプションが存在するファイルに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
==== フック ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; は {{ic|/usr/share/libalpm/hooks/}} ディレクトリ内に存在するフックをトランザクションの前後に実行することができます。その他のフックディレクトリを指定したい場合は、{{ic|pacman.conf}} 内で {{ic|HookDir}} オプションを使ってください (デフォルトは {{ic|/etc/pacman.d/hooks}} です)。フックファイルの名前には必ず &#039;&#039;.hook&#039;&#039; を後ろに付ける必要があります。&#039;&#039;pacman&#039;&#039; フックはインタラクティブではありません。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; フックは様々なことに使われています。例えば、{{ic|systemd-sysusers}} と {{ic|systemd-tmpfiles}} を組み合わせてパッケージのインストール時に自動的にシステムユーザーを作成します。例として {{AUR|tomcat8}} パッケージでは {{ic|tomcat8}} という名前のシステムユーザーが必要だと指定されており、特定のディレクトリの所有者がこのユーザーになるように設定されています。&#039;&#039;pacman&#039;&#039; フックの {{ic|systemd-sysusers.hook}} と {{ic|systemd-tmpfiles.hook}} は、{{AUR|tomcat8}} にユーザが指定されているファイルと一時ファイルが存在していることを認識し、{{ic|systemd-sysusers}} と {{ic|systemd-tmpfiles}} を実行します。&lt;br /&gt;
&lt;br /&gt;
alpm のフックに関する詳細は {{man|5|alpm-hooks}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== リポジトリとミラー ===&lt;br /&gt;
&lt;br /&gt;
特殊な [[#全般設定|[options]]] セクションを除いて、{{ic|pacman.conf}} 内の他の {{ic|[セクション]}} には、使用するパッケージリポジトリを定義します。&#039;&#039;リポジトリ&#039;&#039;とはパッケージの&#039;&#039;論理的な&#039;&#039;集合であり、それらのパッケージは1つ以上のサーバに&#039;&#039;物理的に&#039;&#039;保存されています。このような理由から、各サーバはリポジトリの&#039;&#039;ミラー&#039;&#039;と呼ばれます。&lt;br /&gt;
&lt;br /&gt;
リポジトリは[[公式リポジトリ|公式]]と[[非公式ユーザーリポジトリ|非公式]]に分けられています。設定ファイル内でのリポジトリの順番は重要です。2つのリポジトリに同じ名前のパッケージが存在する場合、それらのバージョン番号に関わらず、設定ファイル内で最初に来るリポジトリが、その後に来るリポジトリよりも優先されます。リポジトリを使用するには、そのリポジトリを追加した後に、まずシステム全体を[[#パッケージのアップグレード|アップグレード]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
各リポジトリセクションではミラーのリストを定義します: ミラーのリストを直接記述することもできますし、{{ic|Include}} ディレクティブを使って外部の専用のファイルを使うこともできます。例えば、公式リポジトリのミラーは {{ic|/etc/pacman.d/mirrorlist}} からインクルードされます。ミラーの設定については記事 [[ミラー]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== パッケージのキャッシュディレクトリ ====&lt;br /&gt;
&lt;br /&gt;
Pacman は、ダウンロードしたパッケージファイルをキャッシュに保存します。キャッシュは、{{ic|pacman.conf}} の [[#全般設定|[options]]] セクション内の {{ic|CacheDir}} で示されるディレクトリ内です (設定されていない場合、{{ic|/var/cache/pacman/pkg/}} がデフォルトで使用されます)。&lt;br /&gt;
&lt;br /&gt;
キャッシュディレクトリは、(たとえ、インストールされているパッケージの最新のバージョンのみを保持しているとしても) 時間とともに肥大化する場合があります。&lt;br /&gt;
&lt;br /&gt;
キャッシュディレクトリを他のより好都合な場所に移動したい場合は、以下のどれかを行ってください:&lt;br /&gt;
&lt;br /&gt;
* {{ic|pacman.conf}} 内の {{ic|CacheDir}} オプションで新しいディレクトリを設定する。末尾のスラッシュを残しておくことを忘れないでください。&#039;&#039;&#039;これが推奨される方法です&#039;&#039;&#039;。&lt;br /&gt;
* {{ic|/var/cache/pacman/pkg/}} に専用のパーティションや [[Btrfs#サブボリューム|Btrfs サブボリューム]]をマウントする。&lt;br /&gt;
* 選択したディレクトリを {{ic|/var/cache/pacman/pkg/}} でバインドマウントする。&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|/var/cache/pacman/pkg/}} ディレクトリを他の場所への&#039;&#039;&#039;シンボリックリンクにしないでください&#039;&#039;&#039;。&#039;&#039;pacman&#039;&#039; の誤動作の&#039;&#039;&#039;原因になります&#039;&#039;&#039;。特に、&#039;&#039;pacman&#039;&#039; が自分自身をアップデートしようとしている場合です。}}&lt;br /&gt;
{{Warning|{{ic|CacheDir}}を/tmp以下に設定する事は、あなたが早さやディスクスペース,ストレージの寿命に敏感な場合にのみ推奨されます。}}&lt;br /&gt;
&lt;br /&gt;
==== パッケージのセキュリティ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; はパッケージの署名をサポートしていて、パッケージにセキュリティレイヤーを加えています。デフォルトの設定では {{ic|1=SigLevel = Required DatabaseOptional}} によって全てのリポジトリで全てのパッケージの署名検証が有効にされています。リポジトリ毎に {{ic|SigLevel}} を使うことでこの設定を上書きすることができます。パッケージに署名する方法や署名の検証について詳しくは、[[pacman-key]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Failed to commit transaction (conflicting files)&amp;quot; エラー ===&lt;br /&gt;
&lt;br /&gt;
次のエラーが表示される場合: [https://bbs.archlinux.org/viewtopic.php?id=56373]&lt;br /&gt;
&lt;br /&gt;
 エラー: 処理を完了できませんでした (衝突しているファイル)&lt;br /&gt;
 &#039;&#039;package&#039;&#039;: &#039;&#039;/path/to/file&#039;&#039; がファイルシステムに存在しています&lt;br /&gt;
 エラーが発生したため、パッケージは更新されませんでした。&lt;br /&gt;
&lt;br /&gt;
これは、&#039;&#039;pacman&#039;&#039; がファイルの衝突を検出し、仕様によりファイルを上書きしないために発生します。これは仕様によるものであり、欠陥ではありません。&lt;br /&gt;
&lt;br /&gt;
通常、この問題の解決法は自明です (とはいえ、なぜこれらのファイルがそこに存在しているのかを念の為に調べてみるべきでしょう)。まず、他のパッケージがそのファイルを所有していないか調べるのが安全です ({{ic|pacman -Qo &#039;&#039;/path/to/file&#039;&#039;}})。そのファイルが他のパッケージによって所有されている場合、[[バグ報告ガイドライン|バグレポートを提出]]してください。そのファイルが他のパッケージのよって所有されていない場合、&amp;quot;ファイルシステムに存在している&amp;quot;方のファイルの名称を変更し、アップデートのコマンドを再度実行してください。問題がなければ、そのファイルは削除しても良いです。&lt;br /&gt;
&lt;br /&gt;
何らかのプログラムを &#039;&#039;pacman&#039;&#039; を使用せずに (例えば {{ic|make install}} などで) 手動でインストールしている場合、プログラム自体とそのプログラムに属するファイルを全て削除しなければなりません。[[pacman/ヒントとテクニック#どのパッケージにも所有されていないファイルを特定する]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
インストールされたパッケージは、そのパッケージに関するメタデータを含む {{ic|/var/lib/pacman/local/&#039;&#039;package-version&#039;&#039;/files}} ファイルを提供します。このファイルが破損している、空である、または存在しない場合、パッケージの更新時に {{ic|file exists in filesystem}} エラーが発生します。そのようなエラーは通常、1つのパッケージだけが原因です。原因のパッケージに属するファイルの名前を変えて後で削除する代わりに、{{ic|pacman -S --overwrite &#039;&#039;glob&#039;&#039; &#039;&#039;package&#039;&#039;}} を実行して {{ic|&#039;&#039;glob&#039;&#039;}} にマッチするファイルを上書きすることもできます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|通常、{{ic|--overwrite}} スイッチの使用は避けてください。[[システムメンテナンス#特定の pacman コマンドを避けてください]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Failed to commit transaction (invalid or corrupted package)&amp;quot; エラー ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/cache/pacman/pkg/}} から &#039;&#039;.part&#039;&#039; ファイル (部分的にダウンロードされたパッケージ) を探し、そのファイルを削除してください (これは、{{ic|pacman.conf}} でカスタムの {{ic|XferCommand}} を使用した場合に起こりやすいです):&lt;br /&gt;
&lt;br /&gt;
 # find /var/cache/pacman/pkg/ -iname &amp;quot;*.part&amp;quot; -delete&lt;br /&gt;
&lt;br /&gt;
また、&#039;&#039;archlinux-keyring&#039;&#039; が古く、&#039;&#039;pacman&#039;&#039; が署名を検証できない場合にも、このエラーが発生することがあります。この問題を解決方法と防止方法は [[pacman/パッケージの署名#システムの定期的な更新]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Failed to init transaction (unable to lock database)&amp;quot; エラー ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; がパッケージデータベースを変更する際に (パッケージのインストール時など)、&#039;&#039;pacman&#039;&#039; はロックファイル {{ic|/var/lib/pacman/db.lck}} を作成します。これにより、複数の &#039;&#039;pacman&#039;&#039; インスタンスが同時にパッケージデータベースを変更してしまうことを防ぎます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; がデータベースの変更中に中断されてしまった場合、古いロックファイルが残ってしまう可能性があります。&#039;&#039;pacman&#039;&#039; インスタンスが実行中でないことが確実である場合は、ロックファイルを削除してください:&lt;br /&gt;
&lt;br /&gt;
 # rm /var/lib/pacman/db.lck&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|fuser /var/lib/pacman/db.lck}} を root として実行すれば、ロックファイルを使用しているプロセスが存在するか調べることができます。}}&lt;br /&gt;
&lt;br /&gt;
=== インストール時にパッケージを取得できない ===&lt;br /&gt;
&lt;br /&gt;
具体的には次のようなエラーです: {{ic|Not found in sync db}}、{{ic|対象が見つかりませんでした}}、{{ic|ファイルの取得に失敗しました}}。&lt;br /&gt;
&lt;br /&gt;
まず、パッケージが実際に存在することを確認してください。パッケージが存在することが確実であるならば、パッケージデータベースが古いのかもしれません。{{ic|pacman -Syu}} を実行して、パッケージデータベースを更新してシステムをアップグレードしてみてください。また、[[ミラー]]が最新であり、[[#リポジトリとミラー|リポジトリ]]が正しく設定されていることも確認してください。[[Reflector]] を使うことで、ミラーを最新に保つことができます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; が、更新すべきものがないと報告するにもかかわらず、{{ic|ファイルを取得するのに失敗しました}} というエラーが表示され続ける場合、{{ic|pacman -Syyu}} で[[ミラー#pacman にパッケージリストを更新させる|強制的にデータベースをダウンロード]]してみてください。これが通常の状況で必要になることは決してないため、[[ミラー#ミラーの動作不良|問題のミラーのステータスと一貫性]]を調査してください。&lt;br /&gt;
&lt;br /&gt;
また、インストールしたいパッケージが含まれているリポジトリがシステムで有効化されていない可能性もあります。例えば、パッケージが [[multilib]] リポジトリにあるが、{{ic|pacman.conf}} で &#039;&#039;multilib&#039;&#039; が有効化されていない場合、このエラーが発生します。&lt;br /&gt;
&lt;br /&gt;
[[FAQ#公式リポジトリにある共用ライブラリはそれぞれどうして一つのバージョンしか用意されてないんですか？]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== アップグレードの中断によって起動できなくなったシステムを修復する ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|これには複数の潜在的な問題があります。[[:en:Talk:pacman#More details in pacman crashes during an update]] を参照。}}&lt;br /&gt;
&lt;br /&gt;
電源断やカーネルパニック、ハードウェア障害によって、アップデートが中断されてしまうことがあります。ほとんどの場合、システムが大きなダメージを負うことはありませんが、起動できなくなってしまうことはあります。&lt;br /&gt;
&lt;br /&gt;
# [[USB インストールメディア]] を用意して、それを起動してください。&lt;br /&gt;
# ルートファイルシステムと [[ESP]] を[[マウント]]してください。&lt;br /&gt;
# マウントしたルートファイルシステムに {{ic|arch-chroot}} してください。&lt;br /&gt;
# 次に、アップデートを完全にやり直します。{{ic|/var/log/pacman.log}} を確認し、中断されたトランザクション中にアップグレードされていたパッケージ&#039;&#039;全ての&#039;&#039;リストを {{ic|pacman -Syu}} に渡してください。これで、もとのアップデートの戻しつつ、再インストールできるようになります。例:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Syu $(grep &amp;quot;\[&#039;&#039;2025-07-27T22.*&#039;&#039;\] \[ALPM\] upgraded&amp;quot; /var/log/pacman.log | cut -d &amp;quot; &amp;quot; -f4 | tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
アップグレードを&#039;&#039;完全に&#039;&#039;やり直すのは、適切なスクリプトレットとフックが実行されるようにするために必要だからです。&lt;br /&gt;
&lt;br /&gt;
=== アップグレード中に pacman がクラッシュしてしまった ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; が &amp;quot;database write&amp;quot; (データベース書き込み) エラーが発生してクラッシュし、その後、パッケージのアンインストール/再インストール/アップグレードができなくなってしまった場合、以下を行ってください:&lt;br /&gt;
&lt;br /&gt;
# Arch Linux の [[USB インストールメディア]]を起動してください。システム上の &#039;&#039;pacman&#039;&#039; と同じバージョンかより新しいものを使うために、最近のメディアを使うことが望ましいです。&lt;br /&gt;
# システムのルートファイルシステムをマウントしてください (例えば、{{ic|mount /dev/sdaX /mnt}} を root として実行してください)。そして、{{ic|df -h}} を実行してファイルシステムに十分な空き領域が存在することを確認してください。&lt;br /&gt;
# ファイルシステム proc、sys、dev もマウントしてください: {{ic|mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev}}&lt;br /&gt;
# システムにおいてデータベースの場所とディレクトリの場所がデフォルトである場合、{{ic|1=pacman --root=/mnt --cachedir=/mnt/var/cache/pacman/pkg -Syu}} を root として実行すればシステムの &#039;&#039;pacman&#039;&#039; データベースを更新してシステムをアップグレードすることができます。&lt;br /&gt;
#* アップデート/アップグレードができない場合、[[pacman/ヒントとテクニック#全てのパッケージの再インストール]] を参照してください。&lt;br /&gt;
# アップグレードしたら、アップグレードされていない壊れているパッケージがないかチェックしてください: {{ic|find /mnt/usr/lib -size 0}}&lt;br /&gt;
# そのようなパッケージが依然として存在する場合は、そのパッケージを再インストールしてください: {{ic|1=pacman --root /mnt --cachedir=/mnt/var/cache/pacman/pkg -S &#039;&#039;package&#039;&#039;}}。&lt;br /&gt;
&lt;br /&gt;
==== pacman: command not found ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/cache/pacman/pkg}} がシンボリックリンクである場合、&#039;&#039;pacman&#039;&#039; は自己アップデート時に同じディレクトリを作成しようとするため、このシンボリックリンクは削除されます。これにより、アップデートが失敗します。その結果、{{ic|/usr/bin/pacman}} と {{Pkg|pacman}} パッケージに含まれる他のコンテンツが消えてしまいます (訳注: [[#パッケージのインストール/アップグレード/アンインストール時に起こること]] の 4.2 を参照)。&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/cache/pacman/pkg}} は &#039;&#039;pacman&#039;&#039; によって管理されているため、シンボリックリンクにしないでください。代わりに {{ic|CacheDir}} オプションを使うか、このディレクトリをバインドマウントしてください ([[#パッケージのキャッシュディレクトリ]] を参照)。&lt;br /&gt;
&lt;br /&gt;
この問題が既に発生していて、システムが壊れてしまっている場合、&#039;&#039;pacman&#039;&#039; パッケージに含まれる {{ic|/usr}} 内のコンテンツを手動で展開して &#039;&#039;pacman&#039;&#039; を復元し、その後、適切に &#039;&#039;pacman&#039;&#039; を再インストールしてください。詳細は {{Bug|73306}} や[https://bbs.archlinux.org/viewtopic.php?id=241213 関連するフォーラムのスレッド]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Pacman の手動再インストール ===&lt;br /&gt;
&lt;br /&gt;
==== pacman-static を使う ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|pacman-static}} は &#039;&#039;pacman&#039;&#039; を静的にコンパイルしたものなので、システム上のライブラリが機能していなくても実行できます。これは、[[部分的なアップグレード]]によって &#039;&#039;pacman&#039;&#039; が実行できなくなってしまった場合にも便利です。&lt;br /&gt;
&lt;br /&gt;
{{AUR|pacman-static}} パッケージのページにある固定コメントと PKGBUILD には、バイナリを直接ダウンロードする方法が記されています。&#039;&#039;pacman&#039;&#039; を再インストールしたり、部分的なアップグレードが起こった際にシステム全体をアップグレードしたりする際にこの方法が使えます。&lt;br /&gt;
&lt;br /&gt;
===== PKGBUILD のビルドが失敗したときにコンパイル済みの pacman-static バイナリを使う =====&lt;br /&gt;
&lt;br /&gt;
場合によっては、システムがあまりに壊れていて &#039;&#039;makepkg&#039;&#039; を実行することも、{{AUR|pacman-static}} パッケージをビルドすることもできないようなこともあるかもしれません (ライブラリが無い、あるいは互換性が無いなど)。この場合、信頼できるソースから事前コンパイル済みの &#039;&#039;pacman-static&#039;&#039; バイナリをダウンロードすることができます。この静的バイナリは、システムのライブラリに依存せず、システム上の &#039;&#039;pacman&#039;&#039; を復元させることができます。&lt;br /&gt;
&lt;br /&gt;
古いバージョンのバイナリは https://pkgbuild.com/~morganamilo/pacman-static/x86_64/bin/pacman-static で配布されています。&lt;br /&gt;
&lt;br /&gt;
これをダウンロードし、[[実行可能属性|実行可能]]にしたうえで、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # ./pacman-static -Syu pacman&lt;br /&gt;
&lt;br /&gt;
これにより、システムがアップデートされ、{{Pkg|pacman}} が再インストールされます。これにより、存在しない共有ライブラリに関連する依存関係の壊れが修正されます。&lt;br /&gt;
&lt;br /&gt;
==== 外部の pacman を使う ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman-static&#039;&#039; でさえも動作しない場合は、外部の &#039;&#039;pacman&#039;&#039; を使用してリカバリできます。最も簡単な方法の一つは、[[archiso]] を使い、{{ic|--sysroot}} か {{ic|--root}} で、操作を行うシステム上のマウントポイントを指定することです。{{ic|--sysroot}} に必要なファイルシステムをマウントする方法については、[[Chroot#chroot を使う]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 手動で抽出する ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|この方法では、一歩間違うとシステムの状態をさらに悪化させてしまいます。[[#アップグレード中に pacman がクラッシュしてしまった]] に書かれてある方法を使えない場合の最後の手段としてのみ、以下を行ってください。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; がどうしようもなく破壊されたとしても、最新のパッケージを手動でダウンロードして適切な場所に展開することで修復が可能です。以下のような手順で行います:&lt;br /&gt;
&lt;br /&gt;
# インストールすべき {{Pkg|pacman}} の依存関係を調べる。&lt;br /&gt;
# それぞれの依存パッケージを[[ミラー]]からダウンロードする。&lt;br /&gt;
# 各パッケージをルートディレクトリに展開する。&lt;br /&gt;
# {{ic|pacman -S --overwrite}} を実行してパッケージデータベースを更新することで、パッケージを再インストールする。&lt;br /&gt;
# システムの完全なアップグレードを行う。&lt;br /&gt;
&lt;br /&gt;
正常に動作している Arch システムがあれば、以下のコマンドで &#039;&#039;pacman&#039;&#039; の依存関係リストを見ることができます:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Q $(pactree -u pacman)&lt;br /&gt;
&lt;br /&gt;
しかし、発生している問題によっては、それらの依存パッケージのうち数個だけをアップデートすれば良い場合もあります。パッケージは以下のようにして展開します:&lt;br /&gt;
&lt;br /&gt;
 # tar -xvpwf &#039;&#039;package.tar.zst&#039;&#039; -C / --exclude .PKGINFO --exclude .INSTALL --exclude .MTREE --exclude .BUILDINFO&lt;br /&gt;
&lt;br /&gt;
注意点として、{{ic|w}} フラグを使用してインタラクティブモードにしてください。非インタラクティブモードでは、重要なファイルが問答無用で上書きされてしまうかもしれないので、非常に危険です。また、パッケージを展開する順番には注意を払ってください (つまり、依存パッケージを先に展開してください)。[https://bbs.archlinux.org/viewtopic.php?id=95007 このフォーラムの投稿]には、&#039;&#039;pacman&#039;&#039; のいくつかの依存関係だけが壊れてしまった場合のこの手順の例が書かれてあります。&lt;br /&gt;
&lt;br /&gt;
=== 再起動後に &amp;quot;Unable to find root device&amp;quot; エラー ===&lt;br /&gt;
&lt;br /&gt;
[[カーネル]]の更新中に [[initramfs]] が破損してしまった可能性が高いです (&#039;&#039;pacman&#039;&#039; の {{ic|--overwrite}} オプションを不適切に使用すると、起こることがあります)。この状況から抜け出す方法は2つあります。1つ目は、&#039;&#039;fallback&#039;&#039; エントリです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&#039;&#039;Fallback&#039;&#039; エントリを削除してしまった場合、ブートローダのパラメータを変えれば &#039;&#039;Fallback&#039;&#039; イメージを起動できます。ブートローダのメニューが表示されたときに、Syslinux の場合は {{ic|Tab}} を、GRUB と systemd-boot の場合は {{ic|e}} を押してエントリの編集画面を開き、&#039;&#039;initramfs&#039;&#039; イメージ名を {{ic|initramfs-linux-fallback.img}} に変更して {{ic|Enter}} か {{ic|b}} (キーは[[ブートローダー]]に依ります) を押してください。}}&lt;br /&gt;
&lt;br /&gt;
システムが起動したら、コンソールかターミナルから以下のコマンドを実行して initramfs イメージを再ビルドしてください (以下のコマンドは標準の {{Pkg|linux}} カーネルの場合です):&lt;br /&gt;
&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
&lt;br /&gt;
これでうまく行かなかった場合、最新の Arch リリース (CD/DVD あるいは USB スティック) を起動し、ルートパーティションとブートパーティションをそれぞれ {{ic|/mnt}} と {{ic|/mnt/boot}} に[[マウント]]してください。そして、&#039;&#039;arch-chroot&#039;&#039; を使ってルートパーティションに [[chroot]] してください:&lt;br /&gt;
&lt;br /&gt;
 # arch-chroot /mnt&lt;br /&gt;
 # pacman -Syu mkinitcpio systemd linux&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 最新の Arch リリースを持っていない場合や、Arch 以外の &amp;quot;ライブ&amp;quot; Linux ディストリビューションしかない場合、昔ながらの方法で [[chroot]] することができます。当然、{{ic|arch-chroot}} スクリプトを実行する場合よりも、たくさん入力しなければなりません。&lt;br /&gt;
* &#039;&#039;pacman&#039;&#039; が {{ic|Could not resolve host}} というエラーで失敗してしまう場合、[[ネットワーク設定#接続の確認|インターネット接続を確認してください]]。&lt;br /&gt;
* パッケージを再インストールする必要があるが、arch-chroot や chroot の環境に入れない場合、コマンド {{ic|pacman --sysroot /mnt -Syu foo bar}} を使えば、別のルートパーティションから {{ic|pacman}} を使うことができます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
カーネル ({{Pkg|linux}} パッケージ) を再インストールすれば、{{ic|mkinitcpio -p linux}} が実行されて initramfs イメージが再生成されます。イメージの再生成を別途行う必要はありません。&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|exit}}、{{ic|umount /mnt/{boot,} }}、そして {{ic|reboot}} を実行することが推奨されます。&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Warning: current locale is invalid; using default &amp;quot;C&amp;quot; locale&amp;quot; エラー ===&lt;br /&gt;
&lt;br /&gt;
このエラーメッセージが言っている通り、ロケールが正しく設定されていません。[[ロケール]]の記事を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ロケールが存在しないという警告メッセージ ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bleachbit}} や {{AUR|localepurge}} などのツールによってロケールファイルが意図的に削除される場合、パッケージの更新中に {{ic|pacman}} が、ロケールが存在しないという警告を表示する場合があります。&lt;br /&gt;
&lt;br /&gt;
この警告を表示しないようにするには、{{ic|pacman.conf}} 内の {{ic|CheckSpace}} オプションをコメントアウトしてください。ただし、CheckSpace をオフにすると、パッケージのインストール時に空きスペースのチェック機能もオフになることに注意してください。なので、この回避策を取る場合は、他の方法でディスク領域を監視する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== pacman がプロキシの設定に従わない ===&lt;br /&gt;
&lt;br /&gt;
関連する環境変数 ({{ic|$http_proxy}}、{{ic|$ftp_proxy}} など) が設定されていることを確認してください。&#039;&#039;pacman&#039;&#039; を [[sudo]] で実行する場合、[[sudo#環境変数|環境変数を pacman に渡す]]ように sudo を設定する必要があります。また、[[GnuPG#鍵サーバー|dirmngr]] の設定ファイル {{ic|/etc/pacman.d/gnupg/dirmngr.conf}} で、鍵をリフレッシュする際にプロキシの設定に従うようにする {{ic|honor-http-proxy}} オプションが存在していることも確認してください。&lt;br /&gt;
&lt;br /&gt;
=== パッケージが明示的にインストールされたか依存関係としてインストールされたかの情報を保持しつつ、全パッケージを再インストールするには? ===&lt;br /&gt;
&lt;br /&gt;
ネイティブなパッケージ (つまり、同期データベース内に存在するパッケージ) を全て再インストールするには、{{ic|pacman -Qnq {{!}} pacman -S -}} か {{ic|pacman -S $(pacman -Qnq)}} を実行してください ({{ic|-S}} オプションはデフォルトでインストール理由を維持します)。&lt;br /&gt;
&lt;br /&gt;
次に、外部のパッケージを全て再インストールする必要があります。これらのパッケージの一覧は {{ic|pacman -Qmq}} で得られます。&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Cannot open shared object file&amp;quot; エラー ===&lt;br /&gt;
&lt;br /&gt;
どうやら、以前の &#039;&#039;pacman&#039;&#039; トランザクションで、&#039;&#039;pacman&#039;&#039; 自体が必要とする共有ライブラリが削除されたか破損したようです。&lt;br /&gt;
&lt;br /&gt;
この問題を解決するには、必要なライブラリをファイルシステム上に手動で展開する必要があります。まず、必要なライブラリを含むパッケージを調べ、&#039;&#039;pacman&#039;&#039; キャッシュ ({{ic|/var/cache/pacman/pkg/}}) からそのパッケージを見つけてください。そして、その共有ライブラリをファイルシステム上へ展開してください。これで &#039;&#039;pacman&#039;&#039; が実行できるようになりました。&lt;br /&gt;
&lt;br /&gt;
その後、壊れたパッケージを[[#特定のパッケージのインストール|再インストール]]する必要があります。注意点として、システムファイルがファイルシステム上に展開されたことを &#039;&#039;pacman&#039;&#039; は知らないため、{{ic|--overwrite}} フラグを使用する必要があります。Pacman は、先程の共有ライブラリファイルをパッケージのものに適切に置き換えてくれます。&lt;br /&gt;
&lt;br /&gt;
やるべきことは以上です。あとはシステムの残りも更新してください。&lt;br /&gt;
&lt;br /&gt;
===パッケージのダウンロード時にフリーズする===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; がリポジトリのアップデートや同期をできないというネットワークの問題がいくつか報告されています [https://bbs.archlinux.org/viewtopic.php?id&amp;amp;#61;68944] [https://bbs.archlinux.org/viewtopic.php?id&amp;amp;#61;65728]。Arch Linux のインストール時にこの問題が発生する場合、&#039;&#039;pacman&#039;&#039; のデフォルトのファイルダウンローダを置き換えることで解決します (詳しくは [[pacman のパフォーマンスの向上]]を参照)。[[VirtualBox]] で Arch Linux をゲスト OS としてインストールする時にこの問題が起こる場合、マシンのプロパティで &#039;&#039;NAT&#039;&#039; の代わりに &#039;&#039;Host interface&#039;&#039; を使うことで解決します。&lt;br /&gt;
&lt;br /&gt;
=== Failed retrieving file &#039;core.db&#039; from mirror ===&lt;br /&gt;
&lt;br /&gt;
[[ミラー]]を正しく設定しているにも関わらずこのエラーが発生する場合、別の[[Resolv.conf|ネームサーバー]]を設定してみてください。&lt;br /&gt;
&lt;br /&gt;
=== error: &#039;local-package.pkg.tar&#039;: permission denied ===&lt;br /&gt;
&lt;br /&gt;
{{ic|pacman -U}} を使用して sshfs のマウントポイント上にパッケージをインストールしようとしてこのエラーが発生する場合、インストールしたいパッケージをローカルのディレクトリに移動し、もう一度インストールしてみてください。&lt;br /&gt;
&lt;br /&gt;
=== error: could not determine cachedir mount point /var/cache/pacman/pkg ===&lt;br /&gt;
&lt;br /&gt;
Chroot 環境内で {{ic|pacman -Syu}} などを実行した際に以下のエラーが発生する場合:&lt;br /&gt;
&lt;br /&gt;
 エラー: キャッシュディレクトリ /var/cache/pacman/pkg のマウントポイントを決定できませんでした&lt;br /&gt;
 エラー: 処理を完了できませんでした (空き容量が足りません)&lt;br /&gt;
&lt;br /&gt;
このエラーのよくある原因は、chroot したディレクトリがマウントポイントでないことです。解決策は、[[既存の Linux からインストール#基本ツールをダウンロード]] に書かれてあるノートを見てください。また、{{man|8|arch-chroot}} には、バインとマウントを使って chroot ディレクトリをマウントポイント化する方法について例と共に説明されています。&lt;br /&gt;
&lt;br /&gt;
=== error: GPGME error: No data ===&lt;br /&gt;
&lt;br /&gt;
パッケージを更新できず、このエラーが発生する場合は、更新する前に {{ic|rm -r /var/lib/pacman/sync/}} を実行してみてください。&lt;br /&gt;
&lt;br /&gt;
Sync ファイルを削除しても問題が解決しない場合は、更新する前に {{ic|file /var/lib/pacman/sync/*}} を実行して sync ファイルが {{ic|gzip compressed data}} であることを確認してください。ルーターかプロキシが、ダウンロードしたデータを破損させているのかもしれません。破損は HTML タイプであるかもしれません。&lt;br /&gt;
&lt;br /&gt;
Sync ファイルが正しい種類であった場合、ミラーサーバー側に問題があるのかもしれません。{{ic|pacman-conf -r core}} と {{ic|pacman-conf -r extra}} でミラーサーバーを確認してください。表示された URL の一番最初のものをブラウザの URL 欄にペーストし、ファイルの一覧が表示されるか確かめてください。ミラーがエラーを返した場合、{{ic|/etc/pacman.d/mirrorlist}} 内のそのミラーをコメントアウトしてください。[[ミラー]]を更新したり、再ランク付けしたりできます。&lt;br /&gt;
&lt;br /&gt;
=== error: GPGME error: General error and &amp;quot;:: File /var/cache/pacman/pkg/&amp;lt;package&amp;gt;.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).===&lt;br /&gt;
&lt;br /&gt;
このエラーが発生して、システムやパッケージを一切更新できない場合、{{ic|DISPLAY}} が空白に設定されているのかもしれません。これが空白に設定されていると、GPG-Flow は機能しなくなるようです。&lt;br /&gt;
&lt;br /&gt;
上記の他の方法で問題が解決しなかった場合、{{ic|unset DISPLAY}} を実行するか、この変数を任意の値に設定することで、高い確率で再び更新できるようになります。詳細は[https://bbs.archlinux.org/viewtopic.php?pid=2204786 この投稿]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 壊れている、または同期されていないパッケージを再インストールする ===&lt;br /&gt;
&lt;br /&gt;
{{ic|pacman -Qk $pkg}} コマンドを使えば、{{ic|$pkg}} パッケージのインストールされたファイルがデータベースのバージョンに含まれているファイルと一致するかどうかを確認することができます。複数のパッケージに対しては、以下のようなループを使うことで、存在しないファイルがあるパッケージを再インストールすることができます:&lt;br /&gt;
&lt;br /&gt;
 # LC_ALL=C.UTF-8 pacman -Qk 2&amp;gt;/dev/null | grep -v &#039; 0 missing files&#039; | cut -d: -f1 |&lt;br /&gt;
     while read -r package; do&lt;br /&gt;
         pacman -S &amp;quot;$package&amp;quot; --noconfirm&lt;br /&gt;
     done&lt;br /&gt;
&lt;br /&gt;
(部分的なダウングレードなどにより) {{ic|/var/lib/pacman}} のローカルデータベースが {{ic|/}} ファイルシステムにインストールされているパッケージよりも新しい場合、これはルートファイルシステムをローカルデータベースと再同期させる最適な方法です。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* {{man|3|libalpm}}&lt;br /&gt;
* {{man|8|pacman}}&lt;br /&gt;
* {{man|5|pacman.conf}}&lt;br /&gt;
* {{man|8|repo-add}}&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|pacman|2026-03-15|866480}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%AE%E5%90%91%E4%B8%8A&amp;diff=41390</id>
		<title>パフォーマンスの向上</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%AE%E5%90%91%E4%B8%8A&amp;diff=41390"/>
		<updated>2026-03-12T03:46:26Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ハードウェア]]&lt;br /&gt;
[[Category:システム管理]]&lt;br /&gt;
[[en:Improving performance]]&lt;br /&gt;
[[es:Improving performance]]&lt;br /&gt;
[[fr:Improving performance]]&lt;br /&gt;
[[hu:Improving performance]]&lt;br /&gt;
[[pl:Improving performance]]&lt;br /&gt;
[[pt:Improving performance]]&lt;br /&gt;
[[ru:Improving performance]]&lt;br /&gt;
[[zh-hans:Improving performance]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|パフォーマンスの向上/ブートプロセス}}&lt;br /&gt;
{{Related|Pacman ヒント#パフォーマンス}}&lt;br /&gt;
{{Related|OpenSSH#SSH の高速化}}&lt;br /&gt;
{{Related|OpenOffice#OpenOffice の高速化}}&lt;br /&gt;
{{Related|ノートパソコン}}&lt;br /&gt;
{{Related|Preload}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
この記事では、知覚または計測できるシステムパフォーマンスの向上を最終目的として、パフォーマンスに関連する基本的なシステム診断、及び、リソース消費量の削減やシステム最適化のための手順に関する情報を提供しています。ゲーミングおよび低レイテンシに特有のその他のアドバイスは [[ゲーム#パフォーマンスを向上させる]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== 基本 ==&lt;br /&gt;
&lt;br /&gt;
=== システムを知る ===&lt;br /&gt;
&lt;br /&gt;
システムをチューンするには、全体のスピードを下げているボトルネックやサブシステムに狙いを定めるがベストな方法です。システムの仕様を知ることは、それらを特定することに役立ちます。&lt;br /&gt;
&lt;br /&gt;
* (LibreOffice や Firefox などの) 巨大なアプリケーションを同時に動作させたときにコンピュータが遅くなる場合、RAM の容量が十分であるか確認してください。以下のコマンドを使って、&amp;quot;available&amp;quot; 列の値を確認してください: {{bc|$ free -h}}&lt;br /&gt;
* 起動時間が長い場合、または、アプリケーションを初めて起動するとき (だけ) にロードに長い時間が掛かる場合、おそらくハードドライブが遅過ぎます。ハードドライブの速度を計測するには {{ic|hdparm}} コマンドを使うことができます: {{bc|# hdparm -t /dev/sd&#039;&#039;X&#039;&#039;}} {{Note|{{Pkg|hdparm}} で出力されるのはハードドライブの純粋な読み込み速度なので、有効なベンチマークとは言えませんが、平均的なコンピュータでは (アイドル状態のときに) 40MB/s より高い数値が出るのが妥当です。}}&lt;br /&gt;
* 十分な RAM が利用できる時でも CPU 負荷が一貫して高い場合、不要な[[デーモン]]やプロセスを無効化するなどして CPU 使用量を減らすことを試みてください。{{Pkg|htop}} や {{ic|pstree}} などの[[アプリケーション一覧/ユーティリティ#システム監視|システム監視ツール]]で CPU 負担をモニタすることができます: {{bc|$ htop}}&lt;br /&gt;
* ダイレクトレンダリングを使うアプリケーション (つまり、ビデオプレイヤ、ゲーム、[[ウィンドウマネージャ]]などの GPU を使うアプリケーション) が遅い場合、GPU パフォーマンスを向上させることで解決するはずです。まず初めにダイレクトレンダリングが有効になっているかどうか確認しましょう。{{ic|glxinfo}} コマンドを使うことで確認できます ({{Pkg|mesa-utils}} パッケージに含まれています)。次のコマンドを実行すると {{ic|direct rendering: Yes}} と表示される必要があります: {{bc|$ glxinfo {{!}} grep &amp;quot;direct rendering&amp;quot;}}&lt;br /&gt;
* [[デスクトップ環境]]を動かしている場合、(不要な) 視覚デスクトップ効果を無効化することで GPU 使用率を削減できる場合があります。現在使用しているものがハードウェアや個人の要件に合わない場合、より軽量な環境を使用するか、[[デスクトップ環境#カスタム環境|カスタムの環境]]を作成しましょう。&lt;br /&gt;
* 最適化された[[カーネル]]を使用することでパフォーマンスを向上できます。一般に {{Pkg|linux-zen}} が良い選択肢です。しかし、この記事の特定の部分で説明されているように、デフォルトのカーネルを調節することで良いパフォーマンスを得られます。&lt;br /&gt;
&lt;br /&gt;
=== ベンチマーク ===&lt;br /&gt;
&lt;br /&gt;
最適化の効果を判断できないことがたびたびあります。そういった場合は[[ベンチマーク]]ツールで計測することができます。&lt;br /&gt;
&lt;br /&gt;
== ストレージデバイス ==&lt;br /&gt;
&lt;br /&gt;
=== セクタサイズ ===&lt;br /&gt;
&lt;br /&gt;
NVMe ドライブや Advanced Format ハードディスクが[[アドバンスドフォーマット|適切な論理セクタサイズ]]を使用していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== パーティショニング ===&lt;br /&gt;
&lt;br /&gt;
パーティションが[[パーティショニング#パーティションアライメント|適切にアライメントされている]]ことを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== 複数のドライブ ====&lt;br /&gt;
&lt;br /&gt;
複数のドライブを持っているのであれば、ソフトウェア [[RAID]] を組んでパフォーマンスを劇的に向上させることができます。&lt;br /&gt;
&lt;br /&gt;
[[スワップ]]を別のディスク上に作成することでもパフォーマンスを多少向上させることができます。特に、スワップが頻繁に発生する場合です。&lt;br /&gt;
&lt;br /&gt;
===== SSD を HDD のキャッシュとして使う =====&lt;br /&gt;
&lt;br /&gt;
ハードディスクから移行することができない場合、ソリッドステートドライブをキャッシュレイヤとして使うことで読み書き速度を向上させ、ランダムアクセスによるパフォーマンスの低下を減らすことができます。方法としては、[[LVM#キャッシュ]]、[[Bcache]]、[[Bcachefs#SSD キャッシング]] があります。&lt;br /&gt;
&lt;br /&gt;
==== HDD でのレイアウト ====&lt;br /&gt;
&lt;br /&gt;
従来の回転式 HDD を使用している場合、パーティションのレイアウトがシステムのパフォーマンスに影響を与える可能性があります。ドライブの最初のセクター（ディスクの外周の近く）は最後のセクターよりも高速です。また、パーティションを小さくすれば必要なドライブヘッドの移動が少なくなり、ディスク操作をスピードアップできます。従って、システムのために作るパーティションは小さく (15~20GiB、必要に応じて調節) して、できるだけドライブの最初に配置することが推奨されます。他のデータ（画像・動画など）は別のパーティションに置くべきです。通常、システム ({{ic|/}}) から home ディレクトリ ({{ic|/home}}) を分割することでこれを達成できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|このページのすべてのアドバイスにおいて言えることですが、得られる利益を計測してください: ハードドライブを[https://blog.stuffedcow.net/2019/09/hard-disk-geometry-microbenchmarking/#shortstroke ショートストローク]したり、合計容量の数％しか使わないようにしたりしない限り、一般的な使用においては読み書き操作が依然としてドライブ全体に及ぶため、パーティションを分割してもほんの数%しかアクセス時間は改善されません。それと比べて、SSD にアップグレードするとパフォーマンスが1桁以上向上します。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステムの選択とチューニング ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムごとに強みが異なるのでシステムごとにファイルシステムを選ぶことはとても重要です。[[ファイルシステム]]の記事に人気のあるファイルシステムの簡単な説明がされています。[[:カテゴリ:ファイルシステム]]から関連記事も見ることができます。&lt;br /&gt;
&lt;br /&gt;
==== マウントオプション ====&lt;br /&gt;
&lt;br /&gt;
様々な [[fstab#atime オプション|*atime]] オプションが、{{ic|strictatime}} のパフォーマンスのペナルティを軽減することができます。&lt;br /&gt;
&lt;br /&gt;
他のマウントオプションはファイルシステム固有なので、ファイルシステムの関連記事を参照してください:&lt;br /&gt;
&lt;br /&gt;
* [[Ext3]]&lt;br /&gt;
* [[Ext4#パフォーマンスの向上]]&lt;br /&gt;
* [[JFS#最適化]]&lt;br /&gt;
* [[XFS#パフォーマンス]]&lt;br /&gt;
* [[Btrfs#デフラグメンテーション]]、[[Btrfs#圧縮]]、{{man|5|btrfs}}&lt;br /&gt;
* [[ZFS#チューニング]]&lt;br /&gt;
* [[NTFS#パフォーマンスの向上]]&lt;br /&gt;
&lt;br /&gt;
===カーネルパラメータの調整===&lt;br /&gt;
&lt;br /&gt;
ブロックデバイスのパフォーマンスに影響するキーが複数存在します、詳しくは [[sysctl#仮想メモリ]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== I/O スケジューラの設定 ===&lt;br /&gt;
&lt;br /&gt;
==== 背景情報 ====&lt;br /&gt;
&lt;br /&gt;
入出力 &#039;&#039;(I/O)&#039;&#039; スケジューラはストレージデバイスにブロック I/O の操作を送信するときの順番を決めるカーネルコンポーネントです。I/O スケジューラの目的は読み込みリクエストを最適な方法で扱うことであるため、以下の2つのドライブの特徴を押さえておくことが重要です:&lt;br /&gt;
&lt;br /&gt;
* HDD は回転ディスクでありヘッドが物理的に必要な場所に移動します。そのため、ランダムアクセスは 3〜12ms と非常に遅くなります (ハイエンドサーバーのドライブなのかノートパソコンのドライブなのか、あるいはディスクコントローラの書き込みバッファを迂回するかなどで速度は変わります)。逆に連続アクセスなら高いスループットを得ることが可能です。連続アクセスならヘッドはほとんど動かなくてよいためです。典型的な HDD は毎秒200回ほどの I/O リクエストを処理することができます &#039;&#039;(IOPS)&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
* SSD には物理的に移動する部品がありません。ランダムアクセスはシーケンシャルアクセスと同じ速度が出ます (0.1ms 未満)。SSD は複数のリクエストを一度にこなすこともできます。典型的な SSD のスループットは 10,000 IOPS を超えるため、大抵の場合は必要な仕事量を上回ります。&lt;br /&gt;
&lt;br /&gt;
プロセスを大量に実行してストレージの様々な場所の I/O リクエストを発生させているとき (つまりランダムアクセスをしている状態)、数千の IOPS が生成されますが、普通の HDD では 200 IOPS までしか対応できません。ストレージにアクセスできるまで待機するリクエストの待ち行列が作られることになります。I/O スケジューラはこの待ち行列を最適化します。&lt;br /&gt;
&lt;br /&gt;
==== スケジューリングアルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
スループットを改善する方法の一つとして、待機リクエストの順番を論理アドレスで並び替えてできるだけ一番近いリクエストを通すことで、アクセスをリニア化する方法があります。これが [[w:ja:エレベータアルゴリズム|elevator]] スケジューラと呼ばれる Linux の最初の I/O スケジューラでした。&lt;br /&gt;
&lt;br /&gt;
エレベータアルゴリズムの問題点はシーケンシャルアクセスをするプロセスが上手く動かなくなることです。そのようなプロセスは、データブロックを読み取って数マイクロ秒で処理してから次のブロックを読み出します。エレベータスケジューラはプロセスが近くのブロックを呼びだそうとしていることを知らないため、他の場所のリクエストに移ってしまいます。[[w:Anticipatory_scheduling|anticipatory]] IO スケジューラはこの問題を解決します。このスケジューラは、他のリクエストを処理する前に、近くで別の読み取り操作が発生することを予測して、数ミリ秒待機します。&lt;br /&gt;
&lt;br /&gt;
上述のスケジューラはどちらも全体のスループットを改善することを目指していましたが、それによって不幸にも長い間待たされてしまうリクエストも発生していました。例えば、プロセスの多くがストレージ領域の最初の部分をリクエストしていて、不幸なプロセスはストレージの末端付近をリクエストしているような状況を考えて下さい。そのため、開発者は公平なアルゴリズムを作成することを決めて [[w:Deadline_scheduler|deadline]] スケジューラが追加されました。deadline スケジューラはアドレスによってキューの順番を決めますが (エレベーターアルゴリズムと同じ)、一定期間、リクエストがキューの中で待機した場合、リクエストを (経過時間によって順番が付けられる) &amp;quot;expired&amp;quot; キューに移動します。スケジューラは先に expired キューをチェックして、リクエストを処理してからエレベーターキューに移動します。このアルゴリズムは公平性のために全体のスループットを犠牲にしているわけです。&lt;br /&gt;
&lt;br /&gt;
[[w:CFQ|Completely Fair Queuing (CFQ)]] は別のアプローチで問題に取り組みました。CFQ はプロセスの優先度に基づくキューを使ってタイムスライスと許容するリクエストの数を割り当てます。さらに [[cgroups]] のサポートを追加することで特定のプロセスグループに一定の IO を予約できるようにしました。これは共有・クラウドサーバーで特に役立ちます。ユーザーはリソースが必要なときに料金を払って IOPS を得られるのです。また、同期 I/O で近くの操作を待機するという &#039;&#039;anticipatory&#039;&#039; スケジューラの機能を改良して取り入れています。&#039;&#039;anticipatory&#039;&#039; と &#039;&#039;elevator&#039;&#039; スケジューラは Linux カーネルから外され、下記のより高度な代替スケジューラに置き換えられました。&lt;br /&gt;
&lt;br /&gt;
[https://docs.kernel.org/block/bfq-iosched.html Budget Fair Queuing (BFQ)] は CFQ のコードをベースにいくつか改善を加えています。各プロセスに固定長のタイムスライスを与えるかわりに、プロセスのセクタ数から計算した &amp;quot;budget&amp;quot; を割り当ててヒューリスティックを用います。BFQ は想定的に複雑なスケジューラであるため、オーバーヘッドが大きく、回転ドライブや低速 SSD に適しています。特に遅い CPU と組み合わせたときに高速なデバイスの足を引っ張ってしまうような場合に有用です。BFQ は個人用のシステムでインタラクティブな作業を行うときに、ストレージデバイスがまるで待機状態のときのように素早く反応することを目標としています。デフォルト設定ではスループットの最大化よりもレイテンシの最小化が優先されているのが特徴です。これにより、ハードドライブにおいて[https://www.phoronix.com/review/linux-50hdd-io/2 アプリケーションの起動を劇的に加速化]させられる場合があります。&lt;br /&gt;
&lt;br /&gt;
[https://lwn.net/Articles/720675/ Kyber] はネットワークルーティングで用いられている積極的なキュー管理テクニックから生まれた新しいスケジューラです。リクエストを制限するメカニズムとして「トークン」を基に実装されています。 リクエストの割当を受けるにはキューイングトークンを必要とすることで、リクエストのスタベーションを防ぎます。ディスパッチトークンによってデバイスの特定の優先度の操作に制限されます。さらに、ターゲットの読み込みレイテンシを定義して、レイテンシ目標を達成するためにスケジューラ自身がチューニングを行います。アルゴリズムの実装は比較的シンプルなので高速なデバイスでも効率的に機能します。&lt;br /&gt;
&lt;br /&gt;
==== カーネルの I/O スケジューラ ====&lt;br /&gt;
&lt;br /&gt;
初期のアルゴリズムには既にメインラインから外されているものもあります。公式の Linux カーネルはいくつかの I/O スケジューラをサポートしています。[https://www.thomas-krenn.com/en/wiki/Linux_Multi-Queue_Block_IO_Queueing_Mechanism_(blk-mq) Multi-Queue Block I/O Queuing Mechanism (blk-mq)] は I/O クエリを複数のキューに割り当てて、複数のスレッドおよび CPU コアにタスクを分散させます。このフレームワークでは以下のスケジューラが使えます:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;None&#039;&#039;、キューイングアルゴリズムは適用されません。&lt;br /&gt;
*&#039;&#039;mq-deadline&#039;&#039; は deadline スケジューラ (下記を参照) をマルチスレッドに対応させたスケジューラです。&lt;br /&gt;
*&#039;&#039;Kyber&#039;&#039;&lt;br /&gt;
*&#039;&#039;BFQ&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== I/O スケジューラの変更 ====&lt;br /&gt;
&lt;br /&gt;
{{Note|スケジューラーの最適な選択は、デバイスとワークロードの正確な性質の両方によって異なります。 また、MB/秒単位のスループットだけがパフォーマンスの指標ではありません。デッドラインや公平性は全体的なスループットを低下させますが、システムの応答性を向上させる可能性があります。 [[ベンチマーク]] は、各 I/O スケジューラのパフォーマンスを示すのに役立つ場合があります。}}&lt;br /&gt;
&lt;br /&gt;
特定のデバイスで利用可能なスケジューラとアクティブなスケジューラを表示するには (アクティブなスケジューラは角括弧の中):&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /sys/block/&#039;&#039;&#039;&#039;&#039;sda&#039;&#039;&#039;&#039;&#039;/queue/scheduler|&lt;br /&gt;
mq-deadline kyber [bfq] none&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
全デバイスで利用可能なスケジューラを表示するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ grep &amp;quot;&amp;quot; /sys/block/&#039;&#039;&#039;*&#039;&#039;&#039;/queue/scheduler|&lt;br /&gt;
/sys/block/pktcdvd0/queue/scheduler:none&lt;br /&gt;
/sys/block/sda/queue/scheduler:mq-deadline kyber [bfq] none&lt;br /&gt;
/sys/block/sr0/queue/scheduler:[mq-deadline] kyber bfq none&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デバイス &#039;&#039;sda&#039;&#039; のアクティブな I/O スケジューラを &#039;&#039;bfq&#039;&#039; に変更するには:&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;&#039;&#039;&#039;&#039;bfq&#039;&#039;&#039;&#039;&#039; &amp;gt; /sys/block/&#039;&#039;&#039;&#039;&#039;sda&#039;&#039;&#039;&#039;&#039;/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
I/O スケジューラの変更プロセスは、ディスクが回転式か否かに応じて自動化することができ、起動毎に永続化させることができます。例えば、以下の [[udev]] ルールは、回転ドライブに対しては &#039;&#039;bfq&#039;&#039; を、[[SSD]]/eMMC ドライブに対しては &#039;&#039;bfq&#039;&#039; を、[[NVMe]] に対しては &#039;&#039;none&#039;&#039; を設定します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/60-ioschedulers.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# HDD&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;sd[a-z]*&amp;quot;, ATTR{queue/rotational}==&amp;quot;1&amp;quot;, ATTR{queue/scheduler}=&amp;quot;bfq&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# SSD&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;sd[a-z]*|mmcblk[0-9]*&amp;quot;, ATTR{queue/rotational}==&amp;quot;0&amp;quot;, ATTR{queue/scheduler}=&amp;quot;bfq&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# NVMe SSD&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;nvme[0-9]*&amp;quot;, ENV{DEVTYPE}==&amp;quot;disk&amp;quot;, ATTR{queue/scheduler}=&amp;quot;none&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
再起動するか、強制的に[[udev#新しいルールをロードする|新しいルールをロード]]してください。&lt;br /&gt;
&lt;br /&gt;
==== IO スケジューラの調整 ====&lt;br /&gt;
&lt;br /&gt;
カーネルの I/O スケジューラには遅延・期限時間や FIFO パラメータなどそれぞれ設定項目が存在します。特定のデバイスとワークロードの組み合わせにあわせてアルゴリズムを調整することが可能です。スループットを高めたり遅延を少なくしたりするときに用います。&lt;br /&gt;
設定項目と説明は [https://docs.kernel.org/block/index.html カーネルドキュメント] で確認できます。&lt;br /&gt;
&lt;br /&gt;
特定のデバイスで設定可能なパラメータを確認するには (以下の例では &#039;&#039;sdb&#039;&#039; は &#039;&#039;deadline&#039;&#039; を使用しています):&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls /sys/block/&#039;&#039;&#039;&#039;&#039;sdb&#039;&#039;&#039;&#039;&#039;/queue/iosched|&lt;br /&gt;
fifo_batch  front_merges  read_expire  write_expire  writes_starved}}&lt;br /&gt;
&lt;br /&gt;
レイテンシを犠牲に &#039;&#039;deadline&#039;&#039; のスループットを高めるには以下のコマンドで {{ic|fifo_batch}} を増やします:&lt;br /&gt;
&lt;br /&gt;
{{bc|# echo &#039;&#039;32&#039;&#039; &amp;gt; /sys/block/&#039;&#039;&#039;&#039;&#039;sdb&#039;&#039;&#039;&#039;&#039;/queue/iosched/&#039;&#039;&#039;fifo_batch&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
=== 電源管理設定とライトキャッシュ ===&lt;br /&gt;
&lt;br /&gt;
従来の回転ディスク (HDD) を使用する場合は、省電力機能を完全に無効にするか下げるかし、書き込みキャッシュが有効になっているかどうかを確認すると良いかもしれません。&lt;br /&gt;
&lt;br /&gt;
[[Hdparm#電源管理の設定]] と [[Hdparm#ライトキャッシュ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
後で、起動時にこれらを適用する [[Hdparm#udev ルールによる永続的な設定|udev ルール]] を作成することができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[GNOME]] では、&amp;quot;ディスク&amp;quot; アプリケーションからこれらのパラメータのいくつかを設定でき、udev ルールは必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の機能はあなたのハードドライブではサポートされていないかもしれません。その場合、Hdparm が通知します。なので、この特定の機能の設定を無視してください。}}&lt;br /&gt;
&lt;br /&gt;
=== ディスクの読み書きを減らす ===&lt;br /&gt;
&lt;br /&gt;
遅いストレージデバイスへの不必要なアクセスを避けることはパフォーマンスを向上にとって良いことであり、デバイスの寿命を伸ばすことにも繋がります。ただし最近のハードウェアでは寿命への影響はわずかです。&lt;br /&gt;
&lt;br /&gt;
{{Note|書き込み増幅率が平凡な 10x で、書き込み/消去サイクルが標準的な 10000 である、32GB の SSD の場合、&#039;&#039;&#039;毎日 10GB のデータ書き込みを行うと&#039;&#039;&#039;、&#039;&#039;&#039;8年間で寿命が尽きる&#039;&#039;&#039;とされます。この数字はもっと[https://kcall.co.uk/ssd/ 容量が大きい SSD] を使ったり書き込み増幅が少ない最新のコントローラを使うことで改善されます。また、ディスクの書き込みを制限するのにどの方法が必要なのか考えるときは[https://web.archive.org/web/20161124030749/http://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead この耐久実験]も参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== ディスクの書き込みを表示する ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|iotop}} パッケージはプログラムをディスクの書き込み数でソートして、どれくらいの頻度でどれだけディスクに書き込んでいるか表示します。詳しくは {{man|8|iotop}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== ファイルを tmpfs に再配置する ====&lt;br /&gt;
&lt;br /&gt;
ブラウザプロファイルなどのファイルを [[tmpfs]] ファイルシステムに再配置してメモリ内に保存することで、アプリケーションのレスポンスを向上させることができます:&lt;br /&gt;
&lt;br /&gt;
* ブラウザプロファイルを同期させる方法については [[Profile-sync-daemon]] を参照してください。特定のブラウザには注意が必要な場合があります。例えば [[Firefox Ramdisk]] を参照してください。&lt;br /&gt;
* 任意の指定されたフォルダを同期させる方法については [[Anything-sync-daemon]] を参照してください。&lt;br /&gt;
* tmpfs 内でパッケージをビルドすることでコンパイル時間を減らす方法については [[Makepkg#ビルド時間を短縮する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ファイルシステム ====&lt;br /&gt;
&lt;br /&gt;
対応する[[ファイルシステム]]ページを参照して、パフォーマンス改善に関する指示があるか見てください。[[#ファイルシステムの選択とチューニング]] に挙げられているファイルシステムのリストも参照してください。&lt;br /&gt;
&lt;br /&gt;
==== スワップ領域 ====&lt;br /&gt;
&lt;br /&gt;
詳細は [[スワップ#パフォーマンス]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== ライトバックの間隔とバッファサイズ ====&lt;br /&gt;
&lt;br /&gt;
詳細は [[Sysctl#仮想メモリ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== コアダンプを無効化する ====&lt;br /&gt;
&lt;br /&gt;
[[コアダンプ#自動的なコアダンプの無効化]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ionice によるストレージ I/O スケジューリング ===&lt;br /&gt;
&lt;br /&gt;
バックアップなど多くのタスクにおいては、そのタスクを実行するために、ストレージ I/O の遅延が短かったり、ストレージ I/O の帯域が大きかったりする必要はありません。そのようなタスクはバックグラウンドタスクに分類することができます。一方、デスクトップにおいて高速な I/O は UI の応答性を高める上で必須です。ゆえに、他のタスクがストレージ I/O を必要としている間は、バックグラウンドタスクによって利用できるストレージ帯域幅を減らすことが有益です。これは、プロセスごとに異なる優先度を設定できる Linux I/O スケジューラ BFQ を使用することで実現できます。&lt;br /&gt;
&lt;br /&gt;
以下のようにバックグラウンドプロセスを実行することで、プロセスの I/O 優先度 &amp;quot;Idle&amp;quot; レベルまで落とすことができます:&lt;br /&gt;
&lt;br /&gt;
 $ ionice -c 3 &#039;&#039;command&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳細は [https://www.cyberciti.biz/tips/linux-set-io-scheduling-class-priority.html a short introduction to ionice] や {{man|1|ionice}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== トリム ===&lt;br /&gt;
&lt;br /&gt;
最適なパフォーマンスを得るには、SSD の空きブロックを定期的に discard (トリム) してランダム書き込みの速度を最適化するべきです。詳細は [[ソリッドステートドライブ#TRIM]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ネットワーク ==&lt;br /&gt;
&lt;br /&gt;
=== 一般情報 ===&lt;br /&gt;
&lt;br /&gt;
* カーネルネットワーキング: [[Sysctl#パフォーマンスを向上させる]] を参照&lt;br /&gt;
* NIC: [[ネットワーク設定#MTU とキューの長さの設定]] を参照&lt;br /&gt;
* DNS: キャッシュ付きの DNS リゾルバの使用を検討してください。[[ドメイン名前解決#DNS サーバ]] を参照&lt;br /&gt;
* Samba: [[Samba#スループットを向上させる]] を参照&lt;br /&gt;
&lt;br /&gt;
=== 規制範囲 ===&lt;br /&gt;
&lt;br /&gt;
無線ネットワークサービスには国毎に異なる標準があります。たいてい、ネットワーク構成に応じて正しい範囲を設定すれば、シグナルをより強くできます。これはセットアップ時に設定することが一般的ですが、[https://community.frame.work/t/responded-amd-rz616-wifi-card-doesnt-work-with-6ghz-on-kernel-6-7/43226 設定が正しく適用されない]場合もあります。{{ic|/sys/module/cfg80211/parameters/ieee80211_regdom}} の内容を確認してください; 値が {{ic|00}} (グローバルな設定であることを示し、通常、制限がより強くなります) である場合や、間違った範囲に設定されている場合、以下の[[カーネルパラメータ]]を追加してみてください。ただし、{{ic|&#039;&#039;XX&#039;&#039;}} は正しい国コード (例: 日本の場合は {{ic|JP}} です):&lt;br /&gt;
&lt;br /&gt;
 cfg80211.ieee80211_regdom=&#039;&#039;XX&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
その後、一旦再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== 電源管理 ===&lt;br /&gt;
&lt;br /&gt;
特定のデバイスには、使用中であるにもかかわらずネットワークアダプタが誤って省電力モードに入り、パフォーマンスが低下したり接続が切断されたりする問題があります。そのような場合、パッケージを[[アップグレード]]し、必要なファームウェアアップデートを受けられるようにしてください。そして、[[電源管理#ネットワークインターフェイス]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== CPU ==&lt;br /&gt;
&lt;br /&gt;
=== オーバークロック ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:オーバークロック|オーバークロック]]は、CPU クロック周波数の上限を上げることにより、CPU の計算パフォーマンスを向上させます。オーバークロックできるかどうかは、CPU モデルとマザーボードモデルの組み合わせに依存します。オーバークロックは BIOS を介して行うのが最も一般的です。オーバークロックには欠点とリスクもあります。ここでは推奨も非推奨もしないでおきましょう。&lt;br /&gt;
&lt;br /&gt;
Intel 製のチップの多くは acpi_cpufreq などや他のほとんどのユーティリティに正しいクロック周波数を伝えません。この結果、[[dmesg]] は極端なメッセージを表示します (これは、{{ic|acpi_cpufreq}} カーネルモジュールをアンロードしてブラックリスト化することで回避可能です)。クロック速度を読むには、{{AUR|i7z}} パッケージの &#039;&#039;i7z&#039;&#039; を使用してください。オーバークロックされた CPU が正しく動作していることを確認する方法として、[[ストレステスト]]が推奨されます。&lt;br /&gt;
&lt;br /&gt;
=== 周波数スケーリング ===&lt;br /&gt;
&lt;br /&gt;
[[CPU 周波数スケーリング]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== CPU スケジューラ ===&lt;br /&gt;
&lt;br /&gt;
メインライン Linux カーネルのデフォルトの CPU スケジューラは [https://lwn.net/Articles/925371/ EEVDF] です。&lt;br /&gt;
&lt;br /&gt;
* {{App|[https://cchalpha.blogspot.com/2020/05/project-c-announcement.html Project C]|BMQ を Project C にリファクタリングするためのクロスプロジェクト。Project C コードベースに基づいて PSD を再作成します。よって、これは2つのプロジェクトのマージであり、その後 PDS が Project C として更新されます。より最近の開発として推奨されます。|https://cchalpha.blogspot.com/|{{AUR|linux-prjc}}}}&lt;br /&gt;
* {{App|BORE|BORE スケジューラは、対話型タスクにおいてある程度の公平性を犠牲にして低レイテンシを実現することに焦点を当てています。CFS の上に構築されており、vruntime コード更新だけに調整されています。なので、他の非公式 CPU スケジューラと比較して、全体的な変更は非常に小さいです。|https://github.com/firelzrd/bore-scheduler|{{AUR|linux-cachyos-bore}}}}&lt;br /&gt;
* {{App|SCX|システムをリセットせずに様々な CPU スケジューラを動的にロードできるようにします。|https://github.com/sched-ext/scx|{{Pkg|scx-scheds}}}}&lt;br /&gt;
&lt;br /&gt;
=== リアルタイムカーネル ===&lt;br /&gt;
&lt;br /&gt;
(TV チューナーカードをフル HD 解像度 (1080p) で実行するなど) 一部の使用用途では、[[リアルタイムカーネル]]を使うと利益を得られる場合があります。&lt;br /&gt;
&lt;br /&gt;
=== プロセスの優先順位を設定 ===&lt;br /&gt;
&lt;br /&gt;
{{man|1|nice}} と {{man|1|renice}} も参照してください。&lt;br /&gt;
&lt;br /&gt;
==== Ananicy ====&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/ananicy-cpp/ananicy-cpp Ananicy CPP]  は動的に実行可能ファイルの nice レベルを調整するためのデーモンで、{{Pkg|ananicy-cpp}} や {{AUR|ananicy-cpp-git}} パッケージで利用可能です。nice レベルとは、CPU リソースを配分するときの実行可能ファイルの優先度を表すものです。&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=[[Gamemode]] と [https://gitlab.com/ananicy-cpp/ananicy-cpp Ananicy CPP] はどちらもプロセスの nice レベルを調整しようとします。これらのツールを組み合わせて使用することは推奨されていません。[https://github.com/CachyOS/ananicy-rules/blob/master/README.md#gamemode--ananicy-cpp--bad-idea]}}&lt;br /&gt;
&lt;br /&gt;
==== cgroups ====&lt;br /&gt;
&lt;br /&gt;
[[cgroups]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== LimitCPU ====&lt;br /&gt;
&lt;br /&gt;
[https://limitcpu.sourceforge.net/ LimitCPU] は特定のプロセスの CPU 使用率を制限するプログラムです。{{AUR|limitcpu}} をインストールすれば、プロセスの PID で CPU 使用率を 0 から 100 までの値にコンピュータに搭載されている CPU コア数をかけた数字の範囲で制限することができます。例えば、CPU コアが8個であれば利用可能な値は 0 から 800 です。使用例:&lt;br /&gt;
&lt;br /&gt;
 $ limitcpu -l 50 -p 5081&lt;br /&gt;
&lt;br /&gt;
=== irqbalance ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|irqbalance}} はマルチプロセッサシステムでパフォーマンスを向上させるためにプロセッサ間でハードウェア割り込みを分散させます。{{ic|irqbalance.service}} で[[systemd#ユニットを使う|操作]]することが可能です。&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=一部のケースでは、irqbalance が省電力機能に干渉し、ビデオゲームでのスタッタリングやフレームレート低下を引き起こす可能性があります。[https://bugs.launchpad.net/ubuntu/+source/ubuntu-meta/+bug/1833322/comments/4]}}&lt;br /&gt;
&lt;br /&gt;
=== CPU の脆弱性の緩和策をオフにする ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=以下の設定を使うときは問題の脆弱性について確認してください。特に、緩和策が無効化されている場合、&#039;&#039;&#039;信頼できないプログラムを隔離する方法として仮想マシンを使ってはなりません&#039;&#039;&#039;。詳しくは [https://phoronix.com/scan.php?page=news_item&amp;amp;px=Linux-Improve-CPU-Spec-Switches こちら] や [https://linuxreviews.org/HOWTO_make_Linux_run_blazing_fast_(again)_on_Intel_CPUs こちら] のページを参照。}}&lt;br /&gt;
&lt;br /&gt;
CPU の脆弱性の緩和策をオフにすることで、パフォーマンスが向上する場合があります。以下の[[カーネルパラメータ]]ですべての緩和策が無効になります:&lt;br /&gt;
&lt;br /&gt;
 mitigations=off&lt;br /&gt;
&lt;br /&gt;
このパラメータによって切り替えられるすべてのスイッチについての説明は、[https://docs.kernel.org/admin-guide/kernel-parameters.html kernel.org] で見られます。{{AUR|spectre-meltdown-checker}} や {{man|1|lscpu}} ({{Pkg|util-linux}} に同梱) を使うことで、脆弱性チェックを行うことができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=第10世代およびそれ以降の Intel CPU、または AMD Ryzen シリーズ 1000 およびそれ以降の CPU を使用している場合、緩和策を無効化することにより得られるパフォーマンスの向上は、最大でも 5% にとどまります。一方、それ以前の世代の CPU では、最大 25% まで向上します。[https://www.phoronix.com/scan.php?page=article&amp;amp;item=3-years-specmelt 2021 初頭における総評]、[https://www.phoronix.com/scan.php?page=article&amp;amp;item=spectre-rocket-lake Rocket Lake におけるテスト]、[https://www.phoronix.com/scan.php?page=article&amp;amp;item=alder-lake-mitigations Alder Lake におけるテスト] を参照。}}&lt;br /&gt;
&lt;br /&gt;
=== CPU に合わせてコンパイルをチューニングする ===&lt;br /&gt;
&lt;br /&gt;
CPU によっては、ソフトウェアのコンパイル時に {{ic|1=-march=native}} フラグを使って、搭載されている CPU の[[Wikipedia:ja:マイクロアーキテクチャ|マイクロアーキテクチャ]]に合わせてソフトウェアのコンパイルをチューニングすると、パフォーマンスを少し向上できる場合があります。ただし、このフラグを使ってコンパイルしたバイナリは、他の CPU マイクロアーキテクチャ上では遅くなってしまうか、正しく動作しません。このオプションを使用していて、なおかつ CPU を変更あるいはアップグレードしたい場合は、バイナリを再コンパイルするか、新しい CPU には今の CPU と同じマイクロアーキテクチャのものを選ぶ必要があります。[[Makepkg#最適化|このオプションは makepkg でデフォルトとして設定することもできます]]。&lt;br /&gt;
&lt;br /&gt;
[[カーネル#コンパイル|カーネルを自身でコンパイルする]]場合は、{{ic|CONFIG_X86_NATIVE_CPU}} オプションでカーネルのコンパイル中にこのフラグを有効化できます。しかし、通常のバイナリでパフォーマンス向上の寄与度が大きい拡張ベクトル命令を Linux カーネルは汎用のコード内で[https://github.com/torvalds/linux/blob/e5f0a698b34ed76002dc5cff3804a61c80233a7a/arch/x86/Makefile#L77 禁じている]ため、カーネルのパフォーマンス向上はより小さいでしょう。そのため、カーネルのパフォーマンス向上のほとんどは、[https://github.com/gcc-mirror/gcc/blob/ffa98429b93934be87f58bc3af481a69310aedaf/gcc/config/i386/x86-tune-costs.h より小さなマイクロ最適化]によるものになります。&lt;br /&gt;
&lt;br /&gt;
== グラフィック ==&lt;br /&gt;
&lt;br /&gt;
=== Xorg の設定 ===&lt;br /&gt;
&lt;br /&gt;
グラフィックパフォーマンスは {{man|5|xorg.conf}} の設定に依存している場合があります。[[NVIDIA]]、[[AMDGPU]]、[[Intel]] の記事を参照してください。不適切な設定は Xorg が動作しなくなる原因になるため、注意しましょう。&lt;br /&gt;
&lt;br /&gt;
=== Mesa の設定 ===&lt;br /&gt;
&lt;br /&gt;
Mesa ドライバのパフォーマンスは [https://dri.freedesktop.org/wiki/ConfigurationInfrastructure/ drirc] で設定できます。{{Pkg|adriconf}} (Advanced DRI Configurator) はオプションを設定して標準の drirc ファイルに書き込むことで MESA ドライバを設定する GUI ツールです。&lt;br /&gt;
&lt;br /&gt;
=== ハードウェアビデオアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
[[ハードウェアビデオアクセラレーション]]により、ビデオカードに動画のデコード/エンコードをさせることができます。&lt;br /&gt;
&lt;br /&gt;
=== オーバークロック ===&lt;br /&gt;
&lt;br /&gt;
CPU と同様に、(GPU の) オーバークロックは直接的にパフォーマンスを向上できますが、一般には推奨されません。いくつかのパッケージがあります: {{AUR|rovclock}} (ATI カード)、{{Pkg|rocm-smi-lib}} (最近の AMD カード)、{{AUR|nvclock}} (古い NVIDIA カード - Geforce 9 まで)、{{Pkg|nvidia-utils}} (最近の NVIDIA カード)。&lt;br /&gt;
&lt;br /&gt;
[[AMDGPU#オーバークロック]] や [[NVIDIA/ヒントとテクニック#オーバークロックを有効化する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== PCIe resizable BAR を有効化する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 一部のシステムでは、PCIe resizable BAR を有効化するとパフォーマンスが大幅に劣化する可能性があります。システムのベンチマークを行って、PCI resizable BAR がパフォーマンスを向上させていることを確認してください。ただし、新しい Intel Arc の専用 GPU では、resizable BAR は Intel によって推奨されており、ほとんどの場合でパフォーマンスを向上させるでしょう。&lt;br /&gt;
* 効果を発揮させるには、[[Wikipedia:Unified Extensible Firmware Interface#CSM booting|Compatibility Support Module (CSM)]] を無効化しなければなりません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
PCI の仕様では、PCI デバイスのメモリを PCI コントローラに公開するために、より大きい[[Wikipedia:PCI configuration space#Standardized registers|ベースアドレスレジスタ]] (BAR) を使用できます。そうすることで、ビデオカードのパフォーマンスを向上できる可能性があります。ビデオメモリ全体にアクセスすることでパフォーマンスを向上できますし、グラフィックドライバの最適化も可能になります。Resizable BAR、above 4G decoding、そしてドライバ最適化の組み合わせを、AMD は [https://www.amd.com/en/gaming/technologies/smart-technologies.html AMD Smart Access Memory] と呼んでおり、初期は AMD Series 500 チップセットマザーボードで利用できましたが、後に UEFI アップデートを通して AMD Series 400 と Intel Series 300 以降に拡張されました。この設定はすべてのマザーボードで利用できるわけではなく、特定のボードではブート問題を引き起こすことが知られています。&lt;br /&gt;
&lt;br /&gt;
BAR のサイズが 256M の場合、この機能は有効化されていないか、サポートされていません:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=# journalctl -k --grep=BAR=|2=&lt;br /&gt;
[drm] Detected VRAM RAM=8176M, BAR=256M&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
有効化するには、マザーボード設定で &amp;quot;Above 4G Decode&amp;quot; か &amp;quot;&amp;gt;4GB MMIO&amp;quot; という名前の設定を有効化してください。BAR が大きくなっていることを確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=# journalctl -k --grep=BAR=|2=&lt;br /&gt;
[drm] Detected VRAM RAM=8176M, BAR=8192M&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|NVIDIA GPU においては、ファームウェアで有効化されていたとしても、[[NVIDIA]] ドライバは Resizable BAR を自動的に有効化しません。UEFI で Above 4G Decoding と Resizable BAR を有効化することに加えて、Resizable BAR をドライバ側で明示的に有効化する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/nvidia-rebar.conf|2=&lt;br /&gt;
options nvidia NVreg_EnableResizableBar=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、[[initramfs を再生成]]してください。そうすることで、ブート時の早期段階で NVIDIA カーネルモジュールがロードされるときにこのオプションが適用されます。&lt;br /&gt;
&lt;br /&gt;
PCIe Resizable BAR を完全に有効化するには、シャットダウンし、なおかつ一旦電源を切る必要があるかもしれません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Resizable BAR の状態は {{ic|lspci -vv}} で確認できます。GPU の BAR サイズが 256 MB よりも大きくなっているはずです (例は 16 GB VRAM を搭載した NVIDIA 4070Ti Super です):&lt;br /&gt;
&lt;br /&gt;
{{hc|1=# lspci -vv -d ::03xx {{!}} grep BAR|2=&lt;br /&gt;
        Capabilities: [bb0 v1] Physical Resizable BAR&lt;br /&gt;
                BAR 0: current size: 16MB, supported: 16MB&lt;br /&gt;
                BAR 1: current size: &#039;&#039;&#039;16GB&#039;&#039;&#039;, supported: 64MB 128MB 256MB 512MB 1GB 2GB 4GB 8GB 16GB&lt;br /&gt;
                BAR 3: current size: 32MB, supported: 32MB&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== RAM、スワップ、OOM 処理 ==&lt;br /&gt;
&lt;br /&gt;
=== クロック周波数とタイミング ===&lt;br /&gt;
&lt;br /&gt;
RAM は BIOS で設定することで、クロック周波数とタイミングを別々にすることができます。メモリのパフォーマンスは両方の値によって変わります。BIOS に用意されている最高速のプリセットを選択することでデフォルト設定よりも性能を上げることができます。マザーボードやメモリのメーカーがサポートしていない周波数まで値を高めると、CPU のオーバークロックと同じようなリスクがあるので注意してください。[[#オーバークロック]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== RAM オーバーレイ上に root を置く ===&lt;br /&gt;
&lt;br /&gt;
{{Out of date|liveroot スクリプトはメンテナンスされていないようです。しかし、このアプローチは依然として機能するはずです。}}&lt;br /&gt;
&lt;br /&gt;
書き込みが遅いメディア (USB や 回転 HDD) を使う場合、(ディスク上の) 読み取り専用の root の上で RAM オーバーレイを作って root を動作させることができます。root に書き込みできる領域が制限されるかわりにパフォーマンスが劇的に改善します。{{AUR|liveroot}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== zram 内のスワップや zswap ===&lt;br /&gt;
&lt;br /&gt;
[[zswap]] や [[zram#スワップとしての使用|zram 内のスワップ]]を使うことで、似たような利点を (同じくらいのコストで) 得られます。これら2つは一般に意図が似ていますが、動作が異なります:&lt;br /&gt;
&lt;br /&gt;
* zswap は、圧縮された RAM キャッシュとして動作し、ユーザ空間の設定をあまり必要としません (と同時に許可もしていません)。スワップデバイスと組み合わせて、スワップのキャッシュとして動作します。スワップに入りそうなページは、代わりに zswap に入る可能性があります。&lt;br /&gt;
&lt;br /&gt;
* zram は、RAM 内に圧縮されたブロックデバイスを作成できるカーネルモジュールです。この圧縮されたブロックデバイスはスワップデバイスとして使用でき、他のスワップデバイスと組み合わせる必要はありません。多くの設定オプションがあり、例えばコールドページを保持しておくバッキングデバイスを使用するかどうかも指定できます。&lt;br /&gt;
&lt;br /&gt;
両方とも[[スワップ]]サブシステムを呼び出すため、スワップに影響を与える設定はこれらのシステムにも影響を与えます。例えば、[[swappiness]] は、メモリが圧迫している状況で、カーネルがファイルキャッシュをドロップするか、ページをスワップに移動させるかのどちらを優先させるかを指定します。Zswap はページのスワップへの移動動作をインターセプトし、zram もスワップとして動作するため、このオプションはこれら2つのメカニズムがどれくらいの頻度で使用されるかにも影響を与えます。&lt;br /&gt;
&lt;br /&gt;
=== グラフィックカードの RAM を使う ===&lt;br /&gt;
&lt;br /&gt;
稀なケースとして、RAM 容量が非常に小さいが、ビデオ RAM に余りがある場合、後者をスワップとして使用できます。[[ビデオメモリにスワップ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== メモリ不足の状況におけるシステムのレスポンスを改善する ===&lt;br /&gt;
&lt;br /&gt;
従来の GNU/Linux システム (特にグラフィカルワークステーション) では、割り当てられたメモリがオーバーコミットすると、カーネル内の out-of-memory (OOM) killer がトリガーされるか、十分な量のメモリが開放される (システムが応答しない場合、メモリを大量消費するアプリケーションを閉じることは難しいため、これはすぐには起こり得ないでしょう) まで、システム全体のレスポンスがほぼ使用不能な状態まで低下します。挙動は特定の環境や条件に依存しており、通常のレスポンス状態に戻るまでには数秒から30分以上かかる場合があります。会議でのプレゼンテーションなどのような重要な状況においては、待つのが苦痛になるでしょう。&lt;br /&gt;
&lt;br /&gt;
[https://lore.kernel.org/lkml/d9802b6a-949b-b327-c4a6-3dbca485ec20@gmx.com/T/ カーネル]と[https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/XUZLHJ5O32OX24LG44R7UZ2TMN6NY47N/ Fedora] のメーリングリストで議論されている通り、メモリ不足の状況におけるカーネルとユーザ空間の挙動は将来的に改善されるかもしれませんが、ユーザは、システムのハードリセットや {{ic|vm.overcommit_*}} [[sysctl]] パラメータの調整よりも実行可能で効果的なオプションを使うことができます:&lt;br /&gt;
&lt;br /&gt;
* [https://docs.kernel.org/admin-guide/sysrq.html Magic SysRq キー] ({{ic|Alt+SysRq+f}}) で手動でカーネルの OOM killer をトリガーする。&lt;br /&gt;
* ユーザ空間の OOM デーモンを使ってこれに自動的 (または対話的) に対処する。&lt;br /&gt;
&lt;br /&gt;
{{Warning|OOM killer をトリガーして実行中のアプリケーションを kill すると、保存されていない作業が失われる場合があります。アプリケーションが最終的に通常通りメモリを開放してくれることを期待して辛抱強く待つか、あるいは応答がないシステムを可能な限り早く通常に戻したいと望むかは、あなた次第です。}}&lt;br /&gt;
&lt;br /&gt;
カーネルの OOM killer では終了する (しない) プロセスに優先順位を付けられないので、SysRq よりも OOM デーモンのほうが好ましい場合もあります。いくつかの OOM デーモンをリストアップしました:&lt;br /&gt;
&lt;br /&gt;
* {{App|systemd-oomd|[[systemd]] によって {{ic|systemd-oomd.service}} として提供されています。cgroups-v2 と pressure stall information (PSI) を使用してプロセスを監視し、カーネル空間で OOM が発生する前にアクションを取ります。|https://github.com/systemd/systemd, {{man|8|systemd-oomd}}|{{Pkg|systemd}}}}&lt;br /&gt;
* {{App|earlyoom|C で書かれた、シンプルなユーザ空間の OOM killer 実装です。|https://github.com/rfjakob/earlyoom|{{Pkg|earlyoom}}}}&lt;br /&gt;
* {{App|oomd|[https://lwn.net/Articles/759781/ PSI] ベースの OOM killer 実装です。Linux カーネルバージョン 4.20+ を必要とします。設定は JSON で行い、非常に複雑です。Facebook の本番環境において動作確認済み。|https://github.com/facebookincubator/oomd|{{AUR|oomd}}}}&lt;br /&gt;
* {{App|nohang|Python で書かれた、洗練された OOM ハンドラ。オプションで PSI サポートあり。earlyoom よりも設定可能です。|https://github.com/hakavlad/nohang|{{AUR|nohang-git}}}}&lt;br /&gt;
* {{App|low-memory-monitor|GNOME 開発者の取り組み。ユーザ空間のアプリケーションにメモリ不足の状態を伝えるためのより良いコミュニケーションを提供することを目的としており、さらにカーネルの OOM killer をトリガーするように設定することができます。PSI ベースで、Linux 5.2+ を必要とします。|https://gitlab.freedesktop.org/hadess/low-memory-monitor/|{{AUR|low-memory-monitor-git}}}}&lt;br /&gt;
* {{App|uresourced|アクティブなグラフィカルユーザセッションに対して、cgroup ベースのリソース保護を有効化する小さなデーモン。|https://gitlab.freedesktop.org/benzea/uresourced|{{AUR|uresourced}}}}&lt;br /&gt;
* {{App|bustd|非常に軽量な OOM killer。低速なマシンで便利です。PSI をベースとしており、Linux 4.2+ が必要です。|https://github.com/vrmiguel/bustd|{{AUR|bustd}}}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Performance_Tuning_Guide/index.html Red Hat Performance Tuning Guide]&lt;br /&gt;
* [https://www.thomas-krenn.com/en/wiki/Linux_Performance_Measurements_using_vmstat Linux Performance Measurements using vmstat]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Improving performance|2026-03-12|864653}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85%E3%83%BB%E3%83%88%E3%83%BC%E3%82%AF:Kgx&amp;diff=41371</id>
		<title>利用者・トーク:Kgx</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85%E3%83%BB%E3%83%88%E3%83%BC%E3%82%AF:Kgx&amp;diff=41371"/>
		<updated>2026-03-06T03:26:43Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 古いスレッドを削除&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=41340</id>
		<title>Wayland</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=41340"/>
		<updated>2026-02-16T23:54:32Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wayland]]&lt;br /&gt;
[[de:Wayland]]&lt;br /&gt;
[[en:Wayland]]&lt;br /&gt;
[[es:Wayland]]&lt;br /&gt;
[[hu:Wayland]]&lt;br /&gt;
[[pt:Wayland]]&lt;br /&gt;
[[ru:Wayland]]&lt;br /&gt;
[[zh-hans:Wayland]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|画像処理装置}}&lt;br /&gt;
{{Related|カーネルモード設定}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|スクリーンショットの取得#Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/ Wayland] は、[[Wikipedia:Windowing system#Display server|ディスプレイサーバ]]プロトコルです。[[Xorg|X Window System]] の後継として広く確立されています[https://blogs.kde.org/2025/11/26/going-all-in-on-a-wayland-future/] [https://blogs.gnome.org/alatiera/2025/06/08/the-x11-session-removal/] [https://discourse.ubuntu.com/t/ubuntu-25-10-drops-support-for-gnome-on-xorg/62538] [https://pagure.io/fesco/issue/3408]。[[Wikipedia:Wayland (display server protocol)#Differences between Wayland and X|Wikipedia に Wayland と Xorg との比較]]があります。&lt;br /&gt;
&lt;br /&gt;
Wayland プロトコルを使用するディスプレイサーバは、[[Wikipedia:ja:コンポジット型ウィンドウマネージャ|コンポジット型ウィンドウマネージャ]] としても機能するため、&#039;&#039;&#039;コンポジタ&#039;&#039;&#039; と呼ばれます。以下に[[#コンポジタ|Wayland コンポジタのリスト]]を示します。&lt;br /&gt;
&lt;br /&gt;
ネイティブな X11 アプリケーションをシームレスに動かすための後方互換性として、[[#Xwayland|Xwayland]] を使うことができます。これは Wayland に X サーバを提供します。&lt;br /&gt;
&lt;br /&gt;
== 要件 ==&lt;br /&gt;
&lt;br /&gt;
Wayland というのは単なるプロトコルです。[[Xorg]] とは違い、インストールすべき共通の「ディスプレイサーバ」は存在しません。Wayland を使用するために必要になるのは、互換性のあるディスプレイドライバ (この章) とコンポジタ (次の章)、あるいは Wayland プロトコルを実装している[[デスクトップ環境]] (例: [[GNOME]]、[[Plasma]]) のみです。ほとんどの Wayland コンポジタは、[[カーネルモード設定]]を使用しているシステム上でのみ動作します。&lt;br /&gt;
&lt;br /&gt;
[[画像処理装置|GPU ドライバ]]と Wayland コンポジタは、同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=XDC2016-Device-Memory-API EGLStreams] です。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート&lt;br /&gt;
|-&lt;br /&gt;
| GBM || [[NVIDIA]] &amp;lt; 495* 以外の全てのドライバー || 全て&lt;br /&gt;
|-&lt;br /&gt;
| EGLStreams || [[NVIDIA]] || [[GNOME]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: * Nvidia ≥ 495 は EGLStreams と GBM の両方をサポートします。[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=NVIDIA-495.44-Linux-Driver]&lt;br /&gt;
&lt;br /&gt;
NVIDIA が GBM のサポートを導入して以来、NVIDIA ≥ 495 で多くのコンポジタ (Mutter と KWin を含む) がデフォルトで GBM を使用し始めました。GBM は一般的にベターでより幅広いサポートがあると考えられています。EGLStreams がサポートされていた理由は、NVIDIA GPU をプロプライエタリドライバで Wayland 下で使用する代替の方法を NVIDIA が提供しなかったからだけです。さらに、GBM が NVIDIA に導入された後、KWin は [https://invent.kde.org/plasma/kwin/-/merge_requests/1638 EGLStreams のサポートを打ち切りました]。&lt;br /&gt;
&lt;br /&gt;
人気なデスクトップ環境/コンポジタと、NVIDIA によってまだサポートされている GPU を使用している場合、おそらくすでに GBM バックエンドを使用しています。確認するには、次を実行してください: {{ic|journalctl -b 0 --grep &amp;quot;renderer for&amp;quot;}}。GBM をバックエンドとして強制的に使用させるには、次の[[環境変数]]を設定してください:&lt;br /&gt;
&lt;br /&gt;
 GBM_BACKEND=nvidia-drm&lt;br /&gt;
 __GLX_VENDOR_LIBRARY_NAME=nvidia&lt;br /&gt;
&lt;br /&gt;
== コンポジタ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;スタック型&#039;&#039;&#039;、&#039;&#039;&#039;タイル型&#039;&#039;&#039;、&#039;&#039;&#039;ダイナミック型&#039;&#039;&#039; の違いについては、[[ウィンドウマネージャ#種類]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== スタック型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[COSMIC]] コンポジタ|COSMIC デスクトップ環境のコンポジタ。|https://github.com/pop-os/cosmic-comp|{{Pkg|cosmic-comp}}}}&lt;br /&gt;
* {{App|hikari|FreeBSD で活発に開発されている [[cwm]] にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしています。|http://hikari.acmelabs.space/|{{AUR|hikari}}}}&lt;br /&gt;
* {{App|KDE [[w:KWin|KWin]]|[[KDE#Plasma の起動]] を参照。|https://userbase.kde.org/KWin|{{Pkg|kwin}}}}&lt;br /&gt;
* {{App|[[labwc]]|Openbox にインスパイアされた wlroots ベースのコンポジタ。|https://github.com/labwc/labwc|{{Pkg|labwc}}}}&lt;br /&gt;
* {{App|[[w:Mutter (software)|Mutter]]|[[GNOME#GNOME の起動]] を参照。|https://gitlab.gnome.org/GNOME/mutter|{{Pkg|mutter}}}}&lt;br /&gt;
* {{App|waybox|Openbox をモデルとした最小主義の Wayland コンポジタ。|https://github.com/wizbright/waybox|{{AUR|waybox}}}}&lt;br /&gt;
* {{App|wayfire|[[Compiz]] にインスパイアされた、wlroots ベースの 3D コンポジタ。|https://wayfire.org/|{{AUR|wayfire}}}}&lt;br /&gt;
* {{App|[[Weston]]|正しさ、信頼性、予測可能性、性能のために設計された Wayland コンポジタ。|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}}&lt;br /&gt;
* {{App|wio|Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。|https://gitlab.com/Rubo/wio|{{AUR|wio-wl}}}}&lt;br /&gt;
* {{App|wlmaker|[[Window Maker]] からインスパイアされた wlroots ベースのコンポジタ。|https://phkaeser.github.io/wlmaker/|{{AUR|wlmaker}}}}&lt;br /&gt;
* {{App|woodland|Wayland 用の wlroots ベースの、最小かつ軽量のウィンドウスタッキングコンポジタ。Wayfire と TinyWl にインスパイアされています。|https://github.com/DiogenesN/woodland|{{AUR|woodland}}}}&lt;br /&gt;
&lt;br /&gt;
=== タイル型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Cagebreak]]|cage をベースに、[[ratpoison]] にインスパイアされています。|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}}}}&lt;br /&gt;
* {{App|jay|Rust 製の Wayland コンポジタ。外観はデフォルトの i3 をベースとしています。Jay は、宣言型の TOML ファイルか、コンポジタにインジェクトされる共有ライブラリで設定できます。|https://github.com/mahkoh/jay|{{AUR|jay}}}}&lt;br /&gt;
* {{App|miracle-wm|Mir ベースの Wayland コンポジた。i3 や sway のスタイルですが、swayfs のように、これらよりも派手で機能に富んでいます。|https://github.com/miracle-wm-org/miracle-wm|{{AUR|miracle-wm}}}}&lt;br /&gt;
* {{App|[[niri]]|スクロール可能なタイル型 Wayland コンポジタ。|https://github.com/YaLTeR/niri/|{{Pkg|niri}}}}&lt;br /&gt;
* {{App|[[Qtile]]|Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。|https://github.com/qtile/qtile|{{Pkg|qtile}}}}&lt;br /&gt;
* {{App|[[Sway]]|wlroots ベースの [[i3]] 互換 Wayland コンポジタ。|https://github.com/swaywm/sway|{{Pkg|sway}}}}&lt;br /&gt;
* {{App|SwayFx|魅力的な視覚効果機能を追加した [[Sway]]。|https://github.com/WillPower3309/swayfx|{{AUR|swayfx}}}}&lt;br /&gt;
* {{App|Velox|swc ベースのシンプルなウィンドウマネージャです。dwm と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== ダイナミック型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[cwc]]|wlroots ベースの [[awesome]] ライクな Wayland コンポジタ。|https://cudiph.github.io/cwc/apidoc/| {{AUR|cwc}}}}&lt;br /&gt;
* {{App|[[Mangowc]]|[[dwl]] ベースのコンポジタ。標準的な設定ファイル、オプションのスクロールレイアウト、素晴らしいデザイン構築可能。|https://github.com/DreamMaoMao/mangowc|{{AUR|mangowc}}}}&lt;br /&gt;
* {{App|[[dwl]]|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://codeberg.org/dwl/dwl|{{AUR|dwl}}}}&lt;br /&gt;
* {{App|[[Hyprland]]|見た目を犠牲にしないダイナミックなタイリング Wayland コンポジタ。|https://hypr.land|{{Pkg|hyprland}}}}&lt;br /&gt;
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}&lt;br /&gt;
* {{App|[[river]]|dwm と [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://codeberg.org/river/river|{{Pkg|river}}}}&lt;br /&gt;
* {{App|pinnacle-comp|Smithay ベースの Wayland コンポジタ。AwesomeWM にインスパイアされています。Lua あるいは Rust で設定できます。|https://github.com/pinnacle-comp/pinnacle|{{AUR|pinnacle-comp}}}}&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。|https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}&lt;br /&gt;
* {{App|GNOME Kiosk|Mutter ベースのコンポジタ。特定の用途のみに使用する場合や、ウォールディスプレイや POS システムなどの単一アプリケーションの環境に最適です。|https://gitlab.gnome.org/GNOME/gnome-kiosk|{{AUR|gnome-kiosk}}}}&lt;br /&gt;
* {{App|phoc|モバイル端末のための wlroots ベースの小さなコンポジタ。|https://gitlab.gnome.org/World/Phosh/phoc|{{Pkg|phoc}}}}&lt;br /&gt;
* {{App|Wayback|Wayland のコンポーネントを使用する完全な X11 デスクトップ環境を実行することのできる、X11 互換レイヤ。試験的で、開発の初期段階にあります。|https://wayback.freedesktop.org/|{{AUR|wayback-x11}}}}&lt;br /&gt;
&lt;br /&gt;
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。&lt;br /&gt;
それらがどのように開始されるかを {{ic|/usr/share/wayland-sessions/&#039;&#039;compositor&#039;&#039;.desktop}} を見て確認してください。&lt;br /&gt;
&lt;br /&gt;
== ディスプレイマネージャ ==&lt;br /&gt;
&lt;br /&gt;
Wayland コンポジタの実行をサポートしている[[ディスプレイマネージャ]]は以下の表の通りです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! 名前&lt;br /&gt;
! 何で動作するか&lt;br /&gt;
! 説明&lt;br /&gt;
|-&lt;br /&gt;
| {{Pkg|emptty}}&lt;br /&gt;
| TTY&lt;br /&gt;
| TTY で動作するシンプルな CLI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[GDM]]&lt;br /&gt;
| Wayland&lt;br /&gt;
| [[GNOME]] ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[greetd]]&lt;br /&gt;
| Wayland/Xorg/TTY&lt;br /&gt;
[[Greetd#Greeter]] を参照。&lt;br /&gt;
| 最小でありながら柔軟なログインデーモン。&lt;br /&gt;
|-&lt;br /&gt;
| {{Pkg|lemurs}}&lt;br /&gt;
| TTY&lt;br /&gt;
| Rust で書かれた TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|lidm}}&lt;br /&gt;
| TTY&lt;br /&gt;
| C で書かれた、完全にカラフルでカスタマイズ可能な TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[LightDM]]&lt;br /&gt;
| Xorg[https://github.com/canonical/lightdm/issues/267]&lt;br /&gt;
| 様々なデスクトップに対応したディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{Pkg|ly}}&lt;br /&gt;
| TTY&lt;br /&gt;
| Zig で書かれた TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[SDDM]]&lt;br /&gt;
| Wayland/Xorg&lt;br /&gt;
| QML ベースのディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|tbsm}}&lt;br /&gt;
| TTY&lt;br /&gt;
| bash のみに依存するシンプルな CLI セッションランチャー。&lt;br /&gt;
|-&lt;br /&gt;
| [[uwsm]]&lt;br /&gt;
| TTY&lt;br /&gt;
| スタンドアローンなコンポジタのための、セッションと XDG autostart のマネージャ。&lt;br /&gt;
TUI メニューを提供しますが、他のディスプレイマネージャと共に使用することもできます。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Xwayland ==&lt;br /&gt;
&lt;br /&gt;
{{man|1|Xwayland}} は、Wayland の下で実行される X サーバーで、Wayland サポートをまだ提供していないネイティブな [[X11]] アプリケーションに互換性を提供します。これを使用するには、{{Pkg|xorg-xwayland}} パッケージを[[インストール]]します。&lt;br /&gt;
&lt;br /&gt;
Xwayland はコンポジタを介して開始されるため、あなたの使用しているコンポジタのドキュメントを読み、Xwayland との互換性についてや、Xwayland の起動方法に関する指示を確認しておく必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* セキュリティ: Xwayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。&lt;br /&gt;
* パフォーマンス: ほとんどのケースで Xwayland は X11 と[https://openbenchmarking.org/result/2202053-NE-NVIDIARTX35 ほぼ同等のパフォーマンス]を発揮します。&lt;br /&gt;
* 互換性: Xwayland は X11 と完全な後方互換性があるわけではありません。一部のアプリケーションは Xwayland 下では正しく動作しない場合があります。}}&lt;br /&gt;
&lt;br /&gt;
=== Wayback ===&lt;br /&gt;
&lt;br /&gt;
[https://wayback.freedesktop.org/ Wayback] ({{AUR|wayback-x11}}、{{AUR|wayback-x11-git}}) は、Wayland のコンポネントを使用する完全な X11 デスクトプ環境を実行できるようにする、X11 互換レイヤです。最終的には従来の X.Org サーバを置き換えることを目的としており、X11 アプリケーションのメンテナンスコストを減少させます。&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ドライバ ===&lt;br /&gt;
&lt;br /&gt;
{{Note|バージョン 470 より前の Nvidia ドライバ(例: {{aur|nvidia-390xx-dkms}}) はハードウェア支援のある Xwayland をサポートしておらず、非 Wayland ネイティブなアプリケーションは Wayland セッションでのパフォーマンスが低下します。}}&lt;br /&gt;
&lt;br /&gt;
なお、[[NVIDIA#DRM カーネルモード設定|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://download.nvidia.com/XFree86/Linux-x86_64/515.48.07/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。&lt;br /&gt;
&lt;br /&gt;
=== Xwayland アプリケーションを検出する ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに目が動いているかどうかで確認できます。&lt;br /&gt;
&lt;br /&gt;
他の方法として、({{Pkg|xorg-xwininfo}} の) &#039;&#039;xwininfo&#039;&#039; をターミナルウィンドウで実行するというものがあります。Xwayland ウィンドウ上にマウスポインタをホバーすると、マウスポインタが + マークに変わります。ウィンドウをクリックすると、xwininfo は情報を表示して終了しますが、ネイティブな Wayland ウィンドウでは何も起こりません。{{ic|Ctrl+C}} を押すことで xwininfo を終了できます。&lt;br /&gt;
&lt;br /&gt;
あるいは、&#039;&#039;xlsclients&#039;&#039; ({{Pkg|xorg-xlsclients}} パッケージ) を使用することもできます。Xwayland で動作中のアプリケーションを全てリストアップするには、{{ic|xlsclients -l}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
あるいは、{{AUR|extramaus}} を実行して、アプリケーションのウィンドウ上でマウスポインタを動かすことでも確認できます。赤いマウスが動けば、アプリケーションは Xwayland で動いています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|KDE Plasma の場合は、[[KDE#KWin デバッグコンソール]] でウィンドウを調査できます。}}&lt;br /&gt;
&lt;br /&gt;
== GUI ライブラリ ==&lt;br /&gt;
&lt;br /&gt;
=== GTK ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|gtk3}} と {{Pkg|gtk4}} パッケージは Wayland バックエンドが有効になっています。GTK ではデフォルトで Wayland バックエンドを使いますが、[[環境変数]]を設定することで Xwayland を使うように上書きできます: {{ic|1=GDK_BACKEND=x11}}。&lt;br /&gt;
&lt;br /&gt;
テーマの問題は [[GTK#Wayland バックエンド]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Qt ===&lt;br /&gt;
&lt;br /&gt;
[[Qt]] 5 で Wayland のサポートを有効化するには、{{Pkg|qt5-wayland}} パッケージをインストールしてください。これで、Qt 5 アプリケーションは Wayland セッション上では Wayland で動作するようになります。&lt;br /&gt;
&lt;br /&gt;
必須ではないはずですが、明示的に Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、[[環境変数]] {{ic|1=QT_QPA_PLATFORM=wayland}} をセットして下さい。&lt;br /&gt;
&lt;br /&gt;
一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} と設定してください。これは、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。&lt;br /&gt;
また、{{ic|1=QT_QPA_PLATFORM=&amp;quot;wayland;xcb&amp;quot;}} を使用すると、Qt が Wayland を利用できない場合に、代わりに xcb (X11)プラグインを使用させることができます。[https://www.qt.io/blog/2018/05/29/whats-new-in-qt-5-11-for-the-wayland-platform-plugin]&lt;br /&gt;
&lt;br /&gt;
[[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。たとえば、[https://keepassxc.org KeepassXC] はトレイに最小化できません。これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、{{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。&lt;br /&gt;
&lt;br /&gt;
Qt WebEngine のバグ ([https://bugreports.qt.io/browse/QTBUG-113574 Incorrect sizing and bad text rendering with WebEngine using fractional scaling on Wayland]) のため、Qt WebEgine を使用するアプリケーション (例: [https://bugs.launchpad.net/calibre/+bug/2018658 Calibre]) では荒いフォントが表示される場合があります。&lt;br /&gt;
回避策は、{{ic|1=QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor}} [[環境変数]]を設定してアプリケーションを起動することです。&lt;br /&gt;
これにより、アプリケーションのウィンドウが分数スケーリングされなくなります。&lt;br /&gt;
&lt;br /&gt;
=== Clutter ===&lt;br /&gt;
&lt;br /&gt;
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{AUR|clutter}} パッケージで有効になっています。&lt;br /&gt;
&lt;br /&gt;
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|1=CLUTTER_BACKEND=wayland}} を設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
&lt;br /&gt;
[[SDL|SDL3]] では、コンポジタが [https://wayland.app/protocols/fifo-v1 fifo-v1 プロトコル]をサポートしている場合、デフォルトで Wayland が使用されます。[https://github.com/libsdl-org/SDL/blob/8c54961de02d8f62ed155925cb334efcaa2d1f95/src/video/wayland/SDL_waylandvideo.c#L536C9-L536C20] そうでない場合、順に X11 と Wayland が試行されます。環境変数 {{ic|1=SDL_VIDEO_DRIVER=x11}} あるいは {{ic|1=SDL_VIDEO_DRIVER=wayland}} を使用することで、どちらか一方を強制することができます (あるいは、より優先度の低い、SDL2 用の環境変数もあります。下記を参照)。[https://github.com/libsdl-org/SDL/blob/8c54961de02d8f62ed155925cb334efcaa2d1f95/docs/README-migration.md?plain=1#L802].&lt;br /&gt;
&lt;br /&gt;
{{Pkg|sdl2-compat}} は、[https://github.com/libsdl-org/sdl2-compat/blob/8b85f95bbcc3411c78c1f2cbd62b23b7f96093c2/src/sdl2_compat.c#L504-L538 アプリケーション固有の例外]を除いて、上記の SDL3 と同じルールに従います。SDL2 自体に関しては (例: {{AUR|sdl2}})、{{ic|1=SDL_VIDEODRIVER=wayland}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=SDL_VIDEODRIVER=&amp;quot;wayland,x11&amp;quot;}} とすることにより、Wayland が利用できない場合に代わりに X11 ビデオドライバを使用するように SDL2 を設定できます [https://wiki.libsdl.org/SDL2/FAQUsingSDL]。ウィンドウ装飾を有効化するために {{Pkg|libdecor}} をインストールすると良いかもしれません (例えば、GNOME で)。&lt;br /&gt;
&lt;br /&gt;
詳細は[https://wiki.libsdl.org/SDL3/README/wayland 公式のドキュメント]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GLFW ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|glfw}} パッケージには Wayland に対するサポートがあります。{{ic|1=XDG_SESSION_TYPE}} が {{ic|1=wayland}} に設定されていて、かつアプリケーションの開発者が特定のバックエンドを使用するようにしていなければ、Wayland バックエンドが使用されます。&lt;br /&gt;
&lt;br /&gt;
詳細は GLFW の[https://github.com/glfw/glfw/blob/3.4/src/platform.c#L87-L99 ソースコード]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GLEW ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|glew-wayland-git}} パッケージが GLEW ベースのアプリケーションで動かない場合、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== EFL ===&lt;br /&gt;
&lt;br /&gt;
Enlightenment には[https://www.enlightenment.org/about-wayland 完全な Wayland サポート]があります.&lt;br /&gt;
&lt;br /&gt;
EFL ベースのアプリケーションを Wayland 上で動作させるには、{{ic|1=ELM_DISPLAY=wl}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
=== winit ===&lt;br /&gt;
&lt;br /&gt;
Winit は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、環境変数を設定することで Xwayland を使うように上書きすることができます:&lt;br /&gt;
&lt;br /&gt;
* バージョン 0.29.2 より前の場合、{{ic|1=WINIT_UNIX_BACKEND=x11}} を設定してください。&lt;br /&gt;
* バージョン 0.29.2 以降の場合、{{ic|1=WAYLAND_DISPLAY}} を unset してください。そうすることで、強制的に {{ic|1=DISPLAY}} 変数を使用して X にフォールバックされます。[https://github.com/rust-windowing/winit/blob/baf10de95843f156b0fbad6b10c3137f1ebd4f1e/src/changelog/v0.29.md?plain=1#L134]&lt;br /&gt;
&lt;br /&gt;
=== Electron ===&lt;br /&gt;
&lt;br /&gt;
{{Note|[[KDE|Plasma]] では、一部の Electron アプリケーションがウィンドウに間違ったアイコン (デフォルトの Wayland アイコン) を使用することがあります (タスクバーには正しいアイコンが表示されます)。そのアプリケーションのデスクトップファイル名を強制する特殊なアプリケーション/ウィンドウルールを作成することで、解決できます。}}&lt;br /&gt;
&lt;br /&gt;
Wayland サポートは、コマンドラインフラグか環境変数で有効化できます。&lt;br /&gt;
&lt;br /&gt;
==== コマンドラインフラグ ====&lt;br /&gt;
&lt;br /&gt;
{{Note|一部のパッケージは、Electron に対してフラグを渡さないため、そのアプリケーションの開発者が解決策を実装する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
Wayland で動作させるために必要なコマンドラインフラグは [[Chromium#ネイティブ Wayland サポート]] を見てください。ただし、Electron 38 以降、コマンドラインフラグ {{ic|1=--ozone-platform-hint=auto}} は機能しないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
これらのフラグを手動で渡すこともできますが、[[Electron#設定ファイル|Electron の設定ファイル]]でフラグを永続化したり、[[デスクトップエントリ#desktop ファイルの変更|~/.local/share/applications の .desktop ファイル]]内の {{ic|1=Exec=}} 行にフラグを追加することでフラグを渡したりもできます。&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|Old version of Electron needs {{ic|1=--enable-features=WebRTCPipeWireCapturer}} But what version is it enable by default? Also default behavior of Electron vendored by non-free software would be wrong.}}&lt;br /&gt;
&lt;br /&gt;
Electron は、デフォルトで PipeWire による WebRTC スクリーンキャプチャを有効化しています。キャプチャは {{Pkg|xdg-desktop-portal}} をベースとしています。&lt;br /&gt;
&lt;br /&gt;
トップバーが表示されない場合は、{{ic|1=--enable-features=WaylandWindowDecorations}} で解決できます。これは、例として [[GNOME]] で必要となります ([https://github.com/electron/electron/pull/29618 electron17] からサポートされています)。&lt;br /&gt;
&lt;br /&gt;
==== 環境変数 ====&lt;br /&gt;
&lt;br /&gt;
バージョン 28 から 37 の間の Electron を使用するアプリケーションは、[[環境変数]] {{ic|ELECTRON_OZONE_PLATFORM_HINT}} を {{ic|auto}} または {{ic|wayland}} に設定することで、Wayland モードを使用することができます。&lt;br /&gt;
&lt;br /&gt;
コマンドラインのほうが、環境変数よりも優先されます。&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
[[Java]] プラットフォームのオープンソース実装である OpenJDK は、まだ Wayland のネイティブサポートを備えていません。&lt;br /&gt;
OpenJDK に Wayland を実装することを目的としたプロジェクトである [https://openjdk.java.net/projects/wakefield/ Wakefield] が実用できるようになるまでは、Xwayland を代わりに使用できます。&lt;br /&gt;
&lt;br /&gt;
[[Debian:Wayland#Java Programs (supported since OpenJDK 16?)]] を参照してください: &lt;br /&gt;
&lt;br /&gt;
:OpenJDK 16から、JRE は (Wayland をサポートしている) GTK3 を動的にロードできるようになりました。この[https://stackoverflow.com/questions/39197208/java-gui-support-on-wayland 議論]によると、これがサポートされているかもしれません。&lt;br /&gt;
:{{ic|_JAVA_AWT_WM_NONREPARENTING}} [[環境変数]]を &amp;quot;1&amp;quot; に設定することで、アプリケーションが空白の画面で起動する不具合を修正することができます。&lt;br /&gt;
&lt;br /&gt;
XWayland は機能的に Wayland と同等ではないので、Wakefield が実用的になるまでは、[https://wiki.openjdk.org/display/wakefield/Pure+Wayland+toolkit+prototype WLToolkit] で機能の差を埋めることができます。これは {{ic|1=-Dawt.toolkit.name=WLToolkit}} でアクティブ化できます。[https://blog.jetbrains.com/platform/2024/07/wayland-support-preview-in-2024-2/ JetBrains IDE] といった一部のプログラムはこれをサポートしています。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 自動化 ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ReimuNotMoe/ydotool ydotool] ({{Pkg|ydotool}}) - 汎用のコマンドラインツール (wayland 以外でも利用可能)。{{ic|ydotool.service}} [[ユーザーユニット]]を[[起動/有効化]]してください。{{man|8|ydotoold}}、{{man|1|ydotool}} を参照。&lt;br /&gt;
* [https://github.com/atx/wtype wtype] ({{Pkg|wtype}}) - Wayland 用 xdotool type。{{man|1|wtype}} を参照。&lt;br /&gt;
* [https://github.com/boppreh/keyboard keyboard] - Windows と Linux で動作する Python ライブラリ。実験的な OS X サポートあり。[https://github.com/boppreh/mouse mouse] ライブラリも参照。&lt;br /&gt;
* [https://git.sr.ht/~brocellous/wlrctl wlrctl]  ({{AUR|wlrctl}}) - 雑多な wlroots 拡張のためのコマンドラインユーティリティ (foreign-toplevel-management、virtual-keyboard、virtual-pointer をサポート)。&lt;br /&gt;
&lt;br /&gt;
=== キーボードやマウスキーのリマップ ===&lt;br /&gt;
&lt;br /&gt;
[[入力リマップユーティリティ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== スクリーンキャスト ===&lt;br /&gt;
&lt;br /&gt;
[[スクリーンキャプチャ#スクリーンキャスト]] と [[スクリーンキャプチャ#X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== アプリが閉じた後もクリップボードの内容を保持する ===&lt;br /&gt;
&lt;br /&gt;
Wayland の設計思想上、クリップボードのデータはソースクライアントのメモリ内に保存されます。クライアントが閉じると、クリップボードのデータは失われます。{{Pkg|wl-clip-persist}} を使うことで、この問題を解決できます。これはバックグラウンドで動き、クリップボードのデータを読んで、ソースクライアントからは独立した自身のメモリに保存します。&lt;br /&gt;
&lt;br /&gt;
=== Wayland コンポジタを systemd サービスとして自動的に起動する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Universal Wayland Session Manager]] は、使用中のコンポジタの systemd ユニットを自動的に生成します。さらに、[[Universal Wayland Session Manager#アプリケーションと自動起動|グラフィカルアプリケーションを systemd と統合する]]際にも役立ちます。}}&lt;br /&gt;
&lt;br /&gt;
ディスプレイマネージャーやシェルを使いたくなければ、Waylandコンポジタを[[systemd]] サービスを使って自動的に起動できます。{{ic|ExecStart}} 行を使いたいコンポジタに変えて下さい。以下は [[KDE Plasma]] の例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/wayland-compositor.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
After=graphical.target systemd-user-sessions.service modprobe@drm.service&lt;br /&gt;
Conflicts=getty@tty1.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=&#039;&#039;username&#039;&#039;&lt;br /&gt;
WorkingDirectory=~&lt;br /&gt;
&lt;br /&gt;
PAMName=login&lt;br /&gt;
TTYPath=/dev/tty1&lt;br /&gt;
UnsetEnvironment=TERM&lt;br /&gt;
&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
ExecStart=/usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=graphical.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== wlroots ベースのコンポジタで他のレンダラーを使用する ===&lt;br /&gt;
&lt;br /&gt;
wlroots ベースのコンポジタに対して {{ic|WLR_RENDERER}} [[環境変数]]を設定することで vulkan などといった他の [https://gitlab.freedesktop.org/wlroots/wlroots/-/tree/master/render wlroots レンダラー]を使用することができます。利用可能なレンダラーのリストは [https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/docs/env_vars.md wlroots のドキュメント]にあります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 色補正 ===&lt;br /&gt;
&lt;br /&gt;
[[バックライト#色補正]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 動作が遅い、表示がおかしい、クラッシュする ===&lt;br /&gt;
&lt;br /&gt;
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} や rc ファイルから該当箇所を削除してみてください。&lt;br /&gt;
&lt;br /&gt;
=== リモートディスプレイ ===&lt;br /&gt;
&lt;br /&gt;
* ([[sway]] で使用されている) {{Pkg|wlroots0.18}} と {{Pkg|wlroots0.19}} は、バージョン 0.10 より、{{Pkg|wayvnc}} による VNC バックエンドを提供しています。RDP バックエンドは削除されました [https://github.com/swaywm/wlroots/releases/tag/0.10.0]。&lt;br /&gt;
* {{pkg|mutter}} はコンパイル時にリモートデスクトップが有効化されています。詳細は [https://wiki.gnome.org/Projects/Mutter/RemoteDesktop] と {{Pkg|gnome-remote-desktop}} を見てください。&lt;br /&gt;
* {{pkg|krfb}} は {{pkg|kwin}} に VNC サーバを提供します。{{ic|krfb-virtualmonitor}} を使えば、他のデバイスを外部モニタとしてセットアップすることが可能です。&lt;br /&gt;
* 2013年に FreeRDP が Weston にマージされました。コンパイルフラグで有効化されています。{{Pkg|weston}} パッケージは、バージョン 6.0.0 より、FreeRDP が有効化されています。&lt;br /&gt;
* {{Pkg|waypipe}} は Wayland アプリケーションの透過プロキシです。[[SSH]] 上で動作するラッパーコマンドあり。&lt;br /&gt;
** 以下は、Plasma デスクトップでリモートの KDE kcalc を起動する例です:&lt;br /&gt;
::{{bc|1=$ waypipe ssh example.local env QT_QPA_PLATFORM=wayland QT_QPA_PLATFORMTHEME=KDE dbus-launch kcalc}}&lt;br /&gt;
&lt;br /&gt;
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力捕捉 ===&lt;br /&gt;
&lt;br /&gt;
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません (例: [https://tronche.com/gui/x/xlib/input/XGrabKeyboard.html キーボード]、[https://tronche.com/gui/x/xlib/input/XGrabPointer.html マウス])。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。&lt;br /&gt;
&lt;br /&gt;
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:&lt;br /&gt;
&lt;br /&gt;
* ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。&lt;br /&gt;
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。&lt;br /&gt;
&lt;br /&gt;
Wayland と Xwayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。Xorg アプリケーションの場合、Xwayland のサポートで十分であるため、アプリケーションやウィジェット・ツールキットに変更を加える必要はありません。&lt;br /&gt;
&lt;br /&gt;
これらの拡張はすでに {{pkg|wayland-protocols}} に含まれており、{{pkg|xorg-xwayland}} によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
関連する拡張:&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml Xwayland keyboard grabbing protocol]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]&lt;br /&gt;
&lt;br /&gt;
サポートしている Wayland コンポジタ:&lt;br /&gt;
&lt;br /&gt;
* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以降)。&lt;br /&gt;
* wlroots (Relative pointer protocols と Pointer constraints protocol に対応)&lt;br /&gt;
* Kwin&lt;br /&gt;
** [[KDE#Wayland で X11 のショートカットが衝突する]]&lt;br /&gt;
** [https://invent.kde.org/plasma/kwin/-/blob/master/src/wayland/keyboard_shortcuts_inhibit_v1_interface.cpp Keyboard shortcuts inhibit]&lt;br /&gt;
&lt;br /&gt;
サポートしているウィジェットツールキット:&lt;br /&gt;
&lt;br /&gt;
* GTK (リリース 3.22.18 以降)&lt;br /&gt;
&lt;br /&gt;
=== GTK テーマが動かない ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA モジュールを読み込まないようにする ===&lt;br /&gt;
&lt;br /&gt;
[[sway]] などの Wayland コンポジターを起動する前に {{ic|1=__EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json}} を [[環境変数]] として追加します。&lt;br /&gt;
&lt;br /&gt;
=== 拡大/サーフェススケーリング ===&lt;br /&gt;
&lt;br /&gt;
スクリーンの拡大は、まだ解決していません。[https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/145 wp-surface-scale プロトコルを提供する]プルリクエストが2022年半ばにマージされました。&lt;br /&gt;
&lt;br /&gt;
=== カーネル 6.11.2 以降、Wayland にラグ/スタッタリングが発生する (AMD) ===&lt;br /&gt;
&lt;br /&gt;
将来のカーネルリリースでこの問題が修正されるまで、回避策は、カーネルのコマンドラインに {{ic|1=amdgpu.dcdebugmask=0x400}} を追加することです。&lt;br /&gt;
&lt;br /&gt;
こちらを参照: https://community.frame.work/t/wayland-lag-stuttering-since-kernel-6-11-2/59422&lt;br /&gt;
&lt;br /&gt;
=== 仮想デスクトップの切り替え時にゲームやアプリケーションが止まる ===&lt;br /&gt;
&lt;br /&gt;
ワークスペースを変更した時や、{{ic|Alt+Tab}} を押した時に、ゲーム (あるいは他のグラフィカルアプリケーション) が止まる、変な状態になる、部分的に停止します。これには、VRR アプリケーションや VSync がオンのアプリケーションが含まれますが、それらに限りません。症状としては、ゲームのウィンドウがフォーカスされていないときにのみ、音声が部分的に途切れる、ゲームが進まなくなる、ping が高くなる、ネットワークが途切れるなどがあります。これは、VSync がオンのアプリケーションにのみ影響します。&lt;br /&gt;
&lt;br /&gt;
It is possible some games can work around this issue by changing to a window, but some do not. This is extremely annoying in more complex games which require heavy usage of web browsing, documentation and 3rd party tools or if the gameplay is interrupted for some reason.&lt;br /&gt;
&lt;br /&gt;
回避策としては、環境変数 {{ic|1=MESA_VK_WSI_PRESENT_MODE=immediate}} と {{ic|1=vk_xwayland_wait_ready=false}} の片方/両方を設定することです。しかし、これらの変数は VSync あるいは VRR の機能を破壊します。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland 公式リポジトリ]&lt;br /&gt;
* [[Fedora:How to debug Wayland problems]]&lt;br /&gt;
*  [https://wearewaylandnow.com/ We are Wayland now!] - &amp;quot;Are we Wayland yet?&amp;quot; の更新されたバージョン&lt;br /&gt;
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects]&lt;br /&gt;
* [[カーソルテーマ]]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion]&lt;br /&gt;
* [https://github.com/swaywm/sway/wiki/i3-Migration-Guide#common-x11-apps-used-on-i3-with-wayland-alternatives i3 Migration Guide - Common X11 apps used on i3 with Wayland alternatives]&lt;br /&gt;
* [https://wayland.app/protocols/ Wayland Explorer - A better way to read Wayland documentation]&lt;br /&gt;
* [https://askubuntu.com/questions/1393618/how-can-i-tell-if-an-application-is-using-xwayland How can I tell if an application is using XWayland]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Wayland|2026-02-17|865727}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Xorg&amp;diff=41338</id>
		<title>Xorg</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Xorg&amp;diff=41338"/>
		<updated>2026-02-15T05:34:27Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:X サーバー]]&lt;br /&gt;
[[de:X]]&lt;br /&gt;
[[es:Xorg]]&lt;br /&gt;
[[en:Xorg]]&lt;br /&gt;
[[fr:Xorg]]&lt;br /&gt;
[[hu:Xorg]]&lt;br /&gt;
[[lv:Xorg]]&lt;br /&gt;
[[pt:Xorg]]&lt;br /&gt;
[[ru:Xorg]]&lt;br /&gt;
[[uk:Xorg]]&lt;br /&gt;
[[zh-hans:Xorg]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|自動起動}}&lt;br /&gt;
{{Related|カーソルテーマ}}&lt;br /&gt;
{{Related|デスクトップ環境}}&lt;br /&gt;
{{Related|ディスプレイマネージャ}}&lt;br /&gt;
{{Related|フォント設定}}&lt;br /&gt;
{{Related|ウィンドウマネージャ}}&lt;br /&gt;
{{Related|XDMCP}}&lt;br /&gt;
{{Related|xinit}}&lt;br /&gt;
{{Related|xrandr}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:X.Org Server|X.Org Server]] (一般的には単に &#039;&#039;&#039;X&#039;&#039;&#039; と呼ばれる)は、[[Wikipedia:ja:X Window System|X Window System]] (&#039;&#039;&#039;X11&#039;&#039;&#039;) [[Wikipedia:Windowing system#Display server|ディスプレイサーバー]]の [[Wikipedia:ja:X.Org Foundation|X.Org Foundation]] 実装であり、Linux ユーザーの間で最も人気のあるディスプレイサーバーです。その普遍性により、GUI アプリケーションにとって Xorg は欠かせない存在となり、ほとんどのディストリビューションで広く採用されています。&lt;br /&gt;
&lt;br /&gt;
Xorg の代替かつ後継については [[Wayland]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Xorg は {{Pkg|xorg-server}} パッケージで[[インストール]]できます。&lt;br /&gt;
&lt;br /&gt;
また、設定作業などに必要なパッケージのいくつかが {{Grp|xorg-apps}} グループに入っており、それぞれ関連するセクションで説明しています。&lt;br /&gt;
&lt;br /&gt;
{{Grp|xorg}} グループも利用できます。このグループには Xorg サーバのパッケージや {{Grp|xorg-apps}} のパッケージ、フォントが含まれています。&lt;br /&gt;
&lt;br /&gt;
=== ドライバ ===&lt;br /&gt;
&lt;br /&gt;
使用中のハードウェアを調べ、適切なドライバを見つけるには、[[画像処理装置#インストール]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
ハードウェア固有の DDX はレガシーとみなされています。[[カーネルモード設定]]を使用し、最近のハードウェアでうまく動作する汎用の {{man|4|modesetting}} DDX ドライバが {{Pkg|xorg-server}} に含まれています。modesetting DDX ドライバは 2D アクセラレーションに [https://www.freedesktop.org/wiki/Software/Glamor/ Glamor][https://gitlab.freedesktop.org/xorg/xserver/-/tree/server-21.1-branch/glamor] を使用し、これは OpenGL を必要とします。&lt;br /&gt;
&lt;br /&gt;
他の DDX ドライバをインストールしたい場合、Xorg はインストール済みの DDX ドライバを自動的に検索してくれることを留意しておいてください:&lt;br /&gt;
&lt;br /&gt;
* 使用しているハードウェアに合うドライバー（[[画像処理装置#インストール]] に記載）がインストールされていない場合、Xorg はまず最初に &#039;&#039;fbdev&#039;&#039; ({{pkg|xf86-video-fbdev}}) を検索します。&lt;br /&gt;
* &#039;&#039;fbdev&#039;&#039; が存在しなかった場合、次に汎用ドライバーである &#039;&#039;vesa&#039;&#039; ({{pkg|xf86-video-vesa}}) を検索します。&#039;&#039;vesa&#039;&#039; はほとんどのチップセットで動作しますが 2D や 3D のアクセラレーションは含まれていません。&lt;br /&gt;
* &#039;&#039;vesa&#039;&#039; も見つからない場合、Xorg は {{man|4|modesetting}} DDX ドライバにフォールバックします。&lt;br /&gt;
&lt;br /&gt;
== 起動 ==&lt;br /&gt;
&lt;br /&gt;
{{man|1|Xorg}} コマンドを直接実行することは通常ありません。代わりに、[[ディスプレイマネージャ]] か [[xinit]] を用いて X サーバを起動します。&lt;br /&gt;
&lt;br /&gt;
{{Tip| たいてい、X の機能を補完するために [[ウィンドウマネージャ]] や [[デスクトップ環境]] をインストールすることになるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
{{Note|Arch はデフォルトの設定ファイルを {{ic|/usr/share/X11/xorg.conf.d}} に配置しており、ほとんどの場合、追加の設定は必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
Xorg は初期設定に {{ic|xorg.conf}} という名前の設定ファイルと {{ic|.conf}} が末尾につくファイルを使います: これらのファイルが検索されるフォルダの完全なリストは {{man|5|xorg.conf}} で見られます(利用可能なすべてのオプションの詳細な説明付き)。&lt;br /&gt;
&lt;br /&gt;
=== .conf ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/X11/xorg.conf.d/}} ディレクトリにはホスト固有の設定を保存します。あなたは自由に設定ファイルをそのディレクトリに追加することができますが、ファイル名には {{ic|.conf}} 拡張子がなければなりません。さらに、これらのファイルは ASCII 順で読み込まれます。これらのファイル名は {{ic|XX-}} (2桁の整数とハイフン)で始めるのが慣例です(例えば 10 は 20 よりも早く読み込まれます)。これらのファイルは X サーバーの起動時にパースされオリジナルの {{ic|xorg.conf}} 設定ファイルの一部として扱われます。設定が競合した場合は、一番最後のファイルが処理されることに注意してください。これにより、最も一般的な設定ファイルは名前順で一番最初にあるべきです。{{ic|xorg.conf}} ファイル内の設定エントリは一番最後に処理されます。&lt;br /&gt;
&lt;br /&gt;
設定オプションの例は [[Fedora:Input device configuration#xorg.conf.d]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== xorg.conf を使う ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/X11/xorg.conf}} や {{ic|/etc/xorg.conf}} で Xorg を設定することもできます。{{ic|xorg.conf}} のスケルトンを生成するには&lt;br /&gt;
&lt;br /&gt;
 # Xorg :0 -configure&lt;br /&gt;
&lt;br /&gt;
上のコマンドで {{ic|/root/}} に {{ic|xorg.conf.new}} ファイルが作られるはずです。これを {{ic|/etc/X11/xorg.conf}} にコピーして上書きすることができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|既に X サーバーを動作させている場合は、別のディスプレイを使って下さい、例: {{ic|Xorg :2 -configure}}。}}&lt;br /&gt;
&lt;br /&gt;
もしくは、あなたのビデオカードドライバに自動で Xorg を設定するツールが含まれているかもしれません。詳しくは、あなたの使っているビデオカードの記事 ([[NVIDIA]]) を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|設定ファイルは大文字・小文字を区別しません、また “_” は無視されます。(Option など) 設定ファイル内のほとんどの文字列も大文字・小文字・空白・“_” を区別しません。}}&lt;br /&gt;
&lt;br /&gt;
== 入力デバイス ==&lt;br /&gt;
&lt;br /&gt;
入力デバイスのドライバーについては、X サーバーはデフォルトで libinput ドライバー ({{Pkg|xf86-input-libinput}}) を使用しますが、{{Pkg|xf86-input-evdev}} と関連するドライバーも使用できます [https://www.archlinux.jp/news/xorg-server-1191-is-now-in-extra/]。&lt;br /&gt;
&lt;br /&gt;
[[Udev]] があなたのハードウェアを検知し、{{ic|/usr/share/X11/xorg.conf.d/}} ディレクトリに入っているデフォルト設定ファイル {{ic|10-evdev.conf}} と {{ic|40-libinput.conf}} によって、evdev と [[libinput]] がほとんど全てのデバイスのホットプラグ・インプットドライバーとして動作します。[[Udev]] は {{Pkg|systemd}} によって提供されています。&lt;br /&gt;
&lt;br /&gt;
X サーバーの起動後、ログファイルを確認することで、どちらのドライバーがデバイスによってホットプラグされているか確認できます (ログファイルの名前は違っているかもしれません):&lt;br /&gt;
 $ grep -e &amp;quot;Using input driver &amp;quot; Xorg.0.log&lt;br /&gt;
&lt;br /&gt;
evdev や libinput があなたの持っているデバイスをサポートしていないときは、必要なドライバーを {{Grp|xorg-drivers}} グループからインストールしてください。&lt;br /&gt;
&lt;br /&gt;
ホットプラグの動作については[[#設定]]を見てください。&lt;br /&gt;
&lt;br /&gt;
より詳細な手順については、[[libinput]] の記事や以下に述べる記事、より多くの例は [[Fedora:Input device configuration]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== 入力の識別 ===&lt;br /&gt;
&lt;br /&gt;
[[キーボード入力#Xorg でキーコードを確認する]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== マウスのアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
[[マウスのアクセラレーション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== 特殊なマウスボタン ===&lt;br /&gt;
&lt;br /&gt;
[[全てのマウスボタンを動作させる]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド ===&lt;br /&gt;
&lt;br /&gt;
[[libinput]] または [[Synaptics タッチパッド]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== タッチスクリーン ===&lt;br /&gt;
&lt;br /&gt;
[[タッチスクリーン]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== キーボードの設定 ===&lt;br /&gt;
&lt;br /&gt;
[[Xorg でのキーボード設定]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== モニターの設定 ==&lt;br /&gt;
&lt;br /&gt;
=== 手動設定 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* Xorg の新しいバージョンは自動設定されます。なので、手動設定は必要ないはずです。&lt;br /&gt;
* Xorg がモニタを検出できない場合や自動設定をしたくない場合、設定ファイルを使用することができます。これが必要になる一般的なケースとしては、モニタ無しで起動し、Xorg が自動的に起動するヘッドレスなシステムに[[仮想端末に自動ログイン|仮想コンソール]]や[[ディスプレイマネージャ]]を使用して[[xinit#ログイン時に X を自動起動|ログイン]]する場合です。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ヘッドレスな環境においては、{{pkg|xf86-video-dummy}} ドライバが必須です; それを[[インストール]]し、例えば以下のような設定ファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-headless.conf|&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;dummy_monitor&amp;quot;&lt;br /&gt;
        HorizSync 28.0-80.0&lt;br /&gt;
        VertRefresh 48.0-75.0&lt;br /&gt;
        Modeline &amp;quot;1920x1080&amp;quot; 172.80 1920 2040 2248 2576 1080 1081 1084 1118&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;dummy_card&amp;quot;&lt;br /&gt;
        VideoRam 256000&lt;br /&gt;
        Driver &amp;quot;dummy&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;dummy_screen&amp;quot;&lt;br /&gt;
        Device &amp;quot;dummy_card&amp;quot;&lt;br /&gt;
        Monitor &amp;quot;dummy_monitor&amp;quot;&lt;br /&gt;
        SubSection &amp;quot;Display&amp;quot;&lt;br /&gt;
        EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マルチモニター ===&lt;br /&gt;
&lt;br /&gt;
一般的な情報は[[マルチディスプレイ]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== 複数のグラフィックカード ====&lt;br /&gt;
&lt;br /&gt;
利用するドライバを正しく定めてグラフィックカードのバス ID を(10進数表記で)入力する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier             &amp;quot;Screen0&amp;quot;&lt;br /&gt;
    Driver                 &amp;quot;intel&amp;quot;&lt;br /&gt;
    BusID                  &amp;quot;PCI:0:2:0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier             &amp;quot;Screen1&amp;quot;&lt;br /&gt;
    Driver                 &amp;quot;nouveau&amp;quot;&lt;br /&gt;
    BusID                  &amp;quot;PCI:1:0:0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
(16進数の) バス ID を取得するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lspci -d ::03xx|&lt;br /&gt;
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)&lt;br /&gt;
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この場合、バス ID は {{ic|0:2:0}} と {{ic|1:0:0}} となります。&lt;br /&gt;
&lt;br /&gt;
=== 画面サイズと DPI ===&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.freedesktop.org/xorg/xserver/-/commit/fff00df94d7ebd18a8e24537ec96073717375a3f 2009-01-30] 以降、Xorg はデフォルトで常に DPI を 96 に設定します。適切な DPI の自動検出を行うためにバージョン 21.1 で変更が加えられましたが、後に[https://gitlab.freedesktop.org/xorg/xserver/-/commit/35af1299e73483eaf93d913a960e1d1738bc7de6 元に戻されました]。&lt;br /&gt;
&lt;br /&gt;
X サーバの DPI は {{ic|-dpi}} コマンドラインオプションで設定できます。&lt;br /&gt;
&lt;br /&gt;
細かなディーテールが要求される場面(フォントレンダリングなど)では、正しい DPI を設定すると役に立つことがあります。以前は、メーカーは 96 DPI を標準として作成していました (10.3&amp;quot; モニターなら 800x600、13.2&amp;quot; モニターなら 1024x768)。最近では、画面の DPI は様々であり、縦横で等しくないこともあります。例えば、19&amp;quot; ワイドスクリーン LCD が 1440x900 なら DPI が 89x87 になります。&lt;br /&gt;
&lt;br /&gt;
ディスプレイのサイズと DPI が正しく検出・計算されているか確認するには:&lt;br /&gt;
&lt;br /&gt;
 $ xdpyinfo | grep -B2 resolution&lt;br /&gt;
&lt;br /&gt;
寸法がディスプレイサイズと一致しているかチェックしてください。&lt;br /&gt;
&lt;br /&gt;
スクリーンの物理的な大きさがわかっているときは、Xorg の設定ファイルに入力することで正しい DPI が計算されます(実際の xrandr の出力に合わせて Identifier を調整してください):&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier             &amp;quot;DVI-D-0&amp;quot;&lt;br /&gt;
    DisplaySize             286 179    # ミリメートル単位&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
フルの xorg.conf を作成&#039;&#039;&#039;しないで&#039;&#039;&#039;モニタの仕様の入力だけを行いたい場合は新しい設定ファイルを作成してください。例えば ({{ic|/etc/X11/xorg.conf.d/90-monitor.conf}}):&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier             &amp;quot;&amp;lt;default monitor&amp;gt;&amp;quot;&lt;br /&gt;
    DisplaySize            286 179    # In millimeters&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|プロプライエタリな NVIDIA ドライバを使用している場合、上記の変更を反映させるために、{{ic|Device}} か {{ic|Screen}} セクションに {{ic|Option &amp;quot;UseEdidDpi&amp;quot; &amp;quot;FALSE&amp;quot;}} を追加する必要がある場合があります。}}&lt;br /&gt;
&lt;br /&gt;
スクリーンの横と縦の物理的な長さがわからないときは（最近は対角線の長さ（インチ数）しかわからないことも多い）、モニターの最大解像度（またはアスペクト比）と対角線の長さを使って縦と横の長さを計算できます。ピタゴラスの定理を使って最大解像度1280x800（もしくはアスペクト比16:10）、13.3インチのスクリーンの場合:&lt;br /&gt;
&lt;br /&gt;
 $ echo &#039;scale=5;sqrt(1280^2+800^2)&#039; | bc  # 1509.43698&lt;br /&gt;
&lt;br /&gt;
このコマンドでピクセルの対角線の長さがわかり、この値を使うことで物理的な縦と横の長さを知ることができます (そしてそれをミリメートルに変換できます):&lt;br /&gt;
&lt;br /&gt;
 $ echo &#039;scale=5;(13.3/1509)*1280*25.4&#039; | bc  # 286.43072&lt;br /&gt;
 $ echo &#039;scale=5;(13.3/1509)*800*25.4&#039;  | bc  # 179.01920&lt;br /&gt;
&lt;br /&gt;
{{Note|上記の計算はピクセルアスペクト比が1:1のモニターでは上手く行きますが、モニターによってはアスペクト比が潰されることがあります (例: 16:10 のアスペクト解像度が 16:9 のモニターに適用される)。その場合、画面の大きさを手動で計測する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
==== 手動で DPI を設定する ====&lt;br /&gt;
&lt;br /&gt;
{{Note|DPI は自由に設定することができ、Qt や GTK を使用しているアプリケーションはそれにあわせてスケールしますが、スケールによる画像の乱れがビットマップを使用する GUI に現れないように DPI は &#039;&#039;&#039;96&#039;&#039;&#039; (100%、スケーリング無し)、&#039;&#039;&#039;120&#039;&#039;&#039; (25% 増分)、&#039;&#039;&#039;144&#039;&#039;&#039; (50% 増分)、&#039;&#039;&#039;168&#039;&#039;&#039; (75% 増分)、&#039;&#039;&#039;192&#039;&#039;&#039; (100% 増分) などに設定するのを推奨します。また、アイコンの最低 DPI は基本的に 96 になっているので、96 DPI 未満に設定しても GUI のグラフィックのサイズは小さくなりません。}}&lt;br /&gt;
&lt;br /&gt;
RandR に対応しているドライバ (例えばオープンソースの ATI ドライバ) なら、次のコマンドで設定できます:&lt;br /&gt;
&lt;br /&gt;
 $ xrandr --dpi 144&lt;br /&gt;
&lt;br /&gt;
{{Note|変更はすぐにはアプリケーションに適用されません。再起動する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
設定を永続的にするには [[自動起動#Xorg のスタートアップ]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===== プロプライエタリの NVIDIA ドライバー =====&lt;br /&gt;
&lt;br /&gt;
{{ic|Device}} か {{ic|Screen}} セクション下にオプションを追加することで DPI を手動で設定できます:&lt;br /&gt;
&lt;br /&gt;
 Option              &amp;quot;DPI&amp;quot; &amp;quot;96 x 96&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Manual DPI Setting Caveat =====&lt;br /&gt;
&lt;br /&gt;
GTK はしばしば、オプションの [[X resource]] {{ic|Xft.dpi}} を通して Xorg サーバの DIP を上書きします。これがあなたの環境で起こっているかどうかを確認するには:&lt;br /&gt;
&lt;br /&gt;
 $ xrdb -query | grep dpi&lt;br /&gt;
&lt;br /&gt;
GTK ライブラリのバージョン 3.16 以降、この変数が明示的に設定されていない場合、GTK はこの変数の値を 96 に設定します。GTK アプリがサーバの DPI に従うようにするには、{{ic|Xft.dpi}} の値をサーバのもとと同じに明示的に設定する必要があります。{{ic|Xft.dpi}} リソースは、一部のデスクトップ環境の個人設定で DIP を特定の値に強制的に設定する手段です。[[KDE]] と [[TDE]] がその例です。&lt;br /&gt;
&lt;br /&gt;
=== Display Power Management ===&lt;br /&gt;
&lt;br /&gt;
[[DPMS]] はコンピュータが使われていない時にモニターを省電力モードに移行させる技術です。一定時間後にモニタを自動で待機状態にすることができます。&lt;br /&gt;
&lt;br /&gt;
== コンポジット ==&lt;br /&gt;
&lt;br /&gt;
X の Composite 拡張によってウィンドウ階層のサブツリー全体がオフスクリーンバッファにレンダリングされます。アプリケーションはバッファの内容を取得できるようになります。オフスクリーンバッファは親のウィンドウに自動的にマージされるか、コンポジットマネージャと呼ばれる外部のプログラムによってマージされます。詳しくは次のページを見て下さい: [[Wikipedia:ja:コンポジット型ウィンドウマネージャ]]。&lt;br /&gt;
&lt;br /&gt;
ウィンドウマネージャによっては、コンポジットマネージャをインストールしなくてもコンポジットが行われます (例: [[Compiz]]、[[Enlightenment]]、[[KWin]]、{{Pkg|marco}}、{{Pkg|metacity}}、{{Pkg|muffin}}、{{Pkg|mutter}}、[[Xfwm]])。そうでないウィンドウマネージャの場合、スタンドアロンのコンポジットマネージャを使用します。&lt;br /&gt;
&lt;br /&gt;
=== コンポジットマネージャ一覧 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Picom]]|影、高度なぼかし、フェード機能を搭載した軽量なコンポジタ。Compton からフォークされました。|https://github.com/yshui/picom|{{Pkg|picom}}}}&lt;br /&gt;
* {{App|[[Xcompmgr]]|X.org 向けのウィンドウ効果ができるコンポジットマネージャ。|https://gitlab.freedesktop.org/xorg/app/xcompmgr/|{{Pkg|xcompmgr}}}}&lt;br /&gt;
* {{App|fastcompmgr|高速さに重点をおいた X11 用の軽量コンポジタ。|https://github.com/tycho-kirchner/fastcompmgr|{{AUR|fastcompmgr}}}}&lt;br /&gt;
* {{App|[[Gamescope]]|Valve のマイクロコンポジタ。FSR アップスケーリングなどのゲーム志向の機能が搭載されています。steamos-compositor からフォークされました。|https://github.com/ValveSoftware/gamescope|{{Pkg|gamescope}}}}&lt;br /&gt;
* {{App|steamos-compositor-plus|Valve のコンポジタ。いくつかの調整と修正が加えられています。|https://github.com/chimeraos/steamos-compositor-plus|{{AUR|steamos-compositor-plus}}}}&lt;br /&gt;
&lt;br /&gt;
==ヒントとテクニック==&lt;br /&gt;
&lt;br /&gt;
=== 自動化 ===&lt;br /&gt;
&lt;br /&gt;
このセクションでは、キーボード/マウスの入力やウィンドウ操作(移動、リサイズ、レイズなど)の自動化のためのユーティリティを挙げています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ツール !! パッケージ !! マニュアル !! [[Keysym]]&amp;lt;br&amp;gt;インプット !! ウィンドウ&amp;lt;br&amp;gt;操作 !! 備考&lt;br /&gt;
|-&lt;br /&gt;
! xautomation&lt;br /&gt;
| {{Pkg|xautomation}} || {{man|1|xte}} || {{Yes}} || {{No}} || スクリーンスクレイピングツールも同梱。{{ic|F13}} などのシミュレート不可。&lt;br /&gt;
|-&lt;br /&gt;
! xdo&lt;br /&gt;
| {{Pkg|xdo}} || {{man|1|xdo}} || {{No}} || {{Yes}} || ウィンドウの基本的なアクションを行う小さな X ユーティリティ。&lt;br /&gt;
|-&lt;br /&gt;
! xdotool&lt;br /&gt;
| {{Pkg|xdotool}} || {{man|1|xdotool}} || {{Yes}} || {{Yes}} || [https://github.com/jordansissel/xdotool/issues バグが多く]、活発に開発されていない。例: CLI パースが壊れている[https://github.com/jordansissel/xdotool/issues/14#issuecomment-327968132][https://github.com/jordansissel/xdotool/issues/71]&lt;br /&gt;
|-&lt;br /&gt;
! xvkbd&lt;br /&gt;
| {{AUR|xvkbd}} || {{man|1|xvkbd|url=http://t-sato.in.coocan.jp/xvkbd/#option}} || {{Yes}} || {{No}} || Xorg のための仮想キーボード。文字を送るための {{ic|-text}} オプションもあり。&lt;br /&gt;
|-&lt;br /&gt;
! AutoKey&lt;br /&gt;
| {{AUR|autokey-qt}} {{AUR|autokey-gtk}} || [https://github.com/autokey/autokey#documentation ドキュメント] || {{Yes}} || {{Yes}} || 高レベルで強力なマクロとスクリプトユーティリティ。Qt と Gtk の両方のフロントエンドあり。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[クリップボード#ツール]] と [https://venam.nixers.net/blog/unix/2019/01/07/win-automation.html X 自動化ツールの概要] も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ネストした X セッション　===&lt;br /&gt;
他のデスクトップ環境に入れ子になったセッションを起動するには:&lt;br /&gt;
&lt;br /&gt;
 $ /usr/bin/Xnest :1 -geometry 1024x768+0+0 -ac -name Windowmaker &amp;amp; wmaker -display :1&lt;br /&gt;
&lt;br /&gt;
上記で現在の X セッションの中に 1024x768 のウィンドウの Window Maker セッションが起動します。&lt;br /&gt;
&lt;br /&gt;
このためには {{Pkg|xorg-server-xnest}} パッケージをインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
X セッションをネストする、よりモダンな方法は [[Xephyr]] です。&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウマネージャ無しでアプリケーションを起動する ===&lt;br /&gt;
&lt;br /&gt;
[[xinit#ウィンドウマネージャを使わずにアプリケーションを起動]] を見てください。&lt;br /&gt;
&lt;br /&gt;
===リモートで GUI プログラムを実行する===&lt;br /&gt;
&lt;br /&gt;
次の記事を参照してください: [[OpenSSH#X11 フォワーディング]]&lt;br /&gt;
&lt;br /&gt;
===必要に応じて入力ソースを有効化・無効化===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;xinput&#039;&#039; を使えば一時的に入力ソースを有効化・無効化することができるようになります。ThinkPad のように複数のマウスがあって、どちらか片方だけ使いたい時などに役立ちます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xorg-xinput}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
無効化したいデバイスの ID を調べて下さい:&lt;br /&gt;
&lt;br /&gt;
 $ xinput&lt;br /&gt;
&lt;br /&gt;
例えば Lenovo ThinkPad T500 では、出力は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ xinput|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
⎡ Virtual core pointer                          id=2    [master pointer  (3)]&lt;br /&gt;
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]&lt;br /&gt;
⎜   ↳ TPPS/2 IBM TrackPoint                     id=11   [slave  pointer  (2)]&lt;br /&gt;
⎜   ↳ SynPS/2 Synaptics TouchPad                id=10   [slave  pointer  (2)]&lt;br /&gt;
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]&lt;br /&gt;
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]&lt;br /&gt;
    ↳ Power Button                              id=6    [slave  keyboard (3)]&lt;br /&gt;
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]&lt;br /&gt;
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]&lt;br /&gt;
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]&lt;br /&gt;
    ↳ ThinkPad Extra Buttons                    id=12   [slave  keyboard (3)]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|xinput --disable &#039;&#039;device_id&#039;&#039;}} (&#039;&#039;device_id&#039;&#039; は無効化したいデバイスの ID) でデバイスを無効にします。次の例では　Synaptics Touchpad の ID 10 を無効にします:&lt;br /&gt;
&lt;br /&gt;
 $ xinput --disable 10&lt;br /&gt;
&lt;br /&gt;
デバイスを有効にするには、次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ xinput --enable 10&lt;br /&gt;
&lt;br /&gt;
もしくはデバイス名を使うこともできます。タッチパッドを無効化するコマンドは:&lt;br /&gt;
&lt;br /&gt;
 $ xinput --disable &amp;quot;SynPS/2 Synaptics TouchPad&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 入力ソースを永続的に無効化する ===&lt;br /&gt;
&lt;br /&gt;
以下の設定スニペットを使用することで、特定の入力ソースを無効化できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-disable-&#039;&#039;device&#039;&#039;.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
       Identifier   &amp;quot;disable-&#039;&#039;device&#039;&#039;&amp;quot;&lt;br /&gt;
       Driver       &amp;quot;&#039;&#039;driver_name&#039;&#039;&amp;quot;&lt;br /&gt;
       MatchProduct &amp;quot;&#039;&#039;device_name&#039;&#039;&amp;quot;&lt;br /&gt;
       Option       &amp;quot;Ignore&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;device&#039;&#039;}} は任意の名前です。{{ic|&#039;&#039;driver_name&#039;&#039;}} は入力ドライバの名前です (例: {{ic|libinput}})。{{ic|&#039;&#039;device_name&#039;&#039;}} は、適切なデバイスとマッチするように使用されるものです。正しいデバイスを指定する他の方法 ([[libinput]] の {{ic|MatchIsTouchscreen}} など) は、使用している入力ドライバのドキュメントを調べてください。この例では libinput を使用していますが、これはドライバに依存しない方法であり、対象のデバイスがドライバに伝達されないようにします。&lt;br /&gt;
&lt;br /&gt;
=== ホットキーでアプリケーションを終了 ===&lt;br /&gt;
&lt;br /&gt;
ホットキーでスクリプトを実行:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 windowFocus=$(xdotool getwindowfocus)&lt;br /&gt;
 pid=$(xprop -id &amp;quot;$windowFocus&amp;quot; | grep PID)&lt;br /&gt;
 kill -9 &amp;quot;$pid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
依存パッケージ: {{Pkg|xorg-xprop}}, {{Pkg|xdotool}}&lt;br /&gt;
&lt;br /&gt;
[[#視覚的にアプリケーションを kill する]] も参照。&lt;br /&gt;
&lt;br /&gt;
=== TTY へのアクセスをブロック ===&lt;br /&gt;
&lt;br /&gt;
X から tty へのアクセスをブロックしたい場合、以下を {{ic|xorg.conf}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Section &amp;quot;ServerFlags&amp;quot;&lt;br /&gt;
    Option &amp;quot;DontVTSwitch&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これは、信頼できないユーザによる、システムのコマンドラインへのアクセスを制限するのに役立ちます。&lt;br /&gt;
&lt;br /&gt;
=== ユーザーが X を終了できないようにする ===&lt;br /&gt;
&lt;br /&gt;
X が動作しているときにユーザーから kill されないようにしたい場合、以下を [[#設定|xorg.conf]] に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Section &amp;quot;ServerFlags&amp;quot;&lt;br /&gt;
    Option &amp;quot;DontZap&amp;quot;      &amp;quot;True&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|Ctrl+Alt+Backspace}} ショートカットは、直接 X サーバの kill をトリガーするものではなく、キーマップの {{ic|Terminate_Server}} アクションをトリガーします。通常、これはデフォルトで設定されていません。[[Xorg でのキーボード設定#Ctrl+Alt+Backspace で Xorg を終了する]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
=== 視覚的にアプリケーションを kill する ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが誤動作したり固まったりした場合、ターミナルから {{ic|kill}} や {{ic|killall}} を使うためにプロセス ID や名前を見つける代わりに、{{Pkg|xorg-xkill}} を使えばアプリケーションをクリックして X サーバとの接続を閉じることができます。多くの既存のアプリケーションは、X サーバとの接続が閉じるとアボートしますが、一部のアプリケーションは実行し続ける可能性があります。&lt;br /&gt;
&lt;br /&gt;
=== Rootless Xorg ===&lt;br /&gt;
&lt;br /&gt;
Xorg は root の代わりに標準的なユーザー権限で実行することができます (いわゆる &amp;quot;rootless&amp;quot; Xorg)。これは  root で実行するよりもセキュリティ上重要な改善です。一部の人気な[[ディスプレイマネージャ]] (例:  [https://github.com/canonical/lightdm/issues/18 LightDM] や [[XDM]]) はルートレス Xorg をサポートしていないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
Xorg がどのユーザーとして実行されているかは {{ic|1=ps -o user= -C Xorg}} で確認できます。&lt;br /&gt;
&lt;br /&gt;
{{man|1|Xorg.wrap}}, {{man|8|systemd-logind}}, [[Systemd/ユーザー#systemd のユーザーサービスとしての Xorg|systemd のユーザーサービスとしての Xorg]], [[Fedora:Changes/XorgWithoutRootRights]] , {{Bug|41257}} も参照して下さい。&lt;br /&gt;
&lt;br /&gt;
==== xinitrc の使用 ====&lt;br /&gt;
&lt;br /&gt;
[[xinitrc]] を使ってルートレス Xorg を設定するには:&lt;br /&gt;
&lt;br /&gt;
* {{ic|startx}} を直接実行し、{{ic|exec startx}} を使用しないでください。&lt;br /&gt;
* [[Xinit#xserverrc|.xserverrc]] を介して {{ic|$XDG_VTNR}} で logind から渡されたパーミッションの仮想コンソールを Xorg が使用することを確認してください。&lt;br /&gt;
* 特定のプロプライエタリなディスプレイドライバを使用している場合、[[Kernel Mode Setting|カーネルモードセッティング]]の[https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/hw/xfree86/xorg-wrapper.c#L222 自動検出]は失敗します。その場合は、{{ic|/etc/X11/Xwrapper.config}} で {{ic|1=needs_root_rights = no}} を設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{ic|exec }} 無しで {{ic|startx}} を直接実行すろと、xorg のクラッシュ時にシェルが開いたままになります。一部の画面ロックプログラムは xorg 内で実行されるため、(xorg クラッシュ時に) 実行中のユーザーへの完全なアクセスを得ることができてしまいます。&lt;br /&gt;
&lt;br /&gt;
==== GDM の使用 ====&lt;br /&gt;
&lt;br /&gt;
[[カーネルモード設定]]を使用する場合、[[GDM]] はデフォルトで root 権限なしに Xorg を実行します。&lt;br /&gt;
&lt;br /&gt;
==== セッションログのリダイレクト ====&lt;br /&gt;
&lt;br /&gt;
Xorg をルートレスモードで実行すると、Xorg のログは、{{ic|~/.local/share/xorg/Xorg.log}} に保存されます。しかし、Xorg セッションからの stdout と stderr の出力はこのログにリダイレクトされません。リダイレクトを再度有効にするには、Xorg を {{ic|-keeptty}} フラグで起動し、stdout と stderr の出力をファイルにリダイレクトします。&lt;br /&gt;
&lt;br /&gt;
 startx -- -keeptty &amp;gt;~/.xorg.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
もしくは、{{ic|/etc/X11/xinit/xserverrc}} を {{ic|~/.xserverrc}} にコピーして、{{ic|-keeptty}} を追加します。[https://bbs.archlinux.org/viewtopic.php?pid=1446402#p1446402] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== root として Xorg を実行 ===&lt;br /&gt;
&lt;br /&gt;
上記の通り、rootless Xorg がデフォルトであるような状況が存在します。rootless Xorg がデフォルトである環境で Xorg を root として実行する必要がある場合、{{man|1|Xorg.wrap}} を設定して root を要求するようにできます。&lt;br /&gt;
&lt;br /&gt;
{{Warning| Xorg を root として実行するとセキュリティ上の問題を引き起こします。さらなる議論については [[#Rootless Xorg]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/X11/Xwrapper.config|2=&lt;br /&gt;
needs_root_rights = yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Wayback ===&lt;br /&gt;
&lt;br /&gt;
Wayback は、Wayland コンポーネントを使用しつつ完全な X11 デスクトップ環境 (及びウィンドウマネージャ) を実行できるようにする X11 互換レイヤです。AUR から {{AUR|wayback-x11}} パッケージでインストールできます。&lt;br /&gt;
&lt;br /&gt;
=== 12to11 ===&lt;br /&gt;
&lt;br /&gt;
12to11 は、Wayland にしか対応していないアプリケーションを X11 でシームレスに実行できるようにします。AUR から {{AUR|12to11-git}} パッケージでインストールできます。最高のパフォーマンスを得るには EGL レンダラーで実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ RENDERER=egl 12to11&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 一般 ===&lt;br /&gt;
&lt;br /&gt;
何か問題が発生したらログを確認してください。ログは {{ic|/var/log/}} または (v1.16 からデフォルトのルートレス X の場合) {{ic|~/.local/share/xorg/}} の中に保存されています。[[GDM]] を使っている場合は [[systemd/ジャーナル|systemd のジャーナル]]をチェックしてください [https://bbs.archlinux.org/viewtopic.php?id=184639]。&lt;br /&gt;
&lt;br /&gt;
ログファイルの名前は {{ic|Xorg.n.log}} という形式を取ります: {{ic|n}} はディスプレイ番号です。デフォルト設定のシングルユーザーマシンの場合は {{ic|Xorg.0.log}} を確認すれば良いですが、他の構成の場合は見るべきログは違うかもしれません。X サーバーのセッションが起動したときのタイムスタンプと X が起動するのに使われたコンソールを確認することで適切なログファイルを見分けられます。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ grep -e Log -e tty Xorg.0.log|2=&lt;br /&gt;
[    40.623] (==) Log file: &amp;quot;/home/archuser/.local/share/xorg/Xorg.0.log&amp;quot;, Time: Thu Aug 28 12:36:44 2014&lt;br /&gt;
[    40.704] (--) controlling tty is VT number 1, auto-enabling KeepTty&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|読みやすいタイムスタンプをログに追加するには、{{man|1|tail}} の出力を {{man|1|ts}} ({{Pkg|moreutils}} パッケージに含まれています) にパイプで繋ぐことができます。ただし、コマンドが実行されている時にログに追加された行にしか正しいタイムスタンプは追加されません。例:&lt;br /&gt;
 $ tail -f ~/.local/share/xorg/Xorg.0.log {{!}} ts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* ログファイルの中に {{ic|(EE)}} で始まる行が存在しないか確認してください。{{ic|(EE)}} はエラーです。また、{{ic|(WW)}} は警告です。&lt;br /&gt;
* {{ic|$HOME}} に存在する {{ic|.xinitrc}} ファイルが空の場合、X を起動するにはファイルを削除するか正しく編集する必要があります。空の場合、X は画面を表示せず {{ic|Xorg.0.log}} にエラーも出力されません。ファイルを削除するとデフォルトの X 環境が起動します。&lt;br /&gt;
* 画面がブラックアウト場合、異なる仮想コンソールに切り替えて(例: {{ic|Ctrl+Alt+F6}})、スクリーンの出力無しで root としてログインできます。そうするには、{{ic|root}} と入力し(その後 {{ic|Enter}} を押して)、root のパスワードを入力してください(その後、再び {{ic|Enter}} を押してください)。&lt;br /&gt;
&lt;br /&gt;
: 次のコマンドで X サーバーを終了させることが可能です:&lt;br /&gt;
: {{bc|# pkill -x X}}&lt;br /&gt;
: 上記のコマンドが機能しない場合、再起動してください:&lt;br /&gt;
: {{bc|# reboot}}&lt;br /&gt;
&lt;br /&gt;
* キーボード・マウス・タッチパッドなどに問題がおこる場合は [[:カテゴリ:入力デバイス]] 内のそれぞれのページを見て下さい。&lt;br /&gt;
* [[AMDGPU]]、[[Intel Graphics]]、[[NVIDIA]] の記事に問題の解決方法が載ってないか調べてください。&lt;br /&gt;
&lt;br /&gt;
=== 一部またはすべてのユーザで黒画面、No protocol specified、Resource temporarily unavailable ===&lt;br /&gt;
&lt;br /&gt;
X は設定ファイルと一時ファイルをユーザーのホームディレクトリに作成します。あなたのホームディレクトリが入っているパーティションに十分な空き容量があることを確認してください。悪いことに、ディスク容量が不足していることを X サーバーは何も知らせません。&lt;br /&gt;
&lt;br /&gt;
=== Matrox カードで DRI が停止する ===&lt;br /&gt;
&lt;br /&gt;
Matrox カードを使っていて Xorg をアップグレードすると DRI が停止する場合、次の行を {{ic|xorg.conf}} のビデオカードの Device セクションに追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;OldDmaInit&amp;quot; &amp;quot;On&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== フレームバッファモード問題 ===&lt;br /&gt;
&lt;br /&gt;
以下のログメッセージを残して X の起動が失敗する場合:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
(WW) Falling back to old probe method for fbdev&lt;br /&gt;
(II) Loading sub module &amp;quot;fbdevhw&amp;quot;&lt;br /&gt;
(II) LoadModule: &amp;quot;fbdevhw&amp;quot;&lt;br /&gt;
(II) Loading /usr/lib/xorg/modules/linux//libfbdevhw.so&lt;br /&gt;
(II) Module fbdevhw: vendor=&amp;quot;X.Org Foundation&amp;quot;&lt;br /&gt;
       compiled for 1.6.1, module version=0.0.2&lt;br /&gt;
       ABI class: X.Org Video Driver, version 5.0&lt;br /&gt;
(II) FBDEV(1): using default device&lt;br /&gt;
&lt;br /&gt;
Fatal server error:&lt;br /&gt;
Cannot run in framebuffer mode. Please specify busIDs for all framebuffer devices&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{pkg|xf86-video-fbdev}} パッケージを[[pacman#パッケージの削除|アンインストール]]してください。&lt;br /&gt;
&lt;br /&gt;
=== プログラムが &amp;quot;font &#039;(null)&#039;&amp;quot; を要求する ===&lt;br /&gt;
&lt;br /&gt;
エラーメッセージ: {{ic|unable to load font `(null)&#039;}}&lt;br /&gt;
&lt;br /&gt;
いくつかのプログラムはビットマップフォントでだけ動作します。２つの主要なビットマップフォントのパッケージがあります、{{Pkg|xorg-fonts-75dpi}} と {{Pkg|xorg-fonts-100dpi}} です。両方は必要ありません、片方だけで十分です。どちらがあなたに適しているか調べるには、{{Pkg|xorg-xdpyinfo}} の {{ic|xdpyinfo}} を試してください:&lt;br /&gt;
&lt;br /&gt;
 $ xdpyinfo | grep resolution&lt;br /&gt;
&lt;br /&gt;
そして、出力された値に最も近い方のフォントを使用してください。&lt;br /&gt;
&lt;br /&gt;
=== リカバリ: GUI ログインの前に Xorg を無効化 ===&lt;br /&gt;
&lt;br /&gt;
Xorg を自動的に起動するように設定していて、なんらかの理由でログイン・ディスプレイマネージャが表示される前に Xorg が起動するのを防ぎたい場合（例えば、システムを間違って設定したせいで Xorg がマウスやキーボード入力を受け付けない場合）、以下の2つの方法でこれを達成できます。&lt;br /&gt;
&lt;br /&gt;
* デフォルトのターゲットを rescue.target に変更してください。[[systemd#起動時のデフォルトターゲットを変更する]] を参照。&lt;br /&gt;
* 誤ってシステムを設定して Xorg を使えなくしただけでなく、GRUB メニューの待ち時間をゼロに設定、または起動時から Xorg を無効にするのに GRUB を使えない場合、Arch Linux のライブ CD を使って下さい。[[インストールガイド#パーティションのマウント|インストールガイド]]に従ってインストールした Arch Linux をマウントして chroot します。もしくは、{{ic|Ctrl+Alt}} + function キー (通常は X によって使用されていない {{ic|F1}} から {{ic|F7}}) を使って [[Getty|tty]] を切り替えてから root でログインして以下を行います。&lt;br /&gt;
&lt;br /&gt;
設定に応じて、以下の作業のどれか、または複数を行う必要があります:&lt;br /&gt;
* [[ディスプレイマネージャ]]を[[systemd#ユニットを使う|無効化]]。&lt;br /&gt;
* [[ログイン時に X を起動|X の自動起動]]を無効化。&lt;br /&gt;
* {{ic|~/.xinitrc}} の名前を変更するか {{ic|exec}} 行をコメントアウト。&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;su&amp;quot; で X クライアントの起動が失敗する ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Client is not authorized to connect to server&amp;quot; と表示される場合、次の行を {{ic|/etc/pam.d/su}} と {{ic|/etc/pam.d/su-l}} に追加して下さい:&lt;br /&gt;
&lt;br /&gt;
 session        optional        pam_xauth.so&lt;br /&gt;
&lt;br /&gt;
{{ic|pam_xauth}} が正しく環境変数を設定し {{ic|xauth}} キーを管理します。&lt;br /&gt;
&lt;br /&gt;
=== X が起動できない: Keyboard initialization failed ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステム(特に {{ic|/tmp}})が満杯の場合、{{ic|startx}} は失敗します。ログファイルには以下のように出力されます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
(EE) Error compiling keymap (server-0)&lt;br /&gt;
(EE) XKB: Could not compile keymap&lt;br /&gt;
(EE) XKB: Failed to load keymap. Loading default keymap instead.&lt;br /&gt;
(EE) Error compiling keymap (server-0)&lt;br /&gt;
(EE) XKB: Could not compile keymap&lt;br /&gt;
XKB: Failed to compile keymap&lt;br /&gt;
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.&lt;br /&gt;
Fatal server error:&lt;br /&gt;
Failed to activate core devices.&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
関連するファイルシステムにいくらかの空き領域を作れば X は起動するでしょう。&lt;br /&gt;
&lt;br /&gt;
=== 動画を視聴しようとすると緑色の画面が表示される ===&lt;br /&gt;
&lt;br /&gt;
色深度の設定が間違っています。例えば、16ではなく24に設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== SocketCreateListener エラー ===&lt;br /&gt;
&lt;br /&gt;
{{ic|SocketCreateListener() failed}} というエラーメッセージを吐いて X が落ちてしまう場合、{{ic|/tmp/.X11-unix}} 内のソケットファイルを削除する必要があります。この問題は、(例えば {{ic|xorg.conf}} を生成するために)前回に Xorg を root として実行した場合に発生することがあります。&lt;br /&gt;
&lt;br /&gt;
=== プログラムを root として実行しようとした際に Invalid MIT-MAGIC-COOKIE-1 key ===&lt;br /&gt;
&lt;br /&gt;
このエラーは、現在のユーザのみが X サーバへのアクセス権を持っていることを意味しています。解決策は root にアクセス権を与えることです:&lt;br /&gt;
&lt;br /&gt;
 $ xhost +si:localuser:root&lt;br /&gt;
&lt;br /&gt;
このコマンドは、root 以外のユーザに X へのアクセス権を与える際にも使用できます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://magcius.github.io/xplain/article/ Xplain] - X Window System の詳しい解説&lt;br /&gt;
* {{man|1|Xorg}}&lt;br /&gt;
* [https://developer.ibm.com/tutorials/l-lpic1-106-1/ Prepare for LPIC-1 exam 2 - topic 106.1: X11] - アーキテクチャ、[[#設定]]、[[デスクトップ環境]]、リモートでの使用、[[Wayland]] に関して簡単に説明しています。&lt;br /&gt;
* {{man|5|xorg.conf}}&lt;br /&gt;
* [[Gentoo:Xorg/Guide/ja#設定]]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Xorg|2026-02-15|864190}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AB%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9&amp;diff=41337</id>
		<title>インテルグラフィックス</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AB%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9&amp;diff=41337"/>
		<updated>2026-02-15T05:18:02Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[Category:X サーバー]]&lt;br /&gt;
[[de:Intel]]&lt;br /&gt;
[[en:Intel graphics]]&lt;br /&gt;
[[es:Intel graphics]]&lt;br /&gt;
[[ru:Intel graphics]]&lt;br /&gt;
[[zh-hans:Intel graphics]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|カーネルモード設定}}&lt;br /&gt;
{{Related|Xrandr}}&lt;br /&gt;
{{Related|ハイブリッドグラフィック}}&lt;br /&gt;
{{Related|Vulkan}}&lt;br /&gt;
{{Related|GPGPU}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
Intel はオープンソースドライバの提供とサポートを行なっているので、インテルグラフィックスは基本的にプラグアンドプレイです。&lt;br /&gt;
&lt;br /&gt;
Intel GPU のモデルや関連するチップセットと CPU の包括的なリストは、[[Wikipedia:Intel Graphics Technology]] と [[Gentoo:Intel#Feature support]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* PowerVR ベースのグラフィックカード (GMA 3600 シリーズ) はオープンソースドライバではサポートされていません。&lt;br /&gt;
* Intel 第 &#039;&#039;N&#039;&#039; 世代 (Gen &#039;&#039;N&#039;&#039;) ハードウェアという記述は、CPU の世代を指すものではなく、[[Wikipedia:List of Intel graphics processing units|GPU の世代]]を指しています。これは CPU の世代とは異なります。&lt;br /&gt;
* あなたのカードを特定する方法については [[画像処理装置#インストール]] を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
* 以下のパッケージのうち1つを[[インストール]]してください。これらは、3D アクセラレーションのための [[wikipedia:ja:ダイレクト・レンダリング・インフラストラクチャ|DRI]] ドライバを提供します。&lt;br /&gt;
** {{Pkg|mesa}} は、第3世代ハードウェアおよびそれ以降用のモダンな Gallium3D ドライバを含む最新の [[Mesa]] パッケージです。これを使うことが推奨されます。&lt;br /&gt;
** {{Pkg|mesa-amber}} は、第2世代から第11世代までのハードウェア用のクラシックドライバ (Gallium3d でない) です。このドライバは、第7世代及びそれ以前のハードウェアにおいて高いパフォーマンスや安定性をもたらすかもしれませんが、メンテナンスされていません。&lt;br /&gt;
* 32ビットアプリケーションのサポートは、[[multilib]] リポジトリから {{Pkg|lib32-mesa}} か {{Pkg|lib32-mesa-amber}} パッケージもインストールしてください。&lt;br /&gt;
* [[Xorg]] で 2D アクセラレーションを提供する [[wikipedia:X.Org_Server#DDX|DDX]] ドライバに関しては、以下のうち1つを使ってください:&lt;br /&gt;
** {{Pkg|xorg-server}} パッケージに含まれる &#039;&#039;modesetting&#039;&#039; ドライバは、第3世代及びそれ以降のハードウェアにおいて推奨されます。これは、&#039;&#039;glamor&#039;&#039; モジュール経由で DRI ドライバを使用してアクセラレーションを提供します。&lt;br /&gt;
** {{Pkg|xf86-video-intel}} パッケージは、第2世代から第9世代までのハードウェアにおいてレガシーな Intel DDX ドライバを提供します。一般に、このパッケージを使用することは推奨されません。下記のノートを参照してください。&lt;br /&gt;
* [[Vulkan]] サポート (Broadwell 及びそれ以降; それより古いチップにおけるサポートは[https://gitlab.freedesktop.org/mesa/mesa/-/issues/8249#note_1758622 不完全であるか存在しません]) については、{{Pkg|vulkan-intel}} パッケージをインストールしてください。32 ビット [[Vulkan]] サポートについては、{{Pkg|lib32-vulkan-intel}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
[[ハードウェアビデオアクセラレーション]]も見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&amp;lt;nowiki/&amp;gt;&lt;br /&gt;
* 一部のディストリビューション ([https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Ubuntu-Debian-Abandon-Intel-DDX Debian &amp;amp; Ubuntu]、[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Fedora-Xorg-Intel-DDX-Switch Fedora]、[https://community.kde.org/Plasma/5.9_Errata#Intel_GPUs KDE]) では、{{Pkg|xf86-video-intel}} ドライバのインストールが推奨されておらず、代わりに modesetting ドライバにフォールバックさせることが推奨されています。[https://web.archive.org/web/20160714232204/https://www.reddit.com/r/archlinux/comments/4cojj9/it_is_probably_time_to_ditch_xf86videointel/]、[https://www.phoronix.com/scan.php?page=article&amp;amp;item=intel-modesetting-2017&amp;amp;num=1]、[[Xorg#インストール]]、{{man|4|modesetting}} を参照してください。しかし、modesetting ドライバは次のような問題を引き起こす可能性があります: [https://gitlab.freedesktop.org/xorg/xserver/-/issues/1364 XFCE での画面のチラツキやマウスのジッタリング]、[https://bugs.chromium.org/p/chromium/issues/detail?id=370022 仮想デスクトップの切り替えを行ったときに Chromium でアーティファクトが発生する]、[https://gitlab.freedesktop.org/xorg/xserver/-/issues/928 vsync のジッタリング、mpv での動画のスタッタリング]。&lt;br /&gt;
* {{Pkg|xf86-video-intel}} ドライバには、第11世代及びそれ以降のハードウェアに対する適切なサポートがありません。それによって、アクセラレーションが提供されなかったり、レンダリングの問題が発生したりし、その結果として Plasma Desktop がほぼ利用不能な状態になります。[https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/commit/7181c5a41c3f00eaf996caa156523c708a18081e] を参照してください。&lt;br /&gt;
* {{Pkg|xf86-video-intel}} がインストールされている場合、グラフィックススタック全体がハードフリーズし、({{ic|Ctrl+Alt+F&#039;&#039;n&#039;&#039;}} を押して) 他の仮想コンソールに切り替えることすらできなくなり、[[SysRq]] でユーザプロセスを kill することしかできなくなるという問題が2件報告されています [https://bbs.archlinux.org/viewtopic.php?id=263323] [https://github.com/qutebrowser/qutebrowser/issues/4641]。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== ローディング ==&lt;br /&gt;
&lt;br /&gt;
Intel カーネルモジュールは、システムの起動時に自動的に正常にロードされるはずです。&lt;br /&gt;
&lt;br /&gt;
正常にロードされない場合は:&lt;br /&gt;
&lt;br /&gt;
* Intel は カーネルモード設定を必要とするので、[[カーネルパラメータ]] に {{ic|nomodeset}} を指定して &#039;&#039;&#039;いない&#039;&#039;&#039; ことを確認してください。&lt;br /&gt;
* また、{{ic|/etc/modprobe.d/}} や {{ic|/usr/lib/modprobe.d/}} で modprobe ブラックリストを使って Intel を無効にしていないか確認してください。&lt;br /&gt;
&lt;br /&gt;
=== 早期 KMS ===&lt;br /&gt;
&lt;br /&gt;
[[カーネルモード設定]] (KMS) は {{ic|i915}} ドライバと {{ic|xe}} ドライバによってサポートされており、[[mkinitcpio]] v32 から {{ic|kms}} [[mkinitcpio#通常のフック|フック]]がデフォルトで使用されているため (ブートの) 早い段階で有効化されます。他の環境で KMS をブートプロセスのできるだけ早い段階で有効化する方法については [[カーネルモード設定#KMS の早期開始]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== GuC/HuC ファームウェアのロードを有効にする ===&lt;br /&gt;
&lt;br /&gt;
第9世代から (Skylake およびそれ以降)、Intel GPU には以下の機能を提供する &#039;&#039;Graphics micro (μ) Controller&#039;&#039; (GuC) が搭載されています:&lt;br /&gt;
&lt;br /&gt;
* 一部のメディアデコード機能を CPU から &#039;&#039;HEVC/H.265 micro (µ) Controller&#039;&#039; (HuC) にオフロードする。[[ハードウェアビデオアクセラレーション]]に {{Pkg|intel-media-driver}} を使用する場合にのみ、適用可能です。第9世代から導入されました。&lt;br /&gt;
* GuC をスケジューリング、コンテキスト送信、電源管理に使用する。第12世代、Alder Lake-P (Mobile) で導入されました。&lt;br /&gt;
&lt;br /&gt;
この機能を使うには、まず、{{Pkg|linux-firmware-intel}} が[[インストール]]されていることを確認してください。このパッケージは、GuC と HuC のファームウェアファイルを提供するからです。&lt;br /&gt;
&lt;br /&gt;
次に、GuC ファームウェアをロードする必要があります。HuC のサポートに関しては、一部のビデオ機能 (SKL 低電力エンコードモードでの CBR レート制御) が、HuC ファームウェアのロードも必要とします[https://github.com/intel/media-driver#known-issues-and-limitations]。&lt;br /&gt;
&lt;br /&gt;
[[#試験的な新しい Xe ドライバをテストする|新しい試験的な]] {{ic|xe}} ドライバは、GuC と HuC の機能がデフォルトで有効化されています。&lt;br /&gt;
&lt;br /&gt;
{{ic|i915}} ドライバに関しては、GuC の機能は {{ic|enable_guc}} [[カーネルモジュールパラメータ]]によって制御されています。これの使用方法は以下のとおりです:&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|Intel のドキュメントに反し、Tiger Lake と Rocket Lake の GPU は実際 {{ic|1=enable_guc=3}} をサポートし、{{ic|1=enable_guc=1}} がデフォルトとなっている場合があります。[[:en:Talk:Intel graphics#TGL/RKL GuC Submission]] }}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! enable_guc の値 !! GuC 送信 !! HuC ファームウェアのロード !! デフォルトとなっているプラットフォーム !! サポートされているプラットフォーム&lt;br /&gt;
|-&lt;br /&gt;
|0 || {{No}} || {{No}} || Tiger Lake、Rocket Lake、Gen12 以前 [https://github.com/torvalds/linux/blob/b3454ce0b2c8a56e760e6baa88ed10278585072b/drivers/gpu/drm/i915/gt/uc/intel_uc.c#L26-L36] || すべて&lt;br /&gt;
|-&lt;br /&gt;
|1 || {{Yes}} || {{No}} || {{-}} || Alder Lake-P (Mobile) およびそれ以降&lt;br /&gt;
|-&lt;br /&gt;
|2 || {{No}} || {{Yes}} || Alder Lake-S (Desktop) [https://github.com/torvalds/linux/blob/b3454ce0b2c8a56e760e6baa88ed10278585072b/drivers/gpu/drm/i915/gt/uc/intel_uc.c#L38-L42] [https://lore.kernel.org/all/87ee6wit2r.fsf@intel.com/T/] || Gen9 およびそれ以降&lt;br /&gt;
|-&lt;br /&gt;
|3 || {{Yes}} || {{Yes}} || Alder Lake-P (Mobile) 及びそれ以降 || Gen 9.5 及びそれ以降 (一部個体ではこちらがより良い)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
GuC 送信や HuC ファームウェアのロードがあなたの GPU ではデフォルトで有効になっていない場合、手動で有効化できます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=GuC / HuC ファームウェアのロードを手動で有効化すると、[https://bugs.freedesktop.org/show_bug.cgi?id=111918 たとえその機能がサポートされていない場合でも]、カーネルに汚染マークが付きます。さらに、GuC/HuC ファームウェアのロードを有効化すると、一部のシステムで問題が発生する可能性があります。(ハイバネートから復帰したあとなどに) フリーズが発生する場合は、無効化してください。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=enable_guc=}} [[カーネルモジュールパラメータ]] を設定してください。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/i915.conf|2=&lt;br /&gt;
options i915 enable_guc=3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Initramfs を再生成する|Initramfs を再生成]] してください。次回の起動時に [[dmesg]] を使うことで GuC と HuC が両方有効化されていることを確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|# dmesg {{!}} grep -i -e &#039;huc&#039; -e &#039;guc&#039;|2=&lt;br /&gt;
[30130.586970] i915 0000:00:02.0: [drm] GuC firmware i915/icl_guc_33.0.0.bin version 33.0 submission:disabled&lt;br /&gt;
[30130.586973] i915 0000:00:02.0: [drm] HuC firmware i915/icl_huc_9.0.0.bin version 9.0 authenticated:yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
あなたのグラフィックアダプタで GuC と HuC がサポートされていない場合、以下が出力されます&lt;br /&gt;
&lt;br /&gt;
{{hc|# dmesg {{!}} grep -i -e &#039;huc&#039; -e &#039;guc&#039;|2=&lt;br /&gt;
[    0.571339] i915 0000:00:02.0: [drm] Incompatible option enable_guc=2 - GuC is not supported!&lt;br /&gt;
[    0.571340] i915 0000:00:02.0: [drm] Incompatible option enable_guc=2 - HuC is not supported!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
あるいは、以下で確認できます:&lt;br /&gt;
&lt;br /&gt;
 # less /sys/kernel/debug/dri/*/gt0/uc/guc_info&lt;br /&gt;
 # less /sys/kernel/debug/dri/*/gt0/uc/huc_info&lt;br /&gt;
&lt;br /&gt;
{{Note|1=GuC/HuC が有効化されている場合に {{ic|1=enable_gvt=1}} を設定して [[Intel GVT-g|GVT-g graphics virtualization]] を使用することは、Linux 4.20.11 現在ではサポートされていません。システムのジャーナルに出力される通り、i915 モジュールの初期化に失敗します。&lt;br /&gt;
&lt;br /&gt;
{{hc|# journalctl|&lt;br /&gt;
... kernel: [drm:intel_gvt_init [i915]] *ERROR* i915 GVT-g loading failed due to Graphics virtualization is not yet supported with GuC submission&lt;br /&gt;
... kernel: i915 0000:00:02.0: [drm:i915_driver_load [i915]] Device initialization failed (-5)&lt;br /&gt;
... kernel: i915: probe of 0000:00:02.0 failed with error -5&lt;br /&gt;
... kernel: snd_hda_intel 0000:00:1f.3: failed to add i915 component master (-19)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/intel/gvt-linux/issues/77#issuecomment-707541069] で説明されているように、関連する警告は深刻なものではないことに注意してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# journalctl -b |&lt;br /&gt;
... kernel: i915 0000:00:02.0: Direct firmware load for i915/gvt/vid_0x8086_did_0x5916_rid_0x02.golden_hw_state failed with error -2&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Xorg の設定 ==&lt;br /&gt;
&lt;br /&gt;
たいてい、[[Xorg]] を実行するために設定は特に必要ありません。&lt;br /&gt;
&lt;br /&gt;
しかし、ドライバのオプションを活用したい場合や、[[Xorg]] が起動しない場合などは、Xorg の設定ファイルを作成することができます。&lt;br /&gt;
&lt;br /&gt;
=== modesetting ドライバを使う ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xf86-video-intel}} をインストールしたが、DDX ドライバを優先させずに modesetting ドライバを明示的にロードさせたい場合 (DDX ドライバと modesetting ドライバを比較したい場合など) は、以下のような設定ファイルを使用できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-intel.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
  Identifier &amp;quot;Intel Graphics&amp;quot;&lt;br /&gt;
  Driver &amp;quot;modesetting&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Intel ドライバを使う ===&lt;br /&gt;
&lt;br /&gt;
{{Note|以下は {{Pkg|xf86-video-intel}} が必要です。}}&lt;br /&gt;
&lt;br /&gt;
以下のような Xorg 設定ファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-intel.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
  Identifier &amp;quot;Intel Graphics&amp;quot;&lt;br /&gt;
  Driver &amp;quot;intel&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その他のオプションは {{ic|Driver}} の下の新しい行にユーザが追加します。&lt;br /&gt;
オプションの完全なリストは {{man|4|intel}} の man ページを参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|上に挙げたものよりも多くの device セクションを追加する必要があるかもしれません。必要であれば示します。}}&lt;br /&gt;
&lt;br /&gt;
==== AccelMethod ====&lt;br /&gt;
&lt;br /&gt;
設定ファイルを作成する際に、{{ic|Option &amp;quot;AccelMethod&amp;quot;}} を指定する必要がある場合があります。古典的なオプションは、{{ic|UXA}}、{{ic|SNA}} (デフォルト)、{{ic|BLT}} です。&lt;br /&gt;
&lt;br /&gt;
デフォルトの {{ic|SNA}} で問題が発生した場合。(例: ピクセル化したグラフィック、壊れたテキストなど)、代わりに {{ic|UXA}} を使ってみてください、これは [[#Xorg の設定|Xorg 設定ファイル]] に次の行を追加することで可能です:&lt;br /&gt;
&lt;br /&gt;
 Option      &amp;quot;AccelMethod&amp;quot;  &amp;quot;uxa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{man|4|intel|CONFIGURATION DETAILS}} の &amp;quot;AccelMethod&amp;quot; オプションをご覧ください。&lt;br /&gt;
&lt;br /&gt;
==== 最近の GPU で Intel DDX ドライバを使用する ====&lt;br /&gt;
&lt;br /&gt;
第8世代 (Broadwell) からの Intel GPU では、Iris Mesa ドライバが必要です:&lt;br /&gt;
&lt;br /&gt;
 Option      &amp;quot;DRI&amp;quot;  &amp;quot;iris&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== TearFree、TripleBuffer、SwapbuffersWait を無効化する ====&lt;br /&gt;
&lt;br /&gt;
コンポジタを使用している場合 (GNOME、KDE Plasma、Xfce などの最近のデスクトップ環境ではデフォルトです)、通常、TearFree、TripleBuffer、SwapbuffersWait を無効化することでパフォーマンスを向上させ、電力消費量を削減することができます。&lt;br /&gt;
&lt;br /&gt;
 Option      &amp;quot;TearFree&amp;quot;        &amp;quot;false&amp;quot;&lt;br /&gt;
 Option      &amp;quot;TripleBuffer&amp;quot;    &amp;quot;false&amp;quot;&lt;br /&gt;
 Option      &amp;quot;SwapbuffersWait&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== モジュールベースのオプション ==&lt;br /&gt;
&lt;br /&gt;
{{ic|i915}} カーネルモジュールにより、[[カーネルモジュール#モジュールオプションを設定する|モジュールオプション]] を介して設定できます。一部のモジュールオプションは、省電力に影響を与えます。&lt;br /&gt;
&lt;br /&gt;
次のコマンドを使用して、すべてのオプションのリストと簡単な説明およびデフォルト値を生成できます:&lt;br /&gt;
&lt;br /&gt;
 $ modinfo -p i915&lt;br /&gt;
&lt;br /&gt;
現在有効になっているオプションを確認するには、&lt;br /&gt;
&lt;br /&gt;
 # systool -m i915 -av&lt;br /&gt;
&lt;br /&gt;
多くのオプションのデフォルトは-1であるため、チップごとの省電力のデフォルトになります。ただし、[[カーネルモジュール#モジュールオプションを設定する|モジュールオプション]] を使用して、より積極的な省電力を構成することも可能です。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=Linux 3.18 以降、これらのデフォルトから逸脱すると、カーネルが [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=fc9740cebc3ab7c65f3c5f6ce0caf3e4969013ca tainted] (汚染された) としてマークされます。これは基本的に、チップごとのデフォルト以外のオプションの使用は実験的なものと見なされ、開発者によってサポートされていないことを意味します。}}&lt;br /&gt;
&lt;br /&gt;
=== フレームバッファー圧縮 (enable_fbc) ===&lt;br /&gt;
&lt;br /&gt;
フレームバッファ圧縮 (FBC) は、スクリーンのリフレッシュ中の電力消費量とメモリの帯域幅の使用量を削減できる機能です。&lt;br /&gt;
&lt;br /&gt;
この機能は、ハードウェアによってサポートされている場合、自動的に有効化されます。以下のコマンドを実行することで、この機能が有効化されているかどうか確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ modinfo i915 {{!}} grep enable_fbc|&lt;br /&gt;
parm:           enable_fbc:Enable frame buffer compression for power savings (default: -1 (use per-chip default)) (int)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
parm が {{ic|-1}} に設定されている場合、何もする必要はありません。{{ic|-1}} でない場合、{{ic|1=i915.enable_fbc=1}} を[[カーネルパラメータ]]に追加するか、以下の内容で {{ic|/etc/modprobe.d/i915.conf}} を作成することで、FBC を強制的に有効化できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/i915.conf|2=&lt;br /&gt;
options i915 enable_fbc=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
フレームバッファー圧縮は、Sandy Bridge(第6世代)より前の Intel GPU 世代では信頼できないか、使用できない場合があります。これにより、次のようなメッセージがシステムジャーナルに記録されます:&lt;br /&gt;
&lt;br /&gt;
 [drm] not enough stolen space for compressed buffer (need 4325376 bytes), disabling&lt;br /&gt;
 [drm] hint: you may be able to increase stolen memory size in the BIOS to avoid this&lt;br /&gt;
&lt;br /&gt;
解決策は、フレームバッファー圧縮を無効にすることです。これにより、消費電力僅かに増加します (+約 0.06 W)。無効にするには、[[カーネルパラメータ]] {{ic|1=i915.enable_fbc=0}} を追加します。[https://web.archive.org/web/20200228230053/https://kernel.ubuntu.com/~cking/power-benchmarking/background-colour-and-framebuffer-compression/]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Fastboot ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=Skylake およびそれ以降[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3d6535cbed4a4b029602ff83efb2adec7cb8d28b]、さらに Bay- と Cherry-Trail (VLV/CHV)[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7360c9f6b857e22a48e545f4e99c79630994e932] では、Linux 5.1 からこのパラメータがデフォルトで有効化されていました [https://kernelnewbies.org/Linux_5.1#Graphics]。その後、Linux 6.7 でこのパラメータは完全に削除され[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58883680a8416661b48a800e5530e2efcea64a4a]、Linux 6.9 から fastboot は全ての GPU 世代 (Skylake よりも古い世代を含む) に対して有効化されました。[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1b923307a1b0067a302b394e73311aeaebc06f65]}}&lt;br /&gt;
&lt;br /&gt;
Intel Fastboot の目標は、BIOS または [[ブートローダー]] によってセットアップされたフレームバッファーを保持して、 [[Xorg]] が開始されるまでちらつきを回避することです。[https://lists.freedesktop.org/archives/intel-gfx/2012-May/017653.html][https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTEwNzc]&lt;br /&gt;
&lt;br /&gt;
fastboot がデフォルトでないプラットフォーム上で fastboot を有効にするには、{{ic|1=i915.fastboot=1}} を [[カーネルパラメータ]] として設定するか、{{ic|/etc/modprobe.d/i915.conf}} に以下を設定します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/i915.conf|2=&lt;br /&gt;
options i915 fastboot=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Intel GVT-g グラフィック仮想化のサポート===&lt;br /&gt;
&lt;br /&gt;
詳細については [[Intel GVT-g]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== パフォーマンスサポートを有効化する ===&lt;br /&gt;
&lt;br /&gt;
第6世代から (Sandy Bridge およびそれ以降) Intel GPU は、内部のパフォーマンスデータをドライバに公開するために使用されるパフォーマンスカウンタを提供しています。ドライバとハードウェアレジスタではこのインフラを &#039;&#039;Observation Architecture&#039;&#039; (内部的には &amp;quot;OA&amp;quot;) と呼んでいますが [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Intel-HSW-Observation-Arch]、Intel のドキュメントではこの機能をより一般的に &#039;&#039;Observability Performance Counters&#039;&#039; を提供するものとしています [https://01.org/sites/default/files/documentation/observability_performance_counters_haswell.pdf] [https://01.org/sites/default/files/documentation/intel-gfx-prm-osrc-skl-vol14-observability.pdf]。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、[https://lwn.net/Articles/486306/ CAP_SYS_ADMIN] (root と等価です) や [https://lwn.net/Articles/812719/ CAP_PERFMON] [[ケイパビリティ]]で実行されているプログラムのみが observation architecture を利用できます [https://github.com/torvalds/linux/blob/b14ffae378aa1db993e62b01392e70d1e585fb23/drivers/gpu/drm/i915/i915_perf.c#L267] [https://github.com/torvalds/linux/blob/b14ffae378aa1db993e62b01392e70d1e585fb23/drivers/gpu/drm/i915/i915_perf.c#L3481-L3484]。ほとんどのアプリケーションはこれらのケイパビリティを持たずに実行されるため、以下の警告が出力されます:&lt;br /&gt;
&lt;br /&gt;
 MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0&lt;br /&gt;
&lt;br /&gt;
これらのケイパビリティ (または root) を使わずにパフォーマンスサポートを有効化するには、[[sysctl]] で説明されているように、(上記の警告で示されている) カーネルパラメータを設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|アプリケーションにパフォーマンスデータへのアクセスを許してしまうなどのリスクが存在するため、{{ic|perf_event_paranoid}} ファミリのオプションには制限的なデフォルトが存在します [https://docs.kernel.org/admin-guide/perf-security.html]。とはいえ、{{ic|dev.i915.perf_stream_paranoid}} は GPU パフォーマンスカウンタへのアクセスにしか影響せず、CPU アーキテクチャ実行コンテキストレジスタなどと比べれば低リスクです。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== スケーリングモードを設定する ===&lt;br /&gt;
&lt;br /&gt;
フルスクリーンを使うアプリケーションで有用かもしれません:&lt;br /&gt;
&lt;br /&gt;
 $ xrandr --output LVDS1 --set PANEL_FITTING &#039;&#039;param&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
選べる {{ic|&#039;&#039;param&#039;&#039;}} は:&lt;br /&gt;
&lt;br /&gt;
* {{ic|center}}: 解像度は定義した通りに固定され、スケーリングは無効になります&lt;br /&gt;
* {{ic|full}}: 画面いっぱいまで解像度がスケールします&lt;br /&gt;
* {{ic|full_aspect}}: アスペクト比を維持したまま解像度を可能な限り最大までスケールします&lt;br /&gt;
&lt;br /&gt;
うまく行かない場合は、以下を試してみてください:&lt;br /&gt;
&lt;br /&gt;
 $ xrandr --output LVDS1 --set &amp;quot;scaling mode&amp;quot; &#039;&#039;param&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;param&#039;&#039;}} は {{ic|&amp;quot;Full&amp;quot;}}、{{ic|&amp;quot;Center&amp;quot;}}、{{ic|&amp;quot;Full aspect&amp;quot;}} のいずれかです。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=上記のオプションは外部ディスプレイは現在のところ機能しません (例: VGA, DVI, HDMI, DP) [https://bugs.freedesktop.org/show_bug.cgi?id=90989]。}}&lt;br /&gt;
&lt;br /&gt;
=== 報告される OpenGL のバージョンを上書き ===&lt;br /&gt;
&lt;br /&gt;
{{ic|MESA_GL_VERSION_OVERRIDE}} [[環境変数]]を使うことで、アプリケーションに報告される OpenGL のバージョンを上書きできます。例えば、{{ic|1=MESA_GL_VERSION_OVERRIDE=4.5}} と設定することで OpenGL 4.5 と報告されるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|上記の変数を使って既知の OpenGL バージョンなら、たとえ GPU によってサポートされていないバージョンでも使うこともできます。設定することで、アプリケーションによってクラッシュがなおったり、あるいはクラッシュが増えたりする可能性があります。全てのアプリケーションで同じ変数を使わない方が良いでしょう。}}&lt;br /&gt;
&lt;br /&gt;
=== モニタリング ===&lt;br /&gt;
&lt;br /&gt;
[[ハードウェアビデオアクセラレーション#確認]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== 明るさとガンマ値の設定 ===&lt;br /&gt;
&lt;br /&gt;
[[バックライト]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== 試験的な新しい Xe ドライバをテストする ===&lt;br /&gt;
&lt;br /&gt;
(試験的な) [https://docs.kernel.org/gpu/xe/index.html 新しい Xe ドライバ]を試すには、以下が必要です:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|linux}} 6.8 以上&lt;br /&gt;
* [[Wikipedia:ja:Tiger Lake|Tiger Lake]] 及びそれ以降の統合グラフィックス、またはディスクリートグラフィックカード。&lt;br /&gt;
* {{Pkg|mesa}}。&lt;br /&gt;
&lt;br /&gt;
以下のコマンドで PCI ID を確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lspci -nnd ::03xx|&lt;br /&gt;
00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] [8086:&#039;&#039;&#039;9a49&#039;&#039;&#039;] (rev 01)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、適切な PCI ID を使って以下を[[カーネルパラメータ]]に追加してください:&lt;br /&gt;
&lt;br /&gt;
 ... i915.force_probe=!&#039;&#039;&#039;9a49&#039;&#039;&#039; xe.force_probe=&#039;&#039;&#039;9a49&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
必要なときに元に戻すためのブート手段を確保しておいてください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== ティアリング ===&lt;br /&gt;
&lt;br /&gt;
==== Intel ドライバを使う ====&lt;br /&gt;
&lt;br /&gt;
SNA アクセラレーションメソッドを取っている場合、一部のマシン上でティアリングが発生します。これを修正するには、以下の行を[[#Xorg の設定|設定ファイル]]に追加して {{Pkg|xf86-video-intel}} ドライバの {{ic|TearFree}} オプションを有効化してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-intel.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
  Identifier &amp;quot;Intel Graphics&amp;quot;&lt;br /&gt;
  Driver &amp;quot;intel&amp;quot;&lt;br /&gt;
  Option &amp;quot;TearFree&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
詳細は[https://bugs.freedesktop.org/show_bug.cgi?id=37686 元のバグレポート]を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&amp;lt;nowiki/&amp;gt;&lt;br /&gt;
* このオプションは、{{ic|SwapbuffersWait}} が {{ic|false}} のときに動作しない場合があります。&lt;br /&gt;
* このオプションはメモリアロケーションを増加させ、パフォーマンスが低下する場合があります。[https://bugs.freedesktop.org/show_bug.cgi?id=37686#c123]&lt;br /&gt;
* このオプションは、vsync のタイミングに厳しいアプリケーション (例えば、[[Wikipedia:Super Meat Boy|Super Meat Boy]]) において問題が発生する場合があります。&lt;br /&gt;
* このオプションはUXA アクセラレーションメソッドでは動作しません。SNA でしか使えません。&lt;br /&gt;
* Intel UHD 620 または 430 では、{{ic|TearFree}} を動作させるために {{ic|Option &amp;quot;TripleBuffer&amp;quot; &amp;quot;true&amp;quot;}} を追加する必要があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== modesetting ドライバを使う ====&lt;br /&gt;
&lt;br /&gt;
TearFree サポートが modesetting ドライバに[https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1006 追加されました] [https://www.phoronix.com/news/xf86-video-modesetting-TearFree][https://www.phoronix.com/news/Modesetting-TearFree-Merged]。XWayland でないサーバーに対する最後のリリースは2021年のバージョン 21.1 ですが、このパッチはまだ安定リリースに至っていません。なので、安定化されるまで {{AUR|xorg-server-git}} を使う必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-intel.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
  Identifier &amp;quot;Intel Graphics&amp;quot;&lt;br /&gt;
  Driver &amp;quot;modesetting&amp;quot;&lt;br /&gt;
  Option &amp;quot;TearFree&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
=== 垂直同期 (VSYNC) を無効化する ===&lt;br /&gt;
&lt;br /&gt;
以下のような場合に便利です:&lt;br /&gt;
&lt;br /&gt;
* Chromium/Chrome が、GPU のせいでラグくパフォーマンスが悪く、--disable-gpu スイッチを使うとスムーズに動作する場合。&lt;br /&gt;
* glxgears テストが期待するほどのパフォーマンスを発揮してくれない場合。&lt;br /&gt;
&lt;br /&gt;
intel ドライバは垂直同期に [https://www.intel.com/support/graphics/sb/CS-004527.htm Triple Buffering] を使用します。これは、完全なパフォーマンスとティアリングの回避を可能にします。垂直同期をオフにするには (例えば、ベンチマークのために)、以下の {{ic|.drirc}} をホームディレクトリ内に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.drirc|2=&lt;br /&gt;
&amp;lt;device screen=&amp;quot;0&amp;quot; driver=&amp;quot;dri2&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;application name=&amp;quot;Default&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;option name=&amp;quot;vblank_mode&amp;quot; value=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/device&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== DRI3 の問題 ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xf86-video-intel}} では DIR バージョンのデフォルトは &#039;&#039;DRI3&#039;&#039; です。一部の環境では DRI3 によって問題が発生することがあります [https://bugs.chromium.org/p/chromium/issues/detail?id=370022]。&#039;&#039;DRI2&#039;&#039; を使うには[[#Xorg の設定|設定ファイル]]に以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;DRI&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|modesetting}} ドライバーでは上記の方法で DRI3 を無効化することはできません。代わりに {{ic|1=LIBGL_DRI3_DISABLE=1}} 環境変数を設定してください。&lt;br /&gt;
&lt;br /&gt;
=== GTK アプリケーションでグリフが表示されない ===&lt;br /&gt;
&lt;br /&gt;
GTK アプリケーションでフォントの文字が表示されなくなってしまう場合、以下の方法で直る可能性があります。{{ic|/etc/environment}} を[[編集]]して以下の行を追加してください: &lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/environment|output=&lt;br /&gt;
COGL_ATLAS_DEFAULT_BLIT_MODE=framebuffer&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://bugs.freedesktop.org/show_bug.cgi?id=88584 FreeDesktop bug 88584] も参照。&lt;br /&gt;
&lt;br /&gt;
=== グラフィックがおかしい、固まる ===&lt;br /&gt;
&lt;br /&gt;
一部のアプリケーションでグラフィックがおかしい/固まる問題が発生する場合は (アプリケーションのウィンドウがランダムな色で埋まる、ひどくぼやける、ラグが無いにも関わらず他のタスクを実行中にアプリケーションのグラフィックの更新が行われなくなるなど)、問題の起こるアプリケーションを [[Vulkan]] ではなく [[OpenGL]] で実行してみてください。このような問題は Intel Arc GPU の一部構成で起こります。&lt;br /&gt;
&lt;br /&gt;
=== Intel ドライバで X がフリーズ/クラッシュする ===&lt;br /&gt;
&lt;br /&gt;
X のクラッシュを伴う問題、GPU のハングアップ、X のフリーズに関する問題は、{{ic|NoAccel}} オプションを使って GPU の使用を無効化することで修復できる場合があります。以下の行を[[#Xorg の設定|設定ファイル]]に追加してください:&lt;br /&gt;
&lt;br /&gt;
   Option &amp;quot;NoAccel&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
&lt;br /&gt;
あるいは、{{ic|DRI}} オプションを使って 3D アクセラレーションだけを無効化してみてください:&lt;br /&gt;
&lt;br /&gt;
   Option &amp;quot;DRI&amp;quot; &amp;quot;False&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 認識されない解像度を追加する ===&lt;br /&gt;
&lt;br /&gt;
この問題は、[[Xrandr#検出されない解像度を追加する|Xrandr のページ]] で扱っています。&lt;br /&gt;
&lt;br /&gt;
=== バックライトを調整できない ===&lt;br /&gt;
&lt;br /&gt;
サスペンドから復帰したあとにホットキーを使用してスクリーンの輝度を変更できない場合、[[バックライト]]の記事を見てあなたの設定ファイルをチェックしてみてください。&lt;br /&gt;
&lt;br /&gt;
問題が解消されない場合は、以下の[[カーネルパラメータ]]のうち1つを試してください:&lt;br /&gt;
&lt;br /&gt;
 acpi_osi=Linux&lt;br /&gt;
 acpi_osi=&amp;quot;!Windows 2012&amp;quot;&lt;br /&gt;
 acpi_osi=&lt;br /&gt;
&lt;br /&gt;
また、fastboot モード ({{ic|i915.fastboot}} カーネルパラメータ) を使用していないことを確認してください。これは、バックライト制御を破壊することが[https://www.phoronix.com/forums/forum/software/mobile-linux/1066447-arch-linux-users-with-intel-graphics-can-begin-enjoying-a-flicker-free-boot 知られています]。&lt;br /&gt;
&lt;br /&gt;
=== Chromium や Firefox の表示がおかしい/応答しない ===&lt;br /&gt;
&lt;br /&gt;
Chromium や Firefox で表示の乱れ、応答なし、ラグ、低パフォーマンスが発生する場合、以下のような解決策があります。&lt;br /&gt;
&lt;br /&gt;
* [[#AccelMethod|AccelMethod を &amp;quot;uxa&amp;quot; に設定する]]&lt;br /&gt;
* [[#垂直同期 (VSYNC) を無効化する|VSYNC を無効化する]]&lt;br /&gt;
* [[#ティアリング|TearFree オプションを有効化する]]&lt;br /&gt;
* &amp;quot;DRI&amp;quot; とアクセラレーションのメソッドを無効にする (第10世代でテスト済み): {{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Option &amp;quot;NoAccel&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
Option &amp;quot;DRI&amp;quot; &amp;quot;False&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Broadwell/Core-M チップでカーネル 4.0 以上を使っている場合にクラッシュする ===&lt;br /&gt;
&lt;br /&gt;
X/Wayland がロードされた数秒後、マシンがフリーズして、[[journalctl]] に以下のようなインテルグラフィックスに関連するカーネルのクラッシュログが残ることがあります: &lt;br /&gt;
&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel: BUG: unable to handle kernel NULL pointer dereference at           (null)&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel: IP: [&amp;lt;          (null)&amp;gt;]           (null)&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel: CPU: 0 PID: 733 Comm: gnome-shell Tainted: G     U     O    4.0.5-1-ARCH #1&lt;br /&gt;
 ...&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel: Call Trace:&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffffa055cc27&amp;gt;] ? i915_gem_object_sync+0xe7/0x190 [i915]&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffffa0579634&amp;gt;] intel_execlists_submission+0x294/0x4c0 [i915]&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffffa05539fc&amp;gt;] i915_gem_do_execbuffer.isra.12+0xabc/0x1230 [i915]&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffffa055d349&amp;gt;] ? i915_gem_object_set_to_cpu_domain+0xa9/0x1f0 [i915]&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffff811ba2ae&amp;gt;] ? __kmalloc+0x2e/0x2a0&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffffa0555471&amp;gt;] i915_gem_execbuffer2+0x141/0x2b0 [i915]&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffffa042fcab&amp;gt;] drm_ioctl+0x1db/0x640 [drm]&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffffa0555330&amp;gt;] ? i915_gem_execbuffer+0x450/0x450 [i915]&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffff8122339b&amp;gt;] ? eventfd_ctx_read+0x16b/0x200&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffff811ebc36&amp;gt;] do_vfs_ioctl+0x2c6/0x4d0&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffff811f6452&amp;gt;] ? __fget+0x72/0xb0&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffff811ebec1&amp;gt;] SyS_ioctl+0x81/0xa0&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel:  [&amp;lt;ffffffff8157a589&amp;gt;] system_call_fastpath+0x12/0x17&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel: Code:  Bad RIP value.&lt;br /&gt;
 Jun 16 17:54:03 hostname kernel: RIP  [&amp;lt;          (null)&amp;gt;]           (null)&lt;br /&gt;
&lt;br /&gt;
この問題は execlist のサポート (カーネル 4.0 からデフォルトに変更されました) を無効化することで解決します。以下の[[カーネルパラメータ]]を追加してください: &lt;br /&gt;
&lt;br /&gt;
 i915.enable_execlists=0&lt;br /&gt;
&lt;br /&gt;
これは、カーネル 4.0.5 以上で壊れていることが知られています。&lt;br /&gt;
&lt;br /&gt;
=== Windows をゲストとした場合にラグが発生する ===&lt;br /&gt;
&lt;br /&gt;
VirtualBox でホスト側から（マウスカーソルを動かすなどして）画面を更新しないと Windows ゲストのビデオ出力が止まってしまうことがあります。{{ic|1=enable_fbc=1}} オプションを削除すれば問題は解決します。&lt;br /&gt;
&lt;br /&gt;
=== 画面がちらつく ===&lt;br /&gt;
&lt;br /&gt;
Intel iGPU で使用される省電力機能 Panel Self Refresh (PSR) は、一部の例でちらつきを発生させることが知られています {{Bug|49628}} {{Bug|49371}} {{Bug|50605}}。一時的な解決策は、[[カーネルパラメータ]] {{ic|1=i915.enable_psr=0}} または {{ic|1=xe.enable_psr=0}} を使ってこの機能を無効化することです。&lt;br /&gt;
&lt;br /&gt;
この方法は、{{ic|[i915] *ERROR* CPU pipe A FIFO underrun}} のようなエラーメッセージを解決します。&lt;br /&gt;
&lt;br /&gt;
=== i915 ドライバで OpenGL 2.1 ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mesa-amber}} パッケージに含まれる第3世代 GPU 用の 古い mesa ドライバは、デフォルトでは OpenGL 2.0 が利用可能であると報告します。これは、対象のハードウェアが OpenGL 2.1 とは完全に互換性がないことが原因です。[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Mesa-i915-OpenGL-2-Drop] OpenGL 2.1 のサポートは、{{ic|/etc/drirc}} または {{ic|~/.drirc}} で以下のようなオプションを設定することにより、手動で有効化することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/drirc|output=&lt;br /&gt;
&amp;lt;driconf&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    &amp;lt;device driver=&amp;quot;i915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;application name=&amp;quot;Default&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;option name=&amp;quot;&#039;&#039;&#039;stub_occlusion_query&#039;&#039;&#039;&amp;quot; value=&amp;quot;&#039;&#039;&#039;true&#039;&#039;&#039;&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;option name=&amp;quot;&#039;&#039;&#039;fragment_shader&#039;&#039;&#039;&amp;quot; value=&amp;quot;&#039;&#039;&#039;true&#039;&#039;&#039;&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/application&amp;gt;&lt;br /&gt;
    &amp;lt;/device&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/driconf&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* OpenGL のバージョンが戻ってしまう理由は、Chromium と他のアプリケーションでエクスペリエンスが悪化するためでした。必要であれば、drirc ファイルを編集して特定のアプリケーションに対して OpenGL 2.1 を {{ic|chromium}} 実行ファイルなどで無効化することもできます ([https://dri.freedesktop.org/wiki/ConfigurationInfrastructure/ 参照])。&lt;br /&gt;
* {{Pkg|mesa}} パッケージに含まれる新しい Gallium ベースの i915 ドライバは、常に OpenGL 2.1 が利用可能であると報告します。なので、このドライバに対しては上記の設定は不要です。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== KMS の問題: コンソールが小さい領域に制限される ===&lt;br /&gt;
&lt;br /&gt;
低解像度のビデオポートの1つが起動時に有効になっていて、そのせいでターミナルがスクリーンの小さい領域を使っているのかもしれません。修正するには、ブートローダーでカーネルコマンドラインパラメータの {{ic|1=video=SVIDEO-1:d}} を使って i915 モジュールの設定でそのポートを明示的に無効化してください。詳細は [[カーネルパラメータ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
これでうまく行かない場合、SVIDEO-1 ではなく TV1 か VGA1 を無効化してみてください。ビデオポートの名前は [[xrandr]] でリストアップできます。&lt;br /&gt;
&lt;br /&gt;
=== Haswell CPU で HDMI 経由で音声が出ない ===&lt;br /&gt;
&lt;br /&gt;
[https://bugzilla.kernel.org/show_bug.cgi?id=60769 Linux カーネルの issue] によると、{{ic|1=intel_iommu=on}} を設定している場合には HDMI から音声が出力されないそうです。この問題を修正するには、以下の[[カーネルパラメータ]]を設定してください:&lt;br /&gt;
&lt;br /&gt;
 intel_iommu=on,igfx_off&lt;br /&gt;
&lt;br /&gt;
あるいは、IOMMU を無効化してください:&lt;br /&gt;
&lt;br /&gt;
 intel_iommu=off&lt;br /&gt;
&lt;br /&gt;
=== 低消費電力 Intel CPU でクラッシュ/フリーズ ===&lt;br /&gt;
&lt;br /&gt;
低消費電力 Intel プロセッサやノート PC プロセッサは、低消費電力 Intel チップで使用されている電源管理機能に関する問題によりランダムにハングアップ/クラッシュする傾向にあります。そのようなクラッシュが発生する場合、この問題を報告するログは見られないでしょう。以下の[[カーネルパラメータ]]を追加することで、この問題を解決できるかもしれません。&lt;br /&gt;
&lt;br /&gt;
{{Note|以下のカーネルパラメータを3つすべて一緒に使用することは推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
 intel_idle.max_cstate=1 i915.enable_dc=0 ahci.mobile_lpm_policy=1&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ahci.mobile_lpm_policy=1}} は、いくつかの Lenovo ノート PC や一部の Acer ノートブックにおける、SATA コントローラーの問題のある電源管理に起因するハングアップを修正します。この回避策はインテルグラフィックスと厳密には関連していませんが、関連する問題を解決します。このカーネルパラメータを追加すると、&#039;&#039;l&#039;&#039;ink &#039;&#039;p&#039;&#039;ower &#039;&#039;m&#039;&#039;anagement をファームウェアのデフォルトから最大パフォーマンスに変更し、特定の Lenovo マシンでディスプレイ輝度を変更した際にハングする問題を解決しますが、modern ultrabook でアイドル時の電力消費量が 1~1.5W 増加します。詳細 (特に他の状態に関するもの) については、[https://lore.kernel.org/lkml/20171211165216.5604-1-hdegoede@redhat.com/ Linux カーネルメーリングリスト]や [https://access.redhat.com/documentation/en-en/red_hat_enterprise_linux/6/html/power_management_guide/alpm Red Hat ドキュメント]を見てください。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=i915.enable_dc=0}} は、GPU の電源管理を無効化します。これは、特定の Intel システム (特に、Goldmount と Kaby Lake Refresh チップ) におけるランダムなハングを解決します。このパラメータを使用すると、電力消費量が増え、ノート PC/notebook のバッテリー寿命が短くなります。これで問題が解決した場合は、DC 制限をより細かく設定してみてください ({{ic|1=modinfo i915 {{!}} grep enable_dc}} で設定可能な値を調べられます)。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=intel_idle.max_cstate=1}} は、プロセッサのスリープ状態を制限し、プロセッサがディープスリープ状態に移行するのを防ぎます。これは絶対に理想的ではなく、電力消費量の増加とバッテリーの短命化を招きます。しかし、多くの Intel システムでランダムなハングを解決します。Intel Baytrail や Kaby Lake Refresh チップを使用している場合は、このパラメータを使用してください。Intel &amp;quot;Baytrail&amp;quot; チップは、このカーネルパラメータを使用しないと、[https://bugzilla.kernel.org/show_bug.cgi?id=109051#c752 ファームウェアの欠陥]によりランダムにハングしてしまうことが知られていましたが、理論的には [https://gitlab.freedesktop.org/drm/i915/kernel/-/commit/a75d035fedbdecf83f86767aa2e4d05c8c4ffd95 2019-04-26] に修正されました。&lt;br /&gt;
max_cstate パラメータに関する詳細は[https://docs.kernel.org/admin-guide/pm/intel_idle.html#kernel-command-line-options-and-module-parameters カーネルドキュメント]で、cstate に関する一般的な情報は [https://gist.github.com/wmealing/2dd2b543c4d3cff6cab7 GitHub 上の記事]で見られます。&lt;br /&gt;
&lt;br /&gt;
頻繁にハングする問題を解決するために {{ic|1=intel_idle.max_cstate=1 i915.enable_dc=0 ahci.mobile_lpm_policy=1}} を追加して問題が解決した場合は、その後パラメータを一つずつ取り除いて、どのパラメータが実際に問題の解決になっているかを確かめるべきです。実際の問題が SATA の電源管理に関係していて、問題を実際に解決するパラメータが {{ic|1=ahci.mobile_lpm_policy=1}} である場合、cstate やディスプレイの電源管理が無効化されている状態でマシンを走らせることは推奨されていません。&lt;br /&gt;
&lt;br /&gt;
詳細は [https://linuxreviews.org/Intel_graphics#Kernel_Parameters Linux Reviews] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 高い C ステートで S3 スリープから復帰しなくなってしまう ====&lt;br /&gt;
&lt;br /&gt;
システムが低頻度で復帰後に黒画面になるが、たいていは正常に復帰できてジャーナルに {{ic|CPU pipe A FIFO underrun}} というメッセージ記録され、かつ {{ic|1=intel_idle.max_cstate=1}} で C ステートを制限すると正常に復帰できるようになる場合、[[電源管理/サスペンドとハイバネート#スリープフック|スリープフック]]と {{man|1|cpupower-idle-set}} を使えば、{{ic|-D0}} と {{ic|-E}} オプションでサスペンドサイクル中に C ステートを効果的に制御することができます。[https://bbs.archlinux.org/viewtopic.php?pid=2175597#p2175597] そうすることで、CPU を常に低い C ステートで動作させる必要がなくなります。&lt;br /&gt;
&lt;br /&gt;
=== 165Hz モニタのサポートを追加する ===&lt;br /&gt;
&lt;br /&gt;
一部の 165Hz モニタで、&#039;&#039;xrandr&#039;&#039; が 165Hz のオプションを表示しない場合があり、さらに [[#認識されない解像度を追加する]] の方法ではこれを解決できません。この場合、[https://unix.stackexchange.com/questions/680356/i915-driver-stuck-at-40hz-on-165hz-screen i915-driver-stuck-at-40hz-on-165hz-screen] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|/etc/initramfs-tools/hooks/edid}} を作成する以外にも、[[mkinitcpio]] フックを作成する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/initcpio/install/edid|&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
build() {&lt;br /&gt;
    add_file /lib/firmware/edid/edid.bin&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
help() {&lt;br /&gt;
    cat &amp;lt;&amp;lt;HELPEOF&lt;br /&gt;
This hook add support for 165Hz&lt;br /&gt;
HELPEOF&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|/etc/mkinitcpio.conf}} の HOOKS 配列に &#039;&#039;edid&#039;&#039; を末尾に追加してください。以下のように:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/mkinitcpio.conf|2=&lt;br /&gt;
HOOKS=(... fsck edid)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、[[Initramfs を再生成する|initramfs を再生成]]してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Raptor Lake と Alder Lake-P 上でスリープ/サスペンドから復帰するとフリーズする ===&lt;br /&gt;
&lt;br /&gt;
Raptor Lake 及び Alder Lake-P の 12 世代モバイルプロセッサを搭載する、様々な製造者のノート PC は、サスペンドからの復帰後にフリーズや黒画面が発生すると報告されています。これは、多くのノート PC 製造者が、iGPU に接続されているポートが間違って記述されている、不適切な VBT (Video BIOS Table) を使用しているからです (freedesktop のイシュー [https://gitlab.freedesktop.org/drm/intel/-/issues/5531 5531] [https://gitlab.freedesktop.org/drm/intel/-/issues/6401 6401] で説明されています)。この場合、ドキュメント化されているケースは全て、重複した eDP エントリに関連しています。&lt;br /&gt;
&lt;br /&gt;
ほとんどの製造者が、Windows が正しく動作するノート PC に向けて BIOS アップデートをリリース[https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7402 しない]ことを考えれば、この問題はカーネル側から対処するしかありません。この問題を防ぐ推奨される方法は、[https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7709 変更した VBT を読み込む]ことです。アイデアとしては、重複した eDP エントリを VBT から削除し、initramfs に変更した VBT を入れ、その VBT をカーネルパラメータ経由で i915 ドライバに渡します。&lt;br /&gt;
&lt;br /&gt;
以下のコマンドの出力を解析して、重複した eDP エントリを特定する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|# intel_vbt_decode /sys/kernel/debug/dri/1/i915_vbt|&lt;br /&gt;
 Child device info:&lt;br /&gt;
        Device handle: 0x0008 (LFP 1 (eDP))&lt;br /&gt;
        Device type: 0x1806 (unknown)&lt;br /&gt;
 ...&lt;br /&gt;
 Child device info:&lt;br /&gt;
        Device handle: 0x0080 (LFP 2 (eDP))&lt;br /&gt;
        Device type: 0x1806 (unknown)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
VBT をコピーし、16進数エディタで編集して、重複しているデバイスハンドルに対応するデバイスタイプを {{ic|00 00}} に変更します:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/kernel/debug/dri/0/i915_vbt &amp;gt; vbt&lt;br /&gt;
&lt;br /&gt;
 --- vbt&lt;br /&gt;
 +++ modified_vbt&lt;br /&gt;
 @@ -22,10 +22,10 @@&lt;br /&gt;
  00000150  00 08 00 20 00 08 00 10  00 08 00 02 00 08 00 01  |... ............|&lt;br /&gt;
  00000160  00 08 00 00 01 08 00 00  00 04 00 00 00 40 00 00  |.............@..|&lt;br /&gt;
  00000170  00 20 00 00 00 10 00 00  00 02 00 00 00 01 00 00  |. ..............|&lt;br /&gt;
 -00000180  00 00 01 00 00 02 8b 01  02 04 00 00 27 08 00 06  |............&#039;...|&lt;br /&gt;
 -00000190  18 00 00 00 00 00 00 00  00 00 00 00 00 0a 00 00  |................|&lt;br /&gt;
 +00000180  00 00 01 00 00 02 8b 01  02 04 00 00 27 08 00 00  |............&#039;...|&lt;br /&gt;
 +00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 0a 00 00  |................|&lt;br /&gt;
  000001a0  03 00 00 00 c0 00 40 00  20 00 00 00 00 00 00 00  |......@. .......|&lt;br /&gt;
 -000001b0  00 00 20 00 80 00 06 18  00 00 00 00 00 00 00 00  |.. .............|&lt;br /&gt;
 +000001b0  00 00 20 00 80 00 00 00  00 00 00 00 00 00 00 00  |.. .............|&lt;br /&gt;
  000001c0  00 00 00 00 07 00 00 00  00 00 00 c0 00 10 00 20  |............... |&lt;br /&gt;
  000001d0  00 00 00 00 00 00 00 00  00 20 00 04 00 d2 60 00  |......... ....`.|&lt;br /&gt;
  000001e0  10 10 00 23 21 10 00 00  00 00 00 07 00 00 02 00  |...#!...........|&lt;br /&gt;
&lt;br /&gt;
変更した VBT を読み込むには、{{ic|/lib/firmware/i915/modified_vbt}} に VBT をコピーし、そのファイルを initramfs に入れてください。[[mkinitcpio]] の場合は、{{ic|/etc/mkinitcpio.conf}} 内の {{ic|FILES}} 配列を使うことができます:&lt;br /&gt;
&lt;br /&gt;
 FILES=(/lib/firmware/i195/modified_vbt)&lt;br /&gt;
&lt;br /&gt;
[[Initramfs を再生成]]し、カーネルパラメータ {{ic|i915.vbt_firmware{{=}}i915/modified_vbt}} を使って新しいテーブルを i915 に渡してください。&lt;br /&gt;
&lt;br /&gt;
=== 色が抜けた ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、一部のモニターは Intel GPU から適切に認識されず、フルレンジ RGB モードにならないため、色が抜けてしまうことがあります。&lt;br /&gt;
&lt;br /&gt;
==== Wayland での色の問題を修正する ====&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/80-i915.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;module&amp;quot;, KERNEL==&amp;quot;i915&amp;quot;, RUN+=&amp;quot;/usr/local/bin/intel-wayland-fix-full-color&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/local/bin/intel-wayland-fix-full-color|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
readarray -t proptest_result &amp;lt;&amp;lt;&amp;lt;&amp;quot;$(/usr/bin/proptest -M i915 -D /dev/dri/card0 | grep -E &#039;Broadcast|Connector&#039;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for ((i = 0; i &amp;lt; ${#proptest_result[*]}; i += 2)); do&lt;br /&gt;
    connector=$(echo ${proptest_result[i]} | awk &#039;{print $2}&#039;)&lt;br /&gt;
    connector_id=$(echo ${proptest_result[i + 1]} | awk &#039;{print $1}&#039;)&lt;br /&gt;
&lt;br /&gt;
    /usr/bin/proptest -M i915 $connector connector $connector_id 1&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[GNOME]] を使用している場合、{{ic|&amp;lt;rgbrange&amp;gt;full&amp;lt;/rgbrange&amp;gt;}} を {{ic|~/.config/monitors.xml}} 設定ファイルに追加する[https://gitlab.gnome.org/GNOME/mutter/-/issues/1871#note_2090262 代替案]もあります。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/monitors.xml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;monitors version=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;configuration&amp;gt;&lt;br /&gt;
    &amp;lt;layoutmode&amp;gt;logical&amp;lt;/layoutmode&amp;gt;&lt;br /&gt;
    &amp;lt;logicalmonitor&amp;gt;&lt;br /&gt;
      &amp;lt;x&amp;gt;0&amp;lt;/x&amp;gt;&lt;br /&gt;
      &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
      &amp;lt;primary&amp;gt;yes&amp;lt;/primary&amp;gt;&lt;br /&gt;
      &amp;lt;monitor&amp;gt;&lt;br /&gt;
        &amp;lt;monitorspec&amp;gt;&lt;br /&gt;
          &amp;lt;connector&amp;gt;HDMI-1&amp;lt;/connector&amp;gt;&lt;br /&gt;
          &amp;lt;vendor&amp;gt;MetaProduct&amp;amp;apos;s Inc.&amp;lt;/vendor&amp;gt;&lt;br /&gt;
          &amp;lt;product&amp;gt;MetaMonitor&amp;lt;/product&amp;gt;&lt;br /&gt;
          &amp;lt;serial&amp;gt;0x123456&amp;lt;/serial&amp;gt;&lt;br /&gt;
        &amp;lt;/monitorspec&amp;gt;&lt;br /&gt;
        &amp;lt;mode&amp;gt;&lt;br /&gt;
          &amp;lt;width&amp;gt;1920&amp;lt;/width&amp;gt;&lt;br /&gt;
          &amp;lt;height&amp;gt;1080&amp;lt;/height&amp;gt;&lt;br /&gt;
          &amp;lt;rate&amp;gt;60.000&amp;lt;/rate&amp;gt;&lt;br /&gt;
        &amp;lt;/mode&amp;gt;&lt;br /&gt;
        &amp;lt;rgbrange&amp;gt;full&amp;lt;/rgbrange&amp;gt;&lt;br /&gt;
      &amp;lt;/monitor&amp;gt;&lt;br /&gt;
    &amp;lt;/logicalmonitor&amp;gt;&lt;br /&gt;
  &amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/monitors&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ディスプレイのレンジが変わったり、その他の方法でディスプレイの設定が変更されたりした場合、新しいレイアウトが {{ic|&amp;lt;rgbrange&amp;gt;full&amp;lt;/rgbrange&amp;gt;}} タグ無しで {{ic|monitors.xml}} に追加されるかもしれません。異なるレイアウトでも RGB レンジを一貫して設定するために、論理モニタの全てのエントリにこのタグを追加することを検討してください。&lt;br /&gt;
* GDM ログイン画面がフル RGB レンジを使用していない場合、ユーザーの {{ic|monitors.xml}} を gdm のホームディレクトリにコピーしてください。[[GDM#デフォルトのモニター設定をセットアップする]] を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== X11/Xorg での色の問題を修正する ====&lt;br /&gt;
&lt;br /&gt;
 # xrandr --output NAME_OF_YOUR_OUTPUT --set &amp;quot;Broadcast RGB&amp;quot; &amp;quot;Full&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== B580 で &amp;quot;bus error&amp;quot; により一部のプログラムを実行できない ===&lt;br /&gt;
&lt;br /&gt;
(vainfo、falkon、mpv など) 一部のプログラムを実行すると以下のようなエラーが発生する場合:&lt;br /&gt;
&lt;br /&gt;
 1234 bus error : vaapi&lt;br /&gt;
&lt;br /&gt;
考えられる原因は、BIOS/UEFI で ReBar (Resizable BAR) が無効化されていることです。一部のマザーボードでは、レガシーサポートが無い場合、UEFI モードがアクティブであるときにしか ReBar を有効化できません。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* https://01.org/linuxgraphics/documentation (サポートされているハードウェア一覧など)&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Intel graphics|2026-02-15|859434}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%93%E3%83%87%E3%82%AA%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%A9%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3&amp;diff=41334</id>
		<title>ハードウェアビデオアクセラレーション</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%93%E3%83%87%E3%82%AA%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%A9%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3&amp;diff=41334"/>
		<updated>2026-02-13T22:54:11Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[Category:X サーバー]]&lt;br /&gt;
[[en:Hardware video acceleration]]&lt;br /&gt;
[[ru:Hardware video acceleration]]&lt;br /&gt;
[[zh-hans:Hardware video acceleration]]&lt;br /&gt;
[[Wikipedia:Graphics processing unit#GPU accelerated video decoding and encoding|ハードウェアビデオアクセラレーション]]により、ビデオカードで動画をデコード/エンコードすることができ、CPU の負担を下げて電力を節約することができます。&lt;br /&gt;
&lt;br /&gt;
Linux でこれを実現する方法は複数存在します:&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Video Acceleration API|Video Acceleration API]] (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現する仕様とオープンソースライブラリです。Intel によって開発されました。&lt;br /&gt;
* [[Wikipedia:VDPAU|Video Decode and Presentation API for Unix]] (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。&lt;br /&gt;
* [https://gpuopen.com/advanced-media-framework/ Advanced Media Framework SDK] (AMF) は、マルチメディア処理のために AMD GPU に「部分的に」アクセスできるようにするオープンソースのフレームワークです。AMD によって開発されました。&lt;br /&gt;
* [[Wikipedia:Nvidia NVDEC|NVDEC]]/[[Wikipedia:Nvidia NVENC|NVENC]] - Fermi 以降の NVIDIA GPU によって使われている、ハードウェアビデオアクセラレーションのためのプロプライエタリ API。&lt;br /&gt;
* [https://www.khronos.org/blog/an-introduction-to-vulkan-video Vulkan Video] は、ハードウェアアクセラレートされたビデオエンコードとデコードをサポートするために開発された [[Vulkan]] グラフィックス API の拡張です。&lt;br /&gt;
&lt;br /&gt;
ドライバとアプリケーションのサポートの包括的な概要については、[[#比較一覧]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== Intel ===&lt;br /&gt;
&lt;br /&gt;
==== VA-API ====&lt;br /&gt;
&lt;br /&gt;
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/intel/media-driver/#supported-platforms Broadwell] [[wikipedia:Template:Intel_processor_roadmap|(2014)]] 及びそれ以降の HD Graphics シリーズ (例: Intel Arc) は {{Pkg|intel-media-driver}} によってサポートされています。&lt;br /&gt;
* [[wikipedia:Coffee_Lake|Coffee Lake]] (2017) までの GMA 4500 (2008) は {{Pkg|libva-intel-driver}} によってサポートされています。&lt;br /&gt;
* [[Wikipedia:Haswell (microarchitecture)#Haswell Refresh|Haswell Refresh]] から Skylake までの VP9 デコードと、Broadwell から Skylake までのハイブリッド VP8 エンコードは {{AUR|intel-hybrid-codec-driver-git}} によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Skylake 及びそれ以降は {{Pkg|linux-firmware-intel}} も必要です。}}&lt;br /&gt;
&lt;br /&gt;
[https://www.intel.com/content/www/us/en/developer/articles/technical/linuxmedia-vaapi.html VAAPI がサポートするハードウェアと機能] もご覧ください。&lt;br /&gt;
&lt;br /&gt;
==== Vulkan Video ====&lt;br /&gt;
&lt;br /&gt;
ANV オープンソース [[vulkan]] ドライバは、{{Pkg|vulkan-intel}} 経由で Vulkan Video のサポートを提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Vulkan Video を有効化するには、追加の設定が必要です。[[#Vulkan Video の設定]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== Intel Video Processing Library (Intel VPL) ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/intel/libvpl Intel VPL] を使用するには、ベースライブラリである {{Pkg|libvpl}} に加えて、以下のランタイム実装のうち少なくとも一つを[[インストール]]してください:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|vpl-gpu-rt}}: Tiger Lake 及びそれ以降の GPU に対するサポートを提供します&lt;br /&gt;
* {{Pkg|intel-media-sdk}} (開発中止): それより古い Intel GPU に対するサポートを提供します&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ===&lt;br /&gt;
&lt;br /&gt;
[[Nouveau]] オープンソースドライバーは VA-API に対応しています:&lt;br /&gt;
&lt;br /&gt;
* GeForce GTX 750 までの GeForce 8 シリーズ及びそれ以降の GPU は {{Pkg|mesa}} によってサポートされています。&lt;br /&gt;
* (現在 NVIDIA のバイナリドライバーから抽出される) {{AUR|nouveau-fw}} ファームウェアパッケージが [https://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware 必要] です。&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA]] プロプライエタリドライバは {{Pkg|nvidia-utils}} によって以下をサポートしています:&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:GeForce 8 series|GeForce 8 シリーズ]]及びそれ以降の GPU における VDPAU&lt;br /&gt;
* [[Wikipedia:Fermi (microarchitecture)|Fermi]] 及びそれ以降の GPU における NVDEC [https://developer.download.nvidia.com/assets/cuda/files/NVIDIA_Video_Decoder.pdf]&lt;br /&gt;
* [[Wikipedia:Kepler (microarchitecture)|Kepler]] 及びそれ以降の GPU における NVENC&lt;br /&gt;
* [[Wikipedia:Pascal (microarchitecture)|Pascal]] 及びそれ以降の GPU における Vulkan Video [https://developer.nvidia.com/vulkan/video/get-started]&lt;br /&gt;
&lt;br /&gt;
=== AMD/ATI ===&lt;br /&gt;
&lt;br /&gt;
[[AMD]] と [[ATI]] オープンソースドライバーは {{Pkg|mesa}} によって VA-API をサポートしています:&lt;br /&gt;
&lt;br /&gt;
* VA-API は Radeon HD 2000 及びそれ以降の GPU。&lt;br /&gt;
&lt;br /&gt;
RADV オープンソース [[vulkan]] ドライバは、{{Pkg|vulkan-radeon}} 経由で Vulkan Video サポートを提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Out of date|最新の AMD Media Framework は、オープンソースドライバ以外に追加のプロプライエタリなパッケージをもはや必要としていません。しかし、AUR のパッケージは更新されておらず、オープンな [[AMDGPU]] ドライバを使用する新しい &#039;&#039;amf&#039;&#039; パッケージもアップロードされていません。}}&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Radeon Rx 300 series|Fiji]] 及びそれ以降の GPU における AMF は {{AUR|amf-amdgpu-pro}} によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* [[Wikipedia:High Efficiency Video Coding|HEVC]] エンコードは [[Wikipedia:Radeon RX 5000 series|Navi]] より古い GPU では利用できない場合があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 変換レイヤー ===&lt;br /&gt;
&lt;br /&gt;
* {{App|libvdpau-va-gl|OpenGL/VAAPI バックエンドを用いた VDPAU ドライバ。H.264 のみ。|https://github.com/i-rinat/libvdpau-va-gl|{{Pkg|libvdpau-va-gl}}}}&lt;br /&gt;
* {{App|nvidia-vaapi-driver|VA-API を提供する [[CUDA]] NVDEC ベースのバックエンド。|https://github.com/elFarto/nvidia-vaapi-driver/|{{Pkg|libva-nvidia-driver}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|libva-nvidia-driver}} 実装によってハードウェアビデオデコードを使えるようにはなりますが、NVIDIA の電源管理に対する現状の制限により、デフォルトの設定では [https://github.com/elFarto/nvidia-vaapi-driver/issues/74 CPU によるビデオデコードよりも多くの電力を消費します]。&lt;br /&gt;
回避策は、NVIDIA ドライババージョン 580.105.08 以降を使用し、環境変数 {{ic|CUDA_DISABLE_PERF_BOOST{{=}}1}} を設定することです。}}&lt;br /&gt;
&lt;br /&gt;
== 確認 ==&lt;br /&gt;
&lt;br /&gt;
設定せずともシステムが完璧に動作する場合があります。なので、このセクションから読み始めて、システムの確認をすると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* コマンドラインサポートのある [[mpv#ハードウェアデコード|mpv]] は、ハードウェアアクセラレーションをテストするのにぴったりです。{{ic|1=mpv --hwdec=auto &#039;&#039;video_filename&#039;&#039;}} のログを見てください。詳細は [https://mpv.io/manual/stable/#options-hwdec hwdec] を参照。&lt;br /&gt;
* AMD、Intel、そして NVIDIA の場合、動画を再生しながら {{Pkg|nvtop}} を使うことで &amp;quot;DEC&amp;quot; (デコーダ) の使用率を確認できます。&lt;br /&gt;
* Intel GPU の場合、{{pkg|intel-gpu-tools}} を使って、{{ic|intel_gpu_top}} を root として実行することで、ビデオプレイバック中に GPU 使用率をモニタできます。ビデオバーが 0% よりも上にあれば、GPU のビデオデコーダ/エンコーダが使用されていることを示します。([[インテルグラフィックス#試験的な新しい Xe ドライバをテストする|新しい Xe ドライバ]]を使用している場合、{{ic|intel_gpu_top}} が[https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/174 エラーを出します]。確認するには {{ic|gputop}} を実行してみてください。[https://dri.freedesktop.org/docs/drm/gpu/i915.html#intel-gpu-basics vcs (Video Command Streamer) の値]が 0% より大きければ、GPU 動画デコード/エンコードが使用されていることを意味します。)&lt;br /&gt;
* AMD GPU の場合、{{Pkg|amdgpu_top}} を使用して GPU 使用率をモニタできます。&lt;br /&gt;
* 任意の GPU において、{{Pkg|htop}} のようなツールで CPU 使用率を比較できます。特に、高解像度なビデオ (4k 以上) において、VA-API が有効化されていて動作しているときの CPU 使用率は、ノート PC や他の比較的低電力なデバイスにおいて劇的に低いはずです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== VA-API の確認 ===&lt;br /&gt;
&lt;br /&gt;
VA-API の設定は {{Pkg|libva-utils}} パッケージに含まれている {{ic|vainfo}} を実行することで確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ vainfo|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
libva info: VA-API version 0.39.4&lt;br /&gt;
libva info: va_getDriverName() returns 0&lt;br /&gt;
libva info: Trying to open /usr/lib/dri/i965_drv_video.so&lt;br /&gt;
libva info: Found init function __vaDriverInit_0_39&lt;br /&gt;
libva info: va_openDriver() returns 0&lt;br /&gt;
vainfo: VA-API version: 0.39 (libva 1.7.3)&lt;br /&gt;
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3&lt;br /&gt;
vainfo: Supported profile and entrypoints&lt;br /&gt;
      VAProfileMPEG2Simple            :	VAEntrypointVLD&lt;br /&gt;
      VAProfileMPEG2Simple            :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileMPEG2Main              :	VAEntrypointVLD&lt;br /&gt;
      VAProfileMPEG2Main              :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD&lt;br /&gt;
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP&lt;br /&gt;
      VAProfileH264Main               :	VAEntrypointVLD&lt;br /&gt;
      VAProfileH264Main               :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileH264Main               :	VAEntrypointEncSliceLP&lt;br /&gt;
      VAProfileH264High               :	VAEntrypointVLD&lt;br /&gt;
      VAProfileH264High               :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileH264High               :	VAEntrypointEncSliceLP&lt;br /&gt;
      VAProfileH264MultiviewHigh      :	VAEntrypointVLD&lt;br /&gt;
      VAProfileH264MultiviewHigh      :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileH264StereoHigh         :	VAEntrypointVLD&lt;br /&gt;
      VAProfileH264StereoHigh         :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileVC1Simple              :	VAEntrypointVLD&lt;br /&gt;
      VAProfileVC1Main                :	VAEntrypointVLD&lt;br /&gt;
      VAProfileVC1Advanced            :	VAEntrypointVLD&lt;br /&gt;
      VAProfileNone                   :	VAEntrypointVideoProc&lt;br /&gt;
      VAProfileJPEGBaseline           :	VAEntrypointVLD&lt;br /&gt;
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture&lt;br /&gt;
      VAProfileVP8Version0_3          :	VAEntrypointVLD&lt;br /&gt;
      VAProfileVP8Version0_3          :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileHEVCMain               :	VAEntrypointVLD&lt;br /&gt;
      VAProfileHEVCMain               :	VAEntrypointEncSlice&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
あなたのカードを使ってデコードできるフォーマットが {{ic|VAEntrypointVLD}} で、エンコードできるフォーマットが {{ic|VAEntrypointEncSlice}} で示されます。&lt;br /&gt;
&lt;br /&gt;
上の例では、以下の行があることから {{ic|i965}} ドライバーが使われていることが確認できます:&lt;br /&gt;
&lt;br /&gt;
 vainfo: Driver version: Intel &#039;&#039;&#039;i965&#039;&#039;&#039; driver for Intel(R) Skylake - 1.7.3&lt;br /&gt;
&lt;br /&gt;
{{ic|vainfo}} を実行したときに以下のようなエラーが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 libva info: va_openDriver() returns -1&lt;br /&gt;
 vaInitialize failed with error code -1 (unknown libva error),exit&lt;br /&gt;
&lt;br /&gt;
適切なドライバーを設定する必要があります。[[#VA-API の設定]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== VDPAU の確認 ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|vdpauinfo}} をインストールしてから、以下のコマンドを実行してください。VDPAU ドライバーがロードされていることや、現在の設定が確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ vdpauinfo|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
display: :0   screen: 0&lt;br /&gt;
API version: 1&lt;br /&gt;
Information string: OpenGL/VAAPI backend for VDPAU&lt;br /&gt;
&lt;br /&gt;
Video surface:&lt;br /&gt;
&lt;br /&gt;
name   width height types&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
420     4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 &lt;br /&gt;
422     4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 &lt;br /&gt;
444     4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 &lt;br /&gt;
420_16  4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 &lt;br /&gt;
422_16  4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 &lt;br /&gt;
444_16  4096  4096  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 NV24 YV24 P010 P016 Y_U_V_444_16 &lt;br /&gt;
&lt;br /&gt;
Decoder capabilities:&lt;br /&gt;
&lt;br /&gt;
name                        level macbs width height&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
MPEG1                          --- not supported ---&lt;br /&gt;
MPEG2_SIMPLE                   --- not supported ---&lt;br /&gt;
MPEG2_MAIN                     --- not supported ---&lt;br /&gt;
H264_BASELINE                  51 16384  2048  2048&lt;br /&gt;
H264_MAIN                      51 16384  2048  2048&lt;br /&gt;
H264_HIGH                      51 16384  2048  2048&lt;br /&gt;
VC1_SIMPLE                     --- not supported ---&lt;br /&gt;
VC1_MAIN                       --- not supported ---&lt;br /&gt;
VC1_ADVANCED                   --- not supported ---&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Vulkan Video の確認 ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|vulkan-tools}} をインストールし、&#039;&#039;vulkaninfo&#039;&#039; を使ってビデオ処理拡張が利用可能であるかを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ vulkaninfo {{!}} grep VK_KHR_video_|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
	VK_KHR_video_decode_av1                       : extension revision 1&lt;br /&gt;
	VK_KHR_video_decode_h264                      : extension revision 9&lt;br /&gt;
	VK_KHR_video_decode_h265                      : extension revision 8&lt;br /&gt;
	VK_KHR_video_decode_queue                     : extension revision 8&lt;br /&gt;
	VK_KHR_video_encode_h264                      : extension revision 14&lt;br /&gt;
	VK_KHR_video_encode_h265                      : extension revision 14&lt;br /&gt;
	VK_KHR_video_encode_queue                     : extension revision 12&lt;br /&gt;
	VK_KHR_video_maintenance1                     : extension revision 1&lt;br /&gt;
	VK_KHR_video_queue                            : extension revision 8&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
{{Out of date|{{Pkg|mesa}} 25.3.0 以降、オープンソースドライバから VDPAU のサポートが[https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36632 削除されました]。以下の例の {{ic|radeonsi}} ドライバもその対象です。}}&lt;br /&gt;
&lt;br /&gt;
ビデオドライバは VA-API と VDPAU の両方に対してハードウェアビデオアクセラレーションのサポートを自動的に有効化するはずですが、場合によっては手動で VA-API/VDPAU を手動で設定する必要があります。[[#確認]] セクションを見た場合にのみ、このセクションを読み進めてください。&lt;br /&gt;
&lt;br /&gt;
(他に設定が存在しない場合に使用される) デフォルトのドライバ名はシステムによって推測されます。しかし、それらはしばしばトリッキーで、機能しないこともあります。推測された値は [[Xorg]] のログファイルに出力されます。ログファイルは、Xorg が rootless の場合は {{ic|~/.local/share/xorg/Xorg.0.log}}、Xorg が root として実行されている場合は {{ic|/var/log/Xorg.0.log}} です。ログファイルからある値を検索するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ grep -iE &#039;vdpau {{!}} dri driver&#039; &#039;&#039;xorg_のログファイル&#039;&#039;|&lt;br /&gt;
(II) RADEON(0): [DRI2] DRI driver: radeonsi&lt;br /&gt;
(II) RADEON(0): [DRI2] VDPAU driver: radeonsi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この出力の場合、{{ic|radeonsi}} が VA-API と VDPAU のデフォルトです。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[GDM]] を使用している場合、代わりに {{ic|1=journalctl -b --grep=&#039;vdpau {{!}} dri driver&#039;}} を root として実行してください。}}&lt;br /&gt;
&lt;br /&gt;
しかし、これは &#039;&#039;設定&#039;&#039; を表すものではありません。上記の値は、オーバーライドしたとしても変更されません。&lt;br /&gt;
&lt;br /&gt;
=== VA-API の設定 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|LIBVA_DRIVER_NAME}} [[環境変数]] を使うことで、VA-API 用に使用するドライバをオーバーライドできます:&lt;br /&gt;
&lt;br /&gt;
* [[Intel Graphics]]:&lt;br /&gt;
** {{Pkg|libva-intel-driver}} の場合は {{ic|i965}} を使ってください。&lt;br /&gt;
** {{Pkg|intel-media-driver}} の場合は {{ic|iHD}} を使ってください。&lt;br /&gt;
* NVIDIA:&lt;br /&gt;
** [[Nouveau]] の場合は {{ic|nouveau}} を使ってください。&lt;br /&gt;
** [[NVIDIA]] NVDEC の場合は {{ic|nvidia}} を使ってください。&lt;br /&gt;
* AMD:&lt;br /&gt;
** [[AMDGPU]] ドライバの場合は {{ic|radeonsi}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* インストールされているドライバーは {{ic|/usr/lib/dri/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/dri/&#039;&#039;&#039;${LIBVA_DRIVER_NAME}&#039;&#039;&#039;_drv_video.so}} として使われます。&lt;br /&gt;
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/dri/* {{!}} sort}} を実行することで確認できます。&lt;br /&gt;
* {{ic|LIBVA_DRIVERS_PATH}} を使うことで VA-API ドライバーのパスを上書きできます。&lt;br /&gt;
* バージョン 12.0.1 から Mesa は {{ic|gallium}} の代わりとして {{ic|radeonsi}} を提供しています。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== VDPAU の設定 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|VDPAU_DRIVER}} [[環境変数]]を使うことで、VDPAU 用に使用するドライバをオーバーライドできます。&lt;br /&gt;
&lt;br /&gt;
適切なドライバ名は、あなたのセットアップに依存します:&lt;br /&gt;
&lt;br /&gt;
* オープンソースの AMD、Intel、Nouveau ドライバの場合、{{ic|va_gl}} に設定する[[#Failed to open VDPAU backend|必要があります]]。&lt;br /&gt;
* NVIDIA のプロプライエタリなバージョンの場合、{{ic|nvidia}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* インストールされているドライバーは {{ic|/usr/lib/vdpau/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/vdpau/libvdpau_&#039;&#039;&#039;${VDPAU_DRIVER}&#039;&#039;&#039;.so}} として使われます。&lt;br /&gt;
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/vdpau/*}} を実行することで確認できます。&lt;br /&gt;
* ハイブリッド構成 (NVIDIA と AMD の両方のカードが搭載されている) 場合、{{ic|DRI_PRIME}} [[環境変数]]を設定する必要があるかもしれません。詳しくは [[PRIME]] を参照。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Vulkan Video の設定 ===&lt;br /&gt;
&lt;br /&gt;
* [[インテルグラフィックス]]: {{Pkg|vulkan-intel}} の Vulkan Video サポートは {{ic|1=ANV_DEBUG=video-decode,video-encode}} [[環境変数]]で有効化できます。&lt;br /&gt;
* [[AMD]]: {{Pkg|vulkan-radeon}} の Vulkan Video サポートは、Mesa 25 以降、VCN 2、3、4+ ではデフォルトで有効化されています。それより古いカードでサポートを強制的に有効化するには、{{ic|RADV_PERFTEST}} [[環境変数]]に {{ic|video_decode,video_encode}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
一部の古い GPU モデルは [[Mesa]] での Vulkan Video のサポートがありません。そのような GPU で Vulkan Video サポートを強制的に有効化すると、一部のアプリケーションがクラッシュします場合があります (例えば、[https://gitlab.archlinux.org/archlinux/packaging/packages/mpv/-/issues/20#note_340586 mpv])。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションの設定 ===&lt;br /&gt;
&lt;br /&gt;
マルチメディアフレームワーク:&lt;br /&gt;
&lt;br /&gt;
* [[FFmpeg#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
* [[GStreamer#ハードウェアアクセラレーション]]&lt;br /&gt;
&lt;br /&gt;
ビデオプレイヤ:&lt;br /&gt;
&lt;br /&gt;
* [[Kodi#ヒントとテクニック]]&lt;br /&gt;
* [[MPlayer#ハードウェアアクセラレーション]]&lt;br /&gt;
* [[mpv#ハードウェアデコード]]&lt;br /&gt;
* [[VLC media player#ハードウェアアクセラレーションのサポート]]&lt;br /&gt;
&lt;br /&gt;
ウェブブラウザ:&lt;br /&gt;
&lt;br /&gt;
* [[Chromium#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
* [[Firefox#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
* [[GNOME Web#ハードウェアアクセラレーション]]&lt;br /&gt;
&lt;br /&gt;
マルチメディア録画/ストリーミング:&lt;br /&gt;
&lt;br /&gt;
* [[Open Broadcaster Software#ハードウェアアクセラレーション]]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Failed to open VDPAU backend ===&lt;br /&gt;
&lt;br /&gt;
適切なドライバを指すように {{ic|VDPAU_DRIVER}} 変数を設定する必要があります。[[#VDPAU の設定]] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mesa}} 25.3.0 以降、VDPAU のサポートがオープンソースなドライバから[https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36632 削除されました] ({{ic|d3d12}}、{{ic|nouveau}}、{{ic|r600}}、{{ic|radeonsi}}、{{ic|virtio_gpu}})。以前にこれらのドライバを使用していた場合、それらのパッケージを[[#変換レイヤー]]に置き換えるか、VA-API を直接使うようにアプリケーションを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== VAAPI init failed ===&lt;br /&gt;
&lt;br /&gt;
エラーは {{ic|libva: /usr/lib/dri/i965_drv_video.so init failed}} という行で確認できます。[[Wayland]] が正しく認識されていないことが原因で発生します。{{ic|$DISPLAY}} の設定を解除することで mpv, MPlayer, VLC などは X11 であると誤認しないようになります。mpv の場合は {{ic|1=--gpu-context=wayland}} パラメータを追加することでも解決できます。&lt;br /&gt;
&lt;br /&gt;
このエラーは、あなたのハードウェアに合わない VA-API ドライバをインストールした場合にも起こりえます。&lt;br /&gt;
&lt;br /&gt;
=== AMDGPU ドライバーを使用したビデオデコード時の破損や歪み ===&lt;br /&gt;
&lt;br /&gt;
[[AMDGPU]] ドライバーでビデオデコードの破損または歪みが発生する場合は、{{ic|1=allow_rgb10_configs=false}} [[環境変数]]を設定してください。[https://bugs.freedesktop.org/show_bug.cgi?id=106490]&lt;br /&gt;
&lt;br /&gt;
=== iHD 使用時に vainfo が失敗する ===&lt;br /&gt;
&lt;br /&gt;
以下のエラーが発生する場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ vainfo|&lt;br /&gt;
Trying display: wayland&lt;br /&gt;
Trying display: x11&lt;br /&gt;
error: can&#039;t connect to X server!&lt;br /&gt;
Trying display: drm&lt;br /&gt;
libva error: dlopen of /usr/lib64/dri/iHD_drv_video.so failed: /usr/lib64/dri/iHD_drv_video.so: undefined symbol: _ZN6GmmLib16GmmClientContext9GmmGetAILEv&lt;br /&gt;
vainfo: VA-API version: 1.22 (libva 2.22.0)&lt;br /&gt;
vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.4.1&lt;br /&gt;
vainfo: Supported profile and entrypoints&lt;br /&gt;
[...]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{AUR|intel-media-driver-legacy}} をレガシーではないパッケージの代わりにインストールしてみてください。これは、{{AUR|intel-compute-runtime-legacy}} とも動作します。[https://aur.archlinux.org/packages/intel-compute-runtime-legacy-bin#comment-1024408]&lt;br /&gt;
&lt;br /&gt;
== 比較一覧 ==&lt;br /&gt;
&lt;br /&gt;
=== VA-API ドライバ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! コーデック&lt;br /&gt;
! {{pkg|libva-intel-driver}} [https://github.com/01org/intel-vaapi-driver/blob/master/README]&lt;br /&gt;
! {{pkg|intel-media-driver}} [https://github.com/intel/media-driver/blob/master/README.md]&lt;br /&gt;
! {{pkg|mesa}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]&lt;br /&gt;
! {{Pkg|libva-nvidia-driver}}&amp;lt;br&amp;gt; (NVDEC アダプタ)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=5 | デコード&lt;br /&gt;
|-&lt;br /&gt;
! MPEG-2&lt;br /&gt;
| {{G|GMA 4500 から Ice Lake}}&lt;br /&gt;
| {{G|Broadwell 及びそれより新しいもの}}&lt;br /&gt;
| {{G|Radeon HD 6000 - Radeon RX 6000&amp;lt;br&amp;gt;GeForce 8 から GTX 750}}&lt;br /&gt;
| rowspan=10 | [[#NVIDIA ドライバのみ]] を参照&lt;br /&gt;
|-&lt;br /&gt;
! H.263/MPEG-4 Visual&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{G|Radeon HD 6000 - Radeon RX 6000}}&lt;br /&gt;
|-&lt;br /&gt;
! VC-1&lt;br /&gt;
| {{G|Sandy Bridge から Ice Lake}}&lt;br /&gt;
| rowspan=2 {{G|Broadwell 及びそれより新しいもの}}&lt;br /&gt;
| {{G|Radeon HD 2000 - Radeon RX 6000&amp;lt;br&amp;gt;GeForce 9300 から GTX 750}}&lt;br /&gt;
|-&lt;br /&gt;
! H.264/MPEG-4 AVC&lt;br /&gt;
| {{G|Ironlake から Ice Lake}}&lt;br /&gt;
| {{G|Radeon HD 2000 及びそれより新しいもの&amp;lt;br&amp;gt;GeForce 8 から GTX 750}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 8bit&lt;br /&gt;
| {{G|Cherryview/Braswell から Ice Lake}}&lt;br /&gt;
| {{G|Skylake and newer}}&lt;br /&gt;
| {{G|Radeon R9 Fury 及びそれより新しいもの}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 10bit&lt;br /&gt;
| {{G|Broxton から Ice Lake}}&lt;br /&gt;
| {{G|Broxton/Apollo Lake 及びそれより新しいもの}}&lt;br /&gt;
| {{G|Radeon 400 及びそれより新しいもの}}&lt;br /&gt;
|-&lt;br /&gt;
! VP8&lt;br /&gt;
| {{G|Broadwell から Ice Lake}}&lt;br /&gt;
| {{G|Broadwell 及びそれより新しいもの}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 8bit&lt;br /&gt;
| {{G|Broxton から Ice Lake &amp;lt;br&amp;gt; Hybrid: Haswell refresh から Skylake&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{G|Broxton/Apollo Lake 及びそれより新しいもの}}&lt;br /&gt;
| rowspan=2 {{G|Raven Ridge + Radeon RX 5000 及びそれより新しいもの}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 10bit &amp;amp; 12bit&lt;br /&gt;
| {{G|Kaby Lake から Ice Lake}}&lt;br /&gt;
| {{G|Kaby Lake 及びそれより新しいもの}}&lt;br /&gt;
|-&lt;br /&gt;
! AV1 8bit &amp;amp; 10bit&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{G|Tiger Lake 及びそれより新しいもの}}&lt;br /&gt;
| {{G|Radeon RX 6600 以上/それより新しいもの }}&lt;br /&gt;
|-&lt;br /&gt;
! colspan=5 | エンコード&lt;br /&gt;
|-&lt;br /&gt;
! MPEG-2&lt;br /&gt;
| {{G|Ivy Bridge から Ice Lake}}&lt;br /&gt;
| {{G|Broadwell 及びそれより新しいもの&amp;lt;br&amp;gt;Broxton/Apollo Lake を除く}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| rowspan=8 {{No}}&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! H.264/MPEG-4 AVC&lt;br /&gt;
| {{G|Sandy Bridge から Ice Lake}}&lt;br /&gt;
| {{G|Broadwell 及びそれより新しいもの}}&lt;br /&gt;
| {{G|Radeon HD 7000 及びそれより新しいもの}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 8bit&lt;br /&gt;
| {{G|Skylake から Ice Lake}}&lt;br /&gt;
| {{G|Skylake 及びそれより新しいもの}}&lt;br /&gt;
| {{G|Radeon 400 及びそれより新しいもの}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 10bit&lt;br /&gt;
| {{G|Kaby Lake から Ice Lake}}&lt;br /&gt;
| rowspan=2 {{G|Kaby Lake 及びそれより新しいもの}}&lt;br /&gt;
| {{G|Raven Ridge + Radeon RX 5000 及びそれより新しいもの}}&lt;br /&gt;
|-&lt;br /&gt;
! VP8&lt;br /&gt;
| {{G|Cherryview/Braswell から Ice Lake &amp;lt;br&amp;gt; Hybrid: Haswell から Skylake&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| rowspan=3 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 8bit&lt;br /&gt;
| {{G|Kaby Lake から Ice Lake}}&lt;br /&gt;
| rowspan=2 {{G|Ice Lake 及びそれより新しいもの}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 10bit &amp;amp; 12bit&lt;br /&gt;
| rowspan=2 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! AV1 8bit &amp;amp; 10bit&lt;br /&gt;
| {{G|Alchemist 及びそれより新しいもの}}&lt;br /&gt;
| {{G|Radeon RX 7900 以上/それより新しいもの}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# VA-API の制限により MPEG-4 Part 2 はデフォルトで無効化されています。それでも使用してみるには、[[環境変数]] {{ic|1=VAAPI_MPEG4_ENABLED=true}} を設定してください。&lt;br /&gt;
# Hybrid VP8 エンコーダと VP9 デコーダは {{AUR|intel-hybrid-codec-driver-git}} によってサポートされています。&lt;br /&gt;
# NVIDIA CUDA アダプタコーデックのサポートは活発に開発中であり、これは変更される可能性があります [https://github.com/elFarto/nvidia-vaapi-driver/issues/116]。&lt;br /&gt;
&lt;br /&gt;
=== VDPAU ドライバ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! コーデック&lt;br /&gt;
! 色深度&lt;br /&gt;
! {{pkg|nvidia-utils}}&lt;br /&gt;
! {{pkg|libvdpau-va-gl}}&amp;lt;br&amp;gt;(VA-API アダプタ)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=4 | デコード&lt;br /&gt;
|-&lt;br /&gt;
! MPEG-2&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|GeForce 8 及びそれより新しいもの}}&lt;br /&gt;
| rowspan=3 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! H.263/MPEG-4 Visual&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|GeForce 200 及びそれより新しいもの}}&lt;br /&gt;
|-&lt;br /&gt;
! VC-1&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|GeForce 8 及びそれより新しいもの&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
! H.264/MPEG-4 AVC&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|GeForce 8 及びそれより新しいもの}}&lt;br /&gt;
| [[#VA-API ドライバ]] を参照&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=2 | H.265/HEVC&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|GeForce 900 及びそれより新しいもの&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| rowspan=6 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! 10bit&lt;br /&gt;
| {{No}}&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=2 | VP9&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|GeForce 900 及びそれより新しいもの&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
! 10bit/12bit&lt;br /&gt;
| {{No}}&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=2 | AV1&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|RTX 30 series 及びそれより新しいもの}}&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! 10bit&lt;br /&gt;
| {{No}}&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# GeForce 8800 Ultra、8800 GTX、8800 GTS (320/640 MB) は[[Wikipedia:Nvidia PureVideo|除く]]。&lt;br /&gt;
# GeForce GTX 970 と GTX 980 は除く。&lt;br /&gt;
# NVIDIA の実装は8ビットストリームまでに制限されています [https://forums.developer.nvidia.com/t/vdpau-expose-hevc-main10-support-where-available-on-die/43163] [https://us.download.nvidia.com/XFree86/Linux-x86_64/410.57/README/vdpausupport.html#vdpau-implementation-limits]。&lt;br /&gt;
# ドライババージョン 510 から [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=NVIDIA-510-Linux-Beta]&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ドライバのみ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! rowspan=2 | コーデック&lt;br /&gt;
! colspan=2 | {{Pkg|nvidia-utils}} [https://developer.nvidia.com/nvidia-video-codec-sdk]&lt;br /&gt;
|-&lt;br /&gt;
! NVDEC&lt;br /&gt;
! NVENC&lt;br /&gt;
|-&lt;br /&gt;
! MPEG-2&lt;br /&gt;
| rowspan=3 {{G|Fermi 以降&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| rowspan=2 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! VC-1&lt;br /&gt;
|-&lt;br /&gt;
! H.264/MPEG-4 AVC&lt;br /&gt;
| {{G|Kepler 以降&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 8bit&lt;br /&gt;
| rowspan=2 {{G|Maxwell (GM206) 以降}}&lt;br /&gt;
| {{G|Maxwell (2nd Gen) 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 10bit&lt;br /&gt;
| {{G|Pascal 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! VP8&lt;br /&gt;
| {{G|Maxwell (2nd Gen) 以降}}&lt;br /&gt;
| rowspan=3 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 8bit&lt;br /&gt;
| {{G|Maxwell (GM206) 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 10bit &amp;amp; 12bit&lt;br /&gt;
| {{G|Pascal 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! AV1 8bit &amp;amp; 10bit&lt;br /&gt;
| {{G|Ampere 以降&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{G|Ada Lovelace 以降}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# GM108 は除く (未サポート)&lt;br /&gt;
# GM108 と GP108 は除く (未サポート)&lt;br /&gt;
# A100 は除く (未サポート)&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションサポート ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! rowspan=2 | アプリケーション&lt;br /&gt;
! colspan=4 | デコード&lt;br /&gt;
! colspan=3 | エンコード&lt;br /&gt;
! rowspan=2 | ドキュメント&lt;br /&gt;
|-&lt;br /&gt;
! VA-API&lt;br /&gt;
! VDPAU&lt;br /&gt;
! NVDEC&lt;br /&gt;
! Vulkan&lt;br /&gt;
! VA-API&lt;br /&gt;
! NVENC&lt;br /&gt;
! Vulkan&lt;br /&gt;
|-&lt;br /&gt;
! [[FFmpeg]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [[FFmpeg#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
|-&lt;br /&gt;
! [[GStreamer]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No|1=https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/393}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [[GStreamer#ハードウェアアクセラレーション]]&lt;br /&gt;
|-&lt;br /&gt;
! [[Kodi]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| [[Kodi#ヒントとテクニック]]&lt;br /&gt;
|-&lt;br /&gt;
! [[mpv]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| [[mpv#ハードウェアデコード]]&lt;br /&gt;
|-&lt;br /&gt;
! [[VLC media player]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No|1=https://code.videolan.org/videolan/vlc/-/issues/28362}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| [[VLC media player#ハードウェアアクセラレーションのサポート]]&lt;br /&gt;
|-&lt;br /&gt;
! [[MPlayer]]&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| [[MPlayer#ハードウェアアクセラレーション]]&lt;br /&gt;
|-&lt;br /&gt;
! [[Chromium]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| [[Chromium#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
|-&lt;br /&gt;
! [[Firefox]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No|1=https://bugzilla.mozilla.org/show_bug.cgi?id=1753129}}&lt;br /&gt;
| {{No|1=https://bugzilla.mozilla.org/show_bug.cgi?id=1658900}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| [[Firefox#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
|-&lt;br /&gt;
! [[GNOME/Web]]&lt;br /&gt;
| colspan=4 {{C|GStreamer}}&lt;br /&gt;
| {{C|?}}&lt;br /&gt;
| {{C|?}}&lt;br /&gt;
| {{C|?}}&lt;br /&gt;
| [[GNOME Web#ビデオ]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Hardware video acceleration|2026-02-14|865193}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=AMDGPU&amp;diff=41333</id>
		<title>AMDGPU</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=AMDGPU&amp;diff=41333"/>
		<updated>2026-02-13T21:57:32Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[Category:X サーバー]]&lt;br /&gt;
[[de:AMDGPU]]&lt;br /&gt;
[[hu:AMDGPU]]&lt;br /&gt;
[[en:AMDGPU]]&lt;br /&gt;
[[ru:AMDGPU]]&lt;br /&gt;
[[zh-hans:AMDGPU]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ATI}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Vulkan}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:AMDGPU|AMDGPU]] は [[wikipedia:ja:Graphics Core Next|Graphics Core Next]] ファミリの AMD Radeon グラフィックカード向けのオープンソースグラフィックドライバです。&lt;br /&gt;
&lt;br /&gt;
== 適切なドライバーの選択 ==&lt;br /&gt;
&lt;br /&gt;
自身のハードウェアを確認し、[[画像処理装置#インストール]] を読んで適切なドライバを探してください。このドライバは [https://www.x.org/wiki/RadeonFeature/ Southern Islands] (GCN 1。2012年リリース。) 及びそれ以降のカードをサポートしています。AMD には GCN より前の GPU をサポートする計画はありません。&lt;br /&gt;
&lt;br /&gt;
サポートされない GPU については、オープンソースの [[ATI]] ドライバを使用できます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mesa}} パッケージを[[インストール]]してください。これには、3D アクセラレーションのための DRI ドライバーと、[[#ビデオアクセラレーション|動画デコードのアクセラレーション]]のための VA-API/VDPAU ドライバの両方が含まれています。&lt;br /&gt;
&lt;br /&gt;
* 32ビットアプリケーションのサポートに関しては、[[multilib]] リポジトリから {{Pkg|lib32-mesa}} パッケージもインストールしてください。&lt;br /&gt;
* [[Xorg]] における 2D アクセラレーションに関しては、AMD 固有の DDX ドライバを提供する {{Pkg|xf86-video-amdgpu}} パッケージを任意でインストールしてもよいです。{{ic|amdgpu}} カーネルドライバを使用するほとんどの Xorg システムは、{{Pkg|xorg-server}} に組み込まれている汎用の &#039;&#039;modesetting&#039;&#039; DDX で正常に動作します。しかし、{{Pkg|xf86-video-amdgpu}} は、{{ic|TearFree}} などの機能を使用する場合や、&#039;&#039;Southern Islands&#039;&#039; などの一部の AMD ハードウェアでのハードウェア固有の問題を解決するために、必要となることがあります。[[インテルグラフィックス#インストール]] に書かれているノートを参照してください。&lt;br /&gt;
* [[Vulkan]]をサポートするには、{{Pkg|vulkan-radeon}} (32ビットアプリケーションの場合は {{Pkg|lib32-vulkan-radeon}}) をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
=== 試験的 ===&lt;br /&gt;
&lt;br /&gt;
一部のユーザーにとっては、mesa の上流の試験的ビルドを使用する価値があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
{{AUR|mesa-git}} パッケージをインストールしてください。これは 3D アクセラレーション用の DRI ドライバーを提供します。&lt;br /&gt;
&lt;br /&gt;
* 32 ビットアプリケーションのサポートに関しては、&#039;&#039;mesa-git&#039;&#039; リポジトリ、または [[AUR]] から {{AUR|lib32-mesa-git}} もインストールしてください。&lt;br /&gt;
* ([[Xorg]] で 2D アクセラレーションを提供する) DDX ドライバに関しては、{{AUR|xf86-video-amdgpu-git}} パッケージをインストールしてください。&lt;br /&gt;
* &#039;&#039;mesa-git&#039;&#039; リポジトリを使用する [[Vulkan]] サポートに関しては、&#039;&#039;vulkan-radeon-git&#039;&#039; パッケージをインストールしてください。任意で、32 ビットアプリケーションをサポートするために &#039;&#039;lib32-vulkan-radeon-git&#039;&#039; パッケージもインストールしてください。AUR から {{AUR|mesa-git}} をビルドする場合、これは必要ないはずです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{AUR|mesa-git}} パッケージのコンパイルを行いたくない場合は、[[非公式ユーザーリポジトリ#mesa-git|mesa-git]] 非公式リポジトリを使用できます。}}&lt;br /&gt;
&lt;br /&gt;
=== Southern Islands (SI) と Sea Islands (CIK) のサポートを有効化 ===&lt;br /&gt;
&lt;br /&gt;
[[カーネル#公式サポートカーネル|公式サポートカーネル]]では、Southern Islands (GCN 1。2012年リリース。) 及び Sea Islands (GCN 2。2013年リリース。) のカードの AMDGPU サポートが有効化されています。{{ic|amdgpu}} カーネルドライバは [[ATI|radeon]] ドライバより前にロードされる必要があります。どのカーネルドライバがロードされているかは {{ic|lspci -k}} で確認できます。以下のように出力されるはずです:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lspci -k -d ::03xx|&lt;br /&gt;
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Curacao PRO [Radeon R7 370 / R9 270/370 OEM]&lt;br /&gt;
	Subsystem: Gigabyte Technology Co., Ltd Device 226c&lt;br /&gt;
	Kernel driver in use: amdgpu&lt;br /&gt;
	Kernel modules: radeon, amdgpu&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|amdgpu}} ドライバが使用されていない場合、次のセクションの指示に従ってください。&lt;br /&gt;
&lt;br /&gt;
==== amdgpu ドライバをロード ====&lt;br /&gt;
&lt;br /&gt;
{{ic|amdgpu}} モジュールと {{ic|radeon}} モジュールの両方の[[モジュールパラメータ]]は {{ic|1=cik_support=}} と {{ic|1=si_support=}} です。&lt;br /&gt;
&lt;br /&gt;
これらは、カーネルパラメータまたは &#039;&#039;modprobe&#039;&#039; 設定ファイルで設定する必要があり、カードの GCN バージョンによって異なります。&lt;br /&gt;
&lt;br /&gt;
どのカーネルカードを使用しているか不確かな場合は、両方のパラメータを使うことができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[dmesg]] は、使用すべき正しい方のカーネルパラメータを示してくれる場合があります: {{ic|1=[..] amdgpu 0000:01:00.0: Use radeon.cik_support=0 amdgpu.cik_support=1 to override}}}}&lt;br /&gt;
&lt;br /&gt;
===== カーネルコマンドラインでモジュールパラメータを設定 =====&lt;br /&gt;
&lt;br /&gt;
次のいずれかの[[カーネルパラメータ]]を設定してください:&lt;br /&gt;
&lt;br /&gt;
* Southern Islands (SI): {{ic|1=radeon.si_support=0 amdgpu.si_support=1}}&lt;br /&gt;
* Sea Islands (CIK): {{ic|1=radeon.cik_support=0 amdgpu.cik_support=1}}&lt;br /&gt;
&lt;br /&gt;
さらに、統合 Sea Island (GCN 1.1) カードと AMD A10 APU を使用する場合、正しくブートさせるには Radeon Dynamic Power Management を無効化しておく必要がある場合があります。この機能には、グラフィックコアのクロックを動的に調整することで、APU の温度を下げ、静音性を高める目的があります。しかし、この機能のせいで再起動の無限ループに陥ることがあります。無効化するには、上記の手順に従い、{{ic|1=radeon.dpm=0}} をブートオプションに追加してください。&lt;br /&gt;
&lt;br /&gt;
==== 正しいモジュール順序を指定 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|amdgpu}} が [[Mkinitcpio#MODULES]] 配列の1番目のモジュールとして設定されていることを確認してください。例えば、{{ic|1=MODULES=(amdgpu radeon)}}。&lt;br /&gt;
&lt;br /&gt;
===== カーネルモジュールパラメータを設定 =====&lt;br /&gt;
&lt;br /&gt;
Southern Islands (SI) の場合は {{ic|1=si_support=1}} [[カーネルモジュールパラメータ]]を、Sea Islands (CIK) の場合は {{ic|1=cik_support=1}} を使用してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/amdgpu.conf|2=&lt;br /&gt;
options amdgpu si_support=1&lt;br /&gt;
options amdgpu cik_support=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/radeon.conf|2=&lt;br /&gt;
options radeon si_support=0&lt;br /&gt;
options radeon cik_support=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|modconf}} が {{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} 配列にあることを確認し、[[Initramfs を再生成する|initramfs を再生成]]してください。&lt;br /&gt;
&lt;br /&gt;
===== amdgpu ドライバをサポートするカーネルをコンパイル =====&lt;br /&gt;
&lt;br /&gt;
[[カーネル]]をビルド/コンパイルする場合、{{ic|1=CONFIG_DRM_AMDGPU_SI=Y}} と {{ic|1=CONFIG_DRM_AMDGPU_CIK=Y}} の一方/両方を config で設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== ACO コンパイラ ===&lt;br /&gt;
&lt;br /&gt;
[https://steamcommunity.com/games/221410/announcements/detail/1602634609636894200 ACO コンパイラ]はオープンソースのシェーダコンパイラであり、[https://llvm.org/ LLVM コンパイラ]や [https://github.com/GPUOpen-Drivers/AMDVLK AMDVLK ドライバ]、[[wikipedia:ja:Microsoft Windows 10|Windows 10]] に直接対抗するために [[wikipedia:ja:Valve Corporation|Valve Corporation]] によって作成・開発されています。LLVM と AMDVLK よりも短いコンパイル時間と、ゲームでのより良いパフォーマンスを提供します。&lt;br /&gt;
&lt;br /&gt;
いくつかのベンチマークは [https://gist.github.com/pendingchaos/aba1e4c238cf039d17089f29a8c6aa63 GitHub] や Phoronix [https://www.phoronix.com/scan.php?page=article&amp;amp;item=radv-aco-llvm&amp;amp;num=1][https://www.phoronix.com/scan.php?page=article&amp;amp;item=radv-aco-gcn10&amp;amp;num=1] で見られます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mesa}} バージョン [https://docs.mesa3d.org/relnotes/20.2.0.html#new-features 20.2] から、ACO はデフォルトのシェーダコンパイラとなっています。&lt;br /&gt;
&lt;br /&gt;
== ロード ==&lt;br /&gt;
&lt;br /&gt;
{{ic|amdgpu}} カーネルモジュールはシステムの起動時に自動的にロードされることになっています。&lt;br /&gt;
&lt;br /&gt;
ロードされない場合:&lt;br /&gt;
&lt;br /&gt;
* 必要な場合は [[#Southern Islands (SI) と Sea Islands (CIK) のサポートを有効化]]していることを確認してください。&lt;br /&gt;
* 最新の {{Pkg|linux-firmware-amdgpu}} パッケージがインストールされていることを確認してください。このドライバは、正しくブートするために各モデルの最新のファームウェアを必要とします。&lt;br /&gt;
* [[カーネルパラメータ]]に {{ic|nomodeset}} や {{ic|1=vga=}} を指定して&#039;&#039;&#039;いない&#039;&#039;&#039;ことを確認してください。{{ic|amdgpu}} は [[KMS]] を必要とするからです。&lt;br /&gt;
* [[カーネルモジュール#ブラックリスト|カーネルモジュールのブラックリスト]]で {{ic|amdgpu}} が無効になっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
読み込むことはできるが、X サーバが必要とする時よりも後になってしまう場合、[[カーネルモード設定#KMS の早期開始]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== Xorg の設定 ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] は自動的にドライバをロードし、モニタの EDID を使ってネイティブの解像度を設定してくれます。設定が必要になるのは、ドライバをチューニングする場合のみです。&lt;br /&gt;
&lt;br /&gt;
手動で設定したい場合、{{ic|/etc/X11/xorg.conf.d/20-amdgpu.conf}} を作成して、以下を記述してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-amdgpu.conf|2=&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
     Identifier &amp;quot;AMD&amp;quot;&lt;br /&gt;
     MatchDriver &amp;quot;amdgpu&amp;quot;&lt;br /&gt;
     Driver &amp;quot;amdgpu&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このセクションを使って、機能を有効化したりドライバの設定を調整したりできます。ドライバオプションを設定する前に、まず {{man|4|amdgpu}} を見てください。&lt;br /&gt;
&lt;br /&gt;
=== TearFree レンダリング ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TearFree&#039;&#039; は、ハードウェアのページフリッピング機構を使ってティアリング防止を制御します。デフォルトでは、TearFree は、回転された出力、RandR 変換が適用された出力、RandR 1.4 スレーブ出力に対してオンになり、それら以外ではオフになります。{{ic|true}} か {{ic|false}} を指定することで、常にオンにしたり、常にオフにしたりもできます。&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;TearFree&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[xrandr]] を使用して TearFree を一時的に有効にすることもできます:&lt;br /&gt;
&lt;br /&gt;
 $ xrandr --output &#039;&#039;output&#039;&#039; --set TearFree on&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;output&#039;&#039;}} は {{ic|DisplayPort-0}} や {{ic|HDMI-A-0}} のような形式である必要があります。この値は {{ic|xrandr -q}} で取得できます。&lt;br /&gt;
&lt;br /&gt;
=== DRI レベル ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;DRI&#039;&#039; は、有効にする DRI の最大レベルを設定します。有効な値は、DRI2 の場合は &#039;&#039;2&#039;&#039;、 DRI3 の場合は &#039;&#039;3&#039;&#039; です。 [[Xorg]] バージョンが 1.18.3 以降の場合、DRI3 のデフォルトは &#039;&#039;3&#039;&#039; です。それ以外の場合、 DRI2 が使用されます:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;DRI&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 可変リフレッシュレート ===&lt;br /&gt;
&lt;br /&gt;
[[可変リフレッシュレート]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 10 ビットカラー ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|10 ビットカラーを有効化すると、多くのアプリケーションでグラフィックの乱れやクラッシュを引き起こす場合があります。これには特に [[Steam/トラブルシューティング#Steam: An X Error occurred|Steam]] が含まれ、X Error によりクラッシュします。}}&lt;br /&gt;
&lt;br /&gt;
新しい AMD カードは 10bpc カラーをサポートしていますが、デフォルトは 24 ビットカラーであり、30 ビットカラーは明示的に有効にする必要があります。アプリケーションがこれもサポートしている場合、これを有効にすると、グラデーションの目に見えるバンディング/グラフィックの乱れを減らすことができます。モニターがサポートしているかどうかを確認するには、[[Xorg#一般|Xorg ログファイル]]で &#039;&#039;EDID&#039;&#039; を検索してください (例:{{ic|/var/log/Xorg.0.log}} または {{ic|~/.local/share/xorg/Xorg.0.log}}):&lt;br /&gt;
&lt;br /&gt;
 [   336.695] (II) AMDGPU(0): EDID for output DisplayPort-0&lt;br /&gt;
 [   336.695] (II) AMDGPU(0): EDID for output DisplayPort-1&lt;br /&gt;
 [   336.695] (II) AMDGPU(0): Manufacturer: DEL  Model: a0ec  Serial#: 123456789&lt;br /&gt;
 [   336.695] (II) AMDGPU(0): Year: 2018  Week: 23&lt;br /&gt;
 [   336.695] (II) AMDGPU(0): EDID Version: 1.4&lt;br /&gt;
 [   336.695] (II) AMDGPU(0): Digital Display Input&lt;br /&gt;
 &#039;&#039;&#039;[   336.695] (II) AMDGPU(0): 10 bits per channel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
現在有効になっているかどうかを確認するには、&#039;&#039;Depth&#039;&#039; を検索してください:&lt;br /&gt;
&lt;br /&gt;
 [   336.618] (**) AMDGPU(0): Depth 30, (--) framebuffer bpp 32&lt;br /&gt;
 [   336.618] (II) AMDGPU(0): Pixel depth = 30 bits stored in 4 bytes (32 bpp pixmaps)&lt;br /&gt;
&lt;br /&gt;
デフォルトの設定では、24 であると表示されます (24 ビットが 4 バイトに格納されている)。&lt;br /&gt;
&lt;br /&gt;
10ビットが機能するかどうかを確認するには、Xorg を実行している場合は終了し、白黒の縞模様を表示する {{ic|Xorg -retro}} を実行し、{{ic|Ctrl-Alt-F1}} と {{ic|Ctrl-C}} を押して X を終了し、{{ic|Xorg -depth 30 -retro}} を実行してください。これが正常に機能する場合は、10ビットが機能しています。&lt;br /&gt;
&lt;br /&gt;
{{ic|startx}} を介して10ビットで起動するには、{{ic|startx -- -depth 30}} を使用してください。永続的に有効にするには、以下を作成または追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-amdgpu.conf|2=&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
	Identifier &amp;quot;asdf&amp;quot;&lt;br /&gt;
	DefaultDepth 30&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 出力のレイテンシを減らす ===&lt;br /&gt;
&lt;br /&gt;
レイテンシを最小化したい場合、ページフリッピングや TearFree を無効化できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-amdgpu.conf|2=&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
     Identifier &amp;quot;AMD&amp;quot;&lt;br /&gt;
     MatchDriver &amp;quot;amdgpu&amp;quot;&lt;br /&gt;
     Driver &amp;quot;amdgpu&amp;quot;&lt;br /&gt;
     Option &amp;quot;EnablePageFlip&amp;quot; &amp;quot;off&amp;quot;&lt;br /&gt;
     Option &amp;quot;TearFree&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
レイテンシを更に減らしたい場合は [[ゲーム#DRI の遅延を軽減する]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのオプションを設定すると、ティアリングや短時間のアーティファクトが発生する場合があります。}}&lt;br /&gt;
&lt;br /&gt;
== 機能 ==&lt;br /&gt;
&lt;br /&gt;
=== ビデオアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
[[ハードウェアビデオアクセラレーション#AMD/ATI]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== モニタリング ===&lt;br /&gt;
&lt;br /&gt;
GPU の温度や P-state を確認したい場合に GPU のモニタリングはしばしば行われます。CLI ツールと GUI ツールのリストは [[画像処理装置#モニタリング]] を見てください。&lt;br /&gt;
&lt;br /&gt;
個々のパーツを手動でモニタリングしたい場合は (例えば、スクリプト内で使いたい場合)、情報は全て {{ic|/sys/}} で入手できます。その他のパーツや詳細については、[https://docs.kernel.org/gpu/amdgpu/thermal.html The Linux Kernel - GPU Power/Thermal Controls and Monitoring] を参照してください。&lt;br /&gt;
&lt;br /&gt;
以下のコマンドでは、システム内にある GPU の数によっては {{ic|card0}} の部分を他の値 (例: {{ic|card1}}) に置き換える必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
GPU の P-state を確認するには、以下を実行:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/class/drm/card0/device/pp_od_clk_voltage&lt;br /&gt;
&lt;br /&gt;
GPU をモニタリングするには、以下を実行:&lt;br /&gt;
&lt;br /&gt;
# watch -n 0.5 cat /sys/kernel/debug/dri/0/amdgpu_pm_info&lt;br /&gt;
&lt;br /&gt;
GPU 使用率 (%) を確認するには、以下を実行:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/class/drm/card0/device/gpu_busy_percent&lt;br /&gt;
&lt;br /&gt;
GPU のクロックを確認するには、以下を実行:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/class/drm/card0/device/pp_dpm_sclk&lt;br /&gt;
&lt;br /&gt;
GPU 温度 (ミリ°C) を確認するには、以下を実行:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/class/drm/card0/device/hwmon/hwmon*/temp1_input&lt;br /&gt;
&lt;br /&gt;
VRAM のクロックを確認するには、以下を実行:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/class/drm/card0/device/pp_dpm_mclk&lt;br /&gt;
&lt;br /&gt;
VRAM の使用量 (バイト) を確認するには、以下を実行:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/class/drm/card0/device/mem_info_vram_used&lt;br /&gt;
&lt;br /&gt;
VRAM のサイズ (バイト) を確認するには、以下を実行:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/class/drm/card0/device/mem_info_vram_total&lt;br /&gt;
&lt;br /&gt;
=== オーバークロック ===&lt;br /&gt;
&lt;br /&gt;
Linux 4.17 以降、以下の機能をブート時に有効化すると、{{ic|/sys/class/drm/card0/device/pp_od_clk_voltage}} を介してグラフィックカードのクロックと電圧を調整できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== ブートパラメータ ====&lt;br /&gt;
&lt;br /&gt;
{{ic|1=amdgpu.ppfeaturemask=0xffffffff}} [[カーネルパラメータ]] を追加して、sysfs でクロックと電圧を調整するアクセスをアンロックする必要があります。&lt;br /&gt;
&lt;br /&gt;
すべてのビットが定義されているわけではありません。今後、新しい機能が追加されるかもしれません。32ビットすべてを設定すると、不安定な機能が有効化され、画面のチラツキやサスペンドからの復帰に失敗するなどの問題が発生する場合があります。デフォルトの ppfeaturemask と共に PP_OVERDRIVE_MASK ビット (0x4000) を設定すれば十分なはずです。あなたのシステムにおいて適切なパラメータを計算するには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ printf &#039;amdgpu.ppfeaturemask=0x%x\n&#039; &amp;quot;$(($(cat /sys/module/amdgpu/parameters/ppfeaturemask) | 0x4000))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== 手動 ====&lt;br /&gt;
&lt;br /&gt;
{{Note|sysfs では、{{ic|/sys/class/drm/...}} のようなパスはただのシンボリックリンクで、起動するごとに変化するかもしれません。永続的なパスは {{ic|/sys/devices/}} にあります (例: {{ic|/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/}})。信頼性の高い結果を得るには、コマンドを適宜調整してください。}}&lt;br /&gt;
&lt;br /&gt;
利用可能なオプションに関する詳細は、カーネルドキュメントの [https://docs.kernel.org/gpu/amdgpu/thermal.html#pp-od-clk-voltage amdgpu サーマルコントロール]に関する部分を読んでください。&lt;br /&gt;
&lt;br /&gt;
手動オーバークロックを有効にするには、[[#パフォーマンスレベル]] で説明されているように {{ic|manual}} パフォーマンスレベルを選択してください。&lt;br /&gt;
&lt;br /&gt;
例えば、Polaris GPU で最大 P-state 7 で GPU クロックを 1209MHz、電圧を 900mV に設定するには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;s 7 1209 900&amp;quot; &amp;gt; /sys/class/drm/card0/device/pp_od_clk_voltage&lt;br /&gt;
&lt;br /&gt;
同じ手順を VRAM に対しても適用できます (例えば、Polaris 5xx シリーズカードでの最大 P-state 2):&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;m 2 1850 850&amp;quot; &amp;gt; /sys/class/drm/card0/device/pp_od_clk_voltage&lt;br /&gt;
&lt;br /&gt;
{{Warning|入力した値をダブルチェックしてください。間違うと即座にハードウェアに深刻なダメージを引き起こすかもしれません!}}&lt;br /&gt;
&lt;br /&gt;
適用するには:&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;c&amp;quot; &amp;gt; /sys/class/drm/card0/device/pp_od_clk_voltage&lt;br /&gt;
&lt;br /&gt;
機能していることを確認するには、3D の負荷をかけている状態で、クロックと電圧を見てください:&lt;br /&gt;
&lt;br /&gt;
 # watch -n 0.5 cat /sys/kernel/debug/dri/0/amdgpu_pm_info&lt;br /&gt;
&lt;br /&gt;
以下でデフォルトの値にリセットできます:&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;r&amp;quot; &amp;gt; /sys/class/drm/card0/device/pp_od_clk_voltage&lt;br /&gt;
&lt;br /&gt;
例えば、超省電力 P-state における (画面のちらつきやカクつきなどの) 問題を回避した場合などは、ドライバが特定の P-state へ切り替えるのを禁止することも可能です。最も高い VRAM P-state を強制し、GPU 自体は引き続き低いクロックで動作できるようにするには、まず利用可能な最も高い P-state を調べ、それを設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /sys/class/drm/card0/device/pp_dpm_mclk|&lt;br /&gt;
0: 96Mhz *&lt;br /&gt;
1: 456Mhz&lt;br /&gt;
2: 675Mhz&lt;br /&gt;
3: 1000Mhz&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;manual&amp;quot; &amp;gt; /sys/class/drm/card0/device/power_dpm_force_performance_level&lt;br /&gt;
 # echo &amp;quot;3&amp;quot; &amp;gt;  /sys/class/drm/card0/device/pp_dpm_mclk&lt;br /&gt;
&lt;br /&gt;
上位3つの GPU P-state のみを許可するには:&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;5 6 7&amp;quot; &amp;gt; /sys/class/drm/card0/device/pp_dpm_sclk&lt;br /&gt;
&lt;br /&gt;
GPU の最大電力消費量を設定するには (例えば 50 ワット):&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;&#039;&#039;50&#039;&#039;&#039;000000 &amp;gt; /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap&lt;br /&gt;
&lt;br /&gt;
{{Note|上記の手順は Polaris RX 560 カードでテストされました。別の GPU では、異なる挙動やバグが存在するかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
==== アシスト付き ====&lt;br /&gt;
&lt;br /&gt;
GPU を手動でオーバークロックしたくない場合、AMD GPU のオーバークロックやモニタリングをアシストするいくつかのツールがコミュニティによって提供されています。&lt;br /&gt;
&lt;br /&gt;
===== CLI ツール =====&lt;br /&gt;
&lt;br /&gt;
* {{App|amdgpu-clocks|AMD GPU のモニタリングやカスタムの P-state を設定するために使用できるスクリプト。起動時に自動的に設定を適用する systemd サービスもあります。|https://github.com/sibradzic/amdgpu-clocks|{{AUR|amdgpu-clocks-git}}}}&lt;br /&gt;
* {{App|ruby-amdgpu_fan|amdgpu Linux ドライバと対話するための Ruby で書かれた CLI ツール|https://github.com/HarlemSquirrel/amdgpu-fan-rb|{{AUR|ruby-amdgpu_fan}}}}&lt;br /&gt;
&lt;br /&gt;
===== GUI ツール =====&lt;br /&gt;
&lt;br /&gt;
* {{App|TuxClocker|Qt5 のモニタリング・オーバークロックツール|https://github.com/Lurkki14/tuxclocker|{{AUR|tuxclocker}}}}&lt;br /&gt;
* {{App|CoreCtrl|アプリケーション毎のプロファイルをサポートする、WattMan ライクな UI の GUI オーバークロックツール。|https://gitlab.com/corectrl/corectrl|{{Pkg|corectrl}}}}&lt;br /&gt;
* {{App|LACT|AMD GPU の情報を見たり制御したりするための GTK ツール。|https://github.com/ilya-zlobintsev/LACT|{{Pkg|lact}}}}&lt;br /&gt;
* {{App|Radeon Profile|AMD Radeon カードの現在のクロックを読み込んだり変更したりする Qt5 ツール。|https://github.com/emerge-e-world/radeon-profile|{{AUR|radeon-profile-git}}}}&lt;br /&gt;
&lt;br /&gt;
==== ブート時のスタートアップ ====&lt;br /&gt;
&lt;br /&gt;
方法としては、一つは systemd ユニットを使うことです。起動時に設定を自動的に適用したい場合、起動時に設定を構成・適用することに関するこの [https://www.reddit.com/r/Amd/comments/agwroj/how_to_overclock_your_amd_gpu_on_linux/ Reddit スレッド]を見てみることを検討してください。&lt;br /&gt;
&lt;br /&gt;
もう一つの方法は udev ルールです。例えば、パフォーマンスレベルを落とす値を設定して電力消費量を削減するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/30-amdgpu-low-power.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;drm&amp;quot;, DRIVERS==&amp;quot;amdgpu&amp;quot;, ATTR{device/power_dpm_force_performance_level}=&amp;quot;low&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== パフォーマンスレベル ===&lt;br /&gt;
&lt;br /&gt;
AMDGPU にはいくつかのパフォーマンスレベルがあります。このレベルは power_dpm_force_performance_level ファイルで調整/確認することができます。以下のレベルから選択できます:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;auto&#039;&#039;&#039;: 現在の条件に合わせて、ドライバー内で最適な電源プロファイルを動的に選択します。&lt;br /&gt;
* &#039;&#039;&#039;low&#039;&#039;&#039;: クロック数は最低のパワーステートに強制されます。&lt;br /&gt;
* &#039;&#039;&#039;high&#039;&#039;&#039;: クロック数は最高のパワーステートに強制されます。&lt;br /&gt;
* &#039;&#039;&#039;manual&#039;&#039;&#039;: ユーザーは、各クロックドメインに対してどのパワーステートを有効化するかを手動で選択することができます ([[#電源プロファイル]]を設定する際に使用します)。&lt;br /&gt;
* &#039;&#039;&#039;profile_standard&#039;&#039;&#039;、&#039;&#039;&#039;profile_min_sclk&#039;&#039;&#039;、&#039;&#039;&#039;profile_min_mclk&#039;&#039;&#039;、&#039;&#039;&#039;profile_peak&#039;&#039;&#039;: クロックとパワーのゲーティングが無効化され、クロックはそれぞれのプロファイルに応じて設定されます。このモードは、特定のワークロードに対してプロファイルする際に推奨されます。&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行すると、AMDGPU デバイスをパフォーマンスレベル low に設定します:&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;low&amp;quot; &amp;gt; /sys/class/drm/card0/device/power_dpm_force_performance_level&lt;br /&gt;
&lt;br /&gt;
{{Note|パフォーマンスレベルは起動のたびに再設定する必要があります。設定を自動化する方法は [[#ブート時のスタートアップ]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
=== 電源プロファイル ===&lt;br /&gt;
&lt;br /&gt;
AMDGPU は電源プロファイルによるいくつかの最適化を提供します。最も一般的に使用されるのは、OpenCL を多用するアプリケーションのためのコンピュートモードです。利用可能な電源プロファイルは以下のように一覧表示できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /sys/class/drm/card0/device/pp_power_profile_mode|&lt;br /&gt;
NUM        MODE_NAME     SCLK_UP_HYST   SCLK_DOWN_HYST SCLK_ACTIVE_LEVEL     MCLK_UP_HYST   MCLK_DOWN_HYST MCLK_ACTIVE_LEVEL&lt;br /&gt;
  0   BOOTUP_DEFAULT:        -                -                -                -                -                -&lt;br /&gt;
  1   3D_FULL_SCREEN:        0              100               30                0              100               10&lt;br /&gt;
  2     POWER_SAVING:       10                0               30                -                -                -&lt;br /&gt;
  3            VIDEO:        -                -                -               10               16               31&lt;br /&gt;
  4               VR:        0               11               50                0              100               10&lt;br /&gt;
  5        COMPUTE *:        0                5               30               10               60               25&lt;br /&gt;
  6           CUSTOM:        -                -                -                -                -                -&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|card0}} はマシンの特定の GPU を示します。複数の GPU が搭載されている場合、正しい GPU を選ぶように気をつけてください。}}&lt;br /&gt;
&lt;br /&gt;
特定の電源プロファイルを使用するには、まず GPU のマニュアルコントロールを有効化する必要があります:&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;manual&amp;quot; &amp;gt; /sys/class/drm/card0/device/power_dpm_force_performance_level&lt;br /&gt;
&lt;br /&gt;
その後、電源プロファイルを選択するには、そのプロファイルと関連付けられた NUM の値を書き込みます。例えば、COMPUTE を有効化するには:&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;5&amp;quot; &amp;gt; /sys/class/drm/card0/device/pp_power_profile_mode&lt;br /&gt;
&lt;br /&gt;
電源プロファイルの正確な値と制限は、&#039;&#039;powerplay table&#039;&#039; システムを通して管理されています。サポートされているモデル (Polaris から Navi2x まで。Navi3x と Navi4x はカーネルにバグがあります。) でこのテーブルを変更するには {{AUR|upliftpowerplay}} を使用してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|電源プロファイルの変更は起動するたびに適用する必要があります。これを自動化するには [[#ブート時のスタートアップ]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
=== GPU ディスプレイスケーリングを有効化 ===&lt;br /&gt;
&lt;br /&gt;
モニタのネイティブ解像度を使用しない場合、ディスプレイに内蔵されているスケーラを用いずに、GPU 自体のスケーラを使うには、以下を実行してください:&lt;br /&gt;
 $ xrandr --output &#039;&#039;output&#039;&#039; --set &amp;quot;scaling mode&amp;quot; &#039;&#039;scaling_mode&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;quot;scaling mode&amp;quot;}} に利用できる値は: {{ic|None}}, {{ic|Full}}, {{ic|Center}}, {{ic|Full aspect}}。&lt;br /&gt;
&lt;br /&gt;
* 利用可能な出力と設定を表示するには: {{bc|$ xrandr --prop}}&lt;br /&gt;
* 利用可能な全ての出力に {{ic|1=scaling mode = Full aspect}} を設定するには: {{bc|$ for output in $(xrandr --prop {{!}} grep -E -o -i &amp;quot;^[A-Z\-]+-[0-9]+&amp;quot;); do xrandr --output &amp;quot;$output&amp;quot; --set &amp;quot;scaling mode&amp;quot; &amp;quot;Full aspect&amp;quot;; done}}&lt;br /&gt;
&lt;br /&gt;
=== ヘッドレス環境での仮想ディスプレイ ===&lt;br /&gt;
&lt;br /&gt;
AMDGPU はヘッドレス環境向けに、ダミープラグを使用しない、GPU アクセラレートされた仮想モニターを提供しています。これは RDP や {{AUR|sunshine}} といったゲームストリーミングソフトウェアで便利です。&lt;br /&gt;
&lt;br /&gt;
使用する AMD GPU を選択してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lspci -Dd ::03xx|&lt;br /&gt;
&#039;&#039;&#039;1234:56:78.9&#039;&#039;&#039; VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] &#039;&#039;CommercialModelName&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|amdgpu}} に対して {{ic|1=virtual_display=&#039;&#039;1234:56:78.9&#039;&#039;,&#039;&#039;x&#039;&#039;}} [[カーネルモジュールパラメータ]]を追加してください。{{ic|&#039;&#039;1234:56:78.9&#039;&#039;}} の部分は GPU の PCI アドレスで、{{ic|&#039;&#039;x&#039;&#039;}} は公開する crtc (仮想モニター) の番号です。このパラメータを使用すると物理出力は無効化されます。[https://bugzilla.kernel.org/show_bug.cgi?id=203339]&lt;br /&gt;
&lt;br /&gt;
以下のように PCI アドレスをセミコロンで区切ることで、複数の GPU を使用することも可能です:&lt;br /&gt;
&lt;br /&gt;
 amdgpu.virtual_display=1234:56:78.9,&#039;&#039;x&#039;&#039;;9876:54:32.1,&#039;&#039;y&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ユーザーキュー ===&lt;br /&gt;
&lt;br /&gt;
AMDGPU ドライバはユーザーキューをサポートしています。これにより、カーネルドライバのコマンドサブミッション ioctl を介さずに、ジョブを直接 GPU ハードウェアにサブミットすることができます。&lt;br /&gt;
この機能を有効化することで、カーネルドライバのオーバヘッドがいくらか回避され、レイテンシを軽減し効率を向上させることができます。&lt;br /&gt;
&lt;br /&gt;
ユーザーキューを有効化するには、以下の環境変数を設定してください:&lt;br /&gt;
&lt;br /&gt;
 export AMD_USERQ=1&lt;br /&gt;
&lt;br /&gt;
=== SDMA による転送のみの専用キュー ===&lt;br /&gt;
&lt;br /&gt;
Mesa 26.0 にマージされたコードは、GFX9 (Vega) 及びそれより新しい GPU で動作する、RADV の専用転送キューのサポートが含まれています。現在、この機能を有効化するには {{ic|RADV_PERFTEST{{=}}transfer_queue}} [[環境変数]]を設定する必要があります。DXVK Direct3D-on-Vulkan レイヤーは、Vulkan の転送キューのサポートを活用するためにソフトウェアないに存在しています。しかし、この新しい機能を正当化するようなパフォーマンス/ベンチマークの数値が[https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25594 マージリクエスト]には含まれていません。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== モジュールパラメータ ===&lt;br /&gt;
&lt;br /&gt;
amdgpu モジュールは、いくつかの設定パラメータ ({{ic|modinfo amdgpu {{!}} grep mask}}) を[https://raw.githubusercontent.com/torvalds/linux/master/drivers/gpu/drm/amd/include/amd_shared.h カーネルのソースコード]でしかドキュメント化していないマスク内に隠しています。&lt;br /&gt;
&lt;br /&gt;
=== Xorg やアプリケーションが起動しない ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;glxgears&#039;&#039; を開いた後に &amp;quot;(EE) AMDGPU(0): [DRI2] DRI2SwapBuffers: drawable has no back or front?&amp;quot; エラー。Xorg サーバを開くことはできるが、OpenGL アプリケーションはクラッシュする。&lt;br /&gt;
* &amp;quot;(EE) AMDGPU(0): Given depth (32) is not supported by amdgpu driver&amp;quot; エラー。Xorg が起動しない。&lt;br /&gt;
&lt;br /&gt;
Xorg でスクリーンの色深度を 16 か 32 に設定すると問題/クラッシュを引き起こします。これを防ぐには、&amp;quot;screen&amp;quot; セクションに以下を追加して標準的なスクリーン色深度である 24 を使う必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-screen.conf|&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
       Identifier     &amp;quot;Screen&amp;quot;&lt;br /&gt;
       DefaultDepth    24&lt;br /&gt;
       SubSection      &amp;quot;Display&amp;quot;&lt;br /&gt;
               Depth   24&lt;br /&gt;
       EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== スクリーンのアーティファクトと周波数の問題 ===&lt;br /&gt;
&lt;br /&gt;
[[ATI#動的電源管理|動的電源管理]]は、(60Hz以上の) 高いリフレッシュレートでモニタを表示させた際にスクリーンのアーティファクトを発生させる場合があります。GPU のクロック速度の管理法に問題があるためです [https://bugs.freedesktop.org/show_bug.cgi?id=96868][https://gitlab.freedesktop.org/drm/amd/-/issues/234]。&lt;br /&gt;
&lt;br /&gt;
回避策[https://bugs.freedesktop.org/show_bug.cgi?id=96868#c13]は、[[#パフォーマンスレベル]] で説明されているようにパフォーマンスレベルを {{ic|high}} あるいは {{ic|low}} に設定することです。&lt;br /&gt;
&lt;br /&gt;
カーネルのバージョンを変更することでもこの問題を解決できる場合があります。例えば、バージョン 6.12.9 では問題は解決されているようです。&lt;br /&gt;
&lt;br /&gt;
==== Chromium でアーティファクト ====&lt;br /&gt;
&lt;br /&gt;
[[Chromium]] でアーティファクトが現れる場合、vulkan ベースのバックエンドの使用を強制すると解決するかもしれません。{{ic|chrome://flags}} を開き、{{ic|#ignore-gpu-blocklist}} と {{ic|#enable-vulkan}} を &#039;&#039;enable&#039;&#039; にしてください。&lt;br /&gt;
&lt;br /&gt;
=== R9 390 シリーズで悪いパフォーマンス/不安定 ===&lt;br /&gt;
&lt;br /&gt;
AMD R9 390 シリーズのグラフィックカードで問題[https://gitlab.freedesktop.org/mesa/mesa/-/issues/1222]が発生する場合、次の[[カーネルパラメータ]]を設定して、radeon ではなく amdgpu ドライバの使用を強制してください: {{ic|1=radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1 amdgpu.dc=1}}&lt;br /&gt;
&lt;br /&gt;
これがうまく行かない場合、DPM を無効化すると解決するかもしれません。次を[[カーネルパラメータ]]に追加してください: {{ic|1=radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;[drm] IP block:gmc_v8_0 is hung!&amp;quot; カーネルエラーでフリーズ ===&lt;br /&gt;
&lt;br /&gt;
GPU が大量の処理を行っている最中にフリーズやカーネルのクラッシュが発生して、&amp;quot;[drm] IP block:gmc_v8_0 is hung!&amp;quot; カーネルエラーが発生する場合 [https://gitlab.freedesktop.org/drm/amd/issues/226]、回避策は [[カーネルパラメータ]] {{ic|1=amdgpu.vm_update_mode=3}} を設定して GPUVM ページテーブルの更新を CPU を用いて行うように強制することです。デメリットはここにリストされています: [https://gitlab.freedesktop.org/drm/amd/-/issues/226#note_308665]。&lt;br /&gt;
&lt;br /&gt;
=== 画面が白く/灰色に点滅する ===&lt;br /&gt;
&lt;br /&gt;
解像度を変更したり外部モニタに接続したりしたときに、画面がちらつく、あるいは白くなったままになる場合、[[カーネルパラメータ]] {{ic|1=amdgpu.sg_display=0}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== Vega カード上でのゲーム中にシステムのフリーズ/クラッシュ ===&lt;br /&gt;
&lt;br /&gt;
[[ATI#動的電源管理|動的電源管理]]は、ゲーム中にシステムの完全なフリーズを発生させる場合があります。GPU のクロック速度の管理法に問題があるためです [https://gitlab.freedesktop.org/drm/amd/-/issues/716]。回避策は、[[#パフォーマンスレベル]] で説明されているようにパフォーマンスレベルを {{ic|high}} に設定することです。。&lt;br /&gt;
&lt;br /&gt;
=== WebRenderer (Firefox) の破損 ===&lt;br /&gt;
&lt;br /&gt;
[[:en:Firefox/Tweaks#WebRender|WebRenderer]] がユーザによって強制的に有効化されている場合、アーティファクトやその他の異常が発生する場合があります(例: 拡張機能のオプションを選択できないなど)。回避策は OpenGL コンポジットにフォールバックすることです。&lt;br /&gt;
&lt;br /&gt;
=== 4K@60Hz のデバイスが接続されると音声の速度が2倍になる/音が高くなる/無音 ===&lt;br /&gt;
&lt;br /&gt;
これは、AMDGPU デバイスと、HDMI で接続された 4K ディスプレイとの間の通信の問題により時々発生します。利用可能な回避策は、ディスプレイの組み込み設定から HDR か &amp;quot;Ultra HD Deep Color&amp;quot; を有効化することです。多くの Android ベースのテレビでは、これは &amp;quot;Optimal&amp;quot; ではなく &amp;quot;Standard&amp;quot; を設定することを意味します。&lt;br /&gt;
&lt;br /&gt;
=== ディスクリート amdgpu グラフィックカードにおける電源管理/動的再アクティブ化の問題 ===&lt;br /&gt;
&lt;br /&gt;
カーネルドライバはロードされたが、ゲームでディスクリートグラフィックカードを利用できない、または使用中に無効化されてしまう問題が発生する場合 ([https://gitlab.freedesktop.org/drm/amd/-/issues/1820] に似た問題)、[[カーネルパラメータ]] {{ic|1=amdgpu.runpm=0}} を設定することでこの問題を回避できます。このカーネルパラメータは、dGPU が実行時に動的にオフになることを防止します。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイが固まる、または応答しなくなる (flip_done timed out) ===&lt;br /&gt;
&lt;br /&gt;
amdgpu ドライバのバグにより、ディスプレイが更新されなくなることがあります[https://gitlab.freedesktop.org/drm/amd/-/issues/4141]。回避策として、{{ic|1=amdgpu.dcdebugmask=0x10}} か {{ic|1=amdgpu.dcdebugmask=0x12}} [[カーネルパラメータ]]を追加することが提案されています。&lt;br /&gt;
&lt;br /&gt;
=== kfd が初期化に失敗する ===&lt;br /&gt;
&lt;br /&gt;
GPU のアーキテクチャによっては、kfd が初期化に失敗することがあります。gfx803 (GCN 4) は PCIe atomics のサポートを必要とします。一方、gfx9xx (Vega) 及びそれ以降のデバイスは、PCIe atomics が必要ありません。kfd は GCN 3 及びそれより古いデバイスをサポートしていません。&lt;br /&gt;
&lt;br /&gt;
[[GPGPU#ROCm|ROCm]] を使用するつもりがないならば、このエラーは安全に無視できます。&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;[GPU Core Name] not supported in kfd&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
システムのジャーナルやカーネルのメッセージに、kfd 関連の critical レベルのエラーメッセージが現れることがあります:&lt;br /&gt;
&lt;br /&gt;
{{hc|# dmesg {{!}} grep kfd|&lt;br /&gt;
kfd kfd: amdgpu: BONAIRE  not supported in kfd&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
(BONAIRE の部分は GPU 内のコアの名前によって変わります (TOPAZ、HAWAII など)。コア名は GPU を見たり、{{pkg|amdgpu_top}} などのGPU の診断ユーティリティを使うことで分かります。)&lt;br /&gt;
&lt;br /&gt;
このエラーは、kfd は使用中の GPU をサポートしておらず、ROCm で動作しないことを意味しています。[https://github.com/RadeonOpenCompute/ROCm/issues/1148#issuecomment-747849592][https://www.reddit.com/r/linuxquestions/comments/yhbbiz/kfd_kfd_amdgpu_topaz_not_supported_in_kfd/]&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;PCI rejects atomics&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
GCN 4 GPU では、CPU が PCIe atomics をサポートしている必要があり、GPU のあるスロットは少なくとも PCIe 3.0 をサポートしている必要があります。[https://github.com/ROCm/ROCm/issues/2224#issuecomment-2299689450] これらの要件が満たされない場合、以下のメッセージが出力されます:&lt;br /&gt;
&lt;br /&gt;
{{hc|# dmesg {{!}} grep kfd|&lt;br /&gt;
kfd kfd: amdgpu: skipped device 1002:67e3, PCI rejects atomics 730&amp;lt;0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
使用中の CPU が PCIe atomics をサポートしているかどうかは、以下のコマンドで分かります:&lt;br /&gt;
&lt;br /&gt;
 grep flags /sys/class/kfd/kfd/topology/nodes/*/io_links/0/properties&lt;br /&gt;
&lt;br /&gt;
使用中の CPU が PCIe atomics をサポートしている (つまり、先の出力が {{ic|1}}) がエラーが発生する場合、GPU のあるスロットを変更してください。そのスロットは、CPU からではなく、チップセットから来ているレーンなのかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== MCLK が MAX (1000Mhz) に固定されてアイドル時に高い電力消費、または MIN (96MHz) に固定されてゲームのパフォーマンスが悪化 (カーネル 6.4) ===&lt;br /&gt;
&lt;br /&gt;
高解像度かつ高リフレッシュレートの場合、MCLK (vram / メモリのクロック) が最も高いクロックレート (1000MHz) に固定されてしまい [https://gitlab.freedesktop.org/drm/amd/-/issues/1403] [https://gitlab.freedesktop.org/drm/amd/-/issues/2646]、アイドル時に GPU の電力消費が増加してしまう場合があります。Linux カーネル 6.4.x では、MCLK クロックが最低値 (96MHz) になって、ゲームのパフォーマンスが低下してしまいます [https://gitlab.freedesktop.org/drm/amd/-/issues/2657] [https://gitlab.freedesktop.org/drm/amd/-/issues/2611]。&lt;br /&gt;
&lt;br /&gt;
これは、モニタが Coordinated Video Timings (CVT) を使用しておらず、影響を受ける解像度とリフレッシュレートに対する V-Blank 値が低いことが原因である可能性があります。回避策は[https://gist.github.com/Rend0e/3bddac4285dc1f4fbe303f326f36f6cc この gist] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Suspend to RAM に失敗する ===&lt;br /&gt;
&lt;br /&gt;
十分にリフレッシュされない VRAM のデータ消失を防ぐために、{{ic|amdgpu}} カーネルモジュールはシステムが S3 スリープに入るときに VRAM の内容を RAM 内に保存します。&lt;br /&gt;
&lt;br /&gt;
大量の VRAM を使用していて RAM に十分な空き容量がない場合、たとえ十分なスワップメモリが存在していたとしても、[https://gitlab.freedesktop.org/drm/amd/-/issues/2125 このプロセスが失敗する可能性があります] (IO サブシステムがすでにサスペンドされているかもしれないため)。&lt;br /&gt;
&lt;br /&gt;
このとき、以下のようなメッセージが出力されます:&lt;br /&gt;
&lt;br /&gt;
 kernel: systemd-sleep: page allocation failure: order:0, mode:0x100c02(GFP_NOIO|__GFP_HIGHMEM|__GFP_HARDWALL), nodemask=(null),cpuset=/,mems_allowed=0&lt;br /&gt;
 kernel: Call Trace:&lt;br /&gt;
 kernel:  &amp;lt;TASK&amp;gt;&lt;br /&gt;
 kernel:  dump_stack_lvl+0x47/0x60&lt;br /&gt;
 kernel:  warn_alloc+0x165/0x1e0&lt;br /&gt;
 kernel:  __alloc_pages_slowpath.constprop.0+0xd7d/0xde0&lt;br /&gt;
 kernel:  __alloc_pages+0x32d/0x350&lt;br /&gt;
 kernel:  ttm_pool_alloc+0x19f/0x600 [ttm 0bd92a9d9dccc3a4f19554535860aaeda76eb4f4]&lt;br /&gt;
&lt;br /&gt;
回避策としては、システムがサスペンドする前に十分な RAM 領域をスワップアウトして VRAM を格納できるのに十分な空き領域を RAM に確保しておく[https://git.dolansoft.org/lorenz/memreserver ユーザー空間のサービス]を使うというものがります。&lt;br /&gt;
&lt;br /&gt;
=== 間違った GPU クロックにより複数の問題が発生する ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|&lt;br /&gt;
* Users provide unreliable reports and operate under wrong assumptions. See [https://gitlab.freedesktop.org/drm/amd/-/issues/3131#note_3007563 explanation].&lt;br /&gt;
* If you carefully read through the related issues, the problem appear to be caused by some internal setup of GPU power profiles. Which means the shader clock frequency is not the actual issue here, lowering it is more of a workaround, and it decreases performance.&lt;br /&gt;
* Patches addressing the problem were already merged a few major kernel releases back.&lt;br /&gt;
* If you are still getting crashes with similar dmesg logs, consider disabling GFXOFF (see [https://gitlab.freedesktop.org/drm/amd/-/issues/3067#note_2959002])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
amdgpu モジュールにはバグがあり、ビデオコアの周波数が製造業者によって設定された値よりも高くなることがあります。これにより、ゲーム中やスリープからの復帰時、再起動時にシステムが不安定になることがあります。&lt;br /&gt;
&lt;br /&gt;
この問題は、RDNA 3 GPU (7XXX モデル) で報告されています[https://www.reddit.com/r/linux_gaming/comments/1dyhizb/fyi_for_amd_card_owners_the_linux_kernel_is/] [https://wiki.gentoo.org/wiki/AMDGPU#Frequent_and_Sporadic_Crashes] [https://gitlab.freedesktop.org/drm/amd/-/issues/3131]。&lt;br /&gt;
&lt;br /&gt;
dmesg に以下のようなログが出てきます:&lt;br /&gt;
&lt;br /&gt;
 amdgpu: [gfxhub] page fault (src_id:0 ring:40 vmid:6 pasid:32830)&lt;br /&gt;
 amdgpu:  in process GameThread pid 100056 thread vkd3d_queue pid 100468)&lt;br /&gt;
 amdgpu:   in page starting at address 0x0000000218a36000 from client 10&lt;br /&gt;
 amdgpu: GCVM_L2_PROTECTION_FAULT_STATUS:0x00641051&lt;br /&gt;
 amdgpu:          Faulty UTCL2 client ID: TCP (0x8)&lt;br /&gt;
 amdgpu:          MORE_FAULTS: 0x1&lt;br /&gt;
 amdgpu:          WALKER_ERROR: 0x0&lt;br /&gt;
 amdgpu:          PERMISSION_FAULTS: 0x5&lt;br /&gt;
 amdgpu:          MAPPING_ERROR: 0x0&lt;br /&gt;
 amdgpu:          RW: 0x1&lt;br /&gt;
&lt;br /&gt;
似たような問題が発生する場合は、システムのビデオコアの最大周波数と製造業者の公式の周波数とを比較してください。最大周波数を下げる方法は、[[#オーバークロック]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== AMD の専用 GPU の HDMI が Wayland でフリーズする ===&lt;br /&gt;
&lt;br /&gt;
具体例として、AMD CPU と専用 AMD GPU を搭載している ASUS G14 2022 ノート PC があります。最も成功しやすい方法では、dGPU Ultimate power オプションを強制するために Windows で armor crate を使う必要があります。これにより、GPU の順序とノート PC の内部電源ポリシーが切り替わります。これにより HDMI が機能するようになるはずですが、統合 GPU (SDDM と Wayland はこちらをデフォルトで選択します) と専用 GPU とでレンダリングが別々になります。アプリケーションの起動前に {{ic|1=DRI_PRIME=0}} 環境変数を設定することでレンダリングを行う GPU を選択できますが、これは簡便ではありません。以下のように設定を変更することで環境変数を設定できますが、バッテリー駆動時にバッテリーの持ちが悪くなります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sddm.conf.d/hardware.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
DisplayServer=wayland&lt;br /&gt;
[Wayland]&lt;br /&gt;
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts&lt;br /&gt;
Environment=DRI_PRIME=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これに加えて、以下のカーネルパラメータを追加する必要があります:&lt;br /&gt;
&lt;br /&gt;
 amdgpu.runpm=0 amdgpu.modeset=1&lt;br /&gt;
&lt;br /&gt;
=== ノート PC で色があせて薄い ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|power-profiles-daemon}} や {{Pkg|tuned}} などの省電力アプリケーションは、Panel Power Savings (PPS) として知られる機能を[https://www.phoronix.com/news/Power-Profiles-Daemon-0.20 有効にする]ようになりました。&lt;br /&gt;
&lt;br /&gt;
PPS はノート PC でサポートされている機能で、ノート PC の GPU に色精度を犠牲にする代わりに省電力にするように命令します。しかし、この機能を使うと、前述の power-profiles-daemon や tuned でより強力な省電力モードを選択すると色があせてしまう傾向にあります。そのため、この機能を完全に無効化する人もいます。&lt;br /&gt;
&lt;br /&gt;
以下の[[カーネルパラメータ]]をゼロに設定することで無効化できます:&lt;br /&gt;
&lt;br /&gt;
 amdgpu.abmlevel=0&lt;br /&gt;
&lt;br /&gt;
=== アイドル時にシステムがフリーズしたり再起動したりする ===&lt;br /&gt;
&lt;br /&gt;
いくつかの PowerPlay 機能 ([https://www.phoronix.com/news/AMDGPU-GFXOFF-Patches GFXOFF] など) の問題により、高頻度の回復不可能なドライバのクラッシュが発生することがあります[https://forum.endeavouros.com/t/random-crashes-amdgpu/70453]。これは、複数モニターの環境で GPU のアイドル時、とくにスリープモードからの復帰時に発生します。&lt;br /&gt;
&lt;br /&gt;
よく知られた解決法は、([[#ブートパラメータ]] で説明されているように) PP_GFXOFF_MASK を無効化するカーネルパラメータを追加することです (例: {{ic|1=amdgpu.ppfeaturemask=0xffff7fff}}。これは、他の PowerPlay 機能 (実装されているものも未実装のものも含む) を有効化したままにします)。&lt;br /&gt;
&lt;br /&gt;
もう一つの方法は、GFXOFF 以外の機能も無効化する方法を利用することです:&lt;br /&gt;
&lt;br /&gt;
* {{ic|0xfffd7fff}} で [https://www.reddit.com/r/linux4noobs/comments/1ahb8pf/comment/koppio6/ PP_GFXOFF_MASK と PP_STUTTER_MODE] を無効化する。&lt;br /&gt;
* {{ic|0xfffd3fff}} で [https://forum.endeavouros.com/t/random-crashes-amdgpu/70453/7?u=krzeszny PP_GFXOFF_MASK、PP_STUTTER_MODE、PP_OVERDRIVE_MASK] を無効化する。&lt;br /&gt;
* {{ic|0xfff73fff}} で [https://forum.endeavouros.com/t/random-crashes-amdgpu/70453/15?u=krzeszny PP_GFXOFF_MASK、PP_GFX_DCS_MASK、PP_OVERDRIVE_MASK] を無効化する。&lt;br /&gt;
* {{ic|0}} (あるいは {{ic|0x0}}) で全ての機能を無効化する。ドライバのクラッシュの原因が分からない場合はこれを使うことができます。&lt;br /&gt;
&lt;br /&gt;
[https://miniwebtool.com/bitwise-calculator/?data_type=16&amp;amp;number1=ffffffff&amp;amp;number2=8000&amp;amp;operator=XOR 16進数のビット計算機] (リンク先に例あり) で計算して、{{ic|1=amdgpu.ppfeaturemask=0x}} の後にその計算した8文字のマスクを加えることで自分で機能マスクを作ることができます。{{ic|ffffffff}} (全ビット1) から初めて、[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/amd/include/amd_shared.h#n185 マスクしたい機能]を &#039;&#039;&#039;XOR&#039;&#039;&#039; してください。計算結果に機能を XOR していくことができます。最初のゼロでない文字は全て省略できます。例えば、0x8000 と 0x00008000 は等価です。&lt;br /&gt;
&lt;br /&gt;
カーネルの更新時にパラメータが消されないように注意してください。&lt;br /&gt;
&lt;br /&gt;
=== HDMI 4K が 120Hz までしか上がらない ===&lt;br /&gt;
&lt;br /&gt;
[https://www.phoronix.com/news/HDMI-2.1-OSS-Rejected ライセンス上の問題]により、{{pkg|mesa}} ドライバは HDMI 2.1 をサポートできません。DisplayPort を使う必要があります。ディスプレイが DisplayPort をサポートしていない場合、DisplayPort の入力を HDMI 2.1 の信号に変換する[https://www.reddit.com/r/linux_gaming/comments/1nh5y0f/hdmi_21_works_on_amd_gpu_with_this_converter/ コンバータを使って HDMI 2.1 を使うことができたというユーザがいます]。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Gentoo:AMDGPU]]&lt;br /&gt;
* [https://gitlab.freedesktop.org/drm/amd AMDGPU イシュートラッカー]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|AMDGPU|2026-02-14|862509}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E8%A3%85%E7%BD%AE&amp;diff=41330</id>
		<title>画像処理装置</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E8%A3%85%E7%BD%AE&amp;diff=41330"/>
		<updated>2026-02-13T05:25:17Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[en:Graphics processing unit]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|NVIDIA}}&lt;br /&gt;
{{Related|AMDGPU}}&lt;br /&gt;
{{Related|Intel}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|OpenGL}}&lt;br /&gt;
{{Related|Vulkan}}&lt;br /&gt;
{{Related|ハードウェアビデオアクセラレーション}}&lt;br /&gt;
{{Related|外付け GPU}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:GPU|画像処理装置]] (GPU) とは、ディスプレイに表示されるビデオフィードを生成する、コンピュータ内のハードウェアです。GPU には、[[Wikipedia:GPU#統合GPU|Integrated Graphics Processors]] (IGP) と 専用 GPU (ディスクリート GPU) の2種類があります。特に、後者は[[Wikipedia:ja:グラフィックスカード|グラフィックスカード]]とも呼ばれています。この頭字語は、グラフィックスカード全てを指す言葉としてしばしば用いられます。&lt;br /&gt;
&lt;br /&gt;
GPU は並列計算を得意とするので、[[GPGPU|GPUによる汎用計算]] (GPGPU) にも用いられています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Linux カーネルには、オープンソースのビデオドライバが含まれており、ハードウェアアクセラレーション付きのフレームバッファをサポートしています。しかし、[[OpenGL]]、[[Vulkan]]、[[Xorg]] における 2D アクセラレーション、そして[[ハードウェアビデオアクセラレーション]]に関しては、ユーザランドでのサポートが必要です。&lt;br /&gt;
&lt;br /&gt;
まず、使用しているグラフィックスカードを確認してください (&#039;&#039;Subsystem&#039;&#039; の部分に固有モデルが表示されます):&lt;br /&gt;
&lt;br /&gt;
 $ lspci -vnnd ::03xx&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|::03}} は「[https://admin.pci-ids.ucw.cz/read/PD/03 ディスプレイコントローラ] PCI デバイスクラス」を意味し、{{ic|xx}} は「そのクラス内の全てのサブクラス」を意味します。}}&lt;br /&gt;
&lt;br /&gt;
次に、対応するビデオドライバをインストールする必要があります。以下の表に代表的なベンダー3社が挙げられています。&lt;br /&gt;
&lt;br /&gt;
32ビットのソフトウェアに関しては、[[multilib]] リポジトリを有効化し、&#039;&#039;lib32-&#039;&#039; という接頭辞がついたユーザ空間のドライバをインストールしてください (例えば、{{Pkg|lib32-mesa}}、{{Pkg|lib32-vulkan-radeon}}、{{Pkg|lib32-nvidia-utils}} などです)。&lt;br /&gt;
&lt;br /&gt;
X11 に関しては、他の [https://dri.freedesktop.org/wiki/DDX/ Device Dependent X (DDX)] ドライバは、{{Grp|xorg-drivers}} パッケージグループからインストールするか、[https://aur.archlinux.org/packages?K=xf86-video xf86-video] で検索して特定のパッケージをインストールすることができます。ほとんどの場合、DDX ドライバをインストールする必要はありません。詳細は、[[Xorg#ドライバ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== AMD ===&lt;br /&gt;
&lt;br /&gt;
AMD はオープンソースのドライバをサポートしています。かつてプロプライエタリなドライバが提供されていましたが、もはやパッケージは存在しません。[https://www.amd.com/en/resources/support-articles/release-notes/RN-AMDGPU-UNIFIED-LINUX-25-10-1.html][https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/thread/P5XHCIBVBY7PBPUC7AV3QD4CTROCRYSG/#KPTEHMZ2GPTRMXR37D25HJ4HY2KYPVKJ]&lt;br /&gt;
&lt;br /&gt;
{{Tip|モデルネーム (例: &#039;&#039;Radeon RX 6600&#039;&#039;) を GPU ファミリ (例: &#039;&#039;RDNA 2&#039;&#039;) に読み替えるには、[[Wikipedia:List of AMD graphics processing units#Features overview]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
GPU ファミリ毎の [[VA-API]] のサポートに関しては、[[ハードウェアビデオアクセラレーション#比較一覧]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ドキュメント&lt;br /&gt;
! GPU ファミリ&lt;br /&gt;
! DRM ドライバ&lt;br /&gt;
! OpenGL&lt;br /&gt;
! Vulkan&lt;br /&gt;
! DDX ドライバ&lt;br /&gt;
|-&lt;br /&gt;
| [[AMDGPU]]&lt;br /&gt;
| GCN 3 及びそれ以降 (例: RDNA 1-4)&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | [[Linux]] に同梱&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{Pkg|mesa}}&lt;br /&gt;
| {{Pkg|vulkan-radeon}}&lt;br /&gt;
| {{Pkg|xf86-video-amdgpu}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[AMDGPU]]&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; / [[ATI]]&lt;br /&gt;
| GCN 1&amp;amp;2&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | 使用するドライバによる&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[ATI]]&lt;br /&gt;
| R300 から TeraScale まで&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 無し&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{Pkg|xf86-video-ati}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| R100 &amp;amp; R200&lt;br /&gt;
| {{Pkg|mesa-amber}}&lt;br /&gt;
|-&lt;br /&gt;
| Rage 4 及びそれ以前&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | 利用できません [https://www.x.org/wiki/RadeonFeature/][https://www.phoronix.com/news/Linux-6.3-Dropping-Old-DRM]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|linux}} ≥ 6.19 でデフォルトで有効化されています。それ以外のバージョンでは、手動で選択できます。&lt;br /&gt;
# 問題なく動作させるには、modesetting ドライバを使用する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== Intel ===&lt;br /&gt;
&lt;br /&gt;
Intel は、オープンソースドライバを提供しており、かつサポートしています。ただし、PowerVR ベースのグラフィックス (GMA 3600 シリーズ) はサポートされていません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Intel の &#039;&#039;N&#039;&#039; 世代ハードウェアという文言は、CPU の世代ではなく、[[Wikipedia:List of Intel graphics processing units|GPU の世代]]を指しています。これは、CPU の世代とは異なります。}}&lt;br /&gt;
&lt;br /&gt;
GPU ファミリ毎の [[VA-API]] のサポートに関しては、[[ハードウェアビデオアクセラレーション#比較一覧]] を見てください。以下は、パッケージのみを記載しています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ドキュメント&lt;br /&gt;
! GPU ファミリ&lt;br /&gt;
! DRM ドライバ&lt;br /&gt;
! OpenGL&lt;br /&gt;
! Vulkan&lt;br /&gt;
! DDX ドライバ&lt;br /&gt;
! VA-API&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[Intel graphics]]&lt;br /&gt;
| 第12.1世代及びそれ以降&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[Linux]] に同梱&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{Pkg|mesa}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{Pkg|vulkan-intel}}&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | {{Pkg|xf86-video-intel}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{pkg|intel-media-driver}}&lt;br /&gt;
|-&lt;br /&gt;
| 第8世代から第11世代まで&lt;br /&gt;
| {{pkg|intel-media-driver}}&amp;lt;br&amp;gt;またはレガシーな {{pkg|libva-intel-driver}}&lt;br /&gt;
|-&lt;br /&gt;
| 第7世代 &amp;amp; 第7.5世代&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |{{pkg|libva-intel-driver}}&lt;br /&gt;
|-&lt;br /&gt;
| 第5世代 &amp;amp; 第6世代&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 無し&lt;br /&gt;
|-&lt;br /&gt;
| 第3世代から第4.5世代まで&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 無し&lt;br /&gt;
|-&lt;br /&gt;
| 第2世代&lt;br /&gt;
| {{Pkg|mesa-amber}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# 第7世代と第7.5世代は[https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/intel/vulkan_hasvk/anv_device.c#L1600 サポートが不完全で]、第8世代は Vulkan 1.3 に制限されています。&lt;br /&gt;
# 第3世代及びそれ以降のハードウェアでは、&#039;&#039;modesetting&#039;&#039; DDX ドライバが推奨されています。詳細は [[インテルグラフィックス#インストール]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA は完全にオープンソースなドライバをサポートしていません。NVIDIA は2022年からハイブリッドなアプローチ (オープンな DRM ドライバとクローズドなユーザランドドライバ) を取り始めました。&lt;br /&gt;
&lt;br /&gt;
{{Tip|モデルネーム (例: &#039;&#039;RTX 4060&#039;&#039;) を GPU ファミリ (例: &#039;&#039;NV190&#039;&#039;) に読み替えるには、[https://nouveau.freedesktop.org/CodeNames.html nouveau wiki のコードネームのページ]を見てください。}}&lt;br /&gt;
&lt;br /&gt;
どの API がサポートされているかについては、[[ハードウェアビデオアクセラレーション#NVIDIA]] を見てください。GPU ファミリ毎の詳細は [[ハードウェアビデオアクセラレーション#VDPAU ドライバ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ライセンス&lt;br /&gt;
! ドキュメント&lt;br /&gt;
! GPU ファミリ&lt;br /&gt;
! DRM ドライバ&lt;br /&gt;
! OpenGL&lt;br /&gt;
! Vulkan&lt;br /&gt;
! DDX ドライバ&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | オープン&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[Nouveau]]&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVE0 Kepler (NVE0/GKXXX)] 及びそれより新しいもの&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[Linux]] に同梱&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{Pkg|mesa}}&lt;br /&gt;
| {{Pkg|vulkan-nouveau}}&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{Pkg|xf86-video-nouveau}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV04 Fahrenheit (NV04/05)] から [https://nouveau.freedesktop.org/CodeNames.html#NVC0 Fermi (NVC0/GF1XX)] まで&lt;br /&gt;
| 無し&lt;br /&gt;
|-&lt;br /&gt;
| オープンな DRM ドライバ、プロプライエタリなユーザランドドライバ&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[NVIDIA]]&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV160 Turing (NV160/TUXXX)] 及びそれより新しいもの&lt;br /&gt;
| {{Pkg|nvidia-open}}&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | {{Pkg|nvidia-utils}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | プロプライエタリ&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV110 Maxwell (NV110/GMXXX)] から &amp;lt;br/&amp;gt; [https://nouveau.freedesktop.org/CodeNames.html#NV190 Ada Lovelace (NV190/ADXXX)] まで&lt;br /&gt;
| {{AUR|nvidia-580xx-dkms}}&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | {{AUR|nvidia-580xx-utils}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVE0 Kepler (NVE0/GKXXX)]&lt;br /&gt;
| {{AUR|nvidia-470xx-dkms}}&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | {{AUR|nvidia-470xx-utils}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVC0 Fermi (NVC0/GF1XX)]&lt;br /&gt;
| {{AUR|nvidia-390xx-dkms}}&lt;br /&gt;
| {{AUR|nvidia-390xx-utils}}&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 無し&lt;br /&gt;
| {{AUR|nvidia-390xx-utils}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV50 Tesla (NV50/G80-90-GT2XX)]&lt;br /&gt;
| {{AUR|nvidia-340xx-dkms}}&lt;br /&gt;
| {{AUR|nvidia-340xx-utils}}&lt;br /&gt;
| {{AUR|nvidia-340xx-utils}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV40 Curie (NV40/G70)] 及びそれより古いもの&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | パッケージはもう存在しません&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# 専用 GPU と合わせて統合ビデオカードを使用する NVIDIA Optimus のあるノート PC については、[[NVIDIA Optimus]] を見てください。&lt;br /&gt;
# [https://nouveau.freedesktop.org/CodeNames.html#NV50 NV50 (G80)]及びそれ以降においては、&#039;&#039;modesetting&#039;&#039; DDX ドライバが推奨されています。詳細は [[Nouveau#インストール]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== ロード ==&lt;br /&gt;
&lt;br /&gt;
ほとんどのカーネルモジュールドライバは、システムのブート時に自動的にロードされるはずです。&lt;br /&gt;
&lt;br /&gt;
ロードされない場合は:&lt;br /&gt;
&lt;br /&gt;
# [[カーネルパラメータ]]に {{ic|nomodeset}} や {{ic|1=vga=}} が&#039;&#039;&#039;含まれていない&#039;&#039;&#039;ことを確認してください。ドライバは [[KMS]] を必要とするためです。&lt;br /&gt;
# また、[[カーネルモジュール#ブラックリスト|カーネルモジュールブラックリスト]]によってドライバが無効化されていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
== モニタリング ==&lt;br /&gt;
&lt;br /&gt;
GPU のモニタリングは、GPU の温度、コアと VRAM の使用量、P-state を確認するために行われます。&lt;br /&gt;
&lt;br /&gt;
==== CLI ====&lt;br /&gt;
&lt;br /&gt;
* {{App|amdgpu_top|AMDGPU の使用率を表示するツール|https://github.com/Umio-Yasuno/amdgpu_top|{{Pkg|amdgpu_top}}}}&lt;br /&gt;
* {{App|nvtop|AMD、Intel、NVIDIA 用の、GPU プロセスモニタリングツール|https://github.com/Syllo/nvtop|{{Pkg|nvtop}}}}&lt;br /&gt;
* {{App|radeontop|GPU 使用率ビューア。全体のアクティビティのパーセンテージと個々のブロックの両方を確認できます。ATI の R600 及びそれより新しい GPU、さらに [[AMDGPU]] ドライバを使用するカードで動作します。|https://github.com/clbr/radeontop|{{Pkg|radeontop}}}}&lt;br /&gt;
* {{App|nvidia-smi|NVIDIA のプロプライエタリドライバにバンドルされている、Fermi 及びそれより新しい [[NVIDIA]] GPU 用の CLI モニタリングツール。|https://docs.nvidia.com/deploy/nvidia-smi/index.html|{{pkg|nvidia-utils}}}}&lt;br /&gt;
&lt;br /&gt;
==== GUI ====&lt;br /&gt;
&lt;br /&gt;
* {{App|amdgpu_top|AMDGPU の使用率を表示するツール|https://github.com/Umio-Yasuno/amdgpu_top|{{Pkg|amdgpu_top}}}}&lt;br /&gt;
* {{App|AmdGuid|完全に Rust 製の基本的なファン制御 GUI。|https://github.com/Eraden/amdgpud|{{AUR|amdguid-wayland-bin}}, {{AUR|amdguid-glow-bin}}}}&lt;br /&gt;
* {{App|Radeon Profile|AMD Radeon カード現在のクロックを読み取ったり変更したりできる Qt5 ツール。|https://github.com/emerge-e-world/radeon-profile|{{AUR|radeon-profile-git}}}}&lt;br /&gt;
* {{App|TuxClocker|Qt5 のモニタリング及びオーバークロックツール|https://github.com/Lurkki14/tuxclocker|{{AUR|tuxclocker}}}}&lt;br /&gt;
* {{App|Plasma System Monitor|システムのセンサー、プロセス情報、他のシステムリソースをモニタリングするインターフェイス。[[KDE|KDE Plasma]] にバンドルされています。|https://apps.kde.org/plasma-systemmonitor/|{{pkg|plasma-systemmonitor}}}}&lt;br /&gt;
* {{App|LACT|Linux システムで AMD、NVIDIA、Intel GPU を制御できます。|https://github.com/ilya-zlobintsev/LACT|{{pkg|lact}}}}&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Graphics processing unit|2026-02-13|859652}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=GPU&amp;diff=41329</id>
		<title>GPU</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=GPU&amp;diff=41329"/>
		<updated>2026-02-13T05:24:57Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 画像処理装置への転送ページ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[画像処理装置]]&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E8%A3%85%E7%BD%AE&amp;diff=41328</id>
		<title>画像処理装置</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E8%A3%85%E7%BD%AE&amp;diff=41328"/>
		<updated>2026-02-13T05:24:14Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 初版&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[en:Graphics processing unit]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|NVIDIA}}&lt;br /&gt;
{{Related|AMDGPU}}&lt;br /&gt;
{{Related|Intel}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|OpenGL}}&lt;br /&gt;
{{Related|Vulkan}}&lt;br /&gt;
{{Related|ハードウェアビデオアクセラレーション}}&lt;br /&gt;
{{Related|外付け GPU}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:GPU|画像処理装置]] (GPU) とは、ディスプレイに表示されるビデオフィードを生成する、コンピュータ内のハードウェアです。GPU には、[[Wikipedia:GPU#統合GPU|Integrated Graphics Processors]] (IGP) と 専用 GPU (ディスクリート GPU) の2種類があります。特に、後者は[[Wikipedia:ja:グラフィックスカード]]とも呼ばれています。この頭字語は、グラフィックスカード全てを指す言葉としてしばしば用いられます。&lt;br /&gt;
&lt;br /&gt;
GPU は並列計算を得意とするので、[[GPGPU|GPUによる汎用計算]] (GPGPU) にも用いられています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Linux カーネルには、オープンソースのビデオドライバが含まれており、ハードウェアアクセラレーション付きのフレームバッファをサポートしています。しかし、[[OpenGL]]、[[Vulkan]]、[[Xorg]] における 2D アクセラレーション、そして[[ハードウェアビデオアクセラレーション]]に関しては、ユーザランドでのサポートが必要です。&lt;br /&gt;
&lt;br /&gt;
まず、使用しているグラフィックスカードを確認してください (&#039;&#039;Subsystem&#039;&#039; の部分に固有モデルが表示されます):&lt;br /&gt;
&lt;br /&gt;
 $ lspci -vnnd ::03xx&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|::03}} は「[https://admin.pci-ids.ucw.cz/read/PD/03 ディスプレイコントローラ] PCI デバイスクラス」を意味し、{{ic|xx}} は「そのクラス内の全てのサブクラス」を意味します。}}&lt;br /&gt;
&lt;br /&gt;
次に、対応するビデオドライバをインストールする必要があります。以下の表に代表的なベンダー3社が挙げられています。&lt;br /&gt;
&lt;br /&gt;
32ビットのソフトウェアに関しては、[[multilib]] リポジトリを有効化し、&#039;&#039;lib32-&#039;&#039; という接頭辞がついたユーザ空間のドライバをインストールしてください (例えば、{{Pkg|lib32-mesa}}、{{Pkg|lib32-vulkan-radeon}}、{{Pkg|lib32-nvidia-utils}} などです)。&lt;br /&gt;
&lt;br /&gt;
X11 に関しては、他の [https://dri.freedesktop.org/wiki/DDX/ Device Dependent X (DDX)] ドライバは、{{Grp|xorg-drivers}} パッケージグループからインストールするか、[https://aur.archlinux.org/packages?K=xf86-video xf86-video] で検索して特定のパッケージをインストールすることができます。ほとんどの場合、DDX ドライバをインストールする必要はありません。詳細は、[[Xorg#ドライバ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== AMD ===&lt;br /&gt;
&lt;br /&gt;
AMD はオープンソースのドライバをサポートしています。かつてプロプライエタリなドライバが提供されていましたが、もはやパッケージは存在しません。[https://www.amd.com/en/resources/support-articles/release-notes/RN-AMDGPU-UNIFIED-LINUX-25-10-1.html][https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/thread/P5XHCIBVBY7PBPUC7AV3QD4CTROCRYSG/#KPTEHMZ2GPTRMXR37D25HJ4HY2KYPVKJ]&lt;br /&gt;
&lt;br /&gt;
{{Tip|モデルネーム (例: &#039;&#039;Radeon RX 6600&#039;&#039;) を GPU ファミリ (例: &#039;&#039;RDNA 2&#039;&#039;) に読み替えるには、[[Wikipedia:List of AMD graphics processing units#Features overview]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
GPU ファミリ毎の [[VA-API]] のサポートに関しては、[[ハードウェアビデオアクセラレーション#比較一覧]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ドキュメント&lt;br /&gt;
! GPU ファミリ&lt;br /&gt;
! DRM ドライバ&lt;br /&gt;
! OpenGL&lt;br /&gt;
! Vulkan&lt;br /&gt;
! DDX ドライバ&lt;br /&gt;
|-&lt;br /&gt;
| [[AMDGPU]]&lt;br /&gt;
| GCN 3 及びそれ以降 (例: RDNA 1-4)&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | [[Linux]] に同梱&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{Pkg|mesa}}&lt;br /&gt;
| {{Pkg|vulkan-radeon}}&lt;br /&gt;
| {{Pkg|xf86-video-amdgpu}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[AMDGPU]]&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; / [[ATI]]&lt;br /&gt;
| GCN 1&amp;amp;2&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | 使用するドライバによる&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[ATI]]&lt;br /&gt;
| R300 から TeraScale まで&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 無し&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{Pkg|xf86-video-ati}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| R100 &amp;amp; R200&lt;br /&gt;
| {{Pkg|mesa-amber}}&lt;br /&gt;
|-&lt;br /&gt;
| Rage 4 及びそれ以前&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | 利用できません [https://www.x.org/wiki/RadeonFeature/][https://www.phoronix.com/news/Linux-6.3-Dropping-Old-DRM]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|linux}} ≥ 6.19 でデフォルトで有効化されています。それ以外のバージョンでは、手動で選択できます。&lt;br /&gt;
# 問題なく動作させるには、modesetting ドライバを使用する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== Intel ===&lt;br /&gt;
&lt;br /&gt;
Intel は、オープンソースドライバを提供しており、かつサポートしています。ただし、PowerVR ベースのグラフィックス (GMA 3600 シリーズ) はサポートされていません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Intel の &#039;&#039;N&#039;&#039; 世代ハードウェアという文言は、CPU の世代ではなく、[[Wikipedia:List of Intel graphics processing units|GPU の世代]]を指しています。これは、CPU の世代とは異なります。}}&lt;br /&gt;
&lt;br /&gt;
GPU ファミリ毎の [[VA-API]] のサポートに関しては、[[ハードウェアビデオアクセラレーション#比較一覧]] を見てください。以下は、パッケージのみを記載しています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ドキュメント&lt;br /&gt;
! GPU ファミリ&lt;br /&gt;
! DRM ドライバ&lt;br /&gt;
! OpenGL&lt;br /&gt;
! Vulkan&lt;br /&gt;
! DDX ドライバ&lt;br /&gt;
! VA-API&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[Intel graphics]]&lt;br /&gt;
| 第12.1世代及びそれ以降&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[Linux]] に同梱&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | {{Pkg|mesa}}&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | {{Pkg|vulkan-intel}}&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | {{Pkg|xf86-video-intel}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{pkg|intel-media-driver}}&lt;br /&gt;
|-&lt;br /&gt;
| 第8世代から第11世代まで&lt;br /&gt;
| {{pkg|intel-media-driver}}&amp;lt;br&amp;gt;またはレガシーな {{pkg|libva-intel-driver}}&lt;br /&gt;
|-&lt;br /&gt;
| 第7世代 &amp;amp; 第7.5世代&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |{{pkg|libva-intel-driver}}&lt;br /&gt;
|-&lt;br /&gt;
| 第5世代 &amp;amp; 第6世代&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 無し&lt;br /&gt;
|-&lt;br /&gt;
| 第3世代から第4.5世代まで&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 無し&lt;br /&gt;
|-&lt;br /&gt;
| 第2世代&lt;br /&gt;
| {{Pkg|mesa-amber}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# 第7世代と第7.5世代は[https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/intel/vulkan_hasvk/anv_device.c#L1600 サポートが不完全で]、第8世代は Vulkan 1.3 に制限されています。&lt;br /&gt;
# 第3世代及びそれ以降のハードウェアでは、&#039;&#039;modesetting&#039;&#039; DDX ドライバが推奨されています。詳細は [[インテルグラフィックス#インストール]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA は完全にオープンソースなドライバをサポートしていません。NVIDIA は2022年からハイブリッドなアプローチ (オープンな DRM ドライバとクローズドなユーザランドドライバ) を取り始めました。&lt;br /&gt;
&lt;br /&gt;
{{Tip|モデルネーム (例: &#039;&#039;RTX 4060&#039;&#039;) を GPU ファミリ (例: &#039;&#039;NV190&#039;&#039;) に読み替えるには、[https://nouveau.freedesktop.org/CodeNames.html nouveau wiki のコードネームのページ]を見てください。}}&lt;br /&gt;
&lt;br /&gt;
どの API がサポートされているかについては、[[ハードウェアビデオアクセラレーション#NVIDIA]] を見てください。GPU ファミリ毎の詳細は [[ハードウェアビデオアクセラレーション#VDPAU ドライバ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ライセンス&lt;br /&gt;
! ドキュメント&lt;br /&gt;
! GPU ファミリ&lt;br /&gt;
! DRM ドライバ&lt;br /&gt;
! OpenGL&lt;br /&gt;
! Vulkan&lt;br /&gt;
! DDX ドライバ&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | オープン&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[Nouveau]]&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVE0 Kepler (NVE0/GKXXX)] 及びそれより新しいもの&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[Linux]] に同梱&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{Pkg|mesa}}&lt;br /&gt;
| {{Pkg|vulkan-nouveau}}&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | {{Pkg|xf86-video-nouveau}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV04 Fahrenheit (NV04/05)] から [https://nouveau.freedesktop.org/CodeNames.html#NVC0 Fermi (NVC0/GF1XX)] まで&lt;br /&gt;
| 無し&lt;br /&gt;
|-&lt;br /&gt;
| オープンな DRM ドライバ、プロプライエタリなユーザランドドライバ&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; | [[NVIDIA]]&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV160 Turing (NV160/TUXXX)] 及びそれより新しいもの&lt;br /&gt;
| {{Pkg|nvidia-open}}&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | {{Pkg|nvidia-utils}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | プロプライエタリ&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV110 Maxwell (NV110/GMXXX)] から &amp;lt;br/&amp;gt; [https://nouveau.freedesktop.org/CodeNames.html#NV190 Ada Lovelace (NV190/ADXXX)] まで&lt;br /&gt;
| {{AUR|nvidia-580xx-dkms}}&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | {{AUR|nvidia-580xx-utils}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVE0 Kepler (NVE0/GKXXX)]&lt;br /&gt;
| {{AUR|nvidia-470xx-dkms}}&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | {{AUR|nvidia-470xx-utils}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVC0 Fermi (NVC0/GF1XX)]&lt;br /&gt;
| {{AUR|nvidia-390xx-dkms}}&lt;br /&gt;
| {{AUR|nvidia-390xx-utils}}&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 無し&lt;br /&gt;
| {{AUR|nvidia-390xx-utils}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV50 Tesla (NV50/G80-90-GT2XX)]&lt;br /&gt;
| {{AUR|nvidia-340xx-dkms}}&lt;br /&gt;
| {{AUR|nvidia-340xx-utils}}&lt;br /&gt;
| {{AUR|nvidia-340xx-utils}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV40 Curie (NV40/G70)] 及びそれより古いもの&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; | パッケージはもう存在しません&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# 専用 GPU と合わせて統合ビデオカードを使用する NVIDIA Optimus のあるノート PC については、[[NVIDIA Optimus]] を見てください。&lt;br /&gt;
# [https://nouveau.freedesktop.org/CodeNames.html#NV50 NV50 (G80)]及びそれ以降においては、&#039;&#039;modesetting&#039;&#039; DDX ドライバが推奨されています。詳細は [[Nouveau#インストール]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== ロード ==&lt;br /&gt;
&lt;br /&gt;
ほとんどのカーネルモジュールドライバは、システムのブート時に自動的にロードされるはずです。&lt;br /&gt;
&lt;br /&gt;
ロードされない場合は:&lt;br /&gt;
&lt;br /&gt;
# [[カーネルパラメータ]]に {{ic|nomodeset}} や {{ic|1=vga=}} が&#039;&#039;&#039;含まれていない&#039;&#039;&#039;ことを確認してください。ドライバは [[KMS]] を必要とするためです。&lt;br /&gt;
# また、[[カーネルモジュール#ブラックリスト|カーネルモジュールブラックリスト]]によってドライバが無効化されていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
== モニタリング ==&lt;br /&gt;
&lt;br /&gt;
GPU のモニタリングは、GPU の温度、コアと VRAM の使用量、P-state を確認するために行われます。&lt;br /&gt;
&lt;br /&gt;
==== CLI ====&lt;br /&gt;
&lt;br /&gt;
* {{App|amdgpu_top|AMDGPU の使用率を表示するツール|https://github.com/Umio-Yasuno/amdgpu_top|{{Pkg|amdgpu_top}}}}&lt;br /&gt;
* {{App|nvtop|AMD、Intel、NVIDIA 用の、GPU プロセスモニタリングツール|https://github.com/Syllo/nvtop|{{Pkg|nvtop}}}}&lt;br /&gt;
* {{App|radeontop|GPU 使用率ビューア。全体のアクティビティのパーセンテージと個々のブロックの両方を確認できます。ATI の R600 及びそれより新しい GPU、さらに [[AMDGPU]] ドライバを使用するカードで動作します。|https://github.com/clbr/radeontop|{{Pkg|radeontop}}}}&lt;br /&gt;
* {{App|nvidia-smi|NVIDIA のプロプライエタリドライバにバンドルされている、Fermi 及びそれより新しい [[NVIDIA]] GPU 用の CLI モニタリングツール。|https://docs.nvidia.com/deploy/nvidia-smi/index.html|{{pkg|nvidia-utils}}}}&lt;br /&gt;
&lt;br /&gt;
==== GUI ====&lt;br /&gt;
&lt;br /&gt;
* {{App|amdgpu_top|AMDGPU の使用率を表示するツール|https://github.com/Umio-Yasuno/amdgpu_top|{{Pkg|amdgpu_top}}}}&lt;br /&gt;
* {{App|AmdGuid|完全に Rust 製の基本的なファン制御 GUI。|https://github.com/Eraden/amdgpud|{{AUR|amdguid-wayland-bin}}, {{AUR|amdguid-glow-bin}}}}&lt;br /&gt;
* {{App|Radeon Profile|AMD Radeon カード現在のクロックを読み取ったり変更したりできる Qt5 ツール。|https://github.com/emerge-e-world/radeon-profile|{{AUR|radeon-profile-git}}}}&lt;br /&gt;
* {{App|TuxClocker|Qt5 のモニタリング及びオーバークロックツール|https://github.com/Lurkki14/tuxclocker|{{AUR|tuxclocker}}}}&lt;br /&gt;
* {{App|Plasma System Monitor|システムのセンサー、プロセス情報、他のシステムリソースをモニタリングするインターフェイス。[[KDE|KDE Plasma]] にバンドルされています。|https://apps.kde.org/plasma-systemmonitor/|{{pkg|plasma-systemmonitor}}}}&lt;br /&gt;
* {{App|LACT|Linux システムで AMD、NVIDIA、Intel GPU を制御できます。|https://github.com/ilya-zlobintsev/LACT|{{pkg|lact}}}}&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Graphics processing unit|2026-02-13|859652}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA&amp;diff=41315</id>
		<title>NVIDIA</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA&amp;diff=41315"/>
		<updated>2026-02-03T07:29:36Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[Category:X サーバー]]&lt;br /&gt;
[[de:Nvidia]]&lt;br /&gt;
[[en:NVIDIA]]&lt;br /&gt;
[[es:NVIDIA]]&lt;br /&gt;
[[hu:NVIDIA]]&lt;br /&gt;
[[pt:NVIDIA]]&lt;br /&gt;
[[ru:NVIDIA]]&lt;br /&gt;
[[zh-hans:NVIDIA]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|NVIDIA/ヒントとテクニック}}&lt;br /&gt;
{{Related|NVIDIA/トラブルシューティング}}&lt;br /&gt;
{{Related|Nouveau}}&lt;br /&gt;
{{Related|NVIDIA Optimus}}&lt;br /&gt;
{{Related|PRIME}}&lt;br /&gt;
{{Related|Bumblebee}}&lt;br /&gt;
{{Related|nvidia-xrun}}&lt;br /&gt;
{{Related|Vulkan}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
この記事は公式の [https://www.nvidia.com NVIDIA] グラフィックカードドライバをカバーしています。コミュニティによるオープンソースのドライバに関しては、[[Nouveau]] を見てください。ハイブリッドグラフックスを搭載しているノートパソコンを使っている場合は、[[NVIDIA Optimus]] も見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|NVIDIA のウェブサイトで提供されているパッケージを通して NVIDIA ドライバをインストールすることは避けてください。[[pacman]] 経由でインストールすれば、システムをアップデートした際にドライバもアップデートすることができます。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[ハイブリッドグラフィックス]]のあるシステム上でデュアルブートする場合は、Windows またはサードパーティのアプリで ([https://www.asus.com/support/faq/1043747/#a14 ASUS Eco mode] のような) &#039;&#039;Eco mode&#039;&#039; を有効化すると NVIDIA のディスクリート GPU が完全に無効化され、検出されなくなります。}}&lt;br /&gt;
&lt;br /&gt;
まず、[https://nouveau.freedesktop.org/CodeNames.html nouveau wiki のコードネームに関するページ]で、以下のコマンドで入手した GPU カードのモデル名/公式名に対応するファミリ名を探してください:&lt;br /&gt;
&lt;br /&gt;
 $ lspci -k -d ::03xx&lt;br /&gt;
&lt;br /&gt;
次に、使用しているカードに適したドライバをインストールしてください:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! GPU ファミリ&lt;br /&gt;
! ドライバ&lt;br /&gt;
! 状態&lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:Blackwell (microarchitecture)|Blackwell (GBXXX)]] 及びそれ以降&lt;br /&gt;
| {{Pkg|linux}} には {{Pkg|nvidia-open}} &amp;lt;br/&amp;gt; {{Pkg|linux-lts}} には {{Pkg|nvidia-open-lts}} &amp;lt;br/&amp;gt; {{Pkg|nvidia-open-dkms}} は任意のカーネルで使えます&lt;br /&gt;
| [https://developer.nvidia.com/blog/nvidia-transitions-fully-towards-open-source-gpu-kernel-modules/ 上流で推奨されています]。&amp;lt;br/&amp;gt; 現行。サポートあり。&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV160 Turing (NV160/TUXXX)] から &amp;lt;br/&amp;gt; [https://nouveau.freedesktop.org/CodeNames.html#NV190 Ada Lovelace (NV190/ADXXX)] まで&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | サポートしているパッケージ:&lt;br /&gt;
* {{Pkg|nvidia-open}}、Turing 世代では [[PRIME#PCI-Express Runtime D3 (RTD3) Power Management|RTD3 Power Management]] は利用できません&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;。&amp;lt;br/&amp;gt;Ampere 世代を搭載したノート PC ではクラッシュする恐れがあります&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;。&lt;br /&gt;
* {{AUR|nvidia-580xx-dkms}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV110 Maxwell (NV110/GMXXX)] から &amp;lt;br/&amp;gt; [https://nouveau.freedesktop.org/CodeNames.html#NV140 Volta (NV140/GV100)] まで&lt;br /&gt;
| {{AUR|nvidia-580xx-dkms}}&lt;br /&gt;
| レガシー。サポートあり。&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVE0 Kepler (NVE0/GKXXX)]&lt;br /&gt;
| {{AUR|nvidia-470xx-dkms}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | レガシー。サポートなし。&amp;lt;sup&amp;gt;3,4&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVC0 Fermi (NVC0/GF1XX)]&lt;br /&gt;
| {{AUR|nvidia-390xx-dkms}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV50 Tesla (NV50/G80-90-GT2XX)]&lt;br /&gt;
| {{AUR|nvidia-340xx-dkms}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV40 Curie (NV40/G70)] 及びそれ以前&lt;br /&gt;
| パッケージはもはや存在しません。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# これらのパッケージが動作しない場合 (たいていはハードウェアが新しいことが原因です)、{{AUR|nvidia-open-beta}} が、新しいハードウェアをサポートしている新しいドライバのバージョンを提供しているかもしれません。&lt;br /&gt;
# NVIDIA の [https://download.nvidia.com/XFree86/Linux-x86_64/580.119.02/README/gsp.html GSP ファームウェア]は問題を引き起こすことが知られています (例えば、[https://github.com/NVIDIA/open-gpu-kernel-modules/issues/640#issuecomment-2188114679 Turing 世代 GPU で最適な電源管理が行われないケース]や、[https://bbs.archlinux.org/viewtopic.php?pid=2217692#p2217692 Ampere 世代 GPU を搭載している一部のノート PC が全く動作しなくなるケース]など)。この問題の影響を受ける場合は、代わりにプロプライエタリなドライバ (例: {{AUR|nvidia-580xx-dkms}}) を使用し、かつ[[モジュールパラメータ]] {{ic|1=NVreg_EnableGpuFirmware=0}} を設定してください。&lt;br /&gt;
# [https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/alder-lake-desktop/12th-generation-intel-core-processors-datasheet-volume-1-of-2/007/indirect-branch-tracking/ Indirect Branch Tracking] との互換性が無いため、[https://web.archive.org/web/20250209200337/https://www.intel.com/content/www/us/en/newsroom/opinion/intel-cet-answers-call-protect-common-malware-threats.html 第11世代及びそれ以降]の Intel CPU を搭載しているシステムで Linux 5.18 (及びそれ以降) においてこれらのドライバは動作しない場合があります。Indirect Branch Tracking は、[[ブートローダー]]から {{ic|1=ibt=off}} [[カーネルパラメータ]]を設定することにより、無効化することができます。ただし、このセキュリティ機能は[https://lwn.net/Articles/889475/ エクスプロイト手法の一種を緩和する]役割があるので注意してください。&lt;br /&gt;
# NVIDIA はもはやこれらのカードをアクティブにサポートしておらず、これらのドライバは[https://nvidia.custhelp.com/app/answers/detail/a_id/3142/ 現在の Xorg バージョンを公式にはサポートしていない場合があります]。[[nouveau]] ドライバを使うほうが簡単かもしれません。しかし、NVIDIA のレガシーなドライバは依然として利用可能であり、3D パフォーマンスまたは安定性に関して優れているかもしれません。&lt;br /&gt;
&lt;br /&gt;
:{{Note|&lt;br /&gt;
:* {{Pkg|dkms}} をインストールする場合は、[[Dynamic Kernel Module Support#インストール]] を読んでください。&lt;br /&gt;
:* [[DKMS]] 版は特定のカーネルと結びついていません。カーネルのヘッダーファイルをインストールすると、そのカーネル用の NVIDIA カーネルモジュールをコンパイルし直すためです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
32ビットアプリケーションのサポートに関しては、対応する &#039;&#039;lib32&#039;&#039; パッケージも [[multilib]] リポジトリからインストールしてください (例: {{Pkg|lib32-nvidia-utils}})。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-utils}} パッケージには、再起動後に {{ic|nouveau}} モジュールをブラックリスト化するファイルが含まれています。任意で、{{ic|/etc/mkinitcpio.conf}} 内の {{ic|HOOKS}} 配列から {{ic|kms}} を削除し、その後 [[Initramfs を再生成する|initramfs を再生成]]してもよいです。こうすることで、initramfs に {{ic|nouveau}} モジュールが含まれないようにして、カーネルがこのモジュールを初期ブート中に読み込めないようにします。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* Wayland のユーザは、下記の [[#DRM カーネルモード設定]] を済ませるまで再起動するべきではありません。さもないと、(再起動後に) 黒画面になってしまうかもしれません。その章を済ませたら、[[#Wayland 設定]] に進むことができます。&lt;br /&gt;
* Xorg ユーザは、[[#Xorg 設定]] に進むことができます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== カスタムカーネル ===&lt;br /&gt;
&lt;br /&gt;
使用中のカーネルで {{ic|1=CONFIG_DRM_SIMPLEDRM=y}} となっていることを確認してください。そして、{{ic|CONFIG_DEBUG_INFO_BTF}} を使用している場合、[[PKGBUILD]] で以下が必要です (カーネル 5.16 以降):&lt;br /&gt;
&lt;br /&gt;
 install -Dt &amp;quot;$builddir/tools/bpf/resolve_btfids&amp;quot; tools/bpf/resolve_btfids/resolve_btfids&lt;br /&gt;
&lt;br /&gt;
{{ic|CONFIG_NOVA_CORE}} を有効化してコンパイルされたカーネルでは、新しい NVIDIA GPU ドライバである [https://docs.kernel.org/gpu/nova/index.html Nova] がロードされないようにする必要があるかもしれません。{{Pkg|nvidia-utils}} はデフォルトでこのドライバをブラックリストに追加します。[[カーネルモジュール#モジュールオプションを設定する|systemd-analyze を実行する]]ことで、ロードされていないことを確認できます。別のバージョンのドライバをインストールしている場合は、{{ic|nova_core}} と {{ic|nova_drm}} を手動で[[ブラックリスト|ブラックリストに登録]]する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== DRM カーネルモード設定 ===&lt;br /&gt;
&lt;br /&gt;
Wayland コンポジタを正しく動作させるには、[[カーネルモード設定]] (KMS) が必要です。また、デュアル GPU の環境で NVIDIA の dGPU でネイティブな Wayland レンダリングを行うためにも、KMS が必要です。NVIDIA は、DRM ([[Wikipedia:Direct Rendering Manager|Direct Rendering Manager]]) が有効化されていない場合、[[カーネルモード設定#KMS の遅延開始|KMS の自動遅延読み込み]]をサポートしていません。{{Pkg|nvidia-utils}} 560.35.03-5 からは、DRM が[https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/commit/1b02daa2ccca6a69fa4355fb5a369c2115ec3e22 デフォルトで有効化されています]。&lt;br /&gt;
&lt;br /&gt;
DRM が本当に有効化されているか調べるには、以下のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/module/nvidia_drm/parameters/modeset&lt;br /&gt;
&lt;br /&gt;
正しく設定されていれば、このコマンドは {{ic|N}} ではなく {{ic|Y}} と出力するはずです。&lt;br /&gt;
&lt;br /&gt;
バージョン 560 よりも古いドライバにおいては、{{ic|nvidia_drm}} モジュールに対して {{ic|1=modeset=1}} と[[カーネルモジュールパラメータ]]を手動で設定してください。&lt;br /&gt;
&lt;br /&gt;
[[カーネル#公式サポートカーネル|公式サポートカーネル]]では {{ic|simpledrm}} が有効化されていますが、[[#fbdev|NVIDIA ドライバ固有の fbdev]] が無効化されている場合 (あるいは、バージョン 545 よりも古く利用できない場合)、NVIDIA ドライバは {{ic|efifb}} あるいは {{ic|vesafb}} を必要とします: 問題が発生する場合は、[https://bbs.archlinux.org/viewtopic.php?pid=2269076#p2269076 BBS#307164] に回避策が書かれてあります。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[カーネル#公式サポートカーネル|Arch で公式にサポートされているカーネル]]は {{ic|simpledrm}} を有効化します。しかし、NVIDIA ドライバは、{{ic|1=nvidia_drm.fbdev}} が無効化されている/利用できない場合 (バージョン 545 より前)、{{ic|efifb}} または {{ic|vesafb}} を必要とします。}}&lt;br /&gt;
&lt;br /&gt;
==== 早期ロード ====&lt;br /&gt;
&lt;br /&gt;
基本的な機能については先のカーネルパラメータを追加するだけで十分でしょう。可能な限り早い時にロードさせたい場合や、スタートアップ時に問題 ({{ic|nvidia}} カーネルモジュールが[[ディスプレイマネージャ]]のあとにロードされてしまうなど) が発生する場合には、{{ic|nvidia}}、{{ic|nvidia_modeset}}、{{ic|nvidia_uvm}} そして {{ic|nvidia_drm}} を initramfs に追加することができます。initramfs ジェネレータを設定する方法については [[カーネルモジュール#モジュールの早期ロード]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ビデオデコードのハードウェアアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
VDPAU によるビデオデコードのアクセラレーションは GeForce 8 シリーズ及びそれ以降のカードでサポートされています。NVDEC によるビデオデコードのアクセラレーションは Fermi (~400 シリーズ) 及びそれ以降のカードでサポートされています。詳しくは [[ハードウェアビデオアクセラレーション]] をご覧ください。&lt;br /&gt;
&lt;br /&gt;
=== NVENC によるビデオエンコードのハードウェアアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
NVENC は {{ic|nvidia_uvm}} モジュールと、関連するデバイスノードが {{ic|/dev}} 下に作成されることを要求します。&lt;br /&gt;
&lt;br /&gt;
最新のドライバーパッケージは、自動的にデバイスノードを作成する [[udev ルール]]を提供するので、追加の操作は必要ありません。&lt;br /&gt;
&lt;br /&gt;
古いドライバ (例えば、{{AUR|nvidia-340xx-dkms}}) を使用している場合、デバイスノードを作成する必要があります。{{ic|nvidia-modprobe}} ユーティリティを実行するとデバイスノードが自動的に作成されます。{{ic|/etc/udev/rules.d/70-nvidia.rules}} を作成して {{ic|nvidia-modprobe}} を自動的に実行させることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/70-nvidia.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, DEVPATH==&amp;quot;/bus/pci/drivers/nvidia&amp;quot;, RUN+=&amp;quot;/usr/bin/nvidia-modprobe -c 0 -u&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
== Wayland 設定 ==&lt;br /&gt;
&lt;br /&gt;
Xwayland に関しては [[Wayland#Xwayland]] を見てください。&lt;br /&gt;
&lt;br /&gt;
その他の設定オプションについては、それぞれの[[Wayland#コンポジタ|コンポジタ]]の wiki ページやドキュメントを見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|バージョン 555.xx より前のドライバを使用している場合や、{{ic|linux-drm-syncobj-v1}} プロトコルによって Explicit Sync をサポートしていない Wayland コンポジタを使用している場合、ネイティブの Wayland アプリと Xwayland アプリの両方でちらつき、フレーム順序の狂いなどの問題が発生する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
=== 基本的なサポート ===&lt;br /&gt;
&lt;br /&gt;
{{ic|nvidia_drm}} モジュールの重要なカーネルパラメータは {{ic|modeset}} と {{ic|fbdev}} です。{{Pkg|nvidia-utils}} パッケージを使用している場合、これらは両方とも[https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/blob/3b439109/PKGBUILD#L60 デフォルトで有効化されています]。また、NVIDIA は[https://indico.freedesktop.org/event/6/contributions/287/attachments/210/288/NVIDIA%20Wayland%20Roadmap.pdf 将来のリリースでこれらのパラメータをデフォルトで有効化することを計画しています]。&lt;br /&gt;
&lt;br /&gt;
==== modeset ====&lt;br /&gt;
&lt;br /&gt;
全ての Wayland 構成において {{ic|modeset}} を有効化することは適切に機能させるために必須です。&lt;br /&gt;
&lt;br /&gt;
サポートの無いドライバについては、{{ic|modeset}} を手動で有効化する必要があります。詳細は [[#DRM カーネルモード設定]] と [[Wayland#要件]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== fbdev ====&lt;br /&gt;
&lt;br /&gt;
サポートされているドライバは、[[フレームバッファ]] を提供しています。もはやサポートされていないレガシーなドライバを使用する場合、Wayland の設定によっては、{{ic|nvidia_drm}} モジュールの {{ic|fbdev}} [[カーネルモジュールパラメータ]]を有効化する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
Linux 6.11 以降においてこれは厳しい要件ですが、これが仕様なのかバグなのかは現在明らかになっていません。詳細は [https://forums.developer.nvidia.com/t/drm-fbdev-wayland-presentation-support-with-linux-kernel-6-11-and-above/307920] を参照してください。&lt;br /&gt;
&lt;br /&gt;
NVIDIA のフレームバッファが有効化されていることを確認するには、以下のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/module/nvidia_drm/parameters/fbdev&lt;br /&gt;
&lt;br /&gt;
{{ic|fbdev}} が設定されていない場合は、このコマンドは {{ic|N}} を出力するのではなく、ファイルが存在しないことを示すエラーが発生します。&lt;br /&gt;
&lt;br /&gt;
=== サスペンドのサポート ===&lt;br /&gt;
&lt;br /&gt;
Wayland でのサスペンドは X よりもデフォルトの設定の問題が発生しやすいです。詳細は [[NVIDIA/ヒントとテクニック#サスペンド後にビデオメモリを保持する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
GDM を使用している場合は、[[GDM#Wayland とプロプライエタリな NVIDIA ドライバ]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-application-profiles-rc.d ===&lt;br /&gt;
&lt;br /&gt;
一部の wayland コンポジタは [https://www.nvidia.com/en-us/drivers/details/237587/ GLVidHeapReuseRatio] アプリケーションプロファイルキーが[https://github.com/NVIDIA/egl-wayland/issues/126#issuecomment-2379945259 アプリケーションのプロセス名に対して適用]されていない場合、デフォルトで大量の VRAM を消費します。例えば、以下のように設定すれば [[niri]] ではアイドル時で VRAM 消費量を約2.5GiB削減できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/nvidia/nvidia-application-profiles-rc.d/50-limit-free-buffer-pool-in-wayland-compositors.json|2=&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rules&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;pattern&amp;quot;: {&lt;br /&gt;
                &amp;quot;feature&amp;quot;: &amp;quot;procname&amp;quot;,&lt;br /&gt;
                &amp;quot;matches&amp;quot;: &amp;quot;niri&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;profile&amp;quot;: &amp;quot;Limit free buffer pool on Wayland compositors&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;profiles&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Limit free buffer pool on Wayland compositors&amp;quot;,&lt;br /&gt;
            &amp;quot;settings&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;key&amp;quot;: &amp;quot;GLVidHeapReuseRatio&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 0&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Xorg 設定 ==&lt;br /&gt;
&lt;br /&gt;
プロプライエタリな NVIDIA グラフィックドライバは Xorg サーバの設定ファイルを必要としません。[[Xorg#起動|X を起動]]してみて、Xorg サーバが設定ファイル無しで正しく機能するかを確認することができます。しか、様々な設定を調整するために設定ファイル ({{ic|/etc/X11/xorg.conf}} よりも {{ic|/etc/X11/xorg.conf.d/20-nvidia.conf}} を優先して使用してください) を作成する必要があるかもしれません。この設定は、NVIDIA Xorg 設定ツールによって生成することができますし、手動で作成することもできます。手動で作成した場合、([[Xorg]] サーバに基本的なオプションのみを与えると言う意味で) 最小の設定にすることができますし、あるいは、Xorg の自動検出されたオプションや事前設定されたオプションをバイパスできる設定を含めることもできます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|その他の設定オプションは、[[NVIDIA/トラブルシューティング]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
=== 自動設定 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA のパッケージには、Xorg サーバの設定ファイル ({{ic|xorg.conf}}) を作成するための自動設定ツールが含まれています。次のコマンドで実行できます:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig&lt;br /&gt;
&lt;br /&gt;
このコマンドは {{ic|/etc/X11/xorg.conf}} を自動検出し、現在のハードウェアに応じてそのファイルを作成 (すでに存在する場合は編集) します。&lt;br /&gt;
&lt;br /&gt;
デフォルトの深度、水平同期、垂直リフレッシュ、そして解像度が問題ないか {{ic|/etc/X11/xorg.conf}} を二重にチェックしてください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-settings ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-settings}} は CLI または GUI を使って様々なオプションを設定することができるツールです。何もオプションをつけずに {{ic|nvidia-settings}} を実行すると GUI が起動します。CLI のオプションについては {{man|1|nvidia-settings}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-settings}} の CLI/GUI は非 root なユーザとして実行でき、&#039;&#039;nvidia-settings Configuration&#039;&#039; タブにある &#039;&#039;Save Current Configuration&#039;&#039; オプションで設定を {{ic|~/.nvidia-settings-rc}} に保存できます。&lt;br /&gt;
&lt;br /&gt;
現在のユーザで {{ic|~/.nvidia-settings-rc}} をロードするには:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-settings --load-config-only&lt;br /&gt;
&lt;br /&gt;
起動時に毎回このコマンドを実行させるには[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|nvidia-settings}} から変更を加えると [[Xorg]] が起動しなくなったりクラッシュするようになったりすることがあります。生成された {{ic|~/.nvidia-settings-rc}} と [[Xorg]] のファイルの両方/片方を調整するか削除することで普通に起動できるようになるはずです。}}&lt;br /&gt;
&lt;br /&gt;
=== 手動設定 ===&lt;br /&gt;
&lt;br /&gt;
設定ファイルを編集することで、([[#自動設定|自動的に]]、または [[#NVIDIA settings|nvidia-settings]]によって有効化できない) いくつかの微調整をすることができます。変更を適用する前に Xorg サーバーを再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
その他の詳細やオプションについては [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/ NVIDIA Accelerated Linux Graphics Driver README and Installation Guide] をご覧ください。&lt;br /&gt;
&lt;br /&gt;
==== 最小設定 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|20-nvidia.conf}} (もしくは非推奨の {{ic|xorg.conf}}) の基本的な設定ブロックは以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-nvidia.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;NVIDIA Card&amp;quot;&lt;br /&gt;
        Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
        VendorName &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
        BoardName &amp;quot;GeForce GTX 1050 Ti&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 起動時のロゴを無効化 ====&lt;br /&gt;
&lt;br /&gt;
古いドライバ ({{AUR|nvidia-340xx-dkms}}) を使用している場合、X の起動時に表示される NVIDIA ロゴスプラッシュスクリーンを無効化しておいたほうがいいかもしれません。{{ic|Device}} セクション内に {{ic|&amp;quot;NoLogo&amp;quot;}} オプションを追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;NoLogo&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== モニター検出をオーバーライド ====&lt;br /&gt;
&lt;br /&gt;
{{ic|Device}} セクション内の {{ic|&amp;quot;ConnectedMonitor&amp;quot;}} オプションにより、 X サーバーが起動した時にモニター検出をオーバーライドできます。これにより、起動時間を大幅に減らせるかもしれません。利用可能なオプション: アナログ接続用の {{ic|&amp;quot;CRT&amp;quot;}}、デジタルモニター用の {{ic|&amp;quot;DFP&amp;quot;}}、テレビ用の {{ic|&amp;quot;TV&amp;quot;}}。&lt;br /&gt;
&lt;br /&gt;
以下の行は起動時のチェックをバイパスし、モニターを DFP として認識することを NVIDIA ドライバーに強制します:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|たとえディスプレイが薄型パネルであろうと、アナログ15ピン VGA 接続に対しては &amp;quot;CRT&amp;quot; を使用してください。&amp;quot;DFP&amp;quot; は DVI や HDMI、DisplayPort のデジタル接続のみを意図しています。}}&lt;br /&gt;
&lt;br /&gt;
==== 輝度調整を有効化 ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|時代遅れの可能性あり[https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/thread/GXJG7D3ALUQKOE2DT4XCL4UXQUFDDSEC/]。上流のパッケージも古いようです。}}&lt;br /&gt;
&lt;br /&gt;
以下をカーネルパラメータに追加してください:&lt;br /&gt;
&lt;br /&gt;
 nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1&lt;br /&gt;
&lt;br /&gt;
あるいは、以下を {{ic|Device}} セクション内に追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;RegistryDwords&amp;quot; &amp;quot;EnableBrightnessControl=1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
もし、この設定で輝度調整がまだ機能しない場合は、{{AUR|nvidia-bl-dkms}} をインストールしてみてください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{AUR|nvidia-bl-dkms}} をインストールすることにより、バックライト輝度調整用の {{ic|/sys/class/backlight/nvidia_backlight/}} インターフェイスが提供されます。しかし、システムが {{ic|/sys/class/backlight/acpi_video0/}} に対してバックライト制御の変更を発行し続けるかもしれません。この場合の1つの解決策は、例えば、&#039;&#039;inotifywait&#039;&#039; を使用して {{ic|acpi_video0/brightness}} の変更を監視し、それを変換して {{ic|nvidia_backlight/brightness}} に対して書き込むことです。[[バックライト#sysfs を変更しても明るさが変更されない]] をご覧ください。}}&lt;br /&gt;
&lt;br /&gt;
==== SLI を有効化 ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|バージョン 455.23.04 から、一部の SLI モードはもはやサポートされていません。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|GTX 10xx シリーズ (1080、1070、1060 など) 以降は 2-way SLI のみがサポートされます。3-way や 4-way SLI は CUDA/OpenCL アプリケーションに対しては機能するかもしれませんが、すべての OpenGL アプリケーションに対してはたいてい機能しないでしょう。}}&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバーの [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/xconfigoptions.html#SLI README] 付録 B によると: &#039;&#039;このオプションは、サポートされている構成で SLI レンダリングの設定を制御します。&#039;&#039; &amp;quot;サポートされている構成&amp;quot;とは SLI 認定マザーボードと、2基または3基の SLI 認定 GeForce GPU を搭載しているコンピュータのことです。&lt;br /&gt;
&lt;br /&gt;
{{ic|lspci}} を使って1つ目の GPU の PCI Bus ID を調べてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# lspci -d ::03xx|&lt;br /&gt;
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)&lt;br /&gt;
03:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)&lt;br /&gt;
04:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)&lt;br /&gt;
08:00.0 3D controller: NVIDIA Corporation GM108GLM [Quadro K620M / Quadro M500M] (rev a2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
調べた BusID (前述の例では 3) を {{ic|Device}} セクション内に追加してください:&lt;br /&gt;
&lt;br /&gt;
 BusID &amp;quot;PCI:3:0:0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|フォーマットが重要です。BusID の値は {{ic|&amp;quot;PCI:&amp;lt;BusID&amp;gt;:0:0&amp;quot;}} のように指定されなければなりません。}}&lt;br /&gt;
&lt;br /&gt;
希望する SLI レンダリングモードの値を {{ic|Screen}} セクション内に追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;SLI&amp;quot; &amp;quot;AA&amp;quot;&lt;br /&gt;
&lt;br /&gt;
以下の表は利用可能なレンダリングモードです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 値 !! 挙動&lt;br /&gt;
|-&lt;br /&gt;
| 0, no, off, false, Single || レンダリング時にただ1つの GPU を使う。&lt;br /&gt;
|-&lt;br /&gt;
| 1, yes, on, true, Auto || SLI を有効化し、ドライバーが自動的に適切なレンダリングモードを選択することを許可する。&lt;br /&gt;
|-&lt;br /&gt;
| AFR || SLI を有効化し、Alternate Frame Rendering モードを使う。&lt;br /&gt;
|-&lt;br /&gt;
| SFR || SLI を有効化し、Split Frame Rendering モードを使う。&lt;br /&gt;
|-&lt;br /&gt;
| AA || SLI を有効化し、SLI アンチエイリアシングを使う。この値を Full-Scene アンチエイリアシングと一緒に使うと視覚品質が向上します。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
あるいは、&#039;&#039;nvidia-xconfig&#039;&#039; ユーティリティを使って、これらの変更を {{ic|xorg.conf}} に追加できます:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig --busid=PCI:3:0:0 --sli=AA&lt;br /&gt;
&lt;br /&gt;
SLI モードが有効化されていることをシェルから確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q all {{!}} grep SLIMode|&lt;br /&gt;
  Attribute &#039;SLIMode&#039; (arch:0.0): AA&lt;br /&gt;
    &#039;SLIMode&#039; is a string attribute.&lt;br /&gt;
    &#039;SLIMode&#039; is a read-only attribute.&lt;br /&gt;
    &#039;SLIMode&#039; can use the following target types: X Screen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|SLI を有効化した後に xorg を起動するとシステムがフリーズしたり、応答しなくなったりするかもしれません。再起動する前にディスプレイマネージャーを無効化することをおすすめします。}}&lt;br /&gt;
&lt;br /&gt;
以上の設定で機能しない場合は、{{ic|nvidia-settings}} で得られる PCI Bus ID を使用する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q all {{!}} grep -i pcibus|&lt;br /&gt;
Attribute &#039;PCIBus&#039; (host:0[gpu:0]): 101.&lt;br /&gt;
  &#039;PCIBus&#039; is an integer attribute.&lt;br /&gt;
  &#039;PCIBus&#039; is a read-only attribute.&lt;br /&gt;
  &#039;PCIBus&#039; can use the following target types: GPU, SDI Input Device.&lt;br /&gt;
Attribute &#039;PCIBus&#039; (host:0[gpu:1]): 23.&lt;br /&gt;
  &#039;PCIBus&#039; is an integer attribute.&lt;br /&gt;
  &#039;PCIBus&#039; is a read-only attribute.&lt;br /&gt;
  &#039;PCIBus&#039; can use the following target types: GPU, SDI Input Device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、xorg.d 内の PrimaryGPU オプションをコメントアウトしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
    # Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この設定でグラフィカルブートの問題も解決できるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== マルチモニター ===&lt;br /&gt;
&lt;br /&gt;
一般的な情報は [[マルチディスプレイ]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Settings を使う ====&lt;br /&gt;
&lt;br /&gt;
[[#nvidia-settings|nvidia-settings]] ツールを使ってマルチモニターを設定できます。&lt;br /&gt;
&lt;br /&gt;
CLI で設定する場合、まずは以下を実行して {{ic|CurrentMetaMode}} を確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q CurrentMetaMode|2=&lt;br /&gt;
Attribute &#039;CurrentMetaMode&#039; (hostnmae:0.0): id=50, switchable=no, source=nv-control :: DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|::}} 以降の全て (上記の場合: {{ic|1=DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0&amp;amp;#125;}}) を使って {{ic|1=nvidia-settings --assign &amp;quot;CurrentMetaMode=&#039;&#039;your_meta_mode&#039;&#039;&amp;quot;}} でディスプレイを再設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|使用するモニターや解像度の設定ごとにシェルのエイリアスを作成すると便利です。}}&lt;br /&gt;
&lt;br /&gt;
==== ConnectedMonitor ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|{{ic|Option &amp;quot;TwinView&amp;quot;}} はバージョン 302.07 で削除され、TwinView は常に有効になっています。}}&lt;br /&gt;
&lt;br /&gt;
ドライバーがセカンドモニタを正しく認識しない場合は、ConnectedMonitor を使って認識するように強制できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor1&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Panasonic&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;Panasonic MICRON 2100Ex&amp;quot;&lt;br /&gt;
    HorizSync       30.0 - 121.0 # this monitor has incorrect EDID, hence Option &amp;quot;UseEDIDFreqs&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
    VertRefresh     50.0 - 160.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor2&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Gateway&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;GatewayVX1120&amp;quot;&lt;br /&gt;
    HorizSync       30.0 - 121.0&lt;br /&gt;
    VertRefresh     50.0 - 160.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device1&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option         &amp;quot;NoLogo&amp;quot;&lt;br /&gt;
    Option         &amp;quot;UseEDIDFreqs&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
    Option         &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT,CRT&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 6200 LE&amp;quot;&lt;br /&gt;
    BusID          &amp;quot;PCI:3:0:0&amp;quot;&lt;br /&gt;
    Screen          0&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device2&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option         &amp;quot;NoLogo&amp;quot;&lt;br /&gt;
    Option         &amp;quot;UseEDIDFreqs&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
    Option         &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT,CRT&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 6200 LE&amp;quot;&lt;br /&gt;
    BusID          &amp;quot;PCI:3:0:0&amp;quot;&lt;br /&gt;
    Screen          1&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|TwinView}} を使わずに1つのカードで2つのモニターを X で使うために {{ic|Screen}} でデバイスを複製しています。{{ic|nvidia-settings}} は追加した {{ic|ConnectedMonitor}} オプションを全て消してしまうので注意してください。&lt;br /&gt;
&lt;br /&gt;
==== TwinView ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|{{ic|Option &amp;quot;TwinView&amp;quot;}} はバージョン 302.07 で削除され、TwinView は常に有効になっています。}}&lt;br /&gt;
&lt;br /&gt;
画面を2つ表示するのではなく1つの大きな画面を表示したい場合、{{ic|TwinView}} 引数を {{ic|1}} に設定してください。コンポジットを使いたい場合、このオプションを使用する必要があります。TwinView は全てのモニターが同一のカードに接続されている場合にのみ機能します。&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;TwinView&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
設定例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-monitor.conf|&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;TwinLayout&amp;quot;&lt;br /&gt;
    Screen         0 &amp;quot;metaScreen&amp;quot; 0 0&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Enable&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor1&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Enable&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Card0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #refer to the link below for more information on each of the following options.&lt;br /&gt;
    Option         &amp;quot;HorizSync&amp;quot;          &amp;quot;DFP-0: 28-33; DFP-1 28-33&amp;quot;&lt;br /&gt;
    Option         &amp;quot;VertRefresh&amp;quot;        &amp;quot;DFP-0: 43-73; DFP-1 43-73&amp;quot;&lt;br /&gt;
    Option         &amp;quot;MetaModes&amp;quot;          &amp;quot;1920x1080, 1920x1080&amp;quot;&lt;br /&gt;
    Option         &amp;quot;ConnectedMonitor&amp;quot;   &amp;quot;DFP-0, DFP-1&amp;quot;&lt;br /&gt;
    Option         &amp;quot;MetaModeOrientation&amp;quot; &amp;quot;DFP-1 LeftOf DFP-0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;metaScreen&amp;quot;&lt;br /&gt;
    Device         &amp;quot;Card0&amp;quot;&lt;br /&gt;
    Monitor        &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    DefaultDepth    24&lt;br /&gt;
    Option         &amp;quot;TwinView&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
    SubSection &amp;quot;Display&amp;quot;&lt;br /&gt;
        Modes          &amp;quot;1920x1080&amp;quot;&lt;br /&gt;
    EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/configtwinview.html Device オプション情報]。&lt;br /&gt;
&lt;br /&gt;
SLI に対応しているカードが複数枚存在する場合、別々のカードに接続された複数のモニターを使うことができます (例: 2枚のカードが SLI で、各々のカードにモニターが1台ずつ接続)。SLI モザイクモードと &amp;quot;MetaModes&amp;quot; オプションで有効になります。以下は上記と同じように設定する例で、[[GNOME]] が完璧に動作します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-monitor.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Card A&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;nvidia&amp;quot;&lt;br /&gt;
        BusID           &amp;quot;PCI:1:00:0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Card B&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;nvidia&amp;quot;&lt;br /&gt;
        BusID           &amp;quot;PCI:2:00:0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Right Monitor&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Left Monitor&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Right Screen&amp;quot;&lt;br /&gt;
        Device          &amp;quot;Card A&amp;quot;&lt;br /&gt;
        Monitor         &amp;quot;Right Monitor&amp;quot;&lt;br /&gt;
        DefaultDepth    24&lt;br /&gt;
        Option          &amp;quot;SLI&amp;quot; &amp;quot;Mosaic&amp;quot;&lt;br /&gt;
        Option          &amp;quot;Stereo&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
        Option          &amp;quot;BaseMosaic&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
        Option          &amp;quot;MetaModes&amp;quot; &amp;quot;GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0&amp;quot;&lt;br /&gt;
        SubSection      &amp;quot;Display&amp;quot;&lt;br /&gt;
                        Depth           24&lt;br /&gt;
        EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Left Screen&amp;quot;&lt;br /&gt;
        Device          &amp;quot;Card B&amp;quot;&lt;br /&gt;
        Monitor         &amp;quot;Left Monitor&amp;quot;&lt;br /&gt;
        DefaultDepth    24&lt;br /&gt;
        Option          &amp;quot;SLI&amp;quot; &amp;quot;Mosaic&amp;quot;&lt;br /&gt;
        Option          &amp;quot;Stereo&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
        Option          &amp;quot;BaseMosaic&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
        Option          &amp;quot;MetaModes&amp;quot; &amp;quot;GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0&amp;quot;&lt;br /&gt;
        SubSection      &amp;quot;Display&amp;quot;&lt;br /&gt;
                        Depth           24&lt;br /&gt;
        EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Default&amp;quot;&lt;br /&gt;
        Screen 0        &amp;quot;Right Screen&amp;quot; 0 0&lt;br /&gt;
        Option          &amp;quot;Xinerama&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== TwinView を使って垂直同期 =====&lt;br /&gt;
&lt;br /&gt;
TwinView と垂直同期 ({{ic|nvidia-settings}} の &#039;&#039;Sync to VBlank&#039;&#039; オプション) を使っている場合、モニターの大きさが異なっていると片方の画面だけが同期されます。{{ic|nvidia-settings}} にはどちらの画面を同期させるか設定するオプション (&#039;&#039;Sync to this display device&#039;&#039; オプション) が存在しますが、必ずしも機能するとはいいがたいです。起動時に以下の環境変数を追加することで解決します (例: {{ic|/etc/profile}} に追加):&lt;br /&gt;
&lt;br /&gt;
 export __GL_SYNC_TO_VBLANK=1&lt;br /&gt;
 export __GL_SYNC_DISPLAY_DEVICE=DFP-0&lt;br /&gt;
 export VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=DFP-0&lt;br /&gt;
&lt;br /&gt;
{{ic|DFP-0}} は適切な画面に置き換えてください ({{ic|DFP-0}} は DVI 端子で {{ic|CRT-0}} は VGA 端子です)。ディスプレイの識別名は {{ic|nvidia-settings}} の &#039;&#039;X Server XVideoSettings&#039;&#039; セクションで確認できます。&lt;br /&gt;
&lt;br /&gt;
===== Twinview を使ってゲームを遊ぶ =====&lt;br /&gt;
&lt;br /&gt;
TwinView を使ってフルスクリーンのゲームを遊ぶ場合、2つの画面が1つの大きな画面としてゲームから認識されることがあります。技術的にこれは正しいのですが (仮想的な X スクリーンの横幅は両方の画面を合わせたサイズになります)、ゲームを遊ぶときは両方の画面を使わないようにしたいときもあるでしょう。&lt;br /&gt;
&lt;br /&gt;
SDL 1.2 のこの挙動を修正するには、次を試して下さい:&lt;br /&gt;
&lt;br /&gt;
 export SDL_VIDEO_FULLSCREEN_HEAD=1&lt;br /&gt;
&lt;br /&gt;
OpenGL の場合、{{ic|xorg.conf}} の {{ic|Device}} セクションに適切な Metamodes を追加して X を再起動してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;Metamodes&amp;quot; &amp;quot;1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL; 1280x1024,NULL;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[ゲーム#別の X サーバーでゲームを起動する|別の X サーバーでゲームを起動する]]方法もあります。上記の方法と一緒に使うことも可能です。&lt;br /&gt;
&lt;br /&gt;
==== モザイクモード ====&lt;br /&gt;
&lt;br /&gt;
モザイクモードは、複数のグラフィクカードでコンポジット有りで3つ以上のモニタを使用する唯一の方法です。ウィンドウマネージャは各モニタの違いを認識するかもしれませんし、しないかもしれません。モザイクモードには、有効な SLI 設定が必要です。SLI を使わずにベースモードを使用する場合でも、GPU は依然として SLI 対応/互換でなければなりません。&lt;br /&gt;
&lt;br /&gt;
===== ベースモザイク =====&lt;br /&gt;
&lt;br /&gt;
ベースモザイクモードは Geforce 8000 シリーズ以上の GPU で動作します。nvidia-setting の GUI から有効にすることはできません。&#039;&#039;nvidia-xconfig&#039;&#039; コマンドラインプログラムを使用するか {{ic|xorg.conf}} を手動で編集する必要があります。Metamodes を指定してください。以下は4台の DFP を 2x2 の構成で使用する例です。各々の解像度は 1920x1024 で、2枚のカードにそれぞれ2台の DFP が接続されている場合:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig --base-mosaic --metamodes=&amp;quot;GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|ドキュメントには 2x2 のモニター構成が記述されていますが、Base Mosaic モードで[https://forums.developer.nvidia.com/t/basemosaic-v295-vs-v310-vs-v325-only-up-to-three-screens/30583#3954733 GeForce カードは人為的にモニタ3台に制限されています]。Quadro カードは4台以上のモニタをサポートしています。2014年9月現在、Windows ドライバはこの人為的な制限を落としましたが、Linux ドライバでは未だに残っています。}}&lt;br /&gt;
&lt;br /&gt;
===== SLI モザイク =====&lt;br /&gt;
&lt;br /&gt;
SLI 構成を使っていて、使用する GPU が Quadro FX 5800 や Quadro Fermi 以降の場合、SLI モザイクモードが利用できます。nvidia-settings の GUI の中から有効化するか、コマンドラインで設定してください:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig --sli=Mosaic --metamodes=&amp;quot;GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== NVswitch ==&lt;br /&gt;
&lt;br /&gt;
NVswitch のあるシステム (AWS の H100x8 など) では、以下が必要です。&lt;br /&gt;
&lt;br /&gt;
* nvidia-fabricmanager をインストールする。&lt;br /&gt;
* Fabric manager が必要とする、対応するカーネルモジュールをインストールする。&lt;br /&gt;
&lt;br /&gt;
Fabric manager を使うと、pytorch が GPU が見つからないと報告してきます。&lt;br /&gt;
&lt;br /&gt;
Fabric マネージャをインストールするには:&lt;br /&gt;
&lt;br /&gt;
# Nvidia から tarball をダウンロードする。[https://developer.download.nvidia.com/compute/cuda/redist/fabricmanager/linux-x86_64/ こちら]&lt;br /&gt;
# バージョン 555.42.02 は正しく動作します。&lt;br /&gt;
# インストールスクリプト sbin/fm_run_package_installer.sh を変更してしてインストール先のパスを修正してください。&lt;br /&gt;
&lt;br /&gt;
対応するカーネルドライバを入手するには:&lt;br /&gt;
&lt;br /&gt;
# nvidia-beta-dkms と nvidia-utils-beta の AUR リポジトリを git clone してください。&lt;br /&gt;
# PKGBUILD を変更してバージョン 555.42.02 を使用するようにしてください。&lt;br /&gt;
# ビルドし、インストールしてください。&lt;br /&gt;
# 再起動してください。&lt;br /&gt;
&lt;br /&gt;
最後に、{{ic|systemctl enable nvidia-fabricmanager}} と {{ic|systemctl start nvidia-fabricmanager}} を実行すれば、pytorch が動くはずです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA/ヒントとテクニック]] を参照。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA/トラブルシューティング]] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://forums.developer.nvidia.com/t/current-graphics-driver-releases/28500 Current graphics driver releases in official NVIDIA Forum]&lt;br /&gt;
* [https://forums.developer.nvidia.com/c/gpu-graphics/linux/148 NVIDIA Developers Forum - Linux Subforum]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NVIDIA|2026-02-03|862293}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Podman&amp;diff=40862</id>
		<title>Podman</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Podman&amp;diff=40862"/>
		<updated>2025-09-18T03:55:41Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: /* ルートレス Podman */ 不要な「の」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[Category:サンドボックス]]&lt;br /&gt;
[[en:Podman]]&lt;br /&gt;
[[pt:Podman]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|systemd-nspawn}}&lt;br /&gt;
{{Related|Linux Containers}}&lt;br /&gt;
{{Related|Docker}}&lt;br /&gt;
{{Related|Buildah}}&lt;br /&gt;
{{Related|Vagrant}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
Podman は [[Docker]] の代わりになるプログラムで、同じようなインターフェイスを提供します。ルートレスコンテナと &#039;&#039;docker-compose&#039;&#039; の shim サービスをサポートします。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|podman}} パッケージを[[インストール]]してください。コンテナイメージを作成したい場合は [[Buildah]] も見てください。&lt;br /&gt;
&lt;br /&gt;
コンテナのネットワーキングに関しては、{{Pkg|cni-plugins}} または v4.0 からは {{Pkg|netavark}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
[[Docker]] を置き換えたい場合は、docker バイナリを模倣する {{Pkg|podman-docker}} を man ページと共にインストールできます。&lt;br /&gt;
&lt;br /&gt;
[[Docker]] と異なり、Podman はデーモンを必要としませんが、{{Pkg|cockpit-podman}} を介して [[cockpit]] のようなサービスに API を提供するものは存在します。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは Podman コンテナを実行できるのは root だけです。root 以外のユーザーでコンテナを実行したい場合は [[#ルートレス Podman]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
コンテナの挙動を設定する設定ファイルは {{ic|/usr/share/containers/}} にあります。編集する前に {{ic|/etc/containers}} にコピーする必要があります。Podman によって使われるネットワークブリッジインターフェイスを設定したいときは {{ic|/etc/cni/net.d/87-podman.conflist}} を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ルートレス Podman ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|ルートレス Podman は非特権ユーザー名前空間の使用 ({{ic|CONFIG_USER_NS_UNPRIVILEGED}}) に依存しています。これはいくつかの重大なセキュリティ上の影響があります。詳細は [[セキュリティ#アプリケーションのサンドボックス化]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
デフォルトではコンテナ (カーネルの文脈で言うところの名前空間) を実行できるのは {{ic|root}} だけです。ルートレスで Podman を実行すると、攻撃者がシステムに対するルート権限を持たないため、セキュリティが向上します。また、複数の非特権ユーザーが同じマシン上でコンテナを実行できるようになります。{{man|1|podman|Rootless mode}} も参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 追加の依存関係 ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|slirp4netns}} が、[https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md rootless 環境]内で Podman を実行するための依存パッケージとしてインストールされます。&lt;br /&gt;
&lt;br /&gt;
Podman が {{Pkg|netavark}} ネットワークバックエンド ({{man|5|containers.conf}} を参照) を使用する場合、rootless コンテナで名前解決を行うために {{Pkg|aardvark-dns}} をインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
==== ネイティブな rootless オーバーレイを有効化する ====&lt;br /&gt;
&lt;br /&gt;
以前は、rootless 環境で [[FUSE]] オーバーレイをマウントするために {{Pkg|fuse-overlayfs}} パッケージを使用しなくてはなりませんでした。しかし、Podman と Linux カーネルの最近のバージョンは&#039;&#039;ネイティブな&#039;&#039; rootless オーバーレイを[https://www.redhat.com/sysadmin/podman-rootless-overlay サポート]しており、これはより高パフォーマンスです。{{Pkg|fuse-overlayfs}} から移行するには、次を実行してください:&lt;br /&gt;
 $ podman system reset&lt;br /&gt;
&lt;br /&gt;
残念ながら、このコマンドは pull されたコンテナをすべて削除してしまいます。また、Podman が {{ic|overlay}} ドライバを使用し、かつ {{man|5|containers-storage.conf}} で {{ic|mount_program}} パラメータが定義されていないことを確認してください。さらに、[[Docker#ネイティブ overlay diff エンジンを有効化する]] の指示に従う必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
ネイティブな rootless オーバーレイが有効化されていることを確認するには、次を実行してください:&lt;br /&gt;
 $ podman info&lt;br /&gt;
{{ic|graphDriverName: overlay}} と {{ic|Native Overlay Diff: &amp;quot;true&amp;quot;}} が出力される必要があります。&lt;br /&gt;
&lt;br /&gt;
==== kernel.unprivileged_userns_clone を有効にする ====&lt;br /&gt;
&lt;br /&gt;
まず、次のコマンドを実行して {{ic|kernel.unprivileged_userns_clone}} の値を確認します:&lt;br /&gt;
&lt;br /&gt;
 $ sysctl kernel.unprivileged_userns_clone&lt;br /&gt;
&lt;br /&gt;
現在、{{ic|0}} に設定されている場合は、[[sysctl]] または[[カーネルパラメータ]]で {{ic|1}} を設定して有効にします。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|linux-hardened}} では {{ic|kernel.unprivileged_userns_clone}} がデフォルトで {{ic|0}} に設定されています。}}&lt;br /&gt;
&lt;br /&gt;
==== subuid と subgid を設定する ====&lt;br /&gt;
&lt;br /&gt;
ルートレスで Podman を動かすには、Podman を使用するユーザー毎に {{man|5|subuid}} と {{man|5|subgid}} の設定エントリが存在していなければなりません。{{man|8|useradd}} を使って作成された新しい[[ユーザー]]には、これらのエントリがデフォルトで存在します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{Pkg|shadow}} {{ic|4.11.1-3}} より前の時点で作成されたユーザーは、{{ic|/etc/subuid}} と {{ic|/etc/subgid}} 内にエントリがデフォルトで存在しません。{{man|8|usermod}} コマンドを使うか、これらのファイルを手動で変更することで、エントリを作成することができます。&lt;br /&gt;
:以下のコマンドは、{{ic|&#039;&#039;username&#039;&#039;}} というユーザとグループが Podman コンテナ (あるいは他の種のコンテナ) を実行できるようにします。このコマンドは、指定された範囲の UID と GID を、指定されたユーザとグループに割り当てます。&lt;br /&gt;
:{{bc|# usermod --add-subuids 100000-165535 --add-subgids 100000-165535 &#039;&#039;username&#039;&#039;}}&lt;br /&gt;
:{{ic|&#039;&#039;username&#039;&#039;}} に対する上記の範囲は、システム上の最初のユーザに対して定義されるため、他のユーザによってすでに取られているかもしれません。わからない場合は、まず {{ic|/etc/subuid}} と {{ic|/etc/subgid}} を調べて、すでに予約されている範囲を見つけてください。&lt;br /&gt;
* 多くのイメージはマッピングのために65536個の UID と GID を必要とします (特に busybox や alpine のベースイメージ)。docker との互換性を最大にするため、各ユーザに最低でもその数の UID と GID を割り当てることをお勧めします。&lt;br /&gt;
* [[systemd-homed]] を使用している場合、コンテナ用の UID と GID の最小値は 524288 以上でなければなりません ({{ic|userdbctl}} の出力で &amp;quot;begin container users&amp;quot; を確認してください)。[https://www.reddit.com/r/podman/comments/uwgkb1/tip_systemdhomed_with_rootless_subuidsubgid/]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== subuid と subgid の変更を伝播する ====&lt;br /&gt;
&lt;br /&gt;
ルートレス Podman は非特権名前空間を存続させるために pause プロセスを使用します。これにより、{{ic|/etc/subuid}} および {{ic|/etc/subgid}} ファイルへの変更は、pause プロセスの実行中にルートレスコンテナに伝播されるのを防ぎます。これらの変更を伝播するには、以下のコマンドを実行します。&lt;br /&gt;
&lt;br /&gt;
 $ podman system migrate&lt;br /&gt;
&lt;br /&gt;
この後、上記のファイルで指定されたユーザ/グループは、Podman コンテナを起動して実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== SYS_CHROOT ケイパビリティを追加する (任意) ====&lt;br /&gt;
&lt;br /&gt;
リリース 4.4 から、以前はデフォルトであった一部のケイパビリティが ({{ic|SYS_CHROOT}} を含めて) 無くなりました ([https://blog.podman.io/2022/12/dropping-capabilities-making-containers-more-secure/ 公式のブログ投稿]で説明されています)。これは、chroot を使用するコンテナ (&#039;&#039;archlinux:base&#039;&#039; など) に影響を与え、コンテナ内での pacman の操作 (すなわち、インストール後のスクリプトを実行するパッケージのインストール) が失敗してしまいます。このような問題は、podman でビルドする際にビルド中に以下のようなエラーが発生する場合、特定できます:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 could not change the root directory (Operation not permitted)&lt;br /&gt;
 error: command failed to execute correctly&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
これを解決するには、{{ic|/etc/containers/containers.conf}} を編集してリストに {{ic|SYS_CHROOT}} を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/containers/containers.conf|2=&lt;br /&gt;
default_capabilities = [&lt;br /&gt;
  &amp;quot;CHOWN&amp;quot;,&lt;br /&gt;
  &amp;quot;DAC_OVERRIDE&amp;quot;,&lt;br /&gt;
  &amp;quot;FOWNER&amp;quot;,&lt;br /&gt;
  &amp;quot;FSETID&amp;quot;,&lt;br /&gt;
  &amp;quot;KILL&amp;quot;,&lt;br /&gt;
  &amp;quot;NET_BIND_SERVICE&amp;quot;,&lt;br /&gt;
  &amp;quot;SETFCAP&amp;quot;,&lt;br /&gt;
  &amp;quot;SETGID&amp;quot;,&lt;br /&gt;
  &amp;quot;SETPCAP&amp;quot;,&lt;br /&gt;
  &amp;quot;SETUID&amp;quot;,&lt;br /&gt;
  &amp;quot;SYS_CHROOT&amp;quot;,&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
また、{{man|1|podman-build}} を実行する際にコマンドラインから {{ic|--cap-add sys_chroot}} を使うことで、一時的に SYS_CHROOT ケイパビリティを付与することができます。&lt;br /&gt;
&lt;br /&gt;
=== ストレージ ===&lt;br /&gt;
&lt;br /&gt;
コンテナイメージとインスタンスの保存方法と保存場所の設定は、{{ic|/etc/containers/storage.conf}} にあります。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[#ルートレス Podman]] を使用する場合、ストレージ設定のオーバーライドをユーザーごとに {{ic|$XDG_CONFIG_HOME/containers/storage.conf}} に追加できます。}}&lt;br /&gt;
&lt;br /&gt;
ストレージに使用しているファイルシステムに応じて {{ic|driver}} を設定します ({{man|5|containers-storage.conf|STORAGE_TABLE}} を参照)。&lt;br /&gt;
&lt;br /&gt;
=== 外部のアーキテクチャ ===&lt;br /&gt;
&lt;br /&gt;
Podman は、[[Wikipedia:binfmt_misc]] システムを使用することで、使用中のホストとは異なる CPU アーキテクチャ用にビルドされたイメージを実行することができます。&lt;br /&gt;
&lt;br /&gt;
これを有効化するには、{{Pkg|qemu-user-static}} と {{Pkg|qemu-user-static-binfmt}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
[[systemd]] には、新しいルールを有効化する {{ic|systemd-binfmt.service}} サービスが同梱されています。&lt;br /&gt;
&lt;br /&gt;
binfmt ルールが追加されたことを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls /proc/sys/fs/binfmt_misc|&lt;br /&gt;
DOSWin        qemu-cris        qemu-ppc      qemu-sh4eb        status&lt;br /&gt;
qemu-aarch64  qemu-m68k        qemu-ppc64    qemu-sparc        &lt;br /&gt;
qemu-alpha    qemu-microblaze  qemu-riscv64  qemu-sparc32plus  &lt;br /&gt;
qemu-arm      qemu-mips        qemu-s390x    qemu-sparc64      &lt;br /&gt;
qemu-armeb    qemu-mipsel      qemu-sh4      register&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これで、Podman は外部のアーキテクチャのイメージを実行できるようになったはずです。ほとんどのコマンドは、{{ic|--arch}} オプションが渡されたときに、外部のアーキテクチャを使用します。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
{{hc|# podman run --arch arm64 &#039;docker.io/alpine:latest&#039; arch|&lt;br /&gt;
aarch64&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Docker Compose ===&lt;br /&gt;
&lt;br /&gt;
Podman 3.0.0 では、&#039;&#039;docker-compose&#039;&#039; サポートが追加されました。これには、Docker を模倣する Podman ソケットを有効化する必要があります。{{ic|podman.service}} ユニットを[[起動]]してください。ルートレスコンテナの場合は、代わりに {{ic|podman.service}} [[ユーザーユニット]]を[[起動]]し、{{ic|DOCKER_HOST}} 変数を設定する必要があります:&lt;br /&gt;
&lt;br /&gt;
 $ export DOCKER_HOST=&amp;quot;unix://$XDG_RUNTIME_DIR/podman/podman.sock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
コンテナ間でのホスト名解決を行うには、{{Pkg|podman-dnsname}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&lt;br /&gt;
buildkit を docker 内で有効化している場合、統合は機能しません。buildkit を無効化する必要があります:&lt;br /&gt;
&lt;br /&gt;
 $ export DOCKER_BUILDKIT=0&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA GPU ===&lt;br /&gt;
&lt;br /&gt;
[https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#podman NVIDIA Container Toolkit] は、NVIDIA GPU 用のコンテナランタイムを提供します。{{AUR|nvidia-container-toolkit}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
セットアップをテストしてください:&lt;br /&gt;
&lt;br /&gt;
 $ podman run --rm nvidia/cuda:12.0.0-runtime-ubuntu20.04 nvidia-smi&lt;br /&gt;
&lt;br /&gt;
Podman でルートレスコンテナを実行できるようにするには、{{ic|/etc/nvidia-container-runtime/config.toml}} で {{ic|no-cgroups}} の設定を {{ic|true}} に設定しなければなりません。&lt;br /&gt;
&lt;br /&gt;
== イメージ ==&lt;br /&gt;
&lt;br /&gt;
{{Note|イメージのレジストリプレフィックスは省略できます。Podman は {{ic|/etc/containers/registries.conf}} の {{ic|unqualified-search-registries}} に定義されている全てのレジストリからイメージを自動で (定義されている順番で) 検索します。以下に記述しているイメージは設定に {{ic|docker.io}} がなくても使えるように全てプレフィックスを付けています。}}&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドで [https://hub.docker.com/_/archlinux/ Arch Linux] x86_64 イメージが [https://hub.docker.com/ Docker Hub] から取得されます。&lt;br /&gt;
&lt;br /&gt;
 # podman pull docker.io/archlinux&lt;br /&gt;
&lt;br /&gt;
利用可能なタグの全リストや、ビルドツールあるなしのバージョンについては Docker Hub のページを見てください。&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.archlinux.org/archlinux/archlinux-docker/blob/master/README.md README.md] も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Alpine Linux ===&lt;br /&gt;
&lt;br /&gt;
[https://www.alpinelinux.org/ Alpine Linux] はコンテナイメージとして容量が小さく、静的バイナリとしてコンパイルされたソフトウェアに適しています。以下のコマンドで最新の Alpine Linux イメージが [https://hub.docker.com/ Docker Hub] から取得されます:&lt;br /&gt;
&lt;br /&gt;
 # podman pull docker.io/alpine&lt;br /&gt;
&lt;br /&gt;
Alpine Linux はほとんどの Linux ディストリビューションで使われている [https://www.gnu.org/software/libc/ glibc] libc 実装の代わりに [https://musl.libc.org/ musl] libc 実装を使っています。Arch Linux は glibc を使っているため、Arch Linux ホストと Alpine Linux コンテナにはパフォーマンスからソフトウェアの正確性まで様々な影響がある違いが存在します。差異については https://wiki.musl-libc.org/functional-differences-from-glibc.html で文書化されています。&lt;br /&gt;
&lt;br /&gt;
Arch Linux (や glibc を使用する他の環境) で動的リンクでビルドしたソフトウェアは Alpine Linux (や他の libc を使用する環境) で実行したときにバグやパフォーマンスの問題が発生する可能性があります。例としては [https://bugs.python.org/issue32307]、[https://superuser.com/questions/1219609/why-is-the-alpine-docker-image-over-50-slower-than-the-ubuntu-image]、[https://pythonspeed.com/articles/alpine-docker-python] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== CentOS ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドによって最新の [https://hub.docker.com/_/centos CentOS] イメージが [https://hub.docker.com/ Docker Hub] から取得されます:&lt;br /&gt;
&lt;br /&gt;
 # podman pull docker.io/centos&lt;br /&gt;
&lt;br /&gt;
CentOS のリリースを指定するタグについては Docker Hub のページを見てください。&lt;br /&gt;
&lt;br /&gt;
=== Debian ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドによって最新の [https://hub.docker.com/_/debian Debian] イメージが [https://hub.docker.com/ Docker Hub] から取得されます:&lt;br /&gt;
&lt;br /&gt;
 # podman pull docker.io/debian&lt;br /&gt;
&lt;br /&gt;
利用可能なタグについては Docker Hub のページを見てください。各 Debian リリース毎に standard と slim バージョンが存在します。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Add pause to process ===&lt;br /&gt;
&lt;br /&gt;
 WARN[0000] Failed to add pause process to systemd sandbox cgroup: Process org.freedesktop.systemd1 exited with status 1 &lt;br /&gt;
&lt;br /&gt;
これは以下により解決できます: https://github.com/containers/crun/issues/704&lt;br /&gt;
&lt;br /&gt;
 # echo +cpu +cpuset +io +memory +pids &amp;gt; /sys/fs/cgroup/cgroup.subtree_control&lt;br /&gt;
&lt;br /&gt;
=== コンテナ DNS が有効化されない ===&lt;br /&gt;
&lt;br /&gt;
 WARN[0000]  binary not found, container DNS will not be enabled&lt;br /&gt;
&lt;br /&gt;
Podman のネットワークバックエンドとして {{Pkg|netavark}} を使用している場合、{{Pkg|aardvark-dns}} をインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
=== シェルがログアウトするとコンテナが終了してしまう ===&lt;br /&gt;
&lt;br /&gt;
マシンからログアウトすると、一部のユーザで Podman コンテナが停止されます。これを防ぐには、コンテナを実行しているユーザに対して[[systemd/ユーザー#systemd のユーザーインスタンスを自動起動|linger を有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
{{man|1|podman-auto-update|EXAMPLES}} で説明されているように、ユーザ systemd ユニットを作成することもできます。&lt;br /&gt;
&lt;br /&gt;
=== Failed to move rootless netns ===&lt;br /&gt;
&lt;br /&gt;
{{hc|$ docker-compose up|&lt;br /&gt;
ERRO[0000] failed to move the rootless netns slirp4netns process to the systemd user.slice: Process org.freedesktop.systemd1 exited with status 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|podman.service}} を[[起動/有効化]]することで解決できます。&lt;br /&gt;
&lt;br /&gt;
=== Podman を 3.x から 4.0 にアップグレードした後に pause イメージのビルドでエラー ===&lt;br /&gt;
&lt;br /&gt;
 Error: building local pause image: finding pause binary: exec: &amp;quot;catatonit&amp;quot;: executable file not found in $PATH&lt;br /&gt;
&lt;br /&gt;
{{Pkg|catatonit}} パッケージを[[インストール]]すれば、このエラーを修正できます。&lt;br /&gt;
&lt;br /&gt;
3.x から 4.0 へのアップグレードに関する詳細は、公式の[https://podman.io/blogs/2022/02/04/network-usage.html ブログ記事]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ルートレスモードでのコミット時にエラー ===&lt;br /&gt;
&lt;br /&gt;
 Error committing the finished image: error adding layer with blob &amp;quot;sha256:02823fca9b5444c196f1f406aa235213254af9909fca270f462e32793e2260d8&amp;quot;: Error processing tar file(exit status 1) permitted operation&lt;br /&gt;
&lt;br /&gt;
ストレージドライバが[[#ストレージ|ストレージ設定]]でオーバーレイされていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== ルートレスモードでブリッジネットワークを使用してコンテナを作成する際にエラー ===&lt;br /&gt;
&lt;br /&gt;
[[AppArmor]] を使用している場合、{{ic|dnsname}} プラグインを有効にしてブリッジネットワークを使用してコンテナを作成すると、問題が発生する可能性があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ podman network create foo|&lt;br /&gt;
/home/&#039;&#039;user&#039;&#039;/.config/cni/net.d/foo.conflist&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ podman run --rm -it --network=foo docker.io/library/alpine:latest ip addr|2=&lt;br /&gt;
Error: command rootless-cni-infra [alloc 89398a9315256cb1938075c377275d29c2b6ebdd75a96b5c26051a89541eb928 foo festive_hofstadter    ] in container 1f4344bbd1087c892a18bacc35f4fdafbb61106c146952426488bc940a751efe failed with status 1, stdout=&amp;quot;&amp;quot;, stderr=&amp;quot;exit status 3\n&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これは、次の行を {{ic|/etc/apparmor.d/local/usr.sbin.dnsmasq}} に追加することで解決できます:&lt;br /&gt;
&lt;br /&gt;
 owner /run/user/[0-9]*/containers/cni/dnsname/*/dnsmasq.conf r,&lt;br /&gt;
 owner /run/user/[0-9]*/containers/cni/dnsname/*/addnhosts r,&lt;br /&gt;
 owner /run/user/[0-9]*/containers/cni/dnsname/*/pidfile rw,&lt;br /&gt;
&lt;br /&gt;
そして、AppArmor プロファイルをリロードします:&lt;br /&gt;
&lt;br /&gt;
 # apparmor_parser -R /etc/apparmor.d/usr.sbin.dnsmasq&lt;br /&gt;
 # apparmor_parser /etc/apparmor.d/usr.sbin.dnsmasq&lt;br /&gt;
&lt;br /&gt;
=== イメージが見つからない ===&lt;br /&gt;
&lt;br /&gt;
Podman パッケージ内のファイルは上流からやってくるので、デフォルトではレジストリリストが存在しません。すなわち、デフォルトの状態でレジストリを指定せずにイメージを pull しようとすると、以下のようなエラーが発生してしまうのです:&lt;br /&gt;
&lt;br /&gt;
 Error: short-name &amp;quot;archlinux&amp;quot; did not resolve to an alias and no unqualified-search registries are defined in &amp;quot;/etc/containers/registries.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
始めの構成は以下のような感じでしょう:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/containers/registries.conf.d/00-unqualified-search-registries.conf|2=&lt;br /&gt;
unqualified-search-registries = [&amp;quot;docker.io&amp;quot;]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/containers/registries.conf.d/01-registries.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[[registry]]&lt;br /&gt;
location = &amp;quot;docker.io&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
これは docker のデフォルト設定と等価です。&lt;br /&gt;
&lt;br /&gt;
あるいは、あまり便利ではないが、レジストリ名の省略が設定されていないシステムと高い互換性がある方法として、{{ic|Containerfile}} や {{ic|Dockerfile}} で完全なレジストリパスを使用することもできます。&lt;br /&gt;
&lt;br /&gt;
{{hc|Containerfile|&lt;br /&gt;
FROM docker.io/archlinux/archlinux&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Permission denied: OCI permission denied ===&lt;br /&gt;
&lt;br /&gt;
{{hc|$ podman exec openvas_openvas_1 bash|&lt;br /&gt;
Error: crun: writing file `/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/user.slice/libpod-b3e8048a9b91e43c214b4d850ac7132155a684d6502e12e22ceb6f73848d117a.scope/container/cgroup.procs`: Permission denied: OCI permission denied&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
以下で解決できます: [https://bbs.archlinux.org/viewtopic.php?id=253966 BBS#253966]&lt;br /&gt;
&lt;br /&gt;
 $ env DBUS_SESSION_BUS_ADDRESS= podman ...&lt;br /&gt;
 $ env DBUS_SESSION_BUS_ADDRESS= podman-compose ...&lt;br /&gt;
&lt;br /&gt;
=== Pushing images to Docker Hub: access denied/authentication required ===&lt;br /&gt;
&lt;br /&gt;
{{ic|podman push}} を使用してコンテナイメージを Docker Hub に push する際に、次のエラーが発生することがあります: {{ic|Requested access to the resource is denied}} または {{ic|Authentication required}}。以下のヒントが問題を修正する助けになるかもしれません:&lt;br /&gt;
&lt;br /&gt;
* ローカルイメージにタグをつける: {{bc|# podman tag &amp;lt;localImage&amp;gt; docker.io/&amp;lt;dockerHubUsername&amp;gt;/&amp;lt;dockerHubRepository&amp;gt;:&amp;lt;Tag&amp;gt;}}&lt;br /&gt;
* タグ付きイメージを push する: {{bc|# podman push docker.io/&amp;lt;dockerHubUsername&amp;gt;/&amp;lt;dockerHubRepository&amp;gt;:&amp;lt;Tag&amp;gt; docker://docker.io/&amp;lt;dockerHubUsername&amp;gt;/&amp;lt;dockerHubRepository&amp;gt;:&amp;lt;Tag&amp;gt;}}&lt;br /&gt;
* docker.io、Docker Hub リポジトリ、Docker Hub Registry サーバにログインする:&lt;br /&gt;
: {{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# podman login -u &amp;lt;DockerHubUsername&amp;gt; -p &amp;lt;DockerHubPassword&amp;gt; registry-1.docker.io&lt;br /&gt;
# podman login -u &amp;lt;DockerHubUsername&amp;gt; -p &amp;lt;DockerHubPassword&amp;gt; docker.io/&amp;lt;dockerHubUsername&amp;gt;/&amp;lt;dockerHubRepository&amp;gt;&lt;br /&gt;
# podman login -u &amp;lt;DockerHubUsername&amp;gt; -p &amp;lt;DockerHubPassword&amp;gt; docker.io&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
* ログイン前に全レジストリからログアウトする。例: {{bc|# podman logout --all}}&lt;br /&gt;
* リポジトリの Docker Hub Collaborators タブで {{ic|&amp;lt;dockerHubUsername&amp;gt;}} を協力者 (collaborator) として追加する。&lt;br /&gt;
&lt;br /&gt;
=== WARN[0000] &amp;quot;/&amp;quot; is not a shared mount, this could cause issues or missing mounts with rootless containers ===&lt;br /&gt;
&lt;br /&gt;
ルートレスで実行中の Buildah/Podman は、バインドマウントが共有されていることを期待します。バインドマウントが private に設定されていないか確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ findmnt -o PROPAGATION /|&lt;br /&gt;
PROPAGATION&lt;br /&gt;
private&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その場合、{{man|8|mount|Shared_subtree_operations}} を参照し、以下を実行して&#039;&#039;&#039;一時的に&#039;&#039;&#039;マウントを共有させることができます:&lt;br /&gt;
&lt;br /&gt;
 # mount --make-shared /&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;恒久的に&#039;&#039;&#039;共有させたい場合は、[[Fstab#使用法|/etc/fstab]] を編集して、対象のマウントに &#039;&#039;shared&#039;&#039; オプションを追加し、再起動してください。以下のようなエントリになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
# &amp;lt;device&amp;gt;                                &amp;lt;dir&amp;gt; &amp;lt;type&amp;gt; &amp;lt;options&amp;gt; &amp;lt;dump&amp;gt; &amp;lt;fsck&amp;gt;&lt;br /&gt;
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4   defaults,shared   0      1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://podman.io/ 公式ウェブサイト]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Podman|2023-04-10|775105}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=OpenSSH&amp;diff=40538</id>
		<title>OpenSSH</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=OpenSSH&amp;diff=40538"/>
		<updated>2025-07-12T04:11:46Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:セキュアシェル]]&lt;br /&gt;
[[Category:サーバー]]&lt;br /&gt;
[[Category:OpenBSD]]&lt;br /&gt;
[[de:SSH]]&lt;br /&gt;
[[en:OpenSSH]]&lt;br /&gt;
[[es:OpenSSH]]&lt;br /&gt;
[[fr:OpenSSH]]&lt;br /&gt;
[[ru:OpenSSH]]&lt;br /&gt;
[[zh-hans:OpenSSH]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|SSH 鍵}}&lt;br /&gt;
{{Related|Pam abl}}&lt;br /&gt;
{{Related|fail2ban}}&lt;br /&gt;
{{Related|sshguard}}&lt;br /&gt;
{{Related|Sshfs}}&lt;br /&gt;
{{Related|Syslog-ng}}&lt;br /&gt;
{{Related|SFTP chroot}}&lt;br /&gt;
{{Related|SCP と SFTP}}&lt;br /&gt;
{{Related|VPN over SSH}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[[Wikipedia:ja:OpenSSH|OpenSSH]] (OpenBSD Secure Shell) は、[[セキュアシェル]] (SSH) プロトコルを用いてコンピュータネットワーク経由の暗号化された通信セッションを提供するコンピュータプログラム群です。OpenSSH は、SSH Communications Security によって提供されているプロプライエタリな Secure Shell ソフトウェアスイートのオープンソースな代替として作成されました。OpenSSH は OpenBSD プロジェクトの一部として開発されており、Theo de Raadt によって率いられています。&lt;br /&gt;
&lt;br /&gt;
OpenSSH は、似た名前の OpenSSL と混同されることがあります。しかし、これらのプロジェクトの目的は異なり、開発チームも異なります。この似たような名前は、ただ単にゴールが似ているからです。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|openssh}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
== クライアントの使用 ==&lt;br /&gt;
&lt;br /&gt;
サーバに接続するには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -p &#039;&#039;ポート&#039;&#039; &#039;&#039;ユーザ&#039;&#039;@&#039;&#039;サーバアドレス&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
サーバが公開鍵認証のみを許可している場合、[[SSH 鍵]] の記事に従ってください。&lt;br /&gt;
&lt;br /&gt;
=== 設定 ===&lt;br /&gt;
&lt;br /&gt;
クライアントは、共通のオプションとホストを保存するように設定することができます。全プションは、グローバルに、あるいは特定のホストに制限して宣言することができます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.ssh/config|# グローバルなオプション&lt;br /&gt;
User &#039;&#039;user&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# 特定のホストのオプション&lt;br /&gt;
Host &#039;&#039;myserver&#039;&#039;&lt;br /&gt;
    Hostname &#039;&#039;server-address&#039;&#039;&lt;br /&gt;
    Port     &#039;&#039;port&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このような設定を用いると、以下の2つのコマンドは等価になります:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -p &#039;&#039;port&#039;&#039; &#039;&#039;user&#039;&#039;@&#039;&#039;server-address&#039;&#039;&lt;br /&gt;
 $ ssh &#039;&#039;myserver&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|5|ssh_config}} を見てください。&lt;br /&gt;
&lt;br /&gt;
一部のオプションには等価なコマンドラインスイッチがありません。しかし、コマンドラインで {{ic|-o}} フラグを用いることで設定オプションを指定できます。例えば: {{ic|1=-oKexAlgorithms=+diffie-hellman-group1-sha1}}。&lt;br /&gt;
&lt;br /&gt;
== サーバの使用 ==&lt;br /&gt;
&lt;br /&gt;
{{ic|sshd}} は OpenSSH サーバのデーモンです。{{ic|/etc/ssh/sshd_config}} で設定され、{{ic|sshd.service}} によって管理されます。設定を変更する際は、サーバを再起動する前に {{ic|sshd}} をテストモードで使用し、サーバが正しく起動できることを確認してください。設定が有効である場合は、何も出力されません。&lt;br /&gt;
&lt;br /&gt;
 # sshd -t&lt;br /&gt;
&lt;br /&gt;
=== 設定 ===&lt;br /&gt;
&lt;br /&gt;
一部のユーザにのみアクセスを許可するには、以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 AllowUsers    &#039;&#039;user1 user2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一部のグループにのみアクセスを許可するには:&lt;br /&gt;
&lt;br /&gt;
 AllowGroups   &#039;&#039;group1 group2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
素晴らしいウェルカムメッセージを ({{ic|/etc/issue}} ファイルなどから) 追加するには、{{ic|Banner}} オプションを設定してください:&lt;br /&gt;
&lt;br /&gt;
 Banner /etc/issue&lt;br /&gt;
&lt;br /&gt;
公開ホスト鍵と秘密ホスト鍵は、&#039;&#039;sshdgenkeys&#039;&#039; [[#デーモンの管理|サービス]]によって {{ic|/etc/ssh}} 内に自動で生成されます。{{ic|sshd_config}} 内の {{ic|HostKeyAlgorithms}} オプションによって一部の署名アルゴリズムしか許可されていない場合でも、鍵が存在しない場合、再生成されます。[[SSH 鍵#認証鍵の種類を選択|ed25519、ecdsa、そして rsa]] アルゴリズムに基づく3組の鍵のペアが提供されます。sshd に特定の鍵を使用させるには、以下のオプションを指定してください:&lt;br /&gt;
&lt;br /&gt;
 HostKey /etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
&lt;br /&gt;
サーバを WAN に公開するつもりであるならば、以下のようにデフォルトのポートを 22 から別のランダムで大きい値に変更することが推奨されます:&lt;br /&gt;
&lt;br /&gt;
 Port 39901&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* 一般的なサービスにまだ割り当てられていない代替ポートを探すには、[[Wikipedia:List of TCP and UDP port numbers|TCP と UDP のポート番号一覧]]を見てください。また、{{ic|/etc/services}} にあるローカルのポート番号情報を見ることもできます。デフォルトのポート 22 番からポートを変更すると、自動化された認証試行によるログエントリ数が減るでしょう。しかし、そのような攻撃を排除することはできません。関連する情報は [[ポートノッキング]] を参照してください。&lt;br /&gt;
* パスワードログインを完全に無効化することが推奨されます。そうすることで、セキュリティが格段に向上します。詳細は [[#公開鍵認証を強制する]] を参照してください。他の推奨されるセキュリティ手法については [[#保護]] を参照してください。&lt;br /&gt;
* 設定ファイル内に複数の {{ic|Port &#039;&#039;port_number&#039;&#039;}} 行を記述することにより、OpenSSH に複数のポートをリッスンさせることができます。&lt;br /&gt;
* 新しい (或いは存在しない) ホスト鍵ペアは、置き換えたいペアを {{ic|/etc/ssh}} から削除し {{ic|ssh-keygen -A}} を root として実行することで、生成することができます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== デーモンの管理 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|sshd.service}} を[[起動/有効化]]してください。これは、SSH デーモンを永続的にアクティブ状態に保ち、各着信接続に対してフォークします。&lt;br /&gt;
&lt;br /&gt;
{{Note|Systemd のソケットアクティベーションを使用する {{ic|sshd.socket}} は、DOS (サービス拒否) の影響を受けやすいため、{{Pkg|openssh}} 8.0p1-3 で削除されました。詳細は {{Bug|62248}} を参照してください。{{Pkg|openssh}} 8.0p1-3 に更新する時に {{ic|sshd.socket}} が有効化されていた場合、{{ic|sshd.socket}} と {{ic|sshd@.service}} ユニットは {{ic|/etc/systemd/system/}} にコピーされ、[[ヘルプ:読み方#systemd ユニットのコントロール|再有効化]]されます。これは、既存のセットアップを破壊しないためだけに行われるのであって、ユーザは依然として {{ic|sshd.service}} に移行することが推奨されます。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|sshd.socket}} の使用を継続するならば、このユニットの問題に注意してください:&lt;br /&gt;
* {{ic|sshd.socket}} ユニットは (例えばメモリ不足の状況などにより) 失敗する場合があり、{{ic|1=Restart=always}} はソケットユニットに対しては指定できません。[https://github.com/systemd/systemd/issues/11553 systemd issue 11553] を参照。&lt;br /&gt;
* ソケットアクティベーションの使用は、接続が多すぎるとサービスのアクティブ化が拒否される可能性があるため、サービス拒否を引き起こす可能性があります。{{Bug|62248}} を参照。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|sshd.socket}} を使用すると {{ic|ListenAddress}} の設定が無効化され、任意のアドレスを介して接続できるようになってしまいます。{{ic|ListenAddress}} の設定に効力を持たせるには、{{ic|sshd.socket}} を[[編集]]して、ポートと IP の&#039;&#039;両方&#039;&#039;を {{ic|ListenStream}} で設定しなければなりません (例: {{ic|1=ListenStream=192.168.1.100:22}})。また、{{ic|[Socket]}} セクションに {{ic|1=FreeBind=true}} も追加しなければなりません。さもないと、IP アドレスを設定した時に {{ic|ListenAddress}} を指定した時と同じ欠点が生じます: ネットワークが時間内に立ち上がっていない場合、ソケットは起動に失敗します。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|ソケットアクティベーションを使用すると、各接続に対して {{ic|sshd@.service}} の一時的なインスタンスが (異なるインスタンス名で) 開始されます。ゆえに、{{ic|sshd.socket}} もデーモンの通常の {{ic|sshd.service}} も、接続試行をログでモニタできません。ソケットアクティベートされた SSH インスタンスのログは、{{ic|journalctl -u &amp;quot;sshd@*&amp;quot;}} を root として実行するか、{{ic|journalctl /usr/bin/sshd}} を root &lt;br /&gt;
として実行することで、確認することができます。}}&lt;br /&gt;
&lt;br /&gt;
=== 保護 ===&lt;br /&gt;
&lt;br /&gt;
SSH によるリモートログインを許可することは管理業務においては良いことですが、サーバーのセキュリティに脅威を及ぼすことにもなりえます。総当り攻撃の標的になりやすいので、SSH のアクセスは制限して、第三者がサーバーにアクセスできないようにする必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|ssh-audit}} は、サーバとクライアントの設定の自動化された解析を提供します。このトピックに関して、いくつか他のガイドやツールが利用できます。例えば:&lt;br /&gt;
&lt;br /&gt;
* [[MozillaWiki:Security/Guidelines/OpenSSH|Mozilla Infosec Team による記事]]&lt;br /&gt;
* [https://www.ssh-audit.com/hardening_guides.html SSH 堅牢化ガイド]&lt;br /&gt;
&lt;br /&gt;
==== 公開鍵認証を強制する ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、クライアントが公開鍵で認証できない場合、SSH サーバはパスワード認証にフォールバックします。なので、悪意のあるユーザがパスワードの[[#ブルートフォース攻撃に対する保護|ブルートフォース]]によるアクセスを試みることができてしまいます。このような攻撃から保護する最も効果的な方法の1つが、パスワードログインを完全に無効化し、[[SSH 鍵]]の使用を強制することです。これは、デーモンの設定ファイルで以下のオプションを設定することで可能です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/sshd_config.d/20-force_publickey_auth.conf|&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
AuthenticationMethods publickey&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|これを設定に追加する前に、SSH アクセスを必要とする全アカウントが、対応する {{ic|authorized_keys}} ファイルで公開鍵認証をセットアップしていることを確認してください。詳細は [[SSH 鍵#リモートサーバーに公開鍵をコピー]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 二要素認証と公開鍵 ====&lt;br /&gt;
&lt;br /&gt;
SSH は、認証に複数の方法を要求するようにセットアップすることができます。{{ic|AuthenticationMethods}} オプションを使うことで、どの認証方法を要求するかを指定することができます。これにより、公開鍵と二要素認証を使用することができます。&lt;br /&gt;
&lt;br /&gt;
===== 認証プロバイダ =====&lt;br /&gt;
&lt;br /&gt;
Google Authenticator をセットアップする方法については [[Google Authenticator]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
[https://duo.com/ Duo] の場合、{{ic|pam_duo.so}} モジュールを提供する {{AUR|duo_unix}} を[[インストール]]してください。必須の Duo 認証情報 (Integration Key、Secret Key、API Hostname) をセットアップする方法に関するインストラクションは [https://duo.com/docs/duounix Duo Unix ドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
===== PAM セットアップ =====&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|1=The distribution defaults to {{ic|KbdInteractiveAuthentication no}} since [https://gitlab.archlinux.org/archlinux/packaging/packages/openssh/-/commit/1d834b1fb688e148797c39cffd95eac3404ef894]. Later, the lexical order of the defaults was adjusted due to {{Bug|79285}} to allow for higher priority user snippets, which would match below {{ic|20-pam.conf}}. However, a [https://bbs.archlinux.org/viewtopic.php?id=300451 BBS thread] appears to be resolved by ordering custom after {{ic|99-archlinux.conf}} defaults only.}}&lt;br /&gt;
&lt;br /&gt;
[[PAM]] を OpenSSH で使用するには、以下のファイルを編集してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/sshd_config.d/20-pam.conf|&lt;br /&gt;
KbdInteractiveAuthentication yes&lt;br /&gt;
AuthenticationMethods publickey keyboard-interactive:pam&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これで、PAM セットアップによって要求されるユーザ認証か公開鍵の&#039;&#039;&#039;どちらか一方&#039;&#039;&#039;でログインできます。&lt;br /&gt;
&lt;br /&gt;
一方、PAM セットアップによって要求されるユーザ認証と公開鍵の&#039;&#039;&#039;両方&#039;&#039;&#039;でユーザを認証したい場合、AuthenticationMethods の分割にスペースではなくコンマを使用してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/sshd_config.d/20-pam.conf|&lt;br /&gt;
KbdInteractiveAuthentication yes&lt;br /&gt;
AuthenticationMethods publickey&#039;&#039;&#039;,&#039;&#039;&#039;keyboard-interactive:pam&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
要求される公開鍵と pam 認証の&#039;&#039;&#039;両方&#039;&#039;&#039;を用いて、パスワード要件を無効化すると良いでしょう:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pam.d/sshd|&lt;br /&gt;
auth      required  pam_securetty.so     #disable remote root&lt;br /&gt;
#Require google authenticator&lt;br /&gt;
auth      required  pam_google_authenticator.so&lt;br /&gt;
#But not password&lt;br /&gt;
#auth      include   system-remote-login&lt;br /&gt;
account   include   system-remote-login&lt;br /&gt;
password  include   system-remote-login&lt;br /&gt;
session   include   system-remote-login&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== ブルートフォース攻撃に対する保護 ====&lt;br /&gt;
&lt;br /&gt;
ブルートフォース (総当り) は単純なコンセプトです: 大量のランダムなユーザ名とパスワードの組み合わせを用いて、あるウェブページやサーバの SSH のようなログインプロンプトに絶え間なくログインを試みるのです。&lt;br /&gt;
&lt;br /&gt;
[[iptables]] については [[ufw#ufw によるレート制限]] や [[シンプルなステートフルファイアウォール#ブルートフォース攻撃]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
バージョン 9.8 以降、[[fail2ban]] に似た基本的な保護機能が実装されました。デフォルトでは {{ic|PerSourcePenalties}} オプションに合理的なデフォルト値が設定されています。様々な条件でソースアドレスによってクライアントにペナルティが掛けられ、接続を一定期間拒否します。&lt;br /&gt;
&lt;br /&gt;
あるいは、ブルートフォースを試みている者を自動でブロックするスクリプトを使うことでブルートフォースから保護することができます。&lt;br /&gt;
&lt;br /&gt;
* 信頼された場所からの着信 SSH 接続のみを許可する。&lt;br /&gt;
* [[fail2ban]] か [[sshguard]] を使用して、パスワード認証に失敗しすぎた IP アドレスを自動的にブロックする。&lt;br /&gt;
* [https://github.com/h0tw1r3/pam_shield pam_shield] を使用して、特定の時間内に多くのログイン試行を行った IP アドレスをブロックする。[[fail2ban]] や [[sshguard]] とは対照的に、このプログラムはアカウントへのログイン成功や失敗を考慮しません。&lt;br /&gt;
&lt;br /&gt;
==== root ログインの制限 ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|現在のバージョンでは、root ログインは上流でデフォルトで無効化されています。}}&lt;br /&gt;
&lt;br /&gt;
一般的に、root ユーザが制限無しで SSH を介してログインできることはバッドプラクティスだと考えられています。セキュリティを向上させるために SSH の root アクセスを制限する方法は2つあります。&lt;br /&gt;
&lt;br /&gt;
===== 拒否 =====&lt;br /&gt;
&lt;br /&gt;
Sudo を使うことで、root アカウントの認証を行うことなく、必要に応じて root 権限を選択的に付与することができます。このため SSH による root ログインを拒否して、攻撃者にパスワードに加えて (root でない) ユーザー名も推測させる必要を生じさせることで、ブルートフォース攻撃を困難にすることが可能です。&lt;br /&gt;
&lt;br /&gt;
デーモンの設定ファイルで &amp;quot;Authentication&amp;quot; セクションを編集することで SSH からの root ユーザのログインを拒否するように設定できます。{{ic|PermitRootLogin}} を {{ic|no}} に設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/sshd_config.d/20-deny_root.conf|PermitRootLogin no}}&lt;br /&gt;
&lt;br /&gt;
次に、SSH デーモンを[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
これで、SSH を使って root でログインすることはできなくなります。ただし、通常ユーザーでログインしてから [[su]] や [[sudo]] を使ってシステム管理を行うことは依然として可能です。&lt;br /&gt;
&lt;br /&gt;
===== 制限 =====&lt;br /&gt;
&lt;br /&gt;
自動的な作業の中にも、リモートによるフルシステムバックアップなど、root 権限を必要とするものがあります。セキュアな方法で root を許可したい場合、SSH による root ログインを無効化する代わりに、特定のコマンドだけ root ログインを許可することができます。{{ic|~root/.ssh/authorized_keys}} を編集して、以下のように特定のキーの前にコマンドを記述します:&lt;br /&gt;
&lt;br /&gt;
 command=&amp;quot;rrsync -ro /&amp;quot; ssh-ed25519 ...&lt;br /&gt;
&lt;br /&gt;
上記の設定で、特定の鍵を使ってログインした場合はクォートで囲ったコマンドを実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
ログイン時に root ユーザーの名前を出すことで攻撃する対象が増えてしまうことに対しては {{ic|sshd_config}} に以下を追加することで埋め合わせができます:&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin forced-commands-only&lt;br /&gt;
&lt;br /&gt;
上記の設定は root が SSH で実行できるコマンドを制限するだけでなく、パスワードの使用も無効化して、root アカウントでは強制的に公開鍵認証を使うようになります。&lt;br /&gt;
&lt;br /&gt;
root で使えるコマンドは制限しないで公開鍵認証の強制だけをするという手もあり、それでもブルートフォース攻撃はほぼ不可能です。その場合、以下を設定:&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
==== authorized_keys ファイルのロック ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|このファイルをロックしても、ユーザの間違いや特定の単純な対人攻撃からの保護しかできません。この方法は、悪意のあるプログラムや侵入に対するあらゆる保護も提供&#039;&#039;&#039;しません&#039;&#039;&#039;。多要素認証、ファイアウォール、そして縦深防御を用いて、侵入を未然に防いでください。}}&lt;br /&gt;
&lt;br /&gt;
何らかの理由により、疑いのあるユーザに既存の鍵を追加/変更させるべきではないと思われる場合、そのファイルを操作できないようにできます。&lt;br /&gt;
&lt;br /&gt;
サーバでは、ユーザの {{ic|authorized_keys}} ファイルを読み取り専用にして、他の全パーミッションを禁止してください:&lt;br /&gt;
&lt;br /&gt;
 $ chmod 400 ~/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
ユーザがパーミッションを元に戻せないようにするには、{{ic|authorized_keys}} ファイルに[[ファイルのパーミッションと属性#ファイルの属性|変更不可のビットを設定]]してください。ユーザが {{ic|~/.ssh}} ディレクトリをリネームして新しい {{ic|~/.ssh}} ディレクトリと {{ic|authorized_keys}} ファイルを作成できないようにするには、{{ic|~/.ssh}} ディレクトリにも変更不可のビットを設定してください。鍵を追加/削除するには、{{ic|authorized_keys}} から変更不可のビットを削除して一時的に書き込み可能にする必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[Audit フレームワーク#ファイルとディレクトリへのアクセスを監査する|auditd]] などを用いて、{{ic|authorized_keys}} ファイルの変更を記録することが推奨されます。}}&lt;br /&gt;
&lt;br /&gt;
==== SSH 証明書 ====&lt;br /&gt;
&lt;br /&gt;
一般的な SSH 鍵と手動でのフィンガープリントの検証は、一人の管理者によって管理されている少数のホストにおいては簡単でしょうが、この認証方法は拡張性が全くありません。一定数のサーバをいくつかのユーザが SSH を通してアクセスする必要がある場合、全てのホストの SSH 公開鍵フィンガープリントを手動でセキュアかつ確実に検証するのは、ほぼ不可能です。&lt;br /&gt;
&lt;br /&gt;
これに対する解決策は、SSH 証明書を使うことです。SSH 証明書を使えば、SSH のデフォルトの Trust On First Use アプローチよりも拡張性の高い信用の鎖によって、公開鍵の正当性を自動で検証できます。SSH 証明書は、基本的には通常の SSH 公開鍵ですが、信頼されている認証局からの署名が付け加えられおり、これにより鍵の正当性を検証します。&lt;br /&gt;
&lt;br /&gt;
===== インフラストラクチャ用のホスト認証局の鍵を作成する =====&lt;br /&gt;
&lt;br /&gt;
 $ ssh-keygen -t ed25519 -f ~/.ssh/ca_host_key -C &#039;Host certificate authority for *.example.com&#039;&lt;br /&gt;
&lt;br /&gt;
認証局の秘密鍵はセキュアに保存されているべきです。鍵の抽出を防止する機構が備わっている [[Nitrokey]] や [[YubiKey]] といったスマートカードやハードウェアトークン上に保存するのが理想です。&lt;br /&gt;
&lt;br /&gt;
===== サーバの SSH ホスト公開鍵を署名する =====&lt;br /&gt;
&lt;br /&gt;
サーバの公開鍵を、認証局の秘密鍵が保存されているローカルのシステムにコピーし、サーバの公開鍵を署名してください:&lt;br /&gt;
&lt;br /&gt;
 $ ssh-keygen -h -s ~/.ssh/ca_key -I certLabel -n server01.example.com ./ssh_host_ed25519_key.pub&lt;br /&gt;
&lt;br /&gt;
===== 新しい証明書を移動し、sshd にそれを使わせる =====&lt;br /&gt;
&lt;br /&gt;
生成された証明書 {{ic|ssh_host_ed25519_key-cert.pub}} は、サーバの {{ic|/etc/ssh/}} にコピーする必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/sshd_config.d/20-ed25519_key.conf|&lt;br /&gt;
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== 認証局を信頼するように全てのクライアントを設定する =====&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.ssh/known_hosts|&lt;br /&gt;
@cert-authority  *.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKL8gB/pjuff005YNazwMCqJpgsXAbQ3r4VStd/CRKwU Host certificate authority for *.example.com&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|サーバが識別用の証明書を提供しないと、デフォルトで公開鍵認証がフォールバックとして使用されてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
===== SSH ユーザ証明書 =====&lt;br /&gt;
&lt;br /&gt;
ユーザの数やデプロイ方法にもよりますが、SSH ユーザ鍵を証明書と共に使用することもできます。多くの ssh ユーザが存在する組織では、この方法でユーザ鍵のデプロイをセキュアに管理することが強く推奨されます。&lt;br /&gt;
&lt;br /&gt;
ユーザ証明書のデプロイは、基本的にはサーバの ID と同じように機能します。詳細と方法については [[Wikibooks:OpenSSH/Cookbook/Certificate-based Authentication]] で見られます。&lt;br /&gt;
&lt;br /&gt;
===== 証明書のデプロイを自動化する =====&lt;br /&gt;
&lt;br /&gt;
多くのオープンソースなツールによって、SSH 証明書のデプロイを自動化する方法が提供されています。人気なものとしては例えば以下があります:&lt;br /&gt;
&lt;br /&gt;
* [https://docs.ansible.com/ansible/latest/collections/community/crypto/openssh_cert_module.html Ansible - openssh_cert module]&lt;br /&gt;
* [https://www.privacyidea.org/ privacyIDEA - 認証サーバ]&lt;br /&gt;
* [https://theoapp.readthedocs.io/en/latest/ Theo App - 認可された鍵のマネージャ]&lt;br /&gt;
&lt;br /&gt;
==== SSHFP レコード ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:SSHFP record|Secure Shell fingerprint record (SSHFP)]] は、DNS におけるオプションのリソースレコードで、SSH 鍵をホスト名と関連付けます。信用された CA 証明書をサーバー上にアップロードする代わりに DNSSEC を使用することで、公開サーバー上の SSH フィンガープリントを検証することができます。これにより、管理されていないクライアントも鍵のフィンガープリントの有効性を検証することができます。&lt;br /&gt;
&lt;br /&gt;
===== レコードエントリを生成する =====&lt;br /&gt;
&lt;br /&gt;
16進数の鍵フィンガープリントを生成して、DNS レコードに記録するには、対象サーバー上でハッシュ値を作成してください。&lt;br /&gt;
&lt;br /&gt;
 $ ssh-keygen -r host.example.com&lt;br /&gt;
&lt;br /&gt;
このコマンドで、指定したドメインの利用可能な全 SSH 鍵を読み出し、有効な SSHFP レコードを出力します。この出力されたレコードを、影響するドメインの DNS エントリに記録することができます。&lt;br /&gt;
&lt;br /&gt;
===== クライアントの設定 =====&lt;br /&gt;
&lt;br /&gt;
SSHFP レコードとして保存されている SSH 鍵フィンガープリントを自動的に取得して信用するには、以下の設定を ssh クライアント側の設定ファイルに追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.ssh/config|&lt;br /&gt;
# global options&lt;br /&gt;
Match all&lt;br /&gt;
    VerifyHostKeyDNS yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
対象ホストに有効な SSHFP レコードがあり、そのレコードが有効な DNSSEC 署名で検証されると、ホストが本物であるかどうかを尋ねるプロンプトが表示されずに、フィンガープリントが自動的に受理されます。DNS レコードが DNSSEC によって検証されない場合は、フィンガープリントが正しいかどうかを尋ねるプロンプトが代わりに表示されます。&lt;br /&gt;
&lt;br /&gt;
===== SSHFP レコードを生成する =====&lt;br /&gt;
&lt;br /&gt;
ドメインの SSH フィンガープリントを知りたい場合は、&#039;&#039;ssh-keyscan&#039;&#039; を使うことで有効な DNS レコードの形式で SSH フィンガープリントを取得できます。(注: デフォルトでは、利用可能な鍵タイプすべてのフィンガープリントが SHA1 と SHA256 の両方で出力されます。)&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ssh-keyscan -D github.com|&lt;br /&gt;
; github.com:22 SSH-2.0-babeld-57ca1323&lt;br /&gt;
; github.com:22 SSH-2.0-babeld-57ca1323&lt;br /&gt;
github.com IN SSHFP 1 1 6f4c60375018bae0918e37d9162bc15ba40e6365&lt;br /&gt;
github.com IN SSHFP 1 2 b8d895ced92c0ac0e171cd2ef5ef01ba3417554a4a6480d331ccc2be3ded0f6b&lt;br /&gt;
; github.com:22 SSH-2.0-babeld-57ca1323&lt;br /&gt;
github.com IN SSHFP 3 1 3358ab5dd3e306c461c840f7487e93b697e30600&lt;br /&gt;
github.com IN SSHFP 3 2 a764003173480b54c96167883adb6b55cf7cfd1d415055aedff2e2c8a8147d03&lt;br /&gt;
; github.com:22 SSH-2.0-babeld-57ca1323&lt;br /&gt;
github.com IN SSHFP 4 1 e9619e2ed56c2f2a71729db80bacc2ce9ccce8d4&lt;br /&gt;
github.com IN SSHFP 4 2 f83898df0bef57a4ee24985ba598ac17fccb0c0d333cc4af1dd92be14bc23aa5&lt;br /&gt;
; github.com:22 SSH-2.0-babeld-57ca1323&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
SSH フィンガープリントは一般的には公開鍵の SHA256 ハッシュ値を base64 エンコードしたものですが、SSHFP レコードは鍵のフィンガープリントを16進数で保存します。そのため、通常 SHA256 でフィンガープリントを記録している known_hosts ファイルやその他の文書にある値と比べるために、レコードを base64 の形式に変換する必要があります。&lt;br /&gt;
&lt;br /&gt;
 $ echo &amp;quot;SSHFP-fingerprint&amp;quot; | xxd -r -p | base64&lt;br /&gt;
&lt;br /&gt;
鍵タイプ ed25519 の SHA256 フィンガープリントに16進数を使用している github.com の例です。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ echo &amp;quot;f83898df0bef57a4ee24985ba598ac17fccb0c0d333cc4af1dd92be14bc23aa5&amp;quot; {{!}} xxd -r -p {{!}} base64|2=&lt;br /&gt;
+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
known_hosts エントリと比べるには:&lt;br /&gt;
&lt;br /&gt;
 $ ssh-keygen -l -f ~/.ssh/known_hosts&lt;br /&gt;
&lt;br /&gt;
===== DNS から手動で SSHFP レコードを取得する =====&lt;br /&gt;
&lt;br /&gt;
 $ dig SSHFP targetdomain.tld +short&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 暗号化 SOCKS トンネル ===&lt;br /&gt;
&lt;br /&gt;
暗号化トンネルは、安全でない様々なワイヤレス接続を使用するノートパソコンユーザにとって有用です。必要なのは SSH サーバーが安全な場所 (家や仕事場など) で動作していることだけです。[https://dyn.com/dns/ DynDNS] などのダイナミック DNS サービスを利用すれば IP アドレスを覚える必要もありません。&lt;br /&gt;
&lt;br /&gt;
==== 接続の開始 ====&lt;br /&gt;
&lt;br /&gt;
 $ ssh -TND 4711 &#039;&#039;user&#039;&#039;@&#039;&#039;host&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
パスワードを入力すると接続が行われます。{{Ic|N}} フラグはインタラクティブプロンプトを無効化し、{{Ic|D}} フラグは listen するローカルポートを指定します (ポート番号は何でもかまいません)。{{Ic|T}} フラグは疑似 tty アロケーションを無効化します。&lt;br /&gt;
&lt;br /&gt;
verbose ({{Ic|-v}}) フラグを追加することで、接続が成功しているか確認することができます。&lt;br /&gt;
&lt;br /&gt;
==== ブラウザ (或いはその他のプログラム) の設定 ====&lt;br /&gt;
&lt;br /&gt;
上記の手順はウェブブラウザや他のプログラムと組み合わせた場合にのみ有用です。SSH は SOCKS v4 と SOCKS v5 の両方をサポートしているので、どちらかを使用できます。&lt;br /&gt;
&lt;br /&gt;
* Firefox の場合:&lt;br /&gt;
# &#039;&#039;設定 &amp;gt; 一般 &amp;gt; ネットワーク設定&#039;&#039; を開き、&#039;&#039;接続設定...&#039;&#039; をクリックします。&lt;br /&gt;
# 新しくウィンドウが開くので、&#039;&#039;手動でプロキシーを設定する&#039;&#039; オプションにチェックを入れ、&#039;&#039;SOCKS ホスト&#039;&#039; 欄には {{ic|localhost}} と、&#039;&#039;ポート&#039;&#039; 欄にはポート番号 (上記の例では {{ic|4711}}) を入力します。&lt;br /&gt;
# Firefox を再起動します。&lt;br /&gt;
:{{Note|Firefox は自動的に SOCKS トンネル経由で DNS リクエストを発行しません。&#039;&#039;SOCKS vN を使用するときは DNS もプロキシーを使用する&#039;&#039; (v4 か v5) にチェックを入れることでこの問題を回避できます。}}&lt;br /&gt;
* Chromium の場合:&lt;br /&gt;
# SOCKS の設定は環境変数かコマンドラインオプションで設定できます。例えば、以下の関数のどちらかを {{ic|.bashrc}} に追加することで可能です:&lt;br /&gt;
: {{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
secure_chromium() {&lt;br /&gt;
    local port=4711&lt;br /&gt;
    export SOCKS_SERVER=localhost:$port&lt;br /&gt;
    export SOCKS_VERSION=5&lt;br /&gt;
    (chromium &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
secure_chromium() {&lt;br /&gt;
    local port=4711&lt;br /&gt;
    (chromium --proxy-server=&amp;quot;socks://localhost:$port&amp;quot; &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# ターミナルを開き {{bc|$ secure_chromium}} と実行します。&lt;br /&gt;
&lt;br /&gt;
==== ローカルの TUN インターフェイスをセットアップする ====&lt;br /&gt;
&lt;br /&gt;
これは最初はより複雑ですが、SOCKS プロキシを使わせたいアプリケーション全てを手動で設定する必要はありません。ローカルの TUN インターフェイスをセットアップし、このインターフェイス経由でトラフィックをルーティングさせる必要があります。&lt;br /&gt;
&lt;br /&gt;
[[VPN over SSH#badvpn とトンネルインターフェイスをセットアップする]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== X11 フォワーディング ===&lt;br /&gt;
&lt;br /&gt;
X11 フォワーディングは、リモートシステムで X11 プログラムを動作させて、グラフィカルインターフェイスをローカルのクライアントマシンで表示させるメカニズムです。X11 フォワーディングではリモートホストに X11 システムを完全にインストールさせる必要はなく、&#039;&#039;xauth&#039;&#039; をインストールするだけで十分です。&#039;&#039;xauth&#039;&#039; は、X11 セッションの認証を行うために必要なサーバーとクライアントによって使用される {{ic|Xauthority}} の設定を管理するユーティリティです ([http://xmodulo.com/2012/11/how-to-enable-x11-forwarding-using-ssh.html ソース])。&lt;br /&gt;
&lt;br /&gt;
{{Warning|X11 フォワーディングにはセキュリティ的に重要な問題があります。{{ic|ssh}}、{{ic|sshd_config}}、そして {{ic|ssh_config}} のマニュアルページの該当するセクションを読んで最低限の知識をつけてください。[https://security.stackexchange.com/questions/14815/security-concerns-with-x11-forwarding この StackExchange の質問] も参照。}}&lt;br /&gt;
&lt;br /&gt;
==== セットアップ ====&lt;br /&gt;
&lt;br /&gt;
===== リモート側 =====&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|xorg-xauth}} パッケージを[[インストール]]してください&lt;br /&gt;
* {{ic|/etc/ssh/ssh&#039;&#039;&#039;d&#039;&#039;&#039;_config}} 内で:&lt;br /&gt;
** {{ic|X11Forwarding}} を &#039;&#039;yes&#039;&#039; に設定してください&lt;br /&gt;
** {{ic|AllowTcpForwarding}} と {{ic|X11UseLocalhost}} オプションが &#039;&#039;yes&#039;&#039; に設定されおり、{{ic|X11DisplayOffset}} が &#039;&#039;10&#039;&#039; に設定されていることを確認してください (これらの設定は、何も変更していなければ、デフォルト値です。{{man|5|sshd_config}} を参照)。&lt;br /&gt;
* そして、[[#デーモンの管理|&#039;&#039;sshd&#039;&#039; デーモン]]を再起動してください。&lt;br /&gt;
&lt;br /&gt;
===== クライアント側 =====&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|xorg-xauth}} パッケージを[[インストール]]してください。&lt;br /&gt;
* コマンドラインで日和見的な接続を行うための {{ic|-X}} スイッチを指定するか、或いは[[#設定|クライアントの設定]]で {{ic|ForwardX11}} を &#039;&#039;yes&#039;&#039; に設定して、{{ic|ForwardX11}} オプションを有効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|GUI の描画がおかしい場合やエラーが表示されるときは {{ic|ForwardX11Trusted}} オプションを有効にできます (コマンドラインでは {{ic|-Y}} スイッチ)。X11 フォワーディングが [https://www.x.org/wiki/Development/Documentation/Security/ X11 SECURITY 拡張] の制御から外れるようになります。使用するときはセクション冒頭の[[#X11 フォワーディング|警告]]を読んでください。}}&lt;br /&gt;
&lt;br /&gt;
==== 使用方法 ====&lt;br /&gt;
&lt;br /&gt;
通常通りリモートマシンにログオンしてください。クライアントの設定ファイルで &#039;&#039;ForwardX11&#039;&#039; が有効化されていない場合は {{ic|-X}} スイッチを指定してください:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -X &#039;&#039;user@host&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
グラフィカルアプリケーションを実行しようとしてエラーが発生する場合は、代わりに &#039;&#039;ForwardX11Trusted&#039;&#039; を試してください:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -Y &#039;&#039;user@host&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|X11 forwarding request failed}} と出力される場合、リモートマシンでセットアップをやり直してください。X11 フォワーディングのリクエストが成功したら、リモートサーバ上の任意の X プログラムを実行でき、プログラムがローカルセッションにフォワーディングされます:&lt;br /&gt;
&lt;br /&gt;
 $ xclock&lt;br /&gt;
&lt;br /&gt;
{{ic|Can&#039;t open display}} という内容が含まれるエラーが出力される場合は、{{ic|DISPLAY}} が適切に設定されていないことを意味します。&lt;br /&gt;
&lt;br /&gt;
一部のアプリケーションは、実行中のインスタンスのチェックをローカルのマシンで行うため、注意してください。[[Firefox]] がその例です: すでに実行中の Firefox を閉じるか、以下の起動パラメータを使用してリモートインスタンスをローカルマシン上で起動してください:&lt;br /&gt;
&lt;br /&gt;
 $ firefox --no-remote&lt;br /&gt;
&lt;br /&gt;
接続時に &amp;quot;X11 forwarding request failed on channel 0&amp;quot; と表示される場合 (サーバーの {{ic|/var/log/errors.log}} に &amp;quot;Failed to allocate internet-domain X11 display socket&amp;quot; と出力される場合)、{{Pkg|xorg-xauth}} パッケージがインストールされていることを確認してください。上手く機能しない場合、以下の設定を試してみてください:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;サーバ&#039;&#039;の {{ic|ssh&#039;&#039;&#039;d&#039;&#039;&#039;_config}} で {{ic|AddressFamily any}} オプションを有効にする。&lt;br /&gt;
* 或いは、&#039;&#039;サーバ&#039;&#039;の {{ic|ssh&#039;&#039;&#039;d&#039;&#039;&#039;_config}} で {{ic|AddressFamily}} オプションを inet に設定する。&lt;br /&gt;
IPv4 で Ubuntu クライアントを使っている場合は inet に設定することで問題が解決する場合があります。&lt;br /&gt;
&lt;br /&gt;
SSH サーバーの他のユーザーで X アプリケーションを実行するには SSH でログインしているユーザーの {{Ic|xauth list}} の認証行を {{Ic|xauth add}} する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|X11 Forwarding}} の問題をトラブルシューティングする有用なリンクをいくつか挙げます: [https://unix.stackexchange.com/a/12772]、[https://unix.stackexchange.com/a/46748]、[https://superuser.com/a/805060]。}}&lt;br /&gt;
&lt;br /&gt;
=== 他のポートのフォワーディング ===&lt;br /&gt;
&lt;br /&gt;
SSH の X11 の組み込みサポートに加えて、SSH には任意の TCP 接続をセキュアにトンネル化することもできます。ローカルフォワーディングとリモートフォワーディングの両方が使えます。&lt;br /&gt;
&lt;br /&gt;
ローカルフォワーディングはローカルマシンのポートを開き、ローカルマシンに対する接続はリモートホストにフォワーディングされ、リモートホストから指定された宛先に転送されます。転送先をリモートホストと同じにすることで、同一マシンに対してセキュアシェルやセキュアな [[VNC]] 接続を提供します。ローカルフォワーディングは {{Ic|-L}} スイッチで利用することができ {{Ic|&amp;lt;トンネルポート&amp;gt;:&amp;lt;宛先アドレス&amp;gt;:&amp;lt;宛先ポート&amp;gt;}} という形式で転送先を指定します。&lt;br /&gt;
&lt;br /&gt;
ゆえに:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -L 1000:mail.google.com:25 192.168.0.100&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは SSH で {{ic|192.168.0.100}} にログインしてシェルを開き、ローカルマシンの TCP ポート 1000 から mail.google.com のポート 25 へのトンネルが作成されます。接続が確立すると {{ic|localhost:1000}} への通信は Gmail の SMTP ポートに接続されます。Google から見ると、{{ic|192.168.0.100}} から接続が来ているように見えます (必ずしも接続と一緒にデータが運ばれるとは限りません)。データはローカルマシンと {{ic|192.168.0.100}} との間でセキュアに運ばれますが、{{ic|192.168.0.100}} と Google との間はセキュアではありません (他の方法を取らない限り)。&lt;br /&gt;
&lt;br /&gt;
似たように:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -L 2000:192.168.0.100:6001 192.168.0.100&lt;br /&gt;
&lt;br /&gt;
このコマンドは、{{ic|localhost:2000}} に接続することができ、リモートホストのポート 6001 へ透過的に送信されます。前者の例は、vncserver ユーティリティ ([[tightvnc]] パッケージの一部) を使用して VNC 接続を行う際に便利です。便利とはいえ、セキュリティの問題があります。&lt;br /&gt;
&lt;br /&gt;
リモートフォワーディングは SSH トンネルとローカルマシンを通してリモートホストから任意のホストに接続できるようにします。ローカルフォワーディングとは逆の機能であり、ファイアウォールによってリモートホストの接続が限られている場合などに有用です。リモートフォワーディングは {{Ic|-R}} スイッチで使うことができ {{Ic|&amp;lt;トンネルポート&amp;gt;:&amp;lt;宛先アドレス&amp;gt;:&amp;lt;宛先ポート&amp;gt;}} という形式で転送先を指定します。&lt;br /&gt;
&lt;br /&gt;
ゆえに:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -R 3000:irc.libera.chat:6667 192.168.0.200&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは {{ic|192.168.0.200}} にシェルを立ち上げて、{{ic|192.168.0.200}} からローカルホストの 3000 番ポートへの接続をトンネルを通して送信し、それから irc.freenode.net のポート 6667 に転送します。ポート 6667 がブロックされている場合でもリモートホストから IRC プログラムを利用することができるようになります。&lt;br /&gt;
&lt;br /&gt;
ローカルフォワーディングとリモートフォワーディングはどちらもセキュアなゲートウェイとして使用することができます。{{Ic|&amp;lt;tunnel address&amp;gt;:&amp;lt;tunnel port&amp;gt;:&amp;lt;destination address&amp;gt;:&amp;lt;destination port&amp;gt;}} のようにバインドアドレスをつかうことで、SSH や SSH デーモンを動かしていなくても他のコンピュータが SSH トンネルを利用することが可能です。{{Ic|&amp;lt;tunnel address&amp;gt;}} はトンネルの入り口となるマシンのアドレスです: {{Ic|localhost}}, {{Ic|*}} (あるいは空)。特定のアドレス経由の接続、ループバックインターフェイス経由の接続、全てのインターフェイス経由の接続を許可します。デフォルトでは、フォワーディングはトンネルの入り口のマシンからの接続だけに制限されており {{Ic|&amp;lt;tunnel address&amp;gt;}} は {{Ic|localhost}} に設定されています。ローカルフォワーディングは特に設定が必要ありませんが、リモートフォワーディングはリモートサーバーの SSH デーモンの設定によって制限を受けます。詳しくは {{Ic|sshd_config(5)}} の {{Ic|GatewayPorts}} オプションを見てください。&lt;br /&gt;
&lt;br /&gt;
=== 踏み台ホスト ===&lt;br /&gt;
&lt;br /&gt;
場合によっては、接続先の SSH デーモンに直接接続できず、踏み台サーバー ([[Wikipedia:bastion host|要塞サーバー]]とも) を使わざるを得ないことがあります。よって、2つ以上の SSH トンネルを接続して、それぞれのサーバーに対してローカルの鍵で認証します。SSH エージェントの転送 ({{ic|-A}}) と疑似端末の割当 ({{ic|-t}}) を使って以下のようにローカルの鍵を転送します:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -A -t -l user1 bastion1 \&lt;br /&gt;
   ssh -A -t -l user2 intermediate2 \&lt;br /&gt;
   ssh -A -t -l user3 target&lt;br /&gt;
&lt;br /&gt;
ProxyCommand オプションを使えばこれを自動化することができます:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -o ProxyCommand=&amp;quot;ssh -W %h:%p bastion.example.org&amp;quot; targetserver.example.org&lt;br /&gt;
&lt;br /&gt;
{{ic|-J}} フラグで ProxyJump オプションを使用すれば、これをより簡単かつセキュアに行うことができます:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -J user1@bastion1,user2@intermediate2 user3@target&lt;br /&gt;
&lt;br /&gt;
{{ic|-J}} ディレクティブで指定するホストはカンマで区切り、指定された順番で接続されます。{{ic|user...@}} の部分は必須ではありません。{{ic|-J}} で指定したホストは ssh の設定ファイルを使うため、必要であればホスト毎にオプションを設定することが可能です。&lt;br /&gt;
&lt;br /&gt;
ProxyCommand オプションと ProxyJump オプションの主な違いは、後者は踏み台ホスト上のシェルを必要としないところにあります。その結果、ユーザのログイン認証情報への踏み台サーバでのアクセスや SSH エージェントフォワーディングが必要なくなります。ProxyJump オプションでは、ssh クライアントは踏み台サーバを通して直接ターゲットのサーバへ接続し、エンドツーエンドの暗号化されたチャネルをクライアントとターゲットサーバとの間で確立します。&lt;br /&gt;
&lt;br /&gt;
設定ファイルにも、{{ic|-J}} フラグと等価なものとして {{ic|ProxyJump}} オプションがあります。詳細は {{man|5|ssh_config}} を見てください。&lt;br /&gt;
&lt;br /&gt;
=== リレーを介したリバース SSH ===&lt;br /&gt;
&lt;br /&gt;
アイデアとしては、クライアントは別のリレーを使ってサーバに接続し、サーバはリバース SSH トンネルを使って同じリレーに接続します。これは、サーバが NAT 内にあり、リレーが、ユーザがアクセス可能なプロキシとして使用されている、パブリックにアクセス可能な SSH サーバである場合に便利です。ゆえに、クライアントの鍵がリレーとサーバの両方に対して認可されていることが前提条件であり、サーバはリレーに対してもリバース SSH 接続に対しても認可されている必要があります。&lt;br /&gt;
&lt;br /&gt;
以下の設定例では、{{ic|&#039;&#039;user1&#039;&#039;}} がクライアント上で使用されているユーザアカウントであり、{{ic|&#039;&#039;user2&#039;&#039;}} は relay 上のアカウント、{{ic|&#039;&#039;user3&#039;&#039;}} がサーバー上のアカウントであるとします。まず、以下のコマンドでサーバとリバーストンネルとの接続が確立している必要があります (2222番ポートを使うものとします):&lt;br /&gt;
&lt;br /&gt;
 $ ssh -R 2222:localhost:22 -N &#039;&#039;user2&#039;&#039;@&#039;&#039;relay&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これは、スタートアップスクリプトや systemd サービス、[[#Autossh - SSH セッションとトンネルの自動再起動|autossh]]、{{AUR|sidedoor}} を使って自動化することもできます。&lt;br /&gt;
&lt;br /&gt;
クライアント側では、以下のコマンドで接続を確立させます:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -t &#039;&#039;user2&#039;&#039;@&#039;&#039;relay&#039;&#039; ssh &#039;&#039;user3&#039;&#039;@localhost -p 2222&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ssh &#039;&#039;user3&#039;&#039;@&#039;&#039;relay&#039;&#039; -p 2222}} では、リレーサーバーのファイアウォールで対象のポートを開いておくとともに、他のアドレスからこのポートへの接続を許可しておく必要があります。}}&lt;br /&gt;
&lt;br /&gt;
リバーストンネルとの接続を確立させるためのリモートのコマンドは、relay の {{ic|authorized_keys}} に以下のような {{ic|command}} フィールドを含めることで、定義できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.ssh/authorized_keys|2=command=&amp;quot;ssh &#039;&#039;user3&#039;&#039;@localhost -p 2222&amp;quot; &#039;&#039;ssh-ed25519&#039;&#039; &#039;&#039;KEY2&#039;&#039; &#039;&#039;user1&#039;&#039;@&#039;&#039;client&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
この場合、接続は以下のコマンドで確立できます:&lt;br /&gt;
&lt;br /&gt;
 $ ssh &#039;&#039;user2&#039;&#039;@&#039;&#039;relay&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
または、{{ic|RemoteCommand}} と {{ic|RequestTTY}} を指定するエントリを ssh の設定に追加することもできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.ssh/config|&lt;br /&gt;
Host &#039;&#039;jump-destination&#039;&#039;&lt;br /&gt;
    Hostname &#039;&#039;relay&#039;&#039;&lt;br /&gt;
    User &#039;&#039;user2&#039;&#039;&lt;br /&gt;
    RemoteCommand ssh &#039;&#039;user3&#039;&#039;@localhost -p 2222&lt;br /&gt;
    RequestTTY yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この場合、以下のように簡単にできます:&lt;br /&gt;
&lt;br /&gt;
 $ ssh &#039;&#039;jump-destination&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|クライアント側のターミナルでの SCP の自動補完機能は機能しません。一部の構成では、SCP の転送機能自体も機能しません。}}&lt;br /&gt;
&lt;br /&gt;
=== マルチプレクス ===&lt;br /&gt;
&lt;br /&gt;
SSH デーモンは通常はポート 22 番をリッスンします。しかし、公共のインターネット・ホットスポットでは通常の HTTP/HTTPS のポート（80 と 443）以外のトラフィックをブロックしていることが一般的です。そのため SSH 接続がブロックされてしまいます。すぐできる解決策として、{{ic|sshd}} に許可されているポートをリッスンさせるという方法があります：&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/sshd_config|&lt;br /&gt;
Port 22&lt;br /&gt;
Port 443&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
しかしポート 443 番は HTTPS コンテンツを提供する Web サーバによってすでに使われていることが多いです。その場合は {{Pkg|sslh}} のようなマルチプレクサを使います。これは複数のポートをリッスンし、そこに来るパケットを複数のサービスに賢く振り分けることができます。&lt;br /&gt;
&lt;br /&gt;
=== SSH の高速化 ===&lt;br /&gt;
&lt;br /&gt;
接続をグローバル及び特定のホストに対して高速化させることのできる[[#設定|クライアント設定]]がいくつかあります。これらのオプションに関する完全な説明は {{man|5|ssh_config}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;より高速な暗号を使う&#039;&#039;: AESNI 命令セットを持つ最近の CPU では、{{ic|aes128-gcm@openssh.com}} や {{ic|aes256-gcm@openssh.com}} を使うことで openssh のデフォルトの優先暗号 (通常 {{ic|chacha20-poly1305@openssh.com}}) よりも劇的に優れたパフォーマンスを得られるはずです。暗号は {{ic|-c}} フラグで選択できます。永続的に設定するには、{{ic|~/.ssh/config}} 内に {{ic|Ciphers}} オプションを追加し、暗号を優先順に並べて設定してください (例: {{bc|Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr}})。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;圧縮を有効化あるいは無効化する&#039;&#039;: 圧縮は低速な接続において速度を向上させることができます。{{ic|Compression yes}} オプションか {{ic|-C}} フラグで有効化できます。しかし、使用される圧縮アルゴリズムは比較的低速な {{man|1|gzip}} であり、高速なネットワークにおいてはボトルネックになってしまいます。接続を高速化させるために、ローカルネットワークや高速なネットワークにおいては {{ic|Compression no}} を使うべきでしょう。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;接続共有&#039;&#039;: 以下のオプションを使用することで、同一ホストに対するセッションをすべて単一の接続に共有させることができます:{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
ControlMaster auto&lt;br /&gt;
ControlPersist yes&lt;br /&gt;
ControlPath ~/.ssh/sockets/socket-%r@%h:%p&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
: {{ic|~/.ssh/sockets}} の部分は、他のユーザによって書き込むことができないのであれば、どのディレクトリでも構いません。&lt;br /&gt;
&lt;br /&gt;
* {{ic|ControlPersist}} は、初回のクライアント接続が閉じられてから、新しいクライアントのためにマスターがどれくらいバックグラウンドで待機すべきかを指定します。利用可能な値は:&lt;br /&gt;
** {{ic|no}}: 最後のクライアントが切断されたらすぐに接続を閉じます。&lt;br /&gt;
** 秒単位の時間&lt;br /&gt;
** {{ic|yes}}: 永遠に待ちます。接続は自動的に閉じられなくなります。&lt;br /&gt;
&lt;br /&gt;
* {{ic|AddressFamily inet}} オプションか {{ic|-4}} フラグを使用して IPv6 ルックアップをバイパスすることで、ログインに要する時間を短くすることができます。&lt;br /&gt;
&lt;br /&gt;
* 最後に、SSH を SFTP や SCP のために使用するつもりであれば、[https://www.psc.edu/index.php/hpn-ssh High Performance SSH/SCP] は、SSH バッファサイズを動的に大きくすることで、スループットを劇的に増やすことができます。この改善のパッチが施されたバージョンの OpenSSH である {{AUR|openssh-hpn}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
=== SSHFS でリモートファイルシステムをマウントする ===&lt;br /&gt;
&lt;br /&gt;
sshfs を使って (SSH でアクセスした) リモートのファイルシステムをローカルフォルダにマウントする方法は [[SSHFS]] の記事を参照してください。マウントしたファイルは様々なツールであらゆる操作することができます (コピー、名前の変更、vim で編集など)。基本的に &#039;&#039;shfs&#039;&#039; よりも &#039;&#039;sshfs&#039;&#039; を使用することを推奨します。&#039;&#039;sshfs&#039;&#039; は &#039;&#039;shfs&#039;&#039; の新しいバージョンであり、元の &#039;&#039;shfs&#039;&#039; は2004年から更新されていません。&lt;br /&gt;
&lt;br /&gt;
=== キープアライブ ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、SSH セッションが一定時間アイドルであった場合、自動的にログアウトします。一定時間データが受信されなかった場合にサーバにキープアライブシグナルを送信することで、セッションを開いたままにすることができます。あるいは対照的に、クライアントからデータが送られてこない場合にサーバが定期的にメッセージを送信することもできます。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;サーバ&#039;&#039;&#039;側: {{ic|ClientAliveInterval}} はタイムアウトを秒単位で設定します。クライアントからデータが受信されずにその時間経過すると、&#039;&#039;sshd&#039;&#039; が応答を促すリクエストを送信します。デフォルトは0であり、メッセージは送信されません。例えば、60秒毎にクライアントに対して応答を要求するには、[[#設定_2|サーバ側の設定]]で {{ic|ClientAliveInterval 60}} オプションを設定してください。{{ic|ClientAliveCountMax}} と {{ic|TCPKeepAlive}} オプションも参照してください。&lt;br /&gt;
* &#039;&#039;&#039;クライアント&#039;&#039;&#039;側: {{ic|ServerAliveInterval}} は、クライアントからサーバに向けて送信されるリクエストの時間間隔を設定します。例えば、120秒毎にサーバに対して応答を要求するには、[[#設定|クライアント側の設定]]で {{ic|ServerAliveInterval 120}} オプションを追加してください。{{ic|ServerAliveCountMax}} と {{ic|TCPKeepAlive}} オプションも参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|セッションを開いたままにするためにキープアライブリクエストを送信する必要があるのは、クライアントかサーバの一方のみです。サーバとクライアントの両方を制御できるならば、セッションを永続的にする必要のあるクライアントに対してのみ {{ic|ServerAliveInterval}} を正の値に設定し、その他のクライアントやサーバはデフォルトの設定するのが妥当な選択です。}}&lt;br /&gt;
&lt;br /&gt;
=== systemd で SSH トンネルを自動的に再起動 ===&lt;br /&gt;
&lt;br /&gt;
[[systemd]] を使ってブート時/ログイン時に SSH 接続を自動的に開始して、&#039;&#039;さらに&#039;&#039;接続が失敗した時に再起動させることができます。SSH トンネルの管理に役立つツールとなります。&lt;br /&gt;
&lt;br /&gt;
以下のサービスでは、[[#設定|ssh の設定]]に保存された接続設定を使って、ログイン時に SSH トンネルを開始します。接続が何らかの理由で閉じられた場合、10秒待機してから再起動します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/tunnel.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=SSH tunnel to myserver&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
Restart=always&lt;br /&gt;
RestartSec=10&lt;br /&gt;
ExecStart=/usr/bin/ssh -F %h/.ssh/config -N myserver&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
上記の [[systemd/ユーザー]]サービスを[[有効化]]して[[起動]]してください。トンネルがタイムアウトするのを防ぐ方法は [[#キープアライブ]] を見て下さい。起動時にトンネルを開始したい場合、[[systemd#ユニットファイル|ユニットをシステムサービスとして書きなおして下さい]]。&lt;br /&gt;
&lt;br /&gt;
=== Autossh - SSH セッションとトンネルの自動再起動 ===&lt;br /&gt;
&lt;br /&gt;
ネットワークの状態が悪かったりしてクライアントが切断してしまい、セッションやトンネルの接続を維持できない場合、{{Pkg|autossh}} を使って自動的にセッションとトンネルを再起動できます。&lt;br /&gt;
&lt;br /&gt;
使用例:&lt;br /&gt;
&lt;br /&gt;
 $ autossh -M 0 -o &amp;quot;ServerAliveInterval 45&amp;quot; -o &amp;quot;ServerAliveCountMax 2&amp;quot; username@example.com&lt;br /&gt;
&lt;br /&gt;
[[SSHFS]] と組み合わせる:&lt;br /&gt;
&lt;br /&gt;
 $ sshfs -o reconnect,compression=yes,transform_symlinks,ServerAliveInterval=45,ServerAliveCountMax=2,ssh_command=&#039;autossh -M 0&#039; username@example.com: /mnt/example &lt;br /&gt;
&lt;br /&gt;
[[プロキシ設定]]で設定した SOCKS プロキシを使って接続:&lt;br /&gt;
&lt;br /&gt;
 $ autossh -M 0 -o &amp;quot;ServerAliveInterval 45&amp;quot; -o &amp;quot;ServerAliveCountMax 2&amp;quot; -NCD 8080 username@example.com &lt;br /&gt;
&lt;br /&gt;
{{ic|-f}} オプションで autossh をバックグラウンドプロセスとして実行することができます。ただし対話式でパスフレーズを入力することができなくなります。&lt;br /&gt;
&lt;br /&gt;
セッション中に {{ic|exit}} と入力したり autossh プロセスに SIGTERM、SIGINT、SIGKILL シグナルが送られるとセッションは終了します。&lt;br /&gt;
&lt;br /&gt;
==== systemd を使ってブート時に自動的に autossh を起動する ====&lt;br /&gt;
&lt;br /&gt;
autossh を自動的に起動したい場合、以下の systemd ユニットファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/autossh.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=AutoSSH service for port 2222&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=&amp;quot;AUTOSSH_GATETIME=0&amp;quot;&lt;br /&gt;
ExecStart=/usr/bin/autossh -M 0 -NL 2222:localhost:2222 -o TCPKeepAlive=yes foo@bar.com&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=AUTOSSH_GATETIME=0}} は接続が成功して ssh が立ち上がったと autossh が認識する秒数です。0に設定すると autossh は ssh の最初の起動失敗を無視します。起動時に autossh を実行する場合は設定するべきです。他の環境変数は man ページを見てください。必要であればもっと複雑に設定することもできますが、{{ic|1=AUTOSSH_GATETIME=0}} を含む {{ic|-f}} は systemd では機能しません。&lt;br /&gt;
&lt;br /&gt;
設定後はサービスを[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
以下のように {{ic|ControlMaster}} を無効化する必要もあるかもしれません:&lt;br /&gt;
&lt;br /&gt;
 ExecStart=/usr/bin/autossh -M 0 -o ControlMaster=no -NL 2222:localhost:2222 -o TCPKeepAlive=yes foo@bar.com&lt;br /&gt;
&lt;br /&gt;
{{Tip|複数のautosshプロセスを維持し、複数のトンネルを存続させることも簡単です。名前の異なる複数のサービスファイルを作成するだけです。}}&lt;br /&gt;
&lt;br /&gt;
=== SSH デーモンが失敗した場合の代替サービス ===&lt;br /&gt;
&lt;br /&gt;
SSH のみに依存するリモート或いはヘッドレスのサーバにおいて、(システムアップグレード後などに) SSH デーモンの起動に失敗すると、管理アクセスできなくなってしまう場合があります。[[systemd]] は、{{ic|OnFailure}} によるシンプルなソリューションを提供しています。&lt;br /&gt;
&lt;br /&gt;
サーバ上で {{ic|sshd}} が実行されていて、[[telnet]] がフェイルセーフであるとしてます。以下のようにファイルを作成してください。ただし、{{ic|telnet.socket}} は[[有効化]]&#039;&#039;&#039;しないでください&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/sshd.service.d/override.conf|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
OnFailure=telnet.socket&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これだけです。{{ic|sshd}} が実行中である場合、Telnet は実行されません。{{ic|sshd}} が起動に失敗した場合、telnet セッションがリカバリとして開かれます。&lt;br /&gt;
&lt;br /&gt;
=== ホストに基づいてターミナル背景色を設定する ===&lt;br /&gt;
&lt;br /&gt;
異なるホストに接続していることを簡単に判別できるようにするために、[https://bryangilbert.com/post/etc/term/dynamic-ssh-terminal-background-colors/ ホストの種類に応じて異なる背景色]を設定することができます。&lt;br /&gt;
&lt;br /&gt;
このソリューションは一般には適用できません (ZSH 限定)。&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク固有の設定 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|Match exec}} を使うことで、接続先のネットワークに固有のホスト設定を使用することができます。&lt;br /&gt;
&lt;br /&gt;
例えば、{{man|1|nmcli}} を使用していて、接続が検索ドメインを使用するように (手動、あるいは DHCP で) 設定されている場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=~/.ssh/config|output=&lt;br /&gt;
Match exec &amp;quot;nmcli {{!}} grep domains: {{!}} grep example.com&amp;quot;&lt;br /&gt;
  CanonicalDomains example.com&lt;br /&gt;
  # Should you use a different username on this network&lt;br /&gt;
  #User username&lt;br /&gt;
  # Use a different known_hosts file (for private network or synchronisation)&lt;br /&gt;
  #UserKnownHostsFile &amp;lt;network&amp;gt;_known_hosts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|Match host ... exec &amp;quot;...&amp;quot;}} の例: VPN に接続していない限り、{{ic|internal.example.com}} への接続に ({{ic|ProxyJump}} を用いた) 踏み台/プロキシが必要であるとしましょう。フラグメント {{ic|!exec &amp;quot;host internal.example.com&amp;quot;}} は、{{ic|internal.example.com}} が DNS を介して見つけられない場合にのみ、適用されます。様々な代替案が [https://serverfault.com/q/536043/117525] で議論されています。&lt;br /&gt;
&lt;br /&gt;
{{hc|head=~/.ssh/config|output=&lt;br /&gt;
Match host internal.example.com !exec &amp;quot;host internal.example.com&amp;quot;&lt;br /&gt;
  ProxyJump bastion.example.com&lt;br /&gt;
Host internal.example.com&lt;br /&gt;
  User foobar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== プライベートネットワークのホスト鍵検証 ===&lt;br /&gt;
&lt;br /&gt;
あるネットワーク上のサーバとそれとは別のネットワーク上のサーバは、互いに同じプライベート IP アドレスを持つ可能性があるため、それらのサーバは異なる方法で処理する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|「最適な」ソリューションに、本番環境では別のものを使うべきという警告があるはずがない。}}&lt;br /&gt;
&lt;br /&gt;
最適なソリューションは、[[#ネットワーク固有の設定]] を使用し、接続しているネットワークに応じて異なる {{ic|UserKnownHostsFile}} を使うことです。2つめのソリューションは、プライベートネットワークのホスト鍵を単に無視することです (新しい/プロトタイプのネットワークで作業する際にデフォルトで使用するのが最適です):&lt;br /&gt;
&lt;br /&gt;
{{hc|head=~/.ssh/config|output=&lt;br /&gt;
Host 10.* 192.168.*.* 172.31.* 172.30.* 172.2?.* 172.1?.*&lt;br /&gt;
    # Disable HostKey verification&lt;br /&gt;
    # Trust HostKey automatically&lt;br /&gt;
    StrictHostKeyChecking no&lt;br /&gt;
    # Do not save the HostKey&lt;br /&gt;
    UserKnownHostsFile=/dev/null&lt;br /&gt;
    # Do not display: &amp;quot;Warning: Permanently Added ...&amp;quot;&lt;br /&gt;
    LogLevel Error&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|{{ic|known_hosts}} ファイルは、サーバにアクセスするためにホスト名を使用したとしても、IP アドレスを記録します。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|本番環境では、ホスト名を使用してホストにアクセスしたり、ネットワーク固有の known_hosts ファイルを使用するようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
=== ログイン時にコマンドを実行 ===&lt;br /&gt;
&lt;br /&gt;
インタラクティブセッションを使用している場合、ログイン時にコマンドを実行する方法は複数存在します:&lt;br /&gt;
&lt;br /&gt;
* リモートホスト上の {{ic|authorized_keys}} ファイルを使用する ({{man|8|sshd|AUTHORIZED_KEYS FILE FORMAT}} を参照)&lt;br /&gt;
* サーバで {{ic|PermitUserRC}} オプションが有効化されている場合、リモートホスト上の {{ic|~/.ssh/rc}} を使用する&lt;br /&gt;
* リモートホスト上のシェル設定ファイルを使用する (例: {{ic|.bashrc}})&lt;br /&gt;
&lt;br /&gt;
=== エージェントフォワーディング ===&lt;br /&gt;
&lt;br /&gt;
SSH エージェントのフォワーディングにより、サーバに接続している状態でローカルの鍵を使用することができます。選択したホストのみに対してエージェントフォワーディングを許可することが[https://security.stackexchange.com/questions/7480/risks-of-ssh-to-an-untrusted-host#7504 推奨]されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.ssh/config|&lt;br /&gt;
Host &#039;&#039;myserver.com&#039;&#039;&lt;br /&gt;
    ForwardAgent yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、[[SSH エージェント]]を構成し、&#039;&#039;ssh-add&#039;&#039; を使ってローカル鍵を追加してください。&lt;br /&gt;
&lt;br /&gt;
これで、リモートサーバに接続する場合、あなたのローカル鍵を使用して他のサービスに接続できるようになりました。&lt;br /&gt;
&lt;br /&gt;
=== 新しい鍵の生成 ===&lt;br /&gt;
&lt;br /&gt;
新しいサーバの秘密鍵は以下で生成できます:&lt;br /&gt;
&lt;br /&gt;
# すべての鍵を削除する。例えば: {{bc|# rm /etc/ssh/ssh_host_*_key*}}&lt;br /&gt;
# {{ic|sshdgenkeys.service}} を[[再起動]]するか、{{ic|ssh-keygen -A}} を root として実行する。&lt;br /&gt;
&lt;br /&gt;
=== sshd を非特権ユーザとして実行 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|sshd}} をコンテナ内で (或いはテスト目的などで) 非特権ユーザとして実行したい場合もあるでしょう。&lt;br /&gt;
&lt;br /&gt;
非特権ユーザは {{ic|/etc/ssh}} 内のホスト鍵を読むことができないため、新しいホスト鍵を生成しなければなりません:&lt;br /&gt;
&lt;br /&gt;
 $ ssh-keygen -q -N &amp;quot;&amp;quot; -t rsa -b 4096 -f &#039;&#039;/path/to/host/keys/ssh_host_rsa_key&#039;&#039;&lt;br /&gt;
 $ ssh-keygen -q -N &amp;quot;&amp;quot; -t ecdsa -f &#039;&#039;/path/to/host/keys/ssh_host_ecdsa_key&#039;&#039;&lt;br /&gt;
 $ ssh-keygen -q -N &amp;quot;&amp;quot; -t ed25519 -f &#039;&#039;/path/to/host/keys/ssh_host_ed25519_key&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|sshd_config}} を作成してください。以下の例では、1024 より大きい値のポート番号を使用し、ホスト鍵への新しいパスを提供し、PAM を無効化します:&lt;br /&gt;
&lt;br /&gt;
{{hc|&#039;&#039;/path/to/sshd_config&#039;&#039;|&lt;br /&gt;
Port 2022&lt;br /&gt;
HostKey &#039;&#039;/path/to/host/keys/ssh_host_rsa_key&#039;&#039;&lt;br /&gt;
HostKey &#039;&#039;/path/to/host/keys/ssh_host_ecdsa_key&#039;&#039;&lt;br /&gt;
HostKey &#039;&#039;/path/to/host/keys/ssh/ssh_host_ed25519_key&#039;&#039;&lt;br /&gt;
UsePAM no&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
新しく作成した設定で &#039;&#039;sshd&#039;&#039; を実行します。{{ic|-D}} フラグはデーモンモードを無効化し、{{ic|-e}} は出力を標準エラー出力にリダイレクトしてモニタしやすくします:&lt;br /&gt;
&lt;br /&gt;
 $ sshd -f &#039;&#039;/path/to/sshd_config&#039;&#039; -D -e&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== チェックリスト ===&lt;br /&gt;
&lt;br /&gt;
まずは以下の単純な問題をチェックしましょう。&lt;br /&gt;
&lt;br /&gt;
# 設定ディレクトリ {{ic|~/.ssh}} のコンテンツが対象ユーザによってのみアクセス可能である必要があります (クライアントとサーバの両方で確認してください)。かつ、対象ユーザのホームディレクトリがそのユーザによってのみ書き込み可能である必要があります: {{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ chmod go-w ~&lt;br /&gt;
$ chmod 700 ~/.ssh&lt;br /&gt;
$ chmod 600 ~/.ssh/*&lt;br /&gt;
$ chown -R $USER ~/.ssh&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# クライアントの公開鍵 (例: {{ic|id_ed25519.pub}}) がサーバ上の {{ic|~/.ssh/authorized_keys}} 内に記述されていることを確認する。&lt;br /&gt;
# [[#設定_2|サーバの設定]]の {{ic|AllowUsers}} や {{ic|AllowGroups}} によって SSH のアクセスが制限されていないことを確認する。&lt;br /&gt;
# ユーザがパスワードを設定しているかを確認する。サーバにログインしたことのない新しいユーザは、パスワードを持っていないことがあります。&lt;br /&gt;
# {{ic|/etc/ssh/sshd_config}} に {{ic|LogLevel DEBUG}} を[[追加]]してみる。&lt;br /&gt;
# {{ic|journalctl -xe}} を root として実行して、(エラー) メッセージの取得を試みる。&lt;br /&gt;
# {{ic|sshd}} を[[再起動]]し、クライアントとサーバの両方でログアウト/ログインする。&lt;br /&gt;
&lt;br /&gt;
=== 接続の拒否やタイムアウトの問題 ===&lt;br /&gt;
&lt;br /&gt;
==== ポートフォワーディング ====&lt;br /&gt;
&lt;br /&gt;
NAT モードやルータを使っている場合 (VPS を使っていたりパブリックにアドレッシングされたホストを使用していない限り、あり得ます)、ルータが ssh の着信接続をマシンにフォワーディングしていることを確認してください。{{ic|ip addr}} を使ってサーバの内部 IP アドレスを見つけ、SSH ポートの TCP 接続をその IP にフォワーディングするようにルータを設定してください。[https://portforward.com portforward.com] が役に立ちます。&lt;br /&gt;
&lt;br /&gt;
==== SSH が動作していて、リッスンしているか？ ====&lt;br /&gt;
&lt;br /&gt;
[[ss]] ユーティリティは、以下のコマンドラインを使うことで、TCP ポートをリッスンしている全プロセスを表示します:&lt;br /&gt;
&lt;br /&gt;
 $ ss --tcp --listening&lt;br /&gt;
&lt;br /&gt;
このコマンドの出力を見て、システムが {{ic|ssh}} ポートをリッスンしていないことが判明した場合、SSH が実行されていないことを意味します。[[Journal]] でエラーなどが出力されていないか確認してください。&lt;br /&gt;
&lt;br /&gt;
==== 接続をブロックするようなファイアウォールのルールが存在しないか？ ====&lt;br /&gt;
&lt;br /&gt;
[[iptables]] によってポート {{ic|22}} の接続がブロックされている可能性があります。次のコマンドで確認してください:&lt;br /&gt;
{{bc|# iptables -nvL}}&lt;br /&gt;
{{ic|INPUT}} チェインのパケットを拒否するようなルールがないか見て下さい。そして、必要であれば、次のようなコマンドでポートのブロックを解除します:&lt;br /&gt;
{{bc|&lt;br /&gt;
# iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT&lt;br /&gt;
}}&lt;br /&gt;
ファイアウォールの設定に関する詳細は[[ファイアウォール]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== トラフィックがコンピュータにまで到達しているか？ ====&lt;br /&gt;
&lt;br /&gt;
以下のように問題のコンピュータのトラフィックを収集してみてください:&lt;br /&gt;
&lt;br /&gt;
 # tcpdump -lnn -i any port ssh and tcp-syn&lt;br /&gt;
&lt;br /&gt;
上記は基本的な情報を表示します。トラフィックが表示されるまで待ってください。その後、接続を試行してみてください。何も出力がされない場合、コンピュータの外側にある何かがトラフィックを妨害しています (例: ハードウェアファイアウォールや NAT ルーターなど)。&lt;br /&gt;
&lt;br /&gt;
==== ISP またはサードパーティによってデフォルトのポートがブロックされてないか？ ====&lt;br /&gt;
&lt;br /&gt;
{{Note|このステップは次のことを確認した後で実行してください。ファイアーウォールを何も起動していないこと。DMZ へのルーターを正しく設定している、またはコンピュータへポートを転送していること。それでもまだ動かない場合、ここで診断のステップと解決法が見つかるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
ときどき ISP が SSH のデフォルトポート (22番) をブロックしている場合があります。この場合はあなたが何をしても (ポートを開ける、スタックを強化する、フラッドアタックを防御する、など) 無意味になります。ブロックされているかどうか確認するために、全てのインターフェイス (0.0.0.0) をリッスンするサーバを立ち上げ、リモートから接続してみてください。&lt;br /&gt;
&lt;br /&gt;
このようなエラーメッセージが出る場合：&lt;br /&gt;
&lt;br /&gt;
 ssh: connect to host www.inet.hr port 22: Connection refused&lt;br /&gt;
&lt;br /&gt;
これはそのポートが ISP にブロックされて&#039;&#039;&#039;いない&#039;&#039;&#039;が、そのポートでサーバーの SSH が起動していないことを意味します ([[wikipedia:Security through obscurity|security through obscurity]] を参照)。&lt;br /&gt;
&lt;br /&gt;
しかし、次のようなエラーメッセージが出る場合：&lt;br /&gt;
&lt;br /&gt;
 ssh: connect to host 111.222.333.444 port 22: Operation timed out &lt;br /&gt;
&lt;br /&gt;
これは何かがポート 22 での TCP トラフィックを拒否していることを意味します。そのポートはあなたのサーバー上のファイアーウォールか第三者 (ISP など) のどちらかによってステルスされています。自分のサーバーでファイアーウォールが起動していないことが確かなら、また、ルーターやスイッチの中でグレムリンが育っていないことが確かなら、ISP がトラフィックをブロックしています。&lt;br /&gt;
&lt;br /&gt;
ダブルチェックのために、サーバ上で Wireshark を起動してポート 22 でのトラフィックをリッスンしてみましょう。Wireshark はレイヤ 2 のパケット・スニファリング・ユーティリティであり、TCP/UDP はレイヤ 3 以上なので ([[wikipedia:ja:インターネット・プロトコル・スイート|IP ネットワークスタック]]を参照)、もしリモートから接続するときに何も受け取っていなければ、十中八九、第三者がブロックしています。&lt;br /&gt;
&lt;br /&gt;
===== 問題診断 =====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|tcpdump}} または {{Pkg|wireshark-cli}} パッケージで Wireshark を[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
tcpdump の場合:&lt;br /&gt;
&lt;br /&gt;
 # tcpdump -ni &#039;&#039;interface&#039;&#039; &amp;quot;port 22&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wireshark の場合:&lt;br /&gt;
&lt;br /&gt;
 $ tshark -f &amp;quot;tcp port 22&amp;quot; -i &#039;&#039;interface&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;interface&#039;&#039;}} は WAN 接続に使っているネットワークインターフェイスに置き換えてください (確認したいときは {{ic|ip a}} を実行)。リモートで接続を試行してもパケットが全く受け取れない場合、ISP によってポート 22 のトラフィックがブロックされている可能性があります。&lt;br /&gt;
&lt;br /&gt;
===== 解決方法 =====&lt;br /&gt;
&lt;br /&gt;
解決方法は、単に ISP がブロックしていない他のポートを使うことです。{{ic|/etc/ssh/sshd_config}} を編集して他のポートを使うようにしましょう。例えば次を追加します:&lt;br /&gt;
&lt;br /&gt;
 Port 22&lt;br /&gt;
 Port 1234&lt;br /&gt;
&lt;br /&gt;
そしてこのファイル中の他の Port 設定をコメントアウトします。「Port 22」をコメントにして「Port 1234」を追加するだけでは、sshd がポート 1234 しかリッスンしなくなるので、この問題は解決しません。この 2 行どちらも使用し、sshd が両方のポートをリッスンするようにします。&lt;br /&gt;
&lt;br /&gt;
{{ic|sshd.service}} サーバを[[再起動]]すれば、あともう少しです。次に、デフォルトのポートではなくもう一つのポートを使用するようにクライアントを設定しなければなりません。その問題に対するソリューションは数多く存在しますが、ここではそれらのうち2つを扱っています。&lt;br /&gt;
&lt;br /&gt;
==== Read from socket failed: connection reset by peer ====&lt;br /&gt;
&lt;br /&gt;
最近のバージョンの OpenSSH は時々、古い ssh サーバに接続する際に上記のエラーメッセージで失敗することがあります。これは、そのホストに対する様々な[[#設定|クライアントオプション]]を設定することにより、回避可能です。以下のオプションに関する詳細は {{man|5|ssh_config}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{ic|ecdsa-sha2-nistp*-cert-v01@openssh}} 楕円曲線ホスト鍵アルゴリズムが原因である可能性があります。このようなアルゴリズムは、{{ic|HostKeyAlgorithms}} にそれらのアルゴリズムを除いたリストを設定することにより、無効化できます。クライアント側では、{{ic|HostKeyAlgorithms}} のリストの前に {{ic|-}} をつけることで、指定したアルゴリズム (ワイルドカードも可) をデフォルトから外すことができます ({{man|5|ssh_config}} を参照)。&lt;br /&gt;
&lt;br /&gt;
実際に使用されているホスト鍵のアルゴリズムは、{{ic|ssh -v &#039;&#039;server_to_connect_to&#039;&#039;}} を実行して、{{ic|kex: host key algorithm:}} と書かれてある行を見ればわかります。&lt;br /&gt;
&lt;br /&gt;
これでうまく行かない場合、暗号のリストが長過ぎる可能性があります。{{ic|Ciphers}} オプションのリストを短くしてください (80 文字未満であれば十分でしょう)。同じように、{{ic|MACs}} のリストも短くしてみてください。&lt;br /&gt;
&lt;br /&gt;
OpenSSH のバグフォーラムにおける[https://web.archive.org/web/20161201015151/https://www.gossamer-threads.com/lists/openssh/dev/51339 議論]も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;[シェル]: No such file or directory&amp;quot; / ssh_exchange_identification の問題 ===&lt;br /&gt;
&lt;br /&gt;
シェルのバイナリが {{Ic|$PATH}} に登録されているディレクトリ内にあったとしても、特定の SSH クライアントは {{Ic|$SHELL}} に絶対パスを設定する必要があります (パスは {{Ic|whereis -b [あなたのシェル]}} で確認できます)。&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Terminal unknown&amp;quot; や &amp;quot;Error opening terminal&amp;quot; エラーメッセージ ===&lt;br /&gt;
&lt;br /&gt;
ログイン時に上記のようなエラーが表示される場合、サーバがターミナルを認識できていないことを意味します。また、nano などの ncurses アプリケーションを実行すると {{ic|Error opening terminal}} というメッセージが表示されることがあります。&lt;br /&gt;
&lt;br /&gt;
クライアントで使用しているターミナルの terminfo ファイルをサーバーにインストールするのが正しい解決方法です。これによってサーバーのコンソールプログラムがターミナルを正しく扱えるようになります。{{ic|infocmp}} を実行してから[[Pacman#パッケージ・データベースに問い合わせる|パッケージを確認]]することで terminfo に関する情報を取得できます。&lt;br /&gt;
&lt;br /&gt;
通常の方法で[[インストール]]できない場合、サーバーのホームディレクトリに terminfo をコピーしてください:&lt;br /&gt;
&lt;br /&gt;
 $ ssh myserver mkdir -p  ~/.terminfo/${TERM:0:1}&lt;br /&gt;
 $ scp /usr/share/terminfo/${TERM:0:1}/$TERM myserver:~/.terminfo/${TERM:0:1}/&lt;br /&gt;
&lt;br /&gt;
サーバーから一度ログアウトしてからログインしなおすと問題が解決しているはずです。&lt;br /&gt;
&lt;br /&gt;
==== TERM ハック ====&lt;br /&gt;
&lt;br /&gt;
{{Note|これは最後の手段にするべきです。}}&lt;br /&gt;
&lt;br /&gt;
あるいは、{{ic|1=TERM=xterm}} 環境変数をサーバ側で (例えば {{ic|.bash_profile}} で) 設定してしまうという方法もあります。これでエラーは出なくなり、ncurses アプリケーションを実行できるようになります。しかし、ターミナルの制御シーケンスが xterm のそれと正確に一致しない限り、奇妙な挙動やグラフィックのバグが発生する場合があります。&lt;br /&gt;
&lt;br /&gt;
=== Connection closed by x.x.x.x [preauth] ===&lt;br /&gt;
&lt;br /&gt;
sshd のログでこのエラーが確認できる場合、{{ic|HostKey}} が正しく設定されているか確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/sshd_config|HostKey /etc/ssh/ssh_host_ed25519_key}}&lt;br /&gt;
&lt;br /&gt;
=== サブシステム要求の失敗 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;OpenSSH&#039;&#039; 8.8 以降、&#039;&#039;scp&#039;&#039; はデータ転送のデフォルトプロトコルとして &#039;&#039;SFTP&#039;&#039; を使用し、{{ic|sftp}} というサブシステムを要求するようになりました。もし &#039;&#039;scp&#039;&#039; を冗長モード {{ic|scp -v}} で実行すれば、クライアントがどのサブシステムを使っているかがわかります (例: {{ic|Sending subsystem: &amp;lt;subsystem-name&amp;gt;}})。{{ic|subsystem request failed on channel 0}} のようなエラーは、サーバのサブシステムを設定することで修正できるかもしれません。{{man|5|sshd_config|Subsystem}} のように設定します。サーバの設定は、以下の例のようにする必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/sshd_config|&lt;br /&gt;
...&lt;br /&gt;
Subsystem subsystem-name /path/to/subsystem-executable&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== id_dsa が拒否される ===&lt;br /&gt;
&lt;br /&gt;
OpenSSH 7.0 ではセキュリティ上の理由により DSA 公開鍵が非推奨となっており、OpenSSH 9.8 はデフォルトで DSA 鍵のサポート無しでビルドされています。2025年最初の OpenSSH リリースでは、DSA のサポートが完全になくなる予定です。今のところ、DSA 公開鍵をどうしても使わなくてはならない場合は、{{ic|configure}} に {{ic|--enable-dsa-keys}} フラグを渡して {{Pkg|openssh}} をビルドする必要があります。[https://marc.info/?l=openssh-unix-dev&amp;amp;m=171982945528949&amp;amp;w=2]&lt;br /&gt;
&lt;br /&gt;
=== OpenSSH 7.0 で No matching key exchange method found ===&lt;br /&gt;
&lt;br /&gt;
OpenSSH 7.0 では、Logjam 攻撃からの理論上の脆弱性を理由に diffie-hellman-group1-sha1 鍵アルゴリズムが非推奨になっています (https://www.openssh.com/legacy.html を参照)。特定のホストで鍵アルゴリズムが必要な場合、ssh は以下のようなエラーメッセージを吐きます:&lt;br /&gt;
&lt;br /&gt;
 Unable to negotiate with 127.0.0.1: no matching key exchange method found.&lt;br /&gt;
 Their offer: diffie-hellman-group1-sha1&lt;br /&gt;
&lt;br /&gt;
古いアルゴリズムを使用しないようにサーバーをアップグレード/設定することで上記のエラーは解決します。サーバー側の設定を変更できない場合、[[#設定|クライアント設定]]で {{ic|KexAlgorithms +diffie-hellman-group1-sha1}} オプションを使うことでアルゴリズムを有効化できます。&lt;br /&gt;
&lt;br /&gt;
=== SSH から切断したときに tmux/screen セッションがキルされる ===&lt;br /&gt;
&lt;br /&gt;
セッションの終了時にプロセスがキルされる場合、ソケットアクティベーションを使っているために SSH セッションプロセスが終了したときに {{Pkg|systemd}} によって終了されている可能性があります。{{ic|ssh.socket}} の代わりに {{ic|ssh.service}} を使用してソケットアクティベーションを使わないことで解決できます。もしくは {{ic|ssh@.service}} の Service セクションで {{ic|1=KillMode=process}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=KillMode=process}} は古典的な {{ic|ssh.service}} でも役に立つことがあります。サーバーが停止したり再起動したときに SSH セッションプロセスや {{Pkg|screen}} や {{Pkg|tmux}} のプロセスが終了されることを防ぐことができます。&lt;br /&gt;
&lt;br /&gt;
=== SSH セッションが応答しなくなる ===&lt;br /&gt;
&lt;br /&gt;
SSH は [[Wikipedia:Software flow control|Software flow control]] {{ic|XON}} と {{ic|XOFF}} に反応します。{{ic|Ctrl+s}} を押すとフリーズ/ハングアップ/応答停止します。セッションを再開するには {{ic|Ctrl+q}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== Broken pipe ===&lt;br /&gt;
&lt;br /&gt;
接続を作ろうとして {{ic|packet_write_wait}} のレスポンスが {{ic|Broken pipe}} になる場合、デバッグモードで接続を再試行し、出力がエラーで終わるかどうか確認する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{bc|debug3: send packet: type 1&lt;br /&gt;
packet_write_wait: Connection to A.B.C.D port 22: Broken pipe&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の {{ic|send packet}} の行は、応答パケットが受信されなかったことを示しています。つまり、これは &#039;&#039;QoS&#039;&#039; の問題であることがわかります。パケットを落とす可能性を減らすには、{{ic|IPQoS}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssh/ssh_config|Match all&lt;br /&gt;
    IPQoS reliability&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
サービスタイプ {{ic|reliability}} ({{ic|0x04}}) は、{{ic|0x00}} や {{ic|throughput}} ({{ic|0x08}}) と同様に、このコマンドを解決するはずです。&lt;br /&gt;
&lt;br /&gt;
=== 応答のない SSH 接続を終了する ===&lt;br /&gt;
&lt;br /&gt;
クライアントセッションが応答しなくなり、実行中のプログラム (例えば [[シェル]]) に終了を指示しても終了しない場合、{{ic|Enter}}、{{ic|~}}、そして {{ic|.}} をこの順番で次々に押すと、セッションを終了させることが可能です。&lt;br /&gt;
&lt;br /&gt;
この {{ic|~}} は疑似端末エスケープ文字 ({{man|1|ssh|ESCAPE CHARACTERS}} 参照) であり、終了させるクライアントセッションに応じて複数回付加することが可能です。例えば、A から B へ接続し、B から C へ接続したときに B から C へのセッションがフリーズした場合、{{ic|Enter}} を押して {{ic|~~.}} と入力すれば、B の作業セッションを残して  B から C へのセッションを終了させることができます。&lt;br /&gt;
&lt;br /&gt;
=== WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ===&lt;br /&gt;
&lt;br /&gt;
SSH サーバの鍵が変更されたという警告がクライアントで表示された場合、新しく提供された鍵が本当にサーバオペレータのものであるかどうかを、何らかの信頼された方法 (暗号化されている必要はありません) で確認する必要があります。確認したら、{{ic|known_hosts}} ファイルから古い鍵を {{ic|ssh-keygen -R $SSH_HOST}} で削除し、新しいサーバーに接続するときと同じように鍵を受理してください。&lt;br /&gt;
&lt;br /&gt;
=== 適切な terminfo エントリがないリモートに接続する場合 ===&lt;br /&gt;
&lt;br /&gt;
あなたのターミナルの terminfo エントリが無いホストに接続する場合 (例えば、{{Pkg|ncurses}} に同梱されていない terminfo エントリのターミナルを使用している場合) や、terminfo データベースが限られているホストに接続する場合 (例えば、[[Wikipedia:ja:OpenWrt|OpenWrt]] を実行しているシステム)、{{man|5|terminfo}} に依存しているソフトウェアで様々な問題が発生します。&lt;br /&gt;
&lt;br /&gt;
適切な解決策は、適切な terminfo エントリをホストに設置することです。それが不可能な場合は、リモートホストがサポートし、かつ端末と互換性のある値を {{ic|TERM}} に設定することで解決できます。&lt;br /&gt;
&lt;br /&gt;
OpenSSH 8.7 以降、カスタムの {{ic|TERM}} 環境変数をリモートホストに渡すには、簡単な設定スニペットを使用してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.ssh/config|2=&lt;br /&gt;
Host example.com&lt;br /&gt;
  SetEnv TERM=xterm-256color&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 踏み台ホストを介する接続が &amp;quot;bash: No such file or directory&amp;quot; で失敗する ===&lt;br /&gt;
&lt;br /&gt;
(踏み台のサーバで) {{ic|SHELL}} 環境変数に有効な完全パスを設定していない場合、以下に似たエラーメッセージで接続は失敗します:&lt;br /&gt;
&lt;br /&gt;
 bash: No such file or directory&lt;br /&gt;
 kex_exchange_identification: Connection closed by remote host&lt;br /&gt;
 Connection closed by UNKNOWN port 65535&lt;br /&gt;
&lt;br /&gt;
踏み台サーバにおいて有効なシェルの完全パスを {{ic|SHELL}} に設定するか、{{ic|~/.ssh/config}} で各サーバに対して特定の {{ic|SHELL}} を設定することで、この問題を解決できます。&lt;br /&gt;
&lt;br /&gt;
=== ログインしようとすると接続がハングする ===&lt;br /&gt;
&lt;br /&gt;
MTU/フラグメンテーションの問題により接続確立中にハングすることがあります。ルーターやファイアウォールの設定を間違えていないか調べたり、クライアント側で MTU サイズを少しずつ減らしてみてください (これは良くない回避策です)。&lt;br /&gt;
もう一つの方法は、KexAlgorithms、HostKeyAlgorithms、Ciphers、MACs などの設定値を減らして最初の SSH ペイロードを減らすことです。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Wikibooks:ja:OpenSSH]]&lt;br /&gt;
* [https://www.la-samhna.de/library/brutessh.html Defending against brute force ssh attacks]&lt;br /&gt;
* OpenSSH 鍵管理: IBM developerWorks の [https://www.ibm.com/developerworks/library/l-keyc/index.html Part 1]、funtoo.org の [[Funtoo:OpenSSH Key Management, Part 2|Part 2]]、[[Funtoo:OpenSSH Key Management, Part 3|Part 3]]&lt;br /&gt;
* [https://stribika.github.io/2015/01/04/secure-secure-shell.html Secure Secure Shell]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|OpenSSH|2025-07-12|839725}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97&amp;diff=40527</id>
		<title>スワップ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97&amp;diff=40527"/>
		<updated>2025-07-07T09:45:50Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[de:Swap]]&lt;br /&gt;
[[en:Swap]]&lt;br /&gt;
[[es:Swap]]&lt;br /&gt;
[[fr:Swap]]&lt;br /&gt;
[[hu:Swap]]&lt;br /&gt;
[[pt:Swap]]&lt;br /&gt;
[[ru:Swap]]&lt;br /&gt;
[[zh-hans:Swap]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|fstab}}&lt;br /&gt;
{{Related|ハイバネート}}&lt;br /&gt;
{{Related|zswap}}&lt;br /&gt;
{{Related|zram}}&lt;br /&gt;
{{Related|ビデオメモリにスワップ}}&lt;br /&gt;
{{Related|ZFS#スワップボリューム}}&lt;br /&gt;
{{Related|Dm-crypt/スワップの暗号化}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
このページでは GNU/Linux での[[Wikipedia:ja:ページング方式|スワップ領域とページング]]を紹介します。また、スワップパーティションとスワップファイルの作成と有効化について説明しています。&lt;br /&gt;
&lt;br /&gt;
[https://www.linux.com/news/all-about-linux-swap-space/ All about Linux swap space] より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Linux は物理 RAM (random access memory) をページと呼ばれるメモリのかたまりに分割します。スワッピングとは、メモリを解放するために、ページがスワップ領域という名の事前設定領域にコピーされることを言います。物理メモリとスワップ領域の合計が利用できる仮想メモリのサイズになります。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
スワップのサポートは Linux カーネルにより提供され、ユーザスペースのユーティリティは {{Pkg|util-linux}} パッケージに存在します。&lt;br /&gt;
&lt;br /&gt;
== スワップ領域 ==&lt;br /&gt;
&lt;br /&gt;
スワップ領域は普通ディスクパーティションとして作られますが、ファイルにすることもできます。Arch Linux のインストール中にユーザーはスワップ領域を作成することができ、必要であればインストール後でも作成できます。スワップ領域を作成する理由は2つあります: 仮想メモリを拡張して、搭載している物理メモリ(RAM)より多くするためと、[[電源管理/サスペンドとハイバネート|suspend-to-disk(ハイバネート)]] をするためです。&lt;br /&gt;
&lt;br /&gt;
スワップを使って仮想メモリを拡張することが利益になるかどうかは搭載している物理メモリの容量により異なります。必要なプログラムをすべて実行するのに必要な量の物理メモリを搭載していないのであれば、スワップを作成することは&#039;&#039;おそらく&#039;&#039;利益となるでしょう。これにより、[[Wikipedia:Out of memory|out of memory(メモリ不足)]] を避けることができます。Out of memory とは、Linux カーネルの OOM killer という仕組みが自動的にプロセスを kill してメモリの空き領域を作ろうとしている状態のことを言います。仮想メモリの容量を必要な量まで増やすには、足りない分をスワップ領域として追加してください。&lt;br /&gt;
&lt;br /&gt;
メモリが枯渇しているときにスワップを使用することの最大の欠点は、パフォーマンスが低下することです([[#パフォーマンス]] セクションを見てください)。それゆえ、スワップを有効化するかどうかは個人の好みの問題となります。スワップを有効化するよりメモリが枯渇したときにプロセスが kill されるほうが良いという人もいますし、メモリが枯渇したときにシステムが低速化するがスワップを有効化したほうが良いという人もいます。&lt;br /&gt;
&lt;br /&gt;
スワップの状態を確認するには、次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ swapon --show&lt;br /&gt;
&lt;br /&gt;
もしくは、以下を実行して物理メモリとスワップの使用状況を表示:&lt;br /&gt;
&lt;br /&gt;
 $ free -h&lt;br /&gt;
&lt;br /&gt;
== スワップパーティション ==&lt;br /&gt;
&lt;br /&gt;
[[パーティショニング#スワップ|スワップパーティション]]は、ほとんどの GNU/Linux の[[パーティショニングツール]]で作成することができます。スワップパーティションは、GPT 上ではパーティションタイプ GUID {{ic|0657FD6D-A4AB-43C4-84E5-0933C84B4F4F}} が ([[gdisk]] では {{ic|8200}} タイプ、[[fdisk]] では {{ic|swap}} タイプ)、MBR 上ではタイプ ID {{ic|82}} が指定されています。&lt;br /&gt;
&lt;br /&gt;
Linux のスワップ領域をセットアップする時には、{{man|8|mkswap}} コマンドが使われます。例えば:&lt;br /&gt;
&lt;br /&gt;
 # mkswap /dev/sd&#039;&#039;xy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|指定したパーティションに保存されている全てのデータが消失します。}}&lt;br /&gt;
&lt;br /&gt;
デバイスのページングを有効にするには:&lt;br /&gt;
&lt;br /&gt;
 # swapon /dev/sd&#039;&#039;xy&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
オプションについては {{man|8|swapon}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 起動時に有効化する ===&lt;br /&gt;
&lt;br /&gt;
スワップパーティションをブート時に有効化するには:&lt;br /&gt;
&lt;br /&gt;
* [[systemd#GPT パーティションの自動マウント]]を使う&lt;br /&gt;
* あるいは、{{ic|/etc/fstab}} にエントリを追加する。例: {{bc|1=UUID=&#039;&#039;device_UUID&#039;&#039; none swap defaults 0 0}}&lt;br /&gt;
&lt;br /&gt;
:{{ic|&#039;&#039;device_UUID&#039;&#039;}} はスワップ領域の [[UUID]] です。&lt;br /&gt;
&lt;br /&gt;
{{ic|fstab}} ファイルの構文については [[fstab]] を見てください。また、[[systemd#systemd.mount - マウント]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== スワップの無効化 ===&lt;br /&gt;
&lt;br /&gt;
特定のスワップ領域を無効にするには:&lt;br /&gt;
&lt;br /&gt;
 # swapoff /dev/sda2&lt;br /&gt;
&lt;br /&gt;
もしくは {{ic|-a}} スイッチを使って全てのスワップ領域を無効化することもできます。&lt;br /&gt;
&lt;br /&gt;
スワップは systemd によって管理されているため、次の起動時にスワップが自動的に有効化されてしまいます。検出されたスワップ領域を自動的に有効化する機能を恒久的に無効にするには、{{ic|systemctl --type swap}} を実行して問題の &#039;&#039;.swap&#039;&#039; ユニットを確認して[[マスク]]してください。&lt;br /&gt;
&lt;br /&gt;
== スワップファイル ==&lt;br /&gt;
&lt;br /&gt;
パーティションを作るかわりに、臨機応変にサイズを変えたり簡単に削除できるものとしてスワップファイルが選択肢になりえます。特にディスク容量が貴重な場合 (例: 小容量の SSD) はこちらが理想的でしょう。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! ファイルシステム&lt;br /&gt;
! スワップファイルのサポート&lt;br /&gt;
|-&lt;br /&gt;
| [[Bcachefs]]&lt;br /&gt;
| {{No|https://github.com/koverstreet/bcachefs/issues/368}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Btrfs]]&lt;br /&gt;
| {{G|[[Btrfs#Swap file|Yes]]}}&lt;br /&gt;
|-&lt;br /&gt;
| [[F2FS]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| [[ext4]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| [[JFS]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:NILFS|NILFS2]]&lt;br /&gt;
| {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| [[NTFS3]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:ReiserFS|ReiserFS]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| [[XFS]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| [[ZFS]]&lt;br /&gt;
| {{No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== スワップファイルの作成 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Btrfs]] については、以下の手順ではなく [[Btrfs#スワップファイル]] で説明されている手順に従ってください。}}&lt;br /&gt;
&lt;br /&gt;
{{man|8|mkswap}} を使用して、所望のサイズのスワップファイルを作成します (ヒントは [[パーティショニング#スワップ]] を参照してください)。たとえば、4 GiB のスワップファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
 # mkswap -U clear --size 4G --file /swapfile&lt;br /&gt;
&lt;br /&gt;
スワップファイルを有効化してください:&lt;br /&gt;
&lt;br /&gt;
 # swapon /swapfile&lt;br /&gt;
&lt;br /&gt;
最後に、fstab 設定を編集してスワップファイルのエントリを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|&lt;br /&gt;
/swapfile none swap defaults 0 0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
fstab にエントリを追加する以外に、スワップユニットを作成する方法もあります ({{man|5|systemd.swap}} を参照):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/swapfile.swap|2=&lt;br /&gt;
[Swap]&lt;br /&gt;
What=/swapfile&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=swap.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
作成後は [[daemon-reload]] を実行し、{{ic|swapfile.swap}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
追加の情報については [[fstab#使用法]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|スワップファイルは、UUID や ラベルではなくファイルシステム上の位置により指定されなければなりません。}}&lt;br /&gt;
&lt;br /&gt;
==== スワップファイルの削除 ====&lt;br /&gt;
&lt;br /&gt;
スワップファイルを削除するには、まずスワップファイルを無効にしなければなりません。その後、スワップファイルを削除できます:&lt;br /&gt;
&lt;br /&gt;
 # swapoff /swapfile&lt;br /&gt;
 # rm -f /swapfile&lt;br /&gt;
&lt;br /&gt;
最後に {{ic|/etc/fstab}} から該当するエントリを削除してください。&lt;br /&gt;
&lt;br /&gt;
== スワップの暗号化 ==&lt;br /&gt;
&lt;br /&gt;
[[dm-crypt/スワップの暗号化]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== パフォーマンス ==&lt;br /&gt;
&lt;br /&gt;
通常、スワップに対する操作は RAM 上のデータに対する直接アクセスよりも断然遅くなります。しかし、パフォーマンスを向上させようとしてスワップを全体的に無効化するとパフォーマンスの劣化を招くことがあります。データを保持しておくのに十分な物理メモリが無い場合、スワップアウトできないとファイルシステムキャッシュのためのメモリが足りなくなってしまいます。その結果、ディスクへのアクセスが増加し、負荷が増加します。&lt;br /&gt;
&lt;br /&gt;
スワップ値を変えることでパフォーマンスを向上できるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== Swappiness ===&lt;br /&gt;
&lt;br /&gt;
メモリ使用量が特定の閾値に達すると、カーネルはアクティブなメモリを調べ、何を解放できるかを確認し始めます。ファイルデータは (変更されている場合) ファイルシステムに書き出して、アンロードし、後で再ロードすることができます。他のデータは、アンロードする前にスワップに書き込まなければなりません。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Swappiness&#039;&#039; [[sysctl]] パラメータは、カーネルが書き込み先としてファイルよりもスワップを優先する度合いを表します。Swappiness は 0 から 200 の間の値にすることができます (Linux &amp;lt; 5.8 では 100 が最大)。デフォルトの値は 60 です。小さい値にすると、カーネルは開いているファイルの解放を優先し、大きい値にすると、カーネルはスワップ領域を使おうとします。100 にすると、IO コストが等しいとみなされます。&lt;br /&gt;
&lt;br /&gt;
{{Note|Swappiness がメモリの閾値に影響を与えたり、スワップ領域を使用させなくしたりするとよく誤解されます。しかし、この値は、スワップとファイルページのどちらを優先して解放するかだけに影響を与えます。より詳細な説明は[https://www.howtogeek.com/449691/what-is-swapiness-on-linux-and-how-to-change-it/ この記事]を、あるいはこの値が使われている[https://github.com/torvalds/linux/blob/v6.2/mm/vmscan.c#L3000-L3014 カーネルのソースコード]を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
現在の swappiness 値をチェックするには:&lt;br /&gt;
&lt;br /&gt;
 $ sysctl vm.swappiness&lt;br /&gt;
&lt;br /&gt;
代わりに {{ic|/proc/sys/vm/swappiness}} ファイルを読むことで生の整数値を得ることができます。&lt;br /&gt;
&lt;br /&gt;
swappiness 値を一時的にセットするには:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -w vm.swappiness=35&lt;br /&gt;
&lt;br /&gt;
swappiness 値を永続的にセットするには、{{man|5|sysctl.d}} 設定ファイルを作成します。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/99-swappiness.conf|2=&lt;br /&gt;
vm.swappiness = 35&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[ブートローダー]]を使ってカーネルのロード時に swappiness を設定するには、[[カーネルパラメータ]]を追加してください。例えば: {{ic|1=sysctl.vm.swappiness=35}}。&lt;br /&gt;
&lt;br /&gt;
他の swappiness 値を選択する理由としては以下があります:&lt;br /&gt;
&lt;br /&gt;
* デスクトップの応答性のために swappiness を下げることが[https://rudd-o.com/en/linux-and-free-software/tales-from-responsivenessland-why-linux-feels-slow-and-how-to-fix-that 提案されている]から。この主張の言わんとしていることは、知覚されるパフォーマンス (応答性) はプログラムがユーザーの入力にいかに速く応答するかによるため、anonymous ページ (プログラムのメモリ) は RAM 内に留めておくべきであり、&#039;&#039;実際の&#039;&#039;パフォーマンスを多少犠牲にしてでも開いたファイルの解放を優先させるべきというものです。&lt;br /&gt;
** [https://chrisdown.name/2018/01/02/in-defence-of-swap.html 妥当な swappiness の最小値]は 1 です。Swappiness を 0 にすると、anonymous ページのエビクションに対して極端なバイアスが掛かり、メモリ争奪の極端な状況を除いて anonymous ページを reclaim やスワップするためにスキャンできなくなります。全く使用されていない anonymous ページを reclaim しないことは一般に望ましくありません。&lt;br /&gt;
* 100 以上の高い swappiness に設定することは、スワップする IO コストがファイルからの読み出しコストと同じかより小さい場合に (定義上) 望ましいから。このような状況は[https://lists.ubuntu.com/archives/lubuntu-users/2013-October/005831.html スワップがディスクをバッキングデバイスとして使用していない]場合 (特に [[zram]] を使用している場合) に起こり得ます。また、スワップ IO が [[zswap]] などの低コストなメカニズムによってインターセプト/キャッシュされる場合にも起こり得ます。&lt;br /&gt;
&lt;br /&gt;
=== VFS cache pressure ===&lt;br /&gt;
&lt;br /&gt;
スワップのパフォーマンスに影響を与えるもう1つの &#039;&#039;sysctl&#039;&#039; パラメーターは {{ic|vm.vfs_cache_pressure}} です。このパラメータは、ページキャッシュとスワップと比較して、VFS キャッシュのキャッシングのために使用されているメモリをカーネルが reclaim する優先度を制御します。この値を増やすと、VFS キャッシュが reclaim される割合が上がります。このパラメータの詳細は [https://docs.kernel.org/admin-guide/sysctl/vm.html Linux カーネルのドキュメント]を参照してください。&lt;br /&gt;
&lt;br /&gt;
デフォルトの値は 100 です。この場合、ファイルシステムのキャッシュは他のキャッシュと同じくらい重要ということになり、両方のキャッシュは同じ重みで reclaim されます。デスクトップでは、ファイルシステムのブラウジング時間は操作のレイテンシ (知覚される応答性) に影響を与えるから[https://rudd-o.com/en/linux-and-free-software/tales-from-responsivenessland-why-linux-feels-slow-and-how-to-fix-that ファイルシステムのキャッシュは他のキャッシュよりも重要である]ため、VFS cache pressure は 50 に設定するべきと主張されています。一方、VFS キャッシュに二度とアクセスされない多くの小さなファイルのメタデータが保持されている場合、より大きな値に設定することが[https://docs.gluster.org/en/main/Administrator-Guide/Linux-Kernel-Tuning/#vmvfs_cache_pressure 提案されています]。このパラメータのチューニングに関する詳細は [https://web.archive.org/web/20171004100853/http://doc.opensuse.org/documentation/leap/tuning/html/book.sle.tuning/cha.tuning.memory.html#cha.tuning.memory.vm.reclaim OpenSUSE のチューニングガイド]を参照してください (このガイドでは、キャッシュのタイプを {{ic|slaptop}} でチェックし実験することが推奨されています)。&lt;br /&gt;
&lt;br /&gt;
=== 優先度 ===&lt;br /&gt;
&lt;br /&gt;
複数のスワップファイルやスワップパーティションを使っている場合、priority 値 (0 から 32767) をそれぞれのスワップ領域に割り当てることを考えて下さい。システムは優先度が低いスワップ領域を使う前に高い優先度が付けられたスワップ領域を使います。例えば、もしあなたが高速なディスクと低速なディスクを持っている場合、高速なデバイス上のスワップ領域に高い優先度をあててください。priority は [[fstab]] で {{ic|pri}} パラメータを使って設定できます:&lt;br /&gt;
&lt;br /&gt;
 UUID=f9fe0b69-a280-415d-a03a-a32752370dee none swap defaults,pri=100 0 0&lt;br /&gt;
 UUID=d7eb6062-01c8-4367-ac1d-3bf1167de8bb none swap defaults,pri=10  0 0&lt;br /&gt;
&lt;br /&gt;
もしくは &#039;&#039;swapon&#039;&#039; の {{Ic|--priority}} パラメータを使います:&lt;br /&gt;
&lt;br /&gt;
 # swapon --priority 100 /dev/sda1&lt;br /&gt;
&lt;br /&gt;
もし2つ以上の領域が同じ priority を持ち、それが一番高い priority の場合、その領域間ではラウンドロビン方式でページが配分されます。&lt;br /&gt;
&lt;br /&gt;
=== ストライピング ===&lt;br /&gt;
&lt;br /&gt;
スワップの性能を上げるために [[RAID]] を使う必要はありません。{{ic|/etc/fstab}} ファイルでスワップの優先度が同じに設定されている場合、複数のデバイスにスワップをストライプ処理するのはカーネルだけで行うことができます。詳しくは [http://unthought.net/Software-RAID.HOWTO/Software-RAID.HOWTO-2.html#ss2.3 The Software-RAID HOWTO] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Discard (トリム) ===&lt;br /&gt;
&lt;br /&gt;
[[ソリッドステートドライブ#スワップ]] を参照。&lt;br /&gt;
&lt;br /&gt;
=== RAM 内の圧縮ブロックデバイス ===&lt;br /&gt;
&lt;br /&gt;
[[パフォーマンスの向上#zram や zswap でのスワップ]] を参照。&lt;br /&gt;
&lt;br /&gt;
=== スワップ領域をハイバーネート専用に使う ===&lt;br /&gt;
&lt;br /&gt;
スワップをハイバネートイメージストレージ領域としてしか使わない場合、[[zswap]] を使い、そのライトバックを無効化することで、通常のスワップ仕様ではディスク書き込みが起こらないようにすることができます。[[電源管理/サスペンドとハイバネート#Zswap のライトバックを無効化し、スワップ領域をハイバネートのみに使用する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://chrisdown.name/2018/01/02/in-defence-of-swap.html In defence of swap: common misconceptions] (日本語訳: [https://chrisdown.name/ja/2018/01/02/in-defence-of-swap.html スワップの弁護：よくある誤解を解く])&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Swap|2025-07-07|839579}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%AE%E5%90%91%E4%B8%8A&amp;diff=40526</id>
		<title>パフォーマンスの向上</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%AE%E5%90%91%E4%B8%8A&amp;diff=40526"/>
		<updated>2025-07-07T09:44:20Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ハードウェア]]&lt;br /&gt;
[[Category:システム管理]]&lt;br /&gt;
[[en:Improving performance]]&lt;br /&gt;
[[es:Improving performance]]&lt;br /&gt;
[[fr:Improving performance]]&lt;br /&gt;
[[pl:Improving performance]]&lt;br /&gt;
[[pt:Improving performance]]&lt;br /&gt;
[[ru:Improving performance]]&lt;br /&gt;
[[zh-hans:Improving performance]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|パフォーマンスの向上/ブートプロセス}}&lt;br /&gt;
{{Related|Pacman ヒント#パフォーマンス}}&lt;br /&gt;
{{Related|OpenSSH#SSH の高速化}}&lt;br /&gt;
{{Related|OpenOffice#OpenOffice の高速化}}&lt;br /&gt;
{{Related|ノートパソコン}}&lt;br /&gt;
{{Related|Preload}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
この記事では、知覚または計測できるシステムパフォーマンスの向上を最終目的として、パフォーマンスに関連する基本的なシステム診断、及び、リソース消費量の削減やシステム最適化のための手順に関する情報を提供しています。ゲーミングおよび低レイテンシに特有のその他のアドバイスは [[ゲーム#パフォーマンスを向上させる]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== 基本 ==&lt;br /&gt;
&lt;br /&gt;
=== システムを知る ===&lt;br /&gt;
&lt;br /&gt;
システムをチューンするには、全体のスピードを下げているボトルネックやサブシステムに狙いを定めるがベストな方法です。システムの仕様を知ることは、それらを特定することに役立ちます。&lt;br /&gt;
&lt;br /&gt;
* (LibreOffice や Firefox などの) 巨大なアプリケーションを同時に動作させたときにコンピュータが遅くなる場合、RAM の容量が十分であるか確認してください。以下のコマンドを使って、&amp;quot;available&amp;quot; 列の値を確認してください: {{bc|$ free -h}}&lt;br /&gt;
* 起動時間が長い場合、または、アプリケーションを初めて起動するとき (だけ) にロードに長い時間が掛かる場合、おそらくハードドライブが遅過ぎます。ハードドライブの速度を計測するには {{ic|hdparm}} コマンドを使うことができます: {{bc|# hdparm -t /dev/sd&#039;&#039;X&#039;&#039;}} {{Note|{{Pkg|hdparm}} で出力されるのはハードドライブの純粋な読み込み速度なので、有効なベンチマークとは言えませんが、平均的なコンピュータでは (アイドル状態のときに) 40MB/s より高い数値が出るのが妥当です。}}&lt;br /&gt;
* 十分な RAM が利用できる時でも CPU 負荷が一貫して高い場合、不要な[[デーモン]]やプロセスを無効化するなどして CPU 使用量を減らすことを試みてください。{{Pkg|htop}} や {{ic|pstree}} などの[[アプリケーション一覧/ユーティリティ#システム監視|システム監視ツール]]で CPU 負担をモニタすることができます: {{bc|$ htop}}&lt;br /&gt;
* ダイレクトレンダリングを使うアプリケーション (つまり、ビデオプレイヤ、ゲーム、[[ウィンドウマネージャ]]などの GPU を使うアプリケーション) が遅い場合、GPU パフォーマンスを向上させることで解決するはずです。まず初めにダイレクトレンダリングが有効になっているかどうか確認しましょう。{{ic|glxinfo}} コマンドを使うことで確認できます ({{Pkg|mesa-utils}} パッケージに含まれています)。次のコマンドを実行すると {{ic|direct rendering: Yes}} と表示される必要があります: {{bc|$ glxinfo {{!}} grep &amp;quot;direct rendering&amp;quot;}}&lt;br /&gt;
* [[デスクトップ環境]]を動かしている場合、(不要な) 視覚デスクトップ効果を無効化することで GPU 使用率を削減できる場合があります。現在使用しているものがハードウェアや個人の要件に合わない場合、より軽量な環境を使用するか、[[デスクトップ環境#カスタム環境|カスタムの環境]]を作成しましょう。&lt;br /&gt;
* 最適化された[[カーネル]]を使用することでパフォーマンスを向上できます。一般に {{Pkg|linux-zen}} が良い選択肢です。しかし、この記事の特定の部分で説明されているように、デフォルトのカーネルを調節することで良いパフォーマンスを得られます。&lt;br /&gt;
&lt;br /&gt;
=== ベンチマーク ===&lt;br /&gt;
&lt;br /&gt;
最適化の効果を判断できないことがたびたびあります。そういった場合は[[ベンチマーク]]ツールで計測することができます。&lt;br /&gt;
&lt;br /&gt;
== ストレージデバイス ==&lt;br /&gt;
&lt;br /&gt;
==== セクタサイズ ====&lt;br /&gt;
&lt;br /&gt;
NVMe ドライブや Advanced Format ハードディスクが[[アドバンスドフォーマット|適切な論理セクタサイズ]]を使用していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== パーティショニング ===&lt;br /&gt;
&lt;br /&gt;
パーティションが[[パーティショニング#パーティションアライメント|適切にアライメントされている]]ことを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== 複数のドライブ ====&lt;br /&gt;
&lt;br /&gt;
複数のドライブを持っているのであれば、ソフトウェア [[RAID]] を組んでパフォーマンスを劇的に向上させることができます。&lt;br /&gt;
&lt;br /&gt;
[[スワップ]]を別のディスク上に作成することでもパフォーマンスを多少向上させることができます。特に、スワップが頻繁に発生する場合です。&lt;br /&gt;
&lt;br /&gt;
===== SSD を HDD のキャッシュとして使う =====&lt;br /&gt;
&lt;br /&gt;
ハードディスクから移行することができない場合、ソリッドステートドライブをキャッシュレイヤとして使うことで読み書き速度を向上させ、ランダムアクセスによるパフォーマンスの低下を減らすことができます。方法としては、[[LVM#キャッシュ]]、[[Bcache]]、[[Bcachefs#SSD キャッシング]] があります。&lt;br /&gt;
&lt;br /&gt;
==== HDD でのレイアウト ====&lt;br /&gt;
&lt;br /&gt;
従来の回転式 HDD を使用している場合、パーティションのレイアウトがシステムのパフォーマンスに影響を与える可能性があります。ドライブの最初のセクター（ディスクの外周の近く）は最後のセクターよりも高速です。また、パーティションを小さくすれば必要なドライブヘッドの移動が少なくなり、ディスク操作をスピードアップできます。従って、システムのために作るパーティションは小さく (15~20GiB、必要に応じて調節) して、できるだけドライブの最初に配置することが推奨されます。他のデータ（画像・動画など）は別のパーティションに置くべきです。通常、システム ({{ic|/}}) から home ディレクトリ ({{ic|/home}}) を分割することでこれを達成できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|このページのすべてのアドバイスにおいて言えることですが、得られる利益を計測してください: ハードドライブを[https://blog.stuffedcow.net/2019/09/hard-disk-geometry-microbenchmarking/#shortstroke ショートストローク]したり、合計容量の数％しか使わないようにしたりしない限り、一般的な使用においては読み書き操作が依然としてドライブ全体に及ぶため、パーティションを分割してもほんの数%しかアクセス時間は改善されません。それと比べて、SSD にアップグレードするとパフォーマンスが1桁以上向上します。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステムの選択とチューニング ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムごとに強みが異なるのでシステムごとにファイルシステムを選ぶことはとても重要です。[[ファイルシステム]]の記事に人気のあるファイルシステムの簡単な説明がされています。[[:カテゴリ:ファイルシステム]]から関連記事も見ることができます。&lt;br /&gt;
&lt;br /&gt;
==== マウントオプション ====&lt;br /&gt;
&lt;br /&gt;
様々な [[fstab#atime オプション|*atime]] オプションが、{{ic|strictatime}} のパフォーマンスのペナルティを軽減することができます。&lt;br /&gt;
&lt;br /&gt;
他のマウントオプションはファイルシステム固有なので、ファイルシステムの関連記事を参照してください:&lt;br /&gt;
&lt;br /&gt;
* [[Ext3]]&lt;br /&gt;
* [[Ext4#パフォーマンスの向上]]&lt;br /&gt;
* [[JFS#最適化]]&lt;br /&gt;
* [[XFS#パフォーマンス]]&lt;br /&gt;
* [[Btrfs#デフラグメンテーション]]、[[Btrfs#圧縮]]、{{man|5|btrfs}}&lt;br /&gt;
* [[ZFS#チューニング]]&lt;br /&gt;
* [[NTFS#パフォーマンスの向上]]&lt;br /&gt;
&lt;br /&gt;
===カーネルパラメータの調整===&lt;br /&gt;
&lt;br /&gt;
ブロックデバイスのパフォーマンスに影響するキーが複数存在します、詳しくは [[sysctl#仮想メモリ]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== I/O スケジューラの設定 ===&lt;br /&gt;
&lt;br /&gt;
==== 背景情報 ====&lt;br /&gt;
&lt;br /&gt;
入出力 &#039;&#039;(I/O)&#039;&#039; スケジューラはストレージデバイスにブロック I/O の操作を送信するときの順番を決めるカーネルコンポーネントです。I/O スケジューラの目的は読み込みリクエストを最適な方法で扱うことであるため、以下の2つのドライブの特徴を押さえておくことが重要です:&lt;br /&gt;
&lt;br /&gt;
* HDD は回転ディスクでありヘッドが物理的に必要な場所に移動します。そのため、ランダムアクセスは 3〜12ms と非常に遅くなります (ハイエンドサーバーのドライブなのかノートパソコンのドライブなのか、あるいはディスクコントローラの書き込みバッファを迂回するかなどで速度は変わります)。逆に連続アクセスなら高いスループットを得ることが可能です。連続アクセスならヘッドはほとんど動かなくてよいためです。典型的な HDD は毎秒200回ほどの I/O リクエストを処理することができます &#039;&#039;(IOPS)&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
* SSD には物理的に移動する部品がありません。ランダムアクセスはシーケンシャルアクセスと同じ速度が出ます (0.1ms 未満)。SSD は複数のリクエストを一度にこなすこともできます。典型的な SSD のスループットは 10,000 IOPS を超えるため、大抵の場合は必要な仕事量を上回ります。&lt;br /&gt;
&lt;br /&gt;
プロセスを大量に実行してストレージの様々な場所の I/O リクエストを発生させているとき (つまりランダムアクセスをしている状態)、数千の IOPS が生成されますが、普通の HDD では 200 IOPS までしか対応できません。ストレージにアクセスできるまで待機するリクエストの待ち行列が作られることになります。I/O スケジューラはこの待ち行列を最適化します。&lt;br /&gt;
&lt;br /&gt;
==== スケジューリングアルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
スループットを改善する方法の一つとして、待機リクエストの順番を論理アドレスで並び替えてできるだけ一番近いリクエストを通すことで、アクセスをリニア化する方法があります。これが [[w:ja:エレベータアルゴリズム|elevator]] スケジューラと呼ばれる Linux の最初の I/O スケジューラでした。&lt;br /&gt;
&lt;br /&gt;
エレベータアルゴリズムの問題点はシーケンシャルアクセスをするプロセスが上手く動かなくなることです。そのようなプロセスは、データブロックを読み取って数マイクロ秒で処理してから次のブロックを読み出します。エレベータスケジューラはプロセスが近くのブロックを呼びだそうとしていることを知らないため、他の場所のリクエストに移ってしまいます。[[w:Anticipatory_scheduling|anticipatory]] IO スケジューラはこの問題を解決します。このスケジューラは、他のリクエストを処理する前に、近くで別の読み取り操作が発生することを予測して、数ミリ秒待機します。&lt;br /&gt;
&lt;br /&gt;
上述のスケジューラはどちらも全体のスループットを改善することを目指していましたが、それによって不幸にも長い間待たされてしまうリクエストも発生していました。例えば、プロセスの多くがストレージ領域の最初の部分をリクエストしていて、不幸なプロセスはストレージの末端付近をリクエストしているような状況を考えて下さい。そのため、開発者は公平なアルゴリズムを作成することを決めて [[w:Deadline_scheduler|deadline]] スケジューラが追加されました。deadline スケジューラはアドレスによってキューの順番を決めますが (エレベーターアルゴリズムと同じ)、一定期間、リクエストがキューの中で待機した場合、リクエストを (経過時間によって順番が付けられる) &amp;quot;expired&amp;quot; キューに移動します。スケジューラは先に expired キューをチェックして、リクエストを処理してからエレベーターキューに移動します。このアルゴリズムは公平性のために全体のスループットを犠牲にしているわけです。&lt;br /&gt;
&lt;br /&gt;
[[w:CFQ|Completely Fair Queuing (CFQ)]] は別のアプローチで問題に取り組みました。CFQ はプロセスの優先度に基づくキューを使ってタイムスライスと許容するリクエストの数を割り当てます。さらに [[cgroups]] のサポートを追加することで特定のプロセスグループに一定の IO を予約できるようにしました。これは共有・クラウドサーバーで特に役立ちます。ユーザーはリソースが必要なときに料金を払って IOPS を得られるのです。また、同期 I/O で近くの操作を待機するという &#039;&#039;anticipatory&#039;&#039; スケジューラの機能を改良して取り入れています。&#039;&#039;anticipatory&#039;&#039; と &#039;&#039;elevator&#039;&#039; スケジューラは Linux カーネルから外され、下記のより高度な代替スケジューラに置き換えられました。&lt;br /&gt;
&lt;br /&gt;
[https://docs.kernel.org/block/bfq-iosched.html Budget Fair Queuing (BFQ)] は CFQ のコードをベースにいくつか改善を加えています。各プロセスに固定長のタイムスライスを与えるかわりに、プロセスのセクタ数から計算した &amp;quot;budget&amp;quot; を割り当ててヒューリスティックを用います。BFQ は想定的に複雑なスケジューラであるため、オーバーヘッドが大きく、回転ドライブや低速 SSD に適しています。特に遅い CPU と組み合わせたときに高速なデバイスの足を引っ張ってしまうような場合に有用です。BFQ は個人用のシステムでインタラクティブな作業を行うときに、ストレージデバイスがまるで待機状態のときのように素早く反応することを目標としています。デフォルト設定ではスループットの最大化よりもレイテンシの最小化が優先されているのが特徴です。これにより、ハードドライブにおいて[https://www.phoronix.com/review/linux-50hdd-io/2 アプリケーションの起動を劇的に加速化]させられる場合があります。&lt;br /&gt;
&lt;br /&gt;
[https://lwn.net/Articles/720675/ Kyber] はネットワークルーティングで用いられている積極的なキュー管理テクニックから生まれた新しいスケジューラです。リクエストを制限するメカニズムとして「トークン」を基に実装されています。 リクエストの割当を受けるにはキューイングトークンを必要とすることで、リクエストのスタベーションを防ぎます。ディスパッチトークンによってデバイスの特定の優先度の操作に制限されます。さらに、ターゲットの読み込みレイテンシを定義して、レイテンシ目標を達成するためにスケジューラ自身がチューニングを行います。アルゴリズムの実装は比較的シンプルなので高速なデバイスでも効率的に機能します。&lt;br /&gt;
&lt;br /&gt;
==== カーネルの I/O スケジューラ ====&lt;br /&gt;
&lt;br /&gt;
初期のアルゴリズムには既にメインラインから外されているものもあります。公式の Linux カーネルはいくつかの I/O スケジューラをサポートしています。[https://www.thomas-krenn.com/en/wiki/Linux_Multi-Queue_Block_IO_Queueing_Mechanism_(blk-mq) Multi-Queue Block I/O Queuing Mechanism (blk-mq)] は I/O クエリを複数のキューに割り当てて、複数のスレッドおよび CPU コアにタスクを分散させます。このフレームワークでは以下のスケジューラが使えます:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;None&#039;&#039;、キューイングアルゴリズムは適用されません。&lt;br /&gt;
*&#039;&#039;mq-deadline&#039;&#039; は deadline スケジューラ (下記を参照) をマルチスレッドに対応させたスケジューラです。&lt;br /&gt;
*&#039;&#039;Kyber&#039;&#039;&lt;br /&gt;
*&#039;&#039;BFQ&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== I/O スケジューラの変更 ====&lt;br /&gt;
&lt;br /&gt;
{{Note|スケジューラーの最適な選択は、デバイスとワークロードの正確な性質の両方によって異なります。 また、MB/秒単位のスループットだけがパフォーマンスの指標ではありません。デッドラインや公平性は全体的なスループットを低下させますが、システムの応答性を向上させる可能性があります。 [[ベンチマーク]] は、各 I/O スケジューラのパフォーマンスを示すのに役立つ場合があります。}}&lt;br /&gt;
&lt;br /&gt;
特定のデバイスで利用可能なスケジューラとアクティブなスケジューラを表示するには (アクティブなスケジューラは角括弧の中):&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /sys/block/&#039;&#039;&#039;&#039;&#039;sda&#039;&#039;&#039;&#039;&#039;/queue/scheduler|&lt;br /&gt;
mq-deadline kyber [bfq] none&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
全デバイスで利用可能なスケジューラを表示するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ grep &amp;quot;&amp;quot; /sys/block/&#039;&#039;&#039;*&#039;&#039;&#039;/queue/scheduler|&lt;br /&gt;
/sys/block/pktcdvd0/queue/scheduler:none&lt;br /&gt;
/sys/block/sda/queue/scheduler:mq-deadline kyber [bfq] none&lt;br /&gt;
/sys/block/sr0/queue/scheduler:[mq-deadline] kyber bfq none&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デバイス &#039;&#039;sda&#039;&#039; のアクティブな I/O スケジューラを &#039;&#039;bfq&#039;&#039; に変更するには:&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;&#039;&#039;&#039;&#039;bfq&#039;&#039;&#039;&#039;&#039; &amp;gt; /sys/block/&#039;&#039;&#039;&#039;&#039;sda&#039;&#039;&#039;&#039;&#039;/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
I/O スケジューラの変更プロセスは、ディスクが回転式か否かに応じて自動化することができ、起動毎に永続化させることができます。例えば、以下の [[udev]] ルールは、回転ドライブに対しては &#039;&#039;bfq&#039;&#039; を、[[SSD]]/eMMC ドライブに対しては &#039;&#039;bfq&#039;&#039; を、[[NVMe]] に対しては &#039;&#039;none&#039;&#039; を設定します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/60-ioschedulers.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# HDD&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;sd[a-z]*&amp;quot;, ATTR{queue/rotational}==&amp;quot;1&amp;quot;, ATTR{queue/scheduler}=&amp;quot;bfq&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# SSD&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;sd[a-z]*|mmcblk[0-9]*&amp;quot;, ATTR{queue/rotational}==&amp;quot;0&amp;quot;, ATTR{queue/scheduler}=&amp;quot;bfq&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# NVMe SSD&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;nvme[0-9]*&amp;quot;, ATTR{queue/rotational}==&amp;quot;0&amp;quot;, ATTR{queue/scheduler}=&amp;quot;none&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
再起動するか、強制的に[[udev#新しいルールをロードする|新しいルールをロード]]してください。&lt;br /&gt;
&lt;br /&gt;
==== IO スケジューラの調整 ====&lt;br /&gt;
&lt;br /&gt;
カーネルの I/O スケジューラには遅延・期限時間や FIFO パラメータなどそれぞれ設定項目が存在します。特定のデバイスとワークロードの組み合わせにあわせてアルゴリズムを調整することが可能です。スループットを高めたり遅延を少なくしたりするときに用います。&lt;br /&gt;
設定項目と説明は [https://docs.kernel.org/block/index.html カーネルドキュメント] で確認できます。&lt;br /&gt;
&lt;br /&gt;
特定のデバイスで設定可能なパラメータを確認するには (以下の例では &#039;&#039;sdb&#039;&#039; は &#039;&#039;deadline&#039;&#039; を使用しています):&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls /sys/block/&#039;&#039;&#039;&#039;&#039;sdb&#039;&#039;&#039;&#039;&#039;/queue/iosched|&lt;br /&gt;
fifo_batch  front_merges  read_expire  write_expire  writes_starved}}&lt;br /&gt;
&lt;br /&gt;
レイテンシを犠牲に &#039;&#039;deadline&#039;&#039; のスループットを高めるには以下のコマンドで {{ic|fifo_batch}} を増やします:&lt;br /&gt;
&lt;br /&gt;
{{bc|# echo &#039;&#039;32&#039;&#039; &amp;gt; /sys/block/&#039;&#039;&#039;&#039;&#039;sdb&#039;&#039;&#039;&#039;&#039;/queue/iosched/&#039;&#039;&#039;fifo_batch&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
=== 電源管理設定とライトキャッシュ ===&lt;br /&gt;
&lt;br /&gt;
従来の回転ディスク (HDD) を使用する場合は、省電力機能を完全に無効にするか下げるかし、書き込みキャッシュが有効になっているかどうかを確認すると良いかもしれません。&lt;br /&gt;
&lt;br /&gt;
[[Hdparm#電源管理の設定]] と [[Hdparm#ライトキャッシュ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
後で、起動時にこれらを適用する [[Hdparm#udev ルールによる永続的な設定|udev ルール]] を作成することができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[GNOME]] では、&amp;quot;ディスク&amp;quot; アプリケーションからこれらのパラメータのいくつかを設定でき、udev ルールは必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の機能はあなたのハードドライブではサポートされていないかもしれません。その場合、Hdparm が通知します。なので、この特定の機能の設定を無視してください。}}&lt;br /&gt;
&lt;br /&gt;
=== ディスクの読み書きを減らす ===&lt;br /&gt;
&lt;br /&gt;
遅いストレージデバイスへの不必要なアクセスを避けることはパフォーマンスを向上にとって良いことであり、デバイスの寿命を伸ばすことにも繋がります。ただし最近のハードウェアでは寿命への影響はわずかです。&lt;br /&gt;
&lt;br /&gt;
{{Note|書き込み増幅率が平凡な 10x で、書き込み/消去サイクルが標準的な 10000 である、32GB の SSD の場合、&#039;&#039;&#039;毎日 10GB のデータ書き込みを行うと&#039;&#039;&#039;、&#039;&#039;&#039;8年間で寿命が尽きる&#039;&#039;&#039;とされます。この数字はもっと[https://kcall.co.uk/ssd/ 容量が大きい SSD] を使ったり書き込み増幅が少ない最新のコントローラを使うことで改善されます。また、ディスクの書き込みを制限するのにどの方法が必要なのか考えるときは[https://web.archive.org/web/20161124030749/http://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead この耐久実験]も参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== ディスクの書き込みを表示する ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|iotop}} パッケージはプログラムをディスクの書き込み数でソートして、どれくらいの頻度でどれだけディスクに書き込んでいるか表示します。詳しくは {{man|8|iotop}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== ファイルを tmpfs に再配置する ====&lt;br /&gt;
&lt;br /&gt;
ブラウザプロファイルなどのファイルを [[tmpfs]] ファイルシステムに再配置してメモリ内に保存することで、アプリケーションのレスポンスを向上させることができます:&lt;br /&gt;
&lt;br /&gt;
* ブラウザプロファイルを同期させる方法については [[Profile-sync-daemon]] を参照してください。特定のブラウザには注意が必要な場合があります。例えば [[Firefox Ramdisk]] を参照してください。&lt;br /&gt;
* 任意の指定されたフォルダを同期させる方法については [[Anything-sync-daemon]] を参照してください。&lt;br /&gt;
* tmpfs 内でパッケージをビルドすることでコンパイル時間を減らす方法については [[Makepkg#ビルド時間を短縮する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ファイルシステム ====&lt;br /&gt;
&lt;br /&gt;
対応する[[ファイルシステム]]ページを参照して、パフォーマンス改善に関する指示があるか見てください。[[#ファイルシステムの選択とチューニング]] に挙げられているファイルシステムのリストも参照してください。&lt;br /&gt;
&lt;br /&gt;
==== スワップ領域 ====&lt;br /&gt;
&lt;br /&gt;
詳細は [[スワップ#パフォーマンス]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== ライトバックの間隔とバッファサイズ ====&lt;br /&gt;
&lt;br /&gt;
詳細は [[Sysctl#仮想メモリ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== コアダンプを無効化する ====&lt;br /&gt;
&lt;br /&gt;
[[コアダンプ#自動的なコアダンプの無効化]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ionice によるストレージ I/O スケジューリング ===&lt;br /&gt;
&lt;br /&gt;
バックアップなど多くのタスクにおいては、そのタスクを実行するために、ストレージ I/O の遅延が短かったり、ストレージ I/O の帯域が大きかったりする必要はありません。そのようなタスクはバックグラウンドタスクに分類することができます。一方、デスクトップにおいて高速な I/O は UI の応答性を高める上で必須です。ゆえに、他のタスクがストレージ I/O を必要としている間は、バックグラウンドタスクによって利用できるストレージ帯域幅を減らすことが有益です。これは、プロセスごとに異なる優先度を設定できる Linux I/O スケジューラ BFQ を使用することで実現できます。&lt;br /&gt;
&lt;br /&gt;
以下のようにバックグラウンドプロセスを実行することで、プロセスの I/O 優先度 &amp;quot;Idle&amp;quot; レベルまで落とすことができます:&lt;br /&gt;
&lt;br /&gt;
 $ ionice -c 3 &#039;&#039;command&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳細は [https://www.cyberciti.biz/tips/linux-set-io-scheduling-class-priority.html a short introduction to ionice] や {{man|1|ionice}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== トリム ===&lt;br /&gt;
&lt;br /&gt;
最適なパフォーマンスを得るには、SSD の空きブロックを定期的に discard (トリム) してランダム書き込みの速度を最適化するべきです。詳細は [[ソリッドステートドライブ#TRIM]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ネットワーク ==&lt;br /&gt;
&lt;br /&gt;
* カーネルネットワーキング: [[Sysctl#パフォーマンスを向上させる]] を参照&lt;br /&gt;
* NIC: [[ネットワーク設定#MTU とキューの長さの設定]] を参照&lt;br /&gt;
* DNS: キャッシュ付きの DNS リゾルバの使用を検討してください。[[ドメイン名前解決#DNS サーバ]] を参照&lt;br /&gt;
* Samba: [[Samba#スループットを向上させる]] を参照&lt;br /&gt;
&lt;br /&gt;
== CPU ==&lt;br /&gt;
&lt;br /&gt;
=== オーバークロック ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:オーバークロック|オーバークロック]]は、CPU クロック周波数の上限を上げることにより、CPU の計算パフォーマンスを向上させます。オーバークロックできるかどうかは、CPU モデルとマザーボードモデルの組み合わせに依存します。オーバークロックは BIOS を介して行うのが最も一般的です。オーバークロックには欠点とリスクもあります。ここでは推奨も非推奨もしないでおきましょう。&lt;br /&gt;
&lt;br /&gt;
Intel 製のチップの多くは acpi_cpufreq などや他のほとんどのユーティリティに正しいクロック周波数を伝えません。この結果、[[dmesg]] は極端なメッセージを表示します (これは、{{ic|acpi_cpufreq}} カーネルモジュールをアンロードしてブラックリスト化することで回避可能です)。クロック速度を読むには、{{Pkg|i7z}} パッケージの &#039;&#039;i7z&#039;&#039; を使用してください。オーバークロックされた CPU が正しく動作していることを確認する方法として、[[ストレステスト]]が推奨されます。&lt;br /&gt;
&lt;br /&gt;
=== 周波数スケーリング ===&lt;br /&gt;
&lt;br /&gt;
[[CPU 周波数スケーリング]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== CPU スケジューラ ===&lt;br /&gt;
&lt;br /&gt;
メインライン Linux カーネルのデフォルトの CPU スケジューラは [https://lwn.net/Articles/925371/ EEVDF] です。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Brain_Fuck_Scheduler#MuQSS|MuQSS]]|Multiple Queue Skiplist Scheduler。[[Wikipedia:Con_Kolivas|Con Kolivas]] によって開発されている {{ic|-ck}} パッチセットにより利用可能。|[[非公式ユーザーリポジトリ/Repo-ck]]|{{AUR|linux-ck}}}}&lt;br /&gt;
* {{App|[https://cchalpha.blogspot.com/2020/05/project-c-announcement.html Project C]|BMQ を Project C にリファクタリングするためのクロスプロジェクト。Project C コードベースに基づいて PSD を再作成します。よって、これは2つのプロジェクトのマージであり、その後 PDS が Project C として更新されます。より最近の開発として推奨されます。|https://cchalpha.blogspot.com/|{{AUR|linux-prjc}}}}&lt;br /&gt;
* {{App|BORE|BORE スケジューラは、対話型タスクにおいてある程度の公平性を犠牲にして低レイテンシを実現することに焦点を当てています。CFS の上に構築されており、vruntime コード更新だけに調整されています。なので、他の非公式 CPU スケジューラと比較して、全体的な変更は非常に小さいです。|https://github.com/firelzrd/bore-scheduler|{{AUR|linux-cachyos-bore}}}}&lt;br /&gt;
* {{App|SCX|システムをリセットせずに様々な CPU スケジューラを動的にロードできるようにします。|https://github.com/sched-ext/scx|{{Pkg|scx-scheds}}}}&lt;br /&gt;
&lt;br /&gt;
=== リアルタイムカーネル ===&lt;br /&gt;
&lt;br /&gt;
(TV チューナーカードをフル HD 解像度 (1080p) で実行するなど) 一部の使用用途では、[[リアルタイムカーネル]]を使うと利益を得られる場合があります。&lt;br /&gt;
&lt;br /&gt;
=== プロセスの優先順位を設定 ===&lt;br /&gt;
&lt;br /&gt;
{{man|1|nice}} と {{man|1|renice}} も参照してください。&lt;br /&gt;
&lt;br /&gt;
==== Ananicy ====&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/ananicy-cpp/ananicy-cpp Ananicy CPP]  は動的に実行可能ファイルの nice レベルを調整するためのデーモンで、{{Pkg|ananicy-cpp}} や {{AUR|ananicy-cpp-git}} パッケージで利用可能です。nice レベルとは、CPU リソースを配分するときの実行可能ファイルの優先度を表すものです。&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=[[Gamemode]] と [https://gitlab.com/ananicy-cpp/ananicy-cpp Ananicy CPP] はどちらもプロセスの nice レベルを調整しようとします。これらのツールを組み合わせて使用することは推奨されていません。[https://github.com/CachyOS/ananicy-rules/blob/master/README.md#gamemode--ananicy-cpp--bad-idea]}}&lt;br /&gt;
&lt;br /&gt;
==== cgroups ====&lt;br /&gt;
&lt;br /&gt;
[[cgroups]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== LimitCPU ====&lt;br /&gt;
&lt;br /&gt;
[https://limitcpu.sourceforge.net/ LimitCPU] は特定のプロセスの CPU 使用率を制限するプログラムです。{{AUR|limitcpu}} をインストールすれば、プロセスの PID で CPU 使用率を 0 から 100 までの値にコンピュータに搭載されている CPU コア数をかけた数字の範囲で制限することができます。例えば、CPU コアが8個であれば利用可能な値は 0 から 800 です。使用例:&lt;br /&gt;
&lt;br /&gt;
 $ limitcpu -l 50 -p 5081&lt;br /&gt;
&lt;br /&gt;
=== irqbalance ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|irqbalance}} はマルチプロセッサシステムでパフォーマンスを向上させるためにプロセッサ間でハードウェア割り込みを分散させます。{{ic|irqbalance.service}} で[[systemd#ユニットを使う|操作]]することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== CPU の脆弱性の緩和策をオフにする ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=以下の設定を使うときは問題の脆弱性について確認してください。詳しくは [https://phoronix.com/scan.php?page=news_item&amp;amp;px=Linux-Improve-CPU-Spec-Switches こちら] や [https://linuxreviews.org/HOWTO_make_Linux_run_blazing_fast_(again)_on_Intel_CPUs こちら] のページを参照。}}&lt;br /&gt;
&lt;br /&gt;
CPU の脆弱性の緩和策をオフにすることで、パフォーマンスが向上する場合があります。以下の[[カーネルパラメータ]]ですべての緩和策が無効になります:&lt;br /&gt;
&lt;br /&gt;
 mitigations=off&lt;br /&gt;
&lt;br /&gt;
このパラメータによって切り替えられるすべてのスイッチについての説明は、[https://docs.kernel.org/admin-guide/kernel-parameters.html kernel.org] で見られます。{{AUR|spectre-meltdown-checker}} や {{man|1|lscpu}} ({{Pkg|util-linux}} に同梱) を使うことで、脆弱性チェックを行うことができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=第10世代およびそれ以降の Intel CPU、または AMD Ryzen シリーズ 1000 およびそれ以降の CPU を使用している場合、緩和策を無効化することにより得られるパフォーマンスの向上は、最大でも 5% にとどまります。一方、それ以前の世代の CPU では、最大 25% まで向上します。[https://www.phoronix.com/scan.php?page=article&amp;amp;item=3-years-specmelt 2021 初頭における総評]、[https://www.phoronix.com/scan.php?page=article&amp;amp;item=spectre-rocket-lake Rocket Lake におけるテスト]、[https://www.phoronix.com/scan.php?page=article&amp;amp;item=alder-lake-mitigations Alder Lake におけるテスト] を参照。}}&lt;br /&gt;
&lt;br /&gt;
== グラフィック ==&lt;br /&gt;
&lt;br /&gt;
=== Xorg の設定 ===&lt;br /&gt;
&lt;br /&gt;
グラフィックパフォーマンスは {{man|5|xorg.conf}} の設定に依存している場合があります。[[NVIDIA]]、[[AMDGPU]]、[[Intel]] の記事を参照してください。不適切な設定は Xorg が動作しなくなる原因になるため、注意しましょう。&lt;br /&gt;
&lt;br /&gt;
=== Mesa の設定 ===&lt;br /&gt;
&lt;br /&gt;
Mesa ドライバのパフォーマンスは [https://dri.freedesktop.org/wiki/ConfigurationInfrastructure/ drirc] で設定できます。{{Pkg|adriconf}} (Advanced DRI Configurator) はオプションを設定して標準の drirc ファイルに書き込むことで MESA ドライバを設定する GUI ツールです。&lt;br /&gt;
&lt;br /&gt;
=== ハードウェアビデオアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
[[ハードウェアビデオアクセラレーション]]により、ビデオカードに動画のデコード/エンコードをさせることができます。&lt;br /&gt;
&lt;br /&gt;
=== オーバークロック ===&lt;br /&gt;
&lt;br /&gt;
CPU と同様に、(GPU の) オーバークロックは直接的にパフォーマンスを向上できますが、一般には推奨されません。いくつかのパッケージがあります: {{AUR|rovclock}} (ATI カード)、{{Pkg|rocm-smi-lib}} (最近の AMD カード)、{{AUR|nvclock}} (古い NVIDIA カード - Geforce 9 まで)、{{Pkg|nvidia-utils}} (最近の NVIDIA カード)。&lt;br /&gt;
&lt;br /&gt;
[[AMDGPU#オーバークロック]] や [[NVIDIA/ヒントとテクニック#オーバークロックを有効化する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== PCIe resizable BAR を有効化する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 一部のシステムでは、PCIe resizable BAR を有効化するとパフォーマンスが大幅に劣化する可能性があります。システムのベンチマークを行って、PCI resizable BAR がパフォーマンスを向上させていることを確認してください。&lt;br /&gt;
* 効果を発揮させるには、[[Wikipedia:Unified Extensible Firmware Interface#CSM booting|Compatibility Support Module (CSM)]] を無効化しなければなりません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
PCI の仕様では、PCI デバイスのメモリを PCI コントローラに公開するために、より大きい[[wikipedia:PCI_configuration_space#Standardized_registers|基底アドレスレジスタ]] (BAR) を使用できます。そうすることで、ビデオカードのパフォーマンスを向上できる可能性があります。ビデオメモリ全体にアクセスすることでパフォーマンスを向上できますし、グラフィックドライバの最適化も可能になります。Resizable BAR、above 4G decoding、そしてドライバ最適化の組み合わせを、AMD は [https://www.amd.com/en/gaming/technologies/smart-technologies.html AMD Smart Access Memory] と呼んでおり、初期は AMD Series 500 チップセットマザーボードで利用できましたが、後に UEFI アップデートを通して AMD Series 400 と Intel Series 300 以降に拡張されました。この設定はすべてのマザーボードで利用できるわけではなく、特定のボードではブート問題を引き起こすことが知られています。&lt;br /&gt;
&lt;br /&gt;
BAR のサイズが 256M の場合、この機能は有効化されていないか、サポートされていません:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=# dmesg {{!}} grep BAR=|2=&lt;br /&gt;
[drm] Detected VRAM RAM=8176M, BAR=256M}}&lt;br /&gt;
&lt;br /&gt;
有効化するには、マザーボード設定で &amp;quot;Above 4G Decode&amp;quot; か &amp;quot;&amp;gt;4GB MMIO&amp;quot; という名前の設定を有効化してください。BAR が大きくなっていることを確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=# dmesg {{!}} grep BAR=|2=&lt;br /&gt;
[drm] Detected VRAM RAM=8176M, BAR=8192M}}&lt;br /&gt;
&lt;br /&gt;
== RAM、スワップ、OOM 処理 ==&lt;br /&gt;
&lt;br /&gt;
=== クロック周波数とタイミング ===&lt;br /&gt;
&lt;br /&gt;
RAM は BIOS で設定することで、クロック周波数とタイミングを別々にすることができます。メモリのパフォーマンスは両方の値によって変わります。BIOS に用意されている最高速のプリセットを選択することでデフォルト設定よりも性能を上げることができます。マザーボードやメモリのメーカーがサポートしていない周波数まで値を高めると、CPU のオーバークロックと同じようなリスクがあるので注意してください。[[#オーバークロック]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== RAM オーバーレイ上に root を置く ===&lt;br /&gt;
&lt;br /&gt;
{{Out of date|liveroot スクリプトはメンテナンスされていないようです。しかし、このアプローチは依然として機能するはずです。}}&lt;br /&gt;
&lt;br /&gt;
書き込みが遅いメディア (USB や 回転 HDD) を使う場合、(ディスク上の) 読み取り専用の root の上で RAM オーバーレイを作って root を動作させることができます。root に書き込みできる領域が制限されるかわりにパフォーマンスが劇的に改善します。{{AUR|liveroot}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== zram 内のスワップや zswap ===&lt;br /&gt;
&lt;br /&gt;
[[zswap]] や [[zram#スワップとしての使用|zram 内のスワップ]]を使うことで、似たような利点を (同じくらいのコストで) 得られます。これら2つは一般に意図が似ていますが、動作が異なります:&lt;br /&gt;
&lt;br /&gt;
* zswap は、圧縮された RAM キャッシュとして動作し、ユーザ空間の設定をあまり必要としません (と同時に許可もしていません)。スワップデバイスと組み合わせて、スワップのキャッシュとして動作します。スワップに入りそうなページは、代わりに zswap に入る可能性があります。&lt;br /&gt;
&lt;br /&gt;
* zram は、RAM 内に圧縮されたブロックデバイスを作成できるカーネルモジュールです。この圧縮されたブロックデバイスはスワップデバイスとして使用でき、他のスワップデバイスと組み合わせる必要はありません。多くの設定オプションがあり、例えばコールドページを保持しておくバッキングデバイスを使用するかどうかも指定できます。&lt;br /&gt;
&lt;br /&gt;
両方とも[[スワップ]]サブシステムを呼び出すため、スワップに影響を与える設定はこれらのシステムにも影響を与えます。例えば、[[スワップ#Swappiness|swappiness]] は、メモリが圧迫している状況で、カーネルがファイルキャッシュをドロップするか、ページをスワップに移動させるかのどちらを優先させるかを指定します。Zswap はページのスワップへの移動動作をインターセプトし、zram もスワップとして動作するため、このオプションはこれら2つのメカニズムがどれくらいの頻度で使用されるかにも影響を与えます。&lt;br /&gt;
&lt;br /&gt;
=== グラフィックカードの RAM を使う ===&lt;br /&gt;
&lt;br /&gt;
稀なケースとして、RAM 容量が非常に小さいが、ビデオ RAM に余りがある場合、後者をスワップとして使用できます。[[ビデオメモリにスワップ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== メモリ不足の状況におけるシステムのレスポンスを改善する ===&lt;br /&gt;
&lt;br /&gt;
従来の GNU/Linux システム (特にグラフィカルワークステーション) では、割り当てられたメモリがオーバーコミットすると、カーネル内の out-of-memory (OOM) killer がトリガーされるか、十分な量のメモリが開放される (システムが応答しない場合、メモリを大量消費するアプリケーションを閉じることは難しいため、これはすぐには起こり得ないでしょう) まで、システム全体のレスポンスがほぼ使用不能な状態まで低下します。挙動は特定の環境や条件に依存しており、通常のレスポンス状態に戻るまでには数秒から30分以上かかる場合があります。会議でのプレゼンテーションなどのような重要な状況においては、待つのが苦痛になるでしょう。&lt;br /&gt;
&lt;br /&gt;
[https://lore.kernel.org/lkml/d9802b6a-949b-b327-c4a6-3dbca485ec20@gmx.com/T/ カーネル]と[https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/XUZLHJ5O32OX24LG44R7UZ2TMN6NY47N/ Fedora] のメーリングリストで議論されている通り、メモリ不足の状況におけるカーネルとユーザ空間の挙動は将来的に改善されるかもしれませんが、ユーザは、システムのハードリセットや {{ic|vm.overcommit_*}} [[sysctl]] パラメータの調整よりも実行可能で効果的なオプションを使うことができます:&lt;br /&gt;
&lt;br /&gt;
* [https://docs.kernel.org/admin-guide/sysrq.html Magic SysRq キー] ({{ic|Alt+SysRq+f}}) で手動でカーネルの OOM killer をトリガーする。&lt;br /&gt;
* ユーザ空間の OOM デーモンを使ってこれに自動的 (または対話的) に対処する。&lt;br /&gt;
&lt;br /&gt;
{{Warning|OOM killer をトリガーして実行中のアプリケーションを kill すると、保存されていない作業が失われる場合があります。アプリケーションが最終的に通常通りメモリを開放してくれることを期待して辛抱強く待つか、あるいは応答がないシステムを可能な限り早く通常に戻したいと望むかは、あなた次第です。}}&lt;br /&gt;
&lt;br /&gt;
カーネルの OOM killer では終了する (しない) プロセスに優先順位を付けられないので、SysRq よりも OOM デーモンのほうが好ましい場合もあります。いくつかの OOM デーモンをリストアップしました:&lt;br /&gt;
&lt;br /&gt;
* {{App|systemd-oomd|[[systemd]] によって {{ic|systemd-oomd.service}} として提供されています。cgroups-v2 と pressure stall information (PSI) を使用してプロセスを監視し、カーネル空間で OOM が発生する前にアクションを取ります。|https://github.com/systemd/systemd, {{man|8|systemd-oomd}}|{{Pkg|systemd}}}}&lt;br /&gt;
* {{App|earlyoom|C で書かれた、シンプルなユーザ空間の OOM killer 実装です。|https://github.com/rfjakob/earlyoom|{{Pkg|earlyoom}}}}&lt;br /&gt;
* {{App|oomd|[https://lwn.net/Articles/759781/ PSI] ベースの OOM killer 実装です。Linux カーネルバージョン 4.20+ を必要とします。設定は JSON で行い、非常に複雑です。Facebook の本番環境において動作確認済み。|https://github.com/facebookincubator/oomd|{{AUR|oomd}}}}&lt;br /&gt;
* {{App|nohang|Python で書かれた、洗練された OOM ハンドラ。オプションで PSI サポートあり。earlyoom よりも設定可能です。|https://github.com/hakavlad/nohang|{{AUR|nohang-git}}}}&lt;br /&gt;
* {{App|low-memory-monitor|GNOME 開発者の取り組み。ユーザ空間のアプリケーションにメモリ不足の状態を伝えるためのより良いコミュニケーションを提供することを目的としており、さらにカーネルの OOM killer をトリガーするように設定することができます。PSI ベースで、Linux 5.2+ を必要とします。|https://gitlab.freedesktop.org/hadess/low-memory-monitor/|{{AUR|low-memory-monitor-git}}}}&lt;br /&gt;
* {{App|uresourced|アクティブなグラフィカルユーザセッションに対して、cgroup ベースのリソース保護を有効化する小さなデーモン。|https://gitlab.freedesktop.org/benzea/uresourced|{{AUR|uresourced}}}}&lt;br /&gt;
&lt;br /&gt;
== ウォッチドッグ ==&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Watchdog timer]] ([[wikipedia:ja:ウォッチドッグタイマー|日本語版]]) より:&lt;br /&gt;
&lt;br /&gt;
:ウォッチドッグタイマーはコンピュータの動作に支障が生じていないか確認して復旧するために使われる電子的なタイマーである。通常、コンピュータは定期的にウォッチドッグタイマーをリセットする。何らかの理由でウォッチドッグをリセットできなかった場合、タイマーによってタイムアウト信号が生成され、コンピュータを安定状態に移行して通常のシステムオペレーティングを復旧させるなどの対応が行われる。&lt;br /&gt;
&lt;br /&gt;
よって、ウォッチドッグは例外的な状況でカーネルの回復を最適化するために使用されています。もし、&#039;&#039;&#039;重要なシステムサービス&#039;&#039;&#039; (例: ネットワーク、ファイルシステム、ACPI、systemd) が応答しなくなった場合、ウォッチドッグはそれを検知し、再起動をトリガーします。それにより、システムがロックアップし、応答しなくなったサービスのせいで長い遅延が発生してしまうことを回避できます。[[#メモリ不足の状況におけるシステムのレスポンスを改善する]] で説明されているように、この緊急メカニズムとランタイムのシステムリソース管理とを区別することは重要です。&lt;br /&gt;
&lt;br /&gt;
=== systemd ウォッチドッグ ===&lt;br /&gt;
&lt;br /&gt;
systemd にはウォッチドッグのリセット機構が内蔵されています。これは、適切なカーネルモジュールがロードされている場合に (以下を参照)、{{ic|/dev/watchdog}} として公開されているハードウェアウォッチドッグと対話します。システムが応答しなくなった場合、ハードウェアウォッチドッグがシステムリセットをトリガーします。&lt;br /&gt;
&lt;br /&gt;
==== systemd でウォッチドッグを設定する ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|RuntimeWatchdogSec}} は無効化されています。システムのウォッチドッグを有効化するには、以下のような {{man|5|systemd-system.conf}} [[ドロップインファイル]]を作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system.conf.d/watchdog.conf|2=&lt;br /&gt;
[Manager]&lt;br /&gt;
RuntimeWatchdogSec=10s&lt;br /&gt;
RebootWatchdogSec=45s&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=RuntimeWatchdogSec=10s}}: systemd が 10 秒より長く応答しなかった場合、システムを再起動します。&lt;br /&gt;
* {{ic|1=RebootWatchdogSec=45s}}: システムが再起動中にハングした場合、ウォッチドッグは 45 秒後にリセットを強制します。&lt;br /&gt;
&lt;br /&gt;
以下のコマンドで適用します:&lt;br /&gt;
&lt;br /&gt;
 # systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
ウォッチドッグがアクティブであることを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ systemctl show {{!}} grep Watchdog|2=&lt;br /&gt;
RuntimeWatchdogUSec=10s&lt;br /&gt;
RebootWatchdogUSec=45s&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== ハードウェアのウォッチドッグサポートを確認する ====&lt;br /&gt;
&lt;br /&gt;
多くのシステムで、ハードウェアウォッチドッグのサポートは異なるカーネルモジュール (例: 一部の Intel チップセットでは {{ic|iTCO_wdt}}、特定の AMD プラットフォームでは {{ic|sp5100_tco}}) によって提供されている場合があります。ハードウェアウォッチドッグのモジュールを確認するには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ lsmod | grep wdt&lt;br /&gt;
&lt;br /&gt;
関連するウォッチドッグモジュール (例: {{ic|iTCO_wdt}}、{{ic|sp5100_tco}}) を見つけたら、以下のようなファイルを作成してモジュールが[[カーネルモジュール#systemd|ブート時にロード]]されるようにしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modules-load.d/watchdog.conf|&lt;br /&gt;
&#039;&#039;module_name&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 # modprobe &#039;&#039;module_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;module_name&#039;&#039;}} の部分は、あなたのハードウェアにおける実際のモジュール名に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
=== リファレンス ===&lt;br /&gt;
&lt;br /&gt;
* {{man|5|systemd-system.conf}}&lt;br /&gt;
* [https://docs.kernel.org/watchdog/index.html Linux カーネルウォッチドッグのドキュメント]&lt;br /&gt;
* [[Systemd-boot|Arch Wiki – Systemd Boot]]&lt;br /&gt;
* [https://0pointer.de/blog/projects/watchdog.html Lennart Poettering による systemd ウォッチドッグに関するブログ記事]&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Performance_Tuning_Guide/index.html Red Hat Performance Tuning Guide]&lt;br /&gt;
* [https://www.thomas-krenn.com/en/wiki/Linux_Performance_Measurements_using_vmstat Linux Performance Measurements using vmstat]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Improving performance|2025-07-07|839855}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA&amp;diff=40525</id>
		<title>NVIDIA</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA&amp;diff=40525"/>
		<updated>2025-07-07T08:51:00Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[Category:X サーバー]]&lt;br /&gt;
[[de:Nvidia]]&lt;br /&gt;
[[en:NVIDIA]]&lt;br /&gt;
[[es:NVIDIA]]&lt;br /&gt;
[[pt:NVIDIA]]&lt;br /&gt;
[[ru:NVIDIA]]&lt;br /&gt;
[[zh-hans:NVIDIA]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|NVIDIA/ヒントとテクニック}}&lt;br /&gt;
{{Related|NVIDIA/トラブルシューティング}}&lt;br /&gt;
{{Related|Nouveau}}&lt;br /&gt;
{{Related|NVIDIA Optimus}}&lt;br /&gt;
{{Related|PRIME}}&lt;br /&gt;
{{Related|Bumblebee}}&lt;br /&gt;
{{Related|nvidia-xrun}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Vulkan}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
この記事は公式の [https://www.nvidia.com NVIDIA] グラフィックカードドライバをカバーしています。コミュニティによるオープンソースのドライバに関しては、[[Nouveau]] を見てください。ハイブリッドグラフックスを搭載しているノートパソコンを使っている場合は、[[NVIDIA Optimus]] も見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|NVIDIA のウェブサイトで提供されているパッケージを通して NVIDIA ドライバをインストールすることは避けてください。[[pacman]] 経由でインストールすれば、システムをアップデートした際にドライバもアップデートすることができます。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[ハイブリッドグラフィックス]]のあるシステム上でデュアルブートする場合は、Windows またはサードパーティのアプリで ([https://www.asus.com/support/faq/1043747/#a14 ASUS Eco mode] のような) &#039;&#039;Eco mode&#039;&#039; を有効化すると NVIDIA のディスクリート GPU が完全に無効化され、検出されなくなります。}}&lt;br /&gt;
&lt;br /&gt;
まず、[https://nouveau.freedesktop.org/CodeNames.html nouveau wiki のコードネームに関するページ]で、以下のコマンドで入手した GPU カードのモデル名/公式名に対応するファミリ名を探してください:&lt;br /&gt;
&lt;br /&gt;
 $ lspci -k -d ::03xx&lt;br /&gt;
&lt;br /&gt;
次に、使用しているカードに適したドライバをインストールしてください:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! GPU ファミリ&lt;br /&gt;
! ドライバ&lt;br /&gt;
! 状態&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV160 Turing (NV160/TUXXX)] 及びそれ以降&lt;br /&gt;
| {{Pkg|linux}} には {{Pkg|nvidia-open}} &amp;lt;br/&amp;gt; {{Pkg|linux-lts}} には {{Pkg|nvidia-open-lts}} &amp;lt;br/&amp;gt; {{Pkg|nvidia-open-dkms}} は任意のカーネルで使えます&lt;br /&gt;
| [https://developer.nvidia.com/blog/nvidia-transitions-fully-towards-open-source-gpu-kernel-modules/ 上流で推奨されています]。&amp;lt;br/&amp;gt; 現行。サポートあり。&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV110 Maxwell (NV110/GMXXX)] から &amp;lt;br/&amp;gt;[https://nouveau.freedesktop.org/CodeNames.html#NV190 Ada Lovelace (NV190/ADXXX)]&lt;br /&gt;
| {{Pkg|linux}} には {{Pkg|nvidia}} &amp;lt;br/&amp;gt; {{Pkg|linux-lts}} には {{Pkg|nvidia-lts}} &amp;lt;br/&amp;gt; {{Pkg|nvidia-dkms}} は任意のカーネルで使えます&lt;br /&gt;
| 現行。サポートあり。&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVE0 Kepler (NVE0/GKXXX)]&lt;br /&gt;
| {{AUR|nvidia-470xx-dkms}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | レガシー。サポートなし。&amp;lt;sup&amp;gt;2,3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVC0 Fermi (NVC0/GF1XX)]&lt;br /&gt;
| {{AUR|nvidia-390xx-dkms}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV50 Tesla (NV50/G80-90-GT2XX)]&lt;br /&gt;
| {{AUR|nvidia-340xx-dkms}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV40 Curie (NV40/G70)] 及びそれ以前&lt;br /&gt;
| パッケージはもはや存在しません。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# これらのパッケージが動作しない場合 (たいていはハードウェアが新しいことが原因です)、{{AUR|nvidia-open-beta}} が、新しいハードウェアをサポートしている新しいドライバのバージョンを提供しているかもしれません。&lt;br /&gt;
# [https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/alder-lake-desktop/12th-generation-intel-core-processors-datasheet-volume-1-of-2/007/indirect-branch-tracking/ Indirect Branch Tracking] との互換性が無いため、[https://web.archive.org/web/20250209200337/https://www.intel.com/content/www/us/en/newsroom/opinion/intel-cet-answers-call-protect-common-malware-threats.html 第11世代及びそれ以降]の Intel CPU を搭載しているシステムで Linux 5.18 (及びそれ以降) においてこれらのドライバは動作しない場合があります。Indirect Branch Tracking は、[[ブートローダー]]から {{ic|1=ibt=off}} [[カーネルパラメータ]]を設定することにより、無効化することができます。ただし、このセキュリティ機能は[https://lwn.net/Articles/889475/ エクスプロイト手法の一種を緩和する]役割があるので注意してください。&lt;br /&gt;
# NVIDIA はもはやこれらのカードをアクティブにサポートしておらず、これらのドライバは[https://nvidia.custhelp.com/app/answers/detail/a_id/3142/ 現在の Xorg バージョンを公式にはサポートしていない場合があります]。[[nouveau]] ドライバを使うほうが簡単かもしれません。しかし、NVIDIA のレガシーなドライバは依然として利用可能であり、3D パフォーマンスまたは安定性に関して優れているかもしれません。&lt;br /&gt;
&lt;br /&gt;
:{{Note|&lt;br /&gt;
:* {{Pkg|dkms}} をインストールする場合は、[[Dynamic Kernel Module Support#インストール]] を読んでください。&lt;br /&gt;
:* [[DKMS]] 版は特定のカーネルと結びついていません。カーネルのヘッダーファイルをインストールすると、そのカーネル用の NVIDIA カーネルモジュールをコンパイルし直すためです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
32ビットアプリケーションのサポートに関しては、対応する &#039;&#039;lib32&#039;&#039; パッケージも [[multilib]] リポジトリからインストールしてください (例: {{Pkg|lib32-nvidia-utils}})。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-utils}} パッケージには、再起動後に {{ic|nouveau}} モジュールをブラックリスト化するファイルが含まれています。任意で、{{ic|/etc/mkinitcpio.conf}} 内の {{ic|HOOKS}} 配列から {{ic|kms}} を削除し、その後 [[Initramfs を再生成する|initramfs を再生成]]してもよいです。こうすることで、initramfs に {{ic|nouveau}} モジュールが含まれないようにして、カーネルがこのモジュールを初期ブート中に読み込めないようにします。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[#Wayland 設定|Wayland]] を使用している場合は、[[#DRM カーネルモード設定]] に書かれてあることをするまで再起動するべきではありません。さもないと、再起動後に黒画面になってしまうかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
ドライバーをインストールしたら、[[#Xorg 設定]] または [[#Wayland 設定]] へと進んでください。&lt;br /&gt;
&lt;br /&gt;
=== カスタムカーネル ===&lt;br /&gt;
&lt;br /&gt;
使用中のカーネルで {{ic|1=CONFIG_DRM_SIMPLEDRM=y}} となっていることを確認してください。そして、{{ic|CONFIG_DEBUG_INFO_BTF}} を使用している場合、[[PKGBUILD]] で以下が必要です (カーネル 5.16 以降):&lt;br /&gt;
&lt;br /&gt;
 install -Dt &amp;quot;$builddir/tools/bpf/resolve_btfids&amp;quot; tools/bpf/resolve_btfids/resolve_btfids&lt;br /&gt;
&lt;br /&gt;
{{ic|CONFIG_NOVA_CORE}} を有効化してコンパイルされたカーネルでは、新しい NVIDIA GPU ドライバである [https://docs.kernel.org/gpu/nova/index.html Nova] がロードされないようにする必要があるかもしれません。{{Pkg|nvidia-utils}} はデフォルトでこのドライバをブラックリストに追加します。[[カーネルモジュール#モジュールオプションを設定する|systemd-analyze を実行する]]ことで、ロードされていないことを確認できます。別のバージョンのドライバをインストールしている場合は、{{ic|nova_core}} と {{ic|nova_drm}} を手動で[[ブラックリスト|ブラックリストに登録]]する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== DRM カーネルモード設定 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA は [[カーネルモード設定#KMS の遅延開始|KMS の自動遅延読み込み]]をサポートしていないため、Wayland コンポジタを正しく動作させるには DRM ([[Wikipedia:Direct Rendering Manager|Direct Rendering Manager]]) [[カーネルモード設定]]を有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-utils}} 560.35.03-5 から DRM はデフォルトで有効化されています。[https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/commit/1b02daa2ccca6a69fa4355fb5a369c2115ec3e22] それより古いドライバにおいては、{{ic|nvidia_drm}} モジュールに対して {{ic|1=modeset=1}} [[カーネルモジュールパラメータ]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
DRM が本当に有効化されているか調べるには、以下のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/module/nvidia_drm/parameters/modeset&lt;br /&gt;
&lt;br /&gt;
正しく設定されていれば、このコマンドは {{ic|N}} ではなく {{ic|Y}} と出力するはずです。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[カーネル#公式サポートカーネル|Arch で公式にサポートされているカーネル]]は {{ic|simpledrm}} を有効化します。しかし、NVIDIA ドライバは、{{ic|1=nvidia_drm.fbdev}} が無効化されている/利用できない場合 (バージョン 545 より前)、{{ic|efifb}} または {{ic|vesafb}} を必要とします。}}&lt;br /&gt;
&lt;br /&gt;
==== 早期ロード ====&lt;br /&gt;
&lt;br /&gt;
基本的な機能については先のカーネルパラメータを追加するだけで十分でしょう。可能な限り早い時にロードさせたい場合や、スタートアップ時に問題 ({{ic|nvidia}} カーネルモジュールが[[ディスプレイマネージャ]]のあとにロードされてしまうなど) が発生する場合には、{{ic|nvidia}}、{{ic|nvidia_modeset}}、{{ic|nvidia_uvm}} そして {{ic|nvidia_drm}} を initramfs に追加することができます。initramfs ジェネレータを設定する方法については [[カーネルモジュール#モジュールの早期ロード]] を見てください。[[mkinitcpio]] を使用している場合、{{Pkg|nvidia}} ドライバの更新時に毎回 [[initramfs を再生成]]する必要がある場合があります。これを自動化する方法については [[#Pacman フック]] を見てください。&lt;br /&gt;
&lt;br /&gt;
===== Pacman フック =====&lt;br /&gt;
&lt;br /&gt;
{{Note|カスタムの pacman フックが必要になるのは、ビルド済みのカーネルモジュールが同梱されているパッケージに対してのみです。{{ic|*-dkms}} パッケージは、更新時に &#039;&#039;mkinitcpio&#039;&#039; が自動的に実行されるので、このようなカスタムの pacman フックは必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバをアップグレードした後に [[initramfs]] をアップデートすることを忘れないように、以下のような [[pacman フック]]を利用することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pacman.d/hooks/nvidia.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation=Install&lt;br /&gt;
Operation=Upgrade&lt;br /&gt;
Operation=Remove&lt;br /&gt;
Type=Package&lt;br /&gt;
# 構成に存在しない Target は省略できます。例えば、nvidia-open のみを使用する場合は、nvidia-lts の Target を省略できます。&lt;br /&gt;
Target=nvidia&lt;br /&gt;
Target=nvidia-open&lt;br /&gt;
Target=nvidia-lts&lt;br /&gt;
# 他のカーネルを使う場合は以下を適宜変更してください&lt;br /&gt;
Target=linux&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Description=Updating NVIDIA module in initcpio&lt;br /&gt;
Depends=mkinitcpio&lt;br /&gt;
When=PostTransaction&lt;br /&gt;
NeedsTargets&lt;br /&gt;
Exec=/bin/sh -c &#039;while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|上記の {{ic|Exec}} の行が複雑なのは {{ic|nvidia}} と {{ic|linux}} の両方がアップデートされた場合に &#039;&#039;mkinitcpio&#039;&#039; が何度も実行されるのを防ぐためです。このことが気にならないのであれば、{{ic|1=Target=linux}} と {{ic|NeedsTargets}} の行を削除して、{{ic|Exec}} の行は {{ic|1=Exec=/usr/bin/mkinitcpio -P}} のように単純化させることができます。}}&lt;br /&gt;
&lt;br /&gt;
=== ビデオデコードのハードウェアアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
VDPAU によるビデオデコードのアクセラレーションは GeForce 8 シリーズ及びそれ以降のカードでサポートされています。NVDEC によるビデオデコードのアクセラレーションは Fermi (~400 シリーズ) 及びそれ以降のカードでサポートされています。詳しくは [[ハードウェアビデオアクセラレーション]] をご覧ください。&lt;br /&gt;
&lt;br /&gt;
=== NVENC によるビデオエンコードのハードウェアアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
NVENC は {{ic|nvidia_uvm}} モジュールと、関連するデバイスノードが {{ic|/dev}} 下に作成されることを要求します。&lt;br /&gt;
&lt;br /&gt;
最新のドライバーパッケージは、自動的にデバイスノードを作成する [[udev ルール]]を提供するので、追加の操作は必要ありません。&lt;br /&gt;
&lt;br /&gt;
古いドライバ (例えば、{{AUR|nvidia-340xx-dkms}}) を使用している場合、デバイスノードを作成する必要があります。{{ic|nvidia-modprobe}} ユーティリティを実行するとデバイスノードが自動的に作成されます。{{ic|/etc/udev/rules.d/70-nvidia.rules}} を作成して {{ic|nvidia-modprobe}} を自動的に実行させることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/70-nvidia.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, DEVPATH==&amp;quot;/bus/pci/drivers/nvidia&amp;quot;, RUN+=&amp;quot;/usr/bin/nvidia-modprobe -c 0 -u&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
== Wayland 設定 ==&lt;br /&gt;
&lt;br /&gt;
Xwayland に関しては [[Wayland#Xwayland]] を見てください。&lt;br /&gt;
&lt;br /&gt;
その他の設定オプションについては、それぞれの[[Wayland#コンポジタ|コンポジタ]]の wiki ページやドキュメントを見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|バージョン 555.xx より前のドライバを使用している場合や、{{ic|linux-drm-syncobj-v1}} プロトコルによって Explicit Sync をサポートしていない Wayland コンポジタを使用している場合、ネイティブの Wayland アプリと Xwayland アプリの両方でちらつき、フレーム順序の狂いなどの問題が発生する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
=== 基本的なサポート ===&lt;br /&gt;
&lt;br /&gt;
{{ic|nvidia_drm}} モジュールの重要なカーネルパラメータは {{ic|modeset}} と {{ic|fbdev}} です。{{Pkg|nvidia-utils}} パッケージを使用している場合、これらは両方とも[https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/blob/3b439109/PKGBUILD#L60 デフォルトで有効化されています]。また、NVIDIA は[https://indico.freedesktop.org/event/6/contributions/287/attachments/210/288/NVIDIA%20Wayland%20Roadmap.pdf 将来のリリースでこれらのパラメータをデフォルトで有効化することを計画しています]。&lt;br /&gt;
&lt;br /&gt;
==== modeset ====&lt;br /&gt;
&lt;br /&gt;
全ての Wayland 構成において {{ic|modeset}} を有効化することは適切に機能させるために必須です。&lt;br /&gt;
&lt;br /&gt;
サポートの無いドライバについては、{{ic|modeset}} を手動で有効化する必要があります。詳細は [[#DRM カーネルモード設定]] と [[Wayland#要件]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== fbdev ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|{{Pkg|linux}} 6.14.2 と {{Pkg|nvidia}} 570.133.07 の時点で、Wayland は fbdev が無効化されていても動作するようです。また、下記の {{ic|cat}} コマンドは {{ic|N}} を返す可能性もあります。なので、この章はそれより古いバージョンのドライバのみが対象です。}}&lt;br /&gt;
&lt;br /&gt;
一部の Wayland 構成においては {{ic|fbdev}} を有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
Linux 6.11 以降においてこれは厳しい要件ですが、これが仕様なのかバグなのかは現在明らかになっていません。詳細は [https://forums.developer.nvidia.com/t/drm-fbdev-wayland-presentation-support-with-linux-kernel-6-11-and-above/307920] を参照してください。&lt;br /&gt;
&lt;br /&gt;
これは [[#DRM カーネルモード設定|modesetting パラメータ]]と同じようにして設定することができます。ただし、以下のコマンドの出力は modesetting と異なります:&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/module/nvidia_drm/parameters/fbdev&lt;br /&gt;
&lt;br /&gt;
{{ic|fbdev}} が設定されていない場合は、このコマンドは {{ic|N}} を出力するのではなく、ファイルが存在しないことを示すエラーが発生します。&lt;br /&gt;
&lt;br /&gt;
=== サスペンドのサポート ===&lt;br /&gt;
&lt;br /&gt;
Wayland でのサスペンドは X よりもデフォルトの設定の問題が発生しやすいです。詳細は [[NVIDIA/ヒントとテクニック#サスペンド後にビデオメモリを保持する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
GDM を使用している場合は、[[GDM#Wayland とプロプライエタリな NVIDIA ドライバ]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-application-profiles-rc.d ===&lt;br /&gt;
&lt;br /&gt;
一部の wayland コンポジタは [https://www.nvidia.com/en-us/drivers/details/237587/ GLVidHeapReuseRatio] アプリケーションプロファイルキーが[https://github.com/NVIDIA/egl-wayland/issues/126#issuecomment-2379945259 アプリケーションのプロセス名に対して適用]されていない場合、デフォルトで大量の VRAM を消費します。例えば、以下のように設定すれば [[niri]] ではアイドル時で VRAM 消費量を約2.5GiB削減できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/nvidia/nvidia-application-profiles-rc.d/50-limit-free-buffer-pool-in-wayland-compositors.json|2=&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rules&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;pattern&amp;quot;: {&lt;br /&gt;
                &amp;quot;feature&amp;quot;: &amp;quot;procname&amp;quot;,&lt;br /&gt;
                &amp;quot;matches&amp;quot;: &amp;quot;niri&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;profile&amp;quot;: &amp;quot;Limit free buffer pool on Wayland compositors&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;profiles&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;name&amp;quot;: &amp;quot;Limit free buffer pool on Wayland compositors&amp;quot;,&lt;br /&gt;
            &amp;quot;settings&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;key&amp;quot;: &amp;quot;GLVidHeapReuseRatio&amp;quot;,&lt;br /&gt;
                    &amp;quot;value&amp;quot;: 1&lt;br /&gt;
                }&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Xorg 設定 ==&lt;br /&gt;
&lt;br /&gt;
プロプライエタリな NVIDIA グラフィックドライバは Xorg サーバの設定ファイルを必要としません。[[Xorg#起動|X を起動]]してみて、Xorg サーバが設定ファイル無しで正しく機能するかを確認することができます。しか、様々な設定を調整するために設定ファイル ({{ic|/etc/X11/xorg.conf}} よりも {{ic|/etc/X11/xorg.conf.d/20-nvidia.conf}} を優先して使用してください) を作成する必要があるかもしれません。この設定は、NVIDIA Xorg 設定ツールによって生成することができますし、手動で作成することもできます。手動で作成した場合、([[Xorg]] サーバに基本的なオプションのみを与えると言う意味で) 最小の設定にすることができますし、あるいは、Xorg の自動検出されたオプションや事前設定されたオプションをバイパスできる設定を含めることもできます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|その他の設定オプションは、[[NVIDIA/トラブルシューティング]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
=== 自動設定 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA のパッケージには、Xorg サーバの設定ファイル ({{ic|xorg.conf}}) を作成するための自動設定ツールが含まれています。次のコマンドで実行できます:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig&lt;br /&gt;
&lt;br /&gt;
このコマンドは {{ic|/etc/X11/xorg.conf}} を自動検出し、現在のハードウェアに応じてそのファイルを作成 (すでに存在する場合は編集) します。&lt;br /&gt;
&lt;br /&gt;
デフォルトの深度、水平同期、垂直リフレッシュ、そして解像度が問題ないか {{ic|/etc/X11/xorg.conf}} を二重にチェックしてください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-settings ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-settings}} は CLI または GUI を使って様々なオプションを設定することができるツールです。何もオプションをつけずに {{ic|nvidia-settings}} を実行すると GUI が起動します。CLI のオプションについては {{man|1|nvidia-settings}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-settings}} の CLI/GUI は非 root なユーザとして実行でき、&#039;&#039;nvidia-settings Configuration&#039;&#039; タブにある &#039;&#039;Save Current Configuration&#039;&#039; オプションで設定を {{ic|~/.nvidia-settings-rc}} に保存できます。&lt;br /&gt;
&lt;br /&gt;
現在のユーザで {{ic|~/.nvidia-settings-rc}} をロードするには:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-settings --load-config-only&lt;br /&gt;
&lt;br /&gt;
起動時に毎回このコマンドを実行させるには[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|nvidia-settings}} から変更を加えると [[Xorg]] が起動しなくなったりクラッシュするようになったりすることがあります。生成された {{ic|~/.nvidia-settings-rc}} と [[Xorg]] のファイルの両方/片方を調整するか削除することで普通に起動できるようになるはずです。}}&lt;br /&gt;
&lt;br /&gt;
=== 手動設定 ===&lt;br /&gt;
&lt;br /&gt;
設定ファイルを編集することで、([[#自動設定|自動的に]]、または [[#NVIDIA settings|nvidia-settings]]によって有効化できない) いくつかの微調整をすることができます。変更を適用する前に Xorg サーバーを再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
その他の詳細やオプションについては [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/ NVIDIA Accelerated Linux Graphics Driver README and Installation Guide] をご覧ください。&lt;br /&gt;
&lt;br /&gt;
==== 最小設定 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|20-nvidia.conf}} (もしくは非推奨の {{ic|xorg.conf}}) の基本的な設定ブロックは以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-nvidia.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;NVIDIA Card&amp;quot;&lt;br /&gt;
        Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
        VendorName &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
        BoardName &amp;quot;GeForce GTX 1050 Ti&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 起動時のロゴを無効化 ====&lt;br /&gt;
&lt;br /&gt;
古いドライバ ({{AUR|nvidia-340xx-dkms}}) を使用している場合、X の起動時に表示される NVIDIA ロゴスプラッシュスクリーンを無効化しておいたほうがいいかもしれません。{{ic|Device}} セクション内に {{ic|&amp;quot;NoLogo&amp;quot;}} オプションを追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;NoLogo&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== モニター検出をオーバーライド ====&lt;br /&gt;
&lt;br /&gt;
{{ic|Device}} セクション内の {{ic|&amp;quot;ConnectedMonitor&amp;quot;}} オプションにより、 X サーバーが起動した時にモニター検出をオーバーライドできます。これにより、起動時間を大幅に減らせるかもしれません。利用可能なオプション: アナログ接続用の {{ic|&amp;quot;CRT&amp;quot;}}、デジタルモニター用の {{ic|&amp;quot;DFP&amp;quot;}}、テレビ用の {{ic|&amp;quot;TV&amp;quot;}}。&lt;br /&gt;
&lt;br /&gt;
以下の行は起動時のチェックをバイパスし、モニターを DFP として認識することを NVIDIA ドライバーに強制します:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|たとえディスプレイが薄型パネルであろうと、アナログ15ピン VGA 接続に対しては &amp;quot;CRT&amp;quot; を使用してください。&amp;quot;DFP&amp;quot; は DVI や HDMI、DisplayPort のデジタル接続のみを意図しています。}}&lt;br /&gt;
&lt;br /&gt;
==== 輝度調整を有効化 ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|時代遅れの可能性あり[https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/thread/GXJG7D3ALUQKOE2DT4XCL4UXQUFDDSEC/]。上流のパッケージも古いようです。}}&lt;br /&gt;
&lt;br /&gt;
以下をカーネルパラメータに追加してください:&lt;br /&gt;
&lt;br /&gt;
 nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1&lt;br /&gt;
&lt;br /&gt;
あるいは、以下を {{ic|Device}} セクション内に追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;RegistryDwords&amp;quot; &amp;quot;EnableBrightnessControl=1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
もし、この設定で輝度調整がまだ機能しない場合は、{{AUR|nvidia-bl-dkms}} をインストールしてみてください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{AUR|nvidia-bl-dkms}} をインストールすることにより、バックライト輝度調整用の {{ic|/sys/class/backlight/nvidia_backlight/}} インターフェイスが提供されます。しかし、システムが {{ic|/sys/class/backlight/acpi_video0/}} に対してバックライト制御の変更を発行し続けるかもしれません。この場合の1つの解決策は、例えば、&#039;&#039;inotifywait&#039;&#039; を使用して {{ic|acpi_video0/brightness}} の変更を監視し、それを変換して {{ic|nvidia_backlight/brightness}} に対して書き込むことです。[[バックライト#sysfs を変更しても明るさが変更されない]] をご覧ください。}}&lt;br /&gt;
&lt;br /&gt;
==== SLI を有効化 ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|バージョン 455.23.04 から、一部の SLI モードはもはやサポートされていません。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|GTX 10xx シリーズ (1080、1070、1060 など) 以降は 2-way SLI のみがサポートされます。3-way や 4-way SLI は CUDA/OpenCL アプリケーションに対しては機能するかもしれませんが、すべての OpenGL アプリケーションに対してはたいてい機能しないでしょう。}}&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバーの [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/xconfigoptions.html#SLI README] 付録 B によると: &#039;&#039;このオプションは、サポートされている構成で SLI レンダリングの設定を制御します。&#039;&#039; &amp;quot;サポートされている構成&amp;quot;とは SLI 認定マザーボードと、2基または3基の SLI 認定 GeForce GPU を搭載しているコンピュータのことです。&lt;br /&gt;
&lt;br /&gt;
{{ic|lspci}} を使って1つ目の GPU の PCI Bus ID を調べてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# lspci -d ::03xx|&lt;br /&gt;
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)&lt;br /&gt;
03:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)&lt;br /&gt;
04:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)&lt;br /&gt;
08:00.0 3D controller: NVIDIA Corporation GM108GLM [Quadro K620M / Quadro M500M] (rev a2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
調べた BusID (前述の例では 3) を {{ic|Device}} セクション内に追加してください:&lt;br /&gt;
&lt;br /&gt;
 BusID &amp;quot;PCI:3:0:0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|フォーマットが重要です。BusID の値は {{ic|&amp;quot;PCI:&amp;lt;BusID&amp;gt;:0:0&amp;quot;}} のように指定されなければなりません。}}&lt;br /&gt;
&lt;br /&gt;
希望する SLI レンダリングモードの値を {{ic|Screen}} セクション内に追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;SLI&amp;quot; &amp;quot;AA&amp;quot;&lt;br /&gt;
&lt;br /&gt;
以下の表は利用可能なレンダリングモードです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 値 !! 挙動&lt;br /&gt;
|-&lt;br /&gt;
| 0, no, off, false, Single || レンダリング時にただ1つの GPU を使う。&lt;br /&gt;
|-&lt;br /&gt;
| 1, yes, on, true, Auto || SLI を有効化し、ドライバーが自動的に適切なレンダリングモードを選択することを許可する。&lt;br /&gt;
|-&lt;br /&gt;
| AFR || SLI を有効化し、Alternate Frame Rendering モードを使う。&lt;br /&gt;
|-&lt;br /&gt;
| SFR || SLI を有効化し、Split Frame Rendering モードを使う。&lt;br /&gt;
|-&lt;br /&gt;
| AA || SLI を有効化し、SLI アンチエイリアシングを使う。この値を Full-Scene アンチエイリアシングと一緒に使うと視覚品質が向上します。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
あるいは、&#039;&#039;nvidia-xconfig&#039;&#039; ユーティリティを使って、これらの変更を {{ic|xorg.conf}} に追加できます:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig --busid=PCI:3:0:0 --sli=AA&lt;br /&gt;
&lt;br /&gt;
SLI モードが有効化されていることをシェルから確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q all {{!}} grep SLIMode|&lt;br /&gt;
  Attribute &#039;SLIMode&#039; (arch:0.0): AA&lt;br /&gt;
    &#039;SLIMode&#039; is a string attribute.&lt;br /&gt;
    &#039;SLIMode&#039; is a read-only attribute.&lt;br /&gt;
    &#039;SLIMode&#039; can use the following target types: X Screen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|SLI を有効化した後に xorg を起動するとシステムがフリーズしたり、応答しなくなったりするかもしれません。再起動する前にディスプレイマネージャーを無効化することをおすすめします。}}&lt;br /&gt;
&lt;br /&gt;
以上の設定で機能しない場合は、{{ic|nvidia-settings}} で得られる PCI Bus ID を使用する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q all {{!}} grep -i pcibus|&lt;br /&gt;
Attribute &#039;PCIBus&#039; (host:0[gpu:0]): 101.&lt;br /&gt;
  &#039;PCIBus&#039; is an integer attribute.&lt;br /&gt;
  &#039;PCIBus&#039; is a read-only attribute.&lt;br /&gt;
  &#039;PCIBus&#039; can use the following target types: GPU, SDI Input Device.&lt;br /&gt;
Attribute &#039;PCIBus&#039; (host:0[gpu:1]): 23.&lt;br /&gt;
  &#039;PCIBus&#039; is an integer attribute.&lt;br /&gt;
  &#039;PCIBus&#039; is a read-only attribute.&lt;br /&gt;
  &#039;PCIBus&#039; can use the following target types: GPU, SDI Input Device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、xorg.d 内の PrimaryGPU オプションをコメントアウトしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
    # Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この設定でグラフィカルブートの問題も解決できるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== マルチモニター ===&lt;br /&gt;
&lt;br /&gt;
一般的な情報は [[マルチディスプレイ]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Settings を使う ====&lt;br /&gt;
&lt;br /&gt;
[[#nvidia-settings|nvidia-settings]] ツールを使ってマルチモニターを設定できます。&lt;br /&gt;
&lt;br /&gt;
CLI で設定する場合、まずは以下を実行して {{ic|CurrentMetaMode}} を確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q CurrentMetaMode|2=&lt;br /&gt;
Attribute &#039;CurrentMetaMode&#039; (hostnmae:0.0): id=50, switchable=no, source=nv-control :: DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|::}} 以降の全て (上記の場合: {{ic|1=DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0&amp;amp;#125;}}) を使って {{ic|1=nvidia-settings --assign &amp;quot;CurrentMetaMode=&#039;&#039;your_meta_mode&#039;&#039;&amp;quot;}} でディスプレイを再設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|使用するモニターや解像度の設定ごとにシェルのエイリアスを作成すると便利です。}}&lt;br /&gt;
&lt;br /&gt;
==== ConnectedMonitor ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|{{ic|Option &amp;quot;TwinView&amp;quot;}} はバージョン 302.07 で削除され、TwinView は常に有効になっています。}}&lt;br /&gt;
&lt;br /&gt;
ドライバーがセカンドモニタを正しく認識しない場合は、ConnectedMonitor を使って認識するように強制できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor1&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Panasonic&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;Panasonic MICRON 2100Ex&amp;quot;&lt;br /&gt;
    HorizSync       30.0 - 121.0 # this monitor has incorrect EDID, hence Option &amp;quot;UseEDIDFreqs&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
    VertRefresh     50.0 - 160.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor2&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Gateway&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;GatewayVX1120&amp;quot;&lt;br /&gt;
    HorizSync       30.0 - 121.0&lt;br /&gt;
    VertRefresh     50.0 - 160.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device1&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option         &amp;quot;NoLogo&amp;quot;&lt;br /&gt;
    Option         &amp;quot;UseEDIDFreqs&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
    Option         &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT,CRT&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 6200 LE&amp;quot;&lt;br /&gt;
    BusID          &amp;quot;PCI:3:0:0&amp;quot;&lt;br /&gt;
    Screen          0&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device2&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option         &amp;quot;NoLogo&amp;quot;&lt;br /&gt;
    Option         &amp;quot;UseEDIDFreqs&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
    Option         &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT,CRT&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 6200 LE&amp;quot;&lt;br /&gt;
    BusID          &amp;quot;PCI:3:0:0&amp;quot;&lt;br /&gt;
    Screen          1&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|TwinView}} を使わずに1つのカードで2つのモニターを X で使うために {{ic|Screen}} でデバイスを複製しています。{{ic|nvidia-settings}} は追加した {{ic|ConnectedMonitor}} オプションを全て消してしまうので注意してください。&lt;br /&gt;
&lt;br /&gt;
==== TwinView ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|{{ic|Option &amp;quot;TwinView&amp;quot;}} はバージョン 302.07 で削除され、TwinView は常に有効になっています。}}&lt;br /&gt;
&lt;br /&gt;
画面を2つ表示するのではなく1つの大きな画面を表示したい場合、{{ic|TwinView}} 引数を {{ic|1}} に設定してください。コンポジットを使いたい場合、このオプションを使用する必要があります。TwinView は全てのモニターが同一のカードに接続されている場合にのみ機能します。&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;TwinView&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
設定例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-monitor.conf|&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;TwinLayout&amp;quot;&lt;br /&gt;
    Screen         0 &amp;quot;metaScreen&amp;quot; 0 0&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Enable&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor1&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Enable&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Card0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #refer to the link below for more information on each of the following options.&lt;br /&gt;
    Option         &amp;quot;HorizSync&amp;quot;          &amp;quot;DFP-0: 28-33; DFP-1 28-33&amp;quot;&lt;br /&gt;
    Option         &amp;quot;VertRefresh&amp;quot;        &amp;quot;DFP-0: 43-73; DFP-1 43-73&amp;quot;&lt;br /&gt;
    Option         &amp;quot;MetaModes&amp;quot;          &amp;quot;1920x1080, 1920x1080&amp;quot;&lt;br /&gt;
    Option         &amp;quot;ConnectedMonitor&amp;quot;   &amp;quot;DFP-0, DFP-1&amp;quot;&lt;br /&gt;
    Option         &amp;quot;MetaModeOrientation&amp;quot; &amp;quot;DFP-1 LeftOf DFP-0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;metaScreen&amp;quot;&lt;br /&gt;
    Device         &amp;quot;Card0&amp;quot;&lt;br /&gt;
    Monitor        &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    DefaultDepth    24&lt;br /&gt;
    Option         &amp;quot;TwinView&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
    SubSection &amp;quot;Display&amp;quot;&lt;br /&gt;
        Modes          &amp;quot;1920x1080&amp;quot;&lt;br /&gt;
    EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/configtwinview.html Device オプション情報]。&lt;br /&gt;
&lt;br /&gt;
SLI に対応しているカードが複数枚存在する場合、別々のカードに接続された複数のモニターを使うことができます (例: 2枚のカードが SLI で、各々のカードにモニターが1台ずつ接続)。SLI モザイクモードと &amp;quot;MetaModes&amp;quot; オプションで有効になります。以下は上記と同じように設定する例で、[[GNOME]] が完璧に動作します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-monitor.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Card A&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;nvidia&amp;quot;&lt;br /&gt;
        BusID           &amp;quot;PCI:1:00:0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Card B&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;nvidia&amp;quot;&lt;br /&gt;
        BusID           &amp;quot;PCI:2:00:0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Right Monitor&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Left Monitor&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Right Screen&amp;quot;&lt;br /&gt;
        Device          &amp;quot;Card A&amp;quot;&lt;br /&gt;
        Monitor         &amp;quot;Right Monitor&amp;quot;&lt;br /&gt;
        DefaultDepth    24&lt;br /&gt;
        Option          &amp;quot;SLI&amp;quot; &amp;quot;Mosaic&amp;quot;&lt;br /&gt;
        Option          &amp;quot;Stereo&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
        Option          &amp;quot;BaseMosaic&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
        Option          &amp;quot;MetaModes&amp;quot; &amp;quot;GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0&amp;quot;&lt;br /&gt;
        SubSection      &amp;quot;Display&amp;quot;&lt;br /&gt;
                        Depth           24&lt;br /&gt;
        EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Left Screen&amp;quot;&lt;br /&gt;
        Device          &amp;quot;Card B&amp;quot;&lt;br /&gt;
        Monitor         &amp;quot;Left Monitor&amp;quot;&lt;br /&gt;
        DefaultDepth    24&lt;br /&gt;
        Option          &amp;quot;SLI&amp;quot; &amp;quot;Mosaic&amp;quot;&lt;br /&gt;
        Option          &amp;quot;Stereo&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
        Option          &amp;quot;BaseMosaic&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
        Option          &amp;quot;MetaModes&amp;quot; &amp;quot;GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0&amp;quot;&lt;br /&gt;
        SubSection      &amp;quot;Display&amp;quot;&lt;br /&gt;
                        Depth           24&lt;br /&gt;
        EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Default&amp;quot;&lt;br /&gt;
        Screen 0        &amp;quot;Right Screen&amp;quot; 0 0&lt;br /&gt;
        Option          &amp;quot;Xinerama&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== TwinView を使って垂直同期 =====&lt;br /&gt;
&lt;br /&gt;
TwinView と垂直同期 ({{ic|nvidia-settings}} の &#039;&#039;Sync to VBlank&#039;&#039; オプション) を使っている場合、モニターの大きさが異なっていると片方の画面だけが同期されます。{{ic|nvidia-settings}} にはどちらの画面を同期させるか設定するオプション (&#039;&#039;Sync to this display device&#039;&#039; オプション) が存在しますが、必ずしも機能するとはいいがたいです。起動時に以下の環境変数を追加することで解決します (例: {{ic|/etc/profile}} に追加):&lt;br /&gt;
&lt;br /&gt;
 export __GL_SYNC_TO_VBLANK=1&lt;br /&gt;
 export __GL_SYNC_DISPLAY_DEVICE=DFP-0&lt;br /&gt;
 export VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=DFP-0&lt;br /&gt;
&lt;br /&gt;
{{ic|DFP-0}} は適切な画面に置き換えてください ({{ic|DFP-0}} は DVI 端子で {{ic|CRT-0}} は VGA 端子です)。ディスプレイの識別名は {{ic|nvidia-settings}} の &#039;&#039;X Server XVideoSettings&#039;&#039; セクションで確認できます。&lt;br /&gt;
&lt;br /&gt;
===== Twinview を使ってゲームを遊ぶ =====&lt;br /&gt;
&lt;br /&gt;
TwinView を使ってフルスクリーンのゲームを遊ぶ場合、2つの画面が1つの大きな画面としてゲームから認識されることがあります。技術的にこれは正しいのですが (仮想的な X スクリーンの横幅は両方の画面を合わせたサイズになります)、ゲームを遊ぶときは両方の画面を使わないようにしたいときもあるでしょう。&lt;br /&gt;
&lt;br /&gt;
SDL 1.2 のこの挙動を修正するには、次を試して下さい:&lt;br /&gt;
&lt;br /&gt;
 export SDL_VIDEO_FULLSCREEN_HEAD=1&lt;br /&gt;
&lt;br /&gt;
OpenGL の場合、{{ic|xorg.conf}} の {{ic|Device}} セクションに適切な Metamodes を追加して X を再起動してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;Metamodes&amp;quot; &amp;quot;1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL; 1280x1024,NULL;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[ゲーム#別の X サーバーでゲームを起動する|別の X サーバーでゲームを起動する]]方法もあります。上記の方法と一緒に使うことも可能です。&lt;br /&gt;
&lt;br /&gt;
==== モザイクモード ====&lt;br /&gt;
&lt;br /&gt;
モザイクモードは、複数のグラフィクカードでコンポジット有りで3つ以上のモニタを使用する唯一の方法です。ウィンドウマネージャは各モニタの違いを認識するかもしれませんし、しないかもしれません。モザイクモードには、有効な SLI 設定が必要です。SLI を使わずにベースモードを使用する場合でも、GPU は依然として SLI 対応/互換でなければなりません。&lt;br /&gt;
&lt;br /&gt;
===== ベースモザイク =====&lt;br /&gt;
&lt;br /&gt;
ベースモザイクモードは Geforce 8000 シリーズ以上の GPU で動作します。nvidia-setting の GUI から有効にすることはできません。&#039;&#039;nvidia-xconfig&#039;&#039; コマンドラインプログラムを使用するか {{ic|xorg.conf}} を手動で編集する必要があります。Metamodes を指定してください。以下は4台の DFP を 2x2 の構成で使用する例です。各々の解像度は 1920x1024 で、2枚のカードにそれぞれ2台の DFP が接続されている場合:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig --base-mosaic --metamodes=&amp;quot;GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|ドキュメントには 2x2 のモニター構成が記述されていますが、Base Mosaic モードで[https://forums.developer.nvidia.com/t/basemosaic-v295-vs-v310-vs-v325-only-up-to-three-screens/30583#3954733 GeForce カードは人為的にモニタ3台に制限されています]。Quadro カードは4台以上のモニタをサポートしています。2014年9月現在、Windows ドライバはこの人為的な制限を落としましたが、Linux ドライバでは未だに残っています。}}&lt;br /&gt;
&lt;br /&gt;
===== SLI モザイク =====&lt;br /&gt;
&lt;br /&gt;
SLI 構成を使っていて、使用する GPU が Quadro FX 5800 や Quadro Fermi 以降の場合、SLI モザイクモードが利用できます。nvidia-settings の GUI の中から有効化するか、コマンドラインで設定してください:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig --sli=Mosaic --metamodes=&amp;quot;GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== NVswitch ==&lt;br /&gt;
&lt;br /&gt;
NVswitch のあるシステム (AWS の H100x8 など) では、以下が必要です。&lt;br /&gt;
&lt;br /&gt;
* nvidia-fabricmanager をインストールする。&lt;br /&gt;
* Fabric manager が必要とする、対応するカーネルモジュールをインストールする。&lt;br /&gt;
&lt;br /&gt;
Fabric manager を使うと、pytorch が GPU が見つからないと報告してきます。&lt;br /&gt;
&lt;br /&gt;
Fabric マネージャをインストールするには:&lt;br /&gt;
&lt;br /&gt;
# Nvidia から tarball をダウンロードする。[https://developer.download.nvidia.com/compute/cuda/redist/fabricmanager/linux-x86_64/ こちら]&lt;br /&gt;
# バージョン 555.42.02 は正しく動作します。&lt;br /&gt;
# インストールスクリプト sbin/fm_run_package_installer.sh を変更してしてインストール先のパスを修正してください。&lt;br /&gt;
&lt;br /&gt;
対応するカーネルドライバを入手するには:&lt;br /&gt;
&lt;br /&gt;
# nvidia-beta-dkms と nvidia-utils-beta の AUR リポジトリを git clone してください。&lt;br /&gt;
# PKGBUILD を変更してバージョン 555.42.02 を使用するようにしてください。&lt;br /&gt;
# ビルドし、インストールしてください。&lt;br /&gt;
# 再起動してください。&lt;br /&gt;
&lt;br /&gt;
最後に、{{ic|systemctl enable nvidia-fabricmanager}} と {{ic|systemctl start nvidia-fabricmanager}} を実行すれば、pytorch が動くはずです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA/ヒントとテクニック]] を参照。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA/トラブルシューティング]] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://forums.developer.nvidia.com/t/current-graphics-driver-releases/28500 Current graphics driver releases in official NVIDIA Forum]&lt;br /&gt;
* [https://forums.developer.nvidia.com/c/gpu-graphics/linux/148 NVIDIA Developers Forum - Linux Subforum]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NVIDIA|2025-07-07|840164}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NILFS2&amp;diff=40515</id>
		<title>NILFS2</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NILFS2&amp;diff=40515"/>
		<updated>2025-07-04T15:45:45Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: /* ファイルシステムをリサイズする */ style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:NILFS2]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://nilfs.sourceforge.io/en/ NILFS2] (New Implementation of a Log-structured File System) はログ構造化ファイルシステムです。ファイルシステム全体のバージョニングや連続的なスナップショットをサポートしており、数秒前に間違って上書きしたり壊してしまったりしたファイルでも復元することができます。&lt;br /&gt;
&lt;br /&gt;
このファイルシステムは日本電信電話 (NTT) サイバースペース研究所と世界中のコミュニティによって開発されました。NILFS は GNU General Public License (GPL) の下でライセンスされました。&lt;br /&gt;
&lt;br /&gt;
NILFS2 では連続的にスナップショットが作成されるため、ファイルシステムが自動的に全ファイルの過去のバージョンを保持するバージョニングファイルシステムとみなすことができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* NILFS2 は断片化を発生させるそのログ構造化設計によりメカニカルハードディスクドライブには最適ではないかもしれません。&lt;br /&gt;
* 2025年4月22日現在、NILFS2 は atime (access time)、拡張属性、POSIX ACL (POSIX Access Control List) を実装していません。これらが必要である場合は、NILFS2を使用しないでください。また、適切なファイルシステムチェックが今のところ存在しないため、深刻なエラーが発生した場合に回復不能になるかもしれません。実装済みの機能と未実装の機能は [https://nilfs.sourceforge.io/en/current_status.html Current status] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|NILFS2 ツールのほとんどはデバイスファイルの引数を省略できますが、複数の NILFS2 ファイルシステムが存在する環境では間違ったファイルシステムを変更してしまわないようにデバイスファイルの引数を常に使用することが推奨されます。}}&lt;br /&gt;
&lt;br /&gt;
== NILFS2 ファイルシステムを作成する ==&lt;br /&gt;
&lt;br /&gt;
この記事ではデバイスに[[パーティション]]がすでにセットアップされていると仮定しています。{{Pkg|nilfs-utils}} を[[インストール]]してください。{{ic|mkfs.nilfs2}} を使い、{{ic|&#039;&#039;/dev/sdxY&#039;&#039;}} のように対象のパーティションを指定してフォーマットしてください:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.nilfs2 -L mylabel &#039;&#039;/dev/sdxY&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なオプションは {{man|8|mkfs.nilfs2}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ラベルを変更する ===&lt;br /&gt;
&lt;br /&gt;
nilfs-tune コマンドはマウントされていないファイルシステムにのみ使用してください。&lt;br /&gt;
&lt;br /&gt;
 # nilfs-tune -L newlabel &#039;&#039;/dev/sdxY&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== マウントする ==&lt;br /&gt;
&lt;br /&gt;
その後、ファイルシステムは手動あるいは他の方法でマウントできるようになります:&lt;br /&gt;
&lt;br /&gt;
 # mount /dev/sdxY /mnt/foo&lt;br /&gt;
&lt;br /&gt;
=== マウントオプション ===&lt;br /&gt;
&lt;br /&gt;
==== エラーハンドリング ====&lt;br /&gt;
&lt;br /&gt;
{{ic|1=errors=continue}} / {{ic|remount-ro}} / {{ic|panic}} は、ファイルシステムエラー時に NILFS2 が何をすべきかを指定します。{{ic|continue}} はエラーを無視し、{{ic|remount-ro}} はファイルシステムを読み取り専用でマウントし、{{ic|panic}} はシステムを停止させます。&lt;br /&gt;
&lt;br /&gt;
==== Discard ====&lt;br /&gt;
&lt;br /&gt;
{{ic|discard}} / {{ic|nodiscard}} はそれぞれ [[TRIM]] を有効化/無効化します。&lt;br /&gt;
&lt;br /&gt;
利用可能なオプションは {{man|8|mount.nilfs2}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショット ==&lt;br /&gt;
&lt;br /&gt;
NILFS2 には2種類のスナップショット (チェックポイントとスナップショット) があります。これらはそれぞれ {{ic|cp}}、{{ic|ss}} と表記されます。&lt;br /&gt;
&lt;br /&gt;
NILFS2 は書き込み毎にチェックポイントを自動的に作成します。チェックポイントは、ファイルシステムが満タンになった時やユーザーが手動でガベージコレクションを発動させた時に領域を空けるために NILFS2 のガベージコレクタによって自動的に削除されうるスナップショットです。&lt;br /&gt;
&lt;br /&gt;
スナップショットはチェックポイントから手動で変換する必要があり、自動的に削除されません。スナップショットはマウントすることができ、データを復元することができます。&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを一覧表示する ===&lt;br /&gt;
&lt;br /&gt;
チェックポイントとスナップショットは以下のようにして一覧表示できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=lscp /dev/sdxY|output=&lt;br /&gt;
   CNO        DATE     TIME  MODE  FLG      BLKCNT       ICNT&lt;br /&gt;
     1  2025-04-14 21:35:06   cp    -     10181423     554012&lt;br /&gt;
     2  2025-04-14 22:17:38   cp    -     10181423     554012&lt;br /&gt;
     3  2025-04-14 22:18:22   cp    -     10181423     554012&lt;br /&gt;
     4  2025-04-14 22:28:56   cp    -     10181423     554012&lt;br /&gt;
     5  2025-04-14 22:39:59   cp    -     10181423     554012&lt;br /&gt;
 ...&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
スナップショットのみを表示するには lscp に {{ic|-s}} フラグを渡してください。利用可能なオプションは {{man|1|lscp}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== チェックポイントをスナップショットに変換する ===&lt;br /&gt;
&lt;br /&gt;
チェックポイントからデータを復元するには、先にチェックポイントをスナップショットに変換する必要があります。変換には {{ic|chcp}} ユーティリティを使用してください:&lt;br /&gt;
&lt;br /&gt;
 # chcp ss /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|checkpoint-number}} は {{ic|lscp}} の CNO 列のチェックポイント番号です。&lt;br /&gt;
&lt;br /&gt;
実行すると、{{ic|lscp}} では以下のように表示されます:&lt;br /&gt;
&lt;br /&gt;
     4  2025-04-14 22:28:56   ss    -     10181423     554012&lt;br /&gt;
&lt;br /&gt;
スナップショットをチェックポイントに戻すには:&lt;br /&gt;
&lt;br /&gt;
 # chcp cp /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを作成する ===&lt;br /&gt;
&lt;br /&gt;
以下のようにしてチェックポイントを作成してください:&lt;br /&gt;
&lt;br /&gt;
 # mkcp /dev/sdxY&lt;br /&gt;
&lt;br /&gt;
あるいはスナップショットを直接作成するには:&lt;br /&gt;
&lt;br /&gt;
 # mkcp --snapshot /dev/sdxY&lt;br /&gt;
&lt;br /&gt;
=== スナップショットをマウントする ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドはスナップショット {{ic|checkpoint-number}} を読み取り専用で {{ic|/mnt/snapshot}} にマウントします:&lt;br /&gt;
&lt;br /&gt;
 # mount -t nilfs2 -r -o cp=checkpoint-number /dev/sdxY /mnt/snapshot&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを削除する ===&lt;br /&gt;
&lt;br /&gt;
チェックポイントを一つだけ削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ある範囲のチェックポイントを一括で削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY &#039;&#039;start&#039;&#039;..&#039;&#039;end&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|start}} は開始チェックポイント番号、{{ic|end}} は終点のチェックポイント番号です。(訳注: 削除範囲は [start, end] です。[start, end) ではありません。)&lt;br /&gt;
&lt;br /&gt;
特定のチェックポイント及びそれより前のチェックポイントを全て削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY ..&#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
特定のチェックポイント及びそれより後のチェックポイントを全て削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;..&lt;br /&gt;
&lt;br /&gt;
{{tip|{{ic|-i}} フラグを追加すると {{ic|rmcp}} は入力された値をインタラクティブにダブルチェックします。}}&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|8|rmcp}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムをクリーンアップする ==&lt;br /&gt;
&lt;br /&gt;
マウント済みの NILFS2 ファイルシステムから古いチェックポイントをクリーンアップするには:&lt;br /&gt;
&lt;br /&gt;
 # nilfs-clean /dev/sdxY&lt;br /&gt;
&lt;br /&gt;
ガベージコレクタに関する詳細は {{man|8|nilfs-clean}} と {{man|8|nilfs_cleanerd}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムをリサイズする ==&lt;br /&gt;
&lt;br /&gt;
{{ic|nilfs-resize}} は NILFS2 ファイルシステムをリサイズします。&lt;br /&gt;
&lt;br /&gt;
マウント済み NILFS2 ファイルシステムは以下のコマンドでリサイズできます:&lt;br /&gt;
&lt;br /&gt;
 # nilfs-resize /dev/sdxY &#039;&#039;desired-size&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|desired-size}} では単位接尾辞 {{ic|s}} (512バイトセクタ)、{{ic|K}} (キロバイト)、{{ic|M}} (メガバイト)、{{ic|G}} (ギガバイト)、{{ic|T}} (テラバイト) を使用できます。{{ic|desired-size}} が指定されなかった場合、デフォルトでパーティションのサイズが使用されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|nilfs-resize}} は勝手にパーティションのサイズを変更しません。ファイルシステムを縮小した場合は後でパーティションを縮小する必要があり、逆にファイルシステムを拡張したい場合はあらかじめパーティションを拡張しておく必要があります。これは [[fdisk]] などで行えます。&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|8|nilfs-resize}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://nilfs.sourceforge.io/en/faq.html NILFS2 FAQ]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NILFS2|2025-07-05|833898}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NILFS2&amp;diff=40514</id>
		<title>NILFS2</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NILFS2&amp;diff=40514"/>
		<updated>2025-07-04T15:43:01Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: カテゴリを修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:NILFS2]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://nilfs.sourceforge.io/en/ NILFS2] (New Implementation of a Log-structured File System) はログ構造化ファイルシステムです。ファイルシステム全体のバージョニングや連続的なスナップショットをサポートしており、数秒前に間違って上書きしたり壊してしまったりしたファイルでも復元することができます。&lt;br /&gt;
&lt;br /&gt;
このファイルシステムは日本電信電話 (NTT) サイバースペース研究所と世界中のコミュニティによって開発されました。NILFS は GNU General Public License (GPL) の下でライセンスされました。&lt;br /&gt;
&lt;br /&gt;
NILFS2 では連続的にスナップショットが作成されるため、ファイルシステムが自動的に全ファイルの過去のバージョンを保持するバージョニングファイルシステムとみなすことができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* NILFS2 は断片化を発生させるそのログ構造化設計によりメカニカルハードディスクドライブには最適ではないかもしれません。&lt;br /&gt;
* 2025年4月22日現在、NILFS2 は atime (access time)、拡張属性、POSIX ACL (POSIX Access Control List) を実装していません。これらが必要である場合は、NILFS2を使用しないでください。また、適切なファイルシステムチェックが今のところ存在しないため、深刻なエラーが発生した場合に回復不能になるかもしれません。実装済みの機能と未実装の機能は [https://nilfs.sourceforge.io/en/current_status.html Current status] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|NILFS2 ツールのほとんどはデバイスファイルの引数を省略できますが、複数の NILFS2 ファイルシステムが存在する環境では間違ったファイルシステムを変更してしまわないようにデバイスファイルの引数を常に使用することが推奨されます。}}&lt;br /&gt;
&lt;br /&gt;
== NILFS2 ファイルシステムを作成する ==&lt;br /&gt;
&lt;br /&gt;
この記事ではデバイスに[[パーティション]]がすでにセットアップされていると仮定しています。{{Pkg|nilfs-utils}} を[[インストール]]してください。{{ic|mkfs.nilfs2}} を使い、{{ic|&#039;&#039;/dev/sdxY&#039;&#039;}} のように対象のパーティションを指定してフォーマットしてください:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.nilfs2 -L mylabel &#039;&#039;/dev/sdxY&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なオプションは {{man|8|mkfs.nilfs2}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ラベルを変更する ===&lt;br /&gt;
&lt;br /&gt;
nilfs-tune コマンドはマウントされていないファイルシステムにのみ使用してください。&lt;br /&gt;
&lt;br /&gt;
 # nilfs-tune -L newlabel &#039;&#039;/dev/sdxY&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== マウントする ==&lt;br /&gt;
&lt;br /&gt;
その後、ファイルシステムは手動あるいは他の方法でマウントできるようになります:&lt;br /&gt;
&lt;br /&gt;
 # mount /dev/sdxY /mnt/foo&lt;br /&gt;
&lt;br /&gt;
=== マウントオプション ===&lt;br /&gt;
&lt;br /&gt;
==== エラーハンドリング ====&lt;br /&gt;
&lt;br /&gt;
{{ic|1=errors=continue}} / {{ic|remount-ro}} / {{ic|panic}} は、ファイルシステムエラー時に NILFS2 が何をすべきかを指定します。{{ic|continue}} はエラーを無視し、{{ic|remount-ro}} はファイルシステムを読み取り専用でマウントし、{{ic|panic}} はシステムを停止させます。&lt;br /&gt;
&lt;br /&gt;
==== Discard ====&lt;br /&gt;
&lt;br /&gt;
{{ic|discard}} / {{ic|nodiscard}} はそれぞれ [[TRIM]] を有効化/無効化します。&lt;br /&gt;
&lt;br /&gt;
利用可能なオプションは {{man|8|mount.nilfs2}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショット ==&lt;br /&gt;
&lt;br /&gt;
NILFS2 には2種類のスナップショット (チェックポイントとスナップショット) があります。これらはそれぞれ {{ic|cp}}、{{ic|ss}} と表記されます。&lt;br /&gt;
&lt;br /&gt;
NILFS2 は書き込み毎にチェックポイントを自動的に作成します。チェックポイントは、ファイルシステムが満タンになった時やユーザーが手動でガベージコレクションを発動させた時に領域を空けるために NILFS2 のガベージコレクタによって自動的に削除されうるスナップショットです。&lt;br /&gt;
&lt;br /&gt;
スナップショットはチェックポイントから手動で変換する必要があり、自動的に削除されません。スナップショットはマウントすることができ、データを復元することができます。&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを一覧表示する ===&lt;br /&gt;
&lt;br /&gt;
チェックポイントとスナップショットは以下のようにして一覧表示できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=lscp /dev/sdxY|output=&lt;br /&gt;
   CNO        DATE     TIME  MODE  FLG      BLKCNT       ICNT&lt;br /&gt;
     1  2025-04-14 21:35:06   cp    -     10181423     554012&lt;br /&gt;
     2  2025-04-14 22:17:38   cp    -     10181423     554012&lt;br /&gt;
     3  2025-04-14 22:18:22   cp    -     10181423     554012&lt;br /&gt;
     4  2025-04-14 22:28:56   cp    -     10181423     554012&lt;br /&gt;
     5  2025-04-14 22:39:59   cp    -     10181423     554012&lt;br /&gt;
 ...&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
スナップショットのみを表示するには lscp に {{ic|-s}} フラグを渡してください。利用可能なオプションは {{man|1|lscp}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== チェックポイントをスナップショットに変換する ===&lt;br /&gt;
&lt;br /&gt;
チェックポイントからデータを復元するには、先にチェックポイントをスナップショットに変換する必要があります。変換には {{ic|chcp}} ユーティリティを使用してください:&lt;br /&gt;
&lt;br /&gt;
 # chcp ss /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|checkpoint-number}} は {{ic|lscp}} の CNO 列のチェックポイント番号です。&lt;br /&gt;
&lt;br /&gt;
実行すると、{{ic|lscp}} では以下のように表示されます:&lt;br /&gt;
&lt;br /&gt;
     4  2025-04-14 22:28:56   ss    -     10181423     554012&lt;br /&gt;
&lt;br /&gt;
スナップショットをチェックポイントに戻すには:&lt;br /&gt;
&lt;br /&gt;
 # chcp cp /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを作成する ===&lt;br /&gt;
&lt;br /&gt;
以下のようにしてチェックポイントを作成してください:&lt;br /&gt;
&lt;br /&gt;
 # mkcp /dev/sdxY&lt;br /&gt;
&lt;br /&gt;
あるいはスナップショットを直接作成するには:&lt;br /&gt;
&lt;br /&gt;
 # mkcp --snapshot /dev/sdxY&lt;br /&gt;
&lt;br /&gt;
=== スナップショットをマウントする ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドはスナップショット {{ic|checkpoint-number}} を読み取り専用で {{ic|/mnt/snapshot}} にマウントします:&lt;br /&gt;
&lt;br /&gt;
 # mount -t nilfs2 -r -o cp=checkpoint-number /dev/sdxY /mnt/snapshot&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを削除する ===&lt;br /&gt;
&lt;br /&gt;
チェックポイントを一つだけ削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ある範囲のチェックポイントを一括で削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY &#039;&#039;start&#039;&#039;..&#039;&#039;end&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|start}} は開始チェックポイント番号、{{ic|end}} は終点のチェックポイント番号です。(訳注: 削除範囲は [start, end] です。[start, end) ではありません。)&lt;br /&gt;
&lt;br /&gt;
特定のチェックポイント及びそれより前のチェックポイントを全て削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY ..&#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
特定のチェックポイント及びそれより後のチェックポイントを全て削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;..&lt;br /&gt;
&lt;br /&gt;
{{tip|{{ic|-i}} フラグを追加すると {{ic|rmcp}} は入力された値をインタラクティブにダブルチェックします。}}&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|8|rmcp}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムをクリーンアップする ==&lt;br /&gt;
&lt;br /&gt;
マウント済みの NILFS2 ファイルシステムから古いチェックポイントをクリーンアップするには:&lt;br /&gt;
&lt;br /&gt;
 # nilfs-clean /dev/sdxY&lt;br /&gt;
&lt;br /&gt;
ガベージコレクタに関する詳細は {{man|8|nilfs-clean}} と {{man|8|nilfs_cleanerd}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムをリサイズする ==&lt;br /&gt;
&lt;br /&gt;
{{ic|nilfs-resize}} は NILFS2 ファイルシステムをリサイズします。&lt;br /&gt;
&lt;br /&gt;
マウント済み NILFS2 ファイルシステムは以下のコマンドでリサイズできます:&lt;br /&gt;
&lt;br /&gt;
 # nilfs-resize /dev/sdxY desired-size&lt;br /&gt;
&lt;br /&gt;
{{ic|desired-size}} では単位接尾辞 {{ic|s}} (512バイトセクタ)、{{ic|K}} (キロバイト)、{{ic|M}} (メガバイト)、{{ic|G}} (ギガバイト)、{{ic|T}} (テラバイト) を使用できます。{{ic|desired-size}} が指定されなかった場合、デフォルトでパーティションのサイズが使用されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|nilfs-resize}} は勝手にパーティションのサイズを変更しません。ファイルシステムを縮小した場合は後でパーティションを縮小する必要があり、逆にファイルシステムを拡張したい場合はあらかじめパーティションを拡張しておく必要があります。これは [[fdisk]] などで行えます。&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|8|nilfs-resize}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://nilfs.sourceforge.io/en/faq.html NILFS2 FAQ]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NILFS2|2025-07-05|833898}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NILFS2&amp;diff=40513</id>
		<title>NILFS2</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NILFS2&amp;diff=40513"/>
		<updated>2025-07-04T15:42:42Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: ページの作成:「Category:File systems en:NILFS2 {{Related articles start}} {{Related|ファイルシステム}} {{Related articles end}}  [https://nilfs.sourceforge.io/en/ NILFS2…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:File systems]]&lt;br /&gt;
[[en:NILFS2]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://nilfs.sourceforge.io/en/ NILFS2] (New Implementation of a Log-structured File System) はログ構造化ファイルシステムです。ファイルシステム全体のバージョニングや連続的なスナップショットをサポートしており、数秒前に間違って上書きしたり壊してしまったりしたファイルでも復元することができます。&lt;br /&gt;
&lt;br /&gt;
このファイルシステムは日本電信電話 (NTT) サイバースペース研究所と世界中のコミュニティによって開発されました。NILFS は GNU General Public License (GPL) の下でライセンスされました。&lt;br /&gt;
&lt;br /&gt;
NILFS2 では連続的にスナップショットが作成されるため、ファイルシステムが自動的に全ファイルの過去のバージョンを保持するバージョニングファイルシステムとみなすことができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* NILFS2 は断片化を発生させるそのログ構造化設計によりメカニカルハードディスクドライブには最適ではないかもしれません。&lt;br /&gt;
* 2025年4月22日現在、NILFS2 は atime (access time)、拡張属性、POSIX ACL (POSIX Access Control List) を実装していません。これらが必要である場合は、NILFS2を使用しないでください。また、適切なファイルシステムチェックが今のところ存在しないため、深刻なエラーが発生した場合に回復不能になるかもしれません。実装済みの機能と未実装の機能は [https://nilfs.sourceforge.io/en/current_status.html Current status] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|NILFS2 ツールのほとんどはデバイスファイルの引数を省略できますが、複数の NILFS2 ファイルシステムが存在する環境では間違ったファイルシステムを変更してしまわないようにデバイスファイルの引数を常に使用することが推奨されます。}}&lt;br /&gt;
&lt;br /&gt;
== NILFS2 ファイルシステムを作成する ==&lt;br /&gt;
&lt;br /&gt;
この記事ではデバイスに[[パーティション]]がすでにセットアップされていると仮定しています。{{Pkg|nilfs-utils}} を[[インストール]]してください。{{ic|mkfs.nilfs2}} を使い、{{ic|&#039;&#039;/dev/sdxY&#039;&#039;}} のように対象のパーティションを指定してフォーマットしてください:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.nilfs2 -L mylabel &#039;&#039;/dev/sdxY&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
利用可能なオプションは {{man|8|mkfs.nilfs2}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ラベルを変更する ===&lt;br /&gt;
&lt;br /&gt;
nilfs-tune コマンドはマウントされていないファイルシステムにのみ使用してください。&lt;br /&gt;
&lt;br /&gt;
 # nilfs-tune -L newlabel &#039;&#039;/dev/sdxY&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== マウントする ==&lt;br /&gt;
&lt;br /&gt;
その後、ファイルシステムは手動あるいは他の方法でマウントできるようになります:&lt;br /&gt;
&lt;br /&gt;
 # mount /dev/sdxY /mnt/foo&lt;br /&gt;
&lt;br /&gt;
=== マウントオプション ===&lt;br /&gt;
&lt;br /&gt;
==== エラーハンドリング ====&lt;br /&gt;
&lt;br /&gt;
{{ic|1=errors=continue}} / {{ic|remount-ro}} / {{ic|panic}} は、ファイルシステムエラー時に NILFS2 が何をすべきかを指定します。{{ic|continue}} はエラーを無視し、{{ic|remount-ro}} はファイルシステムを読み取り専用でマウントし、{{ic|panic}} はシステムを停止させます。&lt;br /&gt;
&lt;br /&gt;
==== Discard ====&lt;br /&gt;
&lt;br /&gt;
{{ic|discard}} / {{ic|nodiscard}} はそれぞれ [[TRIM]] を有効化/無効化します。&lt;br /&gt;
&lt;br /&gt;
利用可能なオプションは {{man|8|mount.nilfs2}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== スナップショット ==&lt;br /&gt;
&lt;br /&gt;
NILFS2 には2種類のスナップショット (チェックポイントとスナップショット) があります。これらはそれぞれ {{ic|cp}}、{{ic|ss}} と表記されます。&lt;br /&gt;
&lt;br /&gt;
NILFS2 は書き込み毎にチェックポイントを自動的に作成します。チェックポイントは、ファイルシステムが満タンになった時やユーザーが手動でガベージコレクションを発動させた時に領域を空けるために NILFS2 のガベージコレクタによって自動的に削除されうるスナップショットです。&lt;br /&gt;
&lt;br /&gt;
スナップショットはチェックポイントから手動で変換する必要があり、自動的に削除されません。スナップショットはマウントすることができ、データを復元することができます。&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを一覧表示する ===&lt;br /&gt;
&lt;br /&gt;
チェックポイントとスナップショットは以下のようにして一覧表示できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=lscp /dev/sdxY|output=&lt;br /&gt;
   CNO        DATE     TIME  MODE  FLG      BLKCNT       ICNT&lt;br /&gt;
     1  2025-04-14 21:35:06   cp    -     10181423     554012&lt;br /&gt;
     2  2025-04-14 22:17:38   cp    -     10181423     554012&lt;br /&gt;
     3  2025-04-14 22:18:22   cp    -     10181423     554012&lt;br /&gt;
     4  2025-04-14 22:28:56   cp    -     10181423     554012&lt;br /&gt;
     5  2025-04-14 22:39:59   cp    -     10181423     554012&lt;br /&gt;
 ...&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
スナップショットのみを表示するには lscp に {{ic|-s}} フラグを渡してください。利用可能なオプションは {{man|1|lscp}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== チェックポイントをスナップショットに変換する ===&lt;br /&gt;
&lt;br /&gt;
チェックポイントからデータを復元するには、先にチェックポイントをスナップショットに変換する必要があります。変換には {{ic|chcp}} ユーティリティを使用してください:&lt;br /&gt;
&lt;br /&gt;
 # chcp ss /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|checkpoint-number}} は {{ic|lscp}} の CNO 列のチェックポイント番号です。&lt;br /&gt;
&lt;br /&gt;
実行すると、{{ic|lscp}} では以下のように表示されます:&lt;br /&gt;
&lt;br /&gt;
     4  2025-04-14 22:28:56   ss    -     10181423     554012&lt;br /&gt;
&lt;br /&gt;
スナップショットをチェックポイントに戻すには:&lt;br /&gt;
&lt;br /&gt;
 # chcp cp /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを作成する ===&lt;br /&gt;
&lt;br /&gt;
以下のようにしてチェックポイントを作成してください:&lt;br /&gt;
&lt;br /&gt;
 # mkcp /dev/sdxY&lt;br /&gt;
&lt;br /&gt;
あるいはスナップショットを直接作成するには:&lt;br /&gt;
&lt;br /&gt;
 # mkcp --snapshot /dev/sdxY&lt;br /&gt;
&lt;br /&gt;
=== スナップショットをマウントする ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドはスナップショット {{ic|checkpoint-number}} を読み取り専用で {{ic|/mnt/snapshot}} にマウントします:&lt;br /&gt;
&lt;br /&gt;
 # mount -t nilfs2 -r -o cp=checkpoint-number /dev/sdxY /mnt/snapshot&lt;br /&gt;
&lt;br /&gt;
=== スナップショットを削除する ===&lt;br /&gt;
&lt;br /&gt;
チェックポイントを一つだけ削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ある範囲のチェックポイントを一括で削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY &#039;&#039;start&#039;&#039;..&#039;&#039;end&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|start}} は開始チェックポイント番号、{{ic|end}} は終点のチェックポイント番号です。(訳注: 削除範囲は [start, end] です。[start, end) ではありません。)&lt;br /&gt;
&lt;br /&gt;
特定のチェックポイント及びそれより前のチェックポイントを全て削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY ..&#039;&#039;checkpoint-number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
特定のチェックポイント及びそれより後のチェックポイントを全て削除するには:&lt;br /&gt;
&lt;br /&gt;
 # rmcp /dev/sdxY &#039;&#039;checkpoint-number&#039;&#039;..&lt;br /&gt;
&lt;br /&gt;
{{tip|{{ic|-i}} フラグを追加すると {{ic|rmcp}} は入力された値をインタラクティブにダブルチェックします。}}&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|8|rmcp}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムをクリーンアップする ==&lt;br /&gt;
&lt;br /&gt;
マウント済みの NILFS2 ファイルシステムから古いチェックポイントをクリーンアップするには:&lt;br /&gt;
&lt;br /&gt;
 # nilfs-clean /dev/sdxY&lt;br /&gt;
&lt;br /&gt;
ガベージコレクタに関する詳細は {{man|8|nilfs-clean}} と {{man|8|nilfs_cleanerd}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムをリサイズする ==&lt;br /&gt;
&lt;br /&gt;
{{ic|nilfs-resize}} は NILFS2 ファイルシステムをリサイズします。&lt;br /&gt;
&lt;br /&gt;
マウント済み NILFS2 ファイルシステムは以下のコマンドでリサイズできます:&lt;br /&gt;
&lt;br /&gt;
 # nilfs-resize /dev/sdxY desired-size&lt;br /&gt;
&lt;br /&gt;
{{ic|desired-size}} では単位接尾辞 {{ic|s}} (512バイトセクタ)、{{ic|K}} (キロバイト)、{{ic|M}} (メガバイト)、{{ic|G}} (ギガバイト)、{{ic|T}} (テラバイト) を使用できます。{{ic|desired-size}} が指定されなかった場合、デフォルトでパーティションのサイズが使用されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|nilfs-resize}} は勝手にパーティションのサイズを変更しません。ファイルシステムを縮小した場合は後でパーティションを縮小する必要があり、逆にファイルシステムを拡張したい場合はあらかじめパーティションを拡張しておく必要があります。これは [[fdisk]] などで行えます。&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|8|nilfs-resize}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://nilfs.sourceforge.io/en/faq.html NILFS2 FAQ]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NILFS2|2025-07-05|833898}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0&amp;diff=40512</id>
		<title>ファイルシステム</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0&amp;diff=40512"/>
		<updated>2025-07-04T14:50:16Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[Category:一覧]]&lt;br /&gt;
[[en:File systems]]&lt;br /&gt;
[[es:File systems]]&lt;br /&gt;
[[hu:File systems]]&lt;br /&gt;
[[it:File systems]]&lt;br /&gt;
[[pt:File systems]]&lt;br /&gt;
[[ru:File systems]]&lt;br /&gt;
[[uk:File systems]]&lt;br /&gt;
[[zh-hans:File systems]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|パーティショニング}}&lt;br /&gt;
{{Related|デバイスファイル#lsblk}}&lt;br /&gt;
{{Related|ファイルのパーミッションと属性}}&lt;br /&gt;
{{Related|fsck}}&lt;br /&gt;
{{Related|fstab}}&lt;br /&gt;
{{Related|アプリケーション一覧/ユーティリティ#マウントツール}}&lt;br /&gt;
{{Related|QEMU#raw イメージからパーティションをマウントする}}&lt;br /&gt;
{{Related|udev}}&lt;br /&gt;
{{Related|udisks}}&lt;br /&gt;
{{Related|umask}}&lt;br /&gt;
{{Related|USB ストレージデバイス}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:ファイルシステム|Wikipedia]] より:&lt;br /&gt;
&lt;br /&gt;
:ファイルシステムは、コンピュータのリソースを操作するための、オペレーティングシステム (OS) が持つ機能の一つ。ファイルとは、主に補助記憶装置に格納されたデータを指すが、デバイスやプロセス、カーネル内の情報といったものもファイルとして提供するファイルシステムもある。&lt;br /&gt;
&lt;br /&gt;
:より正確に定義すれば、ファイルシステムは抽象データ型の集まりであり、ストレージ、階層構造、データの操作/アクセス/検索のために実装されたものである。ファイルシステムを特殊用途のデータベース管理システム (DBMS) と見なせるかどうかは議論があるが、ファイルシステムとデータベース管理システムには多くの共通点がある。&lt;br /&gt;
&lt;br /&gt;
個々のドライブパーティションに、多くのファイルシステムのなかから1つを設定することができます。ファイルシステムはそれぞれにメリット、デメリット、特徴があります。ここではサポートされているファイルシステムの概要を記述します。より多くの情報を見るには Wikipedia へのリンクを辿って下さい。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムのタイプ ==&lt;br /&gt;
&lt;br /&gt;
一般的な概要については {{man|5|filesystems}} を、詳細な機能の比較については [[Wikipedia:Comparison of file systems]] を参照してください。カーネルによってすでにロードされている、あるいは組み込まれているファイルシステムは、{{ic|/proc/filesystems}} にリストアップされています。一方、インストールされているモジュールは {{ic|ls /lib/modules/$(uname -r)/kernel/fs}} ですべて見ることができます。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ 組み込まれている (in-tree) ファイルシステムと FUSE ファイルシステム&lt;br /&gt;
! ファイルシステム&lt;br /&gt;
! 作成コマンド&lt;br /&gt;
! ユーザースペースユーティリティ&lt;br /&gt;
! [[Archiso]] [https://gitlab.archlinux.org/archlinux/archiso/-/blob/master/configs/releng/packages.x86_64]&lt;br /&gt;
! カーネルのドキュメント [https://docs.kernel.org/filesystems/index.html]&lt;br /&gt;
! 備考&lt;br /&gt;
|-&lt;br /&gt;
| [[Bcachefs]]&lt;br /&gt;
| {{man|8|bcachefs}}&lt;br /&gt;
| {{Pkg|bcachefs-tools}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [https://docs.kernel.org/filesystems/bcachefs/index.html]&lt;br /&gt;
| Linux 6.7 から利用可能 (実験的)。&lt;br /&gt;
|-&lt;br /&gt;
| [[Btrfs]]&lt;br /&gt;
| {{man|8|mkfs.btrfs}}&lt;br /&gt;
| {{Pkg|btrfs-progs}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [https://docs.kernel.org/filesystems/btrfs.html btrfs.html]&lt;br /&gt;
| [https://btrfs.readthedocs.io/en/latest/Status.html 安定性に関する状況]&lt;br /&gt;
|-&lt;br /&gt;
| [[VFAT]]&lt;br /&gt;
| {{man|8|mkfs.fat}}&lt;br /&gt;
| {{Pkg|dosfstools}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [https://docs.kernel.org/filesystems/vfat.html vfat.html]&lt;br /&gt;
| [[Wikipedia:ja:Windows 9x系|Windows 9x]] のファイルシステム。一般的に、USB フラッシュドライブや SD カードで用いられます。&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[Wikipedia:ja:exFAT|exFAT]]&lt;br /&gt;
| {{man|8|mkfs.exfat}} &lt;br /&gt;
| {{Pkg|exfatprogs}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|&lt;br /&gt;
| Linux 5.4 のネイティブのファイルシステム。[https://lwn.net/Articles/799425/] 一般的に、USB フラッシュドライブや SD カードで用いられます。&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkexfatfs}}&lt;br /&gt;
| {{Pkg|exfat-utils}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| N/A (FUSE ベース)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[F2FS]]&lt;br /&gt;
| {{man|8|mkfs.f2fs}}&lt;br /&gt;
| {{Pkg|f2fs-tools}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [https://docs.kernel.org/filesystems/f2fs.html f2fs.html]&lt;br /&gt;
| フラッシュメモリベースのデバイス。縮小することはできません。&lt;br /&gt;
|-&lt;br /&gt;
| [[ext3]]&lt;br /&gt;
| {{man|8|mkfs.ext3}}&lt;br /&gt;
| {{Pkg|e2fsprogs}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [https://docs.kernel.org/filesystems/ext3.html ext3.html]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[ext4]]&lt;br /&gt;
| {{man|8|mkfs.ext4}}&lt;br /&gt;
| {{Pkg|e2fsprogs}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [https://docs.kernel.org/admin-guide/ext4.html ext4.html]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:ja:Hierarchical File System|HFS]]&lt;br /&gt;
| {{man|8|mkfs.hfsplus|url=https://manpages.debian.org/unstable/hfsprogs/mkfs.hfsplus.8.en.html}}&lt;br /&gt;
| {{AUR|hfsprogs}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| [https://docs.kernel.org/filesystems/hfs.html hfs.html]&lt;br /&gt;
| [[Wikipedia:ja:Classic Mac OS|Classic Mac OS]] のファイルシステム&lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:ja:HFS Plus|HFS+]]&lt;br /&gt;
| {{man|8|mkfs.hfsplus|url=https://manpages.debian.org/unstable/hfsprogs/mkfs.hfsplus.8.en.html}}&lt;br /&gt;
| {{AUR|hfsprogs}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| [https://docs.kernel.org/filesystems/hfsplus.html hfsplus.html]&lt;br /&gt;
| [[Wikipedia:ja:macOS|macOS]] (8–10.12) のファイルシステム&lt;br /&gt;
|-&lt;br /&gt;
| [[JFS]]&lt;br /&gt;
| {{man|8|mkfs.jfs}}&lt;br /&gt;
| {{Pkg|jfsutils}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [https://docs.kernel.org/admin-guide/jfs.html jfs.html]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[NILFS2]]&lt;br /&gt;
| {{man|8|mkfs.nilfs2}}&lt;br /&gt;
| {{Pkg|nilfs-utils}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [https://docs.kernel.org/filesystems/nilfs2.html nilfs2.html]&lt;br /&gt;
| 基本的にフラッシュベースのデバイスで用いることを意図しています。[[拡張属性|xattrs]] と [[ACL]] はサポートされていません。&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[NTFS]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [https://docs.kernel.org/filesystems/ntfs3.html ntfs3.html]&lt;br /&gt;
| [[Wikipedia:ja:Windows NT|Windows NT]] のファイルシステム。[https://www.paragon-software.com/home/ntfs3-driver-faq/ 新しいドライバ]。Linux 5.15 から利用可能。&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.ntfs}}&lt;br /&gt;
| {{Pkg|ntfs-3g}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| N/A (FUSE ベース)&lt;br /&gt;
| 拡張機能付き FUSE ドライバ。&lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:ReiserFS|ReiserFS]]&lt;br /&gt;
| {{man|8|mkfs.reiserfs|url=https://manpages.debian.org/unstable/reiserfsprogs/mkfs.reiserfs.8.en.html}}&lt;br /&gt;
| {{AUR|reiserfsprogs}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
|&lt;br /&gt;
| [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb103a51640ee32ab01c51e13bf8fca211f25f61 Linux 5.18 から非推奨となっており]、[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fb6f20ecb121cef4d7946f834a6ee867c4e21b4a Linux 6.13 で削除されました]。&lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:ja:Universal Disk Format|UDF]]&lt;br /&gt;
| {{man|8|mkfs.udf}}&lt;br /&gt;
| {{Pkg|udftools}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [https://docs.kernel.org/filesystems/udf.html udf.html]&lt;br /&gt;
| ディスクイメージや DVD/ブルーレイ用の ISO/IEC 13346 ファイルシステム。&lt;br /&gt;
|-&lt;br /&gt;
| [[XFS]]&lt;br /&gt;
| {{man|8|mkfs.xfs}}&lt;br /&gt;
| {{Pkg|xfsprogs}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|&lt;br /&gt;
[https://docs.kernel.org/admin-guide/xfs.html xfs.html]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.kernel.org/filesystems/xfs/xfs-delayed-logging-design.html xfs-delayed-logging-design.html]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://docs.kernel.org/filesystems/xfs/xfs-self-describing-metadata.html xfs-self-describing-metadata.html]&lt;br /&gt;
| [https://web.archive.org/web/20220902080136/https://xfs.org/index.php/XFS_FAQ#Q:_Is_there_a_way_to_make_a_XFS_filesystem_larger_or_smaller.3F 縮小不可]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ 外部 (out-of-tree) のファイルシステム&lt;br /&gt;
! ファイルシステム&lt;br /&gt;
! 作成コマンド&lt;br /&gt;
! カーネルパッチセット&lt;br /&gt;
! ユーザースペースユーティリティ&lt;br /&gt;
! 備考&lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:ja:Apple File System|APFS]]&lt;br /&gt;
| {{man|8|mkapfs|url=https://manpages.debian.org/unstable/apfsprogs/mkapfs.8.en.html}}&lt;br /&gt;
| {{AUR|linux-apfs-rw-dkms-git}}&lt;br /&gt;
| {{AUR|apfsprogs-git}}&lt;br /&gt;
| [[Wikipedia:ja:macOS|macOS]] (10.13 およびそれ以降) のファイルシステム。読み取り専用。書き込みサポートは試験的。Fuse バージョンの {{AUR|apfs-fuse-git}} も参照。&lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:ja:Reiser4|Reiser4]]&lt;br /&gt;
| {{man|8|mkfs.reiser4|url=https://manpages.debian.org/unstable/reiser4progs/mkfs.reiser4.8.en.html}}&lt;br /&gt;
|&lt;br /&gt;
| {{AUR|reiser4progs}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[ZFS]]&lt;br /&gt;
| &lt;br /&gt;
| {{AUR|zfs-linux}}, {{AUR|zfs-dkms}}&lt;br /&gt;
| {{AUR|zfs-utils}}&lt;br /&gt;
| [[Wikipedia:OpenZFS|OpenZFS]] 移植&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ジャーナリング ===&lt;br /&gt;
&lt;br /&gt;
ext3/4、HFS+、JFS、NTFS、ReiserFS、XFS ファイルシステムは[[Wikipedia:ja:ジャーナリングファイルシステム|ジャーナリング]]を使用します。ジャーナリングは、変更をファイルシステムにコミットする前にログに記録することで、障害に対する耐性を提供します。システムクラッシュや停電が発生した場合、こうしたファイルシステムはより迅速にオンラインに戻り、データが破損する可能性が低くなります。ログ記録はファイルシステム内の専用領域で行われます。&lt;br /&gt;
&lt;br /&gt;
ext3/4 はデータモードジャーナリングを提供しており、任意でメタデータに加えてデータもログに記録できます。データモードジャーナリングは書き込み操作を2回行うため (まずジャーナルに、次にディスクに)、速度面でペナルティがあります。そのため、データモードジャーナリングはデフォルトで有効化されていません。ファイルシステムの種類と機能を選ぶ際には、システム速度とデータ安全性とのトレードオフについて検討するべきでしょう。&lt;br /&gt;
&lt;br /&gt;
同様に、Reiser4 は設定可能な[https://reiser4.wiki.kernel.org/index.php/Reiser4_transaction_models 「トランザクションモデル」]を提供しています。[https://reiser4.wiki.kernel.org/index.php/V4#Wandering_Logs wandering logs] と呼ばれる特殊なモデルは、ディスクへ2回書き込む必要がありません。&#039;&#039;&#039;write-anywhere&#039;&#039;&#039; モデルは、純粋なコピーオンライト方式です。&#039;&#039;&#039;hybrid&#039;&#039;&#039; と呼ばれる混合方式は、ヒューリスティックにこれら2つのモデルを切り替えます。&lt;br /&gt;
&lt;br /&gt;
Reiser4、Btrfs、Bcachefs、ZFS といったコピーオンライト (別名 write-anywhere) ベースのファイルシステムは、設計上完全にアトミックに動作し、メタデータとインラインデータの両方に対してチェックサムを提供します (操作が不完全に行われることはありません。正常に動作しているハードウェア上では、不完全な操作によってデータが破損することはありません)。なので、これらのファイルシステムは、設計上、他のファイルシステムよりもデータ損失が発生しにくく、メタデータを保護するために従来のジャーナルを使用する必要がありません (メタデータが in-place に更新されることはないからです)。Btrfs は依然としてジャーナルのようなログツリーを使用していますが、fdatasync/fsync の高速化のために使用しているにすぎません。&lt;br /&gt;
&lt;br /&gt;
FAT、exFAT、ext2、HFS はジャーナリングもアトミック性も提供していません。これらのファイルシステムは、一時的な使用あるいは古いシステムのためのものであり、信頼できるストレージが必要である場合に使用することは推奨されません。&lt;br /&gt;
&lt;br /&gt;
=== FUSE ベースのファイルシステム ===&lt;br /&gt;
&lt;br /&gt;
[[FUSE]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== スタック可能なファイルシステム ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[eCryptfs]]|Enterprise Cryptographic Filesystem は Linux 用のディスク暗号化ソフトウェアのパッケージです。これは POSIX 準拠のファイルシステムレベルの暗号化レイヤとして実装され、オペレーティングシステムレベルで GnuPG と同様の機能を提供することを目的としています。|https://ecryptfs.org|{{Pkg|ecryptfs-utils}}}}&lt;br /&gt;
* {{App|mergerfs|FUSE ベースの union ファイルシステムです。|https://github.com/trapexit/mergerfs|{{AUR|mergerfs}}}}&lt;br /&gt;
* {{App|mhddfs|FUSE ベースの union ファイルシステムである Multi-HDD FUSE ファイルシステム。|http://mhddfs.uvw.ru|{{AUR|mhddfs}}}}&lt;br /&gt;
* {{App|[[overlayfs]]|OverlayFS は Linux 用のファイルシステムサービスで、他のファイルシステムの union マウントを実装しています。|https://docs.kernel.org/filesystems/overlayfs.html|{{Pkg|linux}}}}&lt;br /&gt;
* {{App|unionfs-fuse|ユーザースペース Unionfs の実装。|https://github.com/rpodgorny/unionfs-fuse|{{AUR|unionfs-fuse}}}}&lt;br /&gt;
&lt;br /&gt;
=== 読み取り専用のファイルシステム ===&lt;br /&gt;
&lt;br /&gt;
* {{App|DwarFS|DwarFS は、Linux と Windows 用の高速で高圧縮率の読み取り専用ファイルシステムです。DwarFS は、多かれ少なかれ SquashFS と同じ機能をサポートしていますが、より圧縮に優れており、ハッシュアルゴリズムをカスタム可能です。|https://github.com/mhx/dwarfs|{{Aur|dwarfs}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:EROFS|EROFS]]|Enhanced Read-Only File System は、パフォーマンスの向上とストレージ容量の圧縮を目的とした軽量の読み取り専用ファイルシステムです。|https://erofs.docs.kernel.org/|{{Pkg|erofs-utils}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:SquashFS|SquashFS]]|SquashFS は、読み取り専用の圧縮ファイルシステムです。SquashFS はファイル、inodes、ディレクトリーを圧縮し、さらに大きな圧縮のために最大 1 MiB のブロック・サイズをサポートします。|https://github.com/plougher/squashfs-tools|{{Pkg|squashfs-tools}}}}&lt;br /&gt;
&lt;br /&gt;
=== クラスタ化ファイルシステム ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[BeeGFS]]|高パフォーマンスコンピューティングのために開発・最適化された並列ファイルシステム。|https://www.beegfs.io/c/|{{AUR|beegfs-client}}}}&lt;br /&gt;
* {{App|[[Ceph]]|優れたパフォーマンス、信頼性、拡張性を実現するように設計された、統合された分散ストレージシステム。|https://ceph.com/|{{AUR|ceph}}}}&lt;br /&gt;
* {{App|[[GlusterFS]]|数ペタバイトまで拡張可能なクラスタファイルシステム。|https://www.gluster.org/|{{Pkg|glusterfs}}}}&lt;br /&gt;
* {{App|[[IPFS]]|Web を高速化、安全化、およびオープン化するためのピアツーピアハイパーメディアプロトコル。IPFS は HTTP に取って代わり、私たち全員のためにより良いウェブを構築することを目指しています。ブロックを使用してファイルの一部を保存し、各ネットワーク・ノードは関心のあるコンテンツのみを保存し、重複除外、分散、拡張性の高いシステムをユーザーのみに制限 (現在はアルファ版)|https://ipfs.io/|{{Pkg|kubo}}}}&lt;br /&gt;
* {{App|[[MinIO]]|MinIO は高パフォーマンスな S3 互換のオブジェクトストレージを提供します。|https://min.io|{{Pkg|minio}}}}&lt;br /&gt;
* {{App|[[Wikipedia: MooseFS|MooseFS]]|MooseFS は、耐障害性で可用性が高い、高性能なスケールアウトネットワーク分散ファイルシステムです。|https://moosefs.com|{{Pkg|moosefs}}}}&lt;br /&gt;
* {{App|OpenAFS|AFS 分散ファイルシステムのオープンソース実装。|https://www.openafs.org|{{AUR|openafs}}}}&lt;br /&gt;
* {{App|[[Wikipedia: OrangeFS|OrangeFS]]|OrangeFS は、マルチサーバ・ベースのディスク・ストレージに透過的に並列アクセスするために設計されたスケール・アウト・ネットワーク・ファイル・システムです。並列および分散アプリケーション向けに最適化された MPI-IO のサポート。Linux クライアントだけでなく、Windows、Hadoop、WebDAV 用の並列ストレージの使用を簡素化します。POSIX 互換です。バージョン4.6以降のLinux カーネルに含まれます。|https://www.orangefs.org/}}&lt;br /&gt;
* {{App|Sheepdog|ボリュームおよびコンテナサービス用の分散オブジェクトストレージシステムで、ディスクとノードをインテリジェントに管理します。|https://sheepdog.github.io/sheepdog/|{{AUR|sheepdog}}}}&lt;br /&gt;
&lt;br /&gt;
=== 共有ディスクファイルシステム ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:GFS2|GFS2]]|GFS2 では、クラスタのすべてのメンバーが同じ共有ブロック・ストレージに直接同時にアクセスできます。|https://pagure.io/gfs2-utils|{{AUR|gfs2-utils}}}}&lt;br /&gt;
* {{App|[[Wikipedia:OCFS2|OCFS2]]|Oracle Cluster File System (バージョン2) は、Oracle Corporation によって開発され、GNU General Public License の下でリリースされる共有ディスク・ファイル・システムです。|https://oss.oracle.com/projects/ocfs2/|{{AUR|ocfs2-tools}}}}&lt;br /&gt;
* {{App|[[Wikipedia:VMware_VMFS|VMware VMFS]]|VMware の VMFS (Virtual Machine File System) は、同社の主力サーバ仮想化スイートである vSphere で使用されているファイルシステムです。|https://core.vmware.com/resource/vmware-vsphere-vmfs|{{AUR|vmfs-tools}}}}&lt;br /&gt;
&lt;br /&gt;
== 既存のファイルシステムを特定する ==&lt;br /&gt;
&lt;br /&gt;
[[lsblk]] を使って、既存のファイルシステムを特定することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ lsblk -f|2=&lt;br /&gt;
NAME   FSTYPE LABEL     UUID                                 MOUNTPOINT&lt;br /&gt;
sdb&lt;br /&gt;
└─sdb1 vfat   Transcend 4A3C-A9E9&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
存在する場合、既存のファイルシステムが {{ic|FSTYPE}} 列に表示されます。[[mount]] されている場合は、{{ic|MOUNTPOINT}} 列に表示されます。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムを作成する ==&lt;br /&gt;
&lt;br /&gt;
ファイルシステムは通常、[[LVM]]、[[RAID]]、[[dm-crypt]] などの論理コンテナ内、[[パーティション]]、通常のファイル ([[Wikipedia:Loop device]] を参照) に作成されます。このセクションでは、パーティションの場合について説明します。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=ファイルシステムはディスクに直接書き込むことができます (そのようなディスクは &#039;&#039;スーパーフロッピー&#039;&#039; または [[パーティショニング#パーティションレスディスク|パーティションレスディスク]] と呼ばれます)。この方法を取るといくつかの制限が発生します (特に、そのようなドライブから[[Arch ブートプロセス|起動する]]場合)。例については、[[Btrfs#パーティションレス Btrfs ディスク]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* 新しいファイルシステムを作成した後、このパーティション上に以前保存されていたデータを復元できる可能性はほとんどありません。&#039;&#039;&#039;保持したいデータのバックアップを作成してください&#039;&#039;&#039;。&lt;br /&gt;
* 特定のパーティションの目的により、ファイルシステムの選択が制限される場合があります。たとえば、 [[EFI システムパーティション]] には [[FAT32]] ファイルシステムが含まれている必要があり、 {{ic|/boot}} ディレクトリを含むファイルシステムは [[ブートローダー]] によってサポートされている必要があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
続行する前に、ファイルシステムを作成する[[lsblk|デバイスを特定]]し、それがマウントされているかどうかを[[lsblk|確認]]してください。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsblk -f|&lt;br /&gt;
NAME   FSTYPE   LABEL       UUID                                 MOUNTPOINT&lt;br /&gt;
sda&lt;br /&gt;
├─sda1                      C4DA-2C4D&lt;br /&gt;
├─sda2 ext4                 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 /mnt&lt;br /&gt;
└─sda3                      56adc99b-a61e-46af-aab7-a6d07e504652&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
先に進む前に、マウントされているファイルシステムを &#039;&#039;&#039;[[#ファイルシステムのアンマウント|アンマウント]]しなければなりません&#039;&#039;&#039;。上記の例では、既存のファイルシステムは {{ic|/dev/sda2}} にあり、 {{ic|/mnt}} にマウントされていますが、マウントを解除する必要があります:&lt;br /&gt;
&lt;br /&gt;
 # umount /dev/sda2&lt;br /&gt;
&lt;br /&gt;
マウントされたばかりのファイルシステムを見つける方法は、[[#マウントしたファイルシステムの一覧表示]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
新しいファイルシステムを作成するには、{{man|8|mkfs}} を使用します。正確なタイプ、および特定のファイルシステムにインストールする可能性のあるユーザースペースユーティリティについては、 [[#ファイルシステムのタイプ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
たとえば、 {{ic|/dev/sda1}} でタイプ [[ext4]] (Linux データパーティションで一般的に使われています) の新しいファイルシステムを作成するには、次のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 /dev/sda1&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* &#039;&#039;mkfs.ext4&#039;&#039; の {{ic|-L}} フラグを使用して、[[永続的なブロックデバイスの命名#by-label|ファイルシステムラベル]] を指定できます。&#039;&#039;e2label&#039;&#039; を使用して、既存のファイルシステムのラベルを変更できます。&lt;br /&gt;
* ファイルシステムは、特定の制限付きで、作成後に「サイズ変更」できます。たとえば、 [[XFS]] ファイルシステムのサイズを増やすことはできますが、減らすことはできません。詳細については、 [[Wikipedia:ファイルシステムの比較#サイズ変更機能]] およびそれぞれのファイルシステムのドキュメントを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
これで、新しいファイルシステムを任意のディレクトリにマウントできます。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムのマウント ==&lt;br /&gt;
&lt;br /&gt;
デバイス(パーティションなど)上にあるファイルシステムを手動でディレクトリにマウントするには、{{man|8|mount}} を使用します。この例では {{ic|/dev/sda1}} を {{ic|/mnt}} にマウントしています。&lt;br /&gt;
&lt;br /&gt;
 # mount /dev/sda1 /mnt&lt;br /&gt;
&lt;br /&gt;
これは {{ic|/dev/sda1}} 上のファイルシステムをディレクトリ {{ic|/mnt}} にアタッチし、ファイルシステムの内容を見えるようにするものです。この操作の前に {{ic|/mnt}} に存在していたデータは、デバイスがアンマウントされるまで不可視状態になります。&lt;br /&gt;
&lt;br /&gt;
[[fstab]] には、デバイスが存在する場合に自動的にマウントされる方法に関する情報が含まれています。この動作を変更する方法の詳細については、[[fstab]] の記事を参照してください。&lt;br /&gt;
&lt;br /&gt;
デバイスが {{ic|/etc/fstab}} で指定されていて、コマンドラインでデバイスかマウントポイントだけが指定された場合、その情報がマウント時に使用されます。例えば、{{ic|/etc/fstab}} に {{ic|/dev/sda1}} を {{ic|/mnt}} にマウントするという行がある場合、以下は自動的にその場所にデバイスをマウントすることになります。&lt;br /&gt;
&lt;br /&gt;
 # mount /dev/sda1&lt;br /&gt;
&lt;br /&gt;
または、&lt;br /&gt;
&lt;br /&gt;
 # mount /mnt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mount&#039;&#039; にはいくつかのオプションがあり、その多くは指定されたファイルシステムに依存します。&lt;br /&gt;
オプションは以下の方法で変更することができます:&lt;br /&gt;
&lt;br /&gt;
* コマンドラインで &#039;&#039;mount&#039;&#039; と共にフラグを使用する&lt;br /&gt;
* [[fstab]] を編集する&lt;br /&gt;
* [[udev]] ルールを作成する&lt;br /&gt;
* [[Arch build system|カーネルを自分でコンパイルする]]&lt;br /&gt;
* ファイルシステム固有のマウントスクリプト ({{ic|/usr/bin/mount.*}} にあります) を使用する&lt;br /&gt;
&lt;br /&gt;
より詳しい情報は、これらの関連記事と、興味のあるファイルシステムの記事をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* ファイルシステムは &#039;&#039;mount&#039;&#039; の代わりに &#039;&#039;systemd-mount&#039;&#039; でもマウントできます。マウントポイントが指定されていない場合、ファイルシステムは {{ic|/run/media/system/&#039;&#039;device_identifier&#039;&#039;/}} にマウントされます。これにより、ファイルシステムをどこにマウントするかを決めることなく、簡単にマウントすることができます。使い方や詳細は {{man|1|systemd-mount}} を参照してください。&lt;br /&gt;
* 一般ユーザーとしてファイルシステムをマウントする方法については、[[udisks#使用方法]] を見てください。これにより、root 権限や完全なグラフィック環境、udisks を使用するファイルマネージャを用いずにファイルシステムをマウントできるようになります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウントしたファイルシステムの一覧表示 ===&lt;br /&gt;
&lt;br /&gt;
マウントされている全てのファイルシステムを一覧表示するには {{man|8|findmnt}} を使ってください:&lt;br /&gt;
&lt;br /&gt;
 $ findmnt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;findmnt&#039;&#039; は様々な引数を取り、出力をフィルタリングしたり、追加情報を表示したりすることができます。例えば、デバイスやマウントポイントを引数として取り、指定されたものについての情報のみを表示させることができます:&lt;br /&gt;
&lt;br /&gt;
 $ findmnt /dev/sda1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;findmnt&#039;&#039; は {{ic|/etc/fstab}}, {{ic|/etc/mtab}}, {{ic|/proc/self/mounts}} から情報を収集します。&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステムのアンマウント ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムをアンマウントするには {{man|8|umount}} を使ってください。ファイルシステムがあるデバイス (例:{{ic|/dev/sda1}}) かマウントポイント (例:{{ic|/mnt}}) のどちらかを指定することが可能です。&lt;br /&gt;
&lt;br /&gt;
 # umount /dev/sda1&lt;br /&gt;
&lt;br /&gt;
または、&lt;br /&gt;
&lt;br /&gt;
 # umount /mnt&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;linux Structure needs cleaning&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムを[[#ファイルシステムのアンマウント|アンマウント]]し、問題のあるボリュームで [[fsck]] を実行してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* {{man|5|filesystems}}&lt;br /&gt;
* {{man|1|systemd-mount}}&lt;br /&gt;
* [https://docs.kernel.org/filesystems/index.html Linux によってサポートされているファイルシステムのドキュメント]&lt;br /&gt;
* [[Wikipedia:File systems]]&lt;br /&gt;
* [[Wikipedia:Mount (Unix)]]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|File systems|2025-07-04|839407}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Fstab&amp;diff=40511</id>
		<title>Fstab</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Fstab&amp;diff=40511"/>
		<updated>2025-07-04T14:43:07Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:ファイルシステム]]&lt;br /&gt;
[[Category:ブートプロセス]]&lt;br /&gt;
[[de:Fstab]]&lt;br /&gt;
[[en:Fstab]]&lt;br /&gt;
[[es:Fstab]]&lt;br /&gt;
[[fr:Fstab]]&lt;br /&gt;
[[hu:Fstab]]&lt;br /&gt;
[[it:Fstab]]&lt;br /&gt;
[[pt:Fstab]]&lt;br /&gt;
[[ru:Fstab]]&lt;br /&gt;
[[zh-hans:Fstab]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|永続的なブロックデバイスの命名}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related|tmpfs}}&lt;br /&gt;
{{Related|スワップ}}&lt;br /&gt;
{{Related|genfstab}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
{{man|5|fstab}} ファイルは、ディスクパーティションや様々なブロックデバイス、リモートファイルシステムをどうやってファイルシステムにマウントするかを記述します。&lt;br /&gt;
&lt;br /&gt;
ファイルシステムは一行毎に記述されます。書かれている定義は、起動時やシステムマネージャの設定がリロードされたときに [[systemd]] の mount ユニットに動的に変換されます。デフォルトの設定では、マウントを必要とするサービスが起動する前にファイルシステムの [[fsck]] とマウントを自動的に実行します。例えば、[[NFS]] や [[Samba]] などのリモートファイルシステムはネットワークが立ち上がった後に systemd によって自動的にマウントされます。そのため、{{ic|/etc/fstab}} に指定するローカル・リモートファイルシステムのマウントに設定は必要ありません。詳しくは {{man|5|systemd.mount}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{ic|mount}} コマンドはディレクトリやデバイスがひとつだけ指定された場合、他のパラメータの値を取得するために fstab を使います。このとき、fstab に記述されたマウントオプションも使われます。&lt;br /&gt;
&lt;br /&gt;
== 使用法 ==&lt;br /&gt;
&lt;br /&gt;
以下は、ファイルシステムの UUID を使用した {{ic|/etc/fstab}} の例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-wrap: nowrap; white-space: pre; word-break: keep-all;&amp;quot;&amp;gt;# &amp;lt;device&amp;gt;                                &amp;lt;dir&amp;gt; &amp;lt;type&amp;gt; &amp;lt;options&amp;gt;                                        &amp;lt;dump&amp;gt; &amp;lt;fsck&amp;gt;&lt;br /&gt;
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4 defaults                                           0      1&lt;br /&gt;
UUID=CBB6-24F2                            /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2&lt;br /&gt;
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap defaults                                           0      0&lt;br /&gt;
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 defaults                                           0      2&lt;br /&gt;
&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|&amp;lt;device&amp;gt;}} には、マウントされるべきブロック特殊デバイスやリモートファイルシステムを記述します。[[#ファイルシステムの識別]] を見てください。&lt;br /&gt;
* {{ic|&amp;lt;dir&amp;gt;}} は、ファイルシステムが[[マウント]]されるディレクトリ (つまりマウントポイント) です。このディレクトリは事前に作成しておく必要があります。&lt;br /&gt;
* {{ic|&amp;lt;type&amp;gt;}} は[[ファイルシステム]]の種類です。&lt;br /&gt;
* {{ic|&amp;lt;options&amp;gt;}} はファイルシステムのマウントオプションです。{{man|8|mount|FILESYSTEM-INDEPENDENT MOUNT OPTIONS}} と {{man|5|ext4|Mount options for ext4}} を見てください。&lt;br /&gt;
* {{ic|&amp;lt;dump&amp;gt;}} は {{man|8|dump|url=https://linux.die.net/man/8/dump}} ユーティリティによってチェックされます。このフィールドは通常 {{ic|0}} にセットします。{{ic|0}} はチェックを無効化します。&lt;br /&gt;
* {{ic|&amp;lt;fsck&amp;gt;}} は、起動時にチェックするファイルシステムの順番を設定します。{{man|8|fsck}} を見てください。ルートファイルシステムには {{ic|1}} を設定するべきです。他のパーティションには {{ic|2}} を設定するか、チェックを無効化する {{ic|0}} を設定するべきです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* タイプ {{ic|auto}} は、使用されているファイルシステムの種類をマウントコマンドに推測させます。このオプションは、[[光学ディスクドライブ|光学メディア]] (CD/DVD/Blu-ray) の場合に便利です。&lt;br /&gt;
* ルートファイルシステムが [[btrfs]] か [[XFS]] の場合、fsck の順番は {{ic|1}} ではなく {{ic|0}} に設定するべきです。{{man|8|fsck.btrfs}} と {{man|8|fsck.xfs}} を見てください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
スタートアップ時や、{{ic|noauto}} オプションが指定されていないデバイスに対して {{man|8|mount}} コマンドを {{ic|-a}} フラグ付きで実行した時に、{{ic|/etc/fstab}} 内で指定されたすべてのデバイスは自動的にマウントされます。リストにあるが存在しないデバイスは、{{ic|nofail}} オプションが使用されている場合を除き、エラーとなります。&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|5|fstab|DESCRIPTION}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムの識別 ==&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/fstab}} でファイルシステムを識別する方法がいくつか存在します: カーネルの名前記述子、ファイルシステムのラベルや UUID、GPT パーティションのラベルや UUID です。カーネルの名前記述子は使用すべきではありません。ラベルよりも UUID や PARTUUID を優先して使用すべきです。詳細は [[永続的なブロックデバイスの命名]] を見てください。この記事を読み進める前に、その記事を先に読むことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
このセクションでは、ファイルシステムをマウントするいくつかの方法を例を通して説明します。以下の例で使用されるコマンド {{ic|lsblk -f}} と {{ic|blkid}} の出力は、[[永続的なブロックデバイスの命名]] で見られます。&lt;br /&gt;
&lt;br /&gt;
=== カーネルの名前記述子 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|lsblk -f}} を実行してパーティションの一覧を出力し、&#039;&#039;NAME&#039;&#039; 列の値の前に {{ic|/dev/}} を付け加えてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-wrap: nowrap; white-space: pre; word-break: keep-all;&amp;quot;&amp;gt;# &amp;lt;device &amp;lt;dir&amp;gt; &amp;lt;type&amp;gt; &amp;lt;options&amp;gt;                                          &amp;lt;dump&amp;gt; &amp;lt;fsck&amp;gt;&lt;br /&gt;
/dev/sda2 /     ext4   defaults                                           0      1&lt;br /&gt;
/dev/sda1 /boot vfat   defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2&lt;br /&gt;
/dev/sda3 /home ext4   defaults                                           0      2&lt;br /&gt;
/dev/sda4 none  swap   defaults                                           0      0&lt;br /&gt;
&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|[[デバイスファイル#ブロックデバイスの名前|ブロックデバイスのカーネル名記述子]] は [[永続的なブロックデバイスの命名|永続的]] ではなく、ブートごとに変更される可能性があるため、設定ファイル ({{ic|/etc/fstab を含む}}) で使用しないでください。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステムラベル ===&lt;br /&gt;
&lt;br /&gt;
{{ic|lsblk -f}} を実行してパーティションの一覧を出力し、[[LABEL]] 列の値の前に {{ic|1=LABEL=}} を付け加えてください。あるいは、{{ic|blkid}} を実行し、LABEL の値を引用符無しで使ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-wrap: nowrap; white-space: pre; word-break: keep-all;&amp;quot;&amp;gt;# &amp;lt;device&amp;gt;   &amp;lt;dir&amp;gt; &amp;lt;type&amp;gt; &amp;lt;options&amp;gt;                                          &amp;lt;dump&amp;gt; &amp;lt;fsck&amp;gt;&lt;br /&gt;
LABEL=System /     ext4   defaults                                           0      1&lt;br /&gt;
LABEL=ESP    /boot vfat   defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2&lt;br /&gt;
LABEL=Data   /home ext4   defaults                                           0      2&lt;br /&gt;
LABEL=Swap   none  swap   defaults                                           0      0&lt;br /&gt;
&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|任意のフィールドにスペースが含まれる場合、[[#ファイルパスのスペース]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステム UUID ===&lt;br /&gt;
&lt;br /&gt;
{{ic|lsblk -f}} を実行してパーティションの一覧を出力し、[[UUID]] 列の値の前に {{ic|1=UUID=}} を付け加えてください。あるいは、{{ic|blkid}} を実行し、UUID の値を引用符無しで使ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-wrap: nowrap; white-space: pre; word-break: keep-all;&amp;quot;&amp;gt;# &amp;lt;device&amp;gt;                                &amp;lt;dir&amp;gt; &amp;lt;type&amp;gt; &amp;lt;options&amp;gt;                                        &amp;lt;dump&amp;gt; &amp;lt;fsck&amp;gt;&lt;br /&gt;
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4 defaults                                           0      1&lt;br /&gt;
UUID=CBB6-24F2                            /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2&lt;br /&gt;
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 defaults                                           0      2&lt;br /&gt;
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap defaults                                           0      0&lt;br /&gt;
&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== GPT パーティションラベル ===&lt;br /&gt;
&lt;br /&gt;
{{ic|blkid}} を実行してパーティションの一覧を出力し、[[PARTLABEL]] の値を引用符無しで使ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-wrap: nowrap; white-space: pre; word-break: keep-all;&amp;quot;&amp;gt;# &amp;lt;device&amp;gt;                           &amp;lt;dir&amp;gt; &amp;lt;type&amp;gt; &amp;lt;options&amp;gt;                                        &amp;lt;dump&amp;gt; &amp;lt;fsck&amp;gt;&lt;br /&gt;
PARTLABEL=GNU/Linux                  /     ext4 defaults                                           0      1&lt;br /&gt;
PARTLABEL=EFI\040system\040partition /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2&lt;br /&gt;
PARTLABEL=Home                       /home ext4 defaults                                           0      2&lt;br /&gt;
PARTLABEL=Swap                       none  swap defaults                                           0      0&lt;br /&gt;
&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|任意のフィールドにスペースが含まれる場合、[[#ファイルパスのスペース]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
=== GPT パーティション UUID ===&lt;br /&gt;
&lt;br /&gt;
{{ic|blkid}} を実行してパーティションの一覧を出力し、[[PARTUUID]] の値を引用符無しで使ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-wrap: nowrap; white-space: pre; word-break: keep-all;&amp;quot;&amp;gt;# &amp;lt;device&amp;gt;                                    &amp;lt;dir&amp;gt; &amp;lt;type&amp;gt; &amp;lt;options&amp;gt;                                        &amp;lt;dump&amp;gt; &amp;lt;fsck&amp;gt;&lt;br /&gt;
PARTUUID=98a81274-10f7-40db-872a-03df048df366 /     ext4 defaults                                           0      1&lt;br /&gt;
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat defaults,nodev,nosuid,noexec,fmask=0177,dmask=0077 0      2&lt;br /&gt;
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4 defaults                                           0      2&lt;br /&gt;
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none  swap defaults                                           0      0&lt;br /&gt;
&amp;lt;/span&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== systemd による自動マウント ===&lt;br /&gt;
&lt;br /&gt;
systemd のすべてのマウントオプションは {{man|5|systemd.mount}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== ローカルパーティション ====&lt;br /&gt;
&lt;br /&gt;
巨大なパーティションが存在する場合、&#039;&#039;fsck&#039;&#039; によってそのパーティションがチェックされている間に、そのパーティションに依存しないサービスを起動できるようにすると効率が良くなるかもしれません。パーティションの {{ic|/etc/fstab}} エントリに以下のオプションを追加することでそのように設定できます:&lt;br /&gt;
&lt;br /&gt;
 x-systemd.automount&lt;br /&gt;
&lt;br /&gt;
そのパーティションに最初にアクセスしたときに fsck とマウントを行うようになり、パーティションの準備ができるまでカーネルがそのパーティションへのファイルアクセスを全てバッファします。&lt;br /&gt;
この方法は、巨大な {{ic|/home}} パーティションがある場合などに適用できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|この設定はファイルシステムのタイプを {{ic|autofs}} にします。これは [[locate]] によってデフォルトで無視されます。}}&lt;br /&gt;
&lt;br /&gt;
==== リモートファイルシステム ====&lt;br /&gt;
&lt;br /&gt;
同じ設定はリモートファイルシステムのマウントにも適用できます。アクセスしたときにだけリモートファイルシステムをマウントしたい場合、{{ic|x-systemd.automount}} パラメータを使って下さい。さらに、{{ic|1=x-systemd.mount-timeout=}} オプションを使うことで、マウントコマンドが完了するまでの制限時間を指定できます。また、{{ic|_netdev}} オプションで systemd がネットワークに依存するマウントであることを認識してネットワークがオンラインになった後に順番を入れ替えます。&lt;br /&gt;
&lt;br /&gt;
 x-systemd.automount,x-systemd.mount-timeout=30,_netdev&lt;br /&gt;
&lt;br /&gt;
==== 暗号化ファイルシステム ====&lt;br /&gt;
&lt;br /&gt;
キーファイルによって暗号化されたサブの暗号化ファイルシステムがある場合も、{{ic|/etc/crypttab}} と {{ic|/etc/fstab}} の対応するエントリに {{ic|nofail}} パラメータを追加することができます。&#039;&#039;systemd&#039;&#039; はブート時に cryptsetup サービスがファイルシステムのアンロックとマウントを完了するまで待たないようになり、default.target に到達した後でマウントを完了させるようにできます。これにより、ブート直後には必要ないサブのパーティションをアンロックするためにブートが遅延することを防ぐことができます。cryptsetup の設定方法は [[dm-crypt/システム設定#Non blocking mounting]]{{Broken section link}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
デフォルトではマウントサービスはパーティションが利用可能になるまで90秒しか待たないため、キーファイルを利用可能にするのに遅延が発生するとマウントが失敗する可能性があります。そうならないようにするには、マウントサービスがパーティションがアンロックされるまで永遠に待つようにするために {{ic|1=x-systemd.mount-timeout=0}} オプションを fstab に追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /data ext4 defaults,nofail,x-systemd.device-timeout=0    0 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 自動アンマウント ====&lt;br /&gt;
&lt;br /&gt;
{{ic|x-systemd.idle-timeout}} フラグを使うことで一定時間アイドル状態のときにタイムアウトするのを指定できます。例:&lt;br /&gt;
&lt;br /&gt;
 x-systemd.automount,x-systemd.idle-timeout=1min&lt;br /&gt;
&lt;br /&gt;
上記の設定の場合、1分間操作がないと systemd によってアンマウントされます。&lt;br /&gt;
&lt;br /&gt;
=== 外部デバイス ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|nofail オプションはここで説明されているようには動きません。[[:en:Talk:Fstab#3.2 External Device options]]}}&lt;br /&gt;
&lt;br /&gt;
外部デバイスが存在する時はマウントし、存在しない場合は無視したい場合、{{ic|nofail}} オプションが必要です。これにより、起動時にエラーが発生するのを防ぐことができます。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
LABEL=MyExternalDrive /media/backup    jfs    nofail,x-systemd.device-timeout=5    0  2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|nofail}} オプションは {{ic|x-systemd.device-timeout}} オプションと組み合わせて使うのが最も効果的です。デフォルトのデバイスタイムアウトは 90 秒であるのが理由で、タイムアウトを再設定しなかった場合、{{ic|nofail}} だけが指定されている切断済みの外部デバイスのせいで起動時間が 90 秒長くなってしまいます。タイムアウトを 0 にはしないでください。0 は無限に待つことになります。&lt;br /&gt;
&lt;br /&gt;
=== ファイルパスのスペース ===&lt;br /&gt;
&lt;br /&gt;
{{ic|fstab}} ではスペースがフィールドの区切り文字として使用されているため、フィールド (&#039;&#039;PARTLABEL&#039;&#039;、&#039;&#039;LABEL&#039;&#039;、マウントポイント) にスペースが含まれている場合、これらのスペースをエスケープ文字 {{ic|\}} と3桁の8進数 {{ic|040}} に置き換えなければなりません:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
UUID=47FA-4071         /home/username/Camera&amp;lt;span style=&amp;quot;color:grey;&amp;quot;&amp;gt;\040&amp;lt;/span&amp;gt;Pictures   vfat  defaults      0  0&lt;br /&gt;
LABEL=Storage&amp;lt;span style=&amp;quot;color:grey;&amp;quot;&amp;gt;\040&amp;lt;/span&amp;gt;drive /media/100&amp;lt;span style=&amp;quot;color:grey;&amp;quot;&amp;gt;\040&amp;lt;/span&amp;gt;GB&amp;lt;span style=&amp;quot;color:grey;&amp;quot;&amp;gt;\040&amp;lt;/span&amp;gt;(Storage)       ext4  defaults,user 0  2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== atime オプション ===&lt;br /&gt;
&lt;br /&gt;
以下は、ドライブのパフォーマンスに影響を与える可能性のあるアクセス時間オプションです。&lt;br /&gt;
&lt;br /&gt;
* {{ic|strictatime}} オプションは、ファイルがアクセスされるたびにファイルのアクセス時間を更新します。これは、Linux がサーバーで使用される場合に特に有効です。デスクトップでの使用にはあまり価値がありません。{{ic|strictatime}} オプションの欠点は、ページキャッシュからファイルを読み取る(ドライブではなくメモリから読み取る)場合でも、書き込みが発生することです。&lt;br /&gt;
* {{ic|noatime}} オプションは、ファイルを読み取るたびにファイルアクセス時間をドライブに書き込むことを完全に無効にします。これは、最後に変更されてからファイルが読み取られたかどうかを知る必要があるアプリケーションを除き、ほぼすべてのアプリケーションでうまく機能します。このオプションが有効になっている場合、ファイルへの書き込み時間情報は、ファイルが書き込まれるたびに引き続き更新されます。&lt;br /&gt;
* {{ic|nodiratime}} オプションは、ディレクトリに対してのみファイルアクセス時間の書き込みを無効にし、他のファイルは引き続きアクセス時間が書き込まれます。{{Note|{{ic|noatime}} は {{ic|nodiratime}} を含みます。[https://lwn.net/Articles/244941/ 両方を指定する必要はありません。]}}&lt;br /&gt;
*{{ic|relatime}} は、以前のアクセス時間が現在の変更または変更時間よりも前の場合にのみアクセス時間を更新します。さらに、Linux 2.6.30以降、以前のアクセス時間が24時間以上前の場合、アクセス時間は常に更新されます。このオプションは、{{ic|defaults}} オプション、{{ic|atime}} オプション(カーネルのデフォルトである {{ic|relatime}} を使用することを意味します。{{man|8|mount}} および [https://lwn.net/Articles/244829/ Once upon atime] を参照)またはオプションがまったく指定されていない場合に使用されます。&lt;br /&gt;
&lt;br /&gt;
[[Mutt]] や、最後に変更されてからファイルが読み取られたかどうかを知る必要がある他のアプリケーションを使用する場合、{{ic|noatime}} オプションは使用しないでください。{{ic|relatime}} オプションを使用することは許容され、パフォーマンスの向上も提供します。&lt;br /&gt;
&lt;br /&gt;
カーネル4.0以降、別の関連オプションがあります:&lt;br /&gt;
&lt;br /&gt;
* {{ic|lazytime}} は、inode タイムスタンプ(アクセス、変更、作成時間)の変更をメモリ内でのみ保持することにより、ディスクへの書き込みを減らします。オンディスクタイムスタンプは、(1)ファイルタイムスタンプに関係のない変更のためにファイルinodeを更新する必要がある場合、(2)ディスクへの同期が発生した場合、(3)削除されていない inode がメモリから削除された場合、または(4)メモリ内コピーが最後にディスクに書き込まれてから24時間以上経過した場合にのみ更新されます。&lt;br /&gt;
: {{Warning|システムがクラッシュした場合、ディスク上のアクセス時間や最終変更日時は最大で24時間ずれる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|lazytime}} オプションは、前述の {{ic|*atime}} オプションと &amp;quot;組み合わせて&amp;quot; 機能し、代替として機能しないことに注意してください。つまり、デフォルトでは {{ic|relatime}} ですが、プレーンな {{ic|relatime}} オプションと同じかそれ以下のディスク書き込みコストで {{ic|strictatime}} にすることもできます。&lt;br /&gt;
&lt;br /&gt;
=== ルートパーティションの再マウント ===&lt;br /&gt;
&lt;br /&gt;
何らかの理由で誤って ルートパーティションを読み込み専用でマウントしてしまった場合は、次のコマンドで ルートパーティションを再マウントしてください:&lt;br /&gt;
&lt;br /&gt;
 # mount -o remount,rw /&lt;br /&gt;
&lt;br /&gt;
=== GPT パーティションの自動マウント ===&lt;br /&gt;
&lt;br /&gt;
UEFI/GPT を使用している場合、[https://uapi-group.org/specifications/specs/discoverable_partitions_specification/ Discoverable Partitions Specification] に従ってパーティショニングすることで、特定のパーティションを {{ic|/etc/fstab}} から省略することができ、{{man|8|systemd-gpt-auto-generator}} を使ってそのパーティションをマウントすることができます。[[systemd#GPT パーティションの自動マウント]] を見てください。&lt;br /&gt;
&lt;br /&gt;
ルートボリュームのカスタムマウントオプションを指定するには、{{ic|/dev/gpt-auto-root}} をデバイス名として使用します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
/dev/gpt-auto-root  /  ext4  defaults,noatime  0  1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ルートボリュームに対してカスタムのマウントオプションを指定するには、デバイス名に {{ic|/dev/gpt-auto-root}} を使用してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
/dev/gpt-auto-root  /  ext4  defaults,noatime  0  1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== バインドマウント ===&lt;br /&gt;
&lt;br /&gt;
{{ic|bind}} オプションにより、ディレクトリをリンクさせることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
# &amp;lt;device&amp;gt;                             &amp;lt;dir&amp;gt;                         &amp;lt;type&amp;gt; &amp;lt;options&amp;gt;     &amp;lt;dump&amp;gt; &amp;lt;fsck&amp;gt;&lt;br /&gt;
UUID=94649E22649E06E0                  /media/user/OS/               ntfs    defaults,rw,errors=remount-ro  0  0&lt;br /&gt;
/media/user/OS/Users/user/Music/       /home/user/Music/             none    defaults,bind 0   0&lt;br /&gt;
/media/user/OS/Users/user/Pictures/    /home/user/Pictures/          none    defaults,bind 0   0&lt;br /&gt;
/media/user/OS/Users/user/Videos/      /home/user/Videos/            none    defaults,bind 0   0&lt;br /&gt;
/media/user/OS/Users/user/Downloads/   /home/user/Downloads/         none    defaults,bind 0   0&lt;br /&gt;
/media/user/OS/Users/user/Documents/   /home/user/Documents/         none    defaults,bind 0   0&lt;br /&gt;
/media/user/OS/Users/user/projects/    /home/user/projects/windows/  none    defaults,bind 0   0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|8|mount|Bind mount operation}} を見てください。&lt;br /&gt;
&lt;br /&gt;
=== genfstab を使用して fstab を自動的に生成する ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;genfstab&#039;&#039; ツールを使用して fstab ファイルを作成できます。詳細については、[[genfstab]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GUI ユーティリティ ===&lt;br /&gt;
&lt;br /&gt;
以下は、マウントポイントを変更する際に用いることのできるプログラムのリストです。Fstab で利用できる機能のうち一部は実装されていないかもしれませんが、最も利用される機能はすべて実装されており、作業がうんと楽になるかもしれません:&lt;br /&gt;
&lt;br /&gt;
* {{App|[[wikipedia:GNOME Disks|GNOME Disks]]|ストレージデバイスを管理するための GNOME ユーティリティ。{{Grp|gnome}} に含まれています。|https://apps.gnome.org/DiskUtility/|{{Pkg|gnome-disk-utility}}}}&lt;br /&gt;
* {{App|KDE Partition Manager|コンピュータ上のディスク、パーティション、ファイルシステムの管理を補助するユーティリティ。{{Grp|kde-system}} に含まれています。|https://apps.kde.org/partitionmanager/|{{Pkg|partitionmanager}}}}&lt;br /&gt;
&lt;br /&gt;
=== ユーザーのパーミッションと所有者を変更する ===&lt;br /&gt;
&lt;br /&gt;
あるドライブのマウントをすべてのユーザーに許可したい場合、以下のマウントポイントオプションを fstab エントリに追加することを検討してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|これは、ファイルのパーミッション機能が無いファイルシステムに対しても用いられます。この場合、ドライブ全体の所有者とパーミッションは、そのドライブをマウントしたユーザーに設定されます。}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|users}} - 全てのユーザーは、(たとえ他の通常ユーザーがそのドライブをマウントしていたとしても) 対象のファイルシステムをマウント/アンマウントできるようになります。このオプションは、noexec、nosuid、nodev オプションも暗黙的に設定します (ただし、後続のオプションによって上書きされない限り。例えば、users,exec,dev,suid)。これを有効化するには {{ic|users}} をマウントオプションに追加してください。&lt;br /&gt;
* {{ic|user}} - 任意の通常ユーザーに対象のファイルシステムのマウントを許可します。ただし、同じユーザーしかそのファイルシステムをアンマウントできません。このオプションは、noexec、nosuid、nodev オプションも暗黙的に設定します (ただし、後続のオプションによって上書きされない限り。例えば、users,exec,dev,suid)。これを有効化するには {{ic|user}} をマウントオプションに追加してください。&lt;br /&gt;
&lt;br /&gt;
FAT や exFAT のようにファイルのパーミッションが実装されていないファイルシステムの場合は、ドライブ全体及び保存されているファイルに対してユーザーとグループを明示的に設定することができます。特定のユーザーの ID は {{ic|/etc/passwd}} で調べられます。UID は passwd エントリの3番目、GID は4番目です。&lt;br /&gt;
&lt;br /&gt;
* {{ic|uid}} - ドライブの所有者 ID を設定します&lt;br /&gt;
* {{ic|gid}} - ドライブのグループ ID を設定します&lt;br /&gt;
&lt;br /&gt;
Ext4 や brtfs などパーミッション機能を持つファイルシステムの場合は、(ドライブをマウントしたユーザー以外の) 他のユーザーはドライブにアクセスできないかもしれません。{{ic|/path/to/drive/}} のパーみションを確認し、必要に応じてパーミッションを変更してください。&lt;br /&gt;
&lt;br /&gt;
=== 変更を検証する ===&lt;br /&gt;
&lt;br /&gt;
{{ic|findmnt --verify --verbose}} コマンドを使用して、fstab ファイル内の構文エラーや無効なオプションがないかを確認します。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.kernel.org/admin-guide/devices.html ブロックデバイスを含むデバイスリスト]&lt;br /&gt;
* [https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html Filesystem Hierarchy Standard]&lt;br /&gt;
* [https://www.askapache.com/optimize/super-speed-secrets/ TMPFS を使ってキャッシュとサイト速度を30倍に高速化]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Fstab|2025-07-04|838934}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E9%80%9A%E7%9F%A5&amp;diff=40506</id>
		<title>デスクトップ通知</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E9%80%9A%E7%9F%A5&amp;diff=40506"/>
		<updated>2025-07-03T08:41:23Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: TranslationStatus の時刻形式を合わせる&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:X サーバー]]&lt;br /&gt;
[[Category:通知]]&lt;br /&gt;
[[Category:ソフトウェア一覧]]&lt;br /&gt;
[[en:Desktop notifications]]&lt;br /&gt;
[[zh-hans:桌面通知程序]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|GTK}}&lt;br /&gt;
{{Related|Libcanberra}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
デスクトップ通知は、非同期に特定のイベントをユーザーに通知する小さくて控えめなポップアップダイアログです。&lt;br /&gt;
&lt;br /&gt;
== Libnotify ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|libnotify}} は {{man|1|notify-send}} ユーティリティや [[GTK]] と [[Qt]] のアプリケーションのサポートを提供する [https://specifications.freedesktop.org/notification-spec/latest/ Desktop Notifications Specification] の実装で特定のデスクトップに依存していません。この実装はすでに [[Evolution]] や [[Pidgin]] といった多くのオープンソースアプリによって使用されています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能なアイコンに関する概要は[https://specifications.freedesktop.org/icon-naming-spec/latest/ 仕様]にあります。}}&lt;br /&gt;
&lt;br /&gt;
== 通知サーバー ==&lt;br /&gt;
&lt;br /&gt;
[[#Libnotify|libnotify]] で送られた通知を受け取るには、通知サーバーが必要です。&lt;br /&gt;
&lt;br /&gt;
=== ビルトイン ===&lt;br /&gt;
&lt;br /&gt;
[[Cinnamon]]、[[Deepin]]、[[Enlightenment]]、[[GNOME]]、[[GNOME Flashback]] は独自の実装を用いて通知を表示します。これらの通知サーバーはアプリケーションからの通知を DBus 経由で受け取るためにログイン時に自動的に起動されるので、他の通知サーバーに置き換えることができない場合があります。&lt;br /&gt;
&lt;br /&gt;
[[KDE Plasma]] では、システムトレイの設定を開き、システムサービスの項目から Notifications の横にあるドロップダウンを Disabled に変更することで、ビルトインの通知サーバーを無効化することができます。その後システム設定メニューで System / Autostart のところに新しい自動起動アプリケーションを追加することで、所望の通知サーバーを追加することができます。変更を適用するには一旦ログアウトし、ログインし直す必要があります。&lt;br /&gt;
&lt;br /&gt;
=== スタンドアロン ===&lt;br /&gt;
&lt;br /&gt;
他のデスクトップ環境では、通知サーバーは手動でインストールし、[[XDG Autostart]] などを使って起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
あるいは、通知サーバーを [[D-Bus]] サービスにすることで、通知サーバーを初めて呼び出した時に自動的に起動させることもできます。ほとんどの通知サーバーにはすでに dbus サービスが {{ic|/usr/share/dbus-1/services}} に用意されています。{{Pkg|notification-daemon}} などの一部の実装では、ユーザー [[D-Bus]] サービスのディレクトリ ({{ic|$XDG_DATA_HOME/dbus-1/services}}) 内に手動でサービスを作る必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|org.freedesktop.Notifications.service|2=&lt;br /&gt;
[D-BUS Service]&lt;br /&gt;
Name=org.freedesktop.Notifications&lt;br /&gt;
Exec=/usr/lib/notification-daemon-1.0/notification-daemon&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
アプリケーションが通知を送ると (つまり {{ic|org.freedesktop.Notifications}} にシグナルを送ると)、{{ic|/usr/lib/notification-daemon-1.0/notification-daemon}} がまだアクティブ化されていない場合、D-Bus によってアクティブ化されます。&lt;br /&gt;
&lt;br /&gt;
通知サーバーは以下から選ぶことができます:&lt;br /&gt;
&lt;br /&gt;
* {{App|Deadd Notification Center|Dunst にインスパイヤされた、通知センターが付いた通知デーモン。[https://github.com/phuhl/linux_notification_center/issues/255 2025年2月から開発が滞っています。]|https://github.com/phuhl/linux_notification_center|{{AUR|deadd-notification-center}}}}&lt;br /&gt;
* {{App|[[Dunst]]|[[dwm]] などのミニマルなウィンドウマネージャにうってつけの Linux 用の最小通知デーモン。1.6 から Wayland サポートがあります。|https://dunst-project.org/|{{Pkg|dunst}}}}&lt;br /&gt;
* {{App|fnott|wlroots ベースのコンポジタのための軽量な Wayland 向けの通知デーモン。キーボードによって操作可能。|https://codeberg.org/dnkl/fnott|{{Pkg|fnott}}}}&lt;br /&gt;
* {{App|LXQt Notification Daemon|[[LXQt]] の通知サーバー。|https://github.com/lxde/lxqt-notificationd|{{Pkg|lxqt-notificationd}}}}&lt;br /&gt;
* {{App|mako|[[Wayland]] 向けの軽量な通知サーバー。現時点では [[Sway]] と {{Pkg|river}} 上で動作します。|https://github.com/emersion/mako|{{Pkg|mako}}}}&lt;br /&gt;
* {{App|MATE Notification Daemon|[[MATE]] の通知サーバー。|https://github.com/mate-desktop/mate-notification-daemon/|{{Pkg|mate-notification-daemon}}}}&lt;br /&gt;
* {{App|Notification Daemon|オリジナルの通知サーバー。|https://gitlab.gnome.org/Archive/notification-daemon|{{Pkg|notification-daemon}}}}&lt;br /&gt;
:{{ic|/usr/lib/notification-daemon-1.0/notification-daemon}} で手動で起動できます。&lt;br /&gt;
* {{App|Notify OSD|Unity の通知サーバー。|https://launchpad.net/notify-osd|{{Pkg|notify-osd}}}}&lt;br /&gt;
* {{App|statnot|小さくて軽量な通知デーモン。ルートウィンドウのタイトルや標準出力、FIFO パイプなどに通知を出力できるので、タイル型ウィンドウマネージャと相性がとても良いです。|https://github.com/halhen/statnot|{{AUR|statnot}}}}&lt;br /&gt;
* {{App|swaync|[[Sway]] のためのシンプルな GTK ベースの通知デーモン。|https://github.com/ErikReider/SwayNotificationCenter|{{Pkg|swaync}}}}&lt;br /&gt;
* {{App|twmn|タイル型ウィンドウマネージャ向けの通知システム。|https://github.com/sboli/twmn|{{AUR|twmn-git}}}}&lt;br /&gt;
* {{App|wired|レイヤーブロックのカスタマイズ性が高い軽量な通知デーモン。Rust で書かれている。|https://github.com/Toqozz/wired-notify|{{AUR|wired}}}}&lt;br /&gt;
* {{App|Xfce Notification Daemon|[[Xfce]] の通知サーバー。|https://docs.xfce.org/apps/notifyd/start|{{Pkg|xfce4-notifyd}}}}&lt;br /&gt;
:{{ic|/usr/lib/xfce4/notifyd/xfce4-notifyd}} で手動で起動できます。&lt;br /&gt;
:{{Tip|xfce4-notifyd を設定するには、ターミナルから次のコマンドを実行してください: {{ic|xfce4-notifyd-config}}。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 他のユーザーに通知を送る ===&lt;br /&gt;
&lt;br /&gt;
{{man|1|systemd-run}} を使うことで (例えば root として実行されたバックグラウンドのスクリプトなどから)、他のユーザーのセッションに入り、そのユーザーに通知を送ることができます:&lt;br /&gt;
&lt;br /&gt;
 # systemd-run --machine=&#039;&#039;target_user&#039;&#039;@.host --user notify-send &#039;Hello world!&#039; &#039;This is an example notification.&#039;&lt;br /&gt;
&lt;br /&gt;
もう一つの方法は {{Pkg|systembus-notify}} です。以下のコマンドは、{{ic|systembus-notify}} をセッション内に実行しているすべてのユーザーに通知を表示します:&lt;br /&gt;
&lt;br /&gt;
 $ dbus-send --system / net.nuetzlich.SystemNotifications.Notify &#039;string:Hello world!&#039; &#039;string:This is an example notification.&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[systemd#サービスの失敗を通知する]] で説明されているようにして、上記のコマンドを {{ic|ExecStart}} コマンドで実行することで、失敗したサービスを通知で知らせることもできます。}}&lt;br /&gt;
&lt;br /&gt;
=== 以前の通知を置き換える ===&lt;br /&gt;
&lt;br /&gt;
通知 ID がわかっている場合は、その通知を置き換えることができます。新しい通知リクエストで同じ ID が指定されている場合、常に古い通知が置き換えられます。(上記の libnotify バインディングはこれを自動的に処理します。) 残念ながら、notify-send はこの ID を報告しないため、CLI でこれを行うには代替ツールが必要です。有効な CLI ツールの 1 つは、[https://github.com/phuhl/notify-send.py notify-send.py] Python スクリプトです。これは、追加の ID レポート機能と置換機能を備えた Notify-Send 構文を提供します。&lt;br /&gt;
&lt;br /&gt;
ただし、&#039;&#039;一部の&#039;&#039; 通知サーバー (Notify-OSD など) では、notify-send で {{ic|string:x-canonical-private-synchronous:}} ヒントを使用して同じ結果を得ることができます。&lt;br /&gt;
&lt;br /&gt;
たとえば、時間を表示する通知を取得するには:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
while true; do&lt;br /&gt;
  date=$(date)&lt;br /&gt;
  notify-send &amp;quot;$date&amp;quot; -h string:x-canonical-private-synchronous:my-notification&lt;br /&gt;
  sleep 1&lt;br /&gt;
done&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ボタンを追加する、通知の閉じる/クリックをリッスンする ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/phuhl/notify-send.py notify-send.py] スクリプトを使用すると、アクションを使用してボタンを表示したり通知のデフォルトアクション (通常、ユーザーが通知をクリックした時に発生します) やクローズアクションをリッスンすることができます。&#039;&#039;action-icons&#039;&#039; ヒントが true に設定されており、通知デーモンがこれをサポートしている場合、ボタンにはテキストの代わりにアイコンが表示されます。スクリプトは、対応するイベントが発生したときに、コマンドラインにアクション ID または &amp;quot;close&amp;quot; を出力します。デフォルトのアクション (クリック時) をリッスンするには、アクション識別子 &amp;quot;default&amp;quot; を使用する必要があります。&lt;br /&gt;
&lt;br /&gt;
ボタンにアイコンを表示する例:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
notify-send.py &amp;quot;Buttons&amp;quot; &amp;quot;Do you like em?&amp;quot; --hint boolean:action-icons:true --action yes:face-cool no:face-sick&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== D-Bus サービスが同梱されている通知サーバーが複数ある場合 ===&lt;br /&gt;
&lt;br /&gt;
[[#スタンドアロン|スタンドアロン]]章で説明した通り、ユーザーは D-Bus サービスを作成して通知サーバーを自動的に起動させることができます。しかし、一部の通知サーバーにはすでに D-Bus サービスファイルが同梱されています。複数の通知サーバーをインストールしていて、それらのうちどれかにサービスファイルが含まれている場合、問題が発生します。例えば、{{Pkg|dunst}} と {{Pkg|mako}} の両方をインストールして、使用するサーバーを明示的に指定しなかった場合、D-Bus はどちらか一方を勝手に選びます。そうならないようにするには、{{ic|org.freedesktop.Notifications.service}} ([[#スタンドアロン]] を参照) を作成して、使用したいサービスを指定することで、使用されるサービスをオーバーライドすることができます。ファイルの作成後は、セッションを再起動してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションがちょうど 1 分間ハングする ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが通知を表示しようとした際にハングしてしまう場合、通知サービスが自身の可用性を誤って D-Bus サービス経由で広告してしまっているのかもしれません。&lt;br /&gt;
&lt;br /&gt;
たとえば、ユーザーが最近、{{Pkg|plasma-workspace}} を必要とする KDE コンポーネントをインストールしたが、まだ XFCE を実行しているとします。この場合、KDE ​​通知機能が優先されますが、ユーザーはそれを実行していません。アプリケーションはサービスの待機中にハングし、タイムアウト後に {{Pkg|xfce4-notifyd}} にフォールバックすることになります。&lt;br /&gt;
&lt;br /&gt;
最もわかりやすいハングは、通知インディケータの調整スクロールでしょう。&lt;br /&gt;
&lt;br /&gt;
このような場合、2つの通知ハンドラーが存在するはずです:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ find /usr/share/dbus-1/services/ -name &#039;*Notif*&#039;|&lt;br /&gt;
org.kde.plasma.Notifications.service&lt;br /&gt;
org.xfce.xfce4-notifyd.Notifications.service&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[journal]] を見ると、これら2つのうちどちら一方が定期的に1分のタイムアウトで失敗しています:&lt;br /&gt;
&lt;br /&gt;
{{hc|# journalctl -g notif|2=&lt;br /&gt;
Jul 01 09:40:49 laptop dbus-daemon[866]: [session uid=1000 pid=866] Activating service name=&#039;org.freedesktop.Notifications&#039; requested by &#039;:1.193&#039; (uid=1000 pid=5432 comm=&amp;quot;/usr/lib/xfce4/panel/wrapper-2.0 /usr/lib/xfce4/pa&amp;quot;)&lt;br /&gt;
Jul 01 09:41:49 laptop plasma_waitforname[6093]: org.kde.knotifications: WaitForName: Service was not registered within timeout&lt;br /&gt;
Jul 01 09:41:49 laptop dbus-daemon[866]: [session uid=1000 pid=866] Activated service &#039;org.freedesktop.Notifications&#039; failed: Process org.freedesktop.Notifications exited with status 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[#D-Bus サービスが同梱されている通知サーバーが複数ある場合]] で説明されているように、使いたいサービスを指定すれば、問題は解決します。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://gnome.pages.gitlab.gnome.org/libnotify/ Libnotify リファレンスマニュアル]&lt;br /&gt;
* [https://web.archive.org/web/20160313162757/http://milky.manishsinha.net/2009/03/29/working-with-libnotify/ C サンプル] (アーカイブされたバージョン)&lt;br /&gt;
* [https://www.devdungeon.com/content/desktop-notifications-linux-python Python の通知サンプル]&lt;br /&gt;
* [https://hashbang.fr/tutoriel-notify.html Python の通知サンプル] (フランス語の記事)&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Desktop notifications|2025-07-03|839792}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E9%80%9A%E7%9F%A5&amp;diff=40505</id>
		<title>デスクトップ通知</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E9%80%9A%E7%9F%A5&amp;diff=40505"/>
		<updated>2025-07-03T08:40:34Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: /* アプリケーションがちょうど 1 分間ハングする */ 修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:X サーバー]]&lt;br /&gt;
[[Category:通知]]&lt;br /&gt;
[[Category:ソフトウェア一覧]]&lt;br /&gt;
[[en:Desktop notifications]]&lt;br /&gt;
[[zh-hans:桌面通知程序]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|GTK}}&lt;br /&gt;
{{Related|Libcanberra}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
デスクトップ通知は、非同期に特定のイベントをユーザーに通知する小さくて控えめなポップアップダイアログです。&lt;br /&gt;
&lt;br /&gt;
== Libnotify ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|libnotify}} は {{man|1|notify-send}} ユーティリティや [[GTK]] と [[Qt]] のアプリケーションのサポートを提供する [https://specifications.freedesktop.org/notification-spec/latest/ Desktop Notifications Specification] の実装で特定のデスクトップに依存していません。この実装はすでに [[Evolution]] や [[Pidgin]] といった多くのオープンソースアプリによって使用されています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能なアイコンに関する概要は[https://specifications.freedesktop.org/icon-naming-spec/latest/ 仕様]にあります。}}&lt;br /&gt;
&lt;br /&gt;
== 通知サーバー ==&lt;br /&gt;
&lt;br /&gt;
[[#Libnotify|libnotify]] で送られた通知を受け取るには、通知サーバーが必要です。&lt;br /&gt;
&lt;br /&gt;
=== ビルトイン ===&lt;br /&gt;
&lt;br /&gt;
[[Cinnamon]]、[[Deepin]]、[[Enlightenment]]、[[GNOME]]、[[GNOME Flashback]] は独自の実装を用いて通知を表示します。これらの通知サーバーはアプリケーションからの通知を DBus 経由で受け取るためにログイン時に自動的に起動されるので、他の通知サーバーに置き換えることができない場合があります。&lt;br /&gt;
&lt;br /&gt;
[[KDE Plasma]] では、システムトレイの設定を開き、システムサービスの項目から Notifications の横にあるドロップダウンを Disabled に変更することで、ビルトインの通知サーバーを無効化することができます。その後システム設定メニューで System / Autostart のところに新しい自動起動アプリケーションを追加することで、所望の通知サーバーを追加することができます。変更を適用するには一旦ログアウトし、ログインし直す必要があります。&lt;br /&gt;
&lt;br /&gt;
=== スタンドアロン ===&lt;br /&gt;
&lt;br /&gt;
他のデスクトップ環境では、通知サーバーは手動でインストールし、[[XDG Autostart]] などを使って起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
あるいは、通知サーバーを [[D-Bus]] サービスにすることで、通知サーバーを初めて呼び出した時に自動的に起動させることもできます。ほとんどの通知サーバーにはすでに dbus サービスが {{ic|/usr/share/dbus-1/services}} に用意されています。{{Pkg|notification-daemon}} などの一部の実装では、ユーザー [[D-Bus]] サービスのディレクトリ ({{ic|$XDG_DATA_HOME/dbus-1/services}}) 内に手動でサービスを作る必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|org.freedesktop.Notifications.service|2=&lt;br /&gt;
[D-BUS Service]&lt;br /&gt;
Name=org.freedesktop.Notifications&lt;br /&gt;
Exec=/usr/lib/notification-daemon-1.0/notification-daemon&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
アプリケーションが通知を送ると (つまり {{ic|org.freedesktop.Notifications}} にシグナルを送ると)、{{ic|/usr/lib/notification-daemon-1.0/notification-daemon}} がまだアクティブ化されていない場合、D-Bus によってアクティブ化されます。&lt;br /&gt;
&lt;br /&gt;
通知サーバーは以下から選ぶことができます:&lt;br /&gt;
&lt;br /&gt;
* {{App|Deadd Notification Center|Dunst にインスパイヤされた、通知センターが付いた通知デーモン。[https://github.com/phuhl/linux_notification_center/issues/255 2025年2月から開発が滞っています。]|https://github.com/phuhl/linux_notification_center|{{AUR|deadd-notification-center}}}}&lt;br /&gt;
* {{App|[[Dunst]]|[[dwm]] などのミニマルなウィンドウマネージャにうってつけの Linux 用の最小通知デーモン。1.6 から Wayland サポートがあります。|https://dunst-project.org/|{{Pkg|dunst}}}}&lt;br /&gt;
* {{App|fnott|wlroots ベースのコンポジタのための軽量な Wayland 向けの通知デーモン。キーボードによって操作可能。|https://codeberg.org/dnkl/fnott|{{Pkg|fnott}}}}&lt;br /&gt;
* {{App|LXQt Notification Daemon|[[LXQt]] の通知サーバー。|https://github.com/lxde/lxqt-notificationd|{{Pkg|lxqt-notificationd}}}}&lt;br /&gt;
* {{App|mako|[[Wayland]] 向けの軽量な通知サーバー。現時点では [[Sway]] と {{Pkg|river}} 上で動作します。|https://github.com/emersion/mako|{{Pkg|mako}}}}&lt;br /&gt;
* {{App|MATE Notification Daemon|[[MATE]] の通知サーバー。|https://github.com/mate-desktop/mate-notification-daemon/|{{Pkg|mate-notification-daemon}}}}&lt;br /&gt;
* {{App|Notification Daemon|オリジナルの通知サーバー。|https://gitlab.gnome.org/Archive/notification-daemon|{{Pkg|notification-daemon}}}}&lt;br /&gt;
:{{ic|/usr/lib/notification-daemon-1.0/notification-daemon}} で手動で起動できます。&lt;br /&gt;
* {{App|Notify OSD|Unity の通知サーバー。|https://launchpad.net/notify-osd|{{Pkg|notify-osd}}}}&lt;br /&gt;
* {{App|statnot|小さくて軽量な通知デーモン。ルートウィンドウのタイトルや標準出力、FIFO パイプなどに通知を出力できるので、タイル型ウィンドウマネージャと相性がとても良いです。|https://github.com/halhen/statnot|{{AUR|statnot}}}}&lt;br /&gt;
* {{App|swaync|[[Sway]] のためのシンプルな GTK ベースの通知デーモン。|https://github.com/ErikReider/SwayNotificationCenter|{{Pkg|swaync}}}}&lt;br /&gt;
* {{App|twmn|タイル型ウィンドウマネージャ向けの通知システム。|https://github.com/sboli/twmn|{{AUR|twmn-git}}}}&lt;br /&gt;
* {{App|wired|レイヤーブロックのカスタマイズ性が高い軽量な通知デーモン。Rust で書かれている。|https://github.com/Toqozz/wired-notify|{{AUR|wired}}}}&lt;br /&gt;
* {{App|Xfce Notification Daemon|[[Xfce]] の通知サーバー。|https://docs.xfce.org/apps/notifyd/start|{{Pkg|xfce4-notifyd}}}}&lt;br /&gt;
:{{ic|/usr/lib/xfce4/notifyd/xfce4-notifyd}} で手動で起動できます。&lt;br /&gt;
:{{Tip|xfce4-notifyd を設定するには、ターミナルから次のコマンドを実行してください: {{ic|xfce4-notifyd-config}}。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 他のユーザーに通知を送る ===&lt;br /&gt;
&lt;br /&gt;
{{man|1|systemd-run}} を使うことで (例えば root として実行されたバックグラウンドのスクリプトなどから)、他のユーザーのセッションに入り、そのユーザーに通知を送ることができます:&lt;br /&gt;
&lt;br /&gt;
 # systemd-run --machine=&#039;&#039;target_user&#039;&#039;@.host --user notify-send &#039;Hello world!&#039; &#039;This is an example notification.&#039;&lt;br /&gt;
&lt;br /&gt;
もう一つの方法は {{Pkg|systembus-notify}} です。以下のコマンドは、{{ic|systembus-notify}} をセッション内に実行しているすべてのユーザーに通知を表示します:&lt;br /&gt;
&lt;br /&gt;
 $ dbus-send --system / net.nuetzlich.SystemNotifications.Notify &#039;string:Hello world!&#039; &#039;string:This is an example notification.&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[systemd#サービスの失敗を通知する]] で説明されているようにして、上記のコマンドを {{ic|ExecStart}} コマンドで実行することで、失敗したサービスを通知で知らせることもできます。}}&lt;br /&gt;
&lt;br /&gt;
=== 以前の通知を置き換える ===&lt;br /&gt;
&lt;br /&gt;
通知 ID がわかっている場合は、その通知を置き換えることができます。新しい通知リクエストで同じ ID が指定されている場合、常に古い通知が置き換えられます。(上記の libnotify バインディングはこれを自動的に処理します。) 残念ながら、notify-send はこの ID を報告しないため、CLI でこれを行うには代替ツールが必要です。有効な CLI ツールの 1 つは、[https://github.com/phuhl/notify-send.py notify-send.py] Python スクリプトです。これは、追加の ID レポート機能と置換機能を備えた Notify-Send 構文を提供します。&lt;br /&gt;
&lt;br /&gt;
ただし、&#039;&#039;一部の&#039;&#039; 通知サーバー (Notify-OSD など) では、notify-send で {{ic|string:x-canonical-private-synchronous:}} ヒントを使用して同じ結果を得ることができます。&lt;br /&gt;
&lt;br /&gt;
たとえば、時間を表示する通知を取得するには:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
while true; do&lt;br /&gt;
  date=$(date)&lt;br /&gt;
  notify-send &amp;quot;$date&amp;quot; -h string:x-canonical-private-synchronous:my-notification&lt;br /&gt;
  sleep 1&lt;br /&gt;
done&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ボタンを追加する、通知の閉じる/クリックをリッスンする ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/phuhl/notify-send.py notify-send.py] スクリプトを使用すると、アクションを使用してボタンを表示したり通知のデフォルトアクション (通常、ユーザーが通知をクリックした時に発生します) やクローズアクションをリッスンすることができます。&#039;&#039;action-icons&#039;&#039; ヒントが true に設定されており、通知デーモンがこれをサポートしている場合、ボタンにはテキストの代わりにアイコンが表示されます。スクリプトは、対応するイベントが発生したときに、コマンドラインにアクション ID または &amp;quot;close&amp;quot; を出力します。デフォルトのアクション (クリック時) をリッスンするには、アクション識別子 &amp;quot;default&amp;quot; を使用する必要があります。&lt;br /&gt;
&lt;br /&gt;
ボタンにアイコンを表示する例:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
notify-send.py &amp;quot;Buttons&amp;quot; &amp;quot;Do you like em?&amp;quot; --hint boolean:action-icons:true --action yes:face-cool no:face-sick&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== D-Bus サービスが同梱されている通知サーバーが複数ある場合 ===&lt;br /&gt;
&lt;br /&gt;
[[#スタンドアロン|スタンドアロン]]章で説明した通り、ユーザーは D-Bus サービスを作成して通知サーバーを自動的に起動させることができます。しかし、一部の通知サーバーにはすでに D-Bus サービスファイルが同梱されています。複数の通知サーバーをインストールしていて、それらのうちどれかにサービスファイルが含まれている場合、問題が発生します。例えば、{{Pkg|dunst}} と {{Pkg|mako}} の両方をインストールして、使用するサーバーを明示的に指定しなかった場合、D-Bus はどちらか一方を勝手に選びます。そうならないようにするには、{{ic|org.freedesktop.Notifications.service}} ([[#スタンドアロン]] を参照) を作成して、使用したいサービスを指定することで、使用されるサービスをオーバーライドすることができます。ファイルの作成後は、セッションを再起動してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションがちょうど 1 分間ハングする ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが通知を表示しようとした際にハングしてしまう場合、通知サービスが自身の可用性を誤って D-Bus サービス経由で広告してしまっているのかもしれません。&lt;br /&gt;
&lt;br /&gt;
たとえば、ユーザーが最近、{{Pkg|plasma-workspace}} を必要とする KDE コンポーネントをインストールしたが、まだ XFCE を実行しているとします。この場合、KDE ​​通知機能が優先されますが、ユーザーはそれを実行していません。アプリケーションはサービスの待機中にハングし、タイムアウト後に {{Pkg|xfce4-notifyd}} にフォールバックすることになります。&lt;br /&gt;
&lt;br /&gt;
最もわかりやすいハングは、通知インディケータの調整スクロールでしょう。&lt;br /&gt;
&lt;br /&gt;
このような場合、2つの通知ハンドラーが存在するはずです:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ find /usr/share/dbus-1/services/ -name &#039;*Notif*&#039;|&lt;br /&gt;
org.kde.plasma.Notifications.service&lt;br /&gt;
org.xfce.xfce4-notifyd.Notifications.service&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[journal]] を見ると、これら2つのうちどちら一方が定期的に1分のタイムアウトで失敗しています:&lt;br /&gt;
&lt;br /&gt;
{{hc|# journalctl -g notif|2=&lt;br /&gt;
Jul 01 09:40:49 laptop dbus-daemon[866]: [session uid=1000 pid=866] Activating service name=&#039;org.freedesktop.Notifications&#039; requested by &#039;:1.193&#039; (uid=1000 pid=5432 comm=&amp;quot;/usr/lib/xfce4/panel/wrapper-2.0 /usr/lib/xfce4/pa&amp;quot;)&lt;br /&gt;
Jul 01 09:41:49 laptop plasma_waitforname[6093]: org.kde.knotifications: WaitForName: Service was not registered within timeout&lt;br /&gt;
Jul 01 09:41:49 laptop dbus-daemon[866]: [session uid=1000 pid=866] Activated service &#039;org.freedesktop.Notifications&#039; failed: Process org.freedesktop.Notifications exited with status 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[#D-Bus サービスが同梱されている通知サーバーが複数ある場合]] で説明されているように、使いたいサービスを指定すれば、問題は解決します。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://gnome.pages.gitlab.gnome.org/libnotify/ Libnotify リファレンスマニュアル]&lt;br /&gt;
* [https://web.archive.org/web/20160313162757/http://milky.manishsinha.net/2009/03/29/working-with-libnotify/ C サンプル] (アーカイブされたバージョン)&lt;br /&gt;
* [https://www.devdungeon.com/content/desktop-notifications-linux-python Python の通知サンプル]&lt;br /&gt;
* [https://hashbang.fr/tutoriel-notify.html Python の通知サンプル] (フランス語の記事)&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Desktop notifications|2025/07/03|839792}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E9%80%9A%E7%9F%A5&amp;diff=40504</id>
		<title>デスクトップ通知</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E9%80%9A%E7%9F%A5&amp;diff=40504"/>
		<updated>2025-07-03T08:39:09Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:X サーバー]]&lt;br /&gt;
[[Category:通知]]&lt;br /&gt;
[[Category:ソフトウェア一覧]]&lt;br /&gt;
[[en:Desktop notifications]]&lt;br /&gt;
[[zh-hans:桌面通知程序]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|GTK}}&lt;br /&gt;
{{Related|Libcanberra}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
デスクトップ通知は、非同期に特定のイベントをユーザーに通知する小さくて控えめなポップアップダイアログです。&lt;br /&gt;
&lt;br /&gt;
== Libnotify ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|libnotify}} は {{man|1|notify-send}} ユーティリティや [[GTK]] と [[Qt]] のアプリケーションのサポートを提供する [https://specifications.freedesktop.org/notification-spec/latest/ Desktop Notifications Specification] の実装で特定のデスクトップに依存していません。この実装はすでに [[Evolution]] や [[Pidgin]] といった多くのオープンソースアプリによって使用されています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能なアイコンに関する概要は[https://specifications.freedesktop.org/icon-naming-spec/latest/ 仕様]にあります。}}&lt;br /&gt;
&lt;br /&gt;
== 通知サーバー ==&lt;br /&gt;
&lt;br /&gt;
[[#Libnotify|libnotify]] で送られた通知を受け取るには、通知サーバーが必要です。&lt;br /&gt;
&lt;br /&gt;
=== ビルトイン ===&lt;br /&gt;
&lt;br /&gt;
[[Cinnamon]]、[[Deepin]]、[[Enlightenment]]、[[GNOME]]、[[GNOME Flashback]] は独自の実装を用いて通知を表示します。これらの通知サーバーはアプリケーションからの通知を DBus 経由で受け取るためにログイン時に自動的に起動されるので、他の通知サーバーに置き換えることができない場合があります。&lt;br /&gt;
&lt;br /&gt;
[[KDE Plasma]] では、システムトレイの設定を開き、システムサービスの項目から Notifications の横にあるドロップダウンを Disabled に変更することで、ビルトインの通知サーバーを無効化することができます。その後システム設定メニューで System / Autostart のところに新しい自動起動アプリケーションを追加することで、所望の通知サーバーを追加することができます。変更を適用するには一旦ログアウトし、ログインし直す必要があります。&lt;br /&gt;
&lt;br /&gt;
=== スタンドアロン ===&lt;br /&gt;
&lt;br /&gt;
他のデスクトップ環境では、通知サーバーは手動でインストールし、[[XDG Autostart]] などを使って起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
あるいは、通知サーバーを [[D-Bus]] サービスにすることで、通知サーバーを初めて呼び出した時に自動的に起動させることもできます。ほとんどの通知サーバーにはすでに dbus サービスが {{ic|/usr/share/dbus-1/services}} に用意されています。{{Pkg|notification-daemon}} などの一部の実装では、ユーザー [[D-Bus]] サービスのディレクトリ ({{ic|$XDG_DATA_HOME/dbus-1/services}}) 内に手動でサービスを作る必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|org.freedesktop.Notifications.service|2=&lt;br /&gt;
[D-BUS Service]&lt;br /&gt;
Name=org.freedesktop.Notifications&lt;br /&gt;
Exec=/usr/lib/notification-daemon-1.0/notification-daemon&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
アプリケーションが通知を送ると (つまり {{ic|org.freedesktop.Notifications}} にシグナルを送ると)、{{ic|/usr/lib/notification-daemon-1.0/notification-daemon}} がまだアクティブ化されていない場合、D-Bus によってアクティブ化されます。&lt;br /&gt;
&lt;br /&gt;
通知サーバーは以下から選ぶことができます:&lt;br /&gt;
&lt;br /&gt;
* {{App|Deadd Notification Center|Dunst にインスパイヤされた、通知センターが付いた通知デーモン。[https://github.com/phuhl/linux_notification_center/issues/255 2025年2月から開発が滞っています。]|https://github.com/phuhl/linux_notification_center|{{AUR|deadd-notification-center}}}}&lt;br /&gt;
* {{App|[[Dunst]]|[[dwm]] などのミニマルなウィンドウマネージャにうってつけの Linux 用の最小通知デーモン。1.6 から Wayland サポートがあります。|https://dunst-project.org/|{{Pkg|dunst}}}}&lt;br /&gt;
* {{App|fnott|wlroots ベースのコンポジタのための軽量な Wayland 向けの通知デーモン。キーボードによって操作可能。|https://codeberg.org/dnkl/fnott|{{Pkg|fnott}}}}&lt;br /&gt;
* {{App|LXQt Notification Daemon|[[LXQt]] の通知サーバー。|https://github.com/lxde/lxqt-notificationd|{{Pkg|lxqt-notificationd}}}}&lt;br /&gt;
* {{App|mako|[[Wayland]] 向けの軽量な通知サーバー。現時点では [[Sway]] と {{Pkg|river}} 上で動作します。|https://github.com/emersion/mako|{{Pkg|mako}}}}&lt;br /&gt;
* {{App|MATE Notification Daemon|[[MATE]] の通知サーバー。|https://github.com/mate-desktop/mate-notification-daemon/|{{Pkg|mate-notification-daemon}}}}&lt;br /&gt;
* {{App|Notification Daemon|オリジナルの通知サーバー。|https://gitlab.gnome.org/Archive/notification-daemon|{{Pkg|notification-daemon}}}}&lt;br /&gt;
:{{ic|/usr/lib/notification-daemon-1.0/notification-daemon}} で手動で起動できます。&lt;br /&gt;
* {{App|Notify OSD|Unity の通知サーバー。|https://launchpad.net/notify-osd|{{Pkg|notify-osd}}}}&lt;br /&gt;
* {{App|statnot|小さくて軽量な通知デーモン。ルートウィンドウのタイトルや標準出力、FIFO パイプなどに通知を出力できるので、タイル型ウィンドウマネージャと相性がとても良いです。|https://github.com/halhen/statnot|{{AUR|statnot}}}}&lt;br /&gt;
* {{App|swaync|[[Sway]] のためのシンプルな GTK ベースの通知デーモン。|https://github.com/ErikReider/SwayNotificationCenter|{{Pkg|swaync}}}}&lt;br /&gt;
* {{App|twmn|タイル型ウィンドウマネージャ向けの通知システム。|https://github.com/sboli/twmn|{{AUR|twmn-git}}}}&lt;br /&gt;
* {{App|wired|レイヤーブロックのカスタマイズ性が高い軽量な通知デーモン。Rust で書かれている。|https://github.com/Toqozz/wired-notify|{{AUR|wired}}}}&lt;br /&gt;
* {{App|Xfce Notification Daemon|[[Xfce]] の通知サーバー。|https://docs.xfce.org/apps/notifyd/start|{{Pkg|xfce4-notifyd}}}}&lt;br /&gt;
:{{ic|/usr/lib/xfce4/notifyd/xfce4-notifyd}} で手動で起動できます。&lt;br /&gt;
:{{Tip|xfce4-notifyd を設定するには、ターミナルから次のコマンドを実行してください: {{ic|xfce4-notifyd-config}}。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 他のユーザーに通知を送る ===&lt;br /&gt;
&lt;br /&gt;
{{man|1|systemd-run}} を使うことで (例えば root として実行されたバックグラウンドのスクリプトなどから)、他のユーザーのセッションに入り、そのユーザーに通知を送ることができます:&lt;br /&gt;
&lt;br /&gt;
 # systemd-run --machine=&#039;&#039;target_user&#039;&#039;@.host --user notify-send &#039;Hello world!&#039; &#039;This is an example notification.&#039;&lt;br /&gt;
&lt;br /&gt;
もう一つの方法は {{Pkg|systembus-notify}} です。以下のコマンドは、{{ic|systembus-notify}} をセッション内に実行しているすべてのユーザーに通知を表示します:&lt;br /&gt;
&lt;br /&gt;
 $ dbus-send --system / net.nuetzlich.SystemNotifications.Notify &#039;string:Hello world!&#039; &#039;string:This is an example notification.&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[systemd#サービスの失敗を通知する]] で説明されているようにして、上記のコマンドを {{ic|ExecStart}} コマンドで実行することで、失敗したサービスを通知で知らせることもできます。}}&lt;br /&gt;
&lt;br /&gt;
=== 以前の通知を置き換える ===&lt;br /&gt;
&lt;br /&gt;
通知 ID がわかっている場合は、その通知を置き換えることができます。新しい通知リクエストで同じ ID が指定されている場合、常に古い通知が置き換えられます。(上記の libnotify バインディングはこれを自動的に処理します。) 残念ながら、notify-send はこの ID を報告しないため、CLI でこれを行うには代替ツールが必要です。有効な CLI ツールの 1 つは、[https://github.com/phuhl/notify-send.py notify-send.py] Python スクリプトです。これは、追加の ID レポート機能と置換機能を備えた Notify-Send 構文を提供します。&lt;br /&gt;
&lt;br /&gt;
ただし、&#039;&#039;一部の&#039;&#039; 通知サーバー (Notify-OSD など) では、notify-send で {{ic|string:x-canonical-private-synchronous:}} ヒントを使用して同じ結果を得ることができます。&lt;br /&gt;
&lt;br /&gt;
たとえば、時間を表示する通知を取得するには:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
while true; do&lt;br /&gt;
  date=$(date)&lt;br /&gt;
  notify-send &amp;quot;$date&amp;quot; -h string:x-canonical-private-synchronous:my-notification&lt;br /&gt;
  sleep 1&lt;br /&gt;
done&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ボタンを追加する、通知の閉じる/クリックをリッスンする ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/phuhl/notify-send.py notify-send.py] スクリプトを使用すると、アクションを使用してボタンを表示したり通知のデフォルトアクション (通常、ユーザーが通知をクリックした時に発生します) やクローズアクションをリッスンすることができます。&#039;&#039;action-icons&#039;&#039; ヒントが true に設定されており、通知デーモンがこれをサポートしている場合、ボタンにはテキストの代わりにアイコンが表示されます。スクリプトは、対応するイベントが発生したときに、コマンドラインにアクション ID または &amp;quot;close&amp;quot; を出力します。デフォルトのアクション (クリック時) をリッスンするには、アクション識別子 &amp;quot;default&amp;quot; を使用する必要があります。&lt;br /&gt;
&lt;br /&gt;
ボタンにアイコンを表示する例:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
notify-send.py &amp;quot;Buttons&amp;quot; &amp;quot;Do you like em?&amp;quot; --hint boolean:action-icons:true --action yes:face-cool no:face-sick&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== D-Bus サービスが同梱されている通知サーバーが複数ある場合 ===&lt;br /&gt;
&lt;br /&gt;
[[#スタンドアロン|スタンドアロン]]章で説明した通り、ユーザーは D-Bus サービスを作成して通知サーバーを自動的に起動させることができます。しかし、一部の通知サーバーにはすでに D-Bus サービスファイルが同梱されています。複数の通知サーバーをインストールしていて、それらのうちどれかにサービスファイルが含まれている場合、問題が発生します。例えば、{{Pkg|dunst}} と {{Pkg|mako}} の両方をインストールして、使用するサーバーを明示的に指定しなかった場合、D-Bus はどちらか一方を勝手に選びます。そうならないようにするには、{{ic|org.freedesktop.Notifications.service}} ([[#スタンドアロン]] を参照) を作成して、使用したいサービスを指定することで、使用されるサービスをオーバーライドすることができます。ファイルの作成後は、セッションを再起動してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションがちょうど 1 分間ハングする ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが通知を表示しようとした際にハングしてしまう場合、通知サーバーが自身の可用性を誤って D-Bus サービスに広告してしまっているのかもしれません。&lt;br /&gt;
&lt;br /&gt;
たとえば、ユーザーが最近、{{Pkg|plasma-workspace}} を必要とする KDE コンポーネントをインストールしたが、まだ XFCE を実行しているとします。この場合、KDE ​​通知機能が優先されますが、ユーザーはそれを実行していません。アプリケーションはサービスの待機中にハングし、タイムアウト後に {{Pkg|xfce4-notifyd}} にフォールバックすることになります。&lt;br /&gt;
&lt;br /&gt;
最もわかりやすいハングは、通知インディケータの調整スクロールでしょう。&lt;br /&gt;
&lt;br /&gt;
このような場合、2つの通知ハンドラーが存在するはずです:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ find /usr/share/dbus-1/services/ -name &#039;*Notif*&#039;|&lt;br /&gt;
org.kde.plasma.Notifications.service&lt;br /&gt;
org.xfce.xfce4-notifyd.Notifications.service&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[ジャーナル]] を見ると、これら2つのうちどちら一方が定期的に1分のタイムアウトで失敗しています:&lt;br /&gt;
&lt;br /&gt;
{{hc|# journalctl -g notif|2=&lt;br /&gt;
Jul 01 09:40:49 laptop dbus-daemon[866]: [session uid=1000 pid=866] Activating service name=&#039;org.freedesktop.Notifications&#039; requested by &#039;:1.193&#039; (uid=1000 pid=5432 comm=&amp;quot;/usr/lib/xfce4/panel/wrapper-2.0 /usr/lib/xfce4/pa&amp;quot;)&lt;br /&gt;
Jul 01 09:41:49 laptop plasma_waitforname[6093]: org.kde.knotifications: WaitForName: Service was not registered within timeout&lt;br /&gt;
Jul 01 09:41:49 laptop dbus-daemon[866]: [session uid=1000 pid=866] Activated service &#039;org.freedesktop.Notifications&#039; failed: Process org.freedesktop.Notifications exited with status 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[#D-Bus サービスが同梱されている通知サーバーが複数ある場合]] で説明されているように、使いたいサービスを指定すれば、問題は解決します。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://gnome.pages.gitlab.gnome.org/libnotify/ Libnotify リファレンスマニュアル]&lt;br /&gt;
* [https://web.archive.org/web/20160313162757/http://milky.manishsinha.net/2009/03/29/working-with-libnotify/ C サンプル] (アーカイブされたバージョン)&lt;br /&gt;
* [https://www.devdungeon.com/content/desktop-notifications-linux-python Python の通知サンプル]&lt;br /&gt;
* [https://hashbang.fr/tutoriel-notify.html Python の通知サンプル] (フランス語の記事)&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Desktop notifications|2025/07/03|839792}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%B9%E3%83%88%E3%83%AC%E3%82%B9%E3%83%86%E3%82%B9%E3%83%88&amp;diff=40485</id>
		<title>ストレステスト</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%B9%E3%83%88%E3%83%AC%E3%82%B9%E3%83%86%E3%82%B9%E3%83%88&amp;diff=40485"/>
		<updated>2025-06-29T07:05:50Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: /* rasdaemon を使う */ 修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPU]]&lt;br /&gt;
[[en:Stress testing]]&lt;br /&gt;
[[pl:Stress testing]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ベンチマーク}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
ストレステストとは、コンピュータ上で様々なワークロードを実行することでコンピュータの安定性を評価することです。オーバークロックされたハードウェアや電圧を落としたハードウェアの安定性を確実にチェックし、システムの熱的挙動 (例: 最大温度、スロットリング、ノイズレベル) を監視するためによく行われます。システムの様々な部分 (CPU、GPU、RAM、ストレージなど) を異なるタイプのワークロードを使ってストレステストするためのプログラムがいくつか存在します。&lt;br /&gt;
&lt;br /&gt;
== ストレステストのタスク ==&lt;br /&gt;
&lt;br /&gt;
以下の表では、テストの種類と全体的なワークロードの大きさに基づいて、いくつかのストレステストソフトウェアをリストアップしています。多くのユースケースにおける安定性を検証するために、複数の負荷を混ぜてストレステストを行うことが重要です。&lt;br /&gt;
&lt;br /&gt;
{{Warning|この先に進む前に、システムの温度を監視する何らかの手段を確保しておくことが&#039;&#039;&#039;強く&#039;&#039;&#039;推奨されます。[[センサー]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ワークロード !! テストされるハードウェア&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; !! タスク !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; {{B|軽量&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| CPU、ストレージ || パッチのアップデート || OpenWRT プロジェクトの数百ものカーネルパッチを更新するカスタムスクリプト。[[#OpenWRT のパッチ更新]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、ストレージ || ディスクイメージを書き込む。 || [[#イメージファイルへの書き込み]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| RAM || メモリに負荷をかける || [[#MemTest86+]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; {{Y|現実的&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM、ストレージ || コンパイル || 並列コンパイルは CPU のストレステストを行うのに良い方法です。[[#GCC]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM || 動画エンコード || {{Pkg|ffmpeg}}、{{Pkg|x264}}、{{Pkg|handbrake-cli}} などは、動画エンコードを行うために使用できます。[[#動画エンコード]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM || 暗号通貨マイニング || {{Pkg|xmrig}} - {{ic|xmrig --stress}} は (CPU のモデルに基づいて) 異なる暗号通貨マイニングアルゴリズムを使用し、可能な限り最も高い負荷を掛けます。安定性と温度をテストするのに良い方法です。&lt;br /&gt;
|-&lt;br /&gt;
| GPU || 3D レンダリング || {{AUR|unigine-heaven}} はループで実行される GPU ベンチマークです。これは、GPU をストレステストするのに良い方法です。[[ベンチマーク#グラフィックス]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; {{R|人工的&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| CPU、RAM、ストレージ || 合成ストレステスト || {{Pkg|stress}} は、CPU、メモリ、I/O、そしてディスクのシンプルなワークロードジェネレータです。C で実装されています。[[#stress]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM || 素数計算 || {{AUR|mprime}} は大きな整数を因数分解します。CPU とメモリに負荷を掛けるのに良い方法です。[[#MPrime]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 代数計算 || {{AUR|linpack}} - Linpack は BLAS (Basic Linear Algebra Subprograms) ライブラリを使用してベクトルと行列の基本的な演算を行います。CPU に負荷を掛けて安定性をテストするのに良い方法です。[[#Linpack]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 円周率の計算 || {{AUR|systester}} Systester は、小数点以下 128,000,000 桁まで円周率を計算できるマルチスレッドのソフトウェアです。システムの安定性をチェックする機能が組み込まれています。[[#Systester]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| RAM || メモリに負荷をかける || {{AUR|stressapptest}} はメモリインターフェイステストです。&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 様々 || {{AUR|strain}} 多機能ストレステストユーティリティ。Rust 製。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; 主なテスト対象。事実上、すべてのテストには CPU と RAM も含まれます。&lt;br /&gt;
* &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; 軽量なテストでは、(電力/熱が制限されるという点で) コンポーネントにあまり負荷をかけません。これらのテストは、特に低電圧なシステムでの低い電力レベル (P ステート) におけるハードウェアの挙動をテストするのに役立ちます。&lt;br /&gt;
* &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; 現実的なテストは、現実世界におけるワークロードに基づいています。&lt;br /&gt;
* &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt; 人工的なテストは、ハードウェアに可能な限りに大きな負荷をかけるように明示的に設計されており、現実世界におけるワークロードを代表するようなものではない場合があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|システムの安定性を確かなものにするために、様々な温度条件下でストレステストを長い時間 (数時間から数日) 実行することが推奨されます。例えば、室温が冬や夏で大きく異なる場合、これを考慮すべきです。}}&lt;br /&gt;
&lt;br /&gt;
=== OpenWRT のパッチ更新 ===&lt;br /&gt;
&lt;br /&gt;
低負荷なワークロードの安定性テストとしては、OpenWRT プロジェクトのパッチセットをアップデートするのが良いでしょう。以下のステップに従ってください。&lt;br /&gt;
&lt;br /&gt;
{{Note|git や curl など、いくつかの依存パッケージが必要になります。その他のパッケージは {{Pkg|base-devel}} メタパッケージによってほとんど提供されるはずです。念の為に {{AUR|openwrt-devel}} メタパッケージをインストールすることができます。}}&lt;br /&gt;
&lt;br /&gt;
 git clone --depth 1 https://github.com/openwrt/openwrt.git&lt;br /&gt;
 cd openwrt&lt;br /&gt;
 mkdir -p staging_dir/host/bin&lt;br /&gt;
 cp /usr/bin/sed ./staging_dir/host/bin&lt;br /&gt;
 curl -Os https://raw.githubusercontent.com/KanjiMonster/maintainer-tools/master/update_kernel.sh&lt;br /&gt;
 chmod +x update_kernel.sh&lt;br /&gt;
 ./update_kernel.sh -v -u 6.6&lt;br /&gt;
&lt;br /&gt;
=== stress ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|stress}} は、乱数の平方根を計算するループを実行して CPU に負荷を掛けます。例えば、複数のワーカーを同時に実行して CPU の全コアに負荷を掛けることができます。また、渡されたパラメータに応じてメモリや I/O、ディスクのワークロードを生成することもできます。[https://web.archive.org/web/20190629131203/http://people.seas.harvard.edu/~apw/stress/FAQ FAQ] には例や説明があります。&lt;br /&gt;
&lt;br /&gt;
4 つのワーカーを生成して平方根の計算を行うには、以下のコマンドを使ってください:&lt;br /&gt;
&lt;br /&gt;
 $ stress --cpu 4&lt;br /&gt;
&lt;br /&gt;
=== s-tui ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|s-tui}} は、ターミナルベースの CPU ストレステスト及び監視ユーティリティです。CPU の使用率と温度を監視でき、CPU に負荷をかけることもできます。ターミナルグラフィカルインターフェイスで、1つの画面で必要な情報をすべて確認できるスイスナイフのようなツールです。&lt;br /&gt;
&lt;br /&gt;
=== MPrime ===&lt;br /&gt;
&lt;br /&gt;
MPrime (Windows と MacOS の実装では Prime95 とも) は、システムの安定性の事実上の指標の1つとして広く認知されています。耐久テスト (Torture Test) モードでは、MPrime は CPU に非常に大きな負荷を掛ける一連の計算を行い、得られた値を既知の良い値と比較します。&lt;br /&gt;
&lt;br /&gt;
Linux の実装は {{AUR|mprime}} と呼ばれています。&lt;br /&gt;
&lt;br /&gt;
mprime を実行するには、シェルを開き、&amp;quot;mprime&amp;quot; とタイプしてください:&lt;br /&gt;
&lt;br /&gt;
 $ mprime&lt;br /&gt;
&lt;br /&gt;
{{Note|[[CPU 周波数スケーリング]]を使用している場合、プロセッサが最高のクロック倍率で動作するように手動で設定する必要がある場合があります。mprime は、倍数のステップアップを発生させないような nice 値を使用するからです。}}&lt;br /&gt;
&lt;br /&gt;
ソフトウェアがロードされたら、最初の質問に &#039;N&#039; と答えるだけで耐久テストが始まります:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Main Menu&lt;br /&gt;
&lt;br /&gt;
1.  Test/Primenet&lt;br /&gt;
2.  Test/Worker threads&lt;br /&gt;
3.  Test/Status&lt;br /&gt;
4.  Test/Continue&lt;br /&gt;
5.  Test/Exit&lt;br /&gt;
6.  Advanced/Test&lt;br /&gt;
7.  Advanced/Time&lt;br /&gt;
8.  Advanced/P-1&lt;br /&gt;
9.  Advanced/ECM&lt;br /&gt;
10.  Advanced/Manual Communication&lt;br /&gt;
11.  Advanced/Unreserve Exponent&lt;br /&gt;
12.  Advanced/Quit Gimps&lt;br /&gt;
13.  Options/CPU&lt;br /&gt;
14.  Options/Preferences&lt;br /&gt;
15.  Options/Torture Test&lt;br /&gt;
16.  Options/Benchmark&lt;br /&gt;
17.  Help/About&lt;br /&gt;
18.  Help/About PrimeNet Server&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
耐久テスト (メニューオプション 15) にはいくつかのオプションが存在します。&lt;br /&gt;
&lt;br /&gt;
* CPU に負担をかけるには Small FFTs (オプション 1)。&lt;br /&gt;
* CPU とメモリコントローラをテストするには In-place large FFTs (オプション 2)。&lt;br /&gt;
* Blend (オプション 3) はデフォルトであり、CPU とメモリに負担をかけるハイブリッドモードです。&lt;br /&gt;
&lt;br /&gt;
エラーが発生した場合は、標準出力と {{ic|~/results.txt}} の両方に出力されます。24 時間 Large FFTs を実行できなければ、多くの人はシステムが安定しているとはみなさないでしょう。&lt;br /&gt;
&lt;br /&gt;
{{ic|~/results.txt}} の例です。6月26日からの2回の実行でハードウェア障害が発生していることが分かります。このケースでは、CPU のコア電圧が不足していることが原因です:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
[Sun Jun 26 20:10:35 2011]&lt;br /&gt;
FATAL ERROR: Rounding was 0.5, expected less than 0.4&lt;br /&gt;
Hardware failure detected, consult stress.txt file.&lt;br /&gt;
FATAL ERROR: Rounding was 0.5, expected less than 0.4&lt;br /&gt;
Hardware failure detected, consult stress.txt file.&lt;br /&gt;
[Sat Aug 20 10:50:45 2011]&lt;br /&gt;
Self-test 480K passed!&lt;br /&gt;
Self-test 480K passed!&lt;br /&gt;
[Sat Aug 20 11:06:02 2011]&lt;br /&gt;
Self-test 128K passed!&lt;br /&gt;
Self-test 128K passed!&lt;br /&gt;
[Sat Aug 20 11:22:10 2011]&lt;br /&gt;
Self-test 560K passed!&lt;br /&gt;
Self-test 560K passed!&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|メモリやメモリコントローラの問題を疑っている場合、まず Blend テストを実行してみるべきです。Small FFT テストは僅かなメモリしか使用しないからです。}}&lt;br /&gt;
&lt;br /&gt;
=== Linpack ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|linpack}} は BLAS (Basic Linear Algebra Subprograms) ライブラリを使用して基本的なベクトルと行列の演算を行います。CPU に負荷をかけて安定性を調べる素晴らしい方法です (Intel CPU のみをサポートしています)。インストール後、{{ic|/usr/share/linpack/linpack.conf}} を {{ic|~/.config/linpack.conf}} にコピーし、システムのメモリ容量にあわせて設定を行ってください。&lt;br /&gt;
&lt;br /&gt;
=== Systester ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|Systester}} (Windows 版では SuperPi) は、CLI と GUI の両方のバージョンが利用できます。1億2800桁の円周率を計算してシステムの安定性をテストし、エラーの確認も行います。2つの異なる計算アルゴリズムから選択できます: Borwein の2次収束の公式と Gauss-Legendre 公式です。後者は Windows の人気な SuperPi が使っている方法と同じです。&lt;br /&gt;
&lt;br /&gt;
8スレッドを使用する CLI の例は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 $ systester-cli -gausslg 64M -threads 8&lt;br /&gt;
&lt;br /&gt;
=== MemTest86+ ===&lt;br /&gt;
&lt;br /&gt;
[https://www.memtest86.com/ MemTest86] (プロプライエタリ) か [https://www.memtest.org/ Memtest86+] (GPL) を使ってメモリ (RAM) をテストします。&lt;br /&gt;
&lt;br /&gt;
* GPL のバージョンは [https://archlinux.org/download/ Arch Linux のインストールイメージ]で入手できます。以下でインストールできます:&lt;br /&gt;
** EFI システムの場合は {{Pkg|memtest86+-efi}}&lt;br /&gt;
** BIOS システムの場合は {{Pkg|memtest86+}}&lt;br /&gt;
* プロプライエタリなバージョンは BIOS をサポートしていません。{{AUR|memtest86-efi}} でインストールできます。&lt;br /&gt;
* インストールしたら、[[GRUB#メイン設定ファイルの生成|GRUB を更新]]することで、GRUB はパッケージを自動で検出し、MemTest86 を直接起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* バージョン履歴の信頼できるソースは memtest86.com の [https://www.memtest86.com/memtest86.html History of MemTest86] セクションです。特に &amp;quot;2002 - 2004&amp;quot; とそれ以降のセクションです。プロプライエタリな MemTest86 のバージョン 5 から 7 までは BIOS と UEFI の両方をサポートしていると主張していますが、単に古いバージョンと新しいバージョンをバンドルしているだけだということに注意してください。&lt;br /&gt;
* 通常、テストをエラー無しで 10 サイクル以上実行できたら十分です。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== イメージファイルへの書き込み ===&lt;br /&gt;
&lt;br /&gt;
低負荷ワークロードでの安定性テストとしては、{{ic|dd}} を使ってイメージをフォーマットするのが良い方法でしょう。これは、物理ディスクでもループバックマウントのイメージでも可能です。以下のスクリプトは、マウントされたイメージを使用し、ループ1回毎に各コアを1つずつ使います。あなたのシステムと合致するようにスクリプト上部の変数を調整する必要があることに注意してください。デフォルトでは、このスクリプトは1コアあたり1回だけコマンドを実行します。for ループを変更することで、0 から n までのすべてのコアをスキャンするのではなく、既知の弱いコア上で実行するように容易にカスタマイズすることができます。以下のスクリプトを root として実行してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|format-test.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# イメージを保存するパスを定義します。読み書きを回避するために tmpfs でマウントされた場所が推奨されます。&lt;br /&gt;
img=/scratch/image.img&lt;br /&gt;
&lt;br /&gt;
# マウントポイントを定義します。&lt;br /&gt;
mnt=/mnt/loop&lt;br /&gt;
&lt;br /&gt;
# truncate に渡すサイズ引数。システムの空きメモリよりも小さい値にしてください。&lt;br /&gt;
# 利用可能なオプションは truncate --help を見てください。&lt;br /&gt;
size=40G&lt;br /&gt;
&lt;br /&gt;
# デフォルトでは仮想コアの数よりも少ない 1 になります。必要に応じて手動で再定義してください。&lt;br /&gt;
max=$(($(nproc) - 1))&lt;br /&gt;
&lt;br /&gt;
if [[ ! -f $img ]]; then&lt;br /&gt;
  truncate -s $size $img&lt;br /&gt;
  mkfs.ext4 $img&lt;br /&gt;
  [[ -d $mnt ]] || mkdir -p $mnt&lt;br /&gt;
  if ! mountpoint -q $mnt; then&lt;br /&gt;
    mount -o loop $img $mnt || exit 1&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
for i in $(eval echo &amp;quot;{0..$max}&amp;quot;); do&lt;br /&gt;
  echo &amp;quot;using core $i of $max&amp;quot;&lt;br /&gt;
  taskset -c &amp;quot;$i&amp;quot; time dd if=/dev/zero of=$mnt/zerofill status=progress&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
umount $mnt&lt;br /&gt;
rm $img&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== GCC ===&lt;br /&gt;
&lt;br /&gt;
GCC (または他のコンパイラ) を使った並列コンパイルは、CPU とメモリに大きな負荷をかけます。I/O のボトルネックを回避するために、SSD 上または [[tmpfs]] 内でコンパイルしてください。&lt;br /&gt;
&lt;br /&gt;
カーネルをコンパイルするのが良い例でしょう (詳細な手順は [[カーネル/Arch build system]] の記事を読んでください)。この場合、[[カーネル/Arch build system#コンパイル]] 章の部分で {{ic|1=makepkg -sf MAKEFLAGS=&amp;quot;-j$(nproc)&amp;quot;}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== 動画エンコード ===&lt;br /&gt;
&lt;br /&gt;
ほとんどの動画エンコーダは非常に良く並列化されており、CPU の計算能力をほぼ全て使うように設計されています。以下の例では、x265 を使ってノイズをエンコードし、結果を破棄します。CPU に大きな負荷がかかります。&lt;br /&gt;
&lt;br /&gt;
 ffmpeg -y -f rawvideo -video_size 1920x1080 -pixel_format yuv420p -framerate 60 -i /dev/urandom -c:v libx265 -preset placebo -f matroska /dev/null&lt;br /&gt;
&lt;br /&gt;
== エラーを発見する ==&lt;br /&gt;
&lt;br /&gt;
[[#MPrime]] や [[#Linpack]] といった一部のストレステストアプリケーションには、結果の不一致によるエラーを発見するための一貫性チェックが組み込まれています。ハードウェアの不安定性を測定するためのより一般的でよりシンプルな方法は、カーネル自体に存在します。&lt;br /&gt;
&lt;br /&gt;
=== journalctl で手動で検索する ===&lt;br /&gt;
&lt;br /&gt;
以下のようにクラッシュに関する journal をフィルターしてください:&lt;br /&gt;
&lt;br /&gt;
 # journalctl -k --grep=mce&lt;br /&gt;
&lt;br /&gt;
=== rasdaemon を使う ===&lt;br /&gt;
&lt;br /&gt;
あるいは、{{AUR|rasdaemon}} をビルドして、同梱されているサービスを[[起動]]する方法もあります。Rasdaemon はエラーを sqlite データベースに保持します。同梱されている {{ic|ras-mc-ctl}} バイナリでデータベースはクエリできます。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
 # ras-mc-ctl --errors&lt;br /&gt;
 No Memory errors.&lt;br /&gt;
 No PCIe AER errors.&lt;br /&gt;
 No ARM processor errors.&lt;br /&gt;
 No Extlog errors.&lt;br /&gt;
 No devlink errors.&lt;br /&gt;
 MCE events:&lt;br /&gt;
 1 2025-06-23 08:24:48 -0400 error: Corrected error, no action required., CPU 2, bank Load Store Unit (bank=0), mcg mcgstatus=0, mci CECC, mca DC data error type 2. Ext Err Code: 13 Memory Error &#039;mem-tx: evict, tx: data, level: L1&#039;, mcgcap=0x00000107, status=0x9c204000000d0175, addr=0x185dd56627, misc=0xd01a000100000000, walltime=0x68594791, cpu=0x00000002, cpuid=0x00b40f40, apicid=0x00000004, microcode=0x0b404032&lt;br /&gt;
&lt;br /&gt;
=== コアまでエラーをトラッキングする ===&lt;br /&gt;
&lt;br /&gt;
設定を最適化する際には、BIOS のオーバークロックのセクションで用いられるような文脈でのコア単位の安定性について理解しておくことが重要になります。一つのコアには複数の CPU が含まれていることもあります。&lt;br /&gt;
&lt;br /&gt;
Ryzen 9950X (物理コア16個、CPU 32個) での以下のジャーナルのエラーを考えてみてください:&lt;br /&gt;
&lt;br /&gt;
 [Hardware Error]: Corrected error, no action required.&lt;br /&gt;
 [Hardware Error]: CPU:5 (1a:44:0) MC0_STATUS[-|CE|MiscV|AddrV|-|-|SyndV|CECC|-|-|-]: 0x9c204000000d0175&lt;br /&gt;
 [Hardware Error]: Error Addr: 0x000000185d960d07&lt;br /&gt;
 [Hardware Error]: IPID: 0x000000b000000000, Syndrome: 0x0000000b1a173405&lt;br /&gt;
 [Hardware Error]: Load Store Unit Ext. Error Code: 13&lt;br /&gt;
 [Hardware Error]: cache level: L1, tx: DATA, mem-tx: EV&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは、物理コアから CPU へのマッピングリストを生成する際に使用できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/bin/gen_mapping.sh|2=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
file=/tmp/mapping.txt&lt;br /&gt;
phycores=$(( $(nproc) / 2 - 1 ))&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Core CPU&amp;quot; &amp;gt; $file&lt;br /&gt;
for ((i=0; i&amp;lt;=phycores; i++)); do&lt;br /&gt;
  echo &amp;quot;$i $(cat /sys/devices/system/cpu/cpu$i/topology/core_cpus_list)&amp;quot; &amp;gt;&amp;gt; $file&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
column -t $file&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
カーネルの ID で 5 と 21 の両 CPU が物理コア 5 にマップされていることがわかります:&lt;br /&gt;
&lt;br /&gt;
 Core  CPU&lt;br /&gt;
 0     0,16&lt;br /&gt;
 1     1,17&lt;br /&gt;
 2     2,18&lt;br /&gt;
 3     3,19&lt;br /&gt;
 4     4,20&lt;br /&gt;
 5     5,21&lt;br /&gt;
 6     6,22&lt;br /&gt;
 7     7,23&lt;br /&gt;
 8     8,24&lt;br /&gt;
 9     9,25&lt;br /&gt;
 10    10,26&lt;br /&gt;
 11    11,27&lt;br /&gt;
 12    12,28&lt;br /&gt;
 13    13,29&lt;br /&gt;
 14    14,30&lt;br /&gt;
 15    15,31&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Stress testing|2025-06-29|838960}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%B9%E3%83%88%E3%83%AC%E3%82%B9%E3%83%86%E3%82%B9%E3%83%88&amp;diff=40484</id>
		<title>ストレステスト</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%B9%E3%83%88%E3%83%AC%E3%82%B9%E3%83%86%E3%82%B9%E3%83%88&amp;diff=40484"/>
		<updated>2025-06-29T07:04:00Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: /* ストレステストのタスク */ 修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPU]]&lt;br /&gt;
[[en:Stress testing]]&lt;br /&gt;
[[pl:Stress testing]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ベンチマーク}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
ストレステストとは、コンピュータ上で様々なワークロードを実行することでコンピュータの安定性を評価することです。オーバークロックされたハードウェアや電圧を落としたハードウェアの安定性を確実にチェックし、システムの熱的挙動 (例: 最大温度、スロットリング、ノイズレベル) を監視するためによく行われます。システムの様々な部分 (CPU、GPU、RAM、ストレージなど) を異なるタイプのワークロードを使ってストレステストするためのプログラムがいくつか存在します。&lt;br /&gt;
&lt;br /&gt;
== ストレステストのタスク ==&lt;br /&gt;
&lt;br /&gt;
以下の表では、テストの種類と全体的なワークロードの大きさに基づいて、いくつかのストレステストソフトウェアをリストアップしています。多くのユースケースにおける安定性を検証するために、複数の負荷を混ぜてストレステストを行うことが重要です。&lt;br /&gt;
&lt;br /&gt;
{{Warning|この先に進む前に、システムの温度を監視する何らかの手段を確保しておくことが&#039;&#039;&#039;強く&#039;&#039;&#039;推奨されます。[[センサー]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ワークロード !! テストされるハードウェア&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; !! タスク !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; {{B|軽量&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| CPU、ストレージ || パッチのアップデート || OpenWRT プロジェクトの数百ものカーネルパッチを更新するカスタムスクリプト。[[#OpenWRT のパッチ更新]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、ストレージ || ディスクイメージを書き込む。 || [[#イメージファイルへの書き込み]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| RAM || メモリに負荷をかける || [[#MemTest86+]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; {{Y|現実的&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM、ストレージ || コンパイル || 並列コンパイルは CPU のストレステストを行うのに良い方法です。[[#GCC]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM || 動画エンコード || {{Pkg|ffmpeg}}、{{Pkg|x264}}、{{Pkg|handbrake-cli}} などは、動画エンコードを行うために使用できます。[[#動画エンコード]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM || 暗号通貨マイニング || {{Pkg|xmrig}} - {{ic|xmrig --stress}} は (CPU のモデルに基づいて) 異なる暗号通貨マイニングアルゴリズムを使用し、可能な限り最も高い負荷を掛けます。安定性と温度をテストするのに良い方法です。&lt;br /&gt;
|-&lt;br /&gt;
| GPU || 3D レンダリング || {{AUR|unigine-heaven}} はループで実行される GPU ベンチマークです。これは、GPU をストレステストするのに良い方法です。[[ベンチマーク#グラフィックス]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; {{R|人工的&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| CPU、RAM、ストレージ || 合成ストレステスト || {{Pkg|stress}} は、CPU、メモリ、I/O、そしてディスクのシンプルなワークロードジェネレータです。C で実装されています。[[#stress]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM || 素数計算 || {{AUR|mprime}} は大きな整数を因数分解します。CPU とメモリに負荷を掛けるのに良い方法です。[[#MPrime]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 代数計算 || {{AUR|linpack}} - Linpack は BLAS (Basic Linear Algebra Subprograms) ライブラリを使用してベクトルと行列の基本的な演算を行います。CPU に負荷を掛けて安定性をテストするのに良い方法です。[[#Linpack]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 円周率の計算 || {{AUR|systester}} Systester は、小数点以下 128,000,000 桁まで円周率を計算できるマルチスレッドのソフトウェアです。システムの安定性をチェックする機能が組み込まれています。[[#Systester]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| RAM || メモリに負荷をかける || {{AUR|stressapptest}} はメモリインターフェイステストです。&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 様々 || {{AUR|strain}} 多機能ストレステストユーティリティ。Rust 製。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; 主なテスト対象。事実上、すべてのテストには CPU と RAM も含まれます。&lt;br /&gt;
* &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; 軽量なテストでは、(電力/熱が制限されるという点で) コンポーネントにあまり負荷をかけません。これらのテストは、特に低電圧なシステムでの低い電力レベル (P ステート) におけるハードウェアの挙動をテストするのに役立ちます。&lt;br /&gt;
* &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; 現実的なテストは、現実世界におけるワークロードに基づいています。&lt;br /&gt;
* &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt; 人工的なテストは、ハードウェアに可能な限りに大きな負荷をかけるように明示的に設計されており、現実世界におけるワークロードを代表するようなものではない場合があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|システムの安定性を確かなものにするために、様々な温度条件下でストレステストを長い時間 (数時間から数日) 実行することが推奨されます。例えば、室温が冬や夏で大きく異なる場合、これを考慮すべきです。}}&lt;br /&gt;
&lt;br /&gt;
=== OpenWRT のパッチ更新 ===&lt;br /&gt;
&lt;br /&gt;
低負荷なワークロードの安定性テストとしては、OpenWRT プロジェクトのパッチセットをアップデートするのが良いでしょう。以下のステップに従ってください。&lt;br /&gt;
&lt;br /&gt;
{{Note|git や curl など、いくつかの依存パッケージが必要になります。その他のパッケージは {{Pkg|base-devel}} メタパッケージによってほとんど提供されるはずです。念の為に {{AUR|openwrt-devel}} メタパッケージをインストールすることができます。}}&lt;br /&gt;
&lt;br /&gt;
 git clone --depth 1 https://github.com/openwrt/openwrt.git&lt;br /&gt;
 cd openwrt&lt;br /&gt;
 mkdir -p staging_dir/host/bin&lt;br /&gt;
 cp /usr/bin/sed ./staging_dir/host/bin&lt;br /&gt;
 curl -Os https://raw.githubusercontent.com/KanjiMonster/maintainer-tools/master/update_kernel.sh&lt;br /&gt;
 chmod +x update_kernel.sh&lt;br /&gt;
 ./update_kernel.sh -v -u 6.6&lt;br /&gt;
&lt;br /&gt;
=== stress ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|stress}} は、乱数の平方根を計算するループを実行して CPU に負荷を掛けます。例えば、複数のワーカーを同時に実行して CPU の全コアに負荷を掛けることができます。また、渡されたパラメータに応じてメモリや I/O、ディスクのワークロードを生成することもできます。[https://web.archive.org/web/20190629131203/http://people.seas.harvard.edu/~apw/stress/FAQ FAQ] には例や説明があります。&lt;br /&gt;
&lt;br /&gt;
4 つのワーカーを生成して平方根の計算を行うには、以下のコマンドを使ってください:&lt;br /&gt;
&lt;br /&gt;
 $ stress --cpu 4&lt;br /&gt;
&lt;br /&gt;
=== s-tui ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|s-tui}} は、ターミナルベースの CPU ストレステスト及び監視ユーティリティです。CPU の使用率と温度を監視でき、CPU に負荷をかけることもできます。ターミナルグラフィカルインターフェイスで、1つの画面で必要な情報をすべて確認できるスイスナイフのようなツールです。&lt;br /&gt;
&lt;br /&gt;
=== MPrime ===&lt;br /&gt;
&lt;br /&gt;
MPrime (Windows と MacOS の実装では Prime95 とも) は、システムの安定性の事実上の指標の1つとして広く認知されています。耐久テスト (Torture Test) モードでは、MPrime は CPU に非常に大きな負荷を掛ける一連の計算を行い、得られた値を既知の良い値と比較します。&lt;br /&gt;
&lt;br /&gt;
Linux の実装は {{AUR|mprime}} と呼ばれています。&lt;br /&gt;
&lt;br /&gt;
mprime を実行するには、シェルを開き、&amp;quot;mprime&amp;quot; とタイプしてください:&lt;br /&gt;
&lt;br /&gt;
 $ mprime&lt;br /&gt;
&lt;br /&gt;
{{Note|[[CPU 周波数スケーリング]]を使用している場合、プロセッサが最高のクロック倍率で動作するように手動で設定する必要がある場合があります。mprime は、倍数のステップアップを発生させないような nice 値を使用するからです。}}&lt;br /&gt;
&lt;br /&gt;
ソフトウェアがロードされたら、最初の質問に &#039;N&#039; と答えるだけで耐久テストが始まります:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Main Menu&lt;br /&gt;
&lt;br /&gt;
1.  Test/Primenet&lt;br /&gt;
2.  Test/Worker threads&lt;br /&gt;
3.  Test/Status&lt;br /&gt;
4.  Test/Continue&lt;br /&gt;
5.  Test/Exit&lt;br /&gt;
6.  Advanced/Test&lt;br /&gt;
7.  Advanced/Time&lt;br /&gt;
8.  Advanced/P-1&lt;br /&gt;
9.  Advanced/ECM&lt;br /&gt;
10.  Advanced/Manual Communication&lt;br /&gt;
11.  Advanced/Unreserve Exponent&lt;br /&gt;
12.  Advanced/Quit Gimps&lt;br /&gt;
13.  Options/CPU&lt;br /&gt;
14.  Options/Preferences&lt;br /&gt;
15.  Options/Torture Test&lt;br /&gt;
16.  Options/Benchmark&lt;br /&gt;
17.  Help/About&lt;br /&gt;
18.  Help/About PrimeNet Server&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
耐久テスト (メニューオプション 15) にはいくつかのオプションが存在します。&lt;br /&gt;
&lt;br /&gt;
* CPU に負担をかけるには Small FFTs (オプション 1)。&lt;br /&gt;
* CPU とメモリコントローラをテストするには In-place large FFTs (オプション 2)。&lt;br /&gt;
* Blend (オプション 3) はデフォルトであり、CPU とメモリに負担をかけるハイブリッドモードです。&lt;br /&gt;
&lt;br /&gt;
エラーが発生した場合は、標準出力と {{ic|~/results.txt}} の両方に出力されます。24 時間 Large FFTs を実行できなければ、多くの人はシステムが安定しているとはみなさないでしょう。&lt;br /&gt;
&lt;br /&gt;
{{ic|~/results.txt}} の例です。6月26日からの2回の実行でハードウェア障害が発生していることが分かります。このケースでは、CPU のコア電圧が不足していることが原因です:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
[Sun Jun 26 20:10:35 2011]&lt;br /&gt;
FATAL ERROR: Rounding was 0.5, expected less than 0.4&lt;br /&gt;
Hardware failure detected, consult stress.txt file.&lt;br /&gt;
FATAL ERROR: Rounding was 0.5, expected less than 0.4&lt;br /&gt;
Hardware failure detected, consult stress.txt file.&lt;br /&gt;
[Sat Aug 20 10:50:45 2011]&lt;br /&gt;
Self-test 480K passed!&lt;br /&gt;
Self-test 480K passed!&lt;br /&gt;
[Sat Aug 20 11:06:02 2011]&lt;br /&gt;
Self-test 128K passed!&lt;br /&gt;
Self-test 128K passed!&lt;br /&gt;
[Sat Aug 20 11:22:10 2011]&lt;br /&gt;
Self-test 560K passed!&lt;br /&gt;
Self-test 560K passed!&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|メモリやメモリコントローラの問題を疑っている場合、まず Blend テストを実行してみるべきです。Small FFT テストは僅かなメモリしか使用しないからです。}}&lt;br /&gt;
&lt;br /&gt;
=== Linpack ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|linpack}} は BLAS (Basic Linear Algebra Subprograms) ライブラリを使用して基本的なベクトルと行列の演算を行います。CPU に負荷をかけて安定性を調べる素晴らしい方法です (Intel CPU のみをサポートしています)。インストール後、{{ic|/usr/share/linpack/linpack.conf}} を {{ic|~/.config/linpack.conf}} にコピーし、システムのメモリ容量にあわせて設定を行ってください。&lt;br /&gt;
&lt;br /&gt;
=== Systester ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|Systester}} (Windows 版では SuperPi) は、CLI と GUI の両方のバージョンが利用できます。1億2800桁の円周率を計算してシステムの安定性をテストし、エラーの確認も行います。2つの異なる計算アルゴリズムから選択できます: Borwein の2次収束の公式と Gauss-Legendre 公式です。後者は Windows の人気な SuperPi が使っている方法と同じです。&lt;br /&gt;
&lt;br /&gt;
8スレッドを使用する CLI の例は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 $ systester-cli -gausslg 64M -threads 8&lt;br /&gt;
&lt;br /&gt;
=== MemTest86+ ===&lt;br /&gt;
&lt;br /&gt;
[https://www.memtest86.com/ MemTest86] (プロプライエタリ) か [https://www.memtest.org/ Memtest86+] (GPL) を使ってメモリ (RAM) をテストします。&lt;br /&gt;
&lt;br /&gt;
* GPL のバージョンは [https://archlinux.org/download/ Arch Linux のインストールイメージ]で入手できます。以下でインストールできます:&lt;br /&gt;
** EFI システムの場合は {{Pkg|memtest86+-efi}}&lt;br /&gt;
** BIOS システムの場合は {{Pkg|memtest86+}}&lt;br /&gt;
* プロプライエタリなバージョンは BIOS をサポートしていません。{{AUR|memtest86-efi}} でインストールできます。&lt;br /&gt;
* インストールしたら、[[GRUB#メイン設定ファイルの生成|GRUB を更新]]することで、GRUB はパッケージを自動で検出し、MemTest86 を直接起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* バージョン履歴の信頼できるソースは memtest86.com の [https://www.memtest86.com/memtest86.html History of MemTest86] セクションです。特に &amp;quot;2002 - 2004&amp;quot; とそれ以降のセクションです。プロプライエタリな MemTest86 のバージョン 5 から 7 までは BIOS と UEFI の両方をサポートしていると主張していますが、単に古いバージョンと新しいバージョンをバンドルしているだけだということに注意してください。&lt;br /&gt;
* 通常、テストをエラー無しで 10 サイクル以上実行できたら十分です。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== イメージファイルへの書き込み ===&lt;br /&gt;
&lt;br /&gt;
低負荷ワークロードでの安定性テストとしては、{{ic|dd}} を使ってイメージをフォーマットするのが良い方法でしょう。これは、物理ディスクでもループバックマウントのイメージでも可能です。以下のスクリプトは、マウントされたイメージを使用し、ループ1回毎に各コアを1つずつ使います。あなたのシステムと合致するようにスクリプト上部の変数を調整する必要があることに注意してください。デフォルトでは、このスクリプトは1コアあたり1回だけコマンドを実行します。for ループを変更することで、0 から n までのすべてのコアをスキャンするのではなく、既知の弱いコア上で実行するように容易にカスタマイズすることができます。以下のスクリプトを root として実行してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|format-test.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# イメージを保存するパスを定義します。読み書きを回避するために tmpfs でマウントされた場所が推奨されます。&lt;br /&gt;
img=/scratch/image.img&lt;br /&gt;
&lt;br /&gt;
# マウントポイントを定義します。&lt;br /&gt;
mnt=/mnt/loop&lt;br /&gt;
&lt;br /&gt;
# truncate に渡すサイズ引数。システムの空きメモリよりも小さい値にしてください。&lt;br /&gt;
# 利用可能なオプションは truncate --help を見てください。&lt;br /&gt;
size=40G&lt;br /&gt;
&lt;br /&gt;
# デフォルトでは仮想コアの数よりも少ない 1 になります。必要に応じて手動で再定義してください。&lt;br /&gt;
max=$(($(nproc) - 1))&lt;br /&gt;
&lt;br /&gt;
if [[ ! -f $img ]]; then&lt;br /&gt;
  truncate -s $size $img&lt;br /&gt;
  mkfs.ext4 $img&lt;br /&gt;
  [[ -d $mnt ]] || mkdir -p $mnt&lt;br /&gt;
  if ! mountpoint -q $mnt; then&lt;br /&gt;
    mount -o loop $img $mnt || exit 1&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
for i in $(eval echo &amp;quot;{0..$max}&amp;quot;); do&lt;br /&gt;
  echo &amp;quot;using core $i of $max&amp;quot;&lt;br /&gt;
  taskset -c &amp;quot;$i&amp;quot; time dd if=/dev/zero of=$mnt/zerofill status=progress&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
umount $mnt&lt;br /&gt;
rm $img&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== GCC ===&lt;br /&gt;
&lt;br /&gt;
GCC (または他のコンパイラ) を使った並列コンパイルは、CPU とメモリに大きな負荷をかけます。I/O のボトルネックを回避するために、SSD 上または [[tmpfs]] 内でコンパイルしてください。&lt;br /&gt;
&lt;br /&gt;
カーネルをコンパイルするのが良い例でしょう (詳細な手順は [[カーネル/Arch build system]] の記事を読んでください)。この場合、[[カーネル/Arch build system#コンパイル]] 章の部分で {{ic|1=makepkg -sf MAKEFLAGS=&amp;quot;-j$(nproc)&amp;quot;}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== 動画エンコード ===&lt;br /&gt;
&lt;br /&gt;
ほとんどの動画エンコーダは非常に良く並列化されており、CPU の計算能力をほぼ全て使うように設計されています。以下の例では、x265 を使ってノイズをエンコードし、結果を破棄します。CPU に大きな負荷がかかります。&lt;br /&gt;
&lt;br /&gt;
 ffmpeg -y -f rawvideo -video_size 1920x1080 -pixel_format yuv420p -framerate 60 -i /dev/urandom -c:v libx265 -preset placebo -f matroska /dev/null&lt;br /&gt;
&lt;br /&gt;
== エラーを発見する ==&lt;br /&gt;
&lt;br /&gt;
[[#MPrime]] や [[#Linpack]] といった一部のストレステストアプリケーションには、結果の不一致によるエラーを発見するための一貫性チェックが組み込まれています。ハードウェアの不安定性を測定するためのより一般的でよりシンプルな方法は、カーネル自体に存在します。&lt;br /&gt;
&lt;br /&gt;
=== journalctl で手動で検索する ===&lt;br /&gt;
&lt;br /&gt;
以下のようにクラッシュに関する journal をフィルターしてください:&lt;br /&gt;
&lt;br /&gt;
 # journalctl -k --grep=mce&lt;br /&gt;
&lt;br /&gt;
=== rasdaemon を使う ===&lt;br /&gt;
&lt;br /&gt;
あるいは、{{AUR|rasdaemon}} をビルドして、同梱されているサービスを[[起動]]する方法もあります。Rasdaemon はエラー sqlite データベースを保持します。同梱されている {{ic|ras-mc-ctl}} バイナリでデータベースはクエリできます。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
 # ras-mc-ctl --errors&lt;br /&gt;
 No Memory errors.&lt;br /&gt;
 No PCIe AER errors.&lt;br /&gt;
 No ARM processor errors.&lt;br /&gt;
 No Extlog errors.&lt;br /&gt;
 No devlink errors.&lt;br /&gt;
 MCE events:&lt;br /&gt;
 1 2025-06-23 08:24:48 -0400 error: Corrected error, no action required., CPU 2, bank Load Store Unit (bank=0), mcg mcgstatus=0, mci CECC, mca DC data error type 2. Ext Err Code: 13 Memory Error &#039;mem-tx: evict, tx: data, level: L1&#039;, mcgcap=0x00000107, status=0x9c204000000d0175, addr=0x185dd56627, misc=0xd01a000100000000, walltime=0x68594791, cpu=0x00000002, cpuid=0x00b40f40, apicid=0x00000004, microcode=0x0b404032&lt;br /&gt;
&lt;br /&gt;
=== コアまでエラーをトラッキングする ===&lt;br /&gt;
&lt;br /&gt;
設定を最適化する際には、BIOS のオーバークロックのセクションで用いられるような文脈でのコア単位の安定性について理解しておくことが重要になります。一つのコアには複数の CPU が含まれていることもあります。&lt;br /&gt;
&lt;br /&gt;
Ryzen 9950X (物理コア16個、CPU 32個) での以下のジャーナルのエラーを考えてみてください:&lt;br /&gt;
&lt;br /&gt;
 [Hardware Error]: Corrected error, no action required.&lt;br /&gt;
 [Hardware Error]: CPU:5 (1a:44:0) MC0_STATUS[-|CE|MiscV|AddrV|-|-|SyndV|CECC|-|-|-]: 0x9c204000000d0175&lt;br /&gt;
 [Hardware Error]: Error Addr: 0x000000185d960d07&lt;br /&gt;
 [Hardware Error]: IPID: 0x000000b000000000, Syndrome: 0x0000000b1a173405&lt;br /&gt;
 [Hardware Error]: Load Store Unit Ext. Error Code: 13&lt;br /&gt;
 [Hardware Error]: cache level: L1, tx: DATA, mem-tx: EV&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは、物理コアから CPU へのマッピングリストを生成する際に使用できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/bin/gen_mapping.sh|2=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
file=/tmp/mapping.txt&lt;br /&gt;
phycores=$(( $(nproc) / 2 - 1 ))&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Core CPU&amp;quot; &amp;gt; $file&lt;br /&gt;
for ((i=0; i&amp;lt;=phycores; i++)); do&lt;br /&gt;
  echo &amp;quot;$i $(cat /sys/devices/system/cpu/cpu$i/topology/core_cpus_list)&amp;quot; &amp;gt;&amp;gt; $file&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
column -t $file&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
カーネルの ID で 5 と 21 の両 CPU が物理コア 5 にマップされていることがわかります:&lt;br /&gt;
&lt;br /&gt;
 Core  CPU&lt;br /&gt;
 0     0,16&lt;br /&gt;
 1     1,17&lt;br /&gt;
 2     2,18&lt;br /&gt;
 3     3,19&lt;br /&gt;
 4     4,20&lt;br /&gt;
 5     5,21&lt;br /&gt;
 6     6,22&lt;br /&gt;
 7     7,23&lt;br /&gt;
 8     8,24&lt;br /&gt;
 9     9,25&lt;br /&gt;
 10    10,26&lt;br /&gt;
 11    11,27&lt;br /&gt;
 12    12,28&lt;br /&gt;
 13    13,29&lt;br /&gt;
 14    14,30&lt;br /&gt;
 15    15,31&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Stress testing|2025-06-29|838960}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%B9%E3%83%88%E3%83%AC%E3%82%B9%E3%83%86%E3%82%B9%E3%83%88&amp;diff=40483</id>
		<title>ストレステスト</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%B9%E3%83%88%E3%83%AC%E3%82%B9%E3%83%86%E3%82%B9%E3%83%88&amp;diff=40483"/>
		<updated>2025-06-29T07:00:59Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPU]]&lt;br /&gt;
[[en:Stress testing]]&lt;br /&gt;
[[pl:Stress testing]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ベンチマーク}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
ストレステストとは、コンピュータ上で様々なワークロードを実行することでコンピュータの安定性を評価することです。オーバークロックされたハードウェアや電圧を落としたハードウェアの安定性を確実にチェックし、システムの熱的挙動 (例: 最大温度、スロットリング、ノイズレベル) を監視するためによく行われます。システムの様々な部分 (CPU、GPU、RAM、ストレージなど) を異なるタイプのワークロードを使ってストレステストするためのプログラムがいくつか存在します。&lt;br /&gt;
&lt;br /&gt;
== ストレステストのタスク ==&lt;br /&gt;
&lt;br /&gt;
以下の表では、テストの種類と全体的なワークロードの大きさに基づいて、いくつかのストレステストソフトウェアをリストアップしています。多くのユースケースにおける安定性を検証するために、複数の負荷を混ぜてストレステストを行うことが重要です。&lt;br /&gt;
&lt;br /&gt;
{{Warning|この先に進む前に、システムの温度を監視する何らかの手段を確保しておくことが&#039;&#039;&#039;強く&#039;&#039;&#039;推奨されます。[[センサー]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ワークロード !! テストされるハードウェア&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; !! タスク !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; {{B|軽量&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| CPU、ストレージ || パッチのアップデート || OpenWRT プロジェクトの数百ものカーネルパッチを更新するカスタムスクリプト。[[#OpenWRT のパッチ更新]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、ストレージ || ディスクイメージを書き込む。 || [[#イメージファイルへの書き込み]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| RAM || メモリに負荷をかける || [[#MemTest86+]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; {{Y|現実的&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM、ストレージ || コンパイル || 並列コンパイルは CPU のストレステストを行うのに良い方法です。[[#GCC]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM || 動画エンコード || {{Pkg|ffmpeg}}、{{Pkg|x264}}、{{Pkg|handbrake-cli}} などは、動画エンコードを行うために使用できます。[[#動画エンコード]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM || 暗号通貨マイニング || {{Pkg|xmrig}} - {{ic|xmrig --stress}} は (CPU のモデルに基づいて) 異なる暗号通貨マイニングアルゴリズムを使用し、可能な限り最も高い負荷を掛けます。安定性と温度をテストするのに良い方法です。&lt;br /&gt;
|-&lt;br /&gt;
| GPU || 3D レンダリング || {{AUR|unigine-heaven}} はループで実行される GPU ベンチマークです。これは、GPU をストレステストするのに良い方法です。[[ベンチマーク#グラフィックス]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot; {{R|人工的&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| CPU、RAM、ストレージ || 合成ストレステスト || {{Pkg|stress}} は、CPU、メモリ、I/O、そしてディスクのシンプルなワークロードジェネレータです。C で実装されています。[[#stress]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU、RAM || 素数計算 || {{AUR|mprime}} は大きな整数を因数分解します。CPU とメモリに負荷を掛けるのに良い方法です。[[#MPrime]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 代数計算 || {{AUR|linpack}} - Linpack は BLAS (Basic Linear Algebra Subprograms) ライブラリを使用してベクトルと行列の基本的な演算を行います。CPU に負荷を掛けて安定性をテストするのに良い方法です。[[#Linpack]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 円周率の計算 || {{AUR|systester}} Systester は、小数点以下 128,000,000 桁まで円周率を計算できるマルチスレッドのソフトウェアです。システムの安定性をチェックする機能が組み込まれています。[[#Systester]] を参照。&lt;br /&gt;
|-&lt;br /&gt;
| RAM || メモリに負荷をかける || {{AUR|stressapptest}} はメモリインターフェイステストです。&lt;br /&gt;
|-&lt;br /&gt;
| CPU || 様々 || {{AUR|strain}} 多機能ストレステストユーティリティ。Rust 製。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; 主なテスト対象。事実上、すべてのテストには CPU と RAM も含まれます。&lt;br /&gt;
* &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Light テストでは、(電力/熱が制限されるという点で) コンポーネントにあまり負荷をかけません。これらのテストは、特に低電圧なシステムでの低い電力レベル (P ステート) におけるハードウェアの挙動をテストするのに役立ちます。&lt;br /&gt;
* &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; Realistic テストは、現実世界におけるワークロードに基づいています。&lt;br /&gt;
* &amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt; Synthetic テストは、ハードウェアに可能な限りに大きな負荷をかけるように明示的に設計されており、現実世界におけるワークロードを代表するようなものではない場合があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|システムの安定性を確かなものにするために、様々な温度条件下でストレステストを長い時間 (数時間から数日) 実行することが推奨されます。例えば、室温が冬や夏で大きく異なる場合、これを考慮すべきです。}}&lt;br /&gt;
&lt;br /&gt;
=== OpenWRT のパッチ更新 ===&lt;br /&gt;
&lt;br /&gt;
低負荷なワークロードの安定性テストとしては、OpenWRT プロジェクトのパッチセットをアップデートするのが良いでしょう。以下のステップに従ってください。&lt;br /&gt;
&lt;br /&gt;
{{Note|git や curl など、いくつかの依存パッケージが必要になります。その他のパッケージは {{Pkg|base-devel}} メタパッケージによってほとんど提供されるはずです。念の為に {{AUR|openwrt-devel}} メタパッケージをインストールすることができます。}}&lt;br /&gt;
&lt;br /&gt;
 git clone --depth 1 https://github.com/openwrt/openwrt.git&lt;br /&gt;
 cd openwrt&lt;br /&gt;
 mkdir -p staging_dir/host/bin&lt;br /&gt;
 cp /usr/bin/sed ./staging_dir/host/bin&lt;br /&gt;
 curl -Os https://raw.githubusercontent.com/KanjiMonster/maintainer-tools/master/update_kernel.sh&lt;br /&gt;
 chmod +x update_kernel.sh&lt;br /&gt;
 ./update_kernel.sh -v -u 6.6&lt;br /&gt;
&lt;br /&gt;
=== stress ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|stress}} は、乱数の平方根を計算するループを実行して CPU に負荷を掛けます。例えば、複数のワーカーを同時に実行して CPU の全コアに負荷を掛けることができます。また、渡されたパラメータに応じてメモリや I/O、ディスクのワークロードを生成することもできます。[https://web.archive.org/web/20190629131203/http://people.seas.harvard.edu/~apw/stress/FAQ FAQ] には例や説明があります。&lt;br /&gt;
&lt;br /&gt;
4 つのワーカーを生成して平方根の計算を行うには、以下のコマンドを使ってください:&lt;br /&gt;
&lt;br /&gt;
 $ stress --cpu 4&lt;br /&gt;
&lt;br /&gt;
=== s-tui ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|s-tui}} は、ターミナルベースの CPU ストレステスト及び監視ユーティリティです。CPU の使用率と温度を監視でき、CPU に負荷をかけることもできます。ターミナルグラフィカルインターフェイスで、1つの画面で必要な情報をすべて確認できるスイスナイフのようなツールです。&lt;br /&gt;
&lt;br /&gt;
=== MPrime ===&lt;br /&gt;
&lt;br /&gt;
MPrime (Windows と MacOS の実装では Prime95 とも) は、システムの安定性の事実上の指標の1つとして広く認知されています。耐久テスト (Torture Test) モードでは、MPrime は CPU に非常に大きな負荷を掛ける一連の計算を行い、得られた値を既知の良い値と比較します。&lt;br /&gt;
&lt;br /&gt;
Linux の実装は {{AUR|mprime}} と呼ばれています。&lt;br /&gt;
&lt;br /&gt;
mprime を実行するには、シェルを開き、&amp;quot;mprime&amp;quot; とタイプしてください:&lt;br /&gt;
&lt;br /&gt;
 $ mprime&lt;br /&gt;
&lt;br /&gt;
{{Note|[[CPU 周波数スケーリング]]を使用している場合、プロセッサが最高のクロック倍率で動作するように手動で設定する必要がある場合があります。mprime は、倍数のステップアップを発生させないような nice 値を使用するからです。}}&lt;br /&gt;
&lt;br /&gt;
ソフトウェアがロードされたら、最初の質問に &#039;N&#039; と答えるだけで耐久テストが始まります:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Main Menu&lt;br /&gt;
&lt;br /&gt;
1.  Test/Primenet&lt;br /&gt;
2.  Test/Worker threads&lt;br /&gt;
3.  Test/Status&lt;br /&gt;
4.  Test/Continue&lt;br /&gt;
5.  Test/Exit&lt;br /&gt;
6.  Advanced/Test&lt;br /&gt;
7.  Advanced/Time&lt;br /&gt;
8.  Advanced/P-1&lt;br /&gt;
9.  Advanced/ECM&lt;br /&gt;
10.  Advanced/Manual Communication&lt;br /&gt;
11.  Advanced/Unreserve Exponent&lt;br /&gt;
12.  Advanced/Quit Gimps&lt;br /&gt;
13.  Options/CPU&lt;br /&gt;
14.  Options/Preferences&lt;br /&gt;
15.  Options/Torture Test&lt;br /&gt;
16.  Options/Benchmark&lt;br /&gt;
17.  Help/About&lt;br /&gt;
18.  Help/About PrimeNet Server&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
耐久テスト (メニューオプション 15) にはいくつかのオプションが存在します。&lt;br /&gt;
&lt;br /&gt;
* CPU に負担をかけるには Small FFTs (オプション 1)。&lt;br /&gt;
* CPU とメモリコントローラをテストするには In-place large FFTs (オプション 2)。&lt;br /&gt;
* Blend (オプション 3) はデフォルトであり、CPU とメモリに負担をかけるハイブリッドモードです。&lt;br /&gt;
&lt;br /&gt;
エラーが発生した場合は、標準出力と {{ic|~/results.txt}} の両方に出力されます。24 時間 Large FFTs を実行できなければ、多くの人はシステムが安定しているとはみなさないでしょう。&lt;br /&gt;
&lt;br /&gt;
{{ic|~/results.txt}} の例です。6月26日からの2回の実行でハードウェア障害が発生していることが分かります。このケースでは、CPU のコア電圧が不足していることが原因です:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
[Sun Jun 26 20:10:35 2011]&lt;br /&gt;
FATAL ERROR: Rounding was 0.5, expected less than 0.4&lt;br /&gt;
Hardware failure detected, consult stress.txt file.&lt;br /&gt;
FATAL ERROR: Rounding was 0.5, expected less than 0.4&lt;br /&gt;
Hardware failure detected, consult stress.txt file.&lt;br /&gt;
[Sat Aug 20 10:50:45 2011]&lt;br /&gt;
Self-test 480K passed!&lt;br /&gt;
Self-test 480K passed!&lt;br /&gt;
[Sat Aug 20 11:06:02 2011]&lt;br /&gt;
Self-test 128K passed!&lt;br /&gt;
Self-test 128K passed!&lt;br /&gt;
[Sat Aug 20 11:22:10 2011]&lt;br /&gt;
Self-test 560K passed!&lt;br /&gt;
Self-test 560K passed!&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|メモリやメモリコントローラの問題を疑っている場合、まず Blend テストを実行してみるべきです。Small FFT テストは僅かなメモリしか使用しないからです。}}&lt;br /&gt;
&lt;br /&gt;
=== Linpack ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|linpack}} は BLAS (Basic Linear Algebra Subprograms) ライブラリを使用して基本的なベクトルと行列の演算を行います。CPU に負荷をかけて安定性を調べる素晴らしい方法です (Intel CPU のみをサポートしています)。インストール後、{{ic|/usr/share/linpack/linpack.conf}} を {{ic|~/.config/linpack.conf}} にコピーし、システムのメモリ容量にあわせて設定を行ってください。&lt;br /&gt;
&lt;br /&gt;
=== Systester ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|Systester}} (Windows 版では SuperPi) は、CLI と GUI の両方のバージョンが利用できます。1億2800桁の円周率を計算してシステムの安定性をテストし、エラーの確認も行います。2つの異なる計算アルゴリズムから選択できます: Borwein の2次収束の公式と Gauss-Legendre 公式です。後者は Windows の人気な SuperPi が使っている方法と同じです。&lt;br /&gt;
&lt;br /&gt;
8スレッドを使用する CLI の例は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 $ systester-cli -gausslg 64M -threads 8&lt;br /&gt;
&lt;br /&gt;
=== MemTest86+ ===&lt;br /&gt;
&lt;br /&gt;
[https://www.memtest86.com/ MemTest86] (プロプライエタリ) か [https://www.memtest.org/ Memtest86+] (GPL) を使ってメモリ (RAM) をテストします。&lt;br /&gt;
&lt;br /&gt;
* GPL のバージョンは [https://archlinux.org/download/ Arch Linux のインストールイメージ]で入手できます。以下でインストールできます:&lt;br /&gt;
** EFI システムの場合は {{Pkg|memtest86+-efi}}&lt;br /&gt;
** BIOS システムの場合は {{Pkg|memtest86+}}&lt;br /&gt;
* プロプライエタリなバージョンは BIOS をサポートしていません。{{AUR|memtest86-efi}} でインストールできます。&lt;br /&gt;
* インストールしたら、[[GRUB#メイン設定ファイルの生成|GRUB を更新]]することで、GRUB はパッケージを自動で検出し、MemTest86 を直接起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* バージョン履歴の信頼できるソースは memtest86.com の [https://www.memtest86.com/memtest86.html History of MemTest86] セクションです。特に &amp;quot;2002 - 2004&amp;quot; とそれ以降のセクションです。プロプライエタリな MemTest86 のバージョン 5 から 7 までは BIOS と UEFI の両方をサポートしていると主張していますが、単に古いバージョンと新しいバージョンをバンドルしているだけだということに注意してください。&lt;br /&gt;
* 通常、テストをエラー無しで 10 サイクル以上実行できたら十分です。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== イメージファイルへの書き込み ===&lt;br /&gt;
&lt;br /&gt;
低負荷ワークロードでの安定性テストとしては、{{ic|dd}} を使ってイメージをフォーマットするのが良い方法でしょう。これは、物理ディスクでもループバックマウントのイメージでも可能です。以下のスクリプトは、マウントされたイメージを使用し、ループ1回毎に各コアを1つずつ使います。あなたのシステムと合致するようにスクリプト上部の変数を調整する必要があることに注意してください。デフォルトでは、このスクリプトは1コアあたり1回だけコマンドを実行します。for ループを変更することで、0 から n までのすべてのコアをスキャンするのではなく、既知の弱いコア上で実行するように容易にカスタマイズすることができます。以下のスクリプトを root として実行してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|format-test.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# イメージを保存するパスを定義します。読み書きを回避するために tmpfs でマウントされた場所が推奨されます。&lt;br /&gt;
img=/scratch/image.img&lt;br /&gt;
&lt;br /&gt;
# マウントポイントを定義します。&lt;br /&gt;
mnt=/mnt/loop&lt;br /&gt;
&lt;br /&gt;
# truncate に渡すサイズ引数。システムの空きメモリよりも小さい値にしてください。&lt;br /&gt;
# 利用可能なオプションは truncate --help を見てください。&lt;br /&gt;
size=40G&lt;br /&gt;
&lt;br /&gt;
# デフォルトでは仮想コアの数よりも少ない 1 になります。必要に応じて手動で再定義してください。&lt;br /&gt;
max=$(($(nproc) - 1))&lt;br /&gt;
&lt;br /&gt;
if [[ ! -f $img ]]; then&lt;br /&gt;
  truncate -s $size $img&lt;br /&gt;
  mkfs.ext4 $img&lt;br /&gt;
  [[ -d $mnt ]] || mkdir -p $mnt&lt;br /&gt;
  if ! mountpoint -q $mnt; then&lt;br /&gt;
    mount -o loop $img $mnt || exit 1&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
for i in $(eval echo &amp;quot;{0..$max}&amp;quot;); do&lt;br /&gt;
  echo &amp;quot;using core $i of $max&amp;quot;&lt;br /&gt;
  taskset -c &amp;quot;$i&amp;quot; time dd if=/dev/zero of=$mnt/zerofill status=progress&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
umount $mnt&lt;br /&gt;
rm $img&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== GCC ===&lt;br /&gt;
&lt;br /&gt;
GCC (または他のコンパイラ) を使った並列コンパイルは、CPU とメモリに大きな負荷をかけます。I/O のボトルネックを回避するために、SSD 上または [[tmpfs]] 内でコンパイルしてください。&lt;br /&gt;
&lt;br /&gt;
カーネルをコンパイルするのが良い例でしょう (詳細な手順は [[カーネル/Arch build system]] の記事を読んでください)。この場合、[[カーネル/Arch build system#コンパイル]] 章の部分で {{ic|1=makepkg -sf MAKEFLAGS=&amp;quot;-j$(nproc)&amp;quot;}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== 動画エンコード ===&lt;br /&gt;
&lt;br /&gt;
ほとんどの動画エンコーダは非常に良く並列化されており、CPU の計算能力をほぼ全て使うように設計されています。以下の例では、x265 を使ってノイズをエンコードし、結果を破棄します。CPU に大きな負荷がかかります。&lt;br /&gt;
&lt;br /&gt;
 ffmpeg -y -f rawvideo -video_size 1920x1080 -pixel_format yuv420p -framerate 60 -i /dev/urandom -c:v libx265 -preset placebo -f matroska /dev/null&lt;br /&gt;
&lt;br /&gt;
== エラーを発見する ==&lt;br /&gt;
&lt;br /&gt;
[[#MPrime]] や [[#Linpack]] といった一部のストレステストアプリケーションには、結果の不一致によるエラーを発見するための一貫性チェックが組み込まれています。ハードウェアの不安定性を測定するためのより一般的でよりシンプルな方法は、カーネル自体に存在します。&lt;br /&gt;
&lt;br /&gt;
=== journalctl で手動で検索する ===&lt;br /&gt;
&lt;br /&gt;
以下のようにクラッシュに関する journal をフィルターしてください:&lt;br /&gt;
&lt;br /&gt;
 # journalctl -k --grep=mce&lt;br /&gt;
&lt;br /&gt;
=== rasdaemon を使う ===&lt;br /&gt;
&lt;br /&gt;
あるいは、{{AUR|rasdaemon}} をビルドして、同梱されているサービスを[[起動]]する方法もあります。Rasdaemon はエラー sqlite データベースを保持します。同梱されている {{ic|ras-mc-ctl}} バイナリでデータベースはクエリできます。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
 # ras-mc-ctl --errors&lt;br /&gt;
 No Memory errors.&lt;br /&gt;
 No PCIe AER errors.&lt;br /&gt;
 No ARM processor errors.&lt;br /&gt;
 No Extlog errors.&lt;br /&gt;
 No devlink errors.&lt;br /&gt;
 MCE events:&lt;br /&gt;
 1 2025-06-23 08:24:48 -0400 error: Corrected error, no action required., CPU 2, bank Load Store Unit (bank=0), mcg mcgstatus=0, mci CECC, mca DC data error type 2. Ext Err Code: 13 Memory Error &#039;mem-tx: evict, tx: data, level: L1&#039;, mcgcap=0x00000107, status=0x9c204000000d0175, addr=0x185dd56627, misc=0xd01a000100000000, walltime=0x68594791, cpu=0x00000002, cpuid=0x00b40f40, apicid=0x00000004, microcode=0x0b404032&lt;br /&gt;
&lt;br /&gt;
=== コアまでエラーをトラッキングする ===&lt;br /&gt;
&lt;br /&gt;
設定を最適化する際には、BIOS のオーバークロックのセクションで用いられるような文脈でのコア単位の安定性について理解しておくことが重要になります。一つのコアには複数の CPU が含まれていることもあります。&lt;br /&gt;
&lt;br /&gt;
Ryzen 9950X (物理コア16個、CPU 32個) での以下のジャーナルのエラーを考えてみてください:&lt;br /&gt;
&lt;br /&gt;
 [Hardware Error]: Corrected error, no action required.&lt;br /&gt;
 [Hardware Error]: CPU:5 (1a:44:0) MC0_STATUS[-|CE|MiscV|AddrV|-|-|SyndV|CECC|-|-|-]: 0x9c204000000d0175&lt;br /&gt;
 [Hardware Error]: Error Addr: 0x000000185d960d07&lt;br /&gt;
 [Hardware Error]: IPID: 0x000000b000000000, Syndrome: 0x0000000b1a173405&lt;br /&gt;
 [Hardware Error]: Load Store Unit Ext. Error Code: 13&lt;br /&gt;
 [Hardware Error]: cache level: L1, tx: DATA, mem-tx: EV&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは、物理コアから CPU へのマッピングリストを生成する際に使用できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/bin/gen_mapping.sh|2=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
file=/tmp/mapping.txt&lt;br /&gt;
phycores=$(( $(nproc) / 2 - 1 ))&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Core CPU&amp;quot; &amp;gt; $file&lt;br /&gt;
for ((i=0; i&amp;lt;=phycores; i++)); do&lt;br /&gt;
  echo &amp;quot;$i $(cat /sys/devices/system/cpu/cpu$i/topology/core_cpus_list)&amp;quot; &amp;gt;&amp;gt; $file&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
column -t $file&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
カーネルの ID で 5 と 21 の両 CPU が物理コア 5 にマップされていることがわかります:&lt;br /&gt;
&lt;br /&gt;
 Core  CPU&lt;br /&gt;
 0     0,16&lt;br /&gt;
 1     1,17&lt;br /&gt;
 2     2,18&lt;br /&gt;
 3     3,19&lt;br /&gt;
 4     4,20&lt;br /&gt;
 5     5,21&lt;br /&gt;
 6     6,22&lt;br /&gt;
 7     7,23&lt;br /&gt;
 8     8,24&lt;br /&gt;
 9     9,25&lt;br /&gt;
 10    10,26&lt;br /&gt;
 11    11,27&lt;br /&gt;
 12    12,28&lt;br /&gt;
 13    13,29&lt;br /&gt;
 14    14,30&lt;br /&gt;
 15    15,31&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Stress testing|2025-06-29|838960}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%A2%E3%83%89%E3%83%90%E3%83%B3%E3%82%B9%E3%83%89%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88&amp;diff=40482</id>
		<title>アドバンスドフォーマット</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%A2%E3%83%89%E3%83%90%E3%83%B3%E3%82%B9%E3%83%89%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88&amp;diff=40482"/>
		<updated>2025-06-29T06:19:02Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ストレージ]]&lt;br /&gt;
[[en:Advanced Format]]&lt;br /&gt;
[[es:Advanced Format]]&lt;br /&gt;
[[hu:Advanced Format]]&lt;br /&gt;
[[ru:Advanced Format]]&lt;br /&gt;
[[tr:Advanced Format]]&lt;br /&gt;
[[zh-hans:先进格式化]]&lt;br /&gt;
ハードディスクドライブ (HDD) における最小の物理記憶単位は[[Wikipedia:ja:ディスクセクタ|セクタ]]です。ソリッドステートドライブ (SSD) ではページがこれと等価です。[https://www.oo-software.com/en/docs/whitepaper/whitepaper_ssd.pdf] ストレージデバイスのファームウェアは物理セクタを、ソフトウェアが操作できる論理セクタに抽象化します。論理セクタのサイズは、ディスク上のアドレッシング可能な最小単位のサイズとなります。&lt;br /&gt;
&lt;br /&gt;
{{Note|ソフトウェアとドキュメントではストレージの種類に依らずに &amp;quot;セクタ&amp;quot; と &amp;quot;ブロック&amp;quot; を同じ意味で使用していることがあります。}}&lt;br /&gt;
&lt;br /&gt;
; 物理セクタサイズ: これは、物理ストレージデバイスがアトミックに書き込めるとする最小単位です。HDD の場合、これはプラッタにおけるセクタの実際のサイズです。従来、HDD の物理セクタサイズは 512 バイトでした。つまり、各セクタは 512 バイトのデータを格納できることを意味します。しかし、[[Wikipedia:Advanced Format#History|アドバンスドフォーマット]] HDD の登場により、物理セクタサイズは 4096 バイト (4 KiB) に増え、誤り訂正機能が向上しました。SSD は NAND フラッシュメモリの実際のページサイズ (典型的には 4 KiB から 16 KiB ) を公開せず、報告される物理セクタサイズは論理セクタサイズと同じです。NVMe SSD の場合は、利用可能であれば、Atomic Write Unit Power Fail (AWUPF) パラメータの値が使用されます。&lt;br /&gt;
; 論理セクタサイズ: 論理セクタサイズ (別名、オペレーティングシステムセクタサイズ) は、オペレーティングシステムとアプリケーションに公開されるセクタサイズを表します。ソフトウェアのレベルでストレージデバイスに読み書きする際に用いられるセクタサイズです。論理セクタサイズは物理セクタサイズと異なる可能性があります。例えば、物理セクタサイズが 4096 バイトのアドバンスドフォーマット HDD は、古いシステムとアプリケーションとの互換性のために、依然として 512 バイトの論理セクタサイズを使用する場合があります。&lt;br /&gt;
&lt;br /&gt;
異なる &amp;quot;レイヤー&amp;quot; (つまり、デバイス、スタックブロックデバイス、ファイルシステム) は、同じセクタサイズを使用するべきです。そうしないと、ファームウェアの変換レイヤーからのマッピングプロセス (通常は透過的ですが) で回避可能なオーバーヘッドが発生します。&lt;br /&gt;
&lt;br /&gt;
現在の物理セクタサイズと論理セクタサイズは [[lsblk]] で見られます:&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|以下のどちらのコマンド ({{ic|lsblk}} と {{ic|cat /sys/class...}}) も NVMe ドライブ (もしかすると全 SSD) の物理セクタサイズを正確に提供せず、代わりに論理セクタサイズを報告してしまいます。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsblk -td|&lt;br /&gt;
NAME    ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED       RQ-SIZE  RA WSAME&lt;br /&gt;
sda             0   4096      0    4096    4096    1 mq-deadline      64 128    0B&lt;br /&gt;
nvme1n1         0   4096      0    4096    4096    0 none           1023 128    0B&lt;br /&gt;
nvme0n1         0   4096      0    4096    4096    0 none           1023 128    0B&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|PHY-SEC}} は物理セクタサイズを、{{ic|LOG-SEC}} は論理セクタサイズを指します。&lt;br /&gt;
&lt;br /&gt;
あるいは、以下の sysfs エントリから特定のドライブのセクタサイズを読み取ることができます:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/class/block/&#039;&#039;drive&#039;&#039;/queue/physical_block_size&lt;br /&gt;
 $ cat /sys/class/block/&#039;&#039;drive&#039;&#039;/queue/logical_block_size&lt;br /&gt;
&lt;br /&gt;
セクタサイズは、[[fdisk]]、[[smartctl]]、そして [[hdparm]] の出力からも得られます。&lt;br /&gt;
&lt;br /&gt;
== セクタサイズを変更する ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|ドライブのセクタサイズを変更すると、ドライブ上の全データが不可逆的に削除されます。}}&lt;br /&gt;
&lt;br /&gt;
一部の NVMe ドライブと &amp;quot;エンタープライズ&amp;quot; SATA ハードディスクドライブでは、それぞれ標準の NVMe コマンド (NVM Command Set Specification 1.0 及びそれ以降の {{ic|Format NVM}}) か ATA コマンド (ATA Command Set - 4 及びそれ以降の {{ic|SET SECTOR CONFIGURATION EXT}}) を使って、報告されるセクタサイズを変更することができます。ハードディスクドライブの場合、最適なパフォーマンスを得るために物理セクタサイズとマッチするように論理セクタサイズを変更します。一方、NVMe ソリッドステートドライブの場合、論理セクタサイズと物理セクタサイズの両方が変更されます。&lt;br /&gt;
&lt;br /&gt;
大抵、SATA ソリッドステートドライブはセクタサイズの変更をサポートしていません。例外は、報告される物理セクタサイズを変更できるが、論理セクタサイズは変更できない特定の Intel SATA SSD です。[https://superuser.com/q/982680] 報告される物理セクタサイズを変更するには [[#Intel]] に従ってください。&lt;br /&gt;
&lt;br /&gt;
ドライブのセクタサイズの変更は、低レベルなフォーマットが必要になる複雑なプロセスです。代替案として、ドライブ上にファイルシステムを作成する際にセクタサイズを手動で指定して最適なパフォーマンスを得ることができます。[[#dm-crypt]] と [[#ファイルシステム]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== アドバンスドフォーマットハードディスクドライブ ===&lt;br /&gt;
&lt;br /&gt;
[[hdparm]] ユーティリティを使うことで、アドバンスドフォーマットハードディスクドライブのセクタサイズを変更できるかどうか調べることができます:&lt;br /&gt;
&lt;br /&gt;
 # hdparm -I /dev/sd&#039;&#039;X&#039;&#039; {{!}} grep &#039;Sector size:&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|USB で接続されたドライブの場合、USB ブリッジが [[Wikipedia:SCSI / ATA Translation|SAT (SCSI/ATA Translation)]] (ANSI INCITS 431-2007) をサポートしている必要があります。}}&lt;br /&gt;
&lt;br /&gt;
Sector Configuration Log に複数の論理セクタサイズが表示されるアドバンスドフォーマットドライブ では、それらのリストが表示されます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
        Logical  Sector size:                   512 bytes [ Supported: 512 4096 ]&lt;br /&gt;
        Physical Sector size:                  4096 bytes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
複数の変更可能な論理セクタサイズをサポートしていないハードディスクドライブでは、現在のセクタサイズだけが報告されます。例えば、アドバンスドフォーマット 512e ドライブの場合:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
        Logical  Sector size:                   512 bytes&lt;br /&gt;
        Physical Sector size:                  4096 bytes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらの種類のドライブで最適なパフォーマンスを得るには、[[#dm-crypt]] セクタサイズまたは[[#ファイルシステム]]のブロックサイズが少なくとも 4096 バイトであり、かつ 4096 バイト境界にアライメントされている必要があります。&lt;br /&gt;
&lt;br /&gt;
アドバンスドフォーマット 4Kn ドライブの場合:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
        Logical  Sector size:                  4096 bytes&lt;br /&gt;
        Physical Sector size:                  4096 bytes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
4Kn ドライブでは、何も設定せずとも最適な設定になっており、パーティショニングやフォーマットの際に特別な考慮は必要ありません。そのまま使用することができます。&lt;br /&gt;
&lt;br /&gt;
SATA HDD が複数の論理セクタサイズとオプションの ATA コマンド {{ic|SET SECTOR CONFIGURATION EXT}} をサポートしている場合 (基本的に「エンタープライズ」クラスと呼ばれるような HDD でのみ利用できます)、&#039;&#039;hdparm&#039;&#039; を使ってサポートされているセクタサイズから選択することができます。論理セクタサイズを 4096 バイト (つまり、4Kn) に設定するには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # hdparm --set-sector-size 4096 --please-destroy-my-drive /dev/sd&#039;&#039;X&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
その後、&#039;&#039;hdparm&#039;&#039; は論理セクタサイズが 4096 バイトであると報告するはずです:&lt;br /&gt;
&lt;br /&gt;
{{hc|# hdparm -I /dev/sd&#039;&#039;X&#039;&#039; {{!}} grep &#039;Sector size:&#039;|&lt;br /&gt;
        Logical  Sector size:                  4096 bytes [ Supported: 512 4096 ]&lt;br /&gt;
        Physical Sector size:                  4096 bytes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVMe ソリッドステートドライブ ===&lt;br /&gt;
&lt;br /&gt;
ほとんどの[[ソリッドステートドライブ]] (SSD) は、論理ブロックアドレスサイズが 512 バイトであると報告します。たとえ、それより大きなサイズ (典型的には 4 KiB、8 KiB、またはそれ以上) を物理的に使用していたとしてもです。&lt;br /&gt;
&lt;br /&gt;
[[NVMe]] ドライブのフォーマットされた論理ブロックアドレスサイズ (FLBAS) を確認するには、{{Pkg|nvme-cli}} ユーティリティで &#039;&#039;Identify Namespace&#039;&#039; コマンドを使ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# nvme id-ns -H /dev/nvme0n1 {{!}} grep &amp;quot;Relative Performance&amp;quot;|&lt;br /&gt;
LBA Format  0 : Metadata Size: 0   bytes - Data Size: 512 bytes - Relative Performance: 0x2 Good (in use)&lt;br /&gt;
LBA Format  1 : Metadata Size: 0   bytes - Data Size: 4096 bytes - Relative Performance: 0x1 Better&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|Metadata Size}} は、論理ブロックアドレス (LBA) 毎の追加メタデータのバイト数です。これは Linux ではあまり良くサポートされていないため、この値が 0 であるフォーマットを選ぶのが最適です。&lt;br /&gt;
* {{ic|Relative Performance}} はそのフォーマットのパフォーマンスを示します: &#039;&#039;degraded&#039;&#039;、&#039;&#039;good&#039;&#039;、&#039;&#039;better&#039;&#039;、&#039;&#039;best&#039;&#039; のどれかです。&lt;br /&gt;
&lt;br /&gt;
[[smartctl]] も、サポートされている論理ブロックアドレスサイズを表示できますが、ユーザフレンドリーな説明は提供しません。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|# smartctl -c /dev/nvme0n1|&lt;br /&gt;
...&lt;br /&gt;
Supported LBA Sizes (NSID 0x1)&lt;br /&gt;
Id Fmt  Data  Metadt  Rel_Perf&lt;br /&gt;
 0 +     512       0         2&lt;br /&gt;
 1 -    4096       0         1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=4K セクタをサポートしていると報告するが、有効化すると散発的に (特に大きなランダム読み込み負荷が掛かる時に) 不安定になるような NVMe SSD もあります。[https://bbs.archlinux.org/viewtopic.php?pid=2238884#p2238884][https://halestrom.net/darksleep/blog/054_nvme/] 失ったらまずいデータを保存する前に、新しい設定を徹底的にテストしてください。この問題が発生した場合は、512 セクタの設定に戻せば大丈夫です。}}&lt;br /&gt;
&lt;br /&gt;
論理ブロックアドレスサイズを変更するには、{{ic|nvme format}} を使い、{{ic|--lbaf}} パラメータで好ましい値を指定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=# nvme format --lbaf=1 /dev/nvme0n1|2=&lt;br /&gt;
You are about to format nvme0n1, namespace 0x1.&lt;br /&gt;
WARNING: Format may irrevocably delete this device&#039;s data.&lt;br /&gt;
You have 10 seconds to press Ctrl-C to cancel this operation.&lt;br /&gt;
&lt;br /&gt;
Use the force [--force] option to suppress this warning.&lt;br /&gt;
Sending format operation ... &lt;br /&gt;
Success formatting namespace:1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この処理には数秒しかかからないはずです。&lt;br /&gt;
&lt;br /&gt;
{{Note|パーティショニングの際は以下の [[#パーティションのアライメント]] に従ってください。さもないと、パフォーマンス上の利点が水の泡になります。}}&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|電源状態や BIOS の設定をいじる前に、ネイティブの {{ic|nvme}} コマンドを使って操作ログを確認したり、{{ic|nvme reset}} &#039;&#039;など&#039;&#039;を使ってコントローラをソフトリセットしたりすることをお勧めします。}}&lt;br /&gt;
&lt;br /&gt;
2020年より前のドライブは、POST の最後に &amp;quot;security freeze&amp;quot; を発行する非標準的なシステムで使用する場合、{{ic|Format NVM}} コマンドをブロックする可能性があります。[https://github.com/linux-nvme/nvme-cli/issues/816][https://forums.lenovo.com/topic/findpost/1300/5043069/5167342] {{ic|nvme format}} が失敗する場合、[[systemd#電源管理|システムをサスペンド]]してみて ([[電源管理/サスペンドとハイバネート#サスペンドの方法を変更する|S0ix ではなく S3 スリープを使用]]してください)、復帰後に {{ic|nvme format}} をもう一度実行してみてください。[https://github.com/linux-nvme/nvme-cli/issues/84][https://forums.sandisk.com/t/sn750-cannot-format-using-the-nvme-command/253702]&lt;br /&gt;
&lt;br /&gt;
=== メーカー固有のプログラムを使う ===&lt;br /&gt;
&lt;br /&gt;
上記の汎用ユーティリティでセクタサイズを変更できない場合、ドライブのメーカーのユーティリティを使用すれば変更できる場合があります。&lt;br /&gt;
&lt;br /&gt;
==== Intel ====&lt;br /&gt;
&lt;br /&gt;
Intel の場合は、[https://downloadcenter.intel.com/download/29337/Intel-Memory-and-Storage-Tool-CLI-Command-Line-Interface-?product=83425 Intel Memory and Storage (MAS) Tool] ({{AUR|intel-mas-cli-tool}}) で {{ic|1=-set PhysicalSectorSize=4096}} オプションを使用してください。報告される物理セクササイズのみが変わり、論理セクタサイズは同じままであることに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|Intel の SSD 事業が SK Hynix に買収されて Solidigm ブランドになって以降、Intel MAS は SSD を管理するために使用できなくなりました (Optane 製品を除く)。Solidigm は、Intel MAS が提供していた機能を持つ {{AUR|solidigm-sst-storage-tool-cli}} を提供しています。[[ソリッドステートドライブ/NVMe#Intel/Solidigm]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== Seagate ====&lt;br /&gt;
&lt;br /&gt;
Seagate の場合、{{AUR|openseachest}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
すべてのドライブをスキャンし、適切なものを探してください。そして、見つけたドライブの情報を表示してください:&lt;br /&gt;
&lt;br /&gt;
 # openSeaChest_Basics --scan&lt;br /&gt;
 # openSeaChest_Basics -d /dev/sd&#039;&#039;X&#039;&#039; -i&lt;br /&gt;
&lt;br /&gt;
ドライブの情報が出力されるはずです。シリアル番号を確認してください。&lt;br /&gt;
&lt;br /&gt;
そのドライブによってサポートされている論理ブロックサイズを確認してください:&lt;br /&gt;
&lt;br /&gt;
 # openSeaChest_Format -d /dev/sd&#039;&#039;X&#039;&#039; --showSupportedFormats&lt;br /&gt;
&lt;br /&gt;
4096 が一覧に載っている場合、論理セクタサイズを 4096 バイトに変更できます:&lt;br /&gt;
&lt;br /&gt;
 # openSeaChest_Format -d /dev/sd&#039;&#039;X&#039;&#039; --setSectorSize=4096 --confirm this-will-erase-data&lt;br /&gt;
&lt;br /&gt;
このコマンドは完了するまで2分かかります。その後、ドライブは 4 KiB ネイティブセクタサイズを使用するようになります。&lt;br /&gt;
&lt;br /&gt;
== パーティションのアライメント ==&lt;br /&gt;
&lt;br /&gt;
パーティションを正しくアライメントすることで、読み込み・変更・書き込みの過剰なサイクルを回避できます。家庭用のコンピュータでは、各パーティションの開始位置とサイズを 1 MiB (1 048 576 バイト) 境界にアライメントするのが一般的です。これは、一般的に使用されているすべてのサイズ (1 MiB、512 KiB、128 KiB、4 KiB、512 B) で割り切ることができるので、一般的なページサイズとブロックサイズのシナリオすべてをカバーします。&lt;br /&gt;
&lt;br /&gt;
{{Warning|パーティションのアライメントを誤ると、dm-crypt/LUKS で 4096 バイトセクタを使用できなくなります。[https://lore.kernel.org/dm-crypt/fe8cd3b4-6d50-66d3-375c-254e278a6443@gmail.com/] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
* [[fdisk|fdisk、cfdisk、sfdisk]] はアライメントを自動的に管理します。&lt;br /&gt;
* [[GPT fdisk|gdisk と cgdisk]] はアライメントを自動的に管理します。&lt;br /&gt;
** &#039;&#039;sgdisk&#039;&#039; はデフォルトで、パーティションの開始位置のみをアライメントします。パーティションのサイズや終了位置のアライメントも有効化するには、{{ic|-I}}/{{ic|--align-end}} オプションを使ってください。&lt;br /&gt;
* [[Parted#アライメント|Parted]] はパーティションの開始位置のみをアライメントし、サイズと終了位置はアライメントしません。パーティションを作成するときは、パーティションの終了位置をメビバイトかより大きな IEC 2進接頭辞で指定するようにしてください。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/crysman/check-partitions-alignment checkpartitionsalignment.sh] は、[[Parted]] と awk を使ってアライメントをチェックする bash スクリプトです。&lt;br /&gt;
&lt;br /&gt;
== dm-crypt ==&lt;br /&gt;
&lt;br /&gt;
[[Cryptsetup]] 2.4.0 では、{{ic|luksFormat}} は自動的に LUKS2 フォーマットに最適な暗号化セクタサイズを検出します [https://mirrors.edge.kernel.org/pub/linux/utils/cryptsetup/v2.4/v2.4.0-ReleaseNotes]。&lt;br /&gt;
&lt;br /&gt;
しかし、これが機能するには、デバイスが正しいデフォルトセクタサイズを報告する必要があります。[[#セクタサイズを変更する]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Cryptsetup は、暗号化パフォーマンスのためにドライブのセクササイズを 4096 バイトに変更することを強く推奨しています。[https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.0-ReleaseNotes]}}&lt;br /&gt;
&lt;br /&gt;
{{ic|cryptsetup luksFormat}} を使用したあとに、LUKS2 ボリュームによって使用されているセクタサイズを確認できます:&lt;br /&gt;
&lt;br /&gt;
 # cryptsetup luksDump &#039;&#039;device&#039;&#039; | grep sector&lt;br /&gt;
&lt;br /&gt;
デフォルトのセクタサイズが正しくない場合、4 KiB のセクタサイズをそれ以外のデフォルトのオプションで LUKS2 コンテナを強制的に作成することができます:&lt;br /&gt;
&lt;br /&gt;
 # cryptsetup luksFormat --sector-size=4096 &#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
このコマンドは、要求されたサイズがデバイスと一致しない場合、エラーでアボートします:&lt;br /&gt;
&lt;br /&gt;
{{bc|# cryptsetup luksFormat --sector-size 4096 &#039;&#039;device&#039;&#039;&lt;br /&gt;
(...)&lt;br /&gt;
Verify passphrase: &lt;br /&gt;
Device size is not aligned to requested sector size.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|実際のドライブが 4 KiB 物理セクタを使用しているときにこのコマンドが失敗する可能性がある理由については、[https://gitlab.com/cryptsetup/cryptsetup/-/issues/585 cryptsetup issue 585] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
デバイスを間違ったセクタサイズで暗号化してしまった場合、以下のコマンドでそのデバイスを再暗号化できます:&lt;br /&gt;
&lt;br /&gt;
{{Warning|含まれているファイルシステムが、4096 バイトおよびその倍数のブロックサイズを持っていなければなりません。さもないと、ファイルシステムが破壊されます。}}&lt;br /&gt;
&lt;br /&gt;
 # cryptsetup reencrypt --sector-size=4096 &#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ファイルシステム ==&lt;br /&gt;
&lt;br /&gt;
4Kn ディスク (物理セクタサイズが 4096 バイト、論理セクタサイズが 4096 バイト) では、全ての &#039;&#039;mkfs&#039;&#039; ユーティリティは 4096 バイトのブロックサイズを使用します。512e ディスク (物理セクタサイズが 4096、論理セクタサイズが 512 バイト) と 512n ディスク (物理セクタサイズが 512 バイト、論理セクタサイズが 512 バイト) では、&#039;&#039;mkfs&#039;&#039; ユーティリティはそれぞれ異なる動作をします。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 非 4Kn ディスクにおけるファイルシステムのブロックサイズ (バイト単位)&lt;br /&gt;
! &#039;&#039;mkfs&#039;&#039; ユーティリティ !! 512e ディスク !! 512n ディスク&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;mkfs.bcachefs&#039;&#039; || {{G|4096}} || {{O|[https://github.com/koverstreet/bcachefs/issues/765 512]}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.btrfs}} || {{G|4096}} || {{G|4096}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.exfat}} || {{G|4096}} || {{O|512}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.ext4}} || {{G|4096}}&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; || {{G|4096}}&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.fat}} || {{R|512}} || {{O|512}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.f2fs}} || {{G|4096}} || {{G|4096}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.jfs}} || {{G|4096}} || {{G|4096}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.nilfs2}} || {{G|4096}} || {{G|4096}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.ntfs}} || {{R|[https://github.com/tuxera/ntfs-3g/issues/133 512]}} || {{O|512}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.reiserfs|url=https://manpages.debian.org/unstable/reiserfsprogs/mkfs.reiserfs.8.en.html}} || {{G|4096}} || {{G|4096}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.udf}} || {{R|512}} || {{O|512}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkfs.xfs}} || {{G|4096}} || {{O|512}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|mkswap}} || {{G|4096}} || {{G|4096}}&lt;br /&gt;
|-&lt;br /&gt;
| {{man|8|zpool-create|url=}} || {{R|512}} || {{O|512}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# {{man|8|mkfs.ext4}} はデフォルトで、512 MiB 未満のファイルシステムに対しては 1024 バイトセクタを、512 MiB 以上のファイルシステムに対しては 4096 バイトのセクタを使用します。&lt;br /&gt;
&lt;br /&gt;
ストレージデバイスが正しいセクタサイズを報告しない場合は、物理セクタサイズに応じてパーティションを明示的にフォーマットできます。&lt;br /&gt;
&lt;br /&gt;
特に、ファームウェアによって管理されている &#039;&#039;シングル磁気記録方式&#039;&#039; (Singled Magnetic Recording: SMR) ドライブは、物理セクタサイズが 4096 バイトの場合に 512 バイトの論理セクタサイズを使用すると、深刻な悪影響を受けます。これらのドライブは、パフォーマンスの異なる書き込み領域が存在し、アイドル時にはリマッピングの再割当てが発生しますが、高負荷なアクティブ書き込み (例: RAID resilvering、バックアップ、小さなファイルを大量に書き込む、rsync など) 時には、ファイルシステムのセクタサイズが異なる場合に書き込み速度が1桁の MB/s まで落ちる可能性があります。これは、高パフォーマンスな書き込み領域が枯渇し、単一の領域上でセクタの変換レイヤに高負荷がかかるからです。&lt;br /&gt;
&lt;br /&gt;
{{Note|x86_64 システムでは、Linux は 4 KiB より大きいブロックサイズのファイルシステムをマウントすることができません。詳細と現在の進捗状況については [https://kernelnewbies.org/KernelProjects/large-block-size Large block sizes (LBS)] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
以下は、4096 バイトのセクタを明示的に設定する例です:&lt;br /&gt;
&lt;br /&gt;
* [[Bcachefs]]: {{bc|1=# bcachefs format --block_size=4096 /dev/&#039;&#039;device0&#039;&#039; /dev/&#039;&#039;deviceN&#039;&#039; --replicas=&#039;&#039;n&#039;&#039;}}&lt;br /&gt;
* exFAT: {{bc|# mkfs.exfat -s 4096 /dev/&#039;&#039;device&#039;&#039;}}&lt;br /&gt;
* [[ext4]]: {{bc|# mkfs.ext4 -b 4096 /dev/&#039;&#039;device&#039;&#039;}}&lt;br /&gt;
* [[FAT]]: {{bc|# mkfs.fat -S 4096 /dev/&#039;&#039;device&#039;&#039;}}&lt;br /&gt;
* [[NTFS-3G]]: {{bc|# mkfs.ntfs -Q -s 4096 /dev/&#039;&#039;device&#039;&#039;}}&lt;br /&gt;
* UDF: {{bc|# mkfs.udf -b 4096 /dev/&#039;&#039;device&#039;&#039;}}&lt;br /&gt;
* [[XFS]]: {{bc|1=# mkfs.xfs -s size=4096 /dev/&#039;&#039;device&#039;&#039;}}&lt;br /&gt;
* [https://openzfs.github.io/openzfs-docs/Project%20and%20Community/FAQ.html#advanced-format-disks ZFS]: {{bc|1=# zpool create -o ashift=12 &#039;&#039;poolname&#039;&#039; raidz &#039;&#039;device0&#039;&#039; … &#039;&#039;deviceN&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
&lt;br /&gt;
=== Syslinux と FAT ===&lt;br /&gt;
&lt;br /&gt;
[[Syslinux]] は 512 バイト以外のセクタサイズの FAT ファイルシステムをサポートしていません。&lt;br /&gt;
&lt;br /&gt;
=== systemd-homed ===&lt;br /&gt;
&lt;br /&gt;
[[systemd-homed]] は、4096 バイトセクタサイズの 4Kn ドライブと LUKS 上では動作しません。Systemd のイシュー [https://github.com/systemd/systemd/issues/30393 30393] と [https://github.com/systemd/systemd/issues/30394 30394] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.anandtech.com/Show/Index/2888 Western Digital’s Advanced Format: The 4K Sector Transition Begins]&lt;br /&gt;
* [https://www.wdc.com/wdproducts/library/WhitePapers/ENG/2579-771430.pdf White paper entitled &amp;quot;Advanced Format Technology.&amp;quot;]&lt;br /&gt;
* HDD のアライメントを間違えると、読み込み/書き込みのパフォーマンスが劣化します。具体的な例は [https://linuxconfig.org/linux-wd-ears-advanced-format] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Advanced Format|2025-06-29|839284}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Uwsm&amp;diff=40481</id>
		<title>Uwsm</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Uwsm&amp;diff=40481"/>
		<updated>2025-06-29T06:02:08Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: Universal Wayland Session Managerへの転送ページ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT[[Universal Wayland Session Manager]]&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA:Wayland&amp;diff=40480</id>
		<title>カテゴリ:Wayland</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA:Wayland&amp;diff=40480"/>
		<updated>2025-06-29T06:00:43Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: ページの作成:「Category:グラフィカルユーザーインターフェイス {{Cat main|Wayland}}」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィカルユーザーインターフェイス]]&lt;br /&gt;
{{Cat main|Wayland}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=40479</id>
		<title>Wayland</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Wayland&amp;diff=40479"/>
		<updated>2025-06-29T06:00:03Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wayland]]&lt;br /&gt;
[[de:Wayland]]&lt;br /&gt;
[[en:Wayland]]&lt;br /&gt;
[[es:Wayland]]&lt;br /&gt;
[[pt:Wayland]]&lt;br /&gt;
[[ru:Wayland]]&lt;br /&gt;
[[zh-hans:Wayland]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|カーネルモード設定}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|スクリーンショットの取得#Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://wayland.freedesktop.org/ Wayland] はディスプレイサーバープロトコルです。[[Xorg|X Window System]] の後継となることを目指しています。[[Wikipedia:Wayland_(display_server_protocol)#Differences_between_Wayland_and_X|Wikipedia に Wayland と Xorg の比較]] が掲載されています。&lt;br /&gt;
&lt;br /&gt;
Wayland プロトコルを使用するディスプレイサーバは、[[Wikipedia:ja:コンポジット型ウィンドウマネージャ|コンポジット型ウィンドウマネージャ]] としても機能するため、&#039;&#039;&#039;コンポジタ&#039;&#039;&#039; と呼ばれます。以下に[[#コンポジタ|Wayland コンポジタのリスト]]を示します。&lt;br /&gt;
&lt;br /&gt;
ネイティブな X11 アプリケーションをシームレスに動かすための後方互換性として、[[#Xwayland|Xwayland]] を使うことができます。これは Wayland に X サーバを提供します。&lt;br /&gt;
&lt;br /&gt;
== 要件 ==&lt;br /&gt;
&lt;br /&gt;
ほとんどの Wayland コンポジタは、[[カーネルモード設定]]を利用しているシステムでのみ動作します。Wayland それ自体はグラフィカルな環境を提供しません。ゆえに、Wayland に加えてコンポジタ (以下のセクションを参照)、あるいは、コンポジタを含むデスクトップ環境 (例: [[GNOME]]、[[Plasma]]) が必要となります。&lt;br /&gt;
&lt;br /&gt;
GPU ドライバと Wayland コンポジタは、同一のバッファ API に対応している場合に互換性があります。主要な API は2つ存在します: [[Wikipedia:Generic Buffer Management|GBM]] と [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=XDC2016-Device-Memory-API EGLStreams] です。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! バッファ API !! GPU ドライバーのサポート !! Wayland コンポジタのサポート&lt;br /&gt;
|-&lt;br /&gt;
| GBM || [[NVIDIA]] &amp;lt; 495* 以外の全てのドライバー || 全て&lt;br /&gt;
|-&lt;br /&gt;
| EGLStreams || [[NVIDIA]] || [[GNOME]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
: * Nvidia ≥ 495 は EGLStreams と GBM の両方をサポートします。[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=NVIDIA-495.44-Linux-Driver]&lt;br /&gt;
&lt;br /&gt;
NVIDIA が GBM のサポートを導入して以来、NVIDIA ≥ 495 で多くのコンポジタ (Mutter と KWin を含む) がデフォルトで GBM を使用し始めました。GBM は一般的にベターでより幅広いサポートがあると考えられています。EGLStreams がサポートされていた理由は、NVIDIA GPU をプロプライエタリドライバで Wayland 下で使用する代替の方法を NVIDIA が提供しなかったからだけです。さらに、GBM が NVIDIA に導入された後、KWin は [https://invent.kde.org/plasma/kwin/-/merge_requests/1638 EGLStreams のサポートを打ち切りました]。&lt;br /&gt;
&lt;br /&gt;
人気なデスクトップ環境/コンポジタと、NVIDIA によってまだサポートされている GPU を使用している場合、おそらくすでに GBM バックエンドを使用しています。確認するには、次を実行してください: {{ic|journalctl -b 0 --grep &amp;quot;renderer for&amp;quot;}}。GBM をバックエンドとして強制的に使用させるには、次の[[環境変数]]を設定してください:&lt;br /&gt;
&lt;br /&gt;
 GBM_BACKEND=nvidia-drm&lt;br /&gt;
 __GLX_VENDOR_LIBRARY_NAME=nvidia&lt;br /&gt;
&lt;br /&gt;
== コンポジタ ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;スタック型&#039;&#039;&#039;、&#039;&#039;&#039;タイル型&#039;&#039;&#039;、&#039;&#039;&#039;ダイナミック型&#039;&#039;&#039; の違いについては、[[ウィンドウマネージャ#種類]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== スタック型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Enlightenment]]|[[Enlightenment#手動]] を参照してください。詳細: [https://git.enlightenment.org/enlightenment/enlightenment/src/branch/master/README.md] [https://www.enlightenment.org/about-wayland]|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}&lt;br /&gt;
* {{App|hikari|FreeBSD で活発に開発されている [[cwm]] にインスパイアされた wlroots ベースのコンポジタ。Linux もサポートしています。|https://web.archive.org/web/20241220075628/https://hikari.acmelabs.space/|{{AUR|hikari}}}}&lt;br /&gt;
* {{App|KDE [[w:KWin|KWin]]|[[KDE#Plasma の起動]] を参照。|https://userbase.kde.org/KWin|{{Pkg|kwin}}}}&lt;br /&gt;
* {{App|Liri Shell|[[Liri]] の一部、しかし、QtQuick と QtCompositor を使って Wayland 用のコンポジタとして作られています。|https://github.com/lirios/shell|{{AUR|liri-shell}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|[[labwc]]|Openbox にインスパイアされた wlroots ベースのコンポジタ。|https://github.com/labwc/labwc|{{Pkg|labwc}}}}&lt;br /&gt;
* {{App|[[w:Mutter (software)|Mutter]]|[[GNOME#GNOME の起動]] を参照。|https://gitlab.gnome.org/GNOME/mutter|{{Pkg|mutter}}}}&lt;br /&gt;
* {{App|wayfire|[[Compiz]] にインスパイアされた、wlroots ベースの 3D コンポジタ。|https://wayfire.org/|{{AUR|wayfire}}}}&lt;br /&gt;
* {{App|[[Weston]]|正しさ、信頼性、予測可能性、性能のために設計された Wayland コンポジタ。|https://gitlab.freedesktop.org/wayland/weston|{{Pkg|weston}}}}&lt;br /&gt;
* {{App|wio|Plan 9 のリオデスクトップのルックアンドフィールを複製することを目的とする wlroots ベースのコンポジタ。|https://gitlab.com/Rubo/wio|{{AUR|wio-wl}}}}&lt;br /&gt;
&lt;br /&gt;
=== タイル型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Cagebreak]]|cage をベースに、[[ratpoison]] にインスパイアされています。|https://github.com/project-repo/cagebreak|{{AUR|cagebreak}}}}&lt;br /&gt;
* {{App|miracle-wm|Mir ベースの Wayland コンポジた。i3 や sway のスタイルですが、swayfs のように、これらよりも派手で機能に富んでいます。|https://github.com/miracle-wm-org/miracle-wm|{{AUR|miracle-wm}}}}&lt;br /&gt;
* {{App|[[niri]]|スクロール可能なタイル型 Wayland コンポジタ。|https://github.com/YaLTeR/niri/|{{Pkg|niri}}}}&lt;br /&gt;
* {{App|[[Qtile]]|Python で記述および設定されたフル機能のハッキング可能なタイリングウィンドウマネージャーと Wayland コンポジタ。|https://github.com/qtile/qtile|{{Pkg|qtile}}}}&lt;br /&gt;
* {{App|[[Sway]]|wlroots ベースの [[i3]] 互換 Wayland コンポジタ。|https://github.com/swaywm/sway|{{Pkg|sway}}}}&lt;br /&gt;
* {{App|SwayFx|魅力的な視覚効果機能を追加した [[Sway]]。|https://github.com/WillPower3309/swayfx|{{AUR|swayfx}}}}&lt;br /&gt;
* {{App|Velox|swc ベースのシンプルなウィンドウマネージャです。dwm と [[xmonad]] の影響を受けています。|https://github.com/michaelforney/velox|{{AUR|velox-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== ダイナミック型 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[cwc]]|wlroots ベースの [[awesome]] ライクな Wayland コンポジタ。|https://cudiph.github.io/cwc/apidoc/| {{AUR|cwc}}}}&lt;br /&gt;
* {{App|[[dwl]]|wlroots ベースの [[dwm]] ライクな Wayland コンポジタ。|https://codeberg.org/dwl/dwl|{{AUR|dwl}}}}&lt;br /&gt;
* {{App|[[Hyprland]]|見た目を犠牲にしないダイナミックなタイリング Wayland コンポジタ。|https://hyprland.org|{{Pkg|hyprland}}}}&lt;br /&gt;
* {{App|japokwm|wlroots ベースの、レイアウト作成を中心とした動的な Wayland タイリングコンポジタ。|https://github.com/werererer/japokwm|{{AUR|japokwm-git}}}}&lt;br /&gt;
* {{App|[[river]]|dwm と [[bspwm]] にインスパイアされた動的なタイル型 Wayland コンポジタ。|https://codeberg.org/river/river|{{Pkg|river}}}}&lt;br /&gt;
* {{App|Vivarium|wlroots を使用するダイナミックタイル型 Wayland コンポジタ。[[xmonad]] にインスパイアされたデスクトップセマンティクスを持ちます。|https://github.com/inclement/vivarium|{{AUR|vivarium-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== その他 ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Cage|キオスクのような単一のフルスクリーンアプリケーションを表示します。|https://www.hjdskes.nl/projects/cage/|{{Pkg|cage}}}}&lt;br /&gt;
* {{App|phoc|モバイル端末のための wlroots ベースの小さなコンポジタ。|https://gitlab.gnome.org/World/Phosh/phoc|{{Pkg|phoc}}}}&lt;br /&gt;
&lt;br /&gt;
上記のいくつかは [[ディスプレイマネージャ]] をサポートする場合があります。&lt;br /&gt;
それらがどのように開始されるかを {{ic|/usr/share/wayland-sessions/&#039;&#039;compositor&#039;&#039;.desktop}} を見て確認してください。&lt;br /&gt;
&lt;br /&gt;
== ディスプレイマネージャ ==&lt;br /&gt;
&lt;br /&gt;
Wayland コンポジタの実行をサポートしている[[ディスプレイマネージャ]]は以下の表の通りです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! 名前&lt;br /&gt;
! 何で動作するか&lt;br /&gt;
! 説明&lt;br /&gt;
|-&lt;br /&gt;
| {{Pkg|emptty}}&lt;br /&gt;
| TTY&lt;br /&gt;
| TTY で動作するシンプルな CLI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[GDM]]&lt;br /&gt;
| Wayland/Xorg&lt;br /&gt;
| [[GNOME]] ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[greetd]]&lt;br /&gt;
| Wayland/Xorg/TTY&lt;br /&gt;
[[Greetd#Greeter]] を参照。&lt;br /&gt;
| 最小でありながら柔軟なログインデーモン。&lt;br /&gt;
|-&lt;br /&gt;
| {{Pkg|lemurs}}&lt;br /&gt;
| TTY&lt;br /&gt;
| Rust で書かれた TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|lidm}}&lt;br /&gt;
| TTY&lt;br /&gt;
| C で書かれた、完全にカラフルでカスタマイズ可能な TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[LightDM]]&lt;br /&gt;
| Xorg[https://github.com/canonical/lightdm/issues/267]&lt;br /&gt;
| 様々なデスクトップに対応したディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{Pkg|ly}}&lt;br /&gt;
| TTY&lt;br /&gt;
| C で書かれた TUI ディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| [[SDDM]]&lt;br /&gt;
| Wayland/Xorg&lt;br /&gt;
| QML ベースのディスプレイマネージャ。&lt;br /&gt;
|-&lt;br /&gt;
| {{AUR|tbsm}}&lt;br /&gt;
| TTY&lt;br /&gt;
| bash のみに依存するシンプルな CLI セッションランチャー。&lt;br /&gt;
|-&lt;br /&gt;
| [[uwsm]]&lt;br /&gt;
| TTY&lt;br /&gt;
| スタンドアローンなコンポジタのための、セッションと XDG autostart のマネージャ。&lt;br /&gt;
TUI メニューを提供しますが、他のディスプレイマネージャと共に使用することもできます。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Xwayland ==&lt;br /&gt;
&lt;br /&gt;
{{man|1|Xwayland}} は、Wayland の下で実行される X サーバーで、Wayland サポートをまだ提供していないネイティブな [[X11]] アプリケーションに互換性を提供します。これを使用するには、{{Pkg|xorg-xwayland}} パッケージを[[インストール]]します。&lt;br /&gt;
&lt;br /&gt;
Xwayland はコンポジタを介して開始されるため、あなたの使用しているコンポジタのドキュメントを読み、Xwayland との互換性についてや、Xwayland の起動方法に関する指示を確認しておく必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* セキュリティ: Xwayland は X サーバーであるため、 Wayland のセキュリティ機能はありません。&lt;br /&gt;
* パフォーマンス: Xwayland は X11 と[https://openbenchmarking.org/result/2202053-NE-NVIDIARTX35 ほぼ同等のパフォーマンス]を発揮します。しかし、一部のケースで (特に NVIDIA カード上で) パフォーマンスの低下を感じるかもしれません。&lt;br /&gt;
* 互換性: Xwayland は X11 と完全な後方互換性があるわけではありません。一部のアプリケーションは Xwayland 下では正しく動作しない場合があります。}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ドライバ ===&lt;br /&gt;
&lt;br /&gt;
{{Note|バージョン 470 より前の Nvidia ドライバ(例: {{aur|nvidia-390xx-dkms}}) はハードウェア支援のある Xwayland をサポートしておらず、非 Wayland ネイティブなアプリケーションは Wayland セッションでのパフォーマンスが低下します。}}&lt;br /&gt;
&lt;br /&gt;
なお、[[NVIDIA#DRM カーネルモード設定|DRM KMS]] を有効にする必要があります。また、お使いのディスプレイマネージャ(例: [[GDM#Wayland と独自の NVIDIA ドライバ|GDM]])の[https://download.nvidia.com/XFree86/Linux-x86_64/515.48.07/README/xwayland.html 公式ドキュメント]に記載されている情報も見てください。&lt;br /&gt;
&lt;br /&gt;
=== Kwin Wayland デバッグコンソール ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|kwin}} を使用している場合、以下を実行すると、どのウィンドウが Xwayland とネイティブ Wayland を使用しているか、表面、入力イベント、クリップボードの内容などを確認することができます。&lt;br /&gt;
&lt;br /&gt;
 $ qdbus6 org.kde.KWin /KWin org.kde.KWin.showDebugConsole&lt;br /&gt;
&lt;br /&gt;
=== Xwayland アプリケーションを検出する ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが Xwayland 経由で実行されているかどうかを判断するには、{{AUR|extramaus}} を使用します。&lt;br /&gt;
アプリケーションのウィンドウ上にマウスポインタを移動して、マウスポインタが赤くなる場合は、アプリケーションが Xwayland 経由で実行されています。&lt;br /&gt;
&lt;br /&gt;
または、{{pkg|xorg-xeyes}} を使用して、アプリケーションウィンドウ上でマウスポインタを移動するときに、目が動いているかどうかで確認することもできます。&lt;br /&gt;
&lt;br /&gt;
他の方法として、({{Pkg|xorg-xwininfo}} の) &#039;&#039;xwininfo&#039;&#039; をターミナルウィンドウで実行するというものがあります。Xwayland ウィンドウ上にマウスポインタをホバーすると、マウスポインタが + マークに変わります。ウィンドウをクリックすると、xwininfo は情報を表示して終了しますが、ネイティブな Wayland ウィンドウでは何も起こりません。{{ic|Ctrl+C}} を押すことで xwininfo を終了できます。&lt;br /&gt;
&lt;br /&gt;
あるいは、&#039;&#039;xlsclients&#039;&#039; ({{Pkg|xorg-xlsclients}} パッケージ) を使用することもできます。Xwayland で動作中のアプリケーションを全てリストアップするには、{{ic|xlsclients -l}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
== GUI ライブラリ ==&lt;br /&gt;
&lt;br /&gt;
=== GTK ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|gtk3}} と {{Pkg|gtk4}} パッケージは Wayland バックエンドが有効になっています。GTK ではデフォルトで Wayland バックエンドを使いますが、[[環境変数]]を設定することで Xwayland を使うように上書きできます: {{ic|1=GDK_BACKEND=x11}}。&lt;br /&gt;
&lt;br /&gt;
テーマの問題は [[GTK#Wayland バックエンド]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Qt ===&lt;br /&gt;
&lt;br /&gt;
[[Qt]] 5 または 6 で Wayland のサポートを有効化するには、Qt 5 と 6 に対してそれぞれ {{Pkg|qt5-wayland}} または {{Pkg|qt6-wayland}} パッケージをインストールしてください。これで、Qt アプリケーションは Wayland セッション上では Wayland で動作するようになります。&lt;br /&gt;
&lt;br /&gt;
必須ではないはずですが、明示的に Wayland プラグインを使って Qt 5 アプリケーションを動作させるには、[https://wiki.qt.io/QtWayland#How_do_I_use_QtWayland.3F] にあるように、{{ic|1=-platform wayland}} を使用するか、[[環境変数]] {{ic|1=QT_QPA_PLATFORM=wayland}} をセットして下さい。&lt;br /&gt;
&lt;br /&gt;
一方、Wayland セッション上で [[X11]] を使用させるには、{{ic|1=QT_QPA_PLATFORM=xcb}} と設定してください。これは、システムの Qt の実装を使用しない一部のプロプライエタリアプリケーションで必要になる場合があります。&lt;br /&gt;
また、{{ic|1=QT_QPA_PLATFORM=&amp;quot;wayland;xcb&amp;quot;}} を使用すると、Qt が Wayland を利用できない場合に、代わりに xcb (X11)プラグインを使用させることができます。[https://www.qt.io/blog/2018/05/29/whats-new-in-qt-5-11-for-the-wayland-platform-plugin]&lt;br /&gt;
&lt;br /&gt;
[[sway]] などの一部のコンポジターでは、ネイティブに実行されている Qt アプリケーションの機能が不足している場合があります。たとえば、[https://keepassxc.org KeepassXC] はトレイに最小化できません。これは、アプリケーションを実行する前に {{Pkg|qt5ct}} をインストールし、{{ic|1=QT_QPA_PLATFORMTHEME=qt5ct}} を設定することで解決できます。&lt;br /&gt;
&lt;br /&gt;
Qt WebEngine のバグ ([https://bugreports.qt.io/browse/QTBUG-113574 Incorrect sizing and bad text rendering with WebEngine using fractional scaling on Wayland]) のため、Qt WebEgine を使用するアプリケーション (例: [https://bugs.launchpad.net/calibre/+bug/2018658 Calibre]) では荒いフォントが表示される場合があります。&lt;br /&gt;
回避策は、{{ic|1=QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor}} [[環境変数]]を設定してアプリケーションを起動することです。&lt;br /&gt;
これにより、アプリケーションのウィンドウが分数スケーリングされなくなります。&lt;br /&gt;
&lt;br /&gt;
=== Clutter ===&lt;br /&gt;
&lt;br /&gt;
Clutter ツールキットには Wayland バックエンドがあり、Clutter を Wayland のクライアントとして動作させることが可能です。このバックエンドは {{Pkg|clutter}} パッケージで有効になっています。&lt;br /&gt;
&lt;br /&gt;
Clutter アプリを Wayland 上で動作させるには、環境変数 {{ic|1=CLUTTER_BACKEND=wayland}} を設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== SDL ===&lt;br /&gt;
&lt;br /&gt;
[[SDL|SDL3]] では、デスクトップコンポジタとの通信に Wayland がデフォルトで使用されます。&lt;br /&gt;
&lt;br /&gt;
SDL2 アプリケーションを Wayland 上で動作させるには、{{ic|1=SDL_VIDEODRIVER=wayland}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=SDL_VIDEODRIVER=&amp;quot;wayland,x11&amp;quot;}} とすることにより、Wayland が利用できない場合に代わりに X11 ビデオドライバを使用するように SDL2 を設定できます [https://wiki.libsdl.org/SDL2/FAQUsingSDL]。ウィンドウ装飾を有効化するために {{Pkg|libdecor}} をインストールすると良いかもしれません (例えば、GNOME で)。&lt;br /&gt;
&lt;br /&gt;
詳細は[https://wiki.libsdl.org/SDL3/README/wayland 公式のドキュメント]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GLFW ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|glfw}} パッケージには Wayland に対するサポートがあります。{{ic|1=XDG_SESSION_TYPE}} が {{ic|1=wayland}} に設定されていて、かつアプリケーションの開発者が特定のバックエンドを使用するようにしていなければ、Wayland バックエンドが使用されます。&lt;br /&gt;
&lt;br /&gt;
詳細は GLFW の[https://github.com/glfw/glfw/blob/3.4/src/platform.c#L87-L99 ソースコード]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GLEW ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|glew-wayland-git}} パッケージが GLEW ベースのアプリケーションで動かない場合、唯一の選択肢は Xwayland で {{Pkg|glew}} を使うことです。{{Bug|62713}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== EFL ===&lt;br /&gt;
&lt;br /&gt;
Enlightenment には[https://www.enlightenment.org/about-wayland 完全な Wayland サポート]があります.&lt;br /&gt;
&lt;br /&gt;
=== winit ===&lt;br /&gt;
&lt;br /&gt;
Winit は [[Rust]] で書かれたウィンドウ管理ライブラリです。デフォルトでは Wayland が X11 より優先される仕様ですが、環境変数を設定することで Xwayland を使うように上書きすることができます:&lt;br /&gt;
&lt;br /&gt;
* バージョン 0.29.2 より前の場合、{{ic|1=WINIT_UNIX_BACKEND=x11}} を設定してください。&lt;br /&gt;
* バージョン 0.29.2 以降の場合、{{ic|1=WAYLAND_DISPLAY}} を unset してください。そうすることで、強制的に {{ic|1=DISPLAY}} 変数を使用して X にフォールバックされます。[https://github.com/rust-windowing/winit/blob/baf10de95843f156b0fbad6b10c3137f1ebd4f1e/src/changelog/v0.29.md?plain=1#L134]&lt;br /&gt;
&lt;br /&gt;
=== Electron ===&lt;br /&gt;
&lt;br /&gt;
Wayland サポートを有効化する方法は次の2つです: アプリケーションごとのコマンドラインフラグを使って有効化するか、設定ファイルを使ってグローバルに有効化するかです。詳細は [[#設定ファイル]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
アプリケーションがどの electron バージョンを使用しているか確認する方法については [https://stackoverflow.com/q/50345957] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|Plasma では、一部の Electron アプリケーションで間違ったアイコン (デフォルトの Wayland アイコン) がウィンドウに表示され、一方タスクバーには正しいアイコンが表示されることがあります。この問題は、デスクトップファイルの名前を強制する特殊なアプリケーション/ウィンドウルールを作成することで解決できます。}}&lt;br /&gt;
&lt;br /&gt;
==== 環境変数 ====&lt;br /&gt;
&lt;br /&gt;
Electron 28 及びそれ以降を使用するアプリケーションは、[[環境変数]] [https://www.electronjs.org/docs/latest/api/environment-variables#electron_ozone_platform_hint-linux ELECTRON_OZONE_PLATFORM_HINT] を {{ic|auto}} または {{ic|wayland}} に設定することで、Wayland モードを使用することができます。&lt;br /&gt;
&lt;br /&gt;
コマンドラインフラグは、この環境変数より優先されます。&lt;br /&gt;
&lt;br /&gt;
==== コマンドラインフラグ ====&lt;br /&gt;
&lt;br /&gt;
Electron がベースとしている Chromium とは異なり、Electron アプリケーションはデフォルトで PipeWire による WebRTC 画面共有を有効化しません。なので、Wayland 上で画面共有の問題を防ぐために {{ic|1=--enable-features=WebRTCPipeWireCapturer}} を使用することが推奨されます。画面共有は {{Pkg|xdg-desktop-portal}} をベースとしています。&lt;br /&gt;
&lt;br /&gt;
環境変数を使うことが望ましくない、または不可能である場合に、{{Pkg|electron}} ベースのアプリケーションを Wayland でネイティブに使用するには、Electron 20 以降では {{ic|1=--ozone-platform-hint=auto}} フラグを使用することで可能です。&lt;br /&gt;
&lt;br /&gt;
トップバーが消失してしまう場合、{{ic|1=--enable-features=WaylandWindowDecorations}} フラグを使用することで解決します。これは、典型的には [[GNOME]] で必須です ([https://github.com/electron/electron/pull/29618 electron17] からsパオートされています)。&lt;br /&gt;
&lt;br /&gt;
これらのフラグを永続的に設定する方法は2つあります。1つ目は、アプリケーションの [[デスクトップエントリ#desktop ファイルの変更|.desktop ファイルを変更]]して {{ic|1=Exec=}} 行の末尾にフラグを追加する方法。もう一つは、以下で説明している設定ファイルを使用する方法で、こちらはよりきれいに設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|一部のアプリケーションは、Electron に対してフラグを渡さないため、そのアプリケーションの開発者が解決策を実装する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
==== 設定ファイル ====&lt;br /&gt;
&lt;br /&gt;
Electron 系のパッケージは {{ic|1=~/.config/electron&#039;&#039;XX&#039;&#039;-flags.conf}} を読み込みます。ここで、&#039;&#039;XX&#039;&#039; は Electron のバージョンです。該当するバージョンのファイルが存在しない場合、{{ic|1=~/.config/electron-flags.conf}} を代わりに読み込みます。&lt;br /&gt;
&lt;br /&gt;
前述のフラグを一行ずつ書き込んでください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/electron-flags.conf|2=&lt;br /&gt;
--enable-features=WaylandWindowDecorations&lt;br /&gt;
--ozone-platform-hint=auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|このような設定ファイルは、公式リポジトリ内の Electron のパッケージと、それらの設定ファイルを使用するパッケージでのみ機能します。{{AUR|slack-desktop}} などのような Electron の独自のビルドをバンドルしているパッケージでは機能しません。{{AUR|slack-electron}} のように代替のパッケージが存在する場合があります。}}&lt;br /&gt;
&lt;br /&gt;
==== 古い Electron バージョン ====&lt;br /&gt;
&lt;br /&gt;
{{ic|electron25-flags.conf}} は Electron バージョン 25 に対してだけ適用されます。それより古い Electron のバージョンは {{ic|electron&amp;lt;バージョン&amp;gt;-flags.conf}} ファイルで設定できます。&lt;br /&gt;
&lt;br /&gt;
古いバージョンでは、対応する Chromium バージョンによって異なるフラグが必要になる場合があります。例えば、以下のフラグは Electron 13 で機能します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/electron13-flags.conf|2=&lt;br /&gt;
--enable-features=UseOzonePlatform&lt;br /&gt;
--ozone-platform=wayland&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
[[Java]] プラットフォームのオープンソース実装である OpenJDK は、まだ Wayland のネイティブサポートを備えていません。&lt;br /&gt;
OpenJDK に Wayland を実装することを目的としたプロジェクトである [https://openjdk.java.net/projects/wakefield/ Wakefield] が実用できるようになるまでは、Xwayland を代わりに使用できます。&lt;br /&gt;
&lt;br /&gt;
[[Debian:Wayland#Java Programs (supported since OpenJDK 16?)]] を参照してください: &lt;br /&gt;
&lt;br /&gt;
:OpenJDK 16から、JRE は (Wayland をサポートしている) GTK3 を動的にロードできるようになりました。この[https://stackoverflow.com/questions/39197208/java-gui-support-on-wayland 議論]によると、これがサポートされているかもしれません。&lt;br /&gt;
:{{ic|_JAVA_AWT_WM_NONREPARENTING}} [[環境変数]]を &amp;quot;1&amp;quot; に設定することで、アプリケーションが空白の画面で起動する不具合を修正することができます。&lt;br /&gt;
&lt;br /&gt;
XWayland は機能的に Wayland と同等ではないので、Wakefield が実用的になるまでは、[https://wiki.openjdk.org/display/wakefield/Pure+Wayland+toolkit+prototype WLToolkit] で機能の差を埋めることができます。これは {{ic|1=-Dawt.toolkit.name=WLToolkit}} でアクティブ化できます。[https://blog.jetbrains.com/platform/2024/07/wayland-support-preview-in-2024-2/ JetBrains IDE] といった一部のプログラムはこれをサポートしています。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 自動化 ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ReimuNotMoe/ydotool ydotool] ({{Pkg|ydotool}}) - 汎用のコマンドラインツール (wayland 以外でも利用可能)。{{ic|ydotool.service}} [[ユーザーユニット]]を[[起動/有効化]]してください。{{man|8|ydotoold}}、{{man|1|ydotool}} を参照。&lt;br /&gt;
* [https://github.com/atx/wtype wtype] ({{Pkg|wtype}}) - Wayland 用 xdotool type。{{man|1|wtype}} を参照。&lt;br /&gt;
* [https://github.com/boppreh/keyboard keyboard] - Windows と Linux で動作する Python ライブラリ。実験的な OS X サポートあり。[https://github.com/boppreh/mouse mouse] ライブラリも参照。&lt;br /&gt;
* [https://git.sr.ht/~brocellous/wlrctl wlrctl]  ({{AUR|wlrctl}}) - 雑多な wlroots 拡張のためのコマンドラインユーティリティ (foreign-toplevel-management、virtual-keyboard、virtual-pointer をサポート)。&lt;br /&gt;
&lt;br /&gt;
=== キーボードやマウスキーのリマップ ===&lt;br /&gt;
&lt;br /&gt;
[[入力リマップユーティリティ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== スクリーンキャスト ===&lt;br /&gt;
&lt;br /&gt;
[[スクリーンキャプチャ#スクリーンキャスト]] と [[スクリーンキャプチャ#X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Chromium で完全に最大化出来ない ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;chrome://settings/appearance&#039;&#039; メニューから &#039;&#039;Use system title bar and borders&#039;&#039; を有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== アプリが閉じた後もクリップボードの内容を保持する ===&lt;br /&gt;
&lt;br /&gt;
Wayland の設計思想上、クリップボードのデータはソースクライアントのメモリ内に保存されます。クライアントが閉じると、クリップボードのデータは失われます。{{Pkg|wl-clip-persist}} を使うことで、この問題を解決できます。これはバックグラウンドで動き、クリップボードのデータを読んで、ソースクライアントからは独立した自身のメモリに保存します。&lt;br /&gt;
&lt;br /&gt;
=== Wayland コンポジタを systemd サービスとして自動的に起動する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|この設定はdbusセッションを破壊し,[[PipeWire#WebRTC 画面共有]]を破壊するかも知れません.}}&lt;br /&gt;
&lt;br /&gt;
ディスプレイマネージャーやシェルを使いたくなければ、Waylandコンポジタを[[systemd]] サービスを使って自動的に起動できます。{{ic|ExecStart}} 行を使いたいコンポジタに変えて下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/wayland-compositor.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
After=graphical.target systemd-user-sessions.service modprobe@drm.service&lt;br /&gt;
Conflicts=getty@tty1.service #使用できない tty1 を無効にするオプション&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=&#039;&#039;username&#039;&#039;&lt;br /&gt;
WorkingDirectory=~&lt;br /&gt;
&lt;br /&gt;
PAMName=login&lt;br /&gt;
TTYPath=/dev/tty1&lt;br /&gt;
UnsetEnvironment=TERM&lt;br /&gt;
&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
ExecStart=/bin/labwc -s gtklock&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=graphical.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[セキュリティ#物理セキュリティ]]の為に、{{Pkg|swaylock}} や {{Pkg|gtklock}} 等のスクリーンロッカーを、コンポジタの設定を通して自動的に起動する必要があるかも知れません。}}&lt;br /&gt;
&lt;br /&gt;
=== wlroots ベースのコンポジタで他のレンダラーを使用する ===&lt;br /&gt;
&lt;br /&gt;
wlroots ベースのコンポジタに対して {{ic|WLR_RENDERER}} [[環境変数]]を設定することで vulkan などといった他の [https://gitlab.freedesktop.org/wlroots/wlroots/-/tree/master/render wlroots レンダラー]を使用することができます。利用可能なレンダラーのリストは [https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/docs/env_vars.md wlroots のドキュメント]にあります。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
=== 色補正 ===&lt;br /&gt;
&lt;br /&gt;
[[バックライト#色補正]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== 動作が遅い、表示がおかしい、クラッシュする ===&lt;br /&gt;
&lt;br /&gt;
Gnome-shell で X から Wayland に切り替えるとグラフィック表示に問題が発生することがあります。原因として Xorg ベースの gnome-shell 用に {{ic|1=CLUTTER_PAINT=disable-clipped-redraws:disable-culling}} が設定されている可能性があります。{{ic|/etc/environment}} や rc ファイルから該当箇所を削除してみてください。&lt;br /&gt;
&lt;br /&gt;
=== リモートディスプレイ ===&lt;br /&gt;
&lt;br /&gt;
* ([[sway]] で使用されている) {{pkg|wlroots}}{{Broken package link|replaced by {{Pkg|wlroots0.18}}}} は、バージョン 0.10 より、{{Pkg|wayvnc}} を使って VNC バックエンドを提供しています。RDP バックエンドは削除されました [https://github.com/swaywm/wlroots/releases/tag/0.10.0]。&lt;br /&gt;
* {{pkg|mutter}} はコンパイル時にリモートデスクトップが有効化されています。詳細は [https://wiki.gnome.org/Projects/Mutter/RemoteDesktop] と {{Pkg|gnome-remote-desktop}} を見てください。&lt;br /&gt;
* {{pkg|krfb}} は {{pkg|kwin}} に VNC サーバを提供します。{{ic|krfb-virtualmonitor}} を使えば、他のデバイスを外部モニタとしてセットアップすることが可能です。&lt;br /&gt;
* 2013年に FreeRDP が Weston にマージされました。コンパイルフラグで有効化されています。{{Pkg|weston}} パッケージは、バージョン 6.0.0 より、FreeRDP が有効化されています。&lt;br /&gt;
* {{Pkg|waypipe}} は Wayland アプリケーションの透過プロキシです。[[SSH]] 上で動作するラッパーコマンドあり。&lt;br /&gt;
** 以下は、Plasma デスクトップでリモートの KDE kcalc を起動する例です:&lt;br /&gt;
::{{bc|1=$ waypipe ssh example.local env QT_QPA_PLATFORM=wayland QT_QPA_PLATFORMTHEME=KDE dbus-launch kcalc}}&lt;br /&gt;
&lt;br /&gt;
=== ゲームやリモートデスクトップ、仮想マシンウィンドウでの入力捕捉 ===&lt;br /&gt;
&lt;br /&gt;
Xorg と異なり、Wayland では入力デバイスを独占 (グラブ) することができません (例: [https://tronche.com/gui/x/xlib/input/XGrabKeyboard.html キーボード]、[https://tronche.com/gui/x/xlib/input/XGrabPointer.html マウス])。キーボードショートカットやポインタデバイスをアプリケーションウィンドウに渡すのは Wayland コンポジタの役目となっています。&lt;br /&gt;
&lt;br /&gt;
入力グラブが変わったことで以下のように既存のアプリケーションで問題が発生します:&lt;br /&gt;
&lt;br /&gt;
* ホットキーや修飾キーがコンポジタによって認識されてしまい、リモートデスクトップや仮想マシンのウィンドウに送信されなくなります。&lt;br /&gt;
* マウスポインタがアプリケーションウィンドウに制限されなくなるため、仮想マシンやリモートデスクトップのウィンドウ内のマウスポインタの位置がホスト環境のマウスポインタとずれるようになります。&lt;br /&gt;
&lt;br /&gt;
Wayland と Xwayland にプロトコル拡張を追加することで解決を図っていますが、Wayland コンポジタが拡張をサポートしている必要があり、ネイティブの Wayland クライアントの場合、ウィジェットツールキット (例: GTK, Qt) やアプリケーション自身が拡張に対応していなければなりません。Xorg アプリケーションの場合、Xwayland のサポートで十分であるため、アプリケーションやウィジェット・ツールキットに変更を加える必要はありません。&lt;br /&gt;
&lt;br /&gt;
これらの拡張はすでに {{pkg|wayland-protocols}} に含まれており、{{pkg|xorg-xwayland}} によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
関連する拡張:&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/xwayland-keyboard-grab/xwayland-keyboard-grab-unstable-v1.xml Xwayland keyboard grabbing protocol]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml Compositor shortcuts inhibit protocol]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/relative-pointer/relative-pointer-unstable-v1.xml Relative pointer protocol]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml Pointer constraints protocol]&lt;br /&gt;
&lt;br /&gt;
サポートしている Wayland コンポジタ:&lt;br /&gt;
&lt;br /&gt;
* Mutter, [[GNOME]] のコンポジタ ([https://bugzilla.gnome.org/show_bug.cgi?id=783342 リリース 3.28] 以降)。&lt;br /&gt;
* wlroots (Relative pointer protocols と Pointer constraints protocol に対応)&lt;br /&gt;
* Kwin&lt;br /&gt;
** [[KDE#Wayland で X11 のショートカットが衝突する]]&lt;br /&gt;
** [https://invent.kde.org/plasma/kwin/-/blob/master/src/wayland/keyboard_shortcuts_inhibit_v1_interface.cpp Keyboard shortcuts inhibit]&lt;br /&gt;
&lt;br /&gt;
サポートしているウィジェットツールキット:&lt;br /&gt;
&lt;br /&gt;
* GTK (リリース 3.22.18 以降)&lt;br /&gt;
&lt;br /&gt;
=== GTK テーマが動かない ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA モジュールを読み込まないようにする ===&lt;br /&gt;
&lt;br /&gt;
[[sway]] などの Wayland コンポジターを起動する前に {{ic|1=__EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json}} を [[環境変数]] として追加します。&lt;br /&gt;
&lt;br /&gt;
=== 拡大/サーフェススケーリング ===&lt;br /&gt;
&lt;br /&gt;
スクリーンの拡大は、まだ解決していません。[https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/145 wp-surface-scale プロトコルを提供する]プルリクエストが2022年半ばにマージされました。&lt;br /&gt;
&lt;br /&gt;
=== カーネル 6.11.2 以降、Wayland にラグ/スタッタリングが発生する (AMD) ===&lt;br /&gt;
&lt;br /&gt;
将来のカーネルリリースでこの問題が修正されるまで、回避策は、カーネルのコマンドラインに {{ic|1=amdgpu.dcdebugmask=0x400}} を追加することです。&lt;br /&gt;
&lt;br /&gt;
こちらを参照: https://community.frame.work/t/wayland-lag-stuttering-since-kernel-6-11-2/59422&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/docs/html/ Wayland オンラインドキュメント]&lt;br /&gt;
* [https://gitlab.freedesktop.org/wayland 公式リポジトリ]&lt;br /&gt;
* [[Fedora:How to debug Wayland problems]]&lt;br /&gt;
*  [https://wearewaylandnow.com/ We are Wayland now!] - &amp;quot;Are we Wayland yet?&amp;quot; の更新されたバージョン&lt;br /&gt;
* [https://awesomeopensource.com/projects/wayland Awesome Wayland projects]&lt;br /&gt;
* [[カーソルテーマ]]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=107499 Arch Linux forum discussion]&lt;br /&gt;
* [https://github.com/swaywm/sway/wiki/i3-Migration-Guide#common-x11-apps-used-on-i3-with-wayland-alternatives i3 Migration Guide - Common X11 apps used on i3 with Wayland alternatives]&lt;br /&gt;
* [https://wayland.app/protocols/ Wayland Explorer - A better way to read Wayland documentation]&lt;br /&gt;
* [https://askubuntu.com/questions/1393618/how-can-i-tell-if-an-application-is-using-xwayland How can I tell if an application is using XWayland]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Wayland|2025-06-29|839014}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E6%B0%B8%E7%B6%9A%E7%9A%84%E3%81%AA%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AE%E5%91%BD%E5%90%8D&amp;diff=40478</id>
		<title>永続的なブロックデバイスの命名</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E6%B0%B8%E7%B6%9A%E7%9A%84%E3%81%AA%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AE%E5%91%BD%E5%90%8D&amp;diff=40478"/>
		<updated>2025-06-29T05:13:28Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ブートプロセス]]&lt;br /&gt;
[[Category:ファイルシステム]]&lt;br /&gt;
[[Category:ハードウェア検出とトラブルシューティング]]&lt;br /&gt;
[[en:Persistent block device naming]]&lt;br /&gt;
[[es:Persistent block device naming]]&lt;br /&gt;
[[fr:Persistent block device naming]]&lt;br /&gt;
[[hu:Persistent block device naming]]&lt;br /&gt;
[[pt:Persistent block device naming]]&lt;br /&gt;
[[ru:Persistent block device naming]]&lt;br /&gt;
[[zh-hans:Persistent block device naming]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|fstab}}&lt;br /&gt;
{{Related|udev}}&lt;br /&gt;
{{Related|LVM}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
この記事では[[ブロックデバイス]]に永続的な名前を使う方法を説明します。永続的な命名は [[udev]] の導入によって可能になったものであり、バスによる命名と比べて複数の利点があります。同じ命名スキームを持つドライブがマシン上に複数存在する場合、それらに対応するデバイスノードが追加される順序は任意です。そのため、起動するたびにデバイス名 (例: {{ic|/dev/sd&#039;&#039;&#039;a&#039;&#039;&#039;}} と {{ic|/dev/sd&#039;&#039;&#039;b&#039;&#039;&#039;}}、{{ic|/dev/nvme&#039;&#039;&#039;0&#039;&#039;&#039;n1}} と {{ic|/dev/nvme&#039;&#039;&#039;1&#039;&#039;&#039;n1}}、{{ic|/dev/mmcblk&#039;&#039;&#039;0&#039;&#039;&#039;}} と {{ic|/dev/mmcblk&#039;&#039;&#039;1&#039;&#039;&#039;}}) が入れ替わる可能性があり、下手をすると、システムが起動できなくなったり、カーネルパニックが発生したり、ブロックデバイスが表示されなくなってしまいます。永続的な命名によってこれらの問題は解決します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 永続的な命名には制約が存在しますが、それはこの記事では扱っていません。例えば、[[mkinitcpio]] が命名方法をサポートしていても、[[systemd]] が起動時に処理できる命名法には制約が存在することがあります (例: {{Bug|42884}})。&lt;br /&gt;
* この記事では [[LVM]] の論理ボリュームに言及しません。{{ic|/dev/&#039;&#039;VolumeGroupName&#039;&#039;/&#039;&#039;LogicalVolumeName&#039;&#039;}} デバイスパスは永続的であるためです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 永続的な命名の方法 ==&lt;br /&gt;
&lt;br /&gt;
[[udev]] によって管理されている永続的な命名を提供しているスキームは複数あります:&lt;br /&gt;
&lt;br /&gt;
* {{ic|60-persistent-storage.rules}} はデフォルトで4つのスキームを提供しています: [[#by-label|by-label]]、[[#by-uuid|by-uuid]]、[[#by-id と by-path|by-id と by-path]]。[[GUID Partition Table|GUID Partition Table (GPT)]] のディスクにおいては、先の4つに加えて [[#by-partlabel|by-partlabel]] と [[#by-partuuid|by-partuuid]] のスキームも利用可能です。&lt;br /&gt;
* {{ic|99-systemd.rules}} は、[[systemd#GPT パーティションの自動マウント|GPT パーティションの自動マウント]]に対応している環境では [[#gpt-auto|gpt-auto]] を提供しています。&lt;br /&gt;
&lt;br /&gt;
{{ic|/dev/disk/}} 内のディレクトリは、デバイスがあるかどうかに応じて動的に作成・破棄されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[ディスクのクローン]]は同じ名前の異なるディスクを作成することに注意してください。}}&lt;br /&gt;
&lt;br /&gt;
以下のセクションではこれらの異なる命名規則がどのようなものであるか、またどうやって使うのかを説明しています。&lt;br /&gt;
&lt;br /&gt;
[[lsblk]] コマンドを使うことで1つ目の永続的な名前をグラフィカルに表示することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsblk -f|&lt;br /&gt;
NAME        FSTYPE LABEL      UUID                                 MOUNTPOINT&lt;br /&gt;
sda&lt;br /&gt;
├─sda1      vfat              CBB6-24F2                            /boot&lt;br /&gt;
├─sda2      ext4   Arch Linux 0a3407de-014b-458b-b5c1-848e92a327a3 /&lt;br /&gt;
├─sda3      ext4   Data       b411dc99-f0a0-4c87-9e05-184977be8539 /home&lt;br /&gt;
└─sda4      swap              f9fe0b69-a280-415d-a03a-a32752370dee [SWAP]&lt;br /&gt;
mmcblk0&lt;br /&gt;
└─mmcblk0p1 vfat              F4CA-5D75&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[GPT]] を使っている場合、代わりに {{ic|blkid}} コマンドを使います。{{ic|blkid}} コマンドはスクリプトでは使いやすいですが、人間にとっては読みづらいです。&lt;br /&gt;
&lt;br /&gt;
{{hc|# blkid|2=&lt;br /&gt;
/dev/sda1: UUID=&amp;quot;CBB6-24F2&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTLABEL=&amp;quot;EFI system partition&amp;quot; PARTUUID=&amp;quot;d0d0d110-0a71-4ed6-936a-304969ea36af&amp;quot;&lt;br /&gt;
/dev/sda2: LABEL=&amp;quot;Arch Linux&amp;quot; UUID=&amp;quot;0a3407de-014b-458b-b5c1-848e92a327a3&amp;quot; TYPE=&amp;quot;ext4&amp;quot; PARTLABEL=&amp;quot;GNU/Linux&amp;quot; PARTUUID=&amp;quot;98a81274-10f7-40db-872a-03df048df366&amp;quot;&lt;br /&gt;
/dev/sda3: LABEL=&amp;quot;Data&amp;quot; UUID=&amp;quot;b411dc99-f0a0-4c87-9e05-184977be8539&amp;quot; TYPE=&amp;quot;ext4&amp;quot; PARTLABEL=&amp;quot;Home&amp;quot; PARTUUID=&amp;quot;7280201c-fc5d-40f2-a9b2-466611d3d49e&amp;quot;&lt;br /&gt;
/dev/sda4: UUID=&amp;quot;f9fe0b69-a280-415d-a03a-a32752370dee&amp;quot; TYPE=&amp;quot;swap&amp;quot; PARTLABEL=&amp;quot;Swap&amp;quot; PARTUUID=&amp;quot;039b6c1c-7553-4455-9537-1befbc9fbc5b&amp;quot;&lt;br /&gt;
/dev/mmcblk0: PTUUID=&amp;quot;0003e1e5&amp;quot; PTTYPE=&amp;quot;dos&amp;quot;&lt;br /&gt;
/dev/mmcblk0p1: UUID=&amp;quot;F4CA-5D75&amp;quot; TYPE=&amp;quot;vfat&amp;quot; PARTUUID=&amp;quot;0003e1e5-01&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== by-label ===&lt;br /&gt;
&lt;br /&gt;
ほぼすべての[[ファイルシステム#ファイルシステムのタイプ|ファイルシステムタイプ]]が、ラベルを持つことができます。ラベルを持つボリュームはすべて {{ic|/dev/disk/by-label}} ディレクトリ内に出現します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls -l /dev/disk/by-label/|&lt;br /&gt;
total 0&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 Data -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 Arch\x20Linux -&amp;gt; ../../sda2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ほとんどのファイルシステムは、ファイルシステム作成時におけるラベルの設定をサポートしています (関連する {{ic|mkfs.*}} ユーティリティの [[man ページ]]を参照してください)。一部のファイルシステムにおいてはラベルを変更することもできます。以下は、一般的なファイルシステムにおけるラベルの変更方法です:&lt;br /&gt;
&lt;br /&gt;
; btrfs : {{pkg|btrfs-progs}} で {{ic|btrfs filesystem label /dev/&#039;&#039;XXX&#039;&#039; &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot;}} (デバイスをすでにマウントしている場合は、そのマウントポイントを使用してください)&lt;br /&gt;
; crypto_LUKS (LUKS2 のみ) : {{Pkg|cryptsetup}} で {{ic|1=cryptsetup config --label=&amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot; /dev/&#039;&#039;XXX&#039;&#039;}}&lt;br /&gt;
; exfat : {{Pkg|exfatprogs}} で {{ic|tune.exfat -L &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot; /dev/&#039;&#039;XXX&#039;&#039;}}&lt;br /&gt;
: {{Pkg|exfatprogs}} または {{Pkg|exfat-utils}} で {{ic|exfatlabel /dev/&#039;&#039;XXX&#039;&#039; &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot;}}&lt;br /&gt;
; ext2/3/4 : {{pkg|e2fsprogs}} で {{ic|e2label /dev/&#039;&#039;XXX&#039;&#039; &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot;}}&lt;br /&gt;
; fat/vfat : {{pkg|dosfstools}} で {{ic|fatlabel /dev/&#039;&#039;XXX&#039;&#039; &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot;}}&lt;br /&gt;
: {{pkg|mtools}} で {{ic|mlabel -i /dev/&#039;&#039;XXX&#039;&#039; ::&amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot;}}&lt;br /&gt;
; jfs : {{pkg|jfsutils}} で {{ic|jfs_tune -L &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot; /dev/&#039;&#039;XXX&#039;&#039;}}&lt;br /&gt;
; ntfs : {{pkg|ntfs-3g}} で {{ic|ntfslabel /dev/&#039;&#039;XXX&#039;&#039; &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot;}}&lt;br /&gt;
; reiserfs : {{AUR|reiserfsprogs}} で {{ic|reiserfstune -l &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot; /dev/&#039;&#039;XXX&#039;&#039;}}&lt;br /&gt;
; swap : {{pkg|util-linux}} で {{ic|swaplabel -L &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot; /dev/&#039;&#039;XXX&#039;&#039;}}&lt;br /&gt;
; udf : {{Pkg|udftools}} で {{ic|udflabel /dev/&#039;&#039;XXX&#039;&#039; &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot;}}&lt;br /&gt;
; xfs : {{pkg|xfsprogs}} で {{ic|xfs_admin -L &amp;quot;&#039;&#039;new label&#039;&#039;&amp;quot; /dev/&#039;&#039;XXX&#039;&#039;}} (デバイスをすでにマウントしている場合は、そのマウントポイントを使用してください)&lt;br /&gt;
&lt;br /&gt;
デバイスのラベルは &#039;&#039;lsblk&#039;&#039; を使って得ることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsblk -dno LABEL /dev/sda2|&lt;br /&gt;
Arch Linux&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
あるいは &#039;&#039;blkid&#039;&#039; を使って:&lt;br /&gt;
&lt;br /&gt;
{{hc|# blkid -s LABEL -o value /dev/sda2|&lt;br /&gt;
Arch Linux&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 衝突を避けるために、ラベルは曖昧であってはいけません。&lt;br /&gt;
* ラベルに設定できるのは16文字までです。&lt;br /&gt;
* ラベルはファイルシステムのプロパティであるため、単一の RAID デバイスをアドレス指定するのには適していません。&lt;br /&gt;
* [[dm-crypt]] で暗号化済みコンテナを使用する場合、コンテナがロック/暗号化されている間はコンテナ内のファイルシステムのラベルは利用できなくなります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== by-uuid ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:ja:UUID|UUID]] は、各[[ファイルシステム]]にユニークな識別子を与えるための仕組みです。UUID 識別子は、パーティションをフォーマットするときにファイルシステムユーティリティ (例: {{ic|mkfs.*}}) によって生成されます。UUID 識別子は衝突が起こりにくいように作られています。(スワップや生の暗号化デバイスの LUKS ヘッダを含む) 全ての GNU/Linux ファイルシステムが UUID をサポートします。FAT、exFAT、NTFS ファイルシステムは UUID をサポートしていませんが、それでも、より短い UID (unique identifier) で {{ic|/dev/disk/by-uuid/}} 内に現れます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls -l /dev/disk/by-uuid/|&lt;br /&gt;
total 0&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 0a3407de-014b-458b-b5c1-848e92a327a3 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 b411dc99-f0a0-4c87-9e05-184977be8539 -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 CBB6-24F2 -&amp;gt; ../../sda1&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 f9fe0b69-a280-415d-a03a-a32752370dee -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 F4CA-5D75 -&amp;gt; ../../mmcblk0p1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デバイスの UUID は &#039;&#039;lsblk&#039;&#039; を使って得ることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsblk -dno UUID /dev/sda1|&lt;br /&gt;
CBB6-24F2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
あるいは &#039;&#039;blkid&#039;&#039; を使って:&lt;br /&gt;
&lt;br /&gt;
{{hc|# blkid -s UUID -o value /dev/sda1|&lt;br /&gt;
CBB6-24F2&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
UUID を使用する利点として、名前の衝突が発生する可能性がラベルよりもずっと少ないことが挙げられます。さらに、UUID はファイルシステムの作成時に自動的に生成されます。他のシステムにデバイスを接続したときでも、一意性を保つことができます。ラベルの場合、他のシステムに接続したとき名前がカブってしまう可能性が否定できません。&lt;br /&gt;
&lt;br /&gt;
逆に UUID の欠点としては、生成されるコードが長いために、設定ファイル (例: [[fstab]] や [[crypttab]]) が読みづらくなったり整形が崩れてしまうことがあります。また、パーティションのサイズを変更したり、再フォーマットをするたびに新しい UUID が生成されるので、設定を手動で変更する必要が生じます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|スワップパーティションに UUID が割り当てられていない場合、[[スワップ#スワップパーティション|mkswap]] ユーティリティを使ってスワップパーティションをリセットする必要があります。}}&lt;br /&gt;
&lt;br /&gt;
=== by-id と by-path ===&lt;br /&gt;
&lt;br /&gt;
{{ic|by-id}} はハードウェアのシリアル番号に基づいて一意な名前を作成します。{{ic|by-path}} は (sysfs による) 一番短い物理パスを使います。どちらも、属するサブシステムを示す文字列を含んでいるため ({{ic|by-path}} の場合 {{ic|-ide-}}、{{ic|by-id}} の場合 {{ic|-ata-}})、デバイスを制御するハードウェアと繋がりがあります。このため永続性のレベルが異なってきます: {{ic|by-path}} はデバイスをコントローラの他のポートに接続したときに値が変わり、{{ic|by-id}} はデバイスを他のサブシステムが使っているハードウェアコントローラのポートに接続したときに値が変わります。[https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Online_Storage_Reconfiguration_Guide/persistent_naming.html] 従って、ハードウェアが変わっても値が変わらないような永続的な命名としてはどちらも不適切です。&lt;br /&gt;
&lt;br /&gt;
しかし、巨大なハードウェア基盤で特定のデバイスを見つけたいときに、どちらも有益な情報を提供します。例えば、永続的なラベル ({{ic|by-label}} や {{ic|by-partlabel}}) を手動で割り当てず、ハードウェアポートの使用を表すディレクトリが変わらない場合、{{ic|by-id}} と {{ic|by-path}} を使うことで特定のデバイスを探すことが可能です。[https://linuxshellaccount.blogspot.in/2008/09/how-to-easily-find-wwns-of-qlogic-hba.html] [https://www.linuxquestions.org/questions/linux-server-73/how-to-find-wwn-for-dev-sdc-917269/]&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{ic|by-id}} と {{ic|by-path}} のリンクは、(パーティションではなく) ディスクの場合のみ永続的であるとみなせます。パーティションは、パーティションテーブル内における番号で参照され、パーティションの順番が変更された場合にリンクが変更される可能性があります。&lt;br /&gt;
* NVMe デバイスにおける {{ic|/dev/disk/by-path/pci-*}} のパスは、PCIe デバイスがシステムに追加または除去された場合や、ファームウェアが[https://github.com/systemd/systemd/issues/22692 デバイスを決定的に列挙しない]場合に変化してしまう場合があります。&lt;br /&gt;
* NVMe デバイスの、名前空間識別子 (NSID) を用いない {{ic|by-id}} (シンボリック) リンクは古い方法です。代わりに、ハードウェアのシリアルナンバーの後に名前空間識別子を付けた名前のリンクを使用してください (例: 最初の名前空間の場合は {{ic|_1}}、最初の名前空間上の最初のパーティションの場合は {{ic|&#039;&#039;&#039;_1&#039;&#039;&#039;-part1}} となります)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls -l /dev/disk/by-id/|&lt;br /&gt;
total 0&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470 -&amp;gt; ../../sda&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part1 -&amp;gt; ../../sda1&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part3 -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 mmc-SD32G_0x0040006d -&amp;gt; ../../mmcblk0&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 mmc-SD32G_0x0040006d-part1 -&amp;gt; ../../mmcblk0p1&lt;br /&gt;
lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T -&amp;gt; ../../nvme1n1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T-part1 -&amp;gt; ../../nvme1n1p1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T-part2 -&amp;gt; ../../nvme1n1p2&lt;br /&gt;
lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T_1 -&amp;gt; ../../nvme1n1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T_1-part1 -&amp;gt; ../../nvme1n1p1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T_1-part2 -&amp;gt; ../../nvme1n1p2&lt;br /&gt;
lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268 -&amp;gt; ../../nvme0n1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268-part1 -&amp;gt; ../../nvme0n1p1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268-part2 -&amp;gt; ../../nvme0n1p2&lt;br /&gt;
lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268_1 -&amp;gt; ../../nvme0n1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268_1-part1 -&amp;gt; ../../nvme0n1p1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268_2-part2 -&amp;gt; ../../nvme0n1p2&lt;br /&gt;
lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-eui.002538570142d716 -&amp;gt; ../../nvme1n1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.002538570142d716-part1 -&amp;gt; ../../nvme1n1p1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.002538570142d716-part2 -&amp;gt; ../../nvme1n1p2&lt;br /&gt;
lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a -&amp;gt; ../../nvme0n1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a-part1 -&amp;gt; ../../nvme0n1p1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a-part2 -&amp;gt; ../../nvme0n1p2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f -&amp;gt; ../../sda&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part1 -&amp;gt; ../../sda1&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part3 -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part4 -&amp;gt; ../../sda4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls -l /dev/disk/by-path/|&lt;br /&gt;
total 0&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1 -&amp;gt; ../../sda&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part1 -&amp;gt; ../../sda1&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part3 -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part4 -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 13 May 27 23:31 pci-0000:01:00.0-nvme-1 -&amp;gt; ../../nvme0n1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 pci-0000:01:00.0-nvme-1-part1 -&amp;gt; ../../nvme0n1p1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 pci-0000:01:00.0-nvme-1-part2 -&amp;gt; ../../nvme0n1p2&lt;br /&gt;
lrwxrwxrwx 1 root root 13 May 27 23:31 pci-0000:04:00.0-nvme-1 -&amp;gt; ../../nvme1n1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 pci-0000:04:00.0-nvme-1-part1 -&amp;gt; ../../nvme1n1p1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 pci-0000:04:00.0-nvme-1-part2 -&amp;gt; ../../nvme1n1p2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:07:00.0-platform-rtsx_pci_sdmmc.0 -&amp;gt; ../../mmcblk0&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:07:00.0-platform-rtsx_pci_sdmmc.0-part1 -&amp;gt; ../../mmcblk0p1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== World Wide Name ====&lt;br /&gt;
&lt;br /&gt;
{{ic|by-id}} はストレージデバイスの [[Wikipedia:ja:World Wide Name|World Wide Name (WWN)]] のリンクも作成します (そのデバイスが WWN をサポートしている場合)。他の {{ic|by-id}} リンクとは異なり、WWN は完全に永続的であり、使用されているサブシステムに依らず変化しません。&lt;br /&gt;
&lt;br /&gt;
SATA と SAS のデバイスには {{ic|wwn-}} プレフィックスが付きますが、NVMe デバイスでは[[Wikipedia:World Wide Name#Formats|別の WWN 形式]]が使用され {{ic|nvme-eui.}} というプレフィックスが付きます。[https://github.com/systemd/systemd/pull/3136]&lt;br /&gt;
&lt;br /&gt;
{{Tip|大抵、ストレージデバイスの WWN はそのデバイスのラベルに印刷されています (ここでのラベルは、デバイス自体に貼られているステッカーのことです)。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls -l /dev/disk/by-id/{wwn-,nvme-eui.}*|&lt;br /&gt;
lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-eui.002538570142d716 -&amp;gt; ../../nvme1n1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.002538570142d716-part1 -&amp;gt; ../../nvme1n1p1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.002538570142d716-part2 -&amp;gt; ../../nvme1n1p2&lt;br /&gt;
lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a -&amp;gt; ../../nvme0n1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a-part1 -&amp;gt; ../../nvme0n1p1&lt;br /&gt;
lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a-part2 -&amp;gt; ../../nvme0n1p2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f -&amp;gt; ../../sda&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part1 -&amp;gt; ../../sda1&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part2 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part3 -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part4 -&amp;gt; ../../sda4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== by-partlabel ===&lt;br /&gt;
&lt;br /&gt;
{{Note|この方法が関係するのは [[GUID Partition Table|GUID Partition Table (GPT)]] のディスクだけです。}}&lt;br /&gt;
&lt;br /&gt;
パーティションラベルは、GPT ディスクの[[Wikipedia:ja:GUIDパーティションテーブル#パーティションエントリ (LBA 2〜33)|パーティションエントリ]]のヘッダで定義することができます。&lt;br /&gt;
&lt;br /&gt;
この方法は[[#by-label|ファイルシステムラベル]]と非常に似ています。しかし、パーティションラベルは、パーティション上のファイルシステムが変更された場合でも、影響を受けません。&lt;br /&gt;
&lt;br /&gt;
パーティションラベルを持つ全パーティションは {{ic|/dev/disk/by-partlabel}} ディレクトリ内に出現します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls -l /dev/disk/by-partlabel/|&lt;br /&gt;
total 0&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 EFI\x20system\x20partition -&amp;gt; ../../sda1&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 GNU\x2fLinux -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 Home -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 Swap -&amp;gt; ../../sda4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デバイスのパーティションラベルは &#039;&#039;lsblk&#039;&#039; を使って得ることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsblk -dno PARTLABEL /dev/sda1|&lt;br /&gt;
EFI system partition&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
あるいは &#039;&#039;blkid&#039;&#039; を使って:&lt;br /&gt;
&lt;br /&gt;
{{hc|# blkid -s PARTLABEL -o value /dev/sda1|&lt;br /&gt;
EFI system partition&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* GPT パーティションラベルも名前が衝突しないように付ける必要があります。パーティションラベルを変更したいときは、[[gdisk]] か ncurse ベースの [[cgdisk]] を使うことができます。どちらのプログラムも {{Pkg|gptfdisk}} パッケージに入っています。[[パーティショニング#パーティショニングツール]]を見て下さい。&lt;br /&gt;
* 仕様によると、GPT パーティションラベルの長さは72文字までです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== by-partuuid ===&lt;br /&gt;
&lt;br /&gt;
[[#by-partlabel|GPT パーティションラベル]]のように、GPT パーティション UUID も GPT ディスク上の[[Wikipedia:ja:GUIDパーティションテーブル#パーティションエントリ (LBA 2〜33)|パーティションエントリ]]で定義されます。&lt;br /&gt;
&lt;br /&gt;
MBR はパーティション UUID をサポートしていません。しかし、Linux[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d33b98fc82b0908e91fb05ae081acaed7323f9d2] と、libblkid[https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/?id=d67cc2889a0527b26d7bb8c76f2acac46751d673] を使用するソフトウェア (例: udev[https://github.com/systemd/systemd/pull/3293]) は、MBR パーティションに対して擬似的な PARTUUID を生成することができます。この時、形式は {{ic|&#039;&#039;SSSSSSSS&#039;&#039;-&#039;&#039;PP&#039;&#039;}} となります。{{ic|&#039;&#039;SSSSSSSS&#039;&#039;}} の部分はゼロで埋められた32ビットの [[Wikipedia:Master boot record#Disk identity|MBR ディスクシグネチャ]]で、{{ic|&#039;&#039;PP&#039;&#039;}} はゼロで埋められた16進形式のパーティション番号です。GPT パーティションの通常の PARTUUID と違って、MBR の疑似 PARTUUID は、パーティション番号が変更された場合に変わる可能性があります。&lt;br /&gt;
&lt;br /&gt;
動的ディレクトリは他の方法のものと似ており、[[#by-uuid|ファイルシステム UUID]] と同じく、UUID はラベルよりも推奨されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls -l /dev/disk/by-partuuid/|&lt;br /&gt;
total 0&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 0003e1e5-01 -&amp;gt; ../../mmcblk0p1&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 039b6c1c-7553-4455-9537-1befbc9fbc5b -&amp;gt; ../../sda4&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 7280201c-fc5d-40f2-a9b2-466611d3d49e -&amp;gt; ../../sda3&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 98a81274-10f7-40db-872a-03df048df366 -&amp;gt; ../../sda2&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 d0d0d110-0a71-4ed6-936a-304969ea36af -&amp;gt; ../../sda1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デバイスのパーティション UUID は &#039;&#039;lsblk&#039;&#039; を使って得ることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsblk -dno PARTUUID /dev/sda1|&lt;br /&gt;
d0d0d110-0a71-4ed6-936a-304969ea36af&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
あるいは &#039;&#039;blkid&#039;&#039; を使って:&lt;br /&gt;
&lt;br /&gt;
{{hc|# blkid -s PARTUUID -o value /dev/sda1|&lt;br /&gt;
d0d0d110-0a71-4ed6-936a-304969ea36af&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== gpt-auto ===&lt;br /&gt;
&lt;br /&gt;
[[systemd#GPT パーティションの自動マウント|systemd-gpt-auto-generator]] の前提要件を全て満たしている場合、udev は、ルートボリュームのブロックデバイスを指す {{ic|/dev/gpt-auto-root}} シンボリックリンクを作成します。ルートパーティションが LUKS によって暗号化されている場合、{{ic|/dev/gpt-auto-root}} はロック解除された/マッピングされたボリュームを指し、{{ic|/dev/gpt-auto-root-luks}} は暗号化されているパーティションを指します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls -l /dev/gpt-auto-*|&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 /dev/gpt-auto-root -&amp;gt; dm-0&lt;br /&gt;
lrwxrwxrwx 1 root root 10 May 27 23:31 /dev/gpt-auto-root-luks -&amp;gt; nvme1n1p2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 永続的な命名の使用 ==&lt;br /&gt;
&lt;br /&gt;
様々なアプリケーションで、永続的な命名を使うように設定を行うことができます。以下はアプリケーションの設定例です。&lt;br /&gt;
&lt;br /&gt;
=== fstab ===&lt;br /&gt;
&lt;br /&gt;
メインの記事を参照してください: [[fstab#ファイルシステムの識別]]。&lt;br /&gt;
&lt;br /&gt;
=== カーネルパラメータ ===&lt;br /&gt;
&lt;br /&gt;
永続的な名前を[[カーネルパラメータ]]で使用するには、以下の前提条件を満たさなければなりません。[[インストールガイド]]に従った標準的なインストールでは、以下の両方の前提条件を満たしています:&lt;br /&gt;
&lt;br /&gt;
* [[udev]] が含まれている [[initramfs]] イメージを使用していること&lt;br /&gt;
* [[mkinitcpio]] の場合、{{ic|udev}} か {{ic|systemd}} のどちらか一方の[[Mkinitcpio#HOOKS|フック]]を {{ic|/etc/mkinitcpio.conf}} で有効化していること&lt;br /&gt;
&lt;br /&gt;
ルートファイルシステムの場所はカーネルコマンドラインで {{ic|root}} パラメータを使って渡します。カーネルコマンドラインは[[ブートローダー]]から設定します。[[カーネルパラメータ#ブートローダーの設定]] を参照してください。永続的なデバイスの命名に変更するには、ブロックデバイスを指定するパラメータ (例: {{ic|root}} と {{ic|resume}}) のみを変更して、他のパラメータはそのままにしてください。様々な命名規則がサポートされています:&lt;br /&gt;
&lt;br /&gt;
[[#by-label|ラベルを用いた]]デバイスの永続的な命名と {{ic|1=LABEL=}} 形式。以下の例では、{{ic|Arch Linux}} がルートファイルシステムの LABEL になっています:&lt;br /&gt;
&lt;br /&gt;
 root=&amp;quot;LABEL=Arch Linux&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[#by-uuid|UUID を用いた]]デバイスの永続的な命名と {{ic|1=UUID=}} 形式。以下の例では、{{ic|0a3407de-014b-458b-b5c1-848e92a327a3}} がルートファイルシステムの UUID になっています:&lt;br /&gt;
&lt;br /&gt;
 root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3&lt;br /&gt;
&lt;br /&gt;
[[#by-id と by-path|ディスク id を用いた]]デバイスの永続的な命名と {{ic|/dev}} パス形式。以下の例では、{{ic|wwn-0x60015ee0000b237f-part2}} がルートパーティションの id になっています。&lt;br /&gt;
&lt;br /&gt;
 root=/dev/disk/by-id/wwn-0x60015ee0000b237f-part2&lt;br /&gt;
&lt;br /&gt;
[[#by-partuuid|GPT パーティション UUID を用いた]]デバイスの永続的な命名と {{ic|1=PARTUUID=}} 形式。以下の例では、{{ic|98a81274-10f7-40db-872a-03df048df366}} がルートパーティションの PARTUUID になっています。&lt;br /&gt;
&lt;br /&gt;
 root=PARTUUID=98a81274-10f7-40db-872a-03df048df366&lt;br /&gt;
&lt;br /&gt;
[[#by-partlabel|GPT パーティションラベルを用いた]]デバイスの永続的な命名と {{ic|1=PARTLABEL=}} 形式。以下の例では、{{ic|GNU/Linux}} がルートパーティションの PARTLABEL になっています。&lt;br /&gt;
&lt;br /&gt;
 root=&amp;quot;PARTLABEL=GNU/Linux&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[#gpt-auto|GPT パーティションの自動マウント]]を使用している場合、{{ic|1=root=}} パラメータは省略できます。明示的に設定したい場合は、以下を使用してください:&lt;br /&gt;
&lt;br /&gt;
 root=gpt-auto&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Persistent block device naming|2025-06-29|838910}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%93%E3%83%87%E3%82%AA%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%A9%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3&amp;diff=40477</id>
		<title>ハードウェアビデオアクセラレーション</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%93%E3%83%87%E3%82%AA%E3%82%A2%E3%82%AF%E3%82%BB%E3%83%A9%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3&amp;diff=40477"/>
		<updated>2025-06-29T04:55:33Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[Category:X サーバー]]&lt;br /&gt;
[[en:Hardware video acceleration]]&lt;br /&gt;
[[ru:Hardware video acceleration]]&lt;br /&gt;
[[zh-hans:Hardware video acceleration]]&lt;br /&gt;
[[Wikipedia:Graphics processing unit#GPU accelerated video decoding and encoding|ハードウェアビデオアクセラレーション]]により、ビデオカードで動画をデコード/エンコードすることができ、CPU の負担を下げて電力を節約することができます。&lt;br /&gt;
&lt;br /&gt;
Linux でこれを実現する方法は複数存在します:&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Video Acceleration API|Video Acceleration API]] (VA-API) はハードウェア支援による動画エンコード・デコードの両方を実現する仕様とオープンソースライブラリです。Intel によって開発されました。&lt;br /&gt;
* [[Wikipedia:VDPAU|Video Decode and Presentation API for Unix]] (VDPAU) は GPU ビデオハードウェアに動画のデコードやポストプロセス処理をオフロードするオープンソースのライブラリです。NVIDIA によって開発されました。&lt;br /&gt;
* [https://gpuopen.com/advanced-media-framework/ Advanced Media Framework SDK] (AMF) は、[[AMDGPU PRO]] を使用してマルチメディア処理のために AMD GPU に「部分的に」アクセスできるようにするオープンソースのフレームワークです。AMD によって開発されました。&lt;br /&gt;
* [[Wikipedia:Nvidia NVDEC|NVDEC]]/[[Wikipedia:Nvidia NVENC|NVENC]] - Fermi 以降の NVIDIA GPU によって使われている、ハードウェアビデオアクセラレーションのためのプロプライエタリ API。&lt;br /&gt;
* [https://www.khronos.org/blog/an-introduction-to-vulkan-video Vulkan Video] は、ハードウェアアクセラレートされたビデオエンコードとデコードをサポートするために開発された [[Vulkan]] グラフィックス API の拡張です。&lt;br /&gt;
&lt;br /&gt;
ドライバとアプリケーションのサポートの包括的な概要については、[[#比較一覧]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== Intel ===&lt;br /&gt;
&lt;br /&gt;
==== VA-API ====&lt;br /&gt;
&lt;br /&gt;
[[Intel Graphics]] オープンソースドライバーは VA-API に対応しています:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/intel/media-driver/#supported-platforms Broadwell] [[wikipedia:Template:Intel_processor_roadmap|(2014)]] 及びそれ以降の HD Graphics シリーズ (例: Intel Arc) は {{Pkg|intel-media-driver}} によってサポートされています。&lt;br /&gt;
* [[wikipedia:Coffee_Lake|Coffee Lake]] (2017) までの GMA 4500 (2008) は {{Pkg|libva-intel-driver}} によってサポートされています。&lt;br /&gt;
* [[Wikipedia:Haswell (microarchitecture)#Haswell Refresh|Haswell Refresh]] から Skylake までの VP9 デコードと、Broadwell から Skylake までのハイブリッド VP8 エンコードは {{AUR|intel-hybrid-codec-driver-git}} によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Skylake 及びそれ以降は {{Pkg|linux-firmware}} も必要です。}}&lt;br /&gt;
&lt;br /&gt;
[https://www.intel.com/content/www/us/en/developer/articles/technical/linuxmedia-vaapi.html VAAPI がサポートするハードウェアと機能] もご覧ください。&lt;br /&gt;
&lt;br /&gt;
==== Vulkan ====&lt;br /&gt;
&lt;br /&gt;
ANV オープンソース [[vulkan]] ドライバは、{{Pkg|vulkan-intel}} 経由で Vulkan Video のサポートを提供しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|Vulkan Video を有効化するには、追加の設定が必要です。[[#Vulkan Video の設定]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== Intel Video Processing Library (Intel VPL) ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/intel/libvpl Intel VPL] を使用するには、ベースライブラリである {{Pkg|libvpl}} に加えて、以下のランタイム実装のうち少なくとも一つを[[インストール]]してください:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|vpl-gpu-rt}}: Tiger Lake 及びそれ以降の GPU に対するサポートを提供します&lt;br /&gt;
* {{Pkg|intel-media-sdk}} (開発中止): それより古い Intel GPU に対するサポートを提供します&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ===&lt;br /&gt;
&lt;br /&gt;
[[Nouveau]] オープンソースドライバーは VA-API と VDPAU に対応しています:&lt;br /&gt;
&lt;br /&gt;
* GeForce GTX 750 までの GeForce 8 シリーズ及びそれ以降の GPU は {{Pkg|mesa}} によってサポートされています。&lt;br /&gt;
* (現在 NVIDIA のバイナリドライバーから抽出される) {{AUR|nouveau-fw}} ファームウェアパッケージが [https://nouveau.freedesktop.org/wiki/VideoAcceleration/#firmware 必要] です。&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA]] プロプライエタリドライバは {{Pkg|nvidia-utils}} によってサポートされています:&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:GeForce 8 series|GeForce 8 シリーズ]]及びそれ以降の GPU における VDPAU&lt;br /&gt;
* [[Wikipedia:Fermi_(microarchitecture)|Fermi]] 及びそれ以降の GPU における NVDEC [https://developer.download.nvidia.com/assets/cuda/files/NVIDIA_Video_Decoder.pdf]&lt;br /&gt;
* [[Wikipedia:Kepler_(microarchitecture)|Kepler]] 及びそれ以降の GPU における NVENC&lt;br /&gt;
* [[Wikipedia:Pascal_(microarchitecture)|Pascal]] 及びそれ以降の GPU における Vulkan Video [https://developer.nvidia.com/vulkan/video/get-started]&lt;br /&gt;
&lt;br /&gt;
=== AMD/ATI ===&lt;br /&gt;
&lt;br /&gt;
[[AMD]] と [[ATI]] オープンソースドライバーは {{Pkg|mesa}} によって VA-API と VDPAU をサポートしています:&lt;br /&gt;
&lt;br /&gt;
* VA-API は Radeon HD 2000 及びそれ以降の GPU。&lt;br /&gt;
* VDPAU は Radeon R600 及びそれ以降の GPU。&lt;br /&gt;
&lt;br /&gt;
RADV オープンソース [[vulkan]] ドライバは、{{Pkg|vulkan-radeon}} 経由で Vulkan Video サポートを提供しています。&lt;br /&gt;
&lt;br /&gt;
[[AMDGPU PRO]] プロプライエタリドライバーは AMDGPU ドライバー上で動作し、AMF に加えて VA-API と VDPAU に対応しています。&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Radeon Rx 300 series|Fiji]] 及びそれ以降の GPU における AMF は {{AUR|amf-amdgpu-pro}} によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 場合によっては、あなたのアプリケーションが [[AMDGPU PRO]] [[Vulkan]] ドライバを使用するように強制する必要があります。&lt;br /&gt;
* [[Wikipedia:High Efficiency Video Coding|HEVC]] エンコードは [[Wikipedia:Radeon RX 5000 series|Navi]] より古い GPU では利用できない場合があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 変換レイヤー ===&lt;br /&gt;
&lt;br /&gt;
* {{App|libvdpau-va-gl|OpenGL/VAAPI バックエンドを用いた VDPAU ドライバ。H.264 のみ。|https://github.com/i-rinat/libvdpau-va-gl|{{Pkg|libvdpau-va-gl}}}}&lt;br /&gt;
* {{App|nvidia-vaapi-driver|VA-API を提供する [[CUDA]] NVDEC ベースのバックエンド。|https://github.com/elFarto/nvidia-vaapi-driver/|{{Pkg|libva-nvidia-driver}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|libva-nvidia-driver}} 実装によってハードウェアビデオデコードを使えるようにはなりますが、NVIDIA の電源管理に対する現状の制限により、[https://github.com/elFarto/nvidia-vaapi-driver/issues/74 CPU によるビデオデコードよりも多くの電力を消費します]。}}&lt;br /&gt;
&lt;br /&gt;
== 確認 ==&lt;br /&gt;
&lt;br /&gt;
設定せずともシステムが完璧に動作する場合があります。なので、このセクションから読み始めて、システムの確認をすると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* コマンドラインサポートのある [[mpv#ハードウェアデコード|mpv]] は、ハードウェアアクセラレーションをテストするのにぴったりです。{{ic|1=mpv --hwdec=auto &#039;&#039;video_filename&#039;&#039;}} のログを見てください。詳細は [https://mpv.io/manual/stable/#options-hwdec hwdec] を参照。&lt;br /&gt;
* AMD、Intel、そして NVIDIA の場合、動画を再生しながら {{Pkg|nvtop}} を使うことで &amp;quot;DEC&amp;quot; (デコーダ) の使用率を確認できます。&lt;br /&gt;
* Intel GPU の場合、{{pkg|intel-gpu-tools}} を使って、{{ic|intel_gpu_top}} を root として実行することで、ビデオプレイバック中に GPU 使用率をモニタできます。ビデオバーが 0% よりも上にあれば、GPU のビデオデコーダ/エンコーダが使用されていることを示します。([[インテルグラフィックス#試験的な新しい Xe ドライバをテストする|新しい Xe ドライバ]]を使用している場合、{{ic|intel_gpu_top}} が[https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues/174 エラーを出します]。確認するには {{ic|gputop}} を実行してみてください。[https://dri.freedesktop.org/docs/drm/gpu/i915.html#intel-gpu-basics vcs (Video Command Streamer) の値]が 0% より大きければ、GPU 動画デコード/エンコードが使用されていることを意味します。)&lt;br /&gt;
* AMD GPU の場合、{{Pkg|radeontop}} を使用して GPU 使用率をモニタできます。{{pkg|intel-gpu-tools}} とは違い、現在 {{Pkg|radeontop}} でデコード/エンコードの仕様状況を確認する方法はありません [https://github.com/clbr/radeontop/issues/29]。&lt;br /&gt;
* 任意の GPU において、{{Pkg|htop}} のようなツールで CPU 使用率を比較できます。特に、高解像度なビデオ (4k 以上) において、VA-API が有効化されていて動作しているときの CPU 使用率は、ノート PC や他の比較的低電力なデバイスにおいて劇的に低いはずです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== VA-API の確認 ===&lt;br /&gt;
&lt;br /&gt;
VA-API の設定は {{Pkg|libva-utils}} パッケージに含まれている {{ic|vainfo}} を実行することで確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ vainfo|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
libva info: VA-API version 0.39.4&lt;br /&gt;
libva info: va_getDriverName() returns 0&lt;br /&gt;
libva info: Trying to open /usr/lib/dri/i965_drv_video.so&lt;br /&gt;
libva info: Found init function __vaDriverInit_0_39&lt;br /&gt;
libva info: va_openDriver() returns 0&lt;br /&gt;
vainfo: VA-API version: 0.39 (libva 1.7.3)&lt;br /&gt;
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3&lt;br /&gt;
vainfo: Supported profile and entrypoints&lt;br /&gt;
      VAProfileMPEG2Simple            :	VAEntrypointVLD&lt;br /&gt;
      VAProfileMPEG2Simple            :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileMPEG2Main              :	VAEntrypointVLD&lt;br /&gt;
      VAProfileMPEG2Main              :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD&lt;br /&gt;
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP&lt;br /&gt;
      VAProfileH264Main               :	VAEntrypointVLD&lt;br /&gt;
      VAProfileH264Main               :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileH264Main               :	VAEntrypointEncSliceLP&lt;br /&gt;
      VAProfileH264High               :	VAEntrypointVLD&lt;br /&gt;
      VAProfileH264High               :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileH264High               :	VAEntrypointEncSliceLP&lt;br /&gt;
      VAProfileH264MultiviewHigh      :	VAEntrypointVLD&lt;br /&gt;
      VAProfileH264MultiviewHigh      :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileH264StereoHigh         :	VAEntrypointVLD&lt;br /&gt;
      VAProfileH264StereoHigh         :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileVC1Simple              :	VAEntrypointVLD&lt;br /&gt;
      VAProfileVC1Main                :	VAEntrypointVLD&lt;br /&gt;
      VAProfileVC1Advanced            :	VAEntrypointVLD&lt;br /&gt;
      VAProfileNone                   :	VAEntrypointVideoProc&lt;br /&gt;
      VAProfileJPEGBaseline           :	VAEntrypointVLD&lt;br /&gt;
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture&lt;br /&gt;
      VAProfileVP8Version0_3          :	VAEntrypointVLD&lt;br /&gt;
      VAProfileVP8Version0_3          :	VAEntrypointEncSlice&lt;br /&gt;
      VAProfileHEVCMain               :	VAEntrypointVLD&lt;br /&gt;
      VAProfileHEVCMain               :	VAEntrypointEncSlice&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
あなたのカードを使ってデコードできるフォーマットが {{ic|VAEntrypointVLD}} で、エンコードできるフォーマットが {{ic|VAEntrypointEncSlice}} で示されます。&lt;br /&gt;
&lt;br /&gt;
上の例では、以下の行があることから {{ic|i965}} ドライバーが使われていることが確認できます:&lt;br /&gt;
&lt;br /&gt;
 vainfo: Driver version: Intel &#039;&#039;&#039;i965&#039;&#039;&#039; driver for Intel(R) Skylake - 1.7.3&lt;br /&gt;
&lt;br /&gt;
{{ic|vainfo}} を実行したときに以下のようなエラーが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 libva info: va_openDriver() returns -1&lt;br /&gt;
 vaInitialize failed with error code -1 (unknown libva error),exit&lt;br /&gt;
&lt;br /&gt;
適切なドライバーを設定する必要があります。[[#VA-API の設定]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== VDPAU の確認 ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|vdpauinfo}} をインストールしてから、以下のコマンドを実行してください。VDPAU ドライバーがロードされていることや、現在の設定が確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ vdpauinfo|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
display: :0   screen: 0&lt;br /&gt;
API version: 1&lt;br /&gt;
Information string: G3DVL VDPAU Driver Shared Library version 1.0&lt;br /&gt;
&lt;br /&gt;
Video surface:&lt;br /&gt;
&lt;br /&gt;
name   width height types&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
420    16384 16384  NV12 YV12&lt;br /&gt;
422    16384 16384  UYVY YUYV&lt;br /&gt;
444    16384 16384  Y8U8V8A8 V8U8Y8A8&lt;br /&gt;
&lt;br /&gt;
Decoder capabilities:&lt;br /&gt;
&lt;br /&gt;
name                        level macbs width height&lt;br /&gt;
----------------------------------------------------&lt;br /&gt;
MPEG1                          --- not supported ---&lt;br /&gt;
MPEG2_SIMPLE                    3  9216  2048  1152&lt;br /&gt;
MPEG2_MAIN                      3  9216  2048  1152&lt;br /&gt;
H264_BASELINE                  41  9216  2048  1152&lt;br /&gt;
H264_MAIN                      41  9216  2048  1152&lt;br /&gt;
H264_HIGH                      41  9216  2048  1152&lt;br /&gt;
VC1_SIMPLE                      1  9216  2048  1152&lt;br /&gt;
VC1_MAIN                        2  9216  2048  1152&lt;br /&gt;
VC1_ADVANCED                    4  9216  2048  1152&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Vulkan Video の確認 ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|vulkan-tools}} をインストールし、&#039;&#039;vulkaninfo&#039;&#039; を使ってビデオ処理拡張が利用可能であるかを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ vulkaninfo {{!}} grep VK_KHR_video_|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
	VK_KHR_video_decode_av1                       : extension revision 1&lt;br /&gt;
	VK_KHR_video_decode_h264                      : extension revision 9&lt;br /&gt;
	VK_KHR_video_decode_h265                      : extension revision 8&lt;br /&gt;
	VK_KHR_video_decode_queue                     : extension revision 8&lt;br /&gt;
	VK_KHR_video_encode_h264                      : extension revision 14&lt;br /&gt;
	VK_KHR_video_encode_h265                      : extension revision 14&lt;br /&gt;
	VK_KHR_video_encode_queue                     : extension revision 12&lt;br /&gt;
	VK_KHR_video_maintenance1                     : extension revision 1&lt;br /&gt;
	VK_KHR_video_queue                            : extension revision 8&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
ビデオドライバは VA-API と VDPAU の両方に対してハードウェアビデオアクセラレーションのサポートを自動的に有効化するはずですが、場合によっては手動で VA-API/VDPAU を手動で設定する必要があります。[[#確認]] セクションを見た場合にのみ、このセクションを読み進めてください。&lt;br /&gt;
&lt;br /&gt;
(他に設定が存在しない場合に使用される) デフォルトのドライバ名はシステムによって推測されます。しかし、それらはしばしばトリッキーで、機能しないこともあります。推測された値は [[Xorg]] のログファイルに出力されます。ログファイルは、Xorg が rootless の場合は {{ic|~/.local/share/xorg/Xorg.0.log}}、Xorg が root として実行されている場合は {{ic|/var/log/Xorg.0.log}} です。ログファイルからある値を検索するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ grep -iE &#039;vdpau {{!}} dri driver&#039; &#039;&#039;xorg_のログファイル&#039;&#039;|&lt;br /&gt;
(II) RADEON(0): [DRI2] DRI driver: radeonsi&lt;br /&gt;
(II) RADEON(0): [DRI2] VDPAU driver: radeonsi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この出力の場合、{{ic|radeonsi}} が VA-API と VDPAU のデフォルトです。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[GDM]] を使用している場合、代わりに {{ic|1=journalctl -b --grep=&#039;vdpau {{!}} dri driver&#039;}} を root として実行してください。}}&lt;br /&gt;
&lt;br /&gt;
しかし、これは &#039;&#039;設定&#039;&#039; を表すものではありません。上記の値は、オーバーライドしたとしても変更されません。&lt;br /&gt;
&lt;br /&gt;
=== VA-API の設定 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|LIBVA_DRIVER_NAME}} [[環境変数]] を使うことで、VA-API 用に使用するドライバをオーバーライドできます:&lt;br /&gt;
&lt;br /&gt;
* [[Intel Graphics]]:&lt;br /&gt;
** {{Pkg|libva-intel-driver}} の場合は {{ic|i965}} を使ってください。&lt;br /&gt;
** {{Pkg|intel-media-driver}} の場合は {{ic|iHD}} を使ってください。&lt;br /&gt;
* NVIDIA:&lt;br /&gt;
** [[Nouveau]] の場合は {{ic|nouveau}} を使ってください。&lt;br /&gt;
** [[NVIDIA]] NVDEC の場合は {{ic|nvidia}} を使ってください。&lt;br /&gt;
* AMD:&lt;br /&gt;
** [[AMDGPU]] ドライバの場合は {{ic|radeonsi}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* インストールされているドライバーは {{ic|/usr/lib/dri/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/dri/&#039;&#039;&#039;${LIBVA_DRIVER_NAME}&#039;&#039;&#039;_drv_video.so}} として使われます。&lt;br /&gt;
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/dri/* {{!}} sort}} を実行することで確認できます。&lt;br /&gt;
* {{ic|LIBVA_DRIVERS_PATH}} を使うことで VA-API ドライバーのパスを上書きできます。&lt;br /&gt;
* バージョン 12.0.1 から Mesa は {{ic|gallium}} の代わりとして {{ic|radeonsi}} を提供しています。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== VDPAU の設定 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|VDPAU_DRIVER}} [[環境変数]]を使うことで、VDPAU 用に使用するドライバをオーバーライドできます。&lt;br /&gt;
&lt;br /&gt;
適切なドライバ名は、あなたのセットアップに依存します:&lt;br /&gt;
&lt;br /&gt;
* Intel graphics の場合、{{ic|va_gl}} に設定する[[#Failed to open VDPAU backend|必要があります]]。&lt;br /&gt;
* オープンソースの AMD ドライバの場合、{{ic|radeonsi}} に設定してください。&lt;br /&gt;
* オープンソースの Nouveau ドライバの場合、{{ic|nouveau}} に設定してください。&lt;br /&gt;
* NVIDIA のプロプライエタリなバージョンの場合、{{ic|nvidia}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* インストールされているドライバーは {{ic|/usr/lib/vdpau/}} ディレクトリを見ることで確認できます。{{ic|/usr/lib/vdpau/libvdpau_&#039;&#039;&#039;${VDPAU_DRIVER}&#039;&#039;&#039;.so}} として使われます。&lt;br /&gt;
* 一部のドライバーは互換性を保つために異なる名前を使っていることがあります。{{ic|sha1sum /usr/lib/vdpau/*}} を実行することで確認できます。&lt;br /&gt;
* ハイブリッド構成 (NVIDIA と AMD の両方のカードが搭載されている) 場合、{{ic|DRI_PRIME}} [[環境変数]]を設定する必要があるかもしれません。詳しくは [[PRIME]] を参照。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Vulkan Video の設定 ===&lt;br /&gt;
&lt;br /&gt;
* [[インテルグラフィックス]]: {{Pkg|vulkan-intel}} の Vulkan Video サポートは {{ic|1=ANV_DEBUG=video-decode,video-encode}} [[環境変数]]で有効化できます。&lt;br /&gt;
* [[AMD]]: {{Pkg|vulkan-radeon}} の Vulkan Video サポートは、Mesa 25 以降、VCN 2、3、4+ ではデフォルトで有効化されています。それより古いカードでサポートを強制的に有効化するには、{{ic|RADV_PERFTEST}} [[環境変数]]に {{ic|video_decode,video_encode}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションの設定 ===&lt;br /&gt;
&lt;br /&gt;
マルチメディアフレームワーク:&lt;br /&gt;
&lt;br /&gt;
* [[FFmpeg#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
* [[GStreamer#ハードウェアアクセラレーション]]&lt;br /&gt;
&lt;br /&gt;
ビデオプレイヤ:&lt;br /&gt;
&lt;br /&gt;
* [[Kodi#ヒントとテクニック]]&lt;br /&gt;
* [[MPlayer#ハードウェアアクセラレーション]]&lt;br /&gt;
* [[mpv#ハードウェアデコード]]&lt;br /&gt;
* [[VLC media player#ハードウェアアクセラレーションのサポート]]&lt;br /&gt;
&lt;br /&gt;
ウェブブラウザ:&lt;br /&gt;
&lt;br /&gt;
* [[Chromium#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
* [[Firefox#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
* [[GNOME Web#ハードウェアアクセラレーション]]&lt;br /&gt;
&lt;br /&gt;
マルチメディア録画/ストリーミング:&lt;br /&gt;
&lt;br /&gt;
* [[Open Broadcaster Software#ハードウェアアクセラレーション]]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Failed to open VDPAU backend ===&lt;br /&gt;
&lt;br /&gt;
適切なドライバを指すように {{ic|VDPAU_DRIVER}} 変数を設定する必要があります。[[#VDPAU の設定]] を参照。&lt;br /&gt;
&lt;br /&gt;
=== VAAPI init failed ===&lt;br /&gt;
&lt;br /&gt;
エラーは {{ic|libva: /usr/lib/dri/i965_drv_video.so init failed}} という行で確認できます。[[Wayland]] が正しく認識されていないことが原因で発生します。{{ic|$DISPLAY}} の設定を解除することで mpv, MPlayer, VLC などは X11 であると誤認しないようになります。mpv の場合は {{ic|1=--gpu-context=wayland}} パラメータを追加することでも解決できます。&lt;br /&gt;
&lt;br /&gt;
このエラーは、あなたのハードウェアに合わない VA-API ドライバをインストールした場合にも起こりえます。&lt;br /&gt;
&lt;br /&gt;
=== AMDGPU ドライバーを使用したビデオデコード時の破損や歪み ===&lt;br /&gt;
&lt;br /&gt;
[[AMDGPU]] ドライバーでビデオデコードの破損または歪みが発生する場合は、{{ic|1=allow_rgb10_configs=false}} [[環境変数]]を設定してください。[https://bugs.freedesktop.org/show_bug.cgi?id=106490]&lt;br /&gt;
&lt;br /&gt;
== 比較一覧 ==&lt;br /&gt;
&lt;br /&gt;
=== VA-API ドライバ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! コーデック&lt;br /&gt;
! {{pkg|libva-intel-driver}} [https://github.com/01org/intel-vaapi-driver/blob/master/README]&lt;br /&gt;
! {{pkg|intel-media-driver}} [https://github.com/intel/media-driver/blob/master/README.md]&lt;br /&gt;
! {{pkg|mesa}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]&lt;br /&gt;
! {{Pkg|libva-nvidia-driver}}&amp;lt;br&amp;gt; (NVDEC アダプタ)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=5 | デコード&lt;br /&gt;
|-&lt;br /&gt;
! MPEG-2&lt;br /&gt;
| {{G|GMA 4500 以降}}&lt;br /&gt;
| {{G|Broadwell 以降}}&lt;br /&gt;
| {{G|Radeon HD 6000 以降&amp;lt;br&amp;gt;GeForce 8 以降&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| rowspan=10 | [[#NVIDIA ドライバのみ]] を参照&lt;br /&gt;
|-&lt;br /&gt;
! H.263/MPEG-4 Visual&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{G|Radeon HD 6000 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! VC-1&lt;br /&gt;
| {{G|Sandy Bridge 以降}}&lt;br /&gt;
| rowspan=2 {{G|Broadwell 以降}}&lt;br /&gt;
| {{G|Radeon HD 2000 以降&amp;lt;br&amp;gt;GeForce 9300 以降&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
! H.264/MPEG-4 AVC&lt;br /&gt;
| {{G|Ironlake 以降}}&lt;br /&gt;
| {{G|Radeon HD 2000 以降&amp;lt;br&amp;gt;GeForce 8 以降&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 8bit&lt;br /&gt;
| {{G|Cherryview/Braswell 以降}}&lt;br /&gt;
| {{G|Skylake 以降}}&lt;br /&gt;
| {{G|Radeon R9 Fury 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 10bit&lt;br /&gt;
| {{G|Broxton 以降}}&lt;br /&gt;
| {{G|Broxton/Apollo Lake 以降}}&lt;br /&gt;
| {{G|Radeon 400 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! VP8&lt;br /&gt;
| {{G|Broadwell 以降}}&lt;br /&gt;
| {{G|Broadwell 以降}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 8bit&lt;br /&gt;
| {{G|Broxton 以降 &amp;lt;br&amp;gt; Hybrid: Haswell refresh から Skylake&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{G|Broxton/Apollo Lake 以降}}&lt;br /&gt;
| rowspan=2 {{G|Raven Ridge + Radeon RX 5000 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 10bit &amp;amp; 12bit&lt;br /&gt;
| {{G|Kaby Lake 以降}}&lt;br /&gt;
| {{G|Kaby Lake 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! AV1 8bit &amp;amp; 10bit&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{G|Tiger Lake 以降}}&lt;br /&gt;
| {{G|Radeon RX 6600 以上/以降}}&lt;br /&gt;
|-&lt;br /&gt;
! colspan=5 | エンコード&lt;br /&gt;
|-&lt;br /&gt;
! MPEG-2&lt;br /&gt;
| {{G|Ivy Bridge 以降}}&lt;br /&gt;
| {{G|Broadwell 以降&amp;lt;br&amp;gt;Broxton/Apollo Lake を除く}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| rowspan=8 {{No}}&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! H.264/MPEG-4 AVC&lt;br /&gt;
| {{G|Sandy Bridge 以降}}&lt;br /&gt;
| {{G|Broadwell 以降}}&lt;br /&gt;
| {{G|Radeon HD 7000 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 8bit&lt;br /&gt;
| {{G|Skylake 以降}}&lt;br /&gt;
| {{G|Skylake 以降}}&lt;br /&gt;
| {{G|Radeon 400 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 10bit&lt;br /&gt;
| {{G|Kaby Lake 以降}}&lt;br /&gt;
| rowspan=2 {{G|Kaby Lake 以降}}&lt;br /&gt;
| {{G|Raven Ridge + Radeon RX 5000 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! VP8&lt;br /&gt;
| {{G|Cherryview/Braswell 以降 &amp;lt;br&amp;gt; Hybrid: Haswell から Skylake&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| rowspan=3 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 8bit&lt;br /&gt;
| {{G|Kaby Lake 以降}}&lt;br /&gt;
| rowspan=2 {{G|Ice Lake 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 10bit &amp;amp; 12bit&lt;br /&gt;
| rowspan=2 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! AV1 8bit &amp;amp; 10bit&lt;br /&gt;
| {{G|Alchemist 以降}}&lt;br /&gt;
| {{G|Radeon RX 7900 以上/以降}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# GeForce GTX 750 まで。&lt;br /&gt;
# Hybrid VP8 エンコーダと VP9 デコーダは {{AUR|intel-hybrid-codec-driver-git}} によってサポートされています。&lt;br /&gt;
# MPEG-4 Part 2 は VAAPI の制限のためデフォルトで無効化されています。使用してみるには、{{ic|1=VAAPI_MPEG4_ENABLED=true}} [[環境変数]]を設定してください。&lt;br /&gt;
# NVIDIA CUDA アダプタコーデックのサポートは活発に開発中であり、これは変更される可能性があります [https://github.com/elFarto/nvidia-vaapi-driver/issues/116]。&lt;br /&gt;
&lt;br /&gt;
=== VDPAU ドライバ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! コーデック&lt;br /&gt;
! 色深度&lt;br /&gt;
! {{pkg|mesa}} [https://www.x.org/wiki/RadeonFeature/] [https://nouveau.freedesktop.org/wiki/VideoAcceleration/]&lt;br /&gt;
! {{pkg|nvidia-utils}}&lt;br /&gt;
! {{pkg|libvdpau-va-gl}}&amp;lt;br&amp;gt;(VA-API アダプタ)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=5 | デコード&lt;br /&gt;
|-&lt;br /&gt;
! MPEG-2&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|Radeon R600 以降 &amp;lt;br&amp;gt; GeForce 8 以降&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{G|GeForce 8 以降}}&lt;br /&gt;
| rowspan=3 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! H.263/MPEG-4 Visual&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|Radeon HD 6000 以降 &amp;lt;br&amp;gt; GeForce 200 以降&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{G|GeForce 200 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! VC-1&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|Radeon HD 2000 以降 &amp;lt;br&amp;gt; GeForce 9300 以降&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{G|GeForce 8 以降&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
! H.264/MPEG-4 AVC&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|Radeon HD 2000 以降 &amp;lt;br&amp;gt; GeForce 8 以降&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{G|GeForce 8 以降}}&lt;br /&gt;
| [[#VA-API ドライバ]] を参照&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=2 | H.265/HEVC&lt;br /&gt;
! 8bit&lt;br /&gt;
| {{G|Radeon R9 Fury 以降}}&lt;br /&gt;
| {{G|GeForce 900 以降&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| rowspan=6 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! 10bit&lt;br /&gt;
| {{G|Radeon 400 以降}}&lt;br /&gt;
| {{No}}&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=2 | VP9&lt;br /&gt;
! 8bit&lt;br /&gt;
| rowspan=2 {{G|Raven Ridge + Radeon RX 5000 以降}}&lt;br /&gt;
| {{G|GeForce 900 以降&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
! 10bit/12bit&lt;br /&gt;
| {{No}}&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=2 | AV1&lt;br /&gt;
! 8bit&lt;br /&gt;
| rowspan=2 {{G|Radeon RX 6600 以上/以降}}&lt;br /&gt;
| {{G|GeForce 30 以降}}&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! 10bit&lt;br /&gt;
| {{No}}&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# GeForce GTX 750 まで。&lt;br /&gt;
# GeForce 8800 Ultra、8800 GTX、8800 GTS (320/640 MB) は[[Wikipedia:Nvidia PureVideo|除く]]。&lt;br /&gt;
# GeForce GTX 970 と GTX 980 は除く。&lt;br /&gt;
# NVIDIA の実装は8ビットストリームまでに制限されています [https://forums.developer.nvidia.com/t/vdpau-expose-hevc-main10-support-where-available-on-die/43163] [https://us.download.nvidia.com/XFree86/Linux-x86_64/410.57/README/vdpausupport.html#vdpau-implementation-limits]。&lt;br /&gt;
# ドライババージョン 510 から [https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=NVIDIA-510-Linux-Beta]&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA ドライバのみ ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! rowspan=2 | コーデック&lt;br /&gt;
! colspan=2 | {{Pkg|nvidia-utils}} [https://developer.nvidia.com/nvidia-video-codec-sdk]&lt;br /&gt;
|-&lt;br /&gt;
! NVDEC&lt;br /&gt;
! NVENC&lt;br /&gt;
|-&lt;br /&gt;
! MPEG-2&lt;br /&gt;
| rowspan=3 {{G|Fermi 以降&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| rowspan=2 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! VC-1&lt;br /&gt;
|-&lt;br /&gt;
! H.264/MPEG-4 AVC&lt;br /&gt;
| {{G|Kepler 以降&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 8bit&lt;br /&gt;
| rowspan=2 {{G|Maxwell (GM206) 以降}}&lt;br /&gt;
| {{G|Maxwell (2nd Gen) 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! H.265/HEVC 10bit&lt;br /&gt;
| {{G|Pascal 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! VP8&lt;br /&gt;
| {{G|Maxwell (2nd Gen) 以降}}&lt;br /&gt;
| rowspan=3 {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 8bit&lt;br /&gt;
| {{G|Maxwell (GM206) 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! VP9 10bit &amp;amp; 12bit&lt;br /&gt;
| {{G|Pascal 以降}}&lt;br /&gt;
|-&lt;br /&gt;
! AV1 8bit &amp;amp; 10bit&lt;br /&gt;
| {{G|Ampere 以降&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{G|Ada Lovelace 以降}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# GM108 は除く (未サポート)&lt;br /&gt;
# GM108 と GP108 は除く (未サポート)&lt;br /&gt;
# A100 は除く (未サポート)&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションサポート ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! rowspan=2 | アプリケーション&lt;br /&gt;
! colspan=4 | デコード&lt;br /&gt;
! colspan=3 | エンコード&lt;br /&gt;
! rowspan=2 | ドキュメント&lt;br /&gt;
|-&lt;br /&gt;
! VA-API&lt;br /&gt;
! VDPAU&lt;br /&gt;
! NVDEC&lt;br /&gt;
! Vulkan&lt;br /&gt;
! VA-API&lt;br /&gt;
! NVENC&lt;br /&gt;
! Vulkan&lt;br /&gt;
|-&lt;br /&gt;
! [[FFmpeg]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| [[FFmpeg#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
|-&lt;br /&gt;
! [[GStreamer]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No|1=https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197}}&lt;br /&gt;
| [[GStreamer#ハードウェアアクセラレーション]]&lt;br /&gt;
|-&lt;br /&gt;
! [[Kodi]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| [[Kodi#ヒントとテクニック]]&lt;br /&gt;
|-&lt;br /&gt;
! [[mpv]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| [[mpv#ハードウェアデコード]]&lt;br /&gt;
|-&lt;br /&gt;
! [[VLC media player]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No|1=https://code.videolan.org/videolan/vlc/-/issues/28362}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| [[VLC media player#ハードウェアアクセラレーションのサポート]]&lt;br /&gt;
|-&lt;br /&gt;
! [[MPlayer]]&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| [[MPlayer#ハードウェアアクセラレーション]]&lt;br /&gt;
|-&lt;br /&gt;
! [[Flash]]&lt;br /&gt;
| {{No}}&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{Yes}}&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| [[ブラウザプラグイン#Adobe Flash Player]]&lt;br /&gt;
|-&lt;br /&gt;
! [[Chromium]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| [[Chromium#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
|-&lt;br /&gt;
! [[Firefox]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No|1=https://bugzilla.mozilla.org/show_bug.cgi?id=1753129}}&lt;br /&gt;
| {{No|1=https://bugzilla.mozilla.org/show_bug.cgi?id=1658900}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| [[Firefox#ハードウェアビデオアクセラレーション]]&lt;br /&gt;
|-&lt;br /&gt;
! [[GNOME/Web]]&lt;br /&gt;
| colspan=4 {{C|GStreamer}}&lt;br /&gt;
| {{C|?}}&lt;br /&gt;
| {{C|?}}&lt;br /&gt;
| {{C|?}}&lt;br /&gt;
| [[GNOME Web#ビデオ]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# VDPAU は NPAPI プラグインによってのみサポートされています。部分的な VA-API と VDPAU アクセラレーションを提供する、PPAPI プラグインから NPAPI ブラウザへの実験的なアダプタが利用できます。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Hardware video acceleration|2025-06-29|838872}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=CPU_%E5%91%A8%E6%B3%A2%E6%95%B0%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0&amp;diff=40474</id>
		<title>CPU 周波数スケーリング</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=CPU_%E5%91%A8%E6%B3%A2%E6%95%B0%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0&amp;diff=40474"/>
		<updated>2025-06-28T11:08:12Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:電源管理]]&lt;br /&gt;
[[Category:CPU]]&lt;br /&gt;
[[de:Cpufrequtils]]&lt;br /&gt;
[[en:CPU frequency scaling]]&lt;br /&gt;
[[fr:CPU frequency scaling]]&lt;br /&gt;
[[pt:CPU frequency scaling]]&lt;br /&gt;
[[zh-hans:CPU frequency scaling]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|省電力設定}}&lt;br /&gt;
{{Related|Laptop Mode Tools}}&lt;br /&gt;
{{Related|CPU の低電圧化}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://docs.kernel.org/admin-guide/pm/cpufreq.html CPU パフォーマンススケーリング]により、オペレーティングシステムは消費電力の削減やパフォーマンスの向上のために CPU の周波数を上げ下げすることができるようになります。スケーリングは、システムの負荷に応じて自動的に行ったり、ACPI イベントに応じて調整したり、ユーザスペースのプログラムで手動で変更したりできます。&lt;br /&gt;
&lt;br /&gt;
Linux カーネルは &#039;&#039;CPUFreq&#039;&#039; サブシステムを通して CPU パフォーマンススケーリングを提供します。このサブシステムには2つの抽象化レイヤが定義されています:&lt;br /&gt;
&lt;br /&gt;
* [[#スケーリングガバナー|スケーリングガバナー]]は、望ましい CPU 周波数を計算するアルゴリズムを実装します。システムのニーズに基づいている可能性があります。&lt;br /&gt;
* [[#スケーリングドライバ|スケーリングドライバ]]は、直接 CPU と対話し、現在のガバナーの要求する望ましい周波数に変更します。&lt;br /&gt;
&lt;br /&gt;
デフォルトのスケーリングドライバとスケーリングガバナーは自動的に選択されますが、[[#cpupower|cpupower]] や [[acpid]]、[[Laptop Mode Tools]]、デスクトップ環境によって提供されている GUI ツールなどのユーザスペースのツールでも高度な設定をすることができます。&lt;br /&gt;
&lt;br /&gt;
== ユーザースペースツール ==&lt;br /&gt;
&lt;br /&gt;
=== i7z ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|i7z}} は Linux 向けの i7 (現在は、i3、i5、i7、i9) CPU レポートツールです。{{ic|i7z}} コマンドでターミナルから実行することができ、GUI は {{ic|i7z-gui}} で起動できます。&lt;br /&gt;
&lt;br /&gt;
=== turbostat ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|turbostat}} は最近の Intel と AMD の CPU の周波数、消費電力、アイドル状態、その他の統計情報を表示することができます。&lt;br /&gt;
&lt;br /&gt;
=== cpupower ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|cpupower}} は CPU 周波数スケーリングを補助するように作られたユーザースペースのユーティリティの集まりです。このパッケージがなくてもスケーリングを使うことはできますが、便利なコマンドラインユーティリティや起動時にガバナーを変えるための [[systemd]] のサービスが入っているためインストールすることが推奨されています。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;cpupower&#039;&#039; の設定ファイルは {{ic|/etc/default/cpupower}} です。この設定ファイルは {{ic|/usr/lib/systemd/scripts/cpupower}} 内の bash スクリプトによって読み込まれます。bash スクリプトは {{ic|cpupower.service}} と &#039;&#039;systemd&#039;&#039; によって有効にされます。ブート時に起動するには {{ic|cpupower.service}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
=== thermald ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|thermald}} は、Intel CPU のオーバーヒートを防止するために使用される [https://github.com/intel/thermal_daemon Linux デーモン]です。このデーモンは P-state、T-state、および Intel power clamp ドライバを使用してサーマルパラメータを積極的に制御します。最新のドライバが利用できない場合、デーモンはシステムの冷却を制御するために x86 モデル固有のレジスタと Linux の &amp;quot;cpufreq サブシステム&amp;quot; に戻り、システムの冷却を制御します。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、このデーモンは利用可能な CPU デジタル温度センサーを使って CPU 温度を監視し、ハードウェアが積極的な補正動作を行う前に CPU 温度を制御下に維持します。thermal sysfs に皮膚温度センサーがある場合、皮膚温度を 45C 以下に保とうと試みます (訳注: ここでの皮膚温度 (skin temperature) とは、ユーザがデバイスを持ったときに感じる温度のことです)。&lt;br /&gt;
&lt;br /&gt;
Tiger Lake ラップトップ (例: [https://wiki.archlinux.org/title/Dell_Latitude_3420 Dell Latitude 3420]) では、このデーモンは、他の方法で利用できるものよりも [https://www.phoronix.com/review/intel-thermald-tgl 多くのパフォーマンスを解放する] と報告されています。&lt;br /&gt;
&lt;br /&gt;
関連する systemd ユニットは {{ic|thermald.service}} です。このサービスは[[起動]]され、かつ[[有効化]]されている必要があります。詳細については、{{man|8|thermald}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== power-profiles-daemon ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|power-profiles-daemon}} の &#039;&#039;powerprofilesctl&#039;&#039; コマンドラインツールは {{ic|power-profiles-daemon}} サービスを通して電源プロファイル (省電力、バランス、パフォーマンスなど) を扱います。GNOME と KDE もプロファイル切り替えのための [https://gitlab.freedesktop.org/upower/power-profiles-daemon#how-to-use グラフィカルインターフェイス] を提供しています。以下を参照してください:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME#電源モード]]&lt;br /&gt;
* [[KDE#電源管理]]&lt;br /&gt;
&lt;br /&gt;
使い方や使用例、類似プロジェクトとの比較などについては、[https://gitlab.freedesktop.org/upower/power-profiles-daemon#power-profiles-daemon プロジェクトの README] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|power-profiles-daemon}} サービスを [[起動/有効化]] してください。&#039;&#039;powerprofilesctl&#039;&#039; が起動されると、サービスも起動しようとすることに注意してください ({{ic|dbus.service}} の [[ユニットステータス]] を見てください。)&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* &#039;&#039;power-profiles-daemon&#039;&#039; は、[[TLP]] や {{Pkg|tuned}}、{{AUR|system76-power}} といった他の電源管理サービスと[https://gitlab.freedesktop.org/upower/power-profiles-daemon/-/blob/main/data/power-profiles-daemon.service.in#L3 衝突]します。(潜在的に依存関係にあるため) &#039;&#039;power-profiles-daemon&#039;&#039; を [[アンインストール]] せずに前述のサービスのどれかを代わりに使用するには、{{ic|power-profiles-daemon}} サービスを [[マスク]] して無効化してください ([https://github.com/linrunner/TLP/issues/564]、[https://linrunner.de/tlp/installation/arch.html#service-units] も参照。)&lt;br /&gt;
* [[#tuned|tuned]] は、バージョン 2.23.0 以降、&#039;&#039;power-profiles-daemon&#039;&#039; 用の &#039;&#039;tuned-ppd&#039;&#039; サービス互換性レイヤーを提供するようになりました。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== tuned ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|tuned}} は、システムデバイスの監視と適応チューニングのためのデーモンです。GPU 電力モード、PCIe 電力管理、sysctl 設定の設定、カーネル スケジューリングの調整などを行うことができます。システム内の電源管理の設定も行います。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/redhat-performance/tuned/releases/tag/v2.23.0#tuned release 2.23.0] の時点で、プロジェクトには {{Pkg|power-profiles-daemon}} 用に書かれたプログラムのための互換性レイヤーである {{Pkg|tuned-ppd}} が同梱されています。そのようなプログラムとしては以下があります:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME#電源モード]]&lt;br /&gt;
* [[KDE#電源管理]]&lt;br /&gt;
&lt;br /&gt;
power-profiles-daemon の代わりにtuned を使用する必要がある理由については、Fedora の [https://fedoraproject.org/wiki/Changes/TunedAsTheDefaultPowerProfileManagementDaemon#Make_Tuned_the_Default_Power_Profile_Management_Daemon#see 提案] を参照して、tuned に置き換えてください。反対の議論については、[https://discussion.fedoraproject.org/t/f41-change-proposal-make-tuned-the-default-power-profile-management-daemon-system-wide/118554/29]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|tuned}} デーモン サービスを[[起動/有効化]]します。 power-profiles-daemon の互換性のために、{{ic|tuned-ppd}} サービスも[[起動/有効化]]します。コマンドラインから tuned を制御するには、{{ic|tuned-adm}} を使用してプロファイルを表示、設定します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;tuned-ppd&#039;&#039; は {{ic|/etc/tuned/ppd.conf}} で設定されています。プログラムが &#039;&#039;power-profiles-daemon&#039;&#039; のプロファイルを選択する際に使用される &#039;&#039;tuned&#039;&#039; プロファイルを設定するには、このファイルを編集してください。このファイルには、すべての power-profiles-daemon モードおよびバッテリー検出が含まれています。}}&lt;br /&gt;
&lt;br /&gt;
=== cpupower-gui ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|cpupower-gui-git}} は CPU 周波数のスケーリングを支援するために設計されたグラフィカルなユーティリティです。GUI は [[GTK]] をベースにしており、&#039;&#039;cpupower&#039;&#039; と同じオプションを提供することを意図しています。 &#039;&#039;cpupower-gui&#039;&#039; は、コアの有効化/無効化、及び、各コアの最大/最小の CPU 周波数とガバナーを変更することができます。このアプリケーションは [[polkit]] を通して特権付与を行い、{{ic|wheel}} [[ユーザグループ]]のログイン済みユーザであれば誰でも周波数とガバナーを変更することができます。{{ic|cpupower-gui.service}} と {{ic|cpupower-gui-user.service}} に関する詳細は [https://github.com/vagnum08/cpupower-gui?tab=readme-ov-file#systemd-units cpupower-gui systemd ユニット]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== gnome-shell-extension-cpupower ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|gnome-shell-extension-cpupower-git}} は、CPU 周波数の最大値と最小値を変更し、周波数ブーストを有効化/無効化することのできる [[GNOME]] シェル拡張です。&lt;br /&gt;
&lt;br /&gt;
=== auto-cpufreq ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|auto-cpufreq}} は、Linux 用の CPU 速度と電源の自動オプティマイザです。ノート PC のバッテリー状態、CPU 使用率、CPU 温度、そしてシステムの負荷をアクティブに監視します。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-powerd ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;nvidia-powerd&#039;&#039; デーモンは、サポートされているノート PC プラットフォームにおいて [[NVIDIA]] の Dynamic Boost テクノロジのサポートを提供します。このデーモンは、システム全体の電力制御ソフトウェアとして動作し、ワークロードの要求に応じて GPU と CPU の間で電力を動的に配分しつつ、システム全体の熱予算を維持します。[https://download.nvidia.com/XFree86/Linux-x86_64/570.144/README/dynamicboost.html]&lt;br /&gt;
&lt;br /&gt;
{{ic|nvidia-powerd}} サービスを[[開始/有効化]]してください。これは {{Pkg|nvidia-utils}} パッケージにあります。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;nvidia-powerd&#039;&#039; の前提要件は次のとおりです: NVIDIA Ampere (及びそれより新しい) GPU あるいは Intel Comet Lake (及びそれより新しい) あるいは AMD Renoir (及びそれより新しい) チップセットのどれかを搭載しており、かつ、ファームウェアレベルの Dynamic Boost サポートが存在すること ({{ic|nvidia-settings -q DynamicBoostSupport}} で確認できます)。}}&lt;br /&gt;
&lt;br /&gt;
== スケーリングドライバ ==&lt;br /&gt;
&lt;br /&gt;
スケーリングドライバは、ガバナーによって指定された周波数を設定する CPU 固有の詳細を実装します。厳密に言えば、ACPI 標準は、P0 で始まって徐々に低パフォーマンスになる [[wikipedia:Advanced Configuration and Power Interface#Performance state|power-performance states (P-states)]] を要求しています。この機能は、Intel では SpeedStep と、AMD では PowerNow! と呼ばれています。&lt;br /&gt;
&lt;br /&gt;
とはいえ実際には、プロセッサは固定の P-state に制限するどころか、特定の周波数を指定する方法を提供しています。スケーリングドライバは周波数の指定を処理します。&lt;br /&gt;
&lt;br /&gt;
{{Note|ネイティブな CPU モジュールは自動的にロードされます。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;cpupower&#039;&#039; は、ネイティブな CPU の制限を調べるためにドライバを必要とします:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ドライバ !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|acpi_cpufreq}}  || ACPI Processor Performance States を使用する CPUFreq ドライバ。このドライバは Intel Enhanced SpeedStep もサポートしています (以前は、非推奨となっている {{ic|speedstep_centrino}} モジュールによってサポートされていました)。AMD Ryzen においては 3つの周波数ステートのみを提供します。&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|amd_pstate}} || このドライバには3つのモード (active、passive、guided) があり、それぞれ CPU ハードウェアからの自律性の度合いに対応しています。カーネル 6.5 以降、{{ic|amd_pstate}} CPU パワースケーリングドライバは、サポートされている CPU (Zen 2 及びそれより新しい CPU) において &amp;quot;active mode&amp;quot; の場合に自動的に使用されます。詳細は [[#amd_pstate]] を参照してください。&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|amd_pstate_epp}} || このドライバは、AMD Ryzen プロセッサ (Zen 2 及びそれより新しい CPU の一部) 向けの {{ic|1=amd_pstate=active}} によって選択された、内部ガバナーのあるスケーリングドライバを実装します。&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|cppc_cpufreq}} || ACPI CPPC システムベースの CPUFreq ドライバ ([[#Collaborative processor performance control]] を参照)。AArch64 システムにおいて一般的なデフォルトです。最近の x86 CPU でも動作しますが、{{ic|intel_pstate}} や {{ic|amd_pstate}} ドライバのほうが優れています。&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|intel_cpufreq}} || カーネル 5.7 から、intel_pstate スケーリングドライバは、ハードウェアによって管理された P-state (HWP) をサポートしていない CPU において、&amp;quot;passive mode&amp;quot; (別名 {{ic|intel_cpufreq}}) を選択します。つまり、Intel Core i シリーズの第5世代及びそれより古い CPU においてです。この &amp;quot;passive&amp;quot; ドライバは Intel CPU において ACPI ドライバと似たように動作します。ただし、ACPI の 16-pstate 制限はありません。&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|intel_pstate}} || このドライバは、Intel Core プロセッサ (Sandy Bridge 及びそれより新しい CPU) 向けの内部ガバナーのあるスケーリングドライバを実装します。対象のプロセッサにおいては下記の古いドライバの代わりにこれが自動的に使用されます。このドライバは他のドライバよりも優先度が高く、モジュールではなくビルトインとなっています。{{ic|intel_pstate}} は、古い CPU において {{ic|intel_cpufreq}} 経由で &amp;quot;passive mode&amp;quot; で実行される場合があります。このドライバを使用していて問題が発生する場合は、{{ic|1=intel_pstate=disable}} をカーネルラインに追加して {{ic|acpi_cpufreq}} ドライバに戻してください。&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|p4_clockmod}} || Intel Pentium 4/Xeon/Celeron プロセッサ向けの CPUFreq ドライバ。クロックをスキップすることで CPU 温度を下げます。(このドライバではなく {{ic|speedstep_lib}} を代わりに使用したほうが良いかもしれません。)&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|pcc_cpufreq}} || このドライバは Hewlett-Packard と Microsoft Corporation の Processor Clocking Control インターフェイスをサポートしています。これは一部の ProLiant サーバーにおいて有用です。&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|powernow_k8}} || K8/K10 Athlon 64/Opteron/Phenom プロセッサ向けの CPUFreq ドライバ。Linux 3.7 以降、より最近の AMD CPu においては &#039;acpi_cpufreq&#039; が自動的に使用されます。&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|speedstep_lib}} || Intel SpeedStep のあるプロセッサ (主に Atom と古い Pentium) 向けの CPUFreq ドライバ。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|1=以下のコマンドはモジュールとして組み込まれているドライバしか出力せず、ビルトインのもの (例えば [https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/blob/main/config?ref_type=heads#L711 intel_pstate と amd_pstate]) は出力されません。}}&lt;br /&gt;
&lt;br /&gt;
利用可能なモジュールの完全なリストを表示するには、次を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ ls /usr/lib/modules/$(uname -r)/kernel/drivers/cpufreq/&lt;br /&gt;
&lt;br /&gt;
適切なモジュールをロードしてください (詳しくは[[カーネルモジュール]]を見て下さい)。適切な cpufreq ドライバーがロードされていれば、次のコマンドで CPU の詳細が表示されます:&lt;br /&gt;
&lt;br /&gt;
 $ cpupower frequency-info&lt;br /&gt;
&lt;br /&gt;
=== 最大・最小周波数を設定する ===&lt;br /&gt;
&lt;br /&gt;
一部のケースで、最大・最小周波数を手動で設定する必要があることがあります。&lt;br /&gt;
&lt;br /&gt;
最大クロック周波数を設定するには ({{ic|&#039;&#039;clock_freq&#039;&#039;}} は単位付きのクロック周波数です: GHz、MHz):&lt;br /&gt;
&lt;br /&gt;
 # cpupower frequency-set -u &#039;&#039;clock_freq&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
最小クロック周波数を設定するには:&lt;br /&gt;
&lt;br /&gt;
 # cpupower frequency-set -d &#039;&#039;clock_freq&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
特定の周波数で動作するように CPU を設定するには:&lt;br /&gt;
&lt;br /&gt;
 # cpupower frequency-set -f &#039;&#039;clock_freq&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 単一の CPU コアだけを調整するには、{{ic|-c &#039;&#039;core_number&#039;&#039;}} をコマンドに加えてください。&lt;br /&gt;
* ガバナーの最大周波数と最小周波数は {{ic|/etc/default/cpupower}} で設定できます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
あるいは、手動で周波数を設定することもできます:&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;&#039;value&#039;&#039; | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq&lt;br /&gt;
&lt;br /&gt;
利用可能な値は {{ic|/sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies}} などで調べられます。[https://web.archive.org/web/20201029114421/https://software.intel.com/sites/default/files/comment/1716807/how-to-change-frequency-on-linux-pub.txt]&lt;br /&gt;
&lt;br /&gt;
=== 周波数ブーストを設定する ===&lt;br /&gt;
&lt;br /&gt;
一部のプロセッサでは、適切な温度条件下で短時間、周波数を通常の最大値以上に上げることができます。これは、Intel プロセッサでは [[Wikipedia:ja:インテル ターボ・ブースト・テクノロジー|Turbo Boost]] と、AMD プロセッサでは [[Wikipedia:AMD Turbo Core|Turbo-Core]] と呼ばれています。&lt;br /&gt;
&lt;br /&gt;
==== sysfs から設定する (intel_pstate) ====&lt;br /&gt;
&lt;br /&gt;
intel_pstate には、プロセッサがターボ P-State に入ることを禁止するための、ドライバ固有のインターフェイスが存在します:&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/system/cpu/intel_pstate/no_turbo&lt;br /&gt;
&lt;br /&gt;
==== sysfs から設定する (古いスケーリングドライバ) ====&lt;br /&gt;
&lt;br /&gt;
{{ic|intel_pstate}} より古いスケーリングドライバにおいては、ドライバがブーストをサポートしている場合、{{ic|/sys/devices/system/cpu/cpufreq/boost}} 属性が存在し、これを使ってブーストを無効化/有効化することができます。&lt;br /&gt;
&lt;br /&gt;
ブーストを無効化するには:&lt;br /&gt;
&lt;br /&gt;
 # echo 0 &amp;gt; /sys/devices/system/cpu/cpufreq/boost&lt;br /&gt;
&lt;br /&gt;
ブーストを有効化するには:&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/system/cpu/cpufreq/boost&lt;br /&gt;
&lt;br /&gt;
==== x86_energy_perf_policy から設定する ====&lt;br /&gt;
&lt;br /&gt;
Intel プロセッサにおいては、{{Pkg|x86_energy_perf_policy}} を使ってターボブーストを設定することもできます:&lt;br /&gt;
&lt;br /&gt;
 # x86_energy_perf_policy --turbo-enable 0&lt;br /&gt;
&lt;br /&gt;
=== amd_pstate ===&lt;br /&gt;
&lt;br /&gt;
{{ic|amd_pstate}} には 3 つのオペレーションモードが存在します: CPPC autonomous (active) モード、CPPC non-autonomous (passive) モード、CPPC guided autonomous (guided) モード。[[カーネル#公式サポートカーネル|公式サポートカーネル]]は {{ic|1=CONFIG_X86_AMD_PSTATE_DEFAULT_MODE=3}} でビルドされており、つまりデフォルトは active モードです。これは[[カーネルパラメータ]]を使って {{ic|1=amd_pstate=active}}、{{ic|1=amd_pstate=passive}}、{{ic|1=amd_pstate=guided}} のように変更できます。{{ic|acpi_cpufreq}} ドライバに戻すには {{ic|1=amd_pstate=disable}} と設定してください。&lt;br /&gt;
&lt;br /&gt;
; Active モード&lt;br /&gt;
: {{ic|active}} モードは {{ic|amd_pstate_epp}} (Energy Performance Preference) ドライバによって実装されています。このモードでは、ソフトウェアが CPPC ファームウェアにパフォーマンス (0x0) または電力効率 (0xff) にバイアスをかけることを要求した場合、{{ic|amd_pstate_epp}} ドライバはハードウェアにヒントを提供します。&lt;br /&gt;
; Passive モード&lt;br /&gt;
: {{ic|passive}} モードは {{ic|amd_pstate}} ドライバによって実装されています。このモードでは、ドライバは現在の負荷に基づいて望ましいパフォーマンス (特に、ユーザエクスペリエンスに影響を与えずにどれだけパフォーマンスの低下を許容できるか) を定義します。&lt;br /&gt;
; Guided モード&lt;br /&gt;
: {{ic|guided}} モードは {{ic|amd_pstate}} ドライバによって実装されています。このモードでは、{{ic|amd_pstate}} ドライバはパフォーマンスレベルの最大と最小をリクエストし、プラットフォームは、現在の負荷において適切なパフォーマンスレベルをその範囲内で自動的に選択します。&lt;br /&gt;
&lt;br /&gt;
{{Note|一部のマザーボードは必要な設定をファームウェア内で有効にしていないかもしれません。この場合、{{ic|the _CPC object is not present in SBIOS or ACPI disabled}} エラーが発生します。&#039;&#039;Enable CPPC&#039;&#039; (たいてい &#039;&#039;AMD CBS &amp;gt; NBIO &amp;gt; SMU &amp;gt; CPPC&#039;&#039; にあります) を &#039;&#039;Auto&#039;&#039; から &#039;&#039;Enabled&#039;&#039; に変更してください (あるいは UEFI 内の似たような設定を変更してください)。これらのオプションが存在しない場合は、ベンダーのウェブサイトを見て更新がないかを調べるか、高度な UEFI オプションを表示させる隠れた方法がマザーボードにないか確認してください。}}&lt;br /&gt;
&lt;br /&gt;
== スケーリングガバナー ==&lt;br /&gt;
&lt;br /&gt;
スケーリングガバナーとは、望ましい CPU 周波数を決定するパワースキームです。固定の周波数をリクエストするガバナーもありますし、システムの負荷に応じて動的に調節するアルゴリズムを実装しているものもあります。カーネルに含まれているガバナーは以下のとおりです:&lt;br /&gt;
&lt;br /&gt;
{{Note|1=各ガバナーは任意のスケーリングドライバと互換性があります。ただし、active モードでの {{ic|intel_pstate}} と {{ic|amd_pstate}} は例外です。これらは、{{ic|powersave}} と {{ic|performance}} という形で疑似ガバナーを提供します。下の [[#自律的な周波数スケーリング]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ガバナー !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| performance  || 最大周波数で CPU を動作させます。最大周波数は {{ic|/sys/devices/system/cpu/cpu&#039;&#039;X&#039;&#039;/cpufreq/scaling_max_freq}} で得ることができます。&lt;br /&gt;
|-&lt;br /&gt;
| powersave    || 最小周波数で CPU を動作させます。最小周波数は {{ic|/sys/devices/system/cpu/cpu&#039;&#039;X&#039;&#039;/cpufreq/scaling_min_freq}} で得ることができます。&lt;br /&gt;
|-&lt;br /&gt;
| userspace    || ユーザーが指定した周波数で CPU を動作させます。{{ic|/sys/devices/system/cpu/cpu&#039;&#039;X&#039;&#039;/cpufreq/scaling_setspeed}} で設定可能です。&lt;br /&gt;
|-&lt;br /&gt;
| ondemand     || 現在の負荷にあわせて周波数を動的に切り替えます。最大周波数に一気に切り替えたあと、アイドル時間が増えるにつれて周波数がもとに戻る可能性があります。&lt;br /&gt;
|-&lt;br /&gt;
| conservative || 現在の負荷にあわせて周波数を動的に切り替えます。ondemand よりも段階的に周波数を切り替えます。&lt;br /&gt;
|-&lt;br /&gt;
| schedutil    || スケジューラによって CPU の周波数が選択されます [https://lwn.net/Articles/682391/]、[https://lore.kernel.org/lkml/1614814.usHvZ58O6A@vostro.rjw.lan/]。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
スケーリングドライバによっては、以下のガバナーのうちどれかがデフォルトでロードされます:&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/commit/83345a2f829af62ce6fd4b4fa3a875b8f6560f43 Linux 4.9.5] 以降 では {{ic|schedutil}}&lt;br /&gt;
* Intel CPU で {{ic|intel_pstate}} ドライバを、あるいは AMD CPU で {{ic|amd_pstate}} を使用する場合、内部の {{ic|powersave}} ガバナー (上記のノートを参照、{{ic|schedutil}} と等価です)。&lt;br /&gt;
&lt;br /&gt;
{{Warning|デフォルトのガバナーを変更する場合は、CPU 監視ツールを使用してください (温度や電圧など)。}} &lt;br /&gt;
&lt;br /&gt;
特定のガバナーをアクティブ化するには、以下のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # cpupower frequency-set -g &#039;&#039;governor&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 単一の CPU コアだけを調整するには、上のコマンドに {{ic|-c &#039;&#039;core_number&#039;&#039;}} を加えて下さい。&lt;br /&gt;
* ガバナーを有効にするには、特定の[[カーネルモジュール]] ({{ic|cpufreq_&#039;&#039;governor&#039;&#039;}}) がロードされている必要があります。カーネル 3.4 現在、これらのモジュールは自動的にロードされます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
もしくは、CPU ごとにガバナーを手動で有効にすることもできます:&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;&#039;governor&#039;&#039; | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor&lt;br /&gt;
&lt;br /&gt;
{{Tip|CPU の速度をリアルタイムで表示するには、次を実行してください:&lt;br /&gt;
 $ watch cat /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_cur_freq&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ondemand ガバナーを調整する ===&lt;br /&gt;
&lt;br /&gt;
詳細は[https://docs.kernel.org/admin-guide/pm/cpufreq.html#ondemand カーネルドキュメント]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 閾値を切り替える ====&lt;br /&gt;
&lt;br /&gt;
周波数を上げるときの閾値を設定するには:&lt;br /&gt;
&lt;br /&gt;
 # echo -n &#039;&#039;percent&#039;&#039; &amp;gt; /sys/devices/system/cpu/cpufreq/&#039;&#039;governor&#039;&#039;/up_threshold&lt;br /&gt;
&lt;br /&gt;
周波数を下げるときの閾値を設定するには:&lt;br /&gt;
&lt;br /&gt;
 # echo -n &#039;&#039;percent&#039;&#039; &amp;gt; /sys/devices/system/cpu/cpufreq/&#039;&#039;governor&#039;&#039;/down_threshold&lt;br /&gt;
&lt;br /&gt;
==== サンプリングレート ====&lt;br /&gt;
&lt;br /&gt;
サンプリングレートは、CPU の周波数を変化させるのにガバナーが確認する頻度を決めます。1 より大きく {{ic|sampling_down_factor}} を設定すると負担評価のオーバーヘッドが減って、負担が高い時に CPU がずっと最高周波数で動作しパフォーマンスが向上します。{{ic|sampling_down_factor}} に設定できる値は 1 から 100000 です。CPU 周波数や負担が低いときの挙動には影響がありません。&lt;br /&gt;
&lt;br /&gt;
値を読み取るには (デフォルト = 1)、次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor&lt;br /&gt;
&lt;br /&gt;
値を設定するには、次を実行:&lt;br /&gt;
&lt;br /&gt;
 # echo -n &#039;&#039;value&#039;&#039; &amp;gt; /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor&lt;br /&gt;
&lt;br /&gt;
==== 変更を永続化させる ====&lt;br /&gt;
&lt;br /&gt;
Linux 5.9 から、{{ic|cpufreq.default_governor}} カーネルオプションを設定することが可能になりました。[https://kernelnewbies.org/Linux_5.9#CPU_Frequency_scaling] スケーリングパラメータをブート時に設定するには、[[#cpupower|cpupower]] ユーティリティを設定して、cpupower の systemd サービスを有効化してください。あるいは、[[systemd-tmpfiles]] や [[udev]] ルールを使用することもできます。&lt;br /&gt;
&lt;br /&gt;
== 自律的な周波数スケーリング ==&lt;br /&gt;
&lt;br /&gt;
Intel と AMD は両方とも、(1) システムのパフォーマンスの範囲と、(2) プリファレンスを指定するパフォーマンス/電力のヒントに基づいて CPU に自身の速度を決定させる方法を定義しています。以下の場合に完全自律モードがアクティブ化されます:&lt;br /&gt;
&lt;br /&gt;
* {{ic|amd_pstate}} が &amp;quot;active&amp;quot; に設定された場合。CPU と BIOS の&#039;&#039;両方&#039;&#039;に CPPC サポートが必要です。&lt;br /&gt;
* {{ic|intel_pstate}} が &amp;quot;active&amp;quot; に設定され、&#039;&#039;かつ&#039;&#039;、ハードウェア P-state (HWP) が利用可能である (つまり、Sandy Bridge 以降) 場合。設定無しで動作します。&lt;br /&gt;
&lt;br /&gt;
能動的な governing の最も重要な特徴は、2つのガバナー ({{ic|powersave}} と {{ic|performance}}) のみが利用可能であるように見えることです。これらは通常のガバナーのようには動作しません。これらのレベルは、CPU の内部ガバナーの &#039;&#039;Energy Performance Preference&#039;&#039; ヒントに変換されます。結果として、これらは両方、動的スケーリングを提供します。{{ic|schedutil}} や {{ic|ondemand}} に似ていますが、主にレイテンシが異なります。{{ic|performance}} アルゴリズムは、Intel HWP に[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTM3NDQ 古い ondemand ガバナーよりも優れた省電力機能を提供するはずです]。&lt;br /&gt;
&lt;br /&gt;
=== Intel active、非 HWP ===&lt;br /&gt;
&lt;br /&gt;
紛らわしいことに、intel-pstate ドライバには、CPU の能動的な決定を必要としない &amp;quot;active&amp;quot; モードがあります。カーネルコマンドラインによって &amp;quot;active&amp;quot; モードが強制されたが、HWP が利用できないか無効化されている場合に、このモードはオンになります。{{ic|powersave}} と {{ic|performance}} しか提供しませんが、ドライバ自体は {{ic|schedutil}} や {{ic|performance}} に似た方法で governing を行います (つまり、最大の P-state のままになります)。能動的な intel-pstate に比べて、このモードに実際の利点はありません。&lt;br /&gt;
&lt;br /&gt;
=== EPP を設定する ===&lt;br /&gt;
&lt;br /&gt;
sysfs インターフェイスが利用可能である場合、中間的なヒントを選択することができます。インターフェイスは AMD と Intel で同じです。{{ic|/sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference}} ファイルは現在のプリファレンスを記述し、{{ic|/sys/devices/system/cpu/cpu*/cpufreq/energy_performance_available_preferences}} は利用可能なプリファレンスのリストを提供します。また、0 (パフォーマンス優先) から 255 (省電力優先) までの間の数値を渡すことができます。EPP がない Intel CPU にはフォールバック実装が提供されています。文字列 を EPB レベル (次のセクションで説明) に変換しますが、数値では失敗します。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|x86_energy_perf_policy}} は、Intel CPU に対して&#039;&#039;のみ&#039;&#039;、{{ic|--hwp-epp}} スイッチによる EPP ヒントの設定をサポートしています。これは、Intel と AMD で異なるマシン固有のレジスタ (MSR) への直接アクセスにより機能します。このプログラムは、周波数乗数の範囲を使って HWP 周波数の範囲を制限することもできます。&lt;br /&gt;
&lt;br /&gt;
{{man|8|x86_energy_perf_policy}} でハードウェア P-State を有効にするには:&lt;br /&gt;
&lt;br /&gt;
 # x86_energy_perf_policy -H 1&lt;br /&gt;
 # x86_energy_perf_policy -U 1&lt;br /&gt;
&lt;br /&gt;
== Collaborative processor performance control ==&lt;br /&gt;
&lt;br /&gt;
最近の CPU の電力消費量は、もはや単純に周波数や電圧設定に依存していません。必要に応じて切り替え可能なモジュールが存在しているからです。Collaborative Processor Performance Control (CPPC) は、ACPI 5.0 で提供されている P-state の置き換えです。静的な周波数レベルのテーブルを定義する代わりに、プロセッサは多くの抽象的な&#039;&#039;パフォーマンスレベル&#039;&#039;を提供し、オペレーティングシステムはこれらのレベルの中から選択します。これには2つの長所があります:&lt;br /&gt;
&lt;br /&gt;
* 16個の P-state エントリという制限がない。典型的な CPU では数百ものレベルの中から選ぶことができます。&lt;br /&gt;
* CPU は、特定の部品 (例えば、ベクトル FPU) が使用されていない時に、より高い周波数を提供できます。&lt;br /&gt;
&lt;br /&gt;
一方、柔軟な周波数は、{{ic|schedutil}} による高速な周波数変更において重要な周波数不変の使用率追跡を破壊します。CPPC において周波数を静的にするために多くのベンダ固有の方法が取られてきましたが、ほとんどの成功例は arm64 におけるものです。&lt;br /&gt;
&lt;br /&gt;
{{ic|cppc_cpufreq}} は汎用の CPPC スケーリングドライバです。{{ic|amd_pstate}} も、Zen 3 MSR が利用できない場合に、ACPI CPPC を使用して CPU の周波数を管理します。この方法 (&amp;quot;共有メモリ&amp;quot; とも呼ばれる) は、MSR よりも高レイテンシです。&lt;br /&gt;
&lt;br /&gt;
== Intel performance and energy bias hint ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.kernel.org/admin-guide/pm/intel_epb.html Intel performance and energy bias hint (EPB)] は、ユーザスペースが電力とパフォーマンスのトレードオフを自由に指定できるようにするための Intel CPU によって提供されているインターフェイスです。0 (最高のパフォーマンス) から 15 (最高の省電力) のスケールで指定できます。FPB レジスタは、周波数スケーリングとは独立して機能する、パフォーマンス管理のもう一つのレイヤーです。P-state と C-state の選択がどの程度積極的に行われるかに関与し、エネルギー消費量に影響を与える内部のモデル固有の決定に影響を与えます。&lt;br /&gt;
&lt;br /&gt;
以下は一般的な値とそれぞれのエイリアスです (sysfs と {{man|8|x86_energy_perf_policy}} によって認識されます):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EPB 値&lt;br /&gt;
! 文字列&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| performance&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| balance-performance&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| normal, default&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| balance-power&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| power&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== sysfs から設定する ===&lt;br /&gt;
&lt;br /&gt;
EPB は sysfs 属性を用いて設定できます:&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;&#039;epb&#039;&#039; | tee /sys/devices/system/cpu/cpu*/power/energy_perf_bias&lt;br /&gt;
&lt;br /&gt;
=== x86_energy_perf_policy から設定する ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|x86_energy_perf_policy}} を使って:&lt;br /&gt;
&lt;br /&gt;
 # x86_energy_perf_policy --epb &#039;&#039;epb&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== cpupower から設定する ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|cpupower}} を使って:&lt;br /&gt;
&lt;br /&gt;
 # cpupower set -b &#039;&#039;epb_value&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|cpupower は文字列エイリアスをサポートしていません。文字列が与えられた場合、何も言わずに EPB を 0 (最高パフォーマンス) に設定してしまいます。}}&lt;br /&gt;
&lt;br /&gt;
== ACPI イベントとの対話 ==&lt;br /&gt;
&lt;br /&gt;
AC アダプタを接続したときやノートパソコンのフタを閉じたときなど様々な ACPI イベントによってガバナーを自動的に切り替えるように設定することができます。簡単なサンプルは下にありますが、[[acpid]] の記事は全部読む価値があります。&lt;br /&gt;
&lt;br /&gt;
イベントは {{ic|/etc/acpi/handler.sh}} で定義します。{{Pkg|acpid}} パッケージがインストールされていれば、ファイルは既に存在し実行可能になっているはずです。例えば、AC アダプタが切断されたときにスケーリング governor を {{ic|performance}} から {{ic|conservative}} に変更して、またアダプタが接続されたときは戻したい場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/acpi/handler.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
ac_adapter)&lt;br /&gt;
    case &amp;quot;$2&amp;quot; in&lt;br /&gt;
        AC*)&lt;br /&gt;
            case &amp;quot;$4&amp;quot; in&lt;br /&gt;
                00000000)&lt;br /&gt;
                    echo &amp;quot;conservative&amp;quot; &amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor    &lt;br /&gt;
                    echo -n $minspeed &amp;gt;$setspeed&lt;br /&gt;
                    #/etc/laptop-mode/laptop-mode start&lt;br /&gt;
                ;;&lt;br /&gt;
                00000001)&lt;br /&gt;
                    echo &amp;quot;performance&amp;quot; &amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
                    echo -n $maxspeed &amp;gt;$setspeed&lt;br /&gt;
                    #/etc/laptop-mode/laptop-mode stop&lt;br /&gt;
                ;;&lt;br /&gt;
            esac&lt;br /&gt;
        ;;&lt;br /&gt;
        *) logger &amp;quot;ACPI action undefined: $2&amp;quot; ;;&lt;br /&gt;
    esac&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== BIOS の周波数制限 ===&lt;br /&gt;
&lt;br /&gt;
CPU/BIOS 設定によっては最大周波数までスケールすることができなかったり周波数を上げることが全くできなかったりすることがあります。これは大抵 BIOS イベントが OS に周波数を制限するよう通知しているのが原因であり、結果的に {{ic|/sys/devices/system/cpu/cpu0/cpufreq/bios_limit}} が低い値に設定されます。&lt;br /&gt;
&lt;br /&gt;
BIOS のセットアップユーティリティで特定の設定 (Frequency、Thermal Management など) をしたのに変更できない場合、BIOS にバグが存在したり、BIOS 自体のバージョンが古いのかもしれません。または BIOS に何か理由があって CPU の周波数を制限しているということもあります。&lt;br /&gt;
&lt;br /&gt;
そのような理由として、バッテリーが取り除かれた (またはほとんど死んでいる) ことで AC 電源しか使えないようになっているのが原因だということがあります (使用しているマシンがノートパソコンの場合)。この場合、電力が弱い AC 電源だけではピーク性能を発揮するのに十分な電力が供給されておらず、バッテリーの補助がないとデータを喪失したり、破損したり、または最悪の場合ハードウェアに深刻なダメージを与える可能性があります。&lt;br /&gt;
&lt;br /&gt;
全ての BIOS が CPU 周波数を制限するわけではありませんが、例えば IBM/Lenovo のほとんどの Thinkpad は制限を加えます。詳しくは thinkwiki の[https://www.thinkwiki.org/wiki/Problem_with_CPU_frequency_scaling トピック]を参照して下さい。&lt;br /&gt;
&lt;br /&gt;
変な BIOS の設定がないことを確認して、何をするのかちゃんと理解できているのなら、BIOS の制限を無視するようにカーネルを設定することができます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* このセクションをよく読んで理解してください。CPU 周波数の制限は BIOS のセーフティ機能であり、それを回避する必要は絶対ではありません。&lt;br /&gt;
* この方法は&#039;&#039;&#039;推奨されておらず&#039;&#039;&#039;、ハードウェアに深刻なダメージを負わせる可能性があります。自己責任で行ってください。[https://github.com/syscl/CPUTune]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=processor.ignore_ppc=1}} [[カーネルパラメータ]]を設定してください。一時的に変更してみたいときは {{ic|/sys/module/processor/parameters/ignore_ppc}} の値を {{ic|0}} から {{ic|1}} に変更してください。&lt;br /&gt;
&lt;br /&gt;
一部のシステムは CPU 周波数の制限に他のメカニズムを使用します (例えば、バッテリー無しで動作している場合や公式でない電源アダプタを使用している場合)。Intel CPU で BD PROCHOT ビットを操作する方法は [[Lenovo ThinkPad T480#CPU stuck at minimum frequency]]{{Broken section link}} を、他の修正方法は [[Dell XPS 15 (9560)#General slowness &amp;amp; stuttering]] {{Broken section link}}を参照してください。これは Lenovo ThinkPad T480 に限らず、XPS15 9550 や XPS15 9560 といった Dell XPS モデルにも共通の問題です。このビットは、一部の Intel ベースの MacBook でも、バッテリーが接続されていない場合に CPU 周波数を最小にします。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.kernel.org/cpu-freq/index.html Linux CPUFreq - カーネルドキュメント]&lt;br /&gt;
* [https://www.reddit.com/r/linux/comments/1hdogn/acpi_cpufreq_or_intel_pstates/ pstate に関する Reddit の投稿]&lt;br /&gt;
* [https://docs.kernel.org/admin-guide/pm/cpufreq.html#frequency-boost-support プロセッサのブースト制御]&lt;br /&gt;
* [https://docs.kernel.org/admin-guide/pm/intel_pstate.html intel_pstate カーネルドキュメント]&lt;br /&gt;
* [https://docs.kernel.org/admin-guide/pm/amd-pstate.html amd_pstate カーネルドキュメント]&lt;br /&gt;
* [https://linrunner.de/tlp/settings/processor.html intel_pstate/intel_cpufreq ドキュメント kernel 5.7+]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|CPU frequency scaling|2025-06-28|836952}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA/%E3%83%92%E3%83%B3%E3%83%88%E3%81%A8%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF&amp;diff=40472</id>
		<title>NVIDIA/ヒントとテクニック</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA/%E3%83%92%E3%83%B3%E3%83%88%E3%81%A8%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF&amp;diff=40472"/>
		<updated>2025-06-28T08:07:21Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[Category:X サーバー]]&lt;br /&gt;
[[en:NVIDIA/Tips and tricks]]&lt;br /&gt;
[[ru:NVIDIA/Tips and tricks]]&lt;br /&gt;
[[zh-hans:NVIDIA/提示和技巧]]&lt;br /&gt;
メインの記事は [[NVIDIA]] です。&lt;br /&gt;
&lt;br /&gt;
== ターミナルの解像度を修正する ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA#fbdev]] がデフォルトで有効であるため、[[Linux コンソール]]は追加の設定無しでモニタのネイティブな解像度を使用するはずです。&lt;br /&gt;
&lt;br /&gt;
{{ic|fbdev}} を無効化していたり、古いドライバを使用していたりする場合は、解像度が予想より小さい場合があります。回避策として、[[ブートローダー]]の設定で解像度を設定することができます。&lt;br /&gt;
&lt;br /&gt;
GRUB を使用している場合、[[GRUB/ヒントとテクニック#フレームバッファの解像度を設定する]]を見てください。&lt;br /&gt;
&lt;br /&gt;
[[systemd-boot]] を使用している場合、{{ic|&#039;&#039;esp&#039;&#039;/loader/loader.conf}} 内で {{ic|console-mode}} を設定してください。詳しくは [[systemd-boot#ローダー設定]] をご覧ください。[https://forums.fedoraforum.org/showthread.php?t=306271] [https://web.archive.org/web/20170405115954/https://www.reddit.com/r/archlinux/comments/4gwukx/nvidia_drivers_and_high_resolution_tty_possible/]&lt;br /&gt;
&lt;br /&gt;
[[rEFInd]] を使用している場合、{{ic|&#039;&#039;esp&#039;&#039;/EFI/refind/refind.conf}} で {{ic|use_graphics_for +,linux}} を設定してください。ちょっとした注意事項としては、これによりブート中にカーネルパラメータが表示されなくなります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|上記の方法でターミナルの解像度を修正できない場合、UEFI の設定で Legacy BIOS モード (しばしば、Compatibility Support Module、CSM、Legacy Boot と呼ばれます) を完全に無効化する必要があるかもしれません。無効化する前に、すべてのデバイスが UEFI ブートを使用するように設定されていることを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
== TV 出力を使う ==&lt;br /&gt;
&lt;br /&gt;
[[Wikibooks:NVIDIA/TV-OUT]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== X で TV (DFP) を唯一のディスプレイとして使う ==&lt;br /&gt;
&lt;br /&gt;
モニターが自動的に検出されない場合、X サーバーは何かしらのデフォルトの解像度 (通常であれば 640x480) にフォールバックします。これは、DVI/HDMI/DisplayPort 接続の TV をメインディスプレイとして使用していて TV がオフまたは切断されているときに X が起動すると問題になります。&lt;br /&gt;
&lt;br /&gt;
NVIDIA に正しい解像度を強制するには、EDID のコピーをファイルシステムのどこかに保存して、X がディスプレイから EDID を読み込まずにそのファイルをパースできるようにします。&lt;br /&gt;
&lt;br /&gt;
EDID を取得するには、{{ic|nvidia-settings}} を起動します。ツリー形式で情報が表示されますが、今は設定は無視して GPU を選択し (対応するエントリは &#039;&#039;GPU-0&#039;&#039; などのような名前であるはずです)、&#039;&#039;DFP&#039;&#039; セクションをクリックして (&#039;&#039;DFP-0&#039;&#039; などのような名前です)、&#039;&#039;Acquire Edid...&#039;&#039; ボタンをクリックしてファイルをどこかに保存してください (例: {{ic|/etc/X11/dfp0.edid}})。&lt;br /&gt;
&lt;br /&gt;
フロントエンドにマウスやキーボードが接続されていない場合、コマンドラインを使って EDID を取得することもできます。EDID ブロックも出力するように引数を指定して X サーバーを起動します:&lt;br /&gt;
&lt;br /&gt;
 $ startx -- -logverbose 6&lt;br /&gt;
&lt;br /&gt;
X サーバーが初期化を完了したら、サーバーを閉じ、&#039;&#039;nvidia-xconfig&#039;&#039; を使って [[Xorg#一般|Xorg のログファイル]]から EDID ブロックを抽出してください:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-xconfig --extract-edids-from-file ~/.local/share/xorg/Xorg.0.log --extract-edids-output-file ./dfp0.bin&lt;br /&gt;
&lt;br /&gt;
Xorg の設定で以下を {{ic|Device}} セクションに追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-nvidia.conf|&lt;br /&gt;
Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
Option &amp;quot;CustomEDID&amp;quot; &amp;quot;DFP-0:/etc/X11/dfp0.bin&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ConnectedMonitor}} オプションはドライバーに強制的に DFP を認識させます。{{ic|CustomEDID}} にはデバイスの EDID データを指定してください。TV/DFP が接続されているかのように X が起動するようになります。&lt;br /&gt;
&lt;br /&gt;
ブート時に自動的にディスプレイマネージャを起動して適切な X ディスプレイが設定されてから TV の電源を入れることができます。&lt;br /&gt;
&lt;br /&gt;
== ヘッドレス (モニターなし) 解像度 ==&lt;br /&gt;
&lt;br /&gt;
ヘッドレスモードでは解像度は VNC や Steam Link で利用される 640x480 に落ちます。より高い解像度(例えば、1920x1080)で開始するには、{{ic|xorg.conf}} 内の {{ic|Screen}} サブセクションの下にある {{ic|Virtual}} エントリ で指定します:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    [...]&lt;br /&gt;
    SubSection     &amp;quot;Display&amp;quot;&lt;br /&gt;
        Depth       24&lt;br /&gt;
        Virtual     1920 1080&lt;br /&gt;
    EndSubSection&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
{{Tip|ヘッドレスモードは扱いづらく、エラーが発生しがちかもしれません。例えば、ヘッドレスモードではデスクトップ環境や {{Pkg|nvidia-utils}} は解像度を変更するためのグラフィカルな手段を提供しません。解像度の設定を容易にするためには、ポートにモニターが接続されているように見せかける、ダミーの DP や HDMI アダプターを使うことができます。そうすれば、VNC や Steam Link のようなリモートセッションを使って、解像度を普通に変更できます。}}&lt;br /&gt;
&lt;br /&gt;
== 電源を確認 ==&lt;br /&gt;
&lt;br /&gt;
NVIDIA の X.org ドライバーを使って GPU の現在の電源を検出することもできます。現在の電源を表示するには、読み取り専用パラメータの &#039;GPUPowerSource&#039; をチェックしてください (0 - AC, 1 - バッテリー):&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q GPUPowerSource -t|1}}&lt;br /&gt;
&lt;br /&gt;
== ACPI イベントを Listen する ==&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバーは自動的に [[acpid]] デーモンに接続して、バッテリー電源やドッキング、ホットキーなどの ACPI イベントを listen します。接続が失敗した場合、X.org は以下のような警告を出力します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.local/share/xorg/Xorg.0.log|&lt;br /&gt;
NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon&lt;br /&gt;
NVIDIA(0):     may not be running or the &amp;quot;AcpidSocketPath&amp;quot; X&lt;br /&gt;
NVIDIA(0):     configuration option may not be set correctly.  When the&lt;br /&gt;
NVIDIA(0):     ACPI event daemon is available, the NVIDIA X driver will&lt;br /&gt;
NVIDIA(0):     try to use it to receive ACPI event notifications.  For&lt;br /&gt;
NVIDIA(0):     details, please see the &amp;quot;ConnectToAcpid&amp;quot; and&lt;br /&gt;
NVIDIA(0):     &amp;quot;AcpidSocketPath&amp;quot; X configuration options in Appendix B: X&lt;br /&gt;
NVIDIA(0):     Config Options in the README.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の警告は完全に無害ですが、{{ic|/etc/X11/xorg.conf.d/20-nvidia.conf}} で {{ic|ConnectToAcpid}} オプションを無効にすることでメッセージを消すことができます:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
   ...&lt;br /&gt;
   Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
   Option &amp;quot;ConnectToAcpid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
   ...&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
ノートパソコンを使っている場合、代わりに [[acpid]] デーモンをインストールして有効化すると良いかもしれません。&lt;br /&gt;
&lt;br /&gt;
== GPU の温度をシェルに表示する ==&lt;br /&gt;
&lt;br /&gt;
GPU の温度を確認する方法は3つあります。&#039;&#039;nvidia-settings&#039;&#039; は X を使用する必要があります。X を使っていない場合は &#039;&#039;nvidia-smi&#039;&#039; や &#039;&#039;nvclock&#039;&#039; による方法を使って下さい。また、&#039;&#039;nvclock&#039;&#039; は GeForce 200 シリーズのカードや Zotac IONITX の 8800GS などの内蔵 GPU など新しい NVIDIA カードでは機能しません。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-settings ===&lt;br /&gt;
&lt;br /&gt;
GPU の温度をシェルに表示するには、以下のように &#039;&#039;nvidia-settings&#039;&#039; を使って下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q gpucoretemp|&lt;br /&gt;
  Attribute &#039;GPUCoreTemp&#039; (hostname:0[gpu:0]): 49.&lt;br /&gt;
    &#039;GPUCoreTemp&#039; is an integer attribute.&lt;br /&gt;
    &#039;GPUCoreTemp&#039; is a read-only attribute.&lt;br /&gt;
    &#039;GPUCoreTemp&#039; can use the following target types: GPU.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の場合、ボードの GPU 温度は 49 °C になります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;rrdtool&#039;&#039; や &#039;&#039;conky&#039;&#039; などのユーティリティで使うために温度だけを表示したいときは:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q gpucoretemp -t|49}}&lt;br /&gt;
&lt;br /&gt;
=== nvidia-smi ===&lt;br /&gt;
&lt;br /&gt;
X を全く使わず (例: Wayland を実行している場合やヘッドレスサーバの場合) GPU から直接温度を読み込むことができる &#039;&#039;nvidia-smi&#039;&#039; を使います。&lt;br /&gt;
&lt;br /&gt;
GPU の温度をシェルに表示するには、&#039;&#039;nvidia-smi&#039;&#039; を使って下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-smi|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Wed Feb 28 14:27:35 2024&lt;br /&gt;
+-----------------------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 550.54.14              Driver Version: 550.54.14      CUDA Version: 12.4     |&lt;br /&gt;
|-----------------------------------------+------------------------+----------------------+&lt;br /&gt;
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                                         |                        |               MIG M. |&lt;br /&gt;
|=========================================+========================+======================|&lt;br /&gt;
|   0  NVIDIA GeForce GTX 1660 Ti     Off |   00000000:01:00.0  On |                  N/A |&lt;br /&gt;
|  0%   49C    P8              9W /  120W |     138MiB /   6144MiB |      2%      Default |&lt;br /&gt;
|                                         |                        |                  N/A |&lt;br /&gt;
+-----------------------------------------+------------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+-----------------------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                                              |&lt;br /&gt;
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |&lt;br /&gt;
|        ID   ID                                                               Usage      |&lt;br /&gt;
|=========================================================================================|&lt;br /&gt;
|    0   N/A  N/A    223179      G   weston                                        120MiB |&lt;br /&gt;
+-----------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
温度だけ見るには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-smi -q -d TEMPERATURE|2=&lt;br /&gt;
==============NVSMI LOG==============&lt;br /&gt;
&lt;br /&gt;
Timestamp                                 : Wed Feb 28 14:27:35 2024&lt;br /&gt;
Driver Version                            : 550.54.14&lt;br /&gt;
CUDA Version                              : 12.4&lt;br /&gt;
&lt;br /&gt;
Attached GPUs                             : 1&lt;br /&gt;
GPU 00000000:01:00.0&lt;br /&gt;
    Temperature&lt;br /&gt;
        GPU Current Temp                  : 49 C&lt;br /&gt;
        GPU T.Limit Temp                  : N/A&lt;br /&gt;
        GPU Shutdown Temp                 : 95 C&lt;br /&gt;
        GPU Slowdown Temp                 : 92 C&lt;br /&gt;
        GPU Max Operating Temp            : 90 C&lt;br /&gt;
        GPU Target Temperature            : 83 C&lt;br /&gt;
        Memory Current Temp               : N/A&lt;br /&gt;
        Memory Max Operating Temp         : N/A&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;rrdtool&#039;&#039; や &#039;&#039;conky&#039;&#039; などのユーティリティで使うために温度だけを取得したいときは:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits|2=49}}&lt;br /&gt;
&lt;br /&gt;
=== nvclock ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|nvclock}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;nvclock&#039;&#039; は Geforce 200 シリーズなどの新しい NVIDIA カードの温度センサーにはアクセスできません。}}&lt;br /&gt;
&lt;br /&gt;
たまに &#039;&#039;nvclock&#039;&#039; と &#039;&#039;nvidia-settings&#039;&#039;/&#039;&#039;nv-control&#039;&#039; が報告する温度が食い違うことがあります。&#039;&#039;nvclock&#039;&#039; の作者 (thunderbird) による [https://sourceforge.net/projects/nvclock/forums/forum/67426/topic/1906899 この投稿] によると、&#039;&#039;nvclock&#039;&#039; の値のほうが正確なようです。&lt;br /&gt;
&lt;br /&gt;
== オーバークロックと冷却 ==&lt;br /&gt;
&lt;br /&gt;
{{Warning| オーバークロックによってハードウェアに永久的な損傷が発生するかもしれません。警告しましたよ。}}&lt;br /&gt;
&lt;br /&gt;
=== nvidia-settings からオーバークロックを有効化する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* rootless モードで Xorg サーバを実行している場合、一部のオーバークロックの設定は適用できません。[[Xorg#root として Xorg を実行|Xorg を root として実行]]することを検討してください。&lt;br /&gt;
* &#039;&#039;nvidia-settings&#039;&#039; は root として実行する必要があるかもしれません。&lt;br /&gt;
* DRM カーネルモードセッティングを有効にすると Coolbits の値に関わらずオーバークロックができなくなる場合があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ドライバのバージョンによっては、一部のオーバークロック機能がデフォルトで有効になっています。一部のサポートされていないオーバークロック機能は {{ic|Device}} セクションで &#039;&#039;Coolbits&#039;&#039;  オプションで有効化する必要があります:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;Coolbits&amp;quot; &amp;quot;&#039;&#039;値&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Tip| &#039;&#039;Coolbits&#039;&#039; オプションは、Xorg の設定ファイルを操作する &#039;&#039;nvidia-xconfig&#039;&#039; を使って簡単に設定できます: {{bc|1=# nvidia-xconfig --cool-bits=&#039;&#039;value&#039;&#039;}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Coolbits&#039;&#039; の値は2進数の構成ビットを足し合わせたものです。構成ビットは以下のとおりです:&lt;br /&gt;
&lt;br /&gt;
* {{ic|8}} (ビット3) - &#039;&#039;nvidia-settings&#039;&#039; の &#039;&#039;PowerMizer&#039;&#039; ページの追加のオーバークロック機能を有効化します。Fermi や Fermi より新しいアーキテクチャでバージョン 337.12 から利用可能です。[https://www.phoronix.com/scan.php?px=MTY1OTM&amp;amp;page=news_item]&lt;br /&gt;
* {{ic|16}} (ビット4) - &#039;&#039;nvidia-settings&#039;&#039; の CLI のオプションを使ってオーバーボルテージできるようにします。Fermi や Fermi より新しいアーキテクチャでバージョン 346.16 から利用可能です。[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTg0MDI]&lt;br /&gt;
&lt;br /&gt;
サポートされていないバージョンのドライバを使用している場合は、以下のビットも使用する必要があるかもしれません:&lt;br /&gt;
&lt;br /&gt;
* {{ic|1}} (ビット0) - &#039;&#039;nvidia-settings&#039;&#039; の &#039;&#039;Clock Frequencies&#039;&#039; ページで古い(Fermi以前)コアをオーバークロックできるようにします。バージョン 343.13 で削除されました。&lt;br /&gt;
* {{ic|2}} (ビット1) - このビットがセットされると、ドライバは「ビデオメモリの容量が異なる複数の GPU を使用するときに SLI の初期化を試みます。」バージョン 470.42.01 で削除されました。&lt;br /&gt;
* {{ic|4}} (ビット2) - &#039;&#039;nvidia-settings&#039;&#039; の &#039;&#039;Thermal Monitor&#039;&#039; ページで GPU ファンの速度を手動設定できるようにします。バージョン 470.42.01 で削除されました。&lt;br /&gt;
&lt;br /&gt;
複数の機能を有効化するには &#039;&#039;Coolbits&#039;&#039; の値に上記の値を足し合わせてください。例えば、Fermi コアのオーバークロックとオーバーボルテージを有効化する場合は {{ic|Option &amp;quot;Coolbits&amp;quot; &amp;quot;24&amp;quot;}} をセットします。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Coolbits&#039;&#039; に関するドキュメントは {{ic|/usr/share/doc/nvidia/html/xconfigoptions.html}} と[https://download.nvidia.com/XFree86/Linux-x86_64/565.77/README/xconfigoptions.html#Coolbits ここ]にあります。&lt;br /&gt;
&lt;br /&gt;
{{Note| 別の手段としては DOS(推奨) 内から、あるいは [https://www.techpowerup.com/download/nvidia-nvflash/ nvflash] と [https://www.guru3d.com/files-details/nvidia-bios-editor-download-nibitor.html NiBiTor 6.0] を Win32 環境内で使って、GPU BIOS を編集しリフラッシュするというものがあります。BIOS をフラッシュする利点は電圧制限を上げられることだけでなく、一般に Coolbit のようなソフトウェアオーバークロッキングの方法で安定性が向上することです。[https://ivanvojtko.blogspot.sk/2014/03/how-to-overclock-geforce-460gtx-fermi.html Fermi BIOS modification tutorial]}}&lt;br /&gt;
&lt;br /&gt;
=== 静的な 2D/3D クロックを設定する ===&lt;br /&gt;
&lt;br /&gt;
[[カーネルモジュールパラメータ]]を使用して PowerMizer を最大パフォーマンスレベルで有効化してください (この設定がないと VSync が機能しません):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/nvidia.conf|2=&lt;br /&gt;
options nvidia NVreg_RegistryDwords=&amp;quot;PerfLevelSrc=0x2222&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== GPU のブーストクロックを下げる ===&lt;br /&gt;
&lt;br /&gt;
[https://nouveau.freedesktop.org/CodeNames.html#NV140 Volta (NV140/GVXXX)] GPU 及びそれ以降では、クロックブーストが異なる方法で動作します。最大クロックはブート時に、サポートされている最も高い制限値に設定されます。これが望ましい動作である場合は、設定は必要ありません。&lt;br /&gt;
&lt;br /&gt;
これの欠点は、電力効率が低いことです。クロックが上がると、安定性のために電圧を上げる必要があります。その結果として、電力消費量、発熱、ファンの音量が非線形的に増加します。なので、ブーストクロックの制限を下げることで、電力効率を上げることができます。&lt;br /&gt;
&lt;br /&gt;
ブーストクロックの制限は nvidia-smi を使用して変更できます:&lt;br /&gt;
&lt;br /&gt;
* サポートされているクロックレートを表示: {{bc|$ nvidia-smi -q -d SUPPORTED_CLOCKS}}&lt;br /&gt;
* GPU のブーストクロックの制限を 1695 MHz に設定: {{bc|1=# nvidia-smi --lock-gpu-clocks=0,1695 --mode=1}}&lt;br /&gt;
* メモリのブーストクロックの制限を 5001 MHz に設定: {{bc|1=# nvidia-smi --lock-memory-clocks=0,5001}}&lt;br /&gt;
&lt;br /&gt;
電力効率の最適化をするには、ゲームをプレイしながら nvidia-smi で GPU 使用率を確認してください。VSync はオンにしておく必要があります。ブーストクロックの制限を下げると、GPU 使用率が増加します。遅い GPU では、各フレームを描画するのにより長い時間がかかるからです。GPU 使用率が 100% になり、かつ、カクつきが発生しない程度にまでクロックを下げれば、効率は最大になります。このとき、各フレームはリフレッシュレートを維持するのにちょうど十分なほど高速に描画できていることになります。&lt;br /&gt;
&lt;br /&gt;
例として、RTX 3090 Ti でデフォルトから上記の設定に変更した場合、Hitman 3 を 4K 60 FPS でプレイしたところ、電力消費量が 30% 減少し、温度は 75 度から 63 度に、ファンの速度は 73% から 57% に低下しました。&lt;br /&gt;
&lt;br /&gt;
=== オーバークロックの設定を保存する ===&lt;br /&gt;
&lt;br /&gt;
通常、&#039;&#039;nvidia-settings&#039;&#039; インターフェイスで設定したクロックと電圧のオフセットは保存されず、再起動すると消えてしまいます。幸い、プロプライエタリドライバにおいてオーバークロック用のインターフェイスを提供し、ユーザのオーバークロック設定を保存することが可能で、起動時に自動的に設定を適用するツールがあります。以下にその一部を挙げます:&lt;br /&gt;
&lt;br /&gt;
* {{AUR|gwe}} - グラフィカル。デスクトップセッションの開始時に設定を適用します。&lt;br /&gt;
* {{AUR|nvclock}} と {{AUR|systemd-nvclock-unit}} - グラフィカル。システムの起動時に設定を適用します。&lt;br /&gt;
* {{AUR|nvoc}} - テキストベース。プロファイルは {{ic|/etc/nvoc.d/}} 下の設定ファイルです。デスクトップセッション開始時に設定を適用します。&lt;br /&gt;
&lt;br /&gt;
あるいは、{{ic|GPUGraphicsClockOffset}} 属性と {{ic|GPUMemoryTransferRateOffset}} 属性を[[自動起動|起動時に]] &#039;&#039;nvidia-settings&#039;&#039; のコマンドラインインターフェイスでセットすることができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-settings -a &amp;quot;GPUGraphicsClockOffset[&#039;&#039;performance_level&#039;&#039;]=&#039;&#039;offset&#039;&#039;&amp;quot;&lt;br /&gt;
 $ nvidia-settings -a &amp;quot;GPUMemoryTransferRateOffset[&#039;&#039;performance_level&#039;&#039;]=&#039;&#039;offset&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;performance_level&#039;&#039;}} は最も高いパフォーマンスレベルとなります。マシンに複数の GPU が存在する場合、GPU ID を指定する必要があります: {{ic|1=[gpu:&#039;&#039;gpu_id&#039;&#039;]GPUGraphicsClockOffset[&#039;&#039;performance_level&#039;&#039;]=&#039;&#039;offset&#039;&#039;}}。&lt;br /&gt;
&lt;br /&gt;
=== カスタムの TDP 制限 ===&lt;br /&gt;
&lt;br /&gt;
最近の NVIDIA グラフィックカードは TDP と温度が制限内に収まるように周波数を調整します。パフォーマンスを上げるために TDP 制限を変更できます。これにより温度が上昇し、電力消費量が増加するでしょう。&lt;br /&gt;
&lt;br /&gt;
例えば、電力制限を 160.30W に設定するには:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-smi -pl 160.30&lt;br /&gt;
&lt;br /&gt;
(ドライバの永続化なしで)電力制限を起動時に設定するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/nvidia-tdp.timer|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Set NVIDIA power limit on boot&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnBootSec=5&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/nvidia-tdp.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Set NVIDIA power limit&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/nvidia-smi -pl 160.30&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|nvidia-tdp.timer}} を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
=== ログイン時にファンの速度を設定する ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|GPU のファン速度を手動設定するには (たとえ Xorg が root として実行されていたとしても) &#039;&#039;nvidia-settings&#039;&#039; を root として実行する必要があるため、以下の方法はうまく行きません。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;nvidia-settings&#039;&#039; のコンソールインターフェイスを使ってグラフィックカードのファンの速度を調整することができます。まず、Xorg 設定の [[#nvidia-settings からオーバークロックを有効化する|Coolbits]] オプションでビット2を有効化していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Note| 現在 GeForce 400/500 シリーズのカードではこの方法を使ってログイン時にファンの速度を設定することはできません。この方法では &#039;&#039;nvidia-settings&#039;&#039; を使って現在の X セッション内でファンのスピードを変更することしかできません。}}&lt;br /&gt;
&lt;br /&gt;
Xorg が起動した時にファンを調整するには以下の行を [[xinitrc]] ファイルに記述します。{{ic|&#039;&#039;n&#039;&#039;}} は設定したいファンの速度のパーセンテージに置き換えて下さい。&lt;br /&gt;
&lt;br /&gt;
 nvidia-settings -a &amp;quot;[gpu:0]/GPUFanControlState=1&amp;quot; -a &amp;quot;[fan:0]/GPUTargetFanSpeed=&#039;&#039;n&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
GPU とファンの番号を増やすことで二番目の GPU を設定することもできます。&lt;br /&gt;
&lt;br /&gt;
 nvidia-settings -a &amp;quot;[gpu:0]/GPUFanControlState=1&amp;quot; -a &amp;quot;[fan:0]/GPUCurrentFanSpeed=&#039;&#039;n&#039;&#039;&amp;quot; \&lt;br /&gt;
                 -a &amp;quot;[gpu:1]/GPUFanControlState=1&amp;quot; -a  [fan:1]/GPUCurrentFanSpeed=&#039;&#039;n&#039;&#039;&amp;quot; &amp;amp;&lt;br /&gt;
&lt;br /&gt;
[[GDM]] や [[KDM]] などのログインマネージャを使用している場合、デスクトップエントリファイルを作成して設定をさせることもできます。{{ic|~/.config/autostart/nvidia-fan-speed.desktop}} を作成してその中に以下のテキストを入力してください。{{ic|&#039;&#039;n&#039;&#039;}} は速度のパーセンテージに置き換えて下さい。&lt;br /&gt;
&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Exec=nvidia-settings -a &amp;quot;[gpu:0]/GPUFanControlState=1&amp;quot; -a &amp;quot;[fan:0]/GPUCurrentFanSpeed=&#039;&#039;n&#039;&#039;&amp;quot;&lt;br /&gt;
 X-GNOME-Autostart-enabled=true&lt;br /&gt;
 Name=nvidia-fan-speed&lt;br /&gt;
&lt;br /&gt;
{{Note|ドライバーのバージョン 349.16 から、{{ic|GPUCurrentFanSpeed}} は {{ic|GPUTargetFanSpeed}} に置き換わっています [https://devtalk.nvidia.com/default/topic/821563/linux/can-t-control-fan-speed-with-beta-driver-349-12/post/4526208/#4526208]。}}&lt;br /&gt;
&lt;br /&gt;
複数のグラフィックカードのファン速度を調整できるようにしたい場合、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-xconfig --enable-all-gpus&lt;br /&gt;
 $ nvidia-xconfig --cool-bits=4&lt;br /&gt;
&lt;br /&gt;
{{Note|一部のラップトップ(ThinkPad [https://devtalk.nvidia.com/default/topic/1052110/linux/can-t-control-gtx-1050-ti-max-q-fan-on-thinkpad-x1-extreme-laptop/post/5340658/#5340658 X1 Extreme] や [https://devtalk.nvidia.com/default/topic/1048624/linux/how-to-set-gpu-fan-speed/post/5321818/#5321818 P51/P52] を含む)においては、2つのファンがあるものの、どちらも nvidia によって制御されません。}}&lt;br /&gt;
&lt;br /&gt;
=== NVML によるシンプルなオーバークロックスクリプト ===&lt;br /&gt;
&lt;br /&gt;
Nvidia Management Library (NVML) は、GPU のコアとメモリのクロックオフセットと電力制限値を管理できる API を提供しています。これを使うには、{{AUR|python-nvidia-ml-py}} をインストールし、以下の Python スクリプトを所望の設定で使用してください。このスクリプトは、起動のたびに root として実行してオーバークロック/低電圧の設定を適用し直す必要があります。&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
from pynvml import *&lt;br /&gt;
&lt;br /&gt;
nvmlInit()&lt;br /&gt;
&lt;br /&gt;
# 調節対象の GPU を指定する。以下でエラーが発生する場合や、複数の GPU が存在する場合、1 に設定するか、他の値を試してください&lt;br /&gt;
myGPU = nvmlDeviceGetHandleByIndex(0)&lt;br /&gt;
&lt;br /&gt;
# 以下の行の &amp;quot;000&amp;quot; の部分を所望の GPU クロックオフセット値に置き換えてください。&lt;br /&gt;
nvmlDeviceSetGpcClkVfOffset(myGPU,000)&lt;br /&gt;
&lt;br /&gt;
# 以下の行の &amp;quot;000&amp;quot; の部分を、所望のメモリクロックオフセット値の「2倍」に置き換えてください。&lt;br /&gt;
# 例えば、オフセットが 500 である場合、以下の行には 1000 と記述してください。&lt;br /&gt;
nvmlDeviceSetMemClkVfOffset(myGPU,000)&lt;br /&gt;
&lt;br /&gt;
# 以下に電力制限値を mW で設定してください。例えば、216W は 216000 (mW) になります。電力制限値を調整したくない場合は以下の行を削除してください。&lt;br /&gt;
nvmlDeviceSetPowerManagementLimit(myGPU, 000000) &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== カーネルモジュールパラメータ ==&lt;br /&gt;
&lt;br /&gt;
一部のオプションはカーネルモジュールパラメータから設定できます。パラメータの完全なリストは {{ic|modinfo nvidia}} を実行するか {{ic|nv-reg.h}} を見てください。[[Gentoo:NVidia/nvidia-drivers/ja#カーネルモジュールのパラメーター]] も見てください。&lt;br /&gt;
&lt;br /&gt;
例えば、以下を有効化すると PAT 機能 [https://docs.kernel.org/arch/x86/pat.html] が有効になります。PAT 機能はメモリの割り当て方に影響を及ぼします。PAT は Pentium III に初めて導入され [https://www.kernel.org/doc/ols/2008/ols2008v2-pages-135-144.pdf]、それよりも新しい CPU の殆どでサポートされています([[wikipedia:Page attribute table#Processors]] を参照)。あなたのシステムでこの機能がサポートされている場合、パフォーマンスが向上するはずです。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/nvidia.conf|2=&lt;br /&gt;
options nvidia NVreg_UsePageAttributeTable=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
一部のノートパソコンでは NVIDIA の設定を有効化するために以下のオプションを含めなければなりません。さもないと &amp;quot;Setting applications clocks is not supported&amp;quot; などと表示されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/nvidia.conf|2=&lt;br /&gt;
options nvidia NVreg_RegistryDwords=&amp;quot;OverrideMaxPerf=0x1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[カーネルモジュール#/etc/modprobe.d/ 内のファイルを使う]] にある通り、[[NVIDIA#DRM カーネルモード設定|early KMS]] を使用している場合は [[Initramfs を再生成する]]必要があります。}}&lt;br /&gt;
&lt;br /&gt;
== サスペンド後にビデオメモリを保持する ==&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、システムのサスペンドと復帰時に NVIDIA の Linux ドライバーは必須のビデオメモリの割り当てのみを保存し復元します。NVIDIA 曰く:&lt;br /&gt;
:結果として生じるビデオメモリの内容の消失は、ユーザスペースの NVIDIA ドライバーや一部のアプリケーションによって部分的に補われます。しかし、電源管理サイクルの終了時にレンダリングの破損やアプリケーションのクラッシュなどの機能不全が発生する可能性があります。&lt;br /&gt;
&lt;br /&gt;
&amp;quot;まだ実験段階の&amp;quot; インターフェイスを使用すれば、(ディスクまたは RAM に十分な領域があれば) ビデオメモリ全てを保存できるようになります。&lt;br /&gt;
&lt;br /&gt;
ビデオメモリの内容を全て保存し復元するようにするには、{{ic|nvidia}} カーネルモジュールに対して {{ic|1=NVreg_PreserveVideoMemoryAllocations=1}} [[カーネルモジュールパラメータ]]を設定する必要があります。NVIDIA はこのパラメータをデフォルトで設定していませんが、一方 Arch Linux では、サポートされているドライバにおいてこのパラメータがデフォルトで設定されており、ビデオメモリはデフォルトで保持されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|NVreg_PreserveVideoMemoryAllocations}} が有効であるかを調べるには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # cat /proc/driver/nvidia/params | sort&lt;br /&gt;
&lt;br /&gt;
{{ic|PreserveVideoMemoryAllocations: 1}} という行と、{{ic|TemporaryFilePath: &amp;quot;/var/tmp&amp;quot;}} という行があるはずです (これらのパラメータについては以下で説明されています)。&lt;br /&gt;
&lt;br /&gt;
サポートされているドライバにおいては、上流の要件通り、必須のサービスである {{ic|nvidia-suspend.service}}、{{ic|nvidia-hibernate.service}}、{{ic|nvidia-resume.service}} はデフォルトで[[有効化]]されています。&lt;br /&gt;
&lt;br /&gt;
詳細は [https://download.nvidia.com/XFree86/Linux-x86_64/565.77/README/powermanagement.html NVIDIA のドキュメント]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|[[NVIDIA#早期ロード|KMS を早期開始]]する場合 (つまり、initramfs の段階で {{ic|nvidia}} モジュールがロードされる場合)、initramfs の時点では、以前のビデオメモリの内容が保存されている {{ic|NVreg_TemporaryFilePath}} にアクセスできません。つまり、ハイバーネートを使用する場合は、KMS の早期開始を使用するべきではありません。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* [[カーネルモジュール#/etc/modprobe.d/ 内のファイルを使う]] にある通り、[[NVIDIA#DRM カーネルモード設定|early KMS]] を使用している場合は [[initramfs を再生成する]]必要があります。&lt;br /&gt;
* 上流のデフォルトでは、ビデオメモリの内容は ([[tmpfs]] である) {{ic|/tmp}} に保存されます。NVIDIA は、最高のパフォーマンスを得るために[https://download.nvidia.com/XFree86/Linux-x86_64/565.77/README/powermanagement.html#PreserveAllVide719f0 他のファイルシステムを使うことを推奨]しています。また、{{ic|/tmp}} のサイズがメモリの容量に対して不十分である場合も、他のファイルシステムを使う必要があります。このような理由から、Arch Linux では、サポートされているドライバにおいて {{ic|1=nvidia.NVreg_TemporaryFilePath=/var/tmp}} パラメータがデフォルトで設定されています。&lt;br /&gt;
* ビデオメモリの内容を保存するファイルシステムは、無名一時ファイルをサポートし (例えば、ext4 や XFS)、かつビデオメモリの割り当てを保存するのに十分な容量がある必要があります (つまり、すべての NVIDIA GPU のメモリ容量合計の 1.05 倍以上)。コマンド {{ic|1=nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits}} を使えば、システム上のすべての GPU ビデオメモリの容量を一覧表示できます。&lt;br /&gt;
* NVIDIA は {{ic|nvidia-resume.service}} を有効化するのは必須であるとしていますが、これを有効化するのは任意です。このサービスの機能は {{man|8|systemd-sleep}} フック ({{ic|/usr/lib/systemd/system-sleep/nvidia}}) によって提供され、このフックは自動的に実行されるからです。ただし、[https://gitlab.gnome.org/GNOME/gdm/-/issues/784 GDM を Wayland で使用している場合]は、{{ic|nvidia-resume.service}} を明示的に有効化する必要があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Dynamic Boost ==&lt;br /&gt;
&lt;br /&gt;
Dynamic Boost は、システムのワークロードに応じて GPU 及び CPU の電力消費を管理する、システム全体で動作する電力制御ソフトウェアです。[https://download.nvidia.com/XFree86/Linux-x86_64/535.54.03/README/dynamicboost.html] 適宜、電力制限を上げることによって、特に GPU を使用するアプリケーションでパフォーマンスを向上させることができます。&lt;br /&gt;
&lt;br /&gt;
主なシステム要件は、Ampere (及びそれより新しい) GPU が搭載されているラップトップであることです。&lt;br /&gt;
&lt;br /&gt;
詳細は [[CPU 周波数スケーリング#nvidia-powerd]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|電力制限を手動で設定できない人にとっては特に役立つでしょう。[[NVIDIA Optimus#消費電力 (TDP) が低いままになる]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
== ドライバーの持続 ==&lt;br /&gt;
&lt;br /&gt;
NVIDIA はブート時に任意で実行できるデーモンを用意しています。標準的な単一 GPU の X デスクトップ環境では持続デーモンは必要ではなく、むしろ問題を引き起こします [https://devtalk.nvidia.com/default/topic/1044421/linux/nvidia-persistenced-causing-60-second-reboot-delays]。詳細については NVIDIA ドキュメントの [https://docs.nvidia.com/deploy/driver-persistence/index.html#persistence-daemon Driver Persistence] 章をご覧ください。&lt;br /&gt;
&lt;br /&gt;
ブート時に持続デーモンを開始するには {{ic|nvidia-persistenced.service}} を[[有効化]]してください。手動での使用については[https://docs.nvidia.com/deploy/driver-persistence/index.html#usage 上流のドキュメント]をご覧ください。&lt;br /&gt;
&lt;br /&gt;
== YCbCr 4:2:0 サブサンプリングを強制する ==&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:HDMI#Refresh frequency limits for standard video|古い出力規格の制限]]に悩まされているが、YUV 4:2:0 を使用することで問題を緩和できるような場合は、NVIDIA ドライバに YUV420 を強制するためのドキュメント化されていない X11 オプションがあります:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;ForceYUV420&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
&lt;br /&gt;
これで、より高い解像度とリフレッシュレートを利用できますが、画質に悪影響を及ぼします。&lt;br /&gt;
&lt;br /&gt;
== GPU を使ってレンダリングするようにアプリケーションを設定する ==&lt;br /&gt;
&lt;br /&gt;
[[PRIME#GPU を使ってレンダリングするようにアプリケーションを設定する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NVIDIA/Tips and tricks|2025-06-28|839461}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=40471</id>
		<title>NVIDIA Optimus</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=40471"/>
		<updated>2025-06-28T08:04:45Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: /* 消費電力が低いままになる (TDP) */ 章の名前を変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[en:NVIDIA Optimus]]&lt;br /&gt;
[[es:NVIDIA Optimus]]&lt;br /&gt;
[[fr:NVIDIA Optimus]]&lt;br /&gt;
[[ru:NVIDIA Optimus]]&lt;br /&gt;
[[zh-hans:NVIDIA Optimus]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PRIME}}&lt;br /&gt;
{{Related|Bumblebee}}&lt;br /&gt;
{{Related|Nouveau}}&lt;br /&gt;
{{Related|NVIDIA}}&lt;br /&gt;
{{Related|nvidia-xrun}}&lt;br /&gt;
{{Related|外付け GPU}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:NVIDIA Optimus|NVIDIA Optimus]] は、内蔵 GPU とディスクリート NVIDIA GPU をノート PC に組み込み、さらにノート PC からアクセスできるようにする技術です。&lt;br /&gt;
&lt;br /&gt;
== 利用可能な方法 ==&lt;br /&gt;
&lt;br /&gt;
複数の方法が利用できます:&lt;br /&gt;
&lt;br /&gt;
* [[#内蔵グラフィックスのみを使う]] - NVIDIA GPU は完全に電源オフになるので、消費電力を削減できます。&lt;br /&gt;
* [[#NVIDIA グラフィックスのみを使う]] - 内蔵グラフィックスよりも優れたパフォーマンスを発揮します。ただし、より多くの電力を消費します (これはモバイル端末においては喜ばしいことではありません)。この方法は、[[#optimus-manager を使う|optimus-manager]] と [[#nvidia-xrun を使う|nvidia-xrun]] と同じ基本プロセスを利用しており、より自動化されたアプローチを取る前にトラブルシューティングや一般的な機能検証のためにこの方法を利用するべきです。&lt;br /&gt;
* 両方を使う (必要なときに NVIDIA GPU を使用し、それ以外のときは電源を落として電力を節約する):&lt;br /&gt;
** [[#PRIME レンダーオフロードを使う]] - NVIDIA が公式にサポートしている方法です。&lt;br /&gt;
** [[#optimus-manager を使う]] - 1つのコマンドでグラフィックスを切り替えます (適用させるにはログインし直さなければなりません)。また、PRIME レンダーオフロードとのハイブリッドモードもサポートしています。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。1.4 リリース以降では、AMD と NVIDIA の組み合わせもサポートされています。&lt;br /&gt;
** [[#nvidia-xrun を使う]] - NVIDIA グラフィックスを使用して別の TTY で別の X セッションを実行します。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。&lt;br /&gt;
** [[#Bumblebee を使う]] - 指定したアプリケーションに対しては NVIDIA グラフィックスを使用し、その他のアプリケーションに対しては Intel グラフィックスを使えるようにすることで、Windows ライクな機能を提供します。しかし、重大なパフォーマンスの問題を抱えています。&lt;br /&gt;
** [[#switcheroo-control を使う]] - Bumblebee と似ていますが、特に [[GNOME]] ユーザ向けです。[[デスクトップエントリ]]内で専用 GPU を優先するかどうかを指定できるようになり、さらに右クリックメニューから手動で NVIDIA GPU でアプリケーションを実行できるようになります。&lt;br /&gt;
** [[#nouveau を使う]] - (プロプライエタリな NVIDIA ドライバと比較して) パフォーマンスが劣っており、スリープやハイバネートの問題が発生することがあります。最新の NVIDIA GPU では動作しません。&lt;br /&gt;
** [[#EnvyControl を使う]] - optimus-manager と似ていますが、多くの設定を必要とせず、バックグラウンドでデーモンを実行する必要もありませんし、GNOME を使用している場合でもパッチ適用済みの GDM バージョンをインストールする必要はありません。&lt;br /&gt;
** [[#NVidia-eXec を使う]] - Bumblebee と似ていますが、パフォーマンスが低下することはありません。Xorg と Wayland の両方で動作します。このパッケージは実験的であり、現在、GNOME/GDM においてテストされています。&lt;br /&gt;
** [[#nvidia-switch を使う]] - nvidia-xrun と似ていますが、TTY を変更する必要はありません。切り替えは、ディスプレイマネージャでログインとログアウトをすることにより、行われます。このパッケージは、Debian ベースのシステムでテストされていますが、nvidia-xrun のように、全ての Linux システムで動作するはずです。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのオプションはすべて相互に排他的です。1つの方法をテストして別の方法を選択する場合は、別の方法を試行する前に、1つの方法に従って行われた構成変更を必ず元に戻す必要があります。そうしないと、ファイルの競合や未定義の動作が発生する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
== 内蔵グラフィックスのみを使う ==&lt;br /&gt;
&lt;br /&gt;
GPU を切り替えることに興味はなく、特定の GPU のみを使いたい場合は、システムの BIOS で関連するオプションを確認してください。いずれかのカードを無効にするオプションがあるはずです。ラップトップによっては、ディスクリートカードを有効化したり無効化したりしかできないことがあります。とはいえ、どれかのカードだけを使用する予定であるかを確認することは、損ではありません。&lt;br /&gt;
&lt;br /&gt;
BIOS で Nvidia グラフィックスを無効にできない場合は、Linux カーネル自体から無効にできます。[[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== レンダリングプロバイダを切り替えずに CUDA を使う ===&lt;br /&gt;
&lt;br /&gt;
CUDA は、NVIDIA グラフィックスにレンダリングを切り替えることなく使用できます。CUDA アプリケーションを起動する前に、NVIDIA カードの電源が入っていることを確認するだけです。詳細については、[[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
これで、CUDA アプリケーションを起動すると、必要なすべてのカーネルモジュールが自動的にロードされます。CUDA の使用後に NVIDIA カードの電源を切る前に、まず {{ic|nvidia}} カーネルモジュールをアンロードする必要があります:&lt;br /&gt;
&lt;br /&gt;
 # rmmod nvidia_uvm&lt;br /&gt;
 # rmmod nvidia&lt;br /&gt;
&lt;br /&gt;
== NVIDIA グラフィックスのみを使う ==&lt;br /&gt;
&lt;br /&gt;
プロプライエタリな NVIDIA ドライバは、プライマリレンダリングプロバイダとして設定することができます。[[NVIDIA#DRM カーネルモード設定]] を有効化することによって prime sync を有効化しない限り、顕著なスクリーンティアリングの問題が発生します (詳細は [https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/] を参照)。ディスクリート GPU を使用することができ ([https://www.phoronix.com/scan.php?page=article&amp;amp;item=nouveau-410-blob&amp;amp;num=1 2017年1月]現在)、パフォーマンスにおいて nouveau ドライバよりも顕著な優位性を持っています。&lt;br /&gt;
&lt;br /&gt;
まず、[[NVIDIA]] ドライバと {{Pkg|xorg-xrandr}} を[[インストール]]してください。そして、{{ic|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf}} を設定してください。この設定ファイルのオプションは、このセットアップとの互換性を提供するために、パッケージによって提供されている {{ic|/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf}} と組み合わされます。&lt;br /&gt;
&lt;br /&gt;
{{Note|セットアップによっては EDID ファイルによる nvidia ドライバーのディスプレイの値の自動検出がされなくなることがあります。回避策は [[#解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;intel&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;i915&amp;quot;&lt;br /&gt;
    Driver &amp;quot;modesetting&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;nvidia-drm&amp;quot;&lt;br /&gt;
    Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option &amp;quot;AllowEmptyInitialConfiguration&amp;quot;&lt;br /&gt;
    Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/nvidia/xorg&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/xorg/modules&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|~/.xinitrc}} の先頭に以下の2行を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そしてドライバをロードするために再起動し、X を起動させます。&lt;br /&gt;
&lt;br /&gt;
ディスプレイの dpi が正しくない場合は以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 xrandr --dpi 96&lt;br /&gt;
&lt;br /&gt;
X の起動時に黒画面が表示される場合、{{ic|~/.xinitrc}} に記述した 2 つの {{ic|xrandr}} コマンドの後にアンパサンド (アンド記号) がないことを確認してください。アンパサンドがある場合、{{ic|xrandr}} コマンドが実行し終える前にウィンドウマネージャが起動してしまうことがあり、そうなると黒画面になってしまいます。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイマネージャ ===&lt;br /&gt;
&lt;br /&gt;
[[ディスプレイマネージャ]]を使用する場合、{{ic|~/.xinitrc}} を使うのではなく、使用しているディスプレイマネージャのディスプレイセットアップスクリプトを作成あるいは編集する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== LightDM ====&lt;br /&gt;
&lt;br /&gt;
[[LightDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/display_setup.sh|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
スクリプトに[[実行可能属性]]を付与してください。&lt;br /&gt;
&lt;br /&gt;
次に、そのスクリプトを実行するように lightdm を設定します。{{ic|/etc/lightdm/lightdm.conf}} 内の {{ic|[Seat:*]}} セクションを編集してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|output=&lt;br /&gt;
[Seat:*]&lt;br /&gt;
display-setup-script=/etc/lightdm/display_setup.sh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、再起動し、ディスプレイマネージャを起動させてください。&lt;br /&gt;
&lt;br /&gt;
==== SDDM ====&lt;br /&gt;
&lt;br /&gt;
[[SDDM]] ディスプレイマネージャの場合 (SDDM は [[KDE]] のデフォルトのディスプレイマネージャです):&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/sddm/scripts/Xsetup|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== GDM ====&lt;br /&gt;
&lt;br /&gt;
[[GDM]] ディスプレイマネージャの場合、2つの .desktop ファイルを新規作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/gdm/greeter/autostart/optimus.desktop&lt;br /&gt;
/etc/xdg/autostart/optimus.desktop|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[Desktop Entry]&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=Optimus&lt;br /&gt;
Exec=sh -c &amp;quot;xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto&amp;quot;&lt;br /&gt;
NoDisplay=true&lt;br /&gt;
X-GNOME-Autostart-Phase=DisplayServer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
GDM が [[GDM#Xorg バックエンドを使う|X をデフォルトバックエンドとして使う]]ように設定してください。&lt;br /&gt;
&lt;br /&gt;
=== 3D を確認する ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA グラフィックスが使用されているかどうかは、{{Pkg|mesa-utils}} をインストールして次のコマンドを実行することで確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ glxinfo | grep NVIDIA&lt;br /&gt;
&lt;br /&gt;
=== 詳細情報 ===&lt;br /&gt;
&lt;br /&gt;
詳細情報は、このトピックに関する NVIDIA の公式ページ [http://us.download.nvidia.com/XFree86/Linux-x86/370.28/README/randr14.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
== 切り替え可能なグラフィックスを使う ==&lt;br /&gt;
&lt;br /&gt;
=== PRIME レンダーオフロードを使う ===&lt;br /&gt;
&lt;br /&gt;
これは、切替可能なグラフィックスをサポートする NVIDIA 公式の方法です。&lt;br /&gt;
&lt;br /&gt;
詳細は [[PRIME#PRIME レンダーオフロード]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nouveau を使う ===&lt;br /&gt;
&lt;br /&gt;
グラフィックスの切り替えについては [[PRIME]] を、オープンソースな NVIDIA ドライバについては [[nouveau]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Bumblebee を使う ===&lt;br /&gt;
&lt;br /&gt;
[[Bumblebee]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== switcheroo-control を使う ===&lt;br /&gt;
&lt;br /&gt;
[[PRIME#Gnome 統合]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-xrun を使う ===&lt;br /&gt;
&lt;br /&gt;
[[nvidia-xrun]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== optimus-manager を使う ===&lt;br /&gt;
&lt;br /&gt;
上流のドキュメント [https://github.com/Askannz/optimus-manager Optimus-manager] を参照してください。Arch Linux システムにおけるインストールと設定方法の両方がカバーされています。&lt;br /&gt;
&lt;br /&gt;
=== EnvyControl を使う ===&lt;br /&gt;
&lt;br /&gt;
上流のドキュメント [https://github.com/geminis3/envycontrol EnvyControl] を参照してください。インストール方法と使用方法の両方がカバーされています。&lt;br /&gt;
&lt;br /&gt;
=== NVidia-eXec を使う ===&lt;br /&gt;
&lt;br /&gt;
上流のドキュメント [https://github.com/pedro00dk/nvidia-exec NVidia-eXec] を参照してください。インストール方法と使用方法の両方がカバーされています。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-switch を使う ===&lt;br /&gt;
&lt;br /&gt;
上流のドキュメント [https://github.com/nvidiaswitch/nvidia-switch nvidia-switch] を参照してください。インストール方法と使用方法の両方がカバーされています。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== ティアリング/垂直同期が機能しない ===&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA#DRM カーネルモード設定|DRM カーネルモード設定]]を有効化してください。これにより、PRIME 同期が有効化され、ティアリングが修正されます。&lt;br /&gt;
&lt;br /&gt;
詳細は公式の[https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/ フォーラムスレッド]で確認できます。&lt;br /&gt;
&lt;br /&gt;
=== Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!) ===&lt;br /&gt;
&lt;br /&gt;
カーネルパラメータに {{ic|1=rcutree.rcu_idle_gp_delay=1}} を追加してください。オリジナルのトピックは [https://github.com/Bumblebee-Project/Bumblebee/issues/455#issuecomment-22497464] と [https://bbs.archlinux.org/viewtopic.php?id=169742] で確認できます。&lt;br /&gt;
&lt;br /&gt;
=== 解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバがディスプレイの EDID を検出できていないことが原因です。手動で EDID ファイルへのパスを指定するか、同じような方法で同一の情報を提供する必要があります。&lt;br /&gt;
&lt;br /&gt;
EDID ファイルへのパスを指定するには {{ic|Xorg.conf}} の NVIDIA カードの Device セクションを編集して、以下の記述を追加して適当にパスを置き換えてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-0&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;CustomEDID&amp;quot; &amp;quot;CRT-0:/sys/class/drm/card0-LVDS-1/edid&amp;quot;&lt;br /&gt;
	Option		&amp;quot;IgnoreEDID&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
	Option		&amp;quot;UseEDID&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Xorg が起動しない場合は、CRT という文字列を全て DFB に置き換えてみて下さい。&lt;br /&gt;
{{ic|card0}} は、LVDS でディスプレイに接続されている Intel カードの識別子です。edid バイナリはこのディレクトリに存在します。ハードウェアの構成が異なっている場合、CustomEDID の値も変わってくるので確認するようにしてください。どのような場合でも、パスは {{ic|/sys/class/drm}} で始まります。&lt;br /&gt;
&lt;br /&gt;
または、{{Pkg|read-edid}} などのツールを使って edid を自分で作成して、作成したファイルを使うようにドライバーを設定することもできます。modelines も使えますが、{{ic|UseEDID}} と {{ic|IgnoreEDID}} は変更するようにしてください。&lt;br /&gt;
&lt;br /&gt;
=== 解像度が間違っているが、EDID エラー無し ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;nvidia-xconfig&#039;&#039; を使っていると、不適切な情報 (特に、利用可能な解像度を制限するモニタのリフレッシュレート) が {{ic|xorg.conf}} 内に生成されてしまうことがあります。{{ic|HorizSync}}/{{ic|VertRefresh}} の行をコメントアウトしてみてください。これで解決するならば、この記事で言及していないその他すべての項目も削除できるでしょう。&lt;br /&gt;
&lt;br /&gt;
=== ロックアップ問題 (lspci がフリーズ) ===&lt;br /&gt;
&lt;br /&gt;
症状: lspci がハングする。システムのサスペンドが失敗する。シャットダウン時にハングする。optirun がハングする。&lt;br /&gt;
&lt;br /&gt;
対象: GTX 965M やそれと似たようなカードを搭載した新しいノート PC で、bbswitch (例: Bumblebee 経由) や nouveau を使用している時。&lt;br /&gt;
&lt;br /&gt;
dGPU 電源リソースがオンになっている場合、ACPI コードで失敗してフリーズが起こることがあります ([https://bugzilla.kernel.org/show_bug.cgi?id=156341 カーネルバグ 156341])。&lt;br /&gt;
&lt;br /&gt;
nouveau を使用している際に、ランタイムの電源管理を無効化すると、nouveau が電源状態を変更しなくなるため、この問題を回避できます。&lt;br /&gt;
ランタイムの電源管理を無効化するには、カーネルパラメータに {{ic|1=nouveau.runpm=0}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
モデル固有の既知の解決策については、[https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238 この issue] を見てください。&lt;br /&gt;
その他の場合、{{ic|1=acpi_osi=&amp;quot;!Windows 2015&amp;quot;}} や {{ic|1=acpi_osi=! acpi_osi=&amp;quot;Windows 2009&amp;quot;}} を[[カーネルパラメータ]]に追加して起動することで解決することもあります。(あなたのノート PC を先の issue で報告することを検討してください)&lt;br /&gt;
&lt;br /&gt;
=== ノート PC/NVIDIA Optimus で画面が見つからない ===&lt;br /&gt;
&lt;br /&gt;
以下のような出力がないか調べてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lspci {{!}} grep VGA|&lt;br /&gt;
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)&lt;br /&gt;
01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバ 319.12 Beta [https://www.nvidia.com/object/linux-display-amd64-319.12-driver.html] と Linux カーネル 3.9 以降では、NVIDIA ドライバは Optimus のサポートを提供します。&lt;br /&gt;
&lt;br /&gt;
他の解決策は、[[Intel]] ドライバをインストールして、Intel ドライバにスクリーンを処理させることです。3D ソフトウェアを使用したい場合は、[[Bumblebee]] を使ってそのソフトウェアを実行し、NVIDIA カードを使うようにソフトウェアに指示する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== ランダムなフリーズ &amp;quot;(EE) NVIDIA(GPU-0): WAIT&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
内蔵 AMD カードを搭載していて、専用 NVIDIA カードのみを使用するように設定している環境でプロプライエタリな (NVIDIA) ドライバを使用していると、最大 10 秒フリーズし、Xorg のログに以下のエラーが出力されると報告されています:&lt;br /&gt;
&lt;br /&gt;
 [   219.796] (EE) NVIDIA(GPU-0): WAIT (2, 8, 0x8000, 0x0002e1c4, 0x0002e1cc)&lt;br /&gt;
 [   226.796] (EE) NVIDIA(GPU-0): WAIT (1, 8, 0x8000, 0x0002e1c4, 0x0002e1cc)&lt;br /&gt;
&lt;br /&gt;
これはまだ根本的な原因ではありませんが、内蔵カードと専用カードが Xorg とやり取りする過程で競合が発生することと関連があるようです。&lt;br /&gt;
&lt;br /&gt;
回避策は、切り替え可能なグラフィックスを使うことです。詳細は [[PRIME#PRIME レンダーオフロード]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== optimus-manager で &amp;quot;No Devices detected&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
&#039;lspci&#039; が PCI ドメインを最初の出力列に出力してしまい、&#039;&#039;optimus-manager&#039;&#039; が {{ic|BusID}} を複数のノート PC モデルにマッピングしようとして、{{ic|optimus-manager}} によって生成されたファイルが壊れてしまうことがあります。&lt;br /&gt;
&lt;br /&gt;
GUI のロードが終わらない黒画面が発生する場合や、GUI が部分的にロードされたがコンソールにアーティファクトが発生する場合、Xorg が {{ic|(EE) - No Devices detected}} でクラッシュする場合には、[https://github.com/Askannz/optimus-manager/issues/471#issuecomment-1315628537 上流の GitHub ページ]に回避策とバグレポートがあります.&lt;br /&gt;
&lt;br /&gt;
=== Xorg: マウスを動かしたときにだけ外部モニタが更新される ===&lt;br /&gt;
&lt;br /&gt;
この問題に対する回避策は、iGPU の Xorg ドライバをアンインストールすることです (例: {{Pkg|xf86-video-amdgpu}} や {{Pkg|xf86-video-intel}}) [https://bbs.archlinux.org/viewtopic.php?id=284651]。この方法は、外部モニタのポート (HDMI/DP/USB-C) が NVIDIA dGPU に直接接続されている限り、うまく行くはずです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|デスクトップの挙動が奇妙になる場合があります (例: 仮想デスクトップを切り替えたり、Alt-Tab を使用したときに外部モニタの画像がフリーズするなど)。これは、ノート PC のモニタを無効化することで回避できます。}}&lt;br /&gt;
&lt;br /&gt;
=== 消費電力 (TDP) が低いままになる ===&lt;br /&gt;
&lt;br /&gt;
ドライバのバージョン 530.41 から、カードの消費電力が低く制限された状態に固定されてしまうというケースが発生し始めました ([https://github.com/NVIDIA/open-gpu-kernel-modules/issues/483 GitHub issue 483] を参照)。NVIDIA ドライバは、{{ic|nvidia-smi}} を使用して電力制限を手動で設定する機能を無効化していますが、多くのノート PC で低消費電力状態に固定されてしまい、パフォーマンスが悪化してしまいます。&lt;br /&gt;
&lt;br /&gt;
(Ampere 世代及びそれ以降で) この問題を回避するには、[https://download.nvidia.com/XFree86/Linux-x86_64/535.54.03/README/dynamicboost.html DynamicBoost] を有効化する {{ic|nvidia-powerd.service}} を[[起動/有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NVIDIA Optimus|2023-08-20|785744}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA&amp;diff=40470</id>
		<title>NVIDIA</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA&amp;diff=40470"/>
		<updated>2025-06-28T07:26:51Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィックス]]&lt;br /&gt;
[[Category:X サーバー]]&lt;br /&gt;
[[de:Nvidia]]&lt;br /&gt;
[[en:NVIDIA]]&lt;br /&gt;
[[es:NVIDIA]]&lt;br /&gt;
[[pt:NVIDIA]]&lt;br /&gt;
[[ru:NVIDIA]]&lt;br /&gt;
[[zh-hans:NVIDIA]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|NVIDIA/ヒントとテクニック}}&lt;br /&gt;
{{Related|NVIDIA/トラブルシューティング}}&lt;br /&gt;
{{Related|Nouveau}}&lt;br /&gt;
{{Related|NVIDIA Optimus}}&lt;br /&gt;
{{Related|PRIME}}&lt;br /&gt;
{{Related|Bumblebee}}&lt;br /&gt;
{{Related|nvidia-xrun}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Vulkan}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
この記事は公式の [https://www.nvidia.com NVIDIA] グラフィックカードドライバをカバーしています。コミュニティによるオープンソースのドライバに関しては、[[Nouveau]] を見てください。ハイブリッドグラフックスを搭載しているノートパソコンを使っている場合は、[[NVIDIA Optimus]] も見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|NVIDIA のウェブサイトで提供されているパッケージを通して NVIDIA ドライバをインストールすることは避けてください。[[pacman]] 経由でインストールすれば、システムをアップデートした際にドライバもアップデートすることができます。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[ハイブリッドグラフィックス]]のあるシステム上でデュアルブートする場合は、Windows またはサードパーティのアプリで ([https://www.asus.com/support/faq/1043747/#a14 ASUS Eco mode] のような) &#039;&#039;Eco mode&#039;&#039; を有効化すると NVIDIA のディスクリート GPU が完全に無効化され、検出されなくなります。}}&lt;br /&gt;
&lt;br /&gt;
まず、[https://nouveau.freedesktop.org/wiki/CodeNames/ nouveau wiki のコードネームに関するページ]で、以下のコマンドで入手した GPU カードのモデル名/公式名に対応するファミリ名を探してください:&lt;br /&gt;
&lt;br /&gt;
 $ lspci -k -d ::03xx&lt;br /&gt;
&lt;br /&gt;
次に、使用しているカードに適したドライバをインストールしてください:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! GPU ファミリ&lt;br /&gt;
! ドライバ&lt;br /&gt;
! 状態&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV160 Turing (NV160/TUXXX)] 及びそれ以降&lt;br /&gt;
| {{Pkg|linux}} には {{Pkg|nvidia-open}} &amp;lt;br/&amp;gt; {{Pkg|linux-lts}} には {{Pkg|nvidia-open-lts}} &amp;lt;br/&amp;gt; {{Pkg|nvidia-open-dkms}} は任意のカーネルで使えます&lt;br /&gt;
| [https://developer.nvidia.com/blog/nvidia-transitions-fully-towards-open-source-gpu-kernel-modules/ 上流で推奨されています]。&amp;lt;br/&amp;gt; 現行。サポートあり。&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV110 Maxwell (NV110/GMXXX)] から &amp;lt;br/&amp;gt;[https://nouveau.freedesktop.org/CodeNames.html#NV190 Ada Lovelace (NV190/ADXXX)]&lt;br /&gt;
| {{Pkg|linux}} には {{Pkg|nvidia}} &amp;lt;br/&amp;gt; {{Pkg|linux-lts}} には {{Pkg|nvidia-lts}} &amp;lt;br/&amp;gt; {{Pkg|nvidia-dkms}} は任意のカーネルで使えます&lt;br /&gt;
| 現行。サポートあり。&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVE0 Kepler (NVE0/GKXXX)]&lt;br /&gt;
| {{AUR|nvidia-470xx-dkms}}&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | レガシー。サポートなし。&amp;lt;sup&amp;gt;2,3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NVC0 Fermi (NVC0/GF1XX)]&lt;br /&gt;
| {{AUR|nvidia-390xx-dkms}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV50 Tesla (NV50/G80-90-GT2XX)]&lt;br /&gt;
| {{AUR|nvidia-340xx-dkms}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://nouveau.freedesktop.org/CodeNames.html#NV40 Curie (NV40/G70)] 及びそれ以前&lt;br /&gt;
| パッケージはもはや存在しません。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# これらのパッケージが動作しない場合 (たいていはハードウェアが新しいことが原因です)、{{AUR|nvidia-open-beta}} が、新しいハードウェアをサポートしている新しいドライバのバージョンを提供しているかもしれません。&lt;br /&gt;
# [https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/alder-lake-desktop/12th-generation-intel-core-processors-datasheet-volume-1-of-2/007/indirect-branch-tracking/ Indirect Branch Tracking] との互換性が無いため、[https://www.intel.com/content/www/us/en/newsroom/opinion/intel-cet-answers-call-protect-common-malware-threats.html 第11世代及びそれ以降]の Intel CPU を搭載しているシステムで Linux 5.18 (及びそれ以降) においてこれらのドライバは動作しない場合があります。Indirect Branch Tracking は、[[ブートローダー]]から {{ic|1=ibt=off}} [[カーネルパラメータ]]を設定することにより、無効化することができます。ただし、このセキュリティ機能は[https://lwn.net/Articles/889475/ エクスプロイト手法の一種を緩和する]役割があるので注意してください。&lt;br /&gt;
# NVIDIA はもはやこれらのカードをアクティブにサポートしておらず、これらのドライバは[https://nvidia.custhelp.com/app/answers/detail/a_id/3142/ 現在の Xorg バージョンを公式にはサポートしていない場合があります]。[[nouveau]] ドライバを使うほうが簡単かもしれません。しかし、NVIDIA のレガシーなドライバは依然として利用可能であり、3D パフォーマンスまたは安定性に関して優れているかもしれません。&lt;br /&gt;
&lt;br /&gt;
:{{Note|&lt;br /&gt;
:* {{Pkg|dkms}} をインストールする場合は、[[Dynamic Kernel Module Support#インストール]] を読んでください。&lt;br /&gt;
:* [[DKMS]] 版は特定のカーネルと結びついていません。カーネルのヘッダーファイルをインストールすると、そのカーネル用の NVIDIA カーネルモジュールをコンパイルし直すためです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
32ビットアプリケーションのサポートに関しては、対応する &#039;&#039;lib32&#039;&#039; パッケージも [[multilib]] リポジトリからインストールしてください (例: {{Pkg|lib32-nvidia-utils}})。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-utils}} パッケージには、再起動後に {{ic|nouveau}} モジュールをブラックリスト化するファイルが含まれています。任意で、{{ic|/etc/mkinitcpio.conf}} 内の {{ic|HOOKS}} 配列から {{ic|kms}} を削除し、その後 [[Initramfs を再生成する|initramfs を再生成]]してもよいです。こうすることで、initramfs に {{ic|nouveau}} モジュールが含まれないようにして、カーネルがこのモジュールを初期ブート中に読み込めないようにします。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[#Wayland 設定|Wayland]] を使用している場合は、[[#DRM カーネルモード設定]] に書かれてあることをするまで再起動するべきではありません。さもないと、再起動後に黒画面になってしまうかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
ドライバーをインストールしたら、[[#Xorg 設定]] または [[#Wayland 設定]] へと進んでください。&lt;br /&gt;
&lt;br /&gt;
=== カスタムカーネル ===&lt;br /&gt;
&lt;br /&gt;
使用中のカーネルで {{ic|1=CONFIG_DRM_SIMPLEDRM=y}} となっていることを確認してください。そして、{{ic|CONFIG_DEBUG_INFO_BTF}} を使用している場合、[[PKGBUILD]] で以下が必要です (カーネル 5.16 以降):&lt;br /&gt;
&lt;br /&gt;
 install -Dt &amp;quot;$builddir/tools/bpf/resolve_btfids&amp;quot; tools/bpf/resolve_btfids/resolve_btfids&lt;br /&gt;
&lt;br /&gt;
{{ic|CONFIG_NOVA_CORE}} を有効化してコンパイルされたカーネルでは、新しい NVIDIA GPU ドライバである [https://docs.kernel.org/gpu/nova/index.html Nova] がロードされないようにする必要があるかもしれません。{{Pkg|nvidia-utils}} はデフォルトでこのドライバをブラックリストに追加します。[[カーネルモジュール#モジュールオプションを設定する|systemd-analyze を実行する]]ことで、ロードされていないことを確認できます。別のバージョンのドライバをインストールしている場合は、{{ic|nova_core}} と {{ic|nova_drm}} を手動で[[ブラックリスト|ブラックリストに登録]]する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== DRM カーネルモード設定 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA は [[カーネルモード設定#KMS の遅延開始|KMS の自動遅延読み込み]]をサポートしていないため、Wayland コンポジタを正しく動作させるには DRM ([[Wikipedia:Direct Rendering Manager|Direct Rendering Manager]]) [[カーネルモード設定]]を有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-utils}} 560.35.03-5 から DRM はデフォルトで有効化されています。[https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/commit/1b02daa2ccca6a69fa4355fb5a369c2115ec3e22] それより古いドライバにおいては、{{ic|nvidia_drm}} モジュールに対して {{ic|1=modeset=1}} [[カーネルモジュールパラメータ]]を設定してください。&lt;br /&gt;
&lt;br /&gt;
DRM が本当に有効化されているか調べるには、以下のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/module/nvidia_drm/parameters/modeset&lt;br /&gt;
&lt;br /&gt;
正しく設定されていれば、このコマンドは {{ic|N}} ではなく {{ic|Y}} と出力するはずです。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[カーネル#公式サポートカーネル|Arch で公式にサポートされているカーネル]]は {{ic|simpledrm}} を有効化します。しかし、NVIDIA ドライバは、{{ic|1=nvidia_drm.fbdev}} が無効化されている/利用できない場合 (バージョン 545 より前)、{{ic|efifb}} または {{ic|vesafb}} を必要とします。}}&lt;br /&gt;
&lt;br /&gt;
==== 早期ロード ====&lt;br /&gt;
&lt;br /&gt;
基本的な機能については先のカーネルパラメータを追加するだけで十分でしょう。可能な限り早い時にロードさせたい場合や、スタートアップ時に問題 ({{ic|nvidia}} カーネルモジュールが[[ディスプレイマネージャ]]のあとにロードされてしまうなど) が発生する場合には、{{ic|nvidia}}、{{ic|nvidia_modeset}}、{{ic|nvidia_uvm}} そして {{ic|nvidia_drm}} を initramfs に追加することができます。initramfs ジェネレータを設定する方法については [[カーネルモジュール#モジュールの早期ロード]] を見てください。[[mkinitcpio]] を使用している場合、{{Pkg|nvidia}} ドライバの更新時に毎回 [[initramfs を再生成]]する必要がある場合があります。これを自動化する方法については [[#Pacman フック]] を見てください。&lt;br /&gt;
&lt;br /&gt;
===== Pacman フック =====&lt;br /&gt;
&lt;br /&gt;
{{Note|カスタムの pacman フックが必要になるのは、ビルド済みのカーネルモジュールが同梱されているパッケージに対してのみです。{{ic|*-dkms}} パッケージは、更新時に &#039;&#039;mkinitcpio&#039;&#039; が自動的に実行されるので、このようなカスタムの pacman フックは必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバをアップグレードした後に [[initramfs]] をアップデートすることを忘れないように、以下のような [[pacman フック]]を利用することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pacman.d/hooks/nvidia.hook|2=&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation=Install&lt;br /&gt;
Operation=Upgrade&lt;br /&gt;
Operation=Remove&lt;br /&gt;
Type=Package&lt;br /&gt;
# 構成に存在しない Target は省略できます。例えば、nvidia-open のみを使用する場合は、nvidia-lts の Target を省略できます。&lt;br /&gt;
Target=nvidia&lt;br /&gt;
Target=nvidia-open&lt;br /&gt;
Target=nvidia-lts&lt;br /&gt;
# 他のカーネルを使う場合は以下を適宜変更してください&lt;br /&gt;
Target=linux&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Description=Updating NVIDIA module in initcpio&lt;br /&gt;
Depends=mkinitcpio&lt;br /&gt;
When=PostTransaction&lt;br /&gt;
NeedsTargets&lt;br /&gt;
Exec=/bin/sh -c &#039;while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|上記の {{ic|Exec}} の行が複雑なのは {{ic|nvidia}} と {{ic|linux}} の両方がアップデートされた場合に &#039;&#039;mkinitcpio&#039;&#039; が何度も実行されるのを防ぐためです。このことが気にならないのであれば、{{ic|1=Target=linux}} と {{ic|NeedsTargets}} の行を削除して、{{ic|Exec}} の行は {{ic|1=Exec=/usr/bin/mkinitcpio -P}} のように単純化させることができます。}}&lt;br /&gt;
&lt;br /&gt;
=== ビデオデコードのハードウェアアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
VDPAU によるビデオデコードのアクセラレーションは GeForce 8 シリーズ及びそれ以降のカードでサポートされています。NVDEC によるビデオデコードのアクセラレーションは Fermi (~400 シリーズ) 及びそれ以降のカードでサポートされています。詳しくは [[ハードウェアビデオアクセラレーション]] をご覧ください。&lt;br /&gt;
&lt;br /&gt;
=== NVENC によるビデオエンコードのハードウェアアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
NVENC は {{ic|nvidia_uvm}} モジュールと、関連するデバイスノードが {{ic|/dev}} 下に作成されることを要求します。&lt;br /&gt;
&lt;br /&gt;
最新のドライバーパッケージは、自動的にデバイスノードを作成する [[udev ルール]]を提供するので、追加の操作は必要ありません。&lt;br /&gt;
&lt;br /&gt;
古いドライバ (例えば、{{AUR|nvidia-340xx-dkms}}) を使用している場合、デバイスノードを作成する必要があります。{{ic|nvidia-modprobe}} ユーティリティを実行するとデバイスノードが自動的に作成されます。{{ic|/etc/udev/rules.d/70-nvidia.rules}} を作成して {{ic|nvidia-modprobe}} を自動的に実行させることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/70-nvidia.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, DEVPATH==&amp;quot;/bus/pci/drivers/nvidia&amp;quot;, RUN+=&amp;quot;/usr/bin/nvidia-modprobe -c 0 -u&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
== Wayland 設定 ==&lt;br /&gt;
&lt;br /&gt;
Xwayland に関しては [[Wayland#Xwayland]] を見てください。&lt;br /&gt;
&lt;br /&gt;
その他の設定オプションについては、それぞれの[[Wayland#コンポジタ|コンポジタ]]の wiki ページやドキュメントを見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|バージョン 555.xx より前のドライバを使用している場合や、{{ic|linux-drm-syncobj-v1}} プロトコルによって Explicit Sync をサポートしていない Wayland コンポジタを使用している場合、ネイティブの Wayland アプリと Xwayland アプリの両方でちらつき、フレーム順序の狂いなどの問題が発生する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
=== 基本的なサポート ===&lt;br /&gt;
&lt;br /&gt;
{{ic|nvidia_drm}} モジュールの重要なカーネルパラメータは {{ic|modeset}} と {{ic|fbdev}} です。{{Pkg|nvidia-utils}} パッケージを使用している場合、これらは両方とも[https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/blob/3b439109/PKGBUILD#L60 デフォルトで有効化されています]。また、NVIDIA は[https://indico.freedesktop.org/event/6/contributions/287/attachments/210/288/NVIDIA%20Wayland%20Roadmap.pdf 将来のリリースでこれらのパラメータをデフォルトで有効化することを計画しています]。&lt;br /&gt;
&lt;br /&gt;
==== modeset ====&lt;br /&gt;
&lt;br /&gt;
全ての Wayland 構成において {{ic|modeset}} を有効化することは適切に機能させるために必須です。&lt;br /&gt;
&lt;br /&gt;
サポートの無いドライバについては、{{ic|modeset}} を手動で有効化する必要があります。詳細は [[#DRM カーネルモード設定]] と [[Wayland#要件]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== fbdev ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|{{Pkg|linux}} 6.14.2 と {{Pkg|nvidia}} 570.133.07 の時点で、Wayland は fbdev が無効化されていても動作するようです。また、下記の {{ic|cat}} コマンドは {{ic|N}} を返す可能性もあります。なので、この章はそれより古いバージョンのドライバのみが対象です。}}&lt;br /&gt;
&lt;br /&gt;
一部の Wayland 構成においては {{ic|fbdev}} を有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
Linux 6.11 以降においてこれは厳しい要件ですが、これが仕様なのかバグなのかは現在明らかになっていません。詳細は [https://forums.developer.nvidia.com/t/drm-fbdev-wayland-presentation-support-with-linux-kernel-6-11-and-above/307920] を参照してください。&lt;br /&gt;
&lt;br /&gt;
これは [[#DRM カーネルモード設定|modesetting パラメータ]]と同じようにして設定することができます。ただし、以下のコマンドの出力は modesetting と異なります:&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/module/nvidia_drm/parameters/fbdev&lt;br /&gt;
&lt;br /&gt;
{{ic|fbdev}} が設定されていない場合は、このコマンドは {{ic|N}} を出力するのではなく、ファイルが存在しないことを示すエラーが発生します。&lt;br /&gt;
&lt;br /&gt;
=== サスペンドのサポート ===&lt;br /&gt;
&lt;br /&gt;
Wayland でのサスペンドは X よりもデフォルトの設定の問題が発生しやすいです。詳細は [[NVIDIA/ヒントとテクニック#サスペンド後にビデオメモリを保持する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
GDM を使用している場合は、[[GDM#Wayland とプロプライエタリな NVIDIA ドライバ]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== Xorg 設定 ==&lt;br /&gt;
&lt;br /&gt;
プロプライエタリな NVIDIA グラフィックドライバは Xorg サーバの設定ファイルを必要としません。[[Xorg#起動|X を起動]]してみて、Xorg サーバが設定ファイル無しで正しく機能するかを確認することができます。しか、様々な設定を調整するために設定ファイル ({{ic|/etc/X11/xorg.conf}} よりも {{ic|/etc/X11/xorg.conf.d/20-nvidia.conf}} を優先して使用してください) を作成する必要があるかもしれません。この設定は、NVIDIA Xorg 設定ツールによって生成することができますし、手動で作成することもできます。手動で作成した場合、([[Xorg]] サーバに基本的なオプションのみを与えると言う意味で) 最小の設定にすることができますし、あるいは、Xorg の自動検出されたオプションや事前設定されたオプションをバイパスできる設定を含めることもできます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|その他の設定オプションは、[[NVIDIA/トラブルシューティング]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
=== 自動設定 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA のパッケージには、Xorg サーバの設定ファイル ({{ic|xorg.conf}}) を作成するための自動設定ツールが含まれています。次のコマンドで実行できます:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig&lt;br /&gt;
&lt;br /&gt;
このコマンドは {{ic|/etc/X11/xorg.conf}} を自動検出し、現在のハードウェアに応じてそのファイルを作成 (すでに存在する場合は編集) します。&lt;br /&gt;
&lt;br /&gt;
デフォルトの深度、水平同期、垂直リフレッシュ、そして解像度が問題ないか {{ic|/etc/X11/xorg.conf}} を二重にチェックしてください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-settings ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-settings}} は CLI または GUI を使って様々なオプションを設定することができるツールです。何もオプションをつけずに {{ic|nvidia-settings}} を実行すると GUI が起動します。CLI のオプションについては {{man|1|nvidia-settings}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|nvidia-settings}} の CLI/GUI は非 root なユーザとして実行でき、&#039;&#039;nvidia-settings Configuration&#039;&#039; タブにある &#039;&#039;Save Current Configuration&#039;&#039; オプションで設定を {{ic|~/.nvidia-settings-rc}} に保存できます。&lt;br /&gt;
&lt;br /&gt;
現在のユーザで {{ic|~/.nvidia-settings-rc}} をロードするには:&lt;br /&gt;
&lt;br /&gt;
 $ nvidia-settings --load-config-only&lt;br /&gt;
&lt;br /&gt;
起動時に毎回このコマンドを実行させるには[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|nvidia-settings}} から変更を加えると [[Xorg]] が起動しなくなったりクラッシュするようになったりすることがあります。生成された {{ic|~/.nvidia-settings-rc}} と [[Xorg]] のファイルの両方/片方を調整するか削除することで普通に起動できるようになるはずです。}}&lt;br /&gt;
&lt;br /&gt;
=== 手動設定 ===&lt;br /&gt;
&lt;br /&gt;
設定ファイルを編集することで、([[#自動設定|自動的に]]、または [[#NVIDIA settings|nvidia-settings]]によって有効化できない) いくつかの微調整をすることができます。変更を適用する前に Xorg サーバーを再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
その他の詳細やオプションについては [https://download.nvidia.com/XFree86/Linux-x86_64/560.35.03/README/ NVIDIA Accelerated Linux Graphics Driver README and Installation Guide] をご覧ください。&lt;br /&gt;
&lt;br /&gt;
==== 最小設定 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|20-nvidia.conf}} (もしくは非推奨の {{ic|xorg.conf}}) の基本的な設定ブロックは以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/20-nvidia.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;NVIDIA Card&amp;quot;&lt;br /&gt;
        Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
        VendorName &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
        BoardName &amp;quot;GeForce GTX 1050 Ti&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 起動時のロゴを無効化 ====&lt;br /&gt;
&lt;br /&gt;
古いドライバ ({{AUR|nvidia-340xx-dkms}}) を使用している場合、X の起動時に表示される NVIDIA ロゴスプラッシュスクリーンを無効化しておいたほうがいいかもしれません。{{ic|Device}} セクション内に {{ic|&amp;quot;NoLogo&amp;quot;}} オプションを追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;NoLogo&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== モニター検出をオーバーライド ====&lt;br /&gt;
&lt;br /&gt;
{{ic|Device}} セクション内の {{ic|&amp;quot;ConnectedMonitor&amp;quot;}} オプションにより、 X サーバーが起動した時にモニター検出をオーバーライドできます。これにより、起動時間を大幅に減らせるかもしれません。利用可能なオプション: アナログ接続用の {{ic|&amp;quot;CRT&amp;quot;}}、デジタルモニター用の {{ic|&amp;quot;DFP&amp;quot;}}、テレビ用の {{ic|&amp;quot;TV&amp;quot;}}。&lt;br /&gt;
&lt;br /&gt;
以下の行は起動時のチェックをバイパスし、モニターを DFP として認識することを NVIDIA ドライバーに強制します:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;DFP&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|たとえディスプレイが薄型パネルであろうと、アナログ15ピン VGA 接続に対しては &amp;quot;CRT&amp;quot; を使用してください。&amp;quot;DFP&amp;quot; は DVI や HDMI、DisplayPort のデジタル接続のみを意図しています。}}&lt;br /&gt;
&lt;br /&gt;
==== 輝度調整を有効化 ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|時代遅れの可能性あり[https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/thread/GXJG7D3ALUQKOE2DT4XCL4UXQUFDDSEC/]。上流のパッケージも古いようです。}}&lt;br /&gt;
&lt;br /&gt;
以下をカーネルパラメータに追加してください:&lt;br /&gt;
&lt;br /&gt;
 nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1&lt;br /&gt;
&lt;br /&gt;
あるいは、以下を {{ic|Device}} セクション内に追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;RegistryDwords&amp;quot; &amp;quot;EnableBrightnessControl=1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
もし、この設定で輝度調整がまだ機能しない場合は、{{AUR|nvidia-bl-dkms}} をインストールしてみてください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{AUR|nvidia-bl-dkms}} をインストールすることにより、バックライト輝度調整用の {{ic|/sys/class/backlight/nvidia_backlight/}} インターフェイスが提供されます。しかし、システムが {{ic|/sys/class/backlight/acpi_video0/}} に対してバックライト制御の変更を発行し続けるかもしれません。この場合の1つの解決策は、例えば、&#039;&#039;inotifywait&#039;&#039; を使用して {{ic|acpi_video0/brightness}} の変更を監視し、それを変換して {{ic|nvidia_backlight/brightness}} に対して書き込むことです。[[バックライト#sysfs を変更しても明るさが変更されない]] をご覧ください。}}&lt;br /&gt;
&lt;br /&gt;
==== SLI を有効化 ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|バージョン 455.23.04 から、一部の SLI モードはもはやサポートされていません。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|GTX 10xx シリーズ (1080、1070、1060 など) 以降は 2-way SLI のみがサポートされます。3-way や 4-way SLI は CUDA/OpenCL アプリケーションに対しては機能するかもしれませんが、すべての OpenGL アプリケーションに対してはたいてい機能しないでしょう。}}&lt;br /&gt;
&lt;br /&gt;
NVIDIA ドライバーの [https://download.nvidia.com/XFree86/Linux-x86_64/560.35.03/README/xconfigoptions.html README] 付録 B によると: &#039;&#039;このオプションは、サポートされている構成で SLI レンダリングの設定を制御します。&#039;&#039; &amp;quot;サポートされている構成&amp;quot;とは SLI 認定マザーボードと、2基または3基の SLI 認定 GeForce GPU を搭載しているコンピュータのことです。&lt;br /&gt;
&lt;br /&gt;
{{ic|lspci}} を使って1つ目の GPU の PCI Bus ID を調べてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# lspci -d ::03xx|&lt;br /&gt;
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)&lt;br /&gt;
03:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)&lt;br /&gt;
04:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)&lt;br /&gt;
08:00.0 3D controller: NVIDIA Corporation GM108GLM [Quadro K620M / Quadro M500M] (rev a2)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
調べた BusID (前述の例では 3) を {{ic|Device}} セクション内に追加してください:&lt;br /&gt;
&lt;br /&gt;
 BusID &amp;quot;PCI:3:0:0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|フォーマットが重要です。BusID の値は {{ic|&amp;quot;PCI:&amp;lt;BusID&amp;gt;:0:0&amp;quot;}} のように指定されなければなりません。}}&lt;br /&gt;
&lt;br /&gt;
希望する SLI レンダリングモードの値を {{ic|Screen}} セクション内に追加してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;SLI&amp;quot; &amp;quot;AA&amp;quot;&lt;br /&gt;
&lt;br /&gt;
以下の表は利用可能なレンダリングモードです。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 値 !! 挙動&lt;br /&gt;
|-&lt;br /&gt;
| 0, no, off, false, Single || レンダリング時にただ1つの GPU を使う。&lt;br /&gt;
|-&lt;br /&gt;
| 1, yes, on, true, Auto || SLI を有効化し、ドライバーが自動的に適切なレンダリングモードを選択することを許可する。&lt;br /&gt;
|-&lt;br /&gt;
| AFR || SLI を有効化し、Alternate Frame Rendering モードを使う。&lt;br /&gt;
|-&lt;br /&gt;
| SFR || SLI を有効化し、Split Frame Rendering モードを使う。&lt;br /&gt;
|-&lt;br /&gt;
| AA || SLI を有効化し、SLI アンチエイリアシングを使う。この値を Full-Scene アンチエイリアシングと一緒に使うと視覚品質が向上します。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
あるいは、&#039;&#039;nvidia-xconfig&#039;&#039; ユーティリティを使って、これらの変更を {{ic|xorg.conf}} に追加できます:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig --busid=PCI:3:0:0 --sli=AA&lt;br /&gt;
&lt;br /&gt;
SLI モードが有効化されていることをシェルから確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q all {{!}} grep SLIMode|&lt;br /&gt;
  Attribute &#039;SLIMode&#039; (arch:0.0): AA&lt;br /&gt;
    &#039;SLIMode&#039; is a string attribute.&lt;br /&gt;
    &#039;SLIMode&#039; is a read-only attribute.&lt;br /&gt;
    &#039;SLIMode&#039; can use the following target types: X Screen.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|SLI を有効化した後に xorg を起動するとシステムがフリーズしたり、応答しなくなったりするかもしれません。再起動する前にディスプレイマネージャーを無効化することをおすすめします。}}&lt;br /&gt;
&lt;br /&gt;
以上の設定で機能しない場合は、{{ic|nvidia-settings}} で得られる PCI Bus ID を使用する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q all {{!}} grep -i pcibus|&lt;br /&gt;
Attribute &#039;PCIBus&#039; (host:0[gpu:0]): 101.&lt;br /&gt;
  &#039;PCIBus&#039; is an integer attribute.&lt;br /&gt;
  &#039;PCIBus&#039; is a read-only attribute.&lt;br /&gt;
  &#039;PCIBus&#039; can use the following target types: GPU, SDI Input Device.&lt;br /&gt;
Attribute &#039;PCIBus&#039; (host:0[gpu:1]): 23.&lt;br /&gt;
  &#039;PCIBus&#039; is an integer attribute.&lt;br /&gt;
  &#039;PCIBus&#039; is a read-only attribute.&lt;br /&gt;
  &#039;PCIBus&#039; can use the following target types: GPU, SDI Input Device.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、xorg.d 内の PrimaryGPU オプションをコメントアウトしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
    # Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この設定でグラフィカルブートの問題も解決できるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== マルチモニター ===&lt;br /&gt;
&lt;br /&gt;
一般的な情報は [[マルチディスプレイ]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Settings を使う ====&lt;br /&gt;
&lt;br /&gt;
[[#nvidia-settings|nvidia-settings]] ツールを使ってマルチモニターを設定できます。&lt;br /&gt;
&lt;br /&gt;
CLI で設定する場合、まずは以下を実行して {{ic|CurrentMetaMode}} を確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nvidia-settings -q CurrentMetaMode|2=&lt;br /&gt;
Attribute &#039;CurrentMetaMode&#039; (hostnmae:0.0): id=50, switchable=no, source=nv-control :: DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|::}} 以降の全て (上記の場合: {{ic|1=DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0&amp;amp;#125;}}) を使って {{ic|1=nvidia-settings --assign &amp;quot;CurrentMetaMode=&#039;&#039;your_meta_mode&#039;&#039;&amp;quot;}} でディスプレイを再設定できます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|使用するモニターや解像度の設定ごとにシェルのエイリアスを作成すると便利です。}}&lt;br /&gt;
&lt;br /&gt;
==== ConnectedMonitor ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|{{ic|Option &amp;quot;TwinView&amp;quot;}} はバージョン 302.07 で削除され、TwinView は常に有効になっています。}}&lt;br /&gt;
&lt;br /&gt;
ドライバーがセカンドモニタを正しく認識しない場合は、ConnectedMonitor を使って認識するように強制できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor1&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Panasonic&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;Panasonic MICRON 2100Ex&amp;quot;&lt;br /&gt;
    HorizSync       30.0 - 121.0 # this monitor has incorrect EDID, hence Option &amp;quot;UseEDIDFreqs&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
    VertRefresh     50.0 - 160.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor2&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;Gateway&amp;quot;&lt;br /&gt;
    ModelName      &amp;quot;GatewayVX1120&amp;quot;&lt;br /&gt;
    HorizSync       30.0 - 121.0&lt;br /&gt;
    VertRefresh     50.0 - 160.0&lt;br /&gt;
    Option         &amp;quot;DPMS&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device1&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option         &amp;quot;NoLogo&amp;quot;&lt;br /&gt;
    Option         &amp;quot;UseEDIDFreqs&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
    Option         &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT,CRT&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 6200 LE&amp;quot;&lt;br /&gt;
    BusID          &amp;quot;PCI:3:0:0&amp;quot;&lt;br /&gt;
    Screen          0&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Device2&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option         &amp;quot;NoLogo&amp;quot;&lt;br /&gt;
    Option         &amp;quot;UseEDIDFreqs&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
    Option         &amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT,CRT&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
    BoardName      &amp;quot;GeForce 6200 LE&amp;quot;&lt;br /&gt;
    BusID          &amp;quot;PCI:3:0:0&amp;quot;&lt;br /&gt;
    Screen          1&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|TwinView}} を使わずに1つのカードで2つのモニターを X で使うために {{ic|Screen}} でデバイスを複製しています。{{ic|nvidia-settings}} は追加した {{ic|ConnectedMonitor}} オプションを全て消してしまうので注意してください。&lt;br /&gt;
&lt;br /&gt;
==== TwinView ====&lt;br /&gt;
&lt;br /&gt;
{{Out of date|{{ic|Option &amp;quot;TwinView&amp;quot;}} はバージョン 302.07 で削除され、TwinView は常に有効になっています。}}&lt;br /&gt;
&lt;br /&gt;
画面を2つ表示するのではなく1つの大きな画面を表示したい場合、{{ic|TwinView}} 引数を {{ic|1}} に設定してください。コンポジットを使いたい場合、このオプションを使用する必要があります。TwinView は全てのモニターが同一のカードに接続されている場合にのみ機能します。&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;TwinView&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
設定例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-monitor.conf|&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;TwinLayout&amp;quot;&lt;br /&gt;
    Screen         0 &amp;quot;metaScreen&amp;quot; 0 0&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Enable&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Monitor1&amp;quot;&lt;br /&gt;
    Option         &amp;quot;Enable&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;Card0&amp;quot;&lt;br /&gt;
    Driver         &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    VendorName     &amp;quot;NVIDIA Corporation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #refer to the link below for more information on each of the following options.&lt;br /&gt;
    Option         &amp;quot;HorizSync&amp;quot;          &amp;quot;DFP-0: 28-33; DFP-1 28-33&amp;quot;&lt;br /&gt;
    Option         &amp;quot;VertRefresh&amp;quot;        &amp;quot;DFP-0: 43-73; DFP-1 43-73&amp;quot;&lt;br /&gt;
    Option         &amp;quot;MetaModes&amp;quot;          &amp;quot;1920x1080, 1920x1080&amp;quot;&lt;br /&gt;
    Option         &amp;quot;ConnectedMonitor&amp;quot;   &amp;quot;DFP-0, DFP-1&amp;quot;&lt;br /&gt;
    Option         &amp;quot;MetaModeOrientation&amp;quot; &amp;quot;DFP-1 LeftOf DFP-0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
    Identifier     &amp;quot;metaScreen&amp;quot;&lt;br /&gt;
    Device         &amp;quot;Card0&amp;quot;&lt;br /&gt;
    Monitor        &amp;quot;Monitor0&amp;quot;&lt;br /&gt;
    DefaultDepth    24&lt;br /&gt;
    Option         &amp;quot;TwinView&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
    SubSection &amp;quot;Display&amp;quot;&lt;br /&gt;
        Modes          &amp;quot;1920x1080&amp;quot;&lt;br /&gt;
    EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://download.nvidia.com/XFree86/Linux-x86_64/560.35.03/README/configtwinview.html Device オプション情報]。&lt;br /&gt;
&lt;br /&gt;
SLI に対応しているカードが複数枚存在する場合、別々のカードに接続された複数のモニターを使うことができます (例: 2枚のカードが SLI で、各々のカードにモニターが1台ずつ接続)。SLI モザイクモードと &amp;quot;MetaModes&amp;quot; オプションで有効になります。以下は上記と同じように設定する例で、[[GNOME]] が完璧に動作します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-monitor.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Card A&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;nvidia&amp;quot;&lt;br /&gt;
        BusID           &amp;quot;PCI:1:00:0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Card B&amp;quot;&lt;br /&gt;
        Driver          &amp;quot;nvidia&amp;quot;&lt;br /&gt;
        BusID           &amp;quot;PCI:2:00:0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Right Monitor&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Monitor&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Left Monitor&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Right Screen&amp;quot;&lt;br /&gt;
        Device          &amp;quot;Card A&amp;quot;&lt;br /&gt;
        Monitor         &amp;quot;Right Monitor&amp;quot;&lt;br /&gt;
        DefaultDepth    24&lt;br /&gt;
        Option          &amp;quot;SLI&amp;quot; &amp;quot;Mosaic&amp;quot;&lt;br /&gt;
        Option          &amp;quot;Stereo&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
        Option          &amp;quot;BaseMosaic&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
        Option          &amp;quot;MetaModes&amp;quot; &amp;quot;GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0&amp;quot;&lt;br /&gt;
        SubSection      &amp;quot;Display&amp;quot;&lt;br /&gt;
                        Depth           24&lt;br /&gt;
        EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;Screen&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Left Screen&amp;quot;&lt;br /&gt;
        Device          &amp;quot;Card B&amp;quot;&lt;br /&gt;
        Monitor         &amp;quot;Left Monitor&amp;quot;&lt;br /&gt;
        DefaultDepth    24&lt;br /&gt;
        Option          &amp;quot;SLI&amp;quot; &amp;quot;Mosaic&amp;quot;&lt;br /&gt;
        Option          &amp;quot;Stereo&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
        Option          &amp;quot;BaseMosaic&amp;quot; &amp;quot;True&amp;quot;&lt;br /&gt;
        Option          &amp;quot;MetaModes&amp;quot; &amp;quot;GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0&amp;quot;&lt;br /&gt;
        SubSection      &amp;quot;Display&amp;quot;&lt;br /&gt;
                        Depth           24&lt;br /&gt;
        EndSubSection&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;ServerLayout&amp;quot;&lt;br /&gt;
        Identifier      &amp;quot;Default&amp;quot;&lt;br /&gt;
        Screen 0        &amp;quot;Right Screen&amp;quot; 0 0&lt;br /&gt;
        Option          &amp;quot;Xinerama&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== TwinView を使って垂直同期 =====&lt;br /&gt;
&lt;br /&gt;
TwinView と垂直同期 (&#039;&#039;&#039;nvidia-settings&#039;&#039;&#039; の &amp;quot;Sync to VBlank&amp;quot; オプション) を使っている場合、モニターの大きさが異なっていると片方の画面だけが同期されます。&#039;&#039;&#039;nvidia-settings&#039;&#039;&#039; にはどちらの画面を同期させるか設定するオプション (&amp;quot;Sync to this display device&amp;quot; オプション) が存在しますが、必ずしも機能するとはいいがたいです。起動時に以下の環境変数を追加することで解決します (例: {{ic|/etc/profile}} に追加):&lt;br /&gt;
&lt;br /&gt;
 export __GL_SYNC_TO_VBLANK=1&lt;br /&gt;
 export __GL_SYNC_DISPLAY_DEVICE=DFP-0&lt;br /&gt;
 export VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=DFP-0&lt;br /&gt;
&lt;br /&gt;
{{ic|DFP-0}} は適切な画面に置き換えてください ({{ic|DFP-0}} は DVI 端子で {{ic|CRT-0}} は VGA 端子です)。ディスプレイの識別名は &#039;&#039;&#039;nvidia-settings&#039;&#039;&#039; の &amp;quot;X Server XVideoSettings&amp;quot; セクションで確認できます。&lt;br /&gt;
&lt;br /&gt;
===== Twinview を使ってゲームを遊ぶ =====&lt;br /&gt;
&lt;br /&gt;
TwinView を使ってフルスクリーンのゲームを遊ぶ場合、2つの画面が1つの大きな画面としてゲームから認識されることがあります。技術的にこれは正しいのですが (仮想的な X スクリーンの横幅は両方の画面を合わせたサイズになります)、ゲームを遊ぶときは両方の画面を使わないようにしたいときもあるでしょう。&lt;br /&gt;
&lt;br /&gt;
SDL のこの挙動を修正するには、次を試して下さい:&lt;br /&gt;
&lt;br /&gt;
 export SDL_VIDEO_FULLSCREEN_HEAD=1&lt;br /&gt;
&lt;br /&gt;
OpenGL の場合、{{ic|xorg.conf}} の {{ic|Device}} セクションに適切な Metamodes を追加して X を再起動してください:&lt;br /&gt;
&lt;br /&gt;
 Option &amp;quot;Metamodes&amp;quot; &amp;quot;1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL; 1280x1024,NULL;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[ゲーム#別の X サーバーでゲームを起動する|別の X サーバーでゲームを起動する]]方法もあります。上記の方法と一緒に使うことも可能です。&lt;br /&gt;
&lt;br /&gt;
==== モザイクモード ====&lt;br /&gt;
&lt;br /&gt;
モザイクモードは、複数のグラフィクカードでコンポジット有りで3つ以上のモニタを使用する唯一の方法です。ウィンドウマネージャは各モニタの違いを認識するかもしれませんし、しないかもしれません。モザイクモードには、有効な SLI 設定が必要です。SLI を使わずにベースモードを使用する場合でも、GPU は依然として SLI 対応/互換でなければなりません。&lt;br /&gt;
&lt;br /&gt;
===== ベースモザイク =====&lt;br /&gt;
&lt;br /&gt;
ベースモザイクモードは Geforce 8000 シリーズ以上の GPU で動作します。nvidia-setting の GUI から有効にすることはできません。&#039;&#039;nvidia-xconfig&#039;&#039; コマンドラインプログラムを使用するか {{ic|xorg.conf}} を手動で編集する必要があります。Metamodes を指定してください。以下は4台の DFP を 2x2 の構成で使用する例です。各々の解像度は 1920x1024 で、2枚のカードにそれぞれ2台の DFP が接続されている場合:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig --base-mosaic --metamodes=&amp;quot;GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|ドキュメントには 2x2 のモニター構成が記述されていますが、Base Mosaic モードで[https://forums.developer.nvidia.com/t/basemosaic-v295-vs-v310-vs-v325-only-up-to-three-screens/30583#3954733 GeForce カードは人為的にモニタ3台に制限されています]。Quadro カードは4台以上のモニタをサポートしています。2014年9月現在、Windows ドライバはこの人為的な制限を落としましたが、Linux ドライバでは未だに残っています。}}&lt;br /&gt;
&lt;br /&gt;
===== SLI モザイク =====&lt;br /&gt;
&lt;br /&gt;
SLI 構成を使っていて、使用する GPU が Quadro FX 5800 や Quadro Fermi 以降の場合、SLI モザイクモードが利用できます。nvidia-settings の GUI の中から有効化するか、コマンドラインで設定してください:&lt;br /&gt;
&lt;br /&gt;
 # nvidia-xconfig --sli=Mosaic --metamodes=&amp;quot;GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== NVswitch ==&lt;br /&gt;
&lt;br /&gt;
NVswitch のあるシステム (AWS の H100x8 など) では、以下が必要です。&lt;br /&gt;
&lt;br /&gt;
* nvidia-fabricmanager をインストールする。&lt;br /&gt;
* Fabric manager が必要とする、対応するカーネルモジュールをインストールする。&lt;br /&gt;
&lt;br /&gt;
Fabric manager を使うと、pytorch が GPU が見つからないと報告してきます。&lt;br /&gt;
&lt;br /&gt;
Fabric マネージャをインストールするには:&lt;br /&gt;
&lt;br /&gt;
# Nvidia から tarball をダウンロードする。[https://developer.download.nvidia.com/compute/cuda/redist/fabricmanager/linux-x86_64/ こちら]&lt;br /&gt;
# バージョン 555.42.02 は正しく動作します。&lt;br /&gt;
# インストールスクリプト sbin/fm_run_package_installer.sh を変更してしてインストール先のパスを修正してください。&lt;br /&gt;
&lt;br /&gt;
対応するカーネルドライバを入手するには:&lt;br /&gt;
&lt;br /&gt;
# nvidia-beta-dkms と nvidia-utils-beta の AUR リポジトリを git clone してください。&lt;br /&gt;
# PKGBUILD を変更してバージョン 555.42.02 を使用するようにしてください。&lt;br /&gt;
# ビルドし、インストールしてください。&lt;br /&gt;
# 再起動してください。&lt;br /&gt;
&lt;br /&gt;
最後に、{{ic|systemctl enable nvidia-fabricmanager}} と {{ic|systemctl start nvidia-fabricmanager}} を実行すれば、pytorch が動くはずです。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA/ヒントとテクニック]] を参照。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA/トラブルシューティング]] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://forums.developer.nvidia.com/t/current-graphics-driver-releases/28500 Current graphics driver releases in official NVIDIA Forum]&lt;br /&gt;
* [https://forums.developer.nvidia.com/c/gpu-graphics/linux/148 NVIDIA Developers Forum - Linux Subforum]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NVIDIA|2025-06-28|839409}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%AE%E5%90%91%E4%B8%8A&amp;diff=40469</id>
		<title>パフォーマンスの向上</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%81%AE%E5%90%91%E4%B8%8A&amp;diff=40469"/>
		<updated>2025-06-28T06:32:40Z</updated>

		<summary type="html">&lt;p&gt;AshMyzk: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ハードウェア]]&lt;br /&gt;
[[Category:システム管理]]&lt;br /&gt;
[[en:Improving performance]]&lt;br /&gt;
[[es:Improving performance]]&lt;br /&gt;
[[fr:Improving performance]]&lt;br /&gt;
[[pl:Improving performance]]&lt;br /&gt;
[[pt:Improving performance]]&lt;br /&gt;
[[ru:Improving performance]]&lt;br /&gt;
[[zh-hans:Improving performance]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|パフォーマンスの向上/ブートプロセス}}&lt;br /&gt;
{{Related|Pacman ヒント#パフォーマンス}}&lt;br /&gt;
{{Related|OpenSSH#SSH の高速化}}&lt;br /&gt;
{{Related|OpenOffice#OpenOffice の高速化}}&lt;br /&gt;
{{Related|ノートパソコン}}&lt;br /&gt;
{{Related|Preload}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
この記事では、知覚または計測できるシステムパフォーマンスの向上を最終目的として、パフォーマンスに関連する基本的なシステム診断、及び、リソース消費量の削減やシステム最適化のための手順に関する情報を提供しています。ゲーミングおよび低レイテンシに特有のその他のアドバイスは [[ゲーム#パフォーマンスを向上させる]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== 基本 ==&lt;br /&gt;
&lt;br /&gt;
=== システムを知る ===&lt;br /&gt;
&lt;br /&gt;
システムをチューンするには、全体のスピードを下げているボトルネックやサブシステムに狙いを定めるがベストな方法です。システムの仕様を知ることは、それらを特定することに役立ちます。&lt;br /&gt;
&lt;br /&gt;
* (LibreOffice や Firefox などの) 巨大なアプリケーションを同時に動作させたときにコンピュータが遅くなる場合、RAM の容量が十分であるか確認してください。以下のコマンドを使って、&amp;quot;available&amp;quot; 列の値を確認してください: {{bc|$ free -h}}&lt;br /&gt;
* 起動時間が長い場合、または、アプリケーションを初めて起動するとき (だけ) にロードに長い時間が掛かる場合、おそらくハードドライブが遅過ぎます。ハードドライブの速度を計測するには {{ic|hdparm}} コマンドを使うことができます: {{bc|# hdparm -t /dev/sd&#039;&#039;X&#039;&#039;}} {{Note|{{Pkg|hdparm}} で出力されるのはハードドライブの純粋な読み込み速度なので、有効なベンチマークとは言えませんが、平均的なコンピュータでは (アイドル状態のときに) 40MB/s より高い数値が出るのが妥当です。}}&lt;br /&gt;
* 十分な RAM が利用できる時でも CPU 負荷が一貫して高い場合、不要な[[デーモン]]やプロセスを無効化するなどして CPU 使用量を減らすことを試みてください。{{Pkg|htop}} や {{ic|pstree}} などの[[アプリケーション一覧/ユーティリティ#システム監視|システム監視ツール]]で CPU 負担をモニタすることができます: {{bc|$ htop}}&lt;br /&gt;
* ダイレクトレンダリングを使うアプリケーション (つまり、ビデオプレイヤ、ゲーム、[[ウィンドウマネージャ]]などの GPU を使うアプリケーション) が遅い場合、GPU パフォーマンスを向上させることで解決するはずです。まず初めにダイレクトレンダリングが有効になっているかどうか確認しましょう。{{ic|glxinfo}} コマンドを使うことで確認できます ({{Pkg|mesa-utils}} パッケージに含まれています)。次のコマンドを実行すると {{ic|direct rendering: Yes}} と表示される必要があります: {{bc|$ glxinfo {{!}} grep &amp;quot;direct rendering&amp;quot;}}&lt;br /&gt;
* [[デスクトップ環境]]を動かしている場合、(不要な) 視覚デスクトップ効果を無効化することで GPU 使用率を削減できる場合があります。現在使用しているものがハードウェアや個人の要件に合わない場合、より軽量な環境を使用するか、[[デスクトップ環境#カスタム環境|カスタムの環境]]を作成しましょう。&lt;br /&gt;
* 最適化された[[カーネル]]を使用することでパフォーマンスを向上できます。一般に {{Pkg|linux-zen}} が良い選択肢です。しかし、この記事の特定の部分で説明されているように、デフォルトのカーネルを調節することで良いパフォーマンスを得られます。&lt;br /&gt;
&lt;br /&gt;
=== ベンチマーク ===&lt;br /&gt;
&lt;br /&gt;
最適化の効果を判断できないことがたびたびあります。そういった場合は[[ベンチマーク]]ツールで計測することができます。&lt;br /&gt;
&lt;br /&gt;
== ストレージデバイス ==&lt;br /&gt;
&lt;br /&gt;
==== セクタサイズ ====&lt;br /&gt;
&lt;br /&gt;
NVMe ドライブや Advanced Format ハードディスクが[[アドバンスドフォーマット|適切な論理セクタサイズ]]を使用していることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== パーティショニング ===&lt;br /&gt;
&lt;br /&gt;
パーティションが[[パーティショニング#パーティションアライメント|適切にアライメントされている]]ことを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== 複数のドライブ ====&lt;br /&gt;
&lt;br /&gt;
複数のドライブを持っているのであれば、ソフトウェア [[RAID]] を組んでパフォーマンスを劇的に向上させることができます。&lt;br /&gt;
&lt;br /&gt;
[[スワップ]]を別のディスク上に作成することでもパフォーマンスを多少向上させることができます。特に、スワップが頻繁に発生する場合です。&lt;br /&gt;
&lt;br /&gt;
===== SSD を HDD のキャッシュとして使う =====&lt;br /&gt;
&lt;br /&gt;
ハードディスクから移行することができない場合、ソリッドステートドライブをキャッシュレイヤとして使うことで読み書き速度を向上させ、ランダムアクセスによるパフォーマンスの低下を減らすことができます。方法としては、[[LVM#キャッシュ]]、[[Bcache]]、[[Bcachefs#SSD キャッシング]] があります。&lt;br /&gt;
&lt;br /&gt;
==== HDD でのレイアウト ====&lt;br /&gt;
&lt;br /&gt;
従来の回転式 HDD を使用している場合、パーティションのレイアウトがシステムのパフォーマンスに影響を与える可能性があります。ドライブの最初のセクター（ディスクの外周の近く）は最後のセクターよりも高速です。また、パーティションを小さくすれば必要なドライブヘッドの移動が少なくなり、ディスク操作をスピードアップできます。従って、システムのために作るパーティションは小さく (15~20GiB、必要に応じて調節) して、できるだけドライブの最初に配置することが推奨されます。他のデータ（画像・動画など）は別のパーティションに置くべきです。通常、システム ({{ic|/}}) から home ディレクトリ ({{ic|/home}}) を分割することでこれを達成できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|このページのすべてのアドバイスにおいて言えることですが、得られる利益を計測してください: ハードドライブを[https://blog.stuffedcow.net/2019/09/hard-disk-geometry-microbenchmarking/#shortstroke ショートストローク]したり、合計容量の数％しか使わないようにしたりしない限り、一般的な使用においては読み書き操作が依然としてドライブ全体に及ぶため、パーティションを分割してもほんの数%しかアクセス時間は改善されません。それと比べて、SSD にアップグレードするとパフォーマンスが1桁以上向上します。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステムの選択とチューニング ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムごとに強みが異なるのでシステムごとにファイルシステムを選ぶことはとても重要です。[[ファイルシステム]]の記事に人気のあるファイルシステムの簡単な説明がされています。[[:カテゴリ:ファイルシステム]]から関連記事も見ることができます。&lt;br /&gt;
&lt;br /&gt;
==== マウントオプション ====&lt;br /&gt;
&lt;br /&gt;
様々な [[fstab#atime オプション|*atime]] オプションが、{{ic|strictatime}} のパフォーマンスのペナルティを軽減することができます。&lt;br /&gt;
&lt;br /&gt;
他のマウントオプションはファイルシステム固有なので、ファイルシステムの関連記事を参照してください:&lt;br /&gt;
&lt;br /&gt;
* [[Ext3]]&lt;br /&gt;
* [[Ext4#パフォーマンスの向上]]&lt;br /&gt;
* [[JFS#最適化]]&lt;br /&gt;
* [[XFS#パフォーマンス]]&lt;br /&gt;
* [[Btrfs#デフラグメンテーション]]、[[Btrfs#圧縮]]、{{man|5|btrfs}}&lt;br /&gt;
* [[ZFS#チューニング]]&lt;br /&gt;
* [[NTFS#パフォーマンスの向上]]&lt;br /&gt;
&lt;br /&gt;
===カーネルパラメータの調整===&lt;br /&gt;
&lt;br /&gt;
ブロックデバイスのパフォーマンスに影響するキーが複数存在します、詳しくは [[sysctl#仮想メモリ]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== I/O スケジューラの設定 ===&lt;br /&gt;
&lt;br /&gt;
==== 背景情報 ====&lt;br /&gt;
&lt;br /&gt;
入出力 &#039;&#039;(I/O)&#039;&#039; スケジューラはストレージデバイスにブロック I/O の操作を送信するときの順番を決めるカーネルコンポーネントです。I/O スケジューラの目的は読み込みリクエストを最適な方法で扱うことであるため、以下の2つのドライブの特徴を押さえておくことが重要です:&lt;br /&gt;
&lt;br /&gt;
* HDD は回転ディスクでありヘッドが物理的に必要な場所に移動します。そのため、ランダムアクセスは 3〜12ms と非常に遅くなります (ハイエンドサーバーのドライブなのかノートパソコンのドライブなのか、あるいはディスクコントローラの書き込みバッファを迂回するかなどで速度は変わります)。逆に連続アクセスなら高いスループットを得ることが可能です。連続アクセスならヘッドはほとんど動かなくてよいためです。典型的な HDD は毎秒200回ほどの I/O リクエストを処理することができます &#039;&#039;(IOPS)&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
* SSD には物理的に移動する部品がありません。ランダムアクセスはシーケンシャルアクセスと同じ速度が出ます (0.1ms 未満)。SSD は複数のリクエストを一度にこなすこともできます。典型的な SSD のスループットは 10,000 IOPS を超えるため、大抵の場合は必要な仕事量を上回ります。&lt;br /&gt;
&lt;br /&gt;
プロセスを大量に実行してストレージの様々な場所の I/O リクエストを発生させているとき (つまりランダムアクセスをしている状態)、数千の IOPS が生成されますが、普通の HDD では 200 IOPS までしか対応できません。ストレージにアクセスできるまで待機するリクエストの待ち行列が作られることになります。I/O スケジューラはこの待ち行列を最適化します。&lt;br /&gt;
&lt;br /&gt;
==== スケジューリングアルゴリズム ====&lt;br /&gt;
&lt;br /&gt;
スループットを改善する方法の一つとして、待機リクエストの順番を論理アドレスで並び替えてできるだけ一番近いリクエストを通すことで、アクセスをリニア化する方法があります。これが [[w:ja:エレベータアルゴリズム|elevator]] スケジューラと呼ばれる Linux の最初の I/O スケジューラでした。&lt;br /&gt;
&lt;br /&gt;
エレベータアルゴリズムの問題点はシーケンシャルアクセスをするプロセスが上手く動かなくなることです。そのようなプロセスは、データブロックを読み取って数マイクロ秒で処理してから次のブロックを読み出します。エレベータスケジューラはプロセスが近くのブロックを呼びだそうとしていることを知らないため、他の場所のリクエストに移ってしまいます。[[w:Anticipatory_scheduling|anticipatory]] IO スケジューラはこの問題を解決します。このスケジューラは、他のリクエストを処理する前に、近くで別の読み取り操作が発生することを予測して、数ミリ秒待機します。&lt;br /&gt;
&lt;br /&gt;
上述のスケジューラはどちらも全体のスループットを改善することを目指していましたが、それによって不幸にも長い間待たされてしまうリクエストも発生していました。例えば、プロセスの多くがストレージ領域の最初の部分をリクエストしていて、不幸なプロセスはストレージの末端付近をリクエストしているような状況を考えて下さい。そのため、開発者は公平なアルゴリズムを作成することを決めて [[w:Deadline_scheduler|deadline]] スケジューラが追加されました。deadline スケジューラはアドレスによってキューの順番を決めますが (エレベーターアルゴリズムと同じ)、一定期間、リクエストがキューの中で待機した場合、リクエストを (経過時間によって順番が付けられる) &amp;quot;expired&amp;quot; キューに移動します。スケジューラは先に expired キューをチェックして、リクエストを処理してからエレベーターキューに移動します。このアルゴリズムは公平性のために全体のスループットを犠牲にしているわけです。&lt;br /&gt;
&lt;br /&gt;
[[w:CFQ|Completely Fair Queuing (CFQ)]] は別のアプローチで問題に取り組みました。CFQ はプロセスの優先度に基づくキューを使ってタイムスライスと許容するリクエストの数を割り当てます。さらに [[cgroups]] のサポートを追加することで特定のプロセスグループに一定の IO を予約できるようにしました。これは共有・クラウドサーバーで特に役立ちます。ユーザーはリソースが必要なときに料金を払って IOPS を得られるのです。また、同期 I/O で近くの操作を待機するという &#039;&#039;anticipatory&#039;&#039; スケジューラの機能を改良して取り入れています。&#039;&#039;anticipatory&#039;&#039; と &#039;&#039;elevator&#039;&#039; スケジューラは Linux カーネルから外され、下記のより高度な代替スケジューラに置き換えられました。&lt;br /&gt;
&lt;br /&gt;
[https://docs.kernel.org/block/bfq-iosched.html Budget Fair Queuing (BFQ)] は CFQ のコードをベースにいくつか改善を加えています。各プロセスに固定長のタイムスライスを与えるかわりに、プロセスのセクタ数から計算した &amp;quot;budget&amp;quot; を割り当ててヒューリスティックを用います。BFQ は想定的に複雑なスケジューラであるため、オーバーヘッドが大きく、回転ドライブや低速 SSD に適しています。特に遅い CPU と組み合わせたときに高速なデバイスの足を引っ張ってしまうような場合に有用です。BFQ は個人用のシステムでインタラクティブな作業を行うときに、ストレージデバイスがまるで待機状態のときのように素早く反応することを目標としています。デフォルト設定ではスループットの最大化よりもレイテンシの最小化が優先されているのが特徴です。これにより、ハードドライブにおいて[https://www.phoronix.com/review/linux-50hdd-io/2 アプリケーションの起動を劇的に加速化]させられる場合があります。&lt;br /&gt;
&lt;br /&gt;
[https://lwn.net/Articles/720675/ Kyber] はネットワークルーティングで用いられている積極的なキュー管理テクニックから生まれた新しいスケジューラです。リクエストを制限するメカニズムとして「トークン」を基に実装されています。 リクエストの割当を受けるにはキューイングトークンを必要とすることで、リクエストのスタベーションを防ぎます。ディスパッチトークンによってデバイスの特定の優先度の操作に制限されます。さらに、ターゲットの読み込みレイテンシを定義して、レイテンシ目標を達成するためにスケジューラ自身がチューニングを行います。アルゴリズムの実装は比較的シンプルなので高速なデバイスでも効率的に機能します。&lt;br /&gt;
&lt;br /&gt;
==== カーネルの I/O スケジューラ ====&lt;br /&gt;
&lt;br /&gt;
初期のアルゴリズムには既にメインラインから外されているものもあります。公式の Linux カーネルはいくつかの I/O スケジューラをサポートしています。[https://www.thomas-krenn.com/en/wiki/Linux_Multi-Queue_Block_IO_Queueing_Mechanism_(blk-mq) Multi-Queue Block I/O Queuing Mechanism (blk-mq)] は I/O クエリを複数のキューに割り当てて、複数のスレッドおよび CPU コアにタスクを分散させます。このフレームワークでは以下のスケジューラが使えます:&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;None&#039;&#039;、キューイングアルゴリズムは適用されません。&lt;br /&gt;
*&#039;&#039;mq-deadline&#039;&#039; は deadline スケジューラ (下記を参照) をマルチスレッドに対応させたスケジューラです。&lt;br /&gt;
*&#039;&#039;Kyber&#039;&#039;&lt;br /&gt;
*&#039;&#039;BFQ&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== I/O スケジューラの変更 ====&lt;br /&gt;
&lt;br /&gt;
{{Note|スケジューラーの最適な選択は、デバイスとワークロードの正確な性質の両方によって異なります。 また、MB/秒単位のスループットだけがパフォーマンスの指標ではありません。デッドラインや公平性は全体的なスループットを低下させますが、システムの応答性を向上させる可能性があります。 [[ベンチマーク]] は、各 I/O スケジューラのパフォーマンスを示すのに役立つ場合があります。}}&lt;br /&gt;
&lt;br /&gt;
特定のデバイスで利用可能なスケジューラとアクティブなスケジューラを表示するには (アクティブなスケジューラは角括弧の中):&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /sys/block/&#039;&#039;&#039;&#039;&#039;sda&#039;&#039;&#039;&#039;&#039;/queue/scheduler|&lt;br /&gt;
mq-deadline kyber [bfq] none&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
全デバイスで利用可能なスケジューラを表示するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ grep &amp;quot;&amp;quot; /sys/block/&#039;&#039;&#039;*&#039;&#039;&#039;/queue/scheduler|&lt;br /&gt;
/sys/block/pktcdvd0/queue/scheduler:none&lt;br /&gt;
/sys/block/sda/queue/scheduler:mq-deadline kyber [bfq] none&lt;br /&gt;
/sys/block/sr0/queue/scheduler:[mq-deadline] kyber bfq none&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デバイス &#039;&#039;sda&#039;&#039; のアクティブな I/O スケジューラを &#039;&#039;bfq&#039;&#039; に変更するには:&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;&#039;&#039;&#039;&#039;bfq&#039;&#039;&#039;&#039;&#039; &amp;gt; /sys/block/&#039;&#039;&#039;&#039;&#039;sda&#039;&#039;&#039;&#039;&#039;/queue/scheduler&lt;br /&gt;
&lt;br /&gt;
I/O スケジューラの変更プロセスは、ディスクが回転式か否かに応じて自動化することができ、起動毎に永続化させることができます。例えば、以下の [[udev]] ルールは、回転ドライブに対しては &#039;&#039;bfq&#039;&#039; を、[[SSD]]/eMMC ドライブに対しては &#039;&#039;bfq&#039;&#039; を、[[NVMe]] に対しては &#039;&#039;none&#039;&#039; を設定します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/60-ioschedulers.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# HDD&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;sd[a-z]*&amp;quot;, ATTR{queue/rotational}==&amp;quot;1&amp;quot;, ATTR{queue/scheduler}=&amp;quot;bfq&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# SSD&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;sd[a-z]*|mmcblk[0-9]*&amp;quot;, ATTR{queue/rotational}==&amp;quot;0&amp;quot;, ATTR{queue/scheduler}=&amp;quot;bfq&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# NVMe SSD&lt;br /&gt;
ACTION==&amp;quot;add|change&amp;quot;, KERNEL==&amp;quot;nvme[0-9]*&amp;quot;, ATTR{queue/rotational}==&amp;quot;0&amp;quot;, ATTR{queue/scheduler}=&amp;quot;none&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
再起動するか、強制的に[[udev#新しいルールをロードする|新しいルールをロード]]してください。&lt;br /&gt;
&lt;br /&gt;
==== IO スケジューラの調整 ====&lt;br /&gt;
&lt;br /&gt;
カーネルの I/O スケジューラには遅延・期限時間や FIFO パラメータなどそれぞれ設定項目が存在します。特定のデバイスとワークロードの組み合わせにあわせてアルゴリズムを調整することが可能です。スループットを高めたり遅延を少なくしたりするときに用います。&lt;br /&gt;
設定項目と説明は [https://docs.kernel.org/block/index.html カーネルドキュメント] で確認できます。&lt;br /&gt;
&lt;br /&gt;
特定のデバイスで設定可能なパラメータを確認するには (以下の例では &#039;&#039;sdb&#039;&#039; は &#039;&#039;deadline&#039;&#039; を使用しています):&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls /sys/block/&#039;&#039;&#039;&#039;&#039;sdb&#039;&#039;&#039;&#039;&#039;/queue/iosched|&lt;br /&gt;
fifo_batch  front_merges  read_expire  write_expire  writes_starved}}&lt;br /&gt;
&lt;br /&gt;
レイテンシを犠牲に &#039;&#039;deadline&#039;&#039; のスループットを高めるには以下のコマンドで {{ic|fifo_batch}} を増やします:&lt;br /&gt;
&lt;br /&gt;
{{bc|# echo &#039;&#039;32&#039;&#039; &amp;gt; /sys/block/&#039;&#039;&#039;&#039;&#039;sdb&#039;&#039;&#039;&#039;&#039;/queue/iosched/&#039;&#039;&#039;fifo_batch&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
=== 電源管理設定とライトキャッシュ ===&lt;br /&gt;
&lt;br /&gt;
従来の回転ディスク (HDD) を使用する場合は、省電力機能を完全に無効にするか下げるかし、書き込みキャッシュが有効になっているかどうかを確認すると良いかもしれません。&lt;br /&gt;
&lt;br /&gt;
[[Hdparm#電源管理の設定]] と [[Hdparm#ライトキャッシュ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
後で、起動時にこれらを適用する [[Hdparm#udev ルールによる永続的な設定|udev ルール]] を作成することができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[GNOME]] では、&amp;quot;ディスク&amp;quot; アプリケーションからこれらのパラメータのいくつかを設定でき、udev ルールは必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の機能はあなたのハードドライブではサポートされていないかもしれません。その場合、Hdparm が通知します。なので、この特定の機能の設定を無視してください。}}&lt;br /&gt;
&lt;br /&gt;
=== ディスクの読み書きを減らす ===&lt;br /&gt;
&lt;br /&gt;
遅いストレージデバイスへの不必要なアクセスを避けることはパフォーマンスを向上にとって良いことであり、デバイスの寿命を伸ばすことにも繋がります。ただし最近のハードウェアでは寿命への影響はわずかです。&lt;br /&gt;
&lt;br /&gt;
{{Note|書き込み増幅率が平凡な 10x で、書き込み/消去サイクルが標準的な 10000 である、32GB の SSD の場合、&#039;&#039;&#039;毎日 10GB のデータ書き込みを行うと&#039;&#039;&#039;、&#039;&#039;&#039;8年間で寿命が尽きる&#039;&#039;&#039;とされます。この数字はもっと[https://kcall.co.uk/ssd/ 容量が大きい SSD] を使ったり書き込み増幅が少ない最新のコントローラを使うことで改善されます。また、ディスクの書き込みを制限するのにどの方法が必要なのか考えるときは[https://web.archive.org/web/20161124030749/http://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead この耐久実験]も参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== ディスクの書き込みを表示する ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|iotop}} パッケージはプログラムをディスクの書き込み数でソートして、どれくらいの頻度でどれだけディスクに書き込んでいるか表示します。詳しくは {{man|8|iotop}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== ファイルを tmpfs に再配置する ====&lt;br /&gt;
&lt;br /&gt;
ブラウザプロファイルなどのファイルを [[tmpfs]] ファイルシステムに再配置してメモリ内に保存することで、アプリケーションのレスポンスを向上させることができます:&lt;br /&gt;
&lt;br /&gt;
* ブラウザプロファイルを同期させる方法については [[Profile-sync-daemon]] を参照してください。特定のブラウザには注意が必要な場合があります。例えば [[Firefox Ramdisk]] を参照してください。&lt;br /&gt;
* 任意の指定されたフォルダを同期させる方法については [[Anything-sync-daemon]] を参照してください。&lt;br /&gt;
* tmpfs 内でパッケージをビルドすることでコンパイル時間を減らす方法については [[Makepkg#ビルド時間を短縮する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ファイルシステム ====&lt;br /&gt;
&lt;br /&gt;
対応する[[ファイルシステム]]ページを参照して、パフォーマンス改善に関する指示があるか見てください。[[#ファイルシステムの選択とチューニング]] に挙げられているファイルシステムのリストも参照してください。&lt;br /&gt;
&lt;br /&gt;
==== スワップ領域 ====&lt;br /&gt;
&lt;br /&gt;
詳細は [[スワップ#パフォーマンス]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== ライトバックの間隔とバッファサイズ ====&lt;br /&gt;
&lt;br /&gt;
詳細は [[Sysctl#仮想メモリ]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== コアダンプを無効化する ====&lt;br /&gt;
&lt;br /&gt;
[[コアダンプ#自動的なコアダンプの無効化]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ionice によるストレージ I/O スケジューリング ===&lt;br /&gt;
&lt;br /&gt;
バックアップなど多くのタスクにおいては、そのタスクを実行するために、ストレージ I/O の遅延が短かったり、ストレージ I/O の帯域が大きかったりする必要はありません。そのようなタスクはバックグラウンドタスクに分類することができます。一方、デスクトップにおいて高速な I/O は UI の応答性を高める上で必須です。ゆえに、他のタスクがストレージ I/O を必要としている間は、バックグラウンドタスクによって利用できるストレージ帯域幅を減らすことが有益です。これは、プロセスごとに異なる優先度を設定できる Linux I/O スケジューラ BFQ を使用することで実現できます。&lt;br /&gt;
&lt;br /&gt;
以下のようにバックグラウンドプロセスを実行することで、プロセスの I/O 優先度 &amp;quot;Idle&amp;quot; レベルまで落とすことができます:&lt;br /&gt;
&lt;br /&gt;
 $ ionice -c 3 &#039;&#039;command&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳細は [https://www.cyberciti.biz/tips/linux-set-io-scheduling-class-priority.html a short introduction to ionice] や {{man|1|ionice}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== トリム ===&lt;br /&gt;
&lt;br /&gt;
最適なパフォーマンスを得るには、SSD の空きブロックを定期的に discard (トリム) してランダム書き込みの速度を最適化するべきです。詳細は [[ソリッドステートドライブ#TRIM]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ネットワーク ==&lt;br /&gt;
&lt;br /&gt;
* カーネルネットワーキング: [[Sysctl#パフォーマンスを向上させる]] を参照&lt;br /&gt;
* NIC: [[ネットワーク設定#MTU とキューの長さの設定]] を参照&lt;br /&gt;
* DNS: キャッシュ付きの DNS リゾルバの使用を検討してください。[[ドメイン名前解決#DNS サーバ]] を参照&lt;br /&gt;
* Samba: [[Samba#スループットを向上させる]] を参照&lt;br /&gt;
&lt;br /&gt;
== CPU ==&lt;br /&gt;
&lt;br /&gt;
=== オーバークロック ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:オーバークロック|オーバークロック]]は、CPU クロック周波数の上限を上げることにより、CPU の計算パフォーマンスを向上させます。オーバークロックできるかどうかは、CPU モデルとマザーボードモデルの組み合わせに依存します。オーバークロックは BIOS を介して行うのが最も一般的です。オーバークロックには欠点とリスクもあります。ここでは推奨も非推奨もしないでおきましょう。&lt;br /&gt;
&lt;br /&gt;
Intel 製のチップの多くは acpi_cpufreq などや他のほとんどのユーティリティに正しいクロック周波数を伝えません。この結果、[[dmesg]] は極端なメッセージを表示します (これは、{{ic|acpi_cpufreq}} カーネルモジュールをアンロードしてブラックリスト化することで回避可能です)。クロック速度を読むには、{{Pkg|i7z}} パッケージの &#039;&#039;i7z&#039;&#039; を使用してください。オーバークロックされた CPU が正しく動作していることを確認する方法として、[[ストレステスト]]が推奨されます。&lt;br /&gt;
&lt;br /&gt;
=== 周波数スケーリング ===&lt;br /&gt;
&lt;br /&gt;
[[CPU 周波数スケーリング]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== CPU スケジューラ ===&lt;br /&gt;
&lt;br /&gt;
メインライン Linux カーネルのデフォルトの CPU スケジューラは [https://lwn.net/Articles/925371/ EEVDF] です。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Brain_Fuck_Scheduler#MuQSS|MuQSS]]|Multiple Queue Skiplist Scheduler。[[Wikipedia:Con_Kolivas|Con Kolivas]] によって開発されている {{ic|-ck}} パッチセットにより利用可能。|[[非公式ユーザーリポジトリ/Repo-ck]]|{{AUR|linux-ck}}}}&lt;br /&gt;
* {{App|[https://cchalpha.blogspot.com/2020/05/project-c-announcement.html Project C]|BMQ を Project C にリファクタリングするためのクロスプロジェクト。Project C コードベースに基づいて PSD を再作成します。よって、これは2つのプロジェクトのマージであり、その後 PDS が Project C として更新されます。より最近の開発として推奨されます。|https://cchalpha.blogspot.com/|{{AUR|linux-prjc}}}}&lt;br /&gt;
* {{App|BORE|BORE スケジューラは、対話型タスクにおいてある程度の公平性を犠牲にして低レイテンシを実現することに焦点を当てています。CFS の上に構築されており、vruntime コード更新だけに調整されています。なので、他の非公式 CPU スケジューラと比較して、全体的な変更は非常に小さいです。|https://github.com/firelzrd/bore-scheduler|{{AUR|linux-cachyos-bore}}}}&lt;br /&gt;
* {{App|SCX|システムをリセットせずに様々な CPU スケジューラを動的にロードできるようにします。|https://github.com/sched-ext/scx|{{Pkg|scx-scheds}}}}&lt;br /&gt;
&lt;br /&gt;
=== リアルタイムカーネル ===&lt;br /&gt;
&lt;br /&gt;
(TV チューナーカードをフル HD 解像度 (1080p) で実行するなど) 一部の使用用途では、[[リアルタイムカーネル]]を使うと利益を得られる場合があります。&lt;br /&gt;
&lt;br /&gt;
=== プロセスの優先順位を設定 ===&lt;br /&gt;
&lt;br /&gt;
{{man|1|nice}} と {{man|1|renice}} も参照してください。&lt;br /&gt;
&lt;br /&gt;
==== Ananicy ====&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/ananicy-cpp/ananicy-cpp Ananicy CPP]  は動的に実行可能ファイルの nice レベルを調整するためのデーモンで、{{Pkg|ananicy-cpp}} や {{AUR|ananicy-cpp-git}} パッケージで利用可能です。nice レベルとは、CPU リソースを配分するときの実行可能ファイルの優先度を表すものです。&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=[[Gamemode]] と [https://gitlab.com/ananicy-cpp/ananicy-cpp Ananicy CPP] はどちらもプロセスの nice レベルを調整しようとします。これらのツールを組み合わせて使用することは推奨されていません。[https://github.com/CachyOS/ananicy-rules/blob/master/README.md#gamemode--ananicy-cpp--bad-idea]}}&lt;br /&gt;
&lt;br /&gt;
==== cgroups ====&lt;br /&gt;
&lt;br /&gt;
[[cgroups]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== LimitCPU ====&lt;br /&gt;
&lt;br /&gt;
[https://limitcpu.sourceforge.net/ LimitCPU] は特定のプロセスの CPU 使用率を制限するプログラムです。{{AUR|limitcpu}} をインストールすれば、プロセスの PID で CPU 使用率を 0 から 100 までの値にコンピュータに搭載されている CPU コア数をかけた数字の範囲で制限することができます。例えば、CPU コアが8個であれば利用可能な値は 0 から 800 です。使用例:&lt;br /&gt;
&lt;br /&gt;
 $ limitcpu -l 50 -p 5081&lt;br /&gt;
&lt;br /&gt;
=== irqbalance ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|irqbalance}} はマルチプロセッサシステムでパフォーマンスを向上させるためにプロセッサ間でハードウェア割り込みを分散させます。{{ic|irqbalance.service}} で[[systemd#ユニットを使う|操作]]することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== CPU の脆弱性の緩和策をオフにする ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=以下の設定を使うときは問題の脆弱性について確認してください。詳しくは [https://phoronix.com/scan.php?page=news_item&amp;amp;px=Linux-Improve-CPU-Spec-Switches こちら] や [https://linuxreviews.org/HOWTO_make_Linux_run_blazing_fast_(again)_on_Intel_CPUs こちら] のページを参照。}}&lt;br /&gt;
&lt;br /&gt;
CPU の脆弱性の緩和策をオフにすることで、パフォーマンスが向上する場合があります。以下の[[カーネルパラメータ]]ですべての緩和策が無効になります:&lt;br /&gt;
&lt;br /&gt;
 mitigations=off&lt;br /&gt;
&lt;br /&gt;
このパラメータによって切り替えられるすべてのスイッチについての説明は、[https://docs.kernel.org/admin-guide/kernel-parameters.html kernel.org] で見られます。{{AUR|spectre-meltdown-checker}} や {{man|1|lscpu}} ({{Pkg|util-linux}} に同梱) を使うことで、脆弱性チェックを行うことができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=第10世代およびそれ以降の Intel CPU、または AMD Ryzen シリーズ 1000 およびそれ以降の CPU を使用している場合、緩和策を無効化することにより得られるパフォーマンスの向上は、最大でも 5% にとどまります。一方、それ以前の世代の CPU では、最大 25% まで向上します。[https://www.phoronix.com/scan.php?page=article&amp;amp;item=3-years-specmelt 2021 初頭における総評]、[https://www.phoronix.com/scan.php?page=article&amp;amp;item=spectre-rocket-lake Rocket Lake におけるテスト]、[https://www.phoronix.com/scan.php?page=article&amp;amp;item=alder-lake-mitigations Alder Lake におけるテスト] を参照。}}&lt;br /&gt;
&lt;br /&gt;
== グラフィック ==&lt;br /&gt;
&lt;br /&gt;
=== Xorg の設定 ===&lt;br /&gt;
&lt;br /&gt;
グラフィックパフォーマンスは {{man|5|xorg.conf}} の設定に依存している場合があります。[[NVIDIA]]、[[AMDGPU]]、[[Intel]] の記事を参照してください。不適切な設定は Xorg が動作しなくなる原因になるため、注意しましょう。&lt;br /&gt;
&lt;br /&gt;
=== Mesa の設定 ===&lt;br /&gt;
&lt;br /&gt;
Mesa ドライバのパフォーマンスは [https://dri.freedesktop.org/wiki/ConfigurationInfrastructure/ drirc] で設定できます。{{Pkg|adriconf}} (Advanced DRI Configurator) はオプションを設定して標準の drirc ファイルに書き込むことで MESA ドライバを設定する GUI ツールです。&lt;br /&gt;
&lt;br /&gt;
=== ハードウェアビデオアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
[[ハードウェアビデオアクセラレーション]]により、ビデオカードに動画のデコード/エンコードをさせることができます。&lt;br /&gt;
&lt;br /&gt;
=== オーバークロック ===&lt;br /&gt;
&lt;br /&gt;
CPU と同様に、(GPU の) オーバークロックは直接的にパフォーマンスを向上できますが、一般には推奨されません。いくつかのパッケージがあります: {{AUR|rovclock}} (ATI カード)、{{Pkg|rocm-smi-lib}} (最近の AMD カード)、{{AUR|nvclock}} (古い NVIDIA カード - Geforce 9 まで)、{{Pkg|nvidia-utils}} (最近の NVIDIA カード)。&lt;br /&gt;
&lt;br /&gt;
[[AMDGPU#オーバークロック]] や [[NVIDIA/ヒントとテクニック#オーバークロックを有効化する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== PCIe resizable BAR を有効化する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 一部のシステムでは、PCIe resizable BAR を有効化するとパフォーマンスが大幅に劣化する可能性があります。システムのベンチマークを行って、PCI resizable BAR がパフォーマンスを向上させていることを確認してください。&lt;br /&gt;
* 効果を発揮させるには、[[Wikipedia:Unified Extensible Firmware Interface#CSM booting|Compatibility Support Module (CSM)]] を無効化しなければなりません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
PCI の仕様では、PCI デバイスのメモリを PCI コントローラに公開するために、より大きい[[wikipedia:PCI_configuration_space#Standardized_registers|基底アドレスレジスタ]] (BAR) を使用できます。そうすることで、ビデオカードのパフォーマンスを向上できる可能性があります。ビデオメモリ全体にアクセスすることでパフォーマンスを向上できますし、グラフィックドライバの最適化も可能になります。Resizable BAR、above 4G decoding、そしてドライバ最適化の組み合わせを、AMD は [https://www.amd.com/en/gaming/technologies/smart-technologies.html AMD Smart Access Memory] と呼んでおり、初期は AMD Series 500 チップセットマザーボードで利用できましたが、後に UEFI アップデートを通して AMD Series 400 と Intel Series 300 以降に拡張されました。この設定はすべてのマザーボードで利用できるわけではなく、特定のボードではブート問題を引き起こすことが知られています。&lt;br /&gt;
&lt;br /&gt;
BAR のサイズが 256M の場合、この機能は有効化されていないか、サポートされていません:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=# dmesg {{!}} grep BAR=|2=&lt;br /&gt;
[drm] Detected VRAM RAM=8176M, BAR=256M}}&lt;br /&gt;
&lt;br /&gt;
有効化するには、マザーボード設定で &amp;quot;Above 4G Decode&amp;quot; か &amp;quot;&amp;gt;4GB MMIO&amp;quot; という名前の設定を有効化してください。BAR が大きくなっていることを確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=# dmesg {{!}} grep BAR=|2=&lt;br /&gt;
[drm] Detected VRAM RAM=8176M, BAR=8192M}}&lt;br /&gt;
&lt;br /&gt;
== RAM、スワップ、OOM 処理 ==&lt;br /&gt;
&lt;br /&gt;
=== クロック周波数とタイミング ===&lt;br /&gt;
&lt;br /&gt;
RAM は BIOS で設定することで、クロック周波数とタイミングを別々にすることができます。メモリのパフォーマンスは両方の値によって変わります。BIOS に用意されている最高速のプリセットを選択することでデフォルト設定よりも性能を上げることができます。マザーボードやメモリのメーカーがサポートしていない周波数まで値を高めると、CPU のオーバークロックと同じようなリスクがあるので注意してください。[[#オーバークロック]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== RAM オーバーレイ上に root を置く ===&lt;br /&gt;
&lt;br /&gt;
{{Out of date|liveroot スクリプトはメンテナンスされていないようです。しかし、このアプローチは依然として機能するはずです。}}&lt;br /&gt;
&lt;br /&gt;
書き込みが遅いメディア (USB や 回転 HDD) を使う場合、(ディスク上の) 読み取り専用の root の上で RAM オーバーレイを作って root を動作させることができます。root に書き込みできる領域が制限されるかわりにパフォーマンスが劇的に改善します。{{AUR|liveroot}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== Zram または zswap ===&lt;br /&gt;
&lt;br /&gt;
[[zswap]] や [[zram]] を使うことで、似たような利点を (同じくらいのコストで) 得られます。これら2つは一般に意図が似ていますが、動作が異なります:&lt;br /&gt;
&lt;br /&gt;
* Zswap は、圧縮された RAM キャッシュとして動作し、ユーザ空間の設定をあまり必要としません (と同時に許可もしていません)。スワップデバイスと組み合わせて、スワップのキャッシュとして動作します。スワップに入りそうなページは、代わりに zswap に入る可能性があります。&lt;br /&gt;
* Zram は、RAM 内に圧縮されたブロックデバイスを作成できるカーネルモジュールです。この圧縮されたブロックデバイスはそれ単体でスワップデバイスとして使用でき、他のスワップデバイスと組み合わせてる必要はありません。多くの設定オプションがあり、例えばコールドページを保持しておくバッキングデバイスを使用するかどうかも指定できます。&lt;br /&gt;
&lt;br /&gt;
両方とも[[スワップ]]サブシステムを呼び出すため、スワップに影響を与える設定はこれらのシステムにも影響を与えます。例えば、[[スワップ#swappiness|{{ic|vm.swappiness}}]] は、メモリが圧迫している状況で、カーネルがファイルキャッシュをドロップするか、ページをスワップに移動させるかのどちらを優先させるかを指定します。Zswap はページのスワップへの移動動作をインターセプトし、zram もスワップとして動作するため、このオプションはこれら2つのメカニズムがどれくらいの頻度で使用されるかにも影響を与えます。&lt;br /&gt;
&lt;br /&gt;
=== グラフィックカードの RAM を使う ===&lt;br /&gt;
&lt;br /&gt;
稀なケースとして、RAM 容量が非常に小さいが、ビデオ RAM に余りがある場合、後者をスワップとして使用できます。[[ビデオメモリにスワップ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== メモリ不足の状況におけるシステムのレスポンスを改善する ===&lt;br /&gt;
&lt;br /&gt;
従来の GNU/Linux システム (特にグラフィカルワークステーション) では、割り当てられたメモリがオーバーコミットすると、カーネル内の out-of-memory (OOM) killer がトリガーされるか、十分な量のメモリが開放される (システムが応答しない場合、メモリを大量消費するアプリケーションを閉じることは難しいため、これはすぐには起こり得ないでしょう) まで、システム全体のレスポンスがほぼ使用不能な状態まで低下します。挙動は特定の環境や条件に依存しており、通常のレスポンス状態に戻るまでには数秒から30分以上かかる場合があります。会議でのプレゼンテーションなどのような重要な状況においては、待つのが苦痛になるでしょう。&lt;br /&gt;
&lt;br /&gt;
[https://lore.kernel.org/lkml/d9802b6a-949b-b327-c4a6-3dbca485ec20@gmx.com/T/ カーネル]と[https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/XUZLHJ5O32OX24LG44R7UZ2TMN6NY47N/ Fedora] のメーリングリストで議論されている通り、メモリ不足の状況におけるカーネルとユーザ空間の挙動は将来的に改善されるかもしれませんが、ユーザは、システムのハードリセットや {{ic|vm.overcommit_*}} [[sysctl]] パラメータの調整よりも実行可能で効果的なオプションを使うことができます:&lt;br /&gt;
&lt;br /&gt;
* [https://docs.kernel.org/admin-guide/sysrq.html Magic SysRq キー] ({{ic|Alt+SysRq+f}}) で手動でカーネルの OOM killer をトリガーする。&lt;br /&gt;
* ユーザ空間の OOM デーモンを使ってこれに自動的 (または対話的) に対処する。&lt;br /&gt;
&lt;br /&gt;
{{Warning|OOM killer をトリガーして実行中のアプリケーションを kill すると、保存されていない作業が失われる場合があります。アプリケーションが最終的に通常通りメモリを開放してくれることを期待して辛抱強く待つか、あるいは応答がないシステムを可能な限り早く通常に戻したいと望むかは、あなた次第です。}}&lt;br /&gt;
&lt;br /&gt;
カーネルの OOM killer では終了する (しない) プロセスに優先順位を付けられないので、SysRq よりも OOM デーモンのほうが好ましい場合もあります。いくつかの OOM デーモンをリストアップしました:&lt;br /&gt;
&lt;br /&gt;
* {{App|systemd-oomd|[[systemd]] によって {{ic|systemd-oomd.service}} として提供されています。cgroups-v2 と pressure stall information (PSI) を使用してプロセスを監視し、カーネル空間で OOM が発生する前にアクションを取ります。|https://github.com/systemd/systemd, {{man|8|systemd-oomd}}|{{Pkg|systemd}}}}&lt;br /&gt;
* {{App|earlyoom|C で書かれた、シンプルなユーザ空間の OOM killer 実装です。|https://github.com/rfjakob/earlyoom|{{Pkg|earlyoom}}}}&lt;br /&gt;
* {{App|oomd|[https://lwn.net/Articles/759781/ PSI] ベースの OOM killer 実装です。Linux カーネルバージョン 4.20+ を必要とします。設定は JSON で行い、非常に複雑です。Facebook の本番環境において動作確認済み。|https://github.com/facebookincubator/oomd|{{AUR|oomd}}}}&lt;br /&gt;
* {{App|nohang|Python で書かれた、洗練された OOM ハンドラ。オプションで PSI サポートあり。earlyoom よりも設定可能です。|https://github.com/hakavlad/nohang|{{AUR|nohang-git}}}}&lt;br /&gt;
* {{App|low-memory-monitor|GNOME 開発者の取り組み。ユーザ空間のアプリケーションにメモリ不足の状態を伝えるためのより良いコミュニケーションを提供することを目的としており、さらにカーネルの OOM killer をトリガーするように設定することができます。PSI ベースで、Linux 5.2+ を必要とします。|https://gitlab.freedesktop.org/hadess/low-memory-monitor/|{{AUR|low-memory-monitor-git}}}}&lt;br /&gt;
* {{App|uresourced|アクティブなグラフィカルユーザセッションに対して、cgroup ベースのリソース保護を有効化する小さなデーモン。|https://gitlab.freedesktop.org/benzea/uresourced|{{AUR|uresourced}}}}&lt;br /&gt;
&lt;br /&gt;
== ウォッチドッグ ==&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Watchdog timer]] ([[wikipedia:ja:ウォッチドッグタイマー|日本語版]]) より:&lt;br /&gt;
&lt;br /&gt;
:ウォッチドッグタイマーはコンピュータの動作に支障が生じていないか確認して復旧するために使われる電子的なタイマーである。通常、コンピュータは定期的にウォッチドッグタイマーをリセットする。何らかの理由でウォッチドッグをリセットできなかった場合、タイマーによってタイムアウト信号が生成され、コンピュータを安定状態に移行して通常のシステムオペレーティングを復旧させるなどの対応が行われる。&lt;br /&gt;
&lt;br /&gt;
よって、ウォッチドッグは例外的な状況でカーネルの回復を最適化するために使用されています。もし、&#039;&#039;&#039;重要なシステムサービス&#039;&#039;&#039; (例: ネットワーク、ファイルシステム、ACPI、systemd) が応答しなくなった場合、ウォッチドッグはそれを検知し、再起動をトリガーします。それにより、システムがロックアップし、応答しなくなったサービスのせいで長い遅延が発生してしまうことを回避できます。[[#メモリ不足の状況におけるシステムのレスポンスを改善する]] で説明されているように、この緊急メカニズムとランタイムのシステムリソース管理とを区別することは重要です。&lt;br /&gt;
&lt;br /&gt;
=== systemd ウォッチドッグ ===&lt;br /&gt;
&lt;br /&gt;
systemd にはウォッチドッグのリセット機構が内蔵されています。これは、適切なカーネルモジュールがロードされている場合に (以下を参照)、{{ic|/dev/watchdog}} として公開されているハードウェアウォッチドッグと対話します。システムが応答しなくなった場合、ハードウェアウォッチドッグがシステムリセットをトリガーします。&lt;br /&gt;
&lt;br /&gt;
==== systemd でウォッチドッグを設定する ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|RuntimeWatchdogSec}} は無効化されています。システムのウォッチドッグを有効化するには、以下のような {{man|5|systemd-system.conf}} [[ドロップインファイル]]を作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system.conf.d/watchdog.conf|2=&lt;br /&gt;
[Manager]&lt;br /&gt;
RuntimeWatchdogSec=10s&lt;br /&gt;
RebootWatchdogSec=45s&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=RuntimeWatchdogSec=10s}}: systemd が 10 秒より長く応答しなかった場合、システムを再起動します。&lt;br /&gt;
* {{ic|1=RebootWatchdogSec=45s}}: システムが再起動中にハングした場合、ウォッチドッグは 45 秒後にリセットを強制します。&lt;br /&gt;
&lt;br /&gt;
以下のコマンドで適用します:&lt;br /&gt;
&lt;br /&gt;
 # systemctl daemon-reexec&lt;br /&gt;
&lt;br /&gt;
ウォッチドッグがアクティブであることを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ systemctl show {{!}} grep Watchdog|2=&lt;br /&gt;
RuntimeWatchdogUSec=10s&lt;br /&gt;
RebootWatchdogUSec=45s&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== ハードウェアのウォッチドッグサポートを確認する ====&lt;br /&gt;
&lt;br /&gt;
多くのシステムで、ハードウェアウォッチドッグのサポートは異なるカーネルモジュール (例: 一部の Intel チップセットでは {{ic|iTCO_wdt}}、特定の AMD プラットフォームでは {{ic|sp5100_tco}}) によって提供されている場合があります。ハードウェアウォッチドッグのモジュールを確認するには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ lsmod | grep wdt&lt;br /&gt;
&lt;br /&gt;
関連するウォッチドッグモジュール (例: {{ic|iTCO_wdt}}、{{ic|sp5100_tco}}) を見つけたら、以下のようなファイルを作成してモジュールが[[カーネルモジュール#systemd|ブート時にロード]]されるようにしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modules-load.d/watchdog.conf|&lt;br /&gt;
&#039;&#039;module_name&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 # modprobe &#039;&#039;module_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;module_name&#039;&#039;}} の部分は、あなたのハードウェアにおける実際のモジュール名に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
=== リファレンス ===&lt;br /&gt;
&lt;br /&gt;
* {{man|5|systemd-system.conf}}&lt;br /&gt;
* [https://docs.kernel.org/watchdog/index.html Linux カーネルウォッチドッグのドキュメント]&lt;br /&gt;
* [[Systemd-boot|Arch Wiki – Systemd Boot]]&lt;br /&gt;
* [https://0pointer.de/blog/projects/watchdog.html Lennart Poettering による systemd ウォッチドッグに関するブログ記事]&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Performance_Tuning_Guide/index.html Red Hat Performance Tuning Guide]&lt;br /&gt;
* [https://www.thomas-krenn.com/en/wiki/Linux_Performance_Measurements_using_vmstat Linux Performance Measurements using vmstat]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Improving performance|2025-06-28|837833}}&lt;/div&gt;</summary>
		<author><name>AshMyzk</name></author>
	</entry>
</feed>