<?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=Kgx</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=Kgx"/>
	<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/Kgx"/>
	<updated>2026-05-07T09:14:59Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Lua&amp;diff=41482</id>
		<title>Lua</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Lua&amp;diff=41482"/>
		<updated>2026-04-24T21:43:13Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* インストール */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:プログラミング言語]]&lt;br /&gt;
[[en:Lua]]&lt;br /&gt;
[[zh-hans:Lua]]&lt;br /&gt;
[https://www.lua.org/about.html lua.org] より:&lt;br /&gt;
:Lua は、効率的でパワフルかつ軽量な埋め込み可能なスクリプト言語です&lt;br /&gt;
Lua はその性質から [[C]] との相互運用性が高く、他のプログラムの設定や拡張に適しています。基本的な Lua インタプリタのサイズは 250K 未満です。公式実装は [[Wikipedia:ja:ANSI C|ANSI C]] で書かれており、多数のプラットフォームやアーキテクチャで機能します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
複数のバージョンが存在します:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lua}} &amp;amp;mdash; Lua 5.5&lt;br /&gt;
* {{Pkg|lua54}} &amp;amp;mdash; Lua 5.4&lt;br /&gt;
* {{Pkg|lua53}} &amp;amp;mdash; Lua 5.3&lt;br /&gt;
* {{Pkg|lua52}} &amp;amp;mdash; Lua 5.2&lt;br /&gt;
* {{Pkg|lua51}} &amp;amp;mdash; Lua 5.1&lt;br /&gt;
&lt;br /&gt;
== JIT コンパイルのサポート ==&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:実行時コンパイラ|JIT コンパイル]] はソースコードのコンパイルを実行前ではなく実行時に行う手法です。[https://luajit.org/ LuaJIT] は Lua 5.1 を置き換えることができます。LuaJIT は高い性能が必要な状況下に適しています。&lt;br /&gt;
&lt;br /&gt;
JIT コンパイルのサポートを得るには {{Pkg|luajit}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
== モジュール ==&lt;br /&gt;
&lt;br /&gt;
[https://luarocks.org/ LuaRocks] パッケージマネージャは {{Pkg|luarocks}} パッケージでインストールできます。&lt;br /&gt;
&lt;br /&gt;
また、一部のモジュールは [https://www.archlinux.jp/packages/?&amp;amp;q=lua- 公式リポジトリ] に含まれています。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.lua.org/manual/ Lua リファレンスマニュアル]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Bcachefs&amp;diff=41475</id>
		<title>Bcachefs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Bcachefs&amp;diff=41475"/>
		<updated>2026-04-18T09:47:00Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Bcachefs]]&lt;br /&gt;
[[zh-hans:Bcachefs]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://bcachefs.org/ Bcachefs] は、[[Btrfs]] と [[ZFS]] の機能をよりクリーンなコードベース、より安定性、より高速、GPL 互換のライセンスを提供することを目的とした次世代の CoW ファイルシステムです。&lt;br /&gt;
&lt;br /&gt;
[[Bcache]] は、主に Kent Overstreet によって開発されています。&lt;br /&gt;
&lt;br /&gt;
{{Warning|Bcachefs は実験的なファイルシステムです。データを失う可能性があるので必ずバックアップを取るようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bcachefs-tools}} と {{Pkg|bcachefs-dkms}} をインストールして下さい。&lt;br /&gt;
&lt;br /&gt;
== セットアップ ==&lt;br /&gt;
&lt;br /&gt;
=== シングルドライブ ===&lt;br /&gt;
&lt;br /&gt;
 # bcachefs format /dev/sd&#039;&#039;X&#039;&#039;&lt;br /&gt;
 # mount -t bcachefs /dev/sd&#039;&#039;X&#039;&#039; /mnt&lt;br /&gt;
&lt;br /&gt;
=== 複数のドライブ===&lt;br /&gt;
&lt;br /&gt;
Bcachefs は、RAID0 と同様に、デフォルトでデータをストライプ化します。冗長性は &#039;&#039;&#039;replicas&#039;&#039;&#039; オプションを介して処理されます。{{ic|1=--replicas=2}} を備えた 2 台のドライブは RAID1 に相当し、{{ic|1=--replicas=2}} を備えた 4 台のドライブは RAID10 に相当します。&lt;br /&gt;
&lt;br /&gt;
 # bcachefs format /dev/sd&#039;&#039;X&#039;&#039; /dev/sd&#039;&#039;Y&#039;&#039; --replicas=&#039;&#039;n&#039;&#039;&lt;br /&gt;
 # mount -t bcachefs /dev/sd&#039;&#039;X&#039;&#039;:/dev/sd&#039;&#039;Y&#039;&#039; /mnt&lt;br /&gt;
&lt;br /&gt;
異種ドライブがサポートされています。サイズが異なる場合は、一部に大きなストライプが使用され、すべてが同じ割合で埋められます。速度が異なる場合、複製されたデータの読み取りは、IO 遅延が最も短いデータに送信されます。一部が他よりも信頼性が高い場合 (ハードウェア RAID デバイスなど)、{{ic|1=--durability=2 &#039;&#039;device&#039;&#039;}} を設定して、そのデバイス上のデータの各コピーを 2 つの複製としてカウントできます。&lt;br /&gt;
&lt;br /&gt;
=== 暗号化されたルートファイルシステム ===&lt;br /&gt;
&lt;br /&gt;
Bcachefs は、ChaCha20Poly1305 を使用したファイルシステム全体の暗号化をサポートしています。暗号化されたファイルシステムをフォーマットするには、次のようにします:&lt;br /&gt;
&lt;br /&gt;
 # bcachefs format --encrypted /dev/sd&#039;&#039;X&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ルートファイルシステムの場合、起動時や休止状態からの復帰時にファイルシステムの解除を求めるようにするため、{{ic|/etc/mkinitcpio.conf}} の設定ファイル内で [[Mkinitcpio#HOOKS|HOOKS]] 配列に {{ic|bcachefs}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== SSD キャッシング ===&lt;br /&gt;
&lt;br /&gt;
Bcachefs には、バックグラウンド、フォアグラウンド、プロモートの3つのストレージカテゴリがあります。ファイルシステムへの書き込みでは、フォアグラウンドドライブに優先順位が付けられ、その後、時間の経過とともにバックグラウンドに移動されます。読み取りはプロモートドライブにキャッシュされます。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらは、単一の大規模プールに対する優先ガイドラインにすぎません。書き込みは、フォアグラウンドがいっぱいの場合はバックグラウンドに直接行われ、両方がいっぱいの場合はプロモートに行われます。メタデータはフォアグラウンドを優先しますが、どのメタデータにも書き込むことができます。キャッシュドライブにはまだデータが含まれている可能性があるため、キャッシュドライブを削除するときは注意してください。[[Bcachefs#デバイスの削除|デバイスの削除]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
推奨される設定は、フォアグラウンドとプロモートに ssd グループを使用し、バックグラウンド (ライトバックキャッシュ) に hdd グループを使用することです。&lt;br /&gt;
&lt;br /&gt;
 # bcachefs format \&lt;br /&gt;
     --label=ssd.ssd1 /dev/sd&#039;&#039;A&#039;&#039; \&lt;br /&gt;
     --label=ssd.ssd2 /dev/sd&#039;&#039;B&#039;&#039; \&lt;br /&gt;
     --label=hdd.hdd1 /dev/sd&#039;&#039;C&#039;&#039; \&lt;br /&gt;
     --label=hdd.hdd2 /dev/sd&#039;&#039;D&#039;&#039; \&lt;br /&gt;
     --label=hdd.hdd3 /dev/sd&#039;&#039;E&#039;&#039; \&lt;br /&gt;
     --label=hdd.hdd4 /dev/sd&#039;&#039;F&#039;&#039; \&lt;br /&gt;
     --replicas=2 \&lt;br /&gt;
     --foreground_target=ssd \&lt;br /&gt;
     --promote_target=ssd \&lt;br /&gt;
     --background_target=hdd&lt;br /&gt;
 # mount -t bcachefs /dev/sd&#039;&#039;A&#039;&#039;:/dev/sd&#039;&#039;B&#039;&#039;:/dev/sd&#039;&#039;C&#039;&#039;:/dev/sd&#039;&#039;D&#039;&#039;:/dev/sd&#039;&#039;E&#039;&#039;:/dev/sd&#039;&#039;F&#039;&#039; /mnt&lt;br /&gt;
&lt;br /&gt;
ライトスルーキャッシュの場合は、上記と同じことを行いますが、各 SSD デバイスで {{ic|1=--durability=0 &#039;&#039;device&#039;&#039;}} を設定します。&lt;br /&gt;
ライトアラウンドキャッシュの場合、フォアグラウンドターゲットを HDD グループに、プロモートターゲットを SSD グループに設定します。&lt;br /&gt;
&lt;br /&gt;
=== マウント ===&lt;br /&gt;
&lt;br /&gt;
デフォルトのマウント方法では、マウントディレクティブですべてのデバイスを指定します。&lt;br /&gt;
&lt;br /&gt;
 # mount -t bcachefs /dev/sd&#039;&#039;A&#039;&#039;:/dev/sd&#039;&#039;B&#039;&#039;:/dev/sd&#039;&#039;C&#039;&#039;:/dev/sd&#039;&#039;D&#039;&#039;:/&lt;br /&gt;
&lt;br /&gt;
{{ic|mount.bcachefs}} コマンドは、UUID によるファイルシステムのマウントをサポートしています。&lt;br /&gt;
これは、ファイルシステムの作成時に {{ic|bcachefs format}} によって表示されます。&lt;br /&gt;
&lt;br /&gt;
 # mount.bcachefs UUID=f66d108f-83d2-4679-b50b-7d5e710f6a2b /mnt/&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
ほとんどのオプションは以下の方法で設定できます:&lt;br /&gt;
&lt;br /&gt;
* {{ic|bcachefs format}} の実行時&lt;br /&gt;
* フォーマット後に {{ic|bcachefs set-fs-option}} を使用&lt;br /&gt;
* マウント時に {{ic|1=mount -o &#039;&#039;option=value&#039;&#039;}} を指定&lt;br /&gt;
* または sysfs を介して、例:{{ic|echo &#039;&#039;X&#039;&#039; &amp;gt; /sys/fs/bcachefs/&#039;&#039;UUID&#039;&#039;/options/&#039;&#039;option&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
マウントオプションは他の方法で設定されたオプションを上書きします。これらの方法で設定されたオプションはファイルシステムのスーパーブロックに保存されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|sysfs を使用できるようにするには、ファイルシステムをマウントする必要があります。 fsck を除くすべての操作はライブファイルシステムで可能です。}}&lt;br /&gt;
&lt;br /&gt;
使用可能なオプションの例は次の通りです:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Bcachefs オプション&lt;br /&gt;
! オプション !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| metadata_checksum  || メタデータの書き込みに使用されるチェックサムアルゴリズムを指定します。デフォルトのアルゴリズムは &#039;&#039;crc32c&#039;&#039; です。{{ic|none}}、{{ic|crc32c}}、{{ic|crc64}}、{{ic|xxhash}} のいずれかを選択できます。&lt;br /&gt;
|-&lt;br /&gt;
| data_checksum || データの書き込みに使用されるチェックサムアルゴリズムを指定し、{{ic|metadata_checksum}} と同じデフォルトとオプションを共有します。&lt;br /&gt;
|-&lt;br /&gt;
| compression || (フォアグラウンド) 圧縮に使用するアルゴリズムを指定します。デフォルトでは、このオプションは指定されていません。{{ic|none}}、{{ic|lz4}}、{{ic|gzip}}、{{ic|zstd}} のいずれかを選択できます。&lt;br /&gt;
|-&lt;br /&gt;
| background_compression || (バックグラウンド) 圧縮に使用するアルゴリズムを指定し、{{ic|compression.}} と同じデフォルトとオプションを共有します。&lt;br /&gt;
|-&lt;br /&gt;
| str_hash || ディレクトリエントリと xattrs に使用されるハッシュ関数を指定します。{{ic|crc32c}}、{{ic|crc64}}、および {{ic|siphash}} のいずれかを選択できます。&lt;br /&gt;
|-&lt;br /&gt;
| nocow || 可能な場合は、すべての書き込みがその場で行われます。スナップショットと reflink では引き続き書き込みが COW になります。このオプションはデータのチェックサム、圧縮、暗号化を暗黙的に無効にします。&lt;br /&gt;
|- &lt;br /&gt;
| encrypted || ファイルシステム (chacha20/poly1305) で [https://bcachefs.org/Encryption/ 暗号化] を有効にします。パスフレーズの入力を求められます。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
その他のオプションについては、[https://bcachefs-docs.readthedocs.io/en/latest/options.html bcachefs ドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
以下は、{{ic|1=bcachefs setattr &#039;&#039;file&#039;&#039; --option=value}} を使用して、ディレクトリごとまたはファイルごとに設定することもできます。ディレクトリにオプションを設定すると、再帰的にオプションが伝播されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|rebalance thread はまだバックグラウンドで replicas を調整していません。つまり、ファイルの replicas オプションを変更する場合は、手動で rereplicate コマンドを実行して、古いファイルが新しいルールに従っていることを確認する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
* data_replicas&lt;br /&gt;
* data_checksum&lt;br /&gt;
* compression, background_compression&lt;br /&gt;
* foreground_target, background_target, promote_target&lt;br /&gt;
&lt;br /&gt;
どのオプションがアクティブであるかを確認するには、{{ic|getfattr -d -m &#039;bcachefs_effective\.&#039; &#039;&#039;directory/file&#039;&#039;}} を実行します。&lt;br /&gt;
&lt;br /&gt;
{{Note|ディスク使用量レポートは現在、非圧縮サイズを表示しています。それ以外は圧縮が完了しています。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスのグループの変更 ===&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;&#039;group&#039;&#039; &amp;gt; /sys/fs/bcachefs/&#039;&#039;filesystem_uuid&#039;&#039;/dev-&#039;&#039;X&#039;&#039;/label&lt;br /&gt;
&lt;br /&gt;
{{Note|これを有効にするには、再マウントが必要です。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの追加 ===&lt;br /&gt;
&lt;br /&gt;
 # bcachefs device add --group=&#039;&#039;group&#039;&#039; /mnt /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これがグループ内の最初のドライブである場合は、それを使用するためにターゲット設定を変更する必要があります。この例は、キャッシュドライブを追加するためのものです。&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;&#039;new_group&#039;&#039; &amp;gt; /sys/fs/bcachefs/&#039;&#039;filesystem_uuid&#039;&#039;/options/promote_target&lt;br /&gt;
 # echo &#039;&#039;new_group&#039;&#039; &amp;gt; /sys/fs/bcachefs/&#039;&#039;filesystem_uuid&#039;&#039;/options/foreground_target&lt;br /&gt;
 # echo &#039;&#039;old_group&#039;&#039; &amp;gt; /sys/fs/bcachefs/&#039;&#039;filesystem_uuid&#039;&#039;/options/background_target&lt;br /&gt;
&lt;br /&gt;
{{Note|追加されたデバイス間でストライピングされるのは新しい書き込みのみです。ディスクのリバランスがトリガーされると、ディスク使用量が特定のしきい値に達するまで、既存のものは変更されません。現在、リバランス/リストライプを手動でトリガーすることはできません。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの削除 ===&lt;br /&gt;
&lt;br /&gt;
まず、少なくとも 2 つのメタデータのレプリカがあることを確認します (Evacuate はメタデータに対して機能していないようです) データとメタデータがすでに複製されている場合は、この手順をスキップできます。&lt;br /&gt;
&lt;br /&gt;
 # echo 2 &amp;gt; /sys/fs/bcachefs/&#039;&#039;UUID&#039;&#039;/options/metadata_replicas&lt;br /&gt;
 # bcachefs data rereplicate /mnt&lt;br /&gt;
 # bcachefs device set-state &#039;&#039;device&#039;&#039; readonly&lt;br /&gt;
 # bcachefs device evacuate &#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
デバイスを削除します:&lt;br /&gt;
&lt;br /&gt;
 # bcachefs device remove &#039;&#039;device&#039;&#039;&lt;br /&gt;
 # bcachefs data rereplicate /mnt&lt;br /&gt;
&lt;br /&gt;
=== レプリケーション ===&lt;br /&gt;
&lt;br /&gt;
メタデータとデータのレプリカは、ユーザーが望む冗長性のレベルに応じて個別に設定できます。レプリカに関連するオプションは 5 つあります。&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=--replicas=X}} メタデータとデータのレプリカの数を同時に設定します。&lt;br /&gt;
* {{ic|1=--metadata_replicas=X}} 最終的に書き込まれるメタデータのレプリカの数を設定します。&lt;br /&gt;
* {{ic|1=--data_replicas=X}} 最終的に書き込まれるデータレプリカの数を設定します。&lt;br /&gt;
* {{ic|1=--metadata_replicas_required=X}} メタデータが &amp;quot;書き込まれた&amp;quot; とみなされる前に書き込む必要があるメタデータのレプリカの数を設定します。&lt;br /&gt;
* {{ic|1=--data_replicas_required=X}} データが &amp;quot;書き込まれた&amp;quot; とみなされる前に書き込む必要があるデータレプリカの数を設定します。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|--[meta]data_replicas_required}} と {{ic|--[meta]data_replicas}} の区別は重要で、replicas required 値はすぐに書き込まれるレプリカの数のフロアを設定するのに対し、replicas 値は最終的に書き込まれるレプリカの目標数を設定します。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 圧縮 ===&lt;br /&gt;
&lt;br /&gt;
圧縮は、{{ic|1=--compression=}} オプションで設定します。圧縮レベルの設定も可能です。zstd 圧縮レベル 5 を設定する例、{{ic|1=--compression=zstd:5}}&lt;br /&gt;
&lt;br /&gt;
=== サブボリューム ===&lt;br /&gt;
&lt;br /&gt;
Bcachefsは、[[Btrfs#Subvolumes|Btrfs]] と同様のユーザースペースインターフェースを使用してサブボリュームとスナップショットをサポートしています。新しいサブボリュームは空の状態で作成することも、別のサブボリュームのスナップショットとして作成することもできます。スナップショットは書き込み可能で、さらにスナップショットを作成することもでき、スナップショットのツリー構造を形成します。&lt;br /&gt;
&lt;br /&gt;
スナップショットの作成は非常に低コストです。[[Btrfs#Subvolumes|Btrfs]] のように COW(Copy-On-Write)Bツリーのクローンに基づいているのではなく、Bツリー内の個々のキーのバージョン管理に基づいています。何千、何百万ものスナップショットを作成することが可能で、唯一の制限はディスクスペースです。&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームの作成 ====&lt;br /&gt;
&lt;br /&gt;
新しい空のサブボリュームを作成するには:&lt;br /&gt;
&lt;br /&gt;
 # bcachefs subvolume create &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== サブボリュームの削除 ====&lt;br /&gt;
&lt;br /&gt;
既存のサブボリュームやスナップショットを削除するには:&lt;br /&gt;
&lt;br /&gt;
 # bcachefs subvolume delete &#039;&#039;/path/to/subvolume&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== 既存のサブボリュームのスナップショットを作成する ====&lt;br /&gt;
&lt;br /&gt;
既存のサブボリュームのスナップショットを作成するには、次の手順を実行します。&lt;br /&gt;
&lt;br /&gt;
 # bcachefs subvolume snapshot &#039;&#039;/path/to/source&#039;&#039; &#039;&#039;/path/to/dest&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|rm -rf}} のように、すべての内容を削除した後、通常の rmdir を使用してサブボリュームを削除することもできます。&lt;br /&gt;
&lt;br /&gt;
再帰的なスナップショットの作成やサブボリュームを再帰的にリストする方法などの機能はまだ実装されていません。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
さらに有用なエラーメッセージについては、[[systemd/ジャーナル|ジャーナル]]を確認してください。&lt;br /&gt;
&lt;br /&gt;
=== フラグの順序 ===&lt;br /&gt;
&lt;br /&gt;
一部の {{ic|bcachefs format}} フラグは、引数の順序に基づいて設定され、フラグが切り替えられた後のドライブにのみ影響します。たとえば、SSD に {{ic|1=--durability=0}} を持たせて {{ic|--discard}} を有効にし、HDD ではデフォルトを使用する場合は、引数が次の順序で渡されるようにしてください。&lt;br /&gt;
&lt;br /&gt;
 # bcachefs format \&lt;br /&gt;
     --label=hdd.hdd1 /dev/sd&#039;&#039;C&#039;&#039; \&lt;br /&gt;
     --label=hdd.hdd2 /dev/sd&#039;&#039;D&#039;&#039; \&lt;br /&gt;
     --label=hdd.hdd3 /dev/sd&#039;&#039;E&#039;&#039; \&lt;br /&gt;
     --label=hdd.hdd4 /dev/sd&#039;&#039;F&#039;&#039; \&lt;br /&gt;
     --durability=0 --discard \&lt;br /&gt;
     --label=ssd.ssd1 /dev/sd&#039;&#039;A&#039;&#039; \&lt;br /&gt;
     --label=ssd.ssd2 /dev/sd&#039;&#039;B&#039;&#039; \&lt;br /&gt;
     --replicas=2 \&lt;br /&gt;
     --foreground_target=ssd \&lt;br /&gt;
     --promote_target=ssd \&lt;br /&gt;
     --background_target=hdd&lt;br /&gt;
&lt;br /&gt;
=== フォーマット後のレプリカの設定 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|set-fs-option}} を使用して、フォーマット後にレプリカ数を設定することができます。&lt;br /&gt;
&lt;br /&gt;
 # bcachefs set-fs-option --metadata_replicas=&#039;&#039;2&#039;&#039; --data_replicas=&#039;&#039;2&#039;&#039; /dev/sd&#039;&#039;X&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
その後、すべてのファイルに次のレプリカが存在することを確認するように bcachefs に指示する必要があります。&lt;br /&gt;
&lt;br /&gt;
 # bcachefs data rereplicate /mnt&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 32-ビットプログラムがディレクトリの内容を認識しない ===&lt;br /&gt;
&lt;br /&gt;
一部の 32-ビットプログラムは、{{man|3|readdir}} syscall の実行時にファイルシステムから返されるデータの非互換性により、Bcachefs 内のディレクトリの内容の取得に失敗する場合があります。[https://github.com/koverstreet/bcachefs/issues/650]&lt;br /&gt;
&lt;br /&gt;
この問題は、そのようなプログラムの読み書きに [[tmpfs]] などの別のファイルシステムを一時的に使用することで回避できます。&lt;br /&gt;
&lt;br /&gt;
=== スワップファイルにはサポートされていないエクステントが含まれています ===&lt;br /&gt;
&lt;br /&gt;
Bcachefs は現在 [https://github.com/koverstreet/bcachefs/issues/368 swapfiles] をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
=== マルチデバイス fstab ===&lt;br /&gt;
&lt;br /&gt;
現在、[https://github.com/systemd/systemd/issues/8234 systemd のバグ] があり、fstab でコロンで区切られたデバイスを使用して起動時にマルチデバイス bcachefs ファイルシステムをマウントできません。  mount -a を実行すると機能しますが、起動時にはマウントされません。ただし、bcachefs-tools バージョン 1.7.0 以降では、1 つのデバイスノードを使用してマルチデバイスアレイをマウントできるようになりました。これにより、通常の {{ic|1=UUID=}} 指定子の使用が可能になります。&lt;br /&gt;
&lt;br /&gt;
 # UUID=10176fc9-c4fa-4a30-9fd0-a756d861c4cd     /mnt   bcachefs defaults,nofail 0 0&lt;br /&gt;
&lt;br /&gt;
ファイルシステム UUID / 外部 UUID は、次のいずれかを使用して見つけることができます:&lt;br /&gt;
&lt;br /&gt;
 # bcachefs fs usage&lt;br /&gt;
 # bcachefs show-super device&lt;br /&gt;
&lt;br /&gt;
=== 暗号化されたデバイスのマウントエラー ===&lt;br /&gt;
&lt;br /&gt;
{{ic|--encrypted}} オプションで作成されたデバイスのマウントが、{{ic|bcachefs locked /dev/sd&#039;&#039;XY&#039;&#039;}} の後に失敗した場合&lt;br /&gt;
 ERROR - bcachefs::commands::cmd_mount: Fatal error: Required key not available&lt;br /&gt;
&lt;br /&gt;
これは、キーをセッション [https://lore.kernel.org/all/6018852.lOV4Wx5bFT@lichtvoll.de/] に手動でリンクすることで回避できます:&lt;br /&gt;
&lt;br /&gt;
 # keyctl link @u @s&lt;br /&gt;
 # mount /dev/sd&#039;&#039;XY&#039;&#039; /mnt&lt;br /&gt;
 Enter passphrase:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mount&#039;&#039; によって照会されるパスフレーズを新たに入力する必要はありません ({{ic|Enter}} を押すだけで十分です。)&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://bcachefs.org/bcachefs-principles-of-operation.pdf 公式マニュアル]&lt;br /&gt;
* [https://www.patreon.com/bcachefs Kent Overstreet&#039;s Patreon page]&lt;br /&gt;
* [[Wikipedia:Bcachefs]]&lt;br /&gt;
* [https://bcachefs-docs.readthedocs.io/en/latest/introduction.html bcachefs on ReadTheDocs]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Niri&amp;diff=41460</id>
		<title>Niri</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Niri&amp;diff=41460"/>
		<updated>2026-04-09T08:50:48Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wayland コンポジタ]]&lt;br /&gt;
[[en:Niri]]&lt;br /&gt;
[https://github.com/niri-wm/niri Niri] は、スクロール可能なタイリング型 [[Wayland]] コンポジタです。[[Sway]] や [[Hyprland]] とは異なり、Niri はウィンドウを無限に広がる水平なデスクトップ上に配置し、左右にスクロールして操作します(より高度なレイアウトも可能です) [[GNOME]] の PaperWM や [[KDE]] の Karousel に近い操作感を提供します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Niri は {{pkg|niri}} パッケージで[[インストール]]できます。また、より快適な環境を構築するために、以下のパッケージのインストールが推奨されます:&lt;br /&gt;
&lt;br /&gt;
* {{pkg|fuzzel}}: Niri のデフォルトアプリケーションランチャー&lt;br /&gt;
* {{pkg|mako}}: 通知サーバー&lt;br /&gt;
* [[waybar]]: Wayland 用ステータスバー&lt;br /&gt;
* {{pkg|xdg-desktop-portal-gtk}}, {{pkg|xdg-desktop-portal-gnome}}: スクリーン共有を可能にするため&lt;br /&gt;
* [[alacritty]]: Niri のデフォルトターミナル&lt;br /&gt;
* {{pkg|swaybg}}: 壁紙の設定&lt;br /&gt;
* {{pkg|swayidle}}, {{pkg|swaylock}}: アイドル時の画面ロック&lt;br /&gt;
* {{pkg|xwayland-satellite}}: X11 アプリケーションの実行用&lt;br /&gt;
* {{pkg|udiskie}}: USB ドライブの管理と自動マウント&lt;br /&gt;
&lt;br /&gt;
== 起動 ==&lt;br /&gt;
&lt;br /&gt;
Niri には [[デスクトップエントリ]] が含まれており、[[ディスプレイマネージャ]] から選択可能です。これを選択すると {{ic|niri-session}} が実行され、[[systemd]] への [[環境変数]] のエクスポートが適切に行われます。&lt;br /&gt;
&lt;br /&gt;
また、[[getty]] (コンソール) から直接起動する場合は、以下のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 niri-session -l&lt;br /&gt;
&lt;br /&gt;
これは [[Getty#Automatic login to virtual console|自動ログイン]] と組み合わせることで、シームレスな [[Arch ブートプロセス|ブート]] 体験を実現できます。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
Niri は {{ic|~/.config/niri/config.kdl}} から設定を読み込みます。ファイル形式は KDL で、セクションごとに分かれています。初回実行時に生成されるデフォルト設定ファイルには、各オプションの説明がコメントとして記載されています。ただし、アップデートで追加された新機能については記載されないため、[https://niri-wm.github.io/niri/Configuration:-Introduction.html Niri 公式ドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
設定ファイルを保存すると、Niri は自動的に設定を適用します。設定内容が不正であっても Niri はクラッシュせず、最後に動作していた状態が維持され、エラーがユーザーに通知されます。セッション外で設定を検証するには {{ic|niri validate}} を使用します。&lt;br /&gt;
&lt;br /&gt;
=== キーマップ ===&lt;br /&gt;
&lt;br /&gt;
キーマップを設定するには、{{ic|input/keyboard/xkb}} セクションを編集します。&lt;br /&gt;
&lt;br /&gt;
例えば、&amp;quot;US Int Alt Gr&amp;quot; レイアウトを使用し、{{ic|CapsLock}} を {{ic|Ctrl}} として機能させる場合は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
input {&lt;br /&gt;
keyboard {&lt;br /&gt;
xkb {&lt;br /&gt;
layout &amp;quot;us&amp;quot;&lt;br /&gt;
variant &amp;quot;altgr-intl&amp;quot;&lt;br /&gt;
options &amp;quot;ctrl:nocaps&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;
まず {{ic|niri msg outputs}} を実行して、Niri が認識している出力を確認します。その後、各モニターに設定を適用できます。例として、HDMI モニターを 2560x1440 60Hz、スケーリング 1.2 に設定し、ノート PC の内蔵モニターをオフにする設定は以下の通りです:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
output &amp;quot;HDMI-A-1&amp;quot; {&lt;br /&gt;
mode &amp;quot;2560x1440@60.000&amp;quot;&lt;br /&gt;
scale 1.2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
output &amp;quot;eDP-1&amp;quot; {&lt;br /&gt;
off&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ドッキングステーションへの接続時などに動的なレイアウト変更を行いたい場合は、[[kanshi]] を併用することも検討してください。}}&lt;br /&gt;
&lt;br /&gt;
=== キーバインド ===&lt;br /&gt;
&lt;br /&gt;
binds セクションでは、Niri を操作するキーの組み合わせを設定します。初回起動時に生成される設定には多くのバインドが含まれており、これらはすべて変更可能です。&lt;br /&gt;
&lt;br /&gt;
注意点として、Niri はデフォルトのキーバインドを自動的にロードしません。設定ファイルに記述がないバインドは機能しません。そのため、不要なバインドを削除する際は、削除ではなくコメントアウトに留めることが推奨されます。&lt;br /&gt;
&lt;br /&gt;
バインドは、修飾キーに {{ic|+}} を繋げ、アクションを括弧内に記述します。spawn アクションはプログラムを起動します。以下の例では、{{ic|Mod+T}} で [[alacritty]] を、{{ic|Mod+D}} で {{pkg|fuzzel}} を起動します。{{ic|Mod}} は通常、単独実行時は {{ic|Super}} キー、他のコンポジット内での実行時は {{ic|Alt}} キーになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+T { spawn &amp;quot;alacritty&amp;quot;; }&lt;br /&gt;
Mod+D { spawn &amp;quot;fuzzel&amp;quot;; }&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|spawn}} に渡す引数にスペースが含まれる場合は、個別に引用符で囲む必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+Ctrl+semicolon {&lt;br /&gt;
spawn &amp;quot;swaylock&amp;quot; &amp;quot;-c&amp;quot; &amp;quot;121212&amp;quot; &amp;quot;-e&amp;quot; &amp;quot;-f&amp;quot; &amp;quot;-F&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== WASD 風のナビゲーション ====&lt;br /&gt;
&lt;br /&gt;
ゲームのような WASD キーによるウィンドウ移動を設定することも可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+A { focus-column-left; }&lt;br /&gt;
Mod+S { focus-window-or-workspace-down; }&lt;br /&gt;
Mod+W { focus-window-or-workspace-up; }&lt;br /&gt;
Mod+D { focus-column-right; }&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;
Niri の起動時に特定のプログラムを同時に開始できます。&lt;br /&gt;
前述した {{Pkg|mako}}、{{Pkg|waybar}}、{{Pkg|swayidle}}/{{Pkg|swaylock}} などの設定例は以下の通りです:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
spawn-at-startup &amp;quot;mako&amp;quot;&lt;br /&gt;
spawn-at-startup &amp;quot;waybar&amp;quot;&lt;br /&gt;
spawn-at-startup &amp;quot;swayidle&amp;quot; &amp;quot;-w&amp;quot; &amp;quot;timeout&amp;quot; &amp;quot;601&amp;quot; &amp;quot;niri msg action power-off-monitors&amp;quot; &amp;quot;timeout&amp;quot; &amp;quot;600&amp;quot; &amp;quot;swaylock -f&amp;quot; &amp;quot;before-sleep&amp;quot; &amp;quot;swaylock -f&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらのプロセスは Niri セッションに紐付けられており、Niri が終了または中断されると終了します。プロセスをバックグラウンドで永続させたい場合は、引数に {{ic|&amp;quot;&amp;amp;&amp;quot;}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== XWayland ===&lt;br /&gt;
&lt;br /&gt;
Niri は X11 アプリケーションを実行するための XWayland を標準ではサポートしていません。その代わり、外部ツールの使用を推奨しています。オプションの依存関係にある {{Pkg|xwayland-satellite}} をインストールすれば、特別な設定なしで使用可能です。&lt;br /&gt;
&lt;br /&gt;
=== マルチ GPU 設定 ===&lt;br /&gt;
&lt;br /&gt;
内蔵グラフィックスと専用 GPU (dGPU) の両方を搭載した環境では、Niri がデフォルトで dGPU を使用してしまい、バッテリーを浪費する場合があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|NVIDIA カードを使用している場合は、GPU を低電力状態にする方法やアプリごとの起動設定について [[PRIME]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
Niri が使用する GPU を指定するには、まずシステムで利用可能なレンダリングデバイスを確認します:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ ls -l /dev/dri/by-path/*-render|&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Jan 10 13:02 /dev/dri/by-path/pci-0000:c1:00.0-render -&amp;gt; ../renderD129&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Jan 10 13:02 /dev/dri/by-path/pci-0000:c2:00.0-render -&amp;gt; ../renderD128&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、PCI アドレスを使って各デバイスがどのカードかを確認します:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ lspci -s c1:00.0|&lt;br /&gt;
c1:00.0 VGA compatible controller: NVIDIA Corporation GB206M [GeForce RTX 5070 Max-Q / Mobile] (rev a1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
使用したいデバイスを特定したら、Niri の設定ファイルに追記します:&lt;br /&gt;
{{hc|&lt;br /&gt;
~/.config/niri/config.kdl|&lt;br /&gt;
debug {&lt;br /&gt;
    render-drm-device &amp;quot;/dev/dri/renderD128&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動後、以下のコマンドで GPU が正しく低電力状態 (D3cold など) になっているか確認できます:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ cat /sys/class/drm/card*/device/power_state|&lt;br /&gt;
D3cold&lt;br /&gt;
D0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
[https://niri-wm.github.io/niri/ Niri 公式 Wiki]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Niri&amp;diff=41457</id>
		<title>Niri</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Niri&amp;diff=41457"/>
		<updated>2026-04-07T22:00:08Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* 起動 */ リンクを修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wayland コンポジタ]]&lt;br /&gt;
[[en:Niri]]&lt;br /&gt;
[https://github.com/niri-wm/niri Niri] は、スクロール可能なタイリング型 [[Wayland]] コンポジタです。[[Sway]] や [[Hyprland]] とは異なり、Niri はウィンドウを無限に広がる水平なデスクトップ上に配置し、左右にスクロールして操作します(より高度なレイアウトも可能です) [[GNOME]] の PaperWM や [[KDE]] の Karousel に近い操作感を提供します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Niri は {{pkg|niri}} パッケージで[[インストール]]できます。また、より快適な環境を構築するために、以下のパッケージのインストールが推奨されます:&lt;br /&gt;
&lt;br /&gt;
* {{pkg|fuzzel}}: Niri のデフォルトアプリケーションランチャー&lt;br /&gt;
* {{pkg|mako}}: 通知サーバー&lt;br /&gt;
* [[waybar]]: Wayland 用ステータスバー&lt;br /&gt;
* {{pkg|xdg-desktop-portal-gtk}}, {{pkg|xdg-desktop-portal-gnome}}: スクリーン共有を可能にするため&lt;br /&gt;
* [[alacritty]]: Niri のデフォルトターミナル&lt;br /&gt;
* {{pkg|swaybg}}: 壁紙の設定&lt;br /&gt;
* {{pkg|swayidle}}, {{pkg|swaylock}}: アイドル時の画面ロック&lt;br /&gt;
* {{pkg|xwayland-satellite}}: X11 アプリケーションの実行用&lt;br /&gt;
* {{pkg|udiskie}}: USB ドライブの管理と自動マウント&lt;br /&gt;
&lt;br /&gt;
== 起動 ==&lt;br /&gt;
&lt;br /&gt;
Niri には [[デスクトップエントリ]] が含まれており、[[ディスプレイマネージャ]] から選択可能です。これを選択すると {{ic|niri-session}} が実行され、[[systemd]] への [[環境変数]] のエクスポートが適切に行われます。&lt;br /&gt;
&lt;br /&gt;
また、[[getty]] (コンソール) から直接起動する場合は、以下のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 niri-session -l&lt;br /&gt;
&lt;br /&gt;
これは [[Getty#Automatic login to virtual console|自動ログイン]] と組み合わせることで、シームレスな [[Arch ブートプロセス|ブート]] 体験を実現できます。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
Niri は {{ic|~/.config/niri/config.kdl}} から設定を読み込みます。ファイル形式は KDL で、セクションごとに分かれています。初回実行時に生成されるデフォルト設定ファイルには、各オプションの説明がコメントとして記載されています。ただし、アップデートで追加された新機能については記載されないため、[https://niri-wm.github.io/niri/Configuration:-Introduction.html Niri 公式ドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
設定ファイルを保存すると、Niri は自動的に設定を適用します。設定内容が不正であっても Niri はクラッシュせず、最後に動作していた状態が維持され、エラーがユーザーに通知されます。セッション外で設定を検証するには {{ic|niri validate}} を使用します。&lt;br /&gt;
&lt;br /&gt;
== キーマップ ==&lt;br /&gt;
&lt;br /&gt;
キーマップを設定するには、{{ic|input/keyboard/xkb}} セクションを編集します。&lt;br /&gt;
&lt;br /&gt;
例えば、&amp;quot;US Int Alt Gr&amp;quot; レイアウトを使用し、{{ic|CapsLock}} を {{ic|Ctrl}} として機能させる場合は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
input {&lt;br /&gt;
keyboard {&lt;br /&gt;
xkb {&lt;br /&gt;
layout &amp;quot;us&amp;quot;&lt;br /&gt;
variant &amp;quot;altgr-intl&amp;quot;&lt;br /&gt;
options &amp;quot;ctrl:nocaps&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;
まず {{ic|niri msg outputs}} を実行して、Niri が認識している出力を確認します。その後、各モニターに設定を適用できます。例として、HDMI モニターを 2560x1440 60Hz、スケーリング 1.2 に設定し、ノート PC の内蔵モニターをオフにする設定は以下の通りです:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
output &amp;quot;HDMI-A-1&amp;quot; {&lt;br /&gt;
mode &amp;quot;2560x1440@60.000&amp;quot;&lt;br /&gt;
scale 1.2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
output &amp;quot;eDP-1&amp;quot; {&lt;br /&gt;
off&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ドッキングステーションへの接続時などに動的なレイアウト変更を行いたい場合は、[[kanshi]] を併用することも検討してください。}}&lt;br /&gt;
&lt;br /&gt;
=== キーバインド ===&lt;br /&gt;
&lt;br /&gt;
binds セクションでは、Niri を操作するキーの組み合わせを設定します。初回起動時に生成される設定には多くのバインドが含まれており、これらはすべて変更可能です。&lt;br /&gt;
&lt;br /&gt;
注意点として、Niri はデフォルトのキーバインドを自動的にロードしません。設定ファイルに記述がないバインドは機能しません。そのため、不要なバインドを削除する際は、削除ではなくコメントアウトに留めることが推奨されます。&lt;br /&gt;
&lt;br /&gt;
バインドは、修飾キーに {{ic|+}} を繋げ、アクションを括弧内に記述します。spawn アクションはプログラムを起動します。以下の例では、{{ic|Mod+T}} で [[alacritty]] を、{{ic|Mod+D}} で {{pkg|fuzzel}} を起動します。{{ic|Mod}} は通常、単独実行時は {{ic|Super}} キー、他のコンポジット内での実行時は {{ic|Alt}} キーになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+T { spawn &amp;quot;alacritty&amp;quot;; }&lt;br /&gt;
Mod+D { spawn &amp;quot;fuzzel&amp;quot;; }&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|spawn}} に渡す引数にスペースが含まれる場合は、個別に引用符で囲む必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+Ctrl+semicolon {&lt;br /&gt;
spawn &amp;quot;swaylock&amp;quot; &amp;quot;-c&amp;quot; &amp;quot;121212&amp;quot; &amp;quot;-e&amp;quot; &amp;quot;-f&amp;quot; &amp;quot;-F&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== WASD 風のナビゲーション ====&lt;br /&gt;
&lt;br /&gt;
ゲームのような WASD キーによるウィンドウ移動を設定することも可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+A { focus-column-left; }&lt;br /&gt;
Mod+S { focus-window-or-workspace-down; }&lt;br /&gt;
Mod+W { focus-window-or-workspace-up; }&lt;br /&gt;
Mod+D { focus-column-right; }&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;
Niri の起動時に特定のプログラムを同時に開始できます。&lt;br /&gt;
前述した {{Pkg|mako}}、{{Pkg|waybar}}、{{Pkg|swayidle}}/{{Pkg|swaylock}} などの設定例は以下の通りです:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
spawn-at-startup &amp;quot;mako&amp;quot;&lt;br /&gt;
spawn-at-startup &amp;quot;waybar&amp;quot;&lt;br /&gt;
spawn-at-startup &amp;quot;swayidle&amp;quot; &amp;quot;-w&amp;quot; &amp;quot;timeout&amp;quot; &amp;quot;601&amp;quot; &amp;quot;niri msg action power-off-monitors&amp;quot; &amp;quot;timeout&amp;quot; &amp;quot;600&amp;quot; &amp;quot;swaylock -f&amp;quot; &amp;quot;before-sleep&amp;quot; &amp;quot;swaylock -f&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらのプロセスは Niri セッションに紐付けられており、Niri が終了または中断されると終了します。プロセスをバックグラウンドで永続させたい場合は、引数に {{ic|&amp;quot;&amp;amp;&amp;quot;}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== XWayland ===&lt;br /&gt;
&lt;br /&gt;
Niri は X11 アプリケーションを実行するための XWayland を標準ではサポートしていません。その代わり、外部ツールの使用を推奨しています。オプションの依存関係にある {{Pkg|xwayland-satellite}} をインストールすれば、特別な設定なしで使用可能です。&lt;br /&gt;
&lt;br /&gt;
=== マルチ GPU 設定 ===&lt;br /&gt;
&lt;br /&gt;
内蔵グラフィックスと専用 GPU (dGPU) の両方を搭載した環境では、Niri がデフォルトで dGPU を使用してしまい、バッテリーを浪費する場合があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|NVIDIA カードを使用している場合は、GPU を低電力状態にする方法やアプリごとの起動設定について [[PRIME]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
Niri が使用する GPU を指定するには、まずシステムで利用可能なレンダリングデバイスを確認します:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ ls -l /dev/dri/by-path/*-render|&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Jan 10 13:02 /dev/dri/by-path/pci-0000:c1:00.0-render -&amp;gt; ../renderD129&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Jan 10 13:02 /dev/dri/by-path/pci-0000:c2:00.0-render -&amp;gt; ../renderD128&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、PCI アドレスを使って各デバイスがどのカードかを確認します:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ lspci -s c1:00.0|&lt;br /&gt;
c1:00.0 VGA compatible controller: NVIDIA Corporation GB206M [GeForce RTX 5070 Max-Q / Mobile] (rev a1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
使用したいデバイスを特定したら、Niri の設定ファイルに追記します:&lt;br /&gt;
{{hc|&lt;br /&gt;
~/.config/niri/config.kdl|&lt;br /&gt;
debug {&lt;br /&gt;
    render-drm-device &amp;quot;/dev/dri/renderD128&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動後、以下のコマンドで GPU が正しく低電力状態 (D3cold など) になっているか確認できます:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ cat /sys/class/drm/card*/device/power_state|&lt;br /&gt;
D3cold&lt;br /&gt;
D0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
[https://niri-wm.github.io/niri/ Niri 公式 Wiki]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=PipeWire&amp;diff=41353</id>
		<title>PipeWire</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=PipeWire&amp;diff=41353"/>
		<updated>2026-02-20T09:01:15Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* 設定 */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:マルチメディア]]&lt;br /&gt;
[[en:PipeWire]]&lt;br /&gt;
[[fi:PipeWire]]&lt;br /&gt;
[[pt:PipeWire]]&lt;br /&gt;
[[ru:PipeWire]]&lt;br /&gt;
[[zh-hans:PipeWire]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PipeWire/サンプル}}&lt;br /&gt;
{{Related|WirePlumber}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://pipewire.org PipeWire] は新しい低レベルマルチメディアフレームワークです。&lt;br /&gt;
映像と音声を最小の遅延で再生/キャプチャすることを目的としていて、[[PulseAudio]]、[[JACK]]、[[ALSA]]、[[GStreamer]] をベースとしたアプリケーションと互換性があります。&lt;br /&gt;
&lt;br /&gt;
このフレームワークのデーモンは (PulseAudio と JACK の機能を持った) オーディオサーバーとしても、ビデオキャプチャサーバーとしても設定できます。&lt;br /&gt;
&lt;br /&gt;
また PipeWire は [[Flatpak]] のようなコンテナをサポートしており、&#039;&#039;audio&#039;&#039; や &#039;&#039;video&#039;&#039; [[ユーザーとグループ#グループ管理|ユーザーグループ]]に依存するのではなく、Flatpak や Wayland にスクリーンや音声を録音する許可を求める [[Polkit]] のようなセキュリティモデルを使用しています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
公式リポジトリから {{Pkg|pipewire}} パッケージを[[インストール]]してください。[[multilib]] サポート用として {{Pkg|lib32-pipewire}} も用意されています。&lt;br /&gt;
&lt;br /&gt;
オプションとして、ドキュメントを確認するために {{Pkg|pipewire-docs}} をインストールすることもできます。&lt;br /&gt;
&lt;br /&gt;
PipeWireは他のオーディオサーバーのドロップイン代替(そのまま置き換え可能な代用)として機能します。詳細は [[#オーディオ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== セッションマネージャー ===&lt;br /&gt;
&lt;br /&gt;
[[JACK]] と同様に、PipeWire 自体は内部に接続ロジックを実装していません。新しいストリームを監視し、それらを適切な出力デバイスやアプリケーションに接続する役割は、「セッションマネージャー」と呼ばれる外部コンポーネントに委ねられています。&lt;br /&gt;
&lt;br /&gt;
==== WirePlumber ====&lt;br /&gt;
&lt;br /&gt;
[[WirePlumber]] は推奨されるセッションマネージャーです。モジュール設計に基づいており、実際の管理機能は Lua プラグインによって実装されています。&lt;br /&gt;
&lt;br /&gt;
標準の設定ファイルは {{ic|/usr/share/wireplumber}} に保存されています。WirePlumber をカスタマイズする推奨される方法は、{{ic|/etc/wireplumber}} または {{ic|~/.config/wireplumber}} に特定の設定を上書きするスニペットを追加することです。[https://pipewire.pages.freedesktop.org/wireplumber/daemon/locations.html#config-locations]&lt;br /&gt;
&lt;br /&gt;
WirePlumber はバージョン 0.5 で設定形式を {{ic|.lua}} から {{ic|.conf}} に変更しました。移行の手順については [https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/migration.html#config-migration] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== PipeWire Media Session ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-media-session}} は推奨されず、廃止予定(非推奨)となっています。これは主にテスト目的、および新しいセッションマネージャーを構築するための例として実装されたものです。&lt;br /&gt;
&lt;br /&gt;
=== 起動 ===&lt;br /&gt;
&lt;br /&gt;
PipeWire はサーバーの管理と自動的な [[ソケットアクティベーション]] に [[systemd/ユーザー]] を使用します。必要に応じて自動的に起動します。&lt;br /&gt;
&lt;br /&gt;
ログイン時に PipeWire をあらかじめ起動しておくには、{{ic|pipewire.service}}、{{ic|pipewire-pulse.service}}、および {{ic|wireplumber.service}} の[[ユーザーユニット]]を[[有効化/起動]]してください。&lt;br /&gt;
&lt;br /&gt;
=== GUI ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Cable|PipeWire および WirePlumber の設定を実行時に動的に変更するための PyQt アプリケーション。|https://github.com/magillos/Cable|{{AUR|cable}}}}&lt;br /&gt;
* {{App|coppwr|PipeWire 用の低レベル制御および診断 GUI。|https://github.com/dimtpap/coppwr|{{AUR|coppwr}}}}&lt;br /&gt;
* {{App|Helvum|JACK ツール「catia」にインスパイアされた GTK ベースのパッチベイ。接続セットの保存機能はありません。|https://gitlab.freedesktop.org/pipewire/helvum|{{Pkg|helvum}}}}&lt;br /&gt;
* {{App|pwvucontrol|Pipewire Volume Control。pavucontrol の代替。|https://github.com/saivert/pwvucontrol|{{AUR|pwvucontrol}}}}&lt;br /&gt;
* {{App|qpwgraph|JACK ツール「QjackCtl」にインスパイアされた Qt ベースのグラフ/パッチベイ。接続セットを保存できます。|https://gitlab.freedesktop.org/rncbc/qpwgraph|{{Pkg|qpwgraph}}}}&lt;br /&gt;
* {{App|sonusmix|Pipewire オーディオルーティングツール。|https://codeberg.org/sonusmix/sonusmix|{{AUR|sonusmix}}}}&lt;br /&gt;
&lt;br /&gt;
=== TUI ===&lt;br /&gt;
&lt;br /&gt;
* {{App|pipemixer|ncurses で構築された PipeWire 用の TUI ボリュームコントロールアプリケーション。|https://github.com/heather7283/pipemixer|{{AUR|pipemixer}}}}&lt;br /&gt;
* {{App|wiremix|PipeWire 用のシンプルな TUI オーディオミキサー。|https://github.com/tsowell/wiremix|{{Pkg|wiremix}}}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
PipeWire パッケージは、初期設定の[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#configuration-file-pipewireconf 設定ファイル]を {{ic|/usr/share/pipewire}} に提供しています。パッケージのアップデートによって変更が上書きされてしまうため、これらのファイルを直接編集してはいけません。PipeWire を設定するには、{{ic|/usr/share/pipewire}} 内のファイルを、システム全体の代替ロケーションである {{ic|/etc/pipewire}} か、ユーザーごとのロケーションである {{ic|~/.config/pipewire}} にコピーしてください。優先順位の高いディレクトリに同名のファイルが存在する場合、それより優先順位の低いディレクトリにある同名ファイルは無視されます。&lt;br /&gt;
&lt;br /&gt;
PipeWire は、PulseAudio のプロファイルに加えて、独自の [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#what-is-the-pro-audio-profile Pro Audio] ([[プロフェッショナルオーディオ|プロオーディオ]]と混同しないでください) プロファイルを備えており、{{Pkg|pavucontrol}} から選択できます。&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
=== 音声 ===&lt;br /&gt;
&lt;br /&gt;
PulseAudio や JACK と同様に  PipeWire をオーディオサーバーとして使用できます。 PulseAudio サーバーの互換実装と JACK クライアント用の ABI 互換ライブラリを提供することで  PulseAudio と JACK の両方を置き換えることを目的としています。詳細については[https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ この記事]を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ALSA/レガシーアプリケーション ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-alsa}} をインストールして ALSA API を使用するすべてのアプリケーションが PipeWire を使用するよう設定できます。&lt;br /&gt;
&lt;br /&gt;
==== PulseAudio クライアント ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-pulse}} をインストールします。このパッケージは {{pkg|pulseaudio}} と {{pkg|pulseaudio-bluetooth}} を置き換えます。再起動するか、ログインし直すか、{{ic|pulseaudio.service}} を[[停止]]して、{{ic|pipewire-pulse.service}} ユーザーユニットを実行すると効果がわかります。&lt;br /&gt;
&lt;br /&gt;
パッケージがユーザーサービス {{ic|pipewire-pulse.socket}} を自動的に有効化するので、通常それ以上の操作は不要です。置き換えが機能しているかどうかを確認するには、次のコマンドを実行して出力を確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ pactl info|2=&lt;br /&gt;
...&lt;br /&gt;
Server Name: PulseAudio (on PipeWire &#039;&#039;x.y.z&#039;&#039;)&lt;br /&gt;
...&lt;br /&gt;
Default Sink: alsa_output.{bus}-{device}.{profile}&lt;br /&gt;
Default Source: alsa_input.{bus}-{device}.{profile}&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{man|1|pactl}} は、依存関係として &#039;&#039;pipewire-pulse&#039;&#039; とともにインストールされる PulseAudio クライアントライブラリパッケージ ({{pkg|libpulse}}) によって提供されます。&lt;br /&gt;
&lt;br /&gt;
===== 全体または個別のチャンネルの音量を設定する =====&lt;br /&gt;
&lt;br /&gt;
出力チャンネルのボリュームを調整するには、{{ic|pactl get-sink-volume {sink}}} を使用して、&#039;&#039;Default Sink:&#039;&#039; (上記) または &#039;&#039;Name&#039;&#039; の値を使用して &#039;&#039;sink&#039;&#039; を指定する必要があります。:&lt;br /&gt;
&#039;&#039; (下記)、デフォルトのシンクデバイス (&#039;&#039;@DEFAULT_SINK@&#039;&#039;)、または &#039;&#039;Sink #&#039;&#039; (例: 以下の &#039;&#039;1&#039;&#039;):&lt;br /&gt;
{{hc|$ pactl list sinks {{!}} grep -B1 -A9 State:|2=&lt;br /&gt;
Sink #1&lt;br /&gt;
        State: RUNNING&lt;br /&gt;
        Name: alsa_output.pci-0000_2d_00.4.analog-surround-51&lt;br /&gt;
...&lt;br /&gt;
        Driver: PipeWire&lt;br /&gt;
...&lt;br /&gt;
        Mute: no&lt;br /&gt;
        Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB,   rear-left: 65536 / 100% / 0.00 dB,   rear-right: 65536 / 100% / 0.00 dB,   front-center: 65536 / 100% / 0.00 dB,   lfe: 65536 / 100% / 0.00 dB&lt;br /&gt;
                balance 0.00&lt;br /&gt;
}}&lt;br /&gt;
ヒント: オーディオが再生されている場合、他のデバイスとして &#039;&#039;実行中&#039;&#039; の {{man|1|grep}} は &#039;&#039;一時停止&#039;&#039; されます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;バランス&#039;&#039; 比率は自動的に計算されます。デフォルトのデバイスの全体のボリュームを設定するには、次のコマンドを使用します: {{bc|pactl set-sink-volume @DEFAULT_SINK@ 75%}}&lt;br /&gt;
個別のチャンネルを設定するには、各チャンネルのボリュームを個別に指定します:&lt;br /&gt;
{{bc|pactl set-sink-volume @DEFAULT_SINK@ 100% 75% 100% 75% 100% 100%}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ソース&#039;&#039; 入力も同様に処理されます。さらに詳しい設定 (モジュールなど) については、[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Migrate-PulseAudio Migrate PulseAudio] および [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PulseAudio Pipewire-Pulse Configuration] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== JACK クライアント ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-jack}} をインストールします。{{ic|pw-jack}} を使用して JACK クライアントを起動すると、元の {{ic|libjack*}} ではなく PipeWire が提供する互換ライブラリが使用されます:&lt;br /&gt;
&lt;br /&gt;
 pw-jack &#039;&#039;application&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
カスタムバッファサイズを要求することもできます。{{ic|PIPEWIRE_LATENCY}}環境変数を {{ic|バッファサイズ/サンプルレート}} (ブロックのレイテンシ(秒)を意味します) に設定します:&lt;br /&gt;
&lt;br /&gt;
 PIPEWIRE_LATENCY=&amp;quot;128/48000&amp;quot; pw-jack &#039;&#039;application&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
また {{aur|pipewire-jack-dropin}} をインストールするか、{{pkg|jack}} か {{pkg|jack2}} をアンインストールして JACK クライアントが互換ライブラリを自動的に読み込むようにもできます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ldd}} を使用して JACK アプリケーションが正しいライブラリにリンクしていることを確認します。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ ldd /usr/bin/qjackctl {{!}} grep -i libjack|2=&lt;br /&gt;
        libjack.so.0 =&amp;gt; /usr/lib/pipewire-0.3/jack/libjack.so.0 (0x00007f7e5080a000)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth デバイス ====&lt;br /&gt;
&lt;br /&gt;
PipeWire は {{pkg|pipewire-pulse}} パッケージがインストールされている場合 Bluetooth オーディオデバイスを制御します。具体的には、メディアセッションデーモンは {{ic|/etc/pipewire/media-session.d/with-pulseaudio}} が存在する時に自動的にその {{ic|bluez5}} モジュールを有効にします。&lt;br /&gt;
&lt;br /&gt;
===== プロファイルの自動選択機能 =====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-media-session}} は、入力ストリームが必要なときに、HSP/HFP と A2DP プロファイルを自動的に切り替えます。これを有効にするには、{{ic|bluez5.autoswitch-profile}} プロパティを {{ic|true}} にセットしてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf (or ~/.config/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                ...&lt;br /&gt;
                bluez5.autoswitch-profile = true&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらの機能は、[[WirePlumber]] ではまだ [https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/90 実装中] です。&lt;br /&gt;
&lt;br /&gt;
==== PipeWire ネイティブパッチセット ====&lt;br /&gt;
&lt;br /&gt;
グラフィカルな視覚化と接続の作成のための Helvum はありますが、それ以外はまだ入っていません。以下は、ワイヤセットの保存、ワイヤセットの読み込み、すべての接続の解除を行う bash スクリプトです。保存と読み込みには、コマンドラインパラメータでファイル名を指定します。&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-savewires|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
if [[ &amp;quot;$#&amp;quot; -ne 1 ]]; then&lt;br /&gt;
	echo&lt;br /&gt;
	echo &#039;usage: pw-savewires filename&#039;&lt;br /&gt;
	echo&lt;br /&gt;
	exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
rm $1 &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
while IFS= read -r line; do&lt;br /&gt;
	link_on=`echo $line | cut -f 4 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_op=`echo $line | cut -f 6 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_in=`echo $line | cut -f 8 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_ip=`echo $line | cut -f 10 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	echo &amp;quot;Saving: &amp;quot; &amp;quot;&#039;&amp;quot;$link_on:$link_op&amp;quot;&#039;,&#039;&amp;quot;$link_in:$link_ip&amp;quot;&#039;&amp;quot;&lt;br /&gt;
	echo &amp;quot;&#039;&amp;quot;$link_on:$link_op&amp;quot;&#039;,&#039;&amp;quot;$link_in:$link_ip&amp;quot;&#039;&amp;quot; &amp;gt;&amp;gt; $1&lt;br /&gt;
done &amp;lt; &amp;lt;(pw-cli dump short link)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-loadwires|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import csv&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
if len(sys.argv) &amp;lt; 2:&lt;br /&gt;
	print(&#039;\n usage: pw-loadwires filename\n&#039;)&lt;br /&gt;
	quit()&lt;br /&gt;
&lt;br /&gt;
with open(sys.argv[1], newline=&#039;&#039;) as csvfile:&lt;br /&gt;
	pwwreader = csv.reader(csvfile, delimiter=&#039;,&#039;, quotechar=&#039;&amp;quot;&#039;)&lt;br /&gt;
	for row in pwwreader:&lt;br /&gt;
		print(&#039;Loading:  &#039; + row[0] + &#039; --&amp;gt; &#039; + row[1])&lt;br /&gt;
		process = os.popen(&#039;pw-link &#039; + row[0] + &#039; &#039; + row[1])&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-dewire|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
while read -r line; do&lt;br /&gt;
	echo &#039;Dewiring: &#039; $line &#039;...&#039;&lt;br /&gt;
	pw-link -d $line&lt;br /&gt;
done &amp;lt; &amp;lt;(pw-cli dump short link {{!}} grep -Eo &#039;^[0-9]+&#039;)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== ネットワーク上のコンピューターとオーディオ機器を共有する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire 自体はネットワーク透過型ではありませんが、そのパルス実装は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PulseAudio#network-support ネットワークストリーミング] をサポートしています。ネットワーク上のコンピュータ間でオーディオを共有する簡単な方法は、[[Avahi]] デーモンを使って検出することです。&lt;br /&gt;
オーディオを共有するすべてのコンピュータで {{ic|avahi-daemon.service}} が実行されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
ローカルのオーディオデバイスを共有するために、ホスト上で適切なモジュールをロードしてください。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-native-protocol-tcp listen=&#039;&#039;192.168.1.10&#039;&#039; # Use the local IP address&lt;br /&gt;
 pactl load-module module-zeroconf-publish&lt;br /&gt;
&lt;br /&gt;
次に、クライアントにディスカバリモジュールをロードします。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-zeroconf-discover&lt;br /&gt;
&lt;br /&gt;
===== AirPlay レシーバーにオーディオをストリーミングする =====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:AirPlay#Receivers|AirPlay Receiver]] を装ったデバイスにオーディオをストリーミングすることが可能です。この機能を有効にするには、[https://docs.pipewire.org/page_module_raop_discover.html RAOP Discover モジュール] をロードします。 &lt;br /&gt;
&lt;br /&gt;
 $ pactl load-module module-raop-discover&lt;br /&gt;
&lt;br /&gt;
専用の設定ファイルを作成することで、このモジュールを自動的にロードすることもできます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf.d/raop-discover.conf (or ~/.config/pipewire/pipewire.conf.d/raop-discover.conf)|2=&lt;br /&gt;
context.modules = [&lt;br /&gt;
   {&lt;br /&gt;
       name = libpipewire-module-raop-discover&lt;br /&gt;
       args = { }&lt;br /&gt;
   }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
一部のスピーカーの AirPlay 実装 (Sonos AirPlay 2 スピーカーなど) では、ソースデバイスで着信 UDP トラフィック用にポート 6001 および 6002 を開く必要がある場合があります。&lt;br /&gt;
&lt;br /&gt;
==== ネイティブ JACK 上で PipeWire を実行する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire はネイティブ JACK デーモン上の JACK クライアントとして実行することもできます。詳細は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/JACK JACK and PipeWire] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== PipeWire シンクとして ALSA dmix デバイスを使用する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire サーバー(またはユーザーごとに複数) を [[Advanced Linux Sound Architecture#Dmix|ALSA dmix デバイス]] を介して ALSA に出力することが可能です。これにより、ALSA を主要な音声出力システムとして使用しながら、Bluetooth ヘッドフォンなどの ALSA 以外のデバイスを使用することができるようになります。&lt;br /&gt;
&lt;br /&gt;
===== ALSA dmix セットアップ =====&lt;br /&gt;
&lt;br /&gt;
{{ic|PCH}} と {{ic|HDMI}} の 2 枚のカードがあるとします。&lt;br /&gt;
&lt;br /&gt;
{{hc|/proc/asound/cards|&lt;br /&gt;
 0 [PCH            ]: HDA-Intel - HDA Intel PCH&lt;br /&gt;
                      HDA Intel PCH at 0xdff40000 irq 146&lt;br /&gt;
 1 [HDMI           ]: HDA-Intel - HDA ATI HDMI&lt;br /&gt;
                      HDA ATI HDMI at 0xdfe60000 irq 147&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
PCM は次のようになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/proc/asound/pcm|&lt;br /&gt;
00-00: ALC1220 Analog : ALC1220 Analog : playback 1 : capture 1&lt;br /&gt;
00-02: ALC1220 Alt Analog : ALC1220 Alt Analog : capture 1&lt;br /&gt;
01-03: HDMI 0 : HDMI 0 : playback 1&lt;br /&gt;
01-07: HDMI 1 : HDMI 1 : playback 1&lt;br /&gt;
01-08: HDMI 2 : HDMI 2 : playback 1&lt;br /&gt;
01-09: HDMI 3 : HDMI 3 : playback 1&lt;br /&gt;
01-10: HDMI 4 : HDMI 4 : playback 1&lt;br /&gt;
01-11: HDMI 5 : HDMI 5 : playback 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ALSA 設定が次のようになっているとします。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/asound.conf|&lt;br /&gt;
ctl.!default {&lt;br /&gt;
  type hw&lt;br /&gt;
  card PCH&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.!default {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave.pcm &amp;quot;&#039;&#039;&#039;dmix:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.dhdmi {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave.pcm &amp;quot;&#039;&#039;&#039;dmix:HDMI,9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この特定の例では、dmix デバイスは {{ic|dmix:PCH,0}} と {{ic|dmix:HDMI,9}} になります。&lt;br /&gt;
&lt;br /&gt;
===== PipeWire dmix セットアップ =====&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|alsa_monitor.enable()}} をコメントアウトして、{{ic|wireplumber}} によるハードウェア ALSA デバイスの監視と追加を停止します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/90-enable-all.lua (or ~/.config/wireplumber/main.lua.d/90-enable-all.lua)|&lt;br /&gt;
...&lt;br /&gt;
-- Load devices&lt;br /&gt;
&#039;&#039;&#039;-- alsa_monitor.enable()&#039;&#039;&#039;&lt;br /&gt;
v4l2_monitor.enable()&lt;br /&gt;
libcamera_monitor.enable()&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ここで、dmix デバイスを使用するように {{ic|pipewire}} を設定します。デフォルトの設定ファイル ({{ic|/usr/share/pipewire/pipewire.conf}}) には [https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/0.3.59/src/daemon /pipewire.conf.in#L219-239 コメントアウトされた例] をベースとして使用できます。&lt;br /&gt;
&lt;br /&gt;
独自の要素を {{ic|context.objects}} 配列に追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf.d/alsa-dmix.conf (or ~/.config/pipewire/pipewire.conf.d/alsa-dmix.conf)|output=&lt;br /&gt;
context.objects = [&lt;br /&gt;
    # We do not start with dmix, but with an input device.&lt;br /&gt;
    # Do not forget to add an input device.&lt;br /&gt;
    # On a friend&#039;s Laptop, I saw Zoom having a nervous&lt;br /&gt;
    # breakdown and endlessly crying because no input device&lt;br /&gt;
    # was configured! You have been warned.&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.source&lt;br /&gt;
            node.name              = &amp;quot;alsa-mic-internal&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;Mic Internal&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Source&amp;quot;&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;hw:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    # Okay, now we add our dmix PCMs&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.sink # sink for dmix&lt;br /&gt;
            node.name              = &amp;quot;alsa-dmix-internal&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;PCM Internal&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Sink&amp;quot; # Sink for dmix&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;dmix:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.sink # sink for dmix&lt;br /&gt;
            node.name              = &amp;quot;alsa-dmix-hdmi&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;PCM HDMI&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Sink&amp;quot; # Sink for dmix&lt;br /&gt;
            # remember this is a non-default dmix from /etc/asound.conf&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;dmix:HDMI,9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ユーザー (非 root) として、{{ic|wpctl status}} の出力を確認し、{{ic|wpctl set-default &#039;&#039;ID&#039;&#039;}} でデフォルトの入力(ソース) と出力 (シンク) のデバイスを好みのものに設定します。{ic|&#039;&#039;ID&#039;&#039;}} はシンク/ソース名の前の数字です。&lt;br /&gt;
&lt;br /&gt;
これで、構成を完全にテストすることができます。&lt;br /&gt;
&lt;br /&gt;
==== デバイスプロファイルの切り替え ====&lt;br /&gt;
&lt;br /&gt;
{{ic|snd_hda_intel}} などの一部のハードウェアオーディオデバイスは、デバイスが実行されているプロファイルによって機能が異なります。{{ic|snd_hda_intel}} の場合、HDMI とアナログ出力用に個別のプロファイルがあります。&lt;br /&gt;
&lt;br /&gt;
WirePlumber で HDMI に切り替える:&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
$ wpctl set-profile &amp;lt;device-ID&amp;gt; 3&lt;br /&gt;
$ wpctl status&lt;br /&gt;
|output=&lt;br /&gt;
...&lt;br /&gt;
├─ Sinks:&lt;br /&gt;
│  *   53. Built-in Audio Digital Stereo (HDMI) [vol: 1.00]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
WirePlumber でアナログに切り替える:&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
$ wpctl set-profile &amp;lt;device-ID&amp;gt; 1&lt;br /&gt;
$ wpctl status&lt;br /&gt;
|output=&lt;br /&gt;
...&lt;br /&gt;
├─ Sinks:&lt;br /&gt;
│  *   51. Built-in Audio Analog Stereo        [vol: 0.60]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WebRTC 画面共有 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのアプリケーションは、例えばウェブブラウザで WebRTC を使うとき (例: Google Meet) などに、デスクトップ (あるいは個々のアプリケーション) をキャプチャするために X11 に依存していました。Wayland では、セキュリティ上の理由から画面共有は異なる方法で処理されます。PipeWire はきめ細かなアクセス制御を使用して、Wayland 上のコンテンツを共有できます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|WebRTC 画面共有が機能しているかどうか、[https://mozilla.github.io/webrtc-landing/gum_test.html Mozilla の GetUserMedia WebRTX テストページ]でテストしましょう。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{Pkg|xdg-desktop-portal}} 1.10.0 では、D-Bus インターフェースの仕様と実装の不一致が修正されました。[https://github.com/flatpak/xdg-desktop-portal/pull/609] そのため、一部のクライアントは xdg-desktop-portal 1.10.0 またはそれ以降で動作しないかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
Firefox (バージョン84以降) と Chromium (バージョン110以降) はデフォルトでこの方法をサポートしていますが、Chromium の古いバージョン (バージョン73以降) では、URL {{ic|chrome://flags/#enable-webrtc-pipewire-capturer}} で対応する (実験的) フラグを設定するか、CLI 引数 {{ic|1=--enable-features=WebRTCPipeWireCapturer}} を用いて、[https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWire サポート] を有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|obs-studio}} (バージョン27以降) は、新しい PipeWire キャプチャソースを使用することにより、この方法をサポートしています。&lt;br /&gt;
&lt;br /&gt;
=== 映像 ===&lt;br /&gt;
&lt;br /&gt;
ソフトウェアはまだ商業利用には適していませんが、試す分には問題ありません。[[GStreamer]] を使用して映像ストリームを処理するほとんどのアプリケーションは PipeWire GStreamer プラグインを使用して設定なしで動作するはずです ([[GStreamer#PipeWire]] を参照してください)。そのため既に {{pkg|cheese}} のようなアプリケーションは PipeWire を使用して映像入力を利用できます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-v4l2}} を使用すると、{{ic|pw-v4l2}} スクリプトを使用してライブラリをプリロードすることも可能になります ({{ic|/lib/pipewire-0.3/v4l2/libpw-v4l2.so}}) は、v4l2 呼び出しをインターセプトし、PipeWire 経由でビデオをルーティングします。&lt;br /&gt;
&lt;br /&gt;
== 音声のポストプロセッシング ==&lt;br /&gt;
&lt;br /&gt;
=== Pipewire モジュールフィルターチェーン ===&lt;br /&gt;
&lt;br /&gt;
Pipewire には {{ic|[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Filter-Chain filter-chain]}} という内部モジュールがあり、音声の入出力を処理するノードを作成することができます。参照してください。&lt;br /&gt;
 /usr/share/pipewire/filter-chain/ を参照してください。&lt;br /&gt;
イコライザー、バーチャルサラウンドサウンド、LADSPA プラグイン、チャンネルミキシングなどの例を紹介します。&lt;br /&gt;
&lt;br /&gt;
==== システム全体のパラメトリックイコライゼーション ====&lt;br /&gt;
&lt;br /&gt;
設定ファイルを {{ic|.config}} フォルダにコピーします。&lt;br /&gt;
 mkdir -p ~/.config/pipewire/pipewire.conf.d&lt;br /&gt;
 cp /usr/share/pipewire/filter-chain/sink-eq6.conf ~/.config/pipewire/pipewire.conf.d/&lt;br /&gt;
次に、{{ic|sink-eq6.conf}} を編集して、必要なパラメータを組み込みます。ヘッドフォンの場合、これらは [https://old.reddit.com/r/oratory1990/wiki/index Oratory1990 のデータベース] から入手できます。そこにリストされていない場合は、[https://github.com/jaakkopasanen/AutoEq/tree/master/results/ AutoEQ project]&lt;br /&gt;
&lt;br /&gt;
プリアンプが必要な場合は、{{ic|eq_band_1}} を変更して、{{ic|bq_highshelf}} フィルタを周波数 0Hz でマイナスゲイン (-120 〜 +20dB のゲインをサポート) で適用します。&lt;br /&gt;
 label = bq_highshelf&lt;br /&gt;
 control = { &amp;quot;Freq&amp;quot; = 0 &amp;quot;Q&amp;quot; = 1.0 &amp;quot;Gain&amp;quot; = -7.5 }&lt;br /&gt;
&lt;br /&gt;
6 バンドを超える場合は、{{ic|nodes}} リストと対応する {{ic|links}} にさらにエントリを追加して、1 つのフィルタ &amp;quot;:Out&amp;quot; を次のフィルタ &amp;quot;:In&amp;quot; に接続します。たとえば、11 に増やします。バンド (プリアンプ + 10):&lt;br /&gt;
                     { output = &amp;quot;eq_band_6:Out&amp;quot; input = &amp;quot;eq_band_7:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_7:Out&amp;quot; input = &amp;quot;eq_band_8:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_8:Out&amp;quot; input = &amp;quot;eq_band_9:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_9:Out&amp;quot; input = &amp;quot;eq_band_10:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_10:Out&amp;quot; input = &amp;quot;eq_band_11:In&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Pipewire を再起動し、デフォルトのサウンド出力デバイスとして &amp;quot;Equalizer Sink&amp;quot; を選択します。これは、すべてのアプリケーションに適用されます。&lt;br /&gt;
&lt;br /&gt;
=== EasyEffects ===&lt;br /&gt;
&lt;br /&gt;
EasyEffects (以前は PulseEffects と呼ばれていました) は多数のエフェクトとフィルタを個々の入出力ストリーム (アプリケーションの音声出力やマイクの入力など) に提供する GTK 製のユーティリティです。注目すべきエフェクトには、入出力イコライザー、出力ラウドネス等化、ベースエンハンスメント、入力ディエッサー、ノイズ抑制プラグインなどがあります。[https://github.com/wwmm/easyeffects GitHub ページ]にエフェクトの一覧があります。&lt;br /&gt;
&lt;br /&gt;
EasyEffects を使用するには、{{pkg|easyeffects}} をインストールします。プリセット設定集については、[https://github.com/wwmm/easyeffects/wiki/Community-presets コミュニティープリセット]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|PulseEffects の古いバージョンについては [[PulseAudio#PulseEffects]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== NoiseTorch ===&lt;br /&gt;
&lt;br /&gt;
{{aur|noisetorch}} はノイズ抑制に使用できます。ビルド済み ({{aur|noisetorch-bin}}) や開発版 ({{aur|noisetorch-git}}) のパッケージもあります。&lt;br /&gt;
&lt;br /&gt;
起動すると選択したマイクにモジュールを読み込むことができます。声が出力される閾値を調整することができます。実際の声が削除されない最大のレベルに設定するべきです。&lt;br /&gt;
&lt;br /&gt;
=== Noise suppression for voice ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|noise-suppression-for-voice}} をインストールし、以下のいずれかのオプションを使用します:&lt;br /&gt;
&lt;br /&gt;
* 以下の行を {{ic|context.exec}} セクションに追加する:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf (or ~/.config/pipewire/pipewire.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
context.exec = [&lt;br /&gt;
    ...&lt;br /&gt;
    { path = &amp;quot;/usr/bin/pipewire&amp;quot; args = &amp;quot;-c /usr/share/pipewire/filter-chain/source-rnnoise.conf&amp;quot; }&lt;br /&gt;
    ...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* https://github.com/werman/noise-suppression-for-voice#pipewire に従う&lt;br /&gt;
&lt;br /&gt;
そして、オーディオ設定でノイズキャンセルソースをデフォルトとして設定します。この機能を使う前に、アプリケーションを再起動する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== JamesDSP ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Audio4Linux/JDSP4Linux#readme JamesDSP for Linux] ({{AUR|jamesdsp}} として入手可能) は PipeWire と PulseAudio のためのオープンソースのサウンドエフェクトを提供します。LADSPA や Calf などに依存することなく、独自のエフェクトエンジンを使用しています。JamesDSP は当初 Android デバイス用のオーディオエフェクトプロセッサーとして公開されました。&lt;br /&gt;
&lt;br /&gt;
=== LADSPA、LV2、VST プラグイン ===&lt;br /&gt;
&lt;br /&gt;
LADSPA、LV2、VSTのプラグインを使用したい場合は、カスタム PulseAudio null シンクと Carla Jack ホストを利用できます。{{pkg|pipewire-pulse}} と {{pkg|pipewire-jack}} と {{pkg|carla}} をインストールします。はじめに {{ic|default_null_sink}} という名前の PulseAudio の null シンクを作成します。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=default_null_sink channel_map=FL,FR&lt;br /&gt;
&lt;br /&gt;
{{ic|pw-jack carla-rack}} で PipeWire を使用する Carla を起動します。&#039;&#039;Rack&#039;&#039; タブで使いたいプラグインを全て追加します。プラグインのタイプが &#039;&#039;stereo&#039;&#039; であることを確認してください。適用する順番を変えることができます。EasyEffectsのようにリストの最初のプラグインが最初に入力の音声ストリームを受け取ります。その後 &#039;&#039;Patchbay&#039;&#039; タブに移動し {{ic|default_null_sink}} の L/R monitor を Carla input に接続し、Carla output を出力したいデバイス (スピーカーやイヤホンや HDMI 出力など) の playback に接続します。設定をフォルダに保存します ({{ic|~/Documents/carla_sink_effects.carxp}} など)。&lt;br /&gt;
&lt;br /&gt;
Firefox で動画を見ている時など、アプリケーションが音声を再生している時に効果を試すことができます。2つの方法があります。一つは Carla の &#039;&#039;Patchbay&#039;&#039; タブで Firefox の接続を全て外し {{ic|default_null_sink}} の L/R output に接続する方法です。もう一つは {{pkg|pavucontrol}} を使用し Firefox の音声ストリームを {{ic|default_null_sink}} に変更する方法です (この方法は同じアプリケーションの次回起動時に同じ接続先を使用するはずです)。&lt;br /&gt;
&lt;br /&gt;
これらの設定を起動時に適用するには、まず2つの systemd ユーザーサービスを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/jack-carla-rack.service|output=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Load Carla Rack JACK host&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PassEnvironment=&amp;quot;PIPEWIRE_LINK_PASSIVE=true&amp;quot;&lt;br /&gt;
Type=exec&lt;br /&gt;
ExecStart=/usr/bin/pw-jack carla-rack -n&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
{{hc|~/.config/systemd/user/pulseaudio-null-sink@.service|output=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Load %i Pulseaudio null sink&lt;br /&gt;
Before=jack-carla-rack.service&lt;br /&gt;
After=pipewire-pulse.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=%i channel_map=FL,FR&lt;br /&gt;
ExecStop=/usr/bin/pactl unload-module module-null-sink&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;jack-carla-rack&#039;&#039; サービスの &#039;&#039;Environment&#039;&#039; を Carla の設定ファイルのフルパスを指定するよう上書きします:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/jack-carla-rack.service.d/override.conf|output=&lt;br /&gt;
Environment=&amp;quot;CARLA_CONFIG_FILE=/home/username/Documents/carla_sink_effects.carxp&amp;quot;&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/bin/pw-jack carla-rack -n $CARLA_CONFIG_FILE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に、作成したサービスを有効化します。&#039;&#039;pulseaudio-null-sink&#039;&#039; サービスには {{ic|default_null_sink}} 引数をつけてください:&lt;br /&gt;
&lt;br /&gt;
 systemctl --user enable pulseaudio-null-sink@default_null_sink.service&lt;br /&gt;
 systemctl --user enable jack-carla-rack.service&lt;br /&gt;
&lt;br /&gt;
{{Note|システム設定で {{ic|default_null_sink}} をデフォルトデバイスに設定すると、全てのアプリケーションが {{ic|default_null_sink}} にリダイレクトされ、音量の変更がスピーカーではなく {{ic|default_null_sink}} に対して行われるようになります。スピーカーの音量を変更したい場合は、デフォルトデバイスをスピーカーから変更せずにアプリケーションの出力先を pavucontrol で {{ic|default_null_sink}} に変更してください (PipeWire の互換性レイヤーは次回起動時も出力先を覚えています)。}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== オーディオ ===&lt;br /&gt;
&lt;br /&gt;
==== PipeWire にマイクが検出されない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire の {{ic|alsa-monitor}} モジュールは、デフォルトで {{Pkg|alsa-card-profiles}} を使ってデバイスを検出します。これがうまくいかない場合は、{{ic|api.alsa.use-acp}} をオフにするか、オプションで {{ic|api.alsa.use-ucm}} をオンにすることを試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-media-session}} を使用している場合。&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf (or ~/.config/pipewire/media-session.d/alsa-monitor.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        actions = {&lt;br /&gt;
        update-props = {&lt;br /&gt;
            ...&lt;br /&gt;
            api.alsa.use-acp = false&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
それ以外の場合は、{{Pkg|wireplumber}} を使用している場合。&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/50-alsa-config.lua (or ~/.config/wireplumber/main.lua.d/50-alsa-config.lua)|output=&lt;br /&gt;
...&lt;br /&gt;
alsa_monitor.rules = {&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        apply_properties = {&lt;br /&gt;
            -- Use ALSA-Card-Profile devices. They use UCM or the profile&lt;br /&gt;
            -- configuration to configure the device and mixer settings.&lt;br /&gt;
            -- [&amp;quot;api.alsa.use-acp&amp;quot;] = true,&lt;br /&gt;
 &lt;br /&gt;
            -- Use UCM instead of profile when available. Can be&lt;br /&gt;
            -- disabled to skip trying to use the UCM profile.&lt;br /&gt;
            [&amp;quot;api.alsa.use-ucm&amp;quot;] = true,&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、pipewire を再起動し、利用可能なデバイスを確認します。&lt;br /&gt;
&lt;br /&gt;
{{hc| 1=&lt;br /&gt;
$ pw-record --list-targets&lt;br /&gt;
|2=&lt;br /&gt;
Available targets (&amp;quot;*&amp;quot; denotes default): 62&lt;br /&gt;
	58: description=&amp;quot;Built-in Audio&amp;quot; prio=1872&lt;br /&gt;
	60: description=&amp;quot;Built-in Audio&amp;quot; prio=2000&lt;br /&gt;
*	62: description=&amp;quot;Built-in Audio (Loopback PCM)&amp;quot; prio=1984&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 新しいデバイスを接続したときにサウンドが自動的に切り替わらない ====&lt;br /&gt;
&lt;br /&gt;
新しく接続されたデバイスに自動的に切り替えるには、次のファイルを作成します。:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire-pulse.conf.d/switch-on-connect.conf (or ~/.config/pipewire/pipewire-pulse.conf.d/switch-on-connect.conf)|output=&lt;br /&gt;
# override for pipewire-pulse.conf file&lt;br /&gt;
pulse.cmd = [&lt;br /&gt;
    { cmd = &amp;quot;load-module&amp;quot; args = &amp;quot;module-always-sink&amp;quot; flags = [ ] }&lt;br /&gt;
    { cmd = &amp;quot;load-module&amp;quot; args = &amp;quot;module-switch-on-connect&amp;quot; }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== サウンドが自動的に Bluetooth ヘッドフォンに切り替わらない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|pactl load-module module-switch-on-connect}} を実行し、ログイン時に自動的にそのコマンドが実行されるようにデスクトップ環境を設定してください。詳しくは [https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/89 wireplumber issue #89] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth デバイスに接続しても音が出ない ====&lt;br /&gt;
&lt;br /&gt;
2020-12-07 の時点で、Bluetooth デバイスを接続しても音が出ない場合は、デフォルトのシンクに切り替えるか、シンク入力を正しいシンクに移動する必要があります。{{ic|pactl list sinks}} で使用可能なシンクの一覧を表示し、{{ic|pactl set-default-sink}} でデフォルトのシンクを Bluetooth デバイスに切り替えます。これは[https://gist.github.com/tinywrkb/04e7fd644afa9b92d33a3a99ab07ee9e このようなスクリプト]を使って [[udev]] で自動化できます。&lt;br /&gt;
&lt;br /&gt;
この問題については、この [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 Reddit スレッド]を参照してください。スクリプトの作成者によると、ヘッドセットプロファイル (HSP) にまだ問題がある可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== 音量が小さい ====&lt;br /&gt;
&lt;br /&gt;
PulseAudio を PipeWire で置き換えた後、正しく音が出ても、再起動後に音量が極端に小さくなることがあります。&lt;br /&gt;
&lt;br /&gt;
{{ic|alsamixer}} を開き、{{ic|F6}} を押して適切なサウンドカードを選び ALSA のボリュームが100%であることを確認してください。{{ic|alsactl}} は再起動後もこの設定を維持するはずです。&lt;br /&gt;
&lt;br /&gt;
==== increasing RLIMIT_MEMLOCK ====&lt;br /&gt;
&lt;br /&gt;
 Dec 13 11:11:11 HOST pipewire-pulse[99999]: Failed to mlock memory 0x7f4f659d8000 32832: This is not a problem but for best performance, consider increasing RLIMIT_MEMLOCK&lt;br /&gt;
&lt;br /&gt;
{{pkg|realtime-privileges}} をインストールし {{ic|realtime}} グループに自分のユーザーを追加します。&lt;br /&gt;
&lt;br /&gt;
あるいは memlock を 64kB から 128kB に増やすことで、この問題を解決できるようです。[[systemd/ユーザー]] で {{ic|pipewire-pulse}} を実行している場合は {{ic|/etc/security/limits.d/username.conf}} に次の行を追加します:&lt;br /&gt;
&lt;br /&gt;
 username	soft	memlock	64&lt;br /&gt;
 username	hard	memlock	128&lt;br /&gt;
&lt;br /&gt;
==== サンプリングレートを変更する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire のデフォルトでは、グローバルサンプルレートは 48kHz に設定されています。これを変更したい場合(より高い値をサポートする DAC を所有しているなど)、設定ファイル {{ic|/etc/pipewire/pipewire.conf}} の {{ic|1=default.clock.rate = 48000}} 行を編集することで行うことができます。例えば、192kHz にしたい場合は、{{ic|48000}} を {{ic|1=default.clock.rate = 192000}} にコメントを解除して変更します。&lt;br /&gt;
&lt;br /&gt;
PipeWire は、DAC がサポートする出力サンプルレートを変更することもできます。設定するには、{{ic|1=default.clock.allowed-rates = [ 48000 ]}} という行をコメント解除して設定します。例えば、{{ic|[ 44100 48000 88200 96000 ]}} とします。サンプルレートは、カードがアイドルのときに再生されるオーディオストリームのサンプルレートに従います。&lt;br /&gt;
&lt;br /&gt;
どの出力サンプルレートとサンプルフォーマットが DAC に送られたデータであるかを確認するには(おそらく桁を変更する必要があります)。&lt;br /&gt;
 cat /proc/asound/card0/pcm0p/sub0/hw_params&lt;br /&gt;
どの入力サンプルレートを使用しているかを確認するには、{{ic|pcm0p}} を {{ic|pcm0c}} に変更します。({{ic|c}} は &amp;quot;capture&amp;quot; の略、{{ic|p}} は &amp;quot;playback&amp;quot; の略です).&lt;br /&gt;
&lt;br /&gt;
==== 許容されるサンプルレートの変更 ====&lt;br /&gt;
&lt;br /&gt;
PipeWire は、DAC がサポートする出力サンプルレートを動的に変更することもできます。サンプルレートは、再生中のオーディオストリームのサンプルレートに従います。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf (or ~/.config/pipewire/pipewire.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
context.properties = {&lt;br /&gt;
    ...&lt;br /&gt;
    &#039;&#039;&#039;default.clock.allowed-rates = [ &#039;&#039;sample_rate_1&#039;&#039; &#039;&#039;sample_rate_2&#039;&#039; &#039;&#039;sample_rate_3&#039;&#039; ... ]&#039;&#039;&#039;&lt;br /&gt;
    ...&lt;br /&gt;
}}&lt;br /&gt;
たとえば、{{ic|[ 44100 48000 88200 96000 ]}} です。DAC でサポートされている値については、ハードウェアのマニュアルを参照してください。&lt;br /&gt;
&lt;br /&gt;
開発者の [https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1523] によると: &amp;quot;PipeWire は最大16の異なるサンプルレートを許容し、可能な限り切り替えます。&amp;quot; つまり、上記の設定では、&#039;&#039;&#039;再サンプリングは行われない&#039;&#039;&#039;ということです。&lt;br /&gt;
&lt;br /&gt;
DAC に送信されるデータがどの出力サンプルレートとサンプルフォーマットであるかを確認するには (おそらく桁を変更する必要があります):&lt;br /&gt;
&lt;br /&gt;
 $ cat /proc/asound/card0/pcm0p/sub0/hw_params&lt;br /&gt;
&lt;br /&gt;
どの入力サンプルレートが使用されているかを確認するには、{{ic|pcm0p}} を {{ic|pcm0c}} に変更します ({{ic|c}} は &amp;quot;capture&amp;quot; の略で、{{ic|p}} は &amp;quot;playback&amp;quot; の略です)&lt;br /&gt;
&lt;br /&gt;
==== 音質 (リサンプリング品質) ====&lt;br /&gt;
&lt;br /&gt;
PulseAudio を {{ic|1=resample-method = speex-float-10}} または {{ic|soxr-vhq}} で使用していた場合、コメントを解除して {{ic|1=resample.XXX}} を変更することを検討するとよいかもしれません。{{ic|1=resample.quality = 4}} を {{ic|10}} または最大値 {{ic|15}} に変更することを検討してください。(存在しない場合は {{ic|/usr/share/pipewire/}} からコピーしてください)。PipeWire の再起動を忘れないでください (sudo なし): {{ic|systemctl --user restart pipewire.service pipewire-pulse.socket}} (設定変更を適用させたい場合は、{{ic|pipewire-pulse.socket}}を絶対に忘れないでください)。&lt;br /&gt;
&lt;br /&gt;
{{ic|10}} と {{ic|15}} では、品質の差はほとんどありませんが、CPU 負荷は 2〜3 倍になっています。また、{{ic|4}}, {{ic|10}}, {{ic|15}} のレイテンシーの差はまだ誰も調べていません。Ryzen 2600 で 44100→48000Hz で {{ic|1= resample.quality = 15}} にすると {{ic|pipewire}} や {{ic|pipewire-pulse}} プロセスが 1CPUコア4.0% の負荷となる。&lt;br /&gt;
&lt;br /&gt;
リサンプラーの比較はこちら:https://src.infinitewave.ca/(18KHz以上、120dB以上は注意)。speeex は &#039;&#039;Xiph.org Speex&#039;&#039; と記載されています。&lt;br /&gt;
&lt;br /&gt;
PipeWire は Spa と呼ばれる独自のリサンプリングアルゴリズムを使用しています。SoX の {{ic|sox}}、Speex の {{ic|speexenc}} と同様、PipeWire にはそのスタンドアロン版があります。{{ic|spa-resample}} 使い方は&lt;br /&gt;
 spa-resample -q 15 -f s24 -r 48000 input16bit44100orAnythingElse.wav output24bit48000hz.wav&lt;br /&gt;
&lt;br /&gt;
自分で sink を作れば、他のリサンプラーを使うことも可能でしょう。あるいは、音楽プレーヤーのプラグインを使うこともできます(例えば、Qmmp には SoX プラグインがあります)&lt;br /&gt;
&lt;br /&gt;
==== 外付けサウンドカードが再接続後に有効にならない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.config/pipewire-media-session/default-profile}} にデフォルトプロファイル &#039;&#039;off&#039;&#039; のエントリがあれば削除します。それでも解決しない場合は {{ic|~/.config/pipewire-media-session/}} からすべてのファイルを削除し、{{ic|systemctl --user restart pipewire.service}} で PipeWire を再起動します。&lt;br /&gt;
&lt;br /&gt;
==== 音が出ないまたは pactl info が Failure: Connection refused と表示する ====&lt;br /&gt;
&lt;br /&gt;
これはアプリケーションが PipeWire-Pulse サービスに接続できていないことを意味します。{{ic|/etc/pipewire/pipewire-pulse.conf}} が存在し空でないことを確認し、{{ic|systemctl --user restart pipewire-pulse.service}} で PipeWire-Pulse を再起動してください。&lt;br /&gt;
&lt;br /&gt;
それでも解決しない場合は {{ic|strace -f -o /tmp/pipe.txt pactl info}} を実行し、pastebin に {{ic|/tmp/pipe.txt}} を貼り付けて、IRC (OFTC の [ircs://irc.oftc.net/pipewire #pipewire]) かメーリングリストで相談してください。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth の音声の品質が低い====&lt;br /&gt;
&lt;br /&gt;
Bluetooth で再生が途切れる場合は {{ic|systemctl --user status pipewire.service}} を実行してみてください。次のようなエラーが表示される場合は、&lt;br /&gt;
&lt;br /&gt;
 Feb 17 18:23:01 HOST pipewire[249297]: (bluez_input.18:54:CF:04:00:56.a2dp-sink-60) client too slow! rate:512/48000 pos:370688 status:triggered&lt;br /&gt;
&lt;br /&gt;
{{ic|pactl list sinks}} で現在選択されているコーデックを確認し、{{ic|/etc/pipewire/media-session.d/bluez-monitor.conf}} の {{ic|bluez5.codecs}} を {{ic|sbc aac ldac aptx aptx_hd}} のいずれかに変更してみてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
properties = {&lt;br /&gt;
  ...&lt;br /&gt;
  bluez5.codecs = [sbc]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
mSBC サポートの有効化を試すには (Sony 1000XM3 のマイクの問題を修正します):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
  ...&lt;br /&gt;
  actions = {&lt;br /&gt;
    ...&lt;br /&gt;
    update-props = {&lt;br /&gt;
     ...&lt;br /&gt;
     bluez5.msbc-support = true&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するには {{ic|systemctl --user restart pipewire.service}} で PipeWire を再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== 再生開始時に明らかな音声の遅延やポップノイズ/音割れが発生する ====&lt;br /&gt;
&lt;br /&gt;
これは、非アクティブ時のノードの一時停止が原因です。&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipiwire-media-session}} を使用: &lt;br /&gt;
&lt;br /&gt;
これを無効にするには、遅延が発生する場所に応じて {{ic|/etc/pipewire/media-session.d/*-monitor.conf}} を編集し、プロパティ {{ic|session.suspend-timeout-seconds}} を 0 に変更します。無効にするか、他の値を試して、何が機能するかを確認します。&lt;br /&gt;
&lt;br /&gt;
または、{{ic|/etc/pipewire/media-session.d/media-session.conf}} の行 {{ic|suspend-node}} をコメントアウトすることもできます。&lt;br /&gt;
&lt;br /&gt;
[[再起動]] して {{ic|pipewire.service}} と {{ic|pipewire-pulse.service}} の両方の変更を適用して下さい。&lt;br /&gt;
&lt;br /&gt;
{{pkg|wireplumber}} で、新しいファイルを作成してデフォルト設定を上書きします:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/main.lua.d/51-disable-suspension.lua&lt;br /&gt;
(or /etc/wireplumber/main.lua.d/51-disable-suspension.lua)|2=&lt;br /&gt;
table.insert (alsa_monitor.rules, {&lt;br /&gt;
  matches = {&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sources.&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_input.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sinks.&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_output.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
  },&lt;br /&gt;
  apply_properties = {&lt;br /&gt;
    [&amp;quot;session.suspend-timeout-seconds&amp;quot;] = 0,  -- 0 disables suspend&lt;br /&gt;
  },&lt;br /&gt;
})&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Bluetooth デバイスの場合は、次の設定も使用します (ファイルの場所が異なることに注意してください):&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/bluetooth.lua.d/51-disable-suspension.lua&lt;br /&gt;
(or /etc/wireplumber/bluetooth.lua.d/51-disable-suspension.lua)|2=&lt;br /&gt;
-- Note: bluez_monitor, not alsa_monitor&lt;br /&gt;
table.insert (bluez_monitor.rules, {&lt;br /&gt;
  matches = {&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sources.&lt;br /&gt;
      -- Note: bluez_input, not alsa_input&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;bluez_input.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sinks.&lt;br /&gt;
      -- Note: bluez_output, not alsa_output&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;bluez_output.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
  },&lt;br /&gt;
  apply_properties = {&lt;br /&gt;
    [&amp;quot;session.suspend-timeout-seconds&amp;quot;] = 0,  -- 0 disables suspend&lt;br /&gt;
  },&lt;br /&gt;
})&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|pipewire.service}} と {{ic|wireplumber.service}} を再起動して、変更を適用します。&lt;br /&gt;
&lt;br /&gt;
サスペンドを完全に無効にする代わりに、タイムアウト値を、ソースがサスペンドされるまでに必要な遅延秒数に変更することもできます。&lt;br /&gt;
&lt;br /&gt;
==== 複数のストリームの再生が開始されると音声が途切れる ====&lt;br /&gt;
&lt;br /&gt;
この問題は通常、{{ic|pipewire-pulse.service}} [[systemd/ユーザー|ユーザーユニット]] の [[journal]] を読み取り、次のような行を見つけることで診断できます。&lt;br /&gt;
&lt;br /&gt;
 pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#underrununderflow-and-broken-pipe-errors 公式 PipeWire トラブルシューティングガイド] によると、{{pkg|pipewire-media-session}} のこの問題を解決するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf (or ~/.config/pipewire/media-session.d/alsa-monitor.conf|2=&lt;br /&gt;
api.alsa.headroom = 1024&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|wireplumber}} を使用する場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/50-alsa-config.lua (or ~/.config/wireplumber/main.lua.d/50-alsa-config.lua)|2=&lt;br /&gt;
apply_properties = {&lt;br /&gt;
    [&amp;quot;api.alsa.headroom&amp;quot;] = 1024,&lt;br /&gt;
},&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
カーネルページのロックやスケジューリングの遅延が原因で音声の途切れが発生する場合は、[[ゲーム#カーネルパラメータを調整して応答時間を安定化させる|カーネルパラメータを調整して応答時間を安定化させる]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 音がひずむ ====&lt;br /&gt;
* マイクについては、{{ic|alsamixer}} を起動し、問題があるサウンドカードを選択し、{{ic|Mic Boost}} や {{ic|Internal Mic Boost}} の値を下げてみてください。&lt;br /&gt;
* {{ic|/etc/pipewire/pipewire.conf}} の {{ic|1=default.clock.rate = 48000}} のコメントを外して、値を {{ic|44100}} に下げてみてください。&lt;br /&gt;
&lt;br /&gt;
==== スタンバイ後に音声の問題が発生する ====&lt;br /&gt;
&lt;br /&gt;
スリープから復帰した際に音が消えたり壊れたりする場合は、ALSA を最初期化すると改善するかもしれません:&lt;br /&gt;
&lt;br /&gt;
 # alsactl init&lt;br /&gt;
&lt;br /&gt;
==== USB DAC(例:Schiit 社製 DAC)で高レイテンシー ====&lt;br /&gt;
&lt;br /&gt;
サンプルレートやフォーマットを変更することで、Schiit Hel 2 などの一部の DAC でレイテンシーを減らすことができるかもしれません [https://www.reddit.com/r/osugame/comments/msifdd/usb_dacamp_and_audio_lag/] &#039;&#039;pipewire-media-session&#039;&#039; のマッチングルールを使用すると、デバイスのプロパティを設定することができます [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-pipewire-media-session#matching-rules] &lt;br /&gt;
&#039;&#039;pipewire-media-session&#039;&#039; の {{ic|alsa-monitor.conf}}  のデフォルト設定を {{ic|/etc/pipewire/media-session.d}} か {{ic|~/.config/pipewire/media-session.d}} にコピーしてください。&lt;br /&gt;
そして、以下のような新しいルールブロックを追加してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf&lt;br /&gt;
~/.config/pipewire/media-session.d/alsa-monitor.conf|output=&lt;br /&gt;
rules = {&lt;br /&gt;
    ...&lt;br /&gt;
    {&lt;br /&gt;
        matches = [&lt;br /&gt;
            {&lt;br /&gt;
                node.name = &amp;quot;alsa_output.&amp;lt;name of node&amp;gt;&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                audio.format = &amp;quot;S24_3LE&amp;quot;&lt;br /&gt;
                audio.rate = 96000&lt;br /&gt;
                # Following value should be doubled until audio doesn&#039;t cut out or other issues stop occurring&lt;br /&gt;
                api.alsa.period-size = 128&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|alsa_output.&amp;lt;node name&amp;gt;}} ノードは {{ic|pw-top}} で取得することができます。&lt;br /&gt;
&lt;br /&gt;
DAC は異なるフォーマットやサンプルレートをサポートしているかもしれません。[[ALSA]] に問い合わせることで、あなたの  DAC が何をサポートしているかを確認することができます。&lt;br /&gt;
&lt;br /&gt;
まず、DAC のカード番号を取得します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ aplay -l|&lt;br /&gt;
...&lt;br /&gt;
card 3: S2 [Schiit Hel 2], device 0: USB Audio [USB Audio]&lt;br /&gt;
  Subdevices: 0/1&lt;br /&gt;
  Subdevice #0: subdevice #0&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
つまり、この例ではカード3ということになります。&lt;br /&gt;
サポートされているすべてのサンプルレートとフォーマットを取得します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /proc/asound/cardX/streamX|&lt;br /&gt;
...&lt;br /&gt;
Playback:&lt;br /&gt;
  ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 1&lt;br /&gt;
    Format: S16_LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 16&lt;br /&gt;
    ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 2&lt;br /&gt;
    Format: S24_3LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 24&lt;br /&gt;
    ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 3&lt;br /&gt;
    Format: S32_LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 32&lt;br /&gt;
    ...&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この場合、{{ic|S16_LE, S24_3LE, S32_LE}} はサポートされているフォーマットで、{{ic|44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000}} はすべてのフォーマットでサポートされているサンプルレートとなります。&lt;br /&gt;
&lt;br /&gt;
==== 音量が 30% になるまで USB DAC から音が出ない ====&lt;br /&gt;
&lt;br /&gt;
USB DAC の中には、ある一定の音量に達するまで音が出なくなるものがあります [https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1117] 一般的にこれは約 25%〜30% で、最初の音量が不快なほど大きくなり、低い音量を維持することができなくなります。解決策としては、{{ic|[&amp;quot;api.alsa.soft-mixer&amp;quot;]}} を {{ic|true}} に設定して、ハードウェアミキサーの音量コントロールを無視することが挙げられます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|wireplumber}} でこれを実現するには、{{ic|/usr/share/wireplumber/main.lua.d/50-alsa-config.lua}} 設定に次を使用して構成フラグメントを追加します。 {{ic|table.insert}}:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/main.lua.d/51-volume-fix.lua|output=&lt;br /&gt;
&lt;br /&gt;
table.insert (alsa_monitor.rules, {&lt;br /&gt;
    matches = {&lt;br /&gt;
      {&lt;br /&gt;
        -- This matches all cards.&lt;br /&gt;
        { &amp;quot;device.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_card.*&amp;quot; },&lt;br /&gt;
      },&lt;br /&gt;
    },&lt;br /&gt;
    -- Apply properties on the matched object.&lt;br /&gt;
    apply_properties = {&lt;br /&gt;
      -- Don&#039;t use the hardware mixer for volume control. It&lt;br /&gt;
      -- will only use software volume. The mixer is still used&lt;br /&gt;
      -- to mute unused paths based on the selected port.&lt;br /&gt;
      [&amp;quot;api.alsa.soft-mixer&amp;quot;] = true,&lt;br /&gt;
    }&lt;br /&gt;
  })&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、pipewire を再起動します。{{ic|alsamixer}} でマスターボリュームを設定し、{{ic|# alsactl store}} で設定を保存します。これで、ボリュームミキサーを通常どおり使用できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== リアルタイムオーディオが動作しない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|RTKit error: org.freedesktop.DBus.Error.AccessDenied}} が {{ic|systemctl --user status pipewire.service}} の出力に表示された場合、pipewire daemon の優先度がリアルタイムに変更されていないことを示します。この問題については、[https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1069] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 同じサウンドカード上の複数のシンクへの同時出力 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/share/alsa-card-profile/mixer/profile-sets/default.conf}} のコピーを作成し、アップデート後も変更が持続するようにします。ここでは、アナログと HDMI の2つのデフォルトマッピングを結合したプロファイルを定義しています。&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/alsa-card-profile/mixer/profile-sets/multiple.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
auto-profiles = no&lt;br /&gt;
&lt;br /&gt;
[Mapping analog-stereo]&lt;br /&gt;
device-strings = front:%f&lt;br /&gt;
channel-map = left,right&lt;br /&gt;
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2&lt;br /&gt;
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic&lt;br /&gt;
priority = 15&lt;br /&gt;
&lt;br /&gt;
[Mapping hdmi-stereo]&lt;br /&gt;
description = Digital Stereo (HDMI)&lt;br /&gt;
device-strings = hdmi:%f&lt;br /&gt;
paths-output = hdmi-output-0&lt;br /&gt;
channel-map = left,right&lt;br /&gt;
priority = 9&lt;br /&gt;
direction = output&lt;br /&gt;
&lt;br /&gt;
[Profile multiple]&lt;br /&gt;
description = Analog Stereo Duplex + Digital Stereo (HDMI) Output&lt;br /&gt;
output-mappings = analog-stereo hdmi-stereo&lt;br /&gt;
input-mappings = analog-stereo&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ここで、PipeWire の media-session に、新しい card-profile を使用してデバイスをマッチングするように設定します。識別情報は、{{ic|$ pw-cli dump device}} で見つけることができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf|2=&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        matches = [ { alsa.card_name = &amp;quot;HDA Intel PCH&amp;quot; } ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                api.alsa.use-acp = true&lt;br /&gt;
                device.profile-set = &amp;quot;multiple.conf&amp;quot;&lt;br /&gt;
                device.profile = &amp;quot;multiple&amp;quot;&lt;br /&gt;
                api.acp.auto-profile = false&lt;br /&gt;
                api.acp.auto-port = false&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Discord から通知音が鳴らない ====&lt;br /&gt;
&lt;br /&gt;
min.quantum が低すぎることが原因かもしれませんので、700以上に設定してみてください。pipewire-pulse.conf の pulse.rules セクションに以下のルールを追加することで、Discord 専用にオーバーライドすることが可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire-pulse.conf (or ~/.config/pipewire/pipewire-pulse.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
pulse.rules = [&lt;br /&gt;
  ...&lt;br /&gt;
    {&lt;br /&gt;
        # Discord notification sounds fix&lt;br /&gt;
        matches = [ { application.process.binary = &amp;quot;Discord&amp;quot; } ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                pulse.min.quantum      = 1024/48000     # 21ms&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== PipeWire で FMOD ゲームがクラッシュする ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Pillars_of_Eternity|Pillars of Eternity]] のような古いバージョンの [[Wikipedia:FMOD|FMOD オーディオエンジン]] を使っているゲームの中には、PulseAudio バイナリが存在しないと {{ic|pulseaudio --check}} を呼び出してクラッシュするものがあります。回避策としては、{{ic|/bin/pulseaudio}}を{{ic|/bin/true}}にシンボリックリンクすることです[https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1514]&lt;br /&gt;
&lt;br /&gt;
 # ln -s /bin/true /bin/pulseaudio&lt;br /&gt;
&lt;br /&gt;
PulseAudio を再インストールする場合は、シンボリックリンクを削除する必要があることに注意してください。&lt;br /&gt;
&lt;br /&gt;
==== 自動切り替えが機能しない ====&lt;br /&gt;
&lt;br /&gt;
自動切り替えが機能しない場合、[[WirePlumber]] の状態に問題がある可能性があります。[https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/191#note_1252549 this comment] が提案しているように、[[WirePlumber]] のローカル状態を削除し、デーモンを再起動することで改善されるかどうか確認することができます。&lt;br /&gt;
&lt;br /&gt;
 $ rm -r ~/.local/state/wireplumber/&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|wireplumber.service}} [[systemd/ユーザー|ユーザーユニット]] を [[ヘルプ:読み方# systemd ユニットのコントロール|再起動]] します。&lt;br /&gt;
&lt;br /&gt;
==== リアルタイムプライオリティの欠落/サスペンド後の負荷によるクラックリング ====&lt;br /&gt;
&lt;br /&gt;
rtkit の [https://github.com/heftig/rtkit/issues/13 2011年] からのバグにより、サスペンドイベントが発生すると PipeWire のリアルタイム優先度が取り消され、元に戻らなくなります。この原因となる保護を無効にするには、{{ic|rtkit-daemon.service}} を [[編集]] してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/rtkit-daemon.service.d/override.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/lib/rtkit-daemon --no-canary&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、メディアセッションサービスとともに、{{ic|rtkit-daemon.service}} ユニットと {{ic|pipewire.service}} ユーザー ユニットを再起動します。&lt;br /&gt;
&lt;br /&gt;
==== RAOP デバイス (Sonos など) へのストリーミング中に音が出ない ====&lt;br /&gt;
&lt;br /&gt;
[[Avahi]] または [[systemd-resolved]] を使用して mDNS ホスト名解決を設定します。&lt;br /&gt;
&lt;br /&gt;
==== KDE Plasma でサウンドデバイスが表示されない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire クライアント (デスクトップ環境を含む) は、[https://specations.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables XDG_RUNTIME_DIR] [[環境変数]] に依存して PipeWire デーモンに接続する場合があります。[https://docs.pipewire.org/page_daemon.html] ログイン直後にサウンドデバイスが表示されない場合は、この変数が手動で間違ったパスに設定されている可能性があります。&lt;br /&gt;
&lt;br /&gt;
これは PipeWire を手動で再起動することで解決できますが、Chromium で画面共有できない ({{ic|pipewire context failed}} により) など、他の問題が依然として発生する可能性があります。{{ic|XDG_RUNTIME_DIR}} は {{man|8|pam_systemd}} によって自動的に設定されるため、初期化ファイルに設定されているインスタンスをすべて削除する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== SDDM ユーザーのデバイス音量がログイン時に復元されない ====&lt;br /&gt;
&lt;br /&gt;
SDDM を使用していて、ログイン後にオーディオの音量レベルが正しく復元されない場合は、SDDM に対して Pipewire をマスクしてください。SDDM で実行される Wireplumber が、ユーザーの Wireplumber セッションに干渉する可能性があります。&lt;br /&gt;
&lt;br /&gt;
 systemctl --user -M sddm@ mask pipewire.socket&lt;br /&gt;
&lt;br /&gt;
詳細については、[https://wiki.debian.org/PipeWire#Device_volume_for_SDDM_users_is_not_restored_on_login Debian Wiki] の記事 を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ターミナルベルが動作しない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire の観点からは、module x11.bell がロードされている必要があります。これはデフォルトの設定です(上記の設定ファイルも参照){{Pkg|pipewire-x11-bell}} パッケージがインストールされているか確認してください。&lt;br /&gt;
&lt;br /&gt;
また、ウィンドウマネージャーがターミナルベルに影響を与えることがあります。例えば、xfwm を使用している場合は、xfwm-terminal の設定で &amp;quot;聴ベル(Audible bell)&amp;quot; が有効になっているか確認してください。&lt;br /&gt;
&lt;br /&gt;
次に、PipeWire サービスを再起動します:&lt;br /&gt;
&lt;br /&gt;
 systemctl --user restart pipewire&lt;br /&gt;
&lt;br /&gt;
ターミナルベルが動作するか試すには、以下のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 echo $&#039;\a&#039;&lt;br /&gt;
&lt;br /&gt;
==== 最初の再生試行まで音が出ない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire がソケットアクティベーションによって起動される設定になっている場合、一部の PipeWire ネイティブアプリケーションにおいて、[[WirePlumber]] がノードを構成する前にオーディオの再生を試みてしまい、結果としてエラーが発生することがあります。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ mpv -v &#039;&#039;/path/to/file&#039;&#039;|&lt;br /&gt;
[ao/pipewire] PipeWire does not have any audio sinks, skipping&lt;br /&gt;
[ao] Failed to initialize audio driver &#039;pipewire&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ journalctl --user -u mpd.service|&lt;br /&gt;
output: Failed to play on &amp;quot;PipeWire&amp;quot; (pipewire): no target node available&lt;br /&gt;
exception: Failed to open audio output&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
回避策として、{{ic|pipewire.service}} の[[ユーザーユニット]]を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
=== ビデオ ===&lt;br /&gt;
&lt;br /&gt;
==== OBS(など)がウィンドウ/スクリーンを要求しても何も表示されない ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xdg-desktop-portal}} と {{Pkg|xdg-desktop-portal-gtk}} または {{Pkg|xdg-desktop-portal-kde}} がインストールされていることが確実なら、デーモンの実行状態を確認してください。&lt;br /&gt;
&lt;br /&gt;
OBS では、すべてがうまくいっていれば、{{ic|stdout}} にこのように表示されるはずです。&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 info: [pipewire] desktop selected, setting up screencast&lt;br /&gt;
 info: [pipewire] created stream 0x5632d7456850&lt;br /&gt;
 info: [pipewire] playing stream...&lt;br /&gt;
&lt;br /&gt;
マルチモニタ環境では、{{Pkg|slurp}} パッケージを使用すると、すべての画面をキャプチャすることができます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home Wiki] — PipeWire Wiki on Freedesktop GitLab&lt;br /&gt;
* [https://blogs.gnome.org/uraeus/2018/01/26/an-update-on-pipewire-the-multimedia-revolution-an-update/ Pipewire Update Blog Post] — PipeWire の2018年1月時点での進捗が書かれた記事&lt;br /&gt;
* [https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ PipeWire Late Summer Update 2020] — 2020年9月からの記事&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=PipeWire&amp;diff=41352</id>
		<title>PipeWire</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=PipeWire&amp;diff=41352"/>
		<updated>2026-02-20T08:58:55Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* インストール */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:マルチメディア]]&lt;br /&gt;
[[en:PipeWire]]&lt;br /&gt;
[[fi:PipeWire]]&lt;br /&gt;
[[pt:PipeWire]]&lt;br /&gt;
[[ru:PipeWire]]&lt;br /&gt;
[[zh-hans:PipeWire]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PipeWire/サンプル}}&lt;br /&gt;
{{Related|WirePlumber}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://pipewire.org PipeWire] は新しい低レベルマルチメディアフレームワークです。&lt;br /&gt;
映像と音声を最小の遅延で再生/キャプチャすることを目的としていて、[[PulseAudio]]、[[JACK]]、[[ALSA]]、[[GStreamer]] をベースとしたアプリケーションと互換性があります。&lt;br /&gt;
&lt;br /&gt;
このフレームワークのデーモンは (PulseAudio と JACK の機能を持った) オーディオサーバーとしても、ビデオキャプチャサーバーとしても設定できます。&lt;br /&gt;
&lt;br /&gt;
また PipeWire は [[Flatpak]] のようなコンテナをサポートしており、&#039;&#039;audio&#039;&#039; や &#039;&#039;video&#039;&#039; [[ユーザーとグループ#グループ管理|ユーザーグループ]]に依存するのではなく、Flatpak や Wayland にスクリーンや音声を録音する許可を求める [[Polkit]] のようなセキュリティモデルを使用しています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
公式リポジトリから {{Pkg|pipewire}} パッケージを[[インストール]]してください。[[multilib]] サポート用として {{Pkg|lib32-pipewire}} も用意されています。&lt;br /&gt;
&lt;br /&gt;
オプションとして、ドキュメントを確認するために {{Pkg|pipewire-docs}} をインストールすることもできます。&lt;br /&gt;
&lt;br /&gt;
PipeWireは他のオーディオサーバーのドロップイン代替(そのまま置き換え可能な代用)として機能します。詳細は [[#オーディオ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== セッションマネージャー ===&lt;br /&gt;
&lt;br /&gt;
[[JACK]] と同様に、PipeWire 自体は内部に接続ロジックを実装していません。新しいストリームを監視し、それらを適切な出力デバイスやアプリケーションに接続する役割は、「セッションマネージャー」と呼ばれる外部コンポーネントに委ねられています。&lt;br /&gt;
&lt;br /&gt;
==== WirePlumber ====&lt;br /&gt;
&lt;br /&gt;
[[WirePlumber]] は推奨されるセッションマネージャーです。モジュール設計に基づいており、実際の管理機能は Lua プラグインによって実装されています。&lt;br /&gt;
&lt;br /&gt;
標準の設定ファイルは {{ic|/usr/share/wireplumber}} に保存されています。WirePlumber をカスタマイズする推奨される方法は、{{ic|/etc/wireplumber}} または {{ic|~/.config/wireplumber}} に特定の設定を上書きするスニペットを追加することです。[https://pipewire.pages.freedesktop.org/wireplumber/daemon/locations.html#config-locations]&lt;br /&gt;
&lt;br /&gt;
WirePlumber はバージョン 0.5 で設定形式を {{ic|.lua}} から {{ic|.conf}} に変更しました。移行の手順については [https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/migration.html#config-migration] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== PipeWire Media Session ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-media-session}} は推奨されず、廃止予定(非推奨)となっています。これは主にテスト目的、および新しいセッションマネージャーを構築するための例として実装されたものです。&lt;br /&gt;
&lt;br /&gt;
=== 起動 ===&lt;br /&gt;
&lt;br /&gt;
PipeWire はサーバーの管理と自動的な [[ソケットアクティベーション]] に [[systemd/ユーザー]] を使用します。必要に応じて自動的に起動します。&lt;br /&gt;
&lt;br /&gt;
ログイン時に PipeWire をあらかじめ起動しておくには、{{ic|pipewire.service}}、{{ic|pipewire-pulse.service}}、および {{ic|wireplumber.service}} の[[ユーザーユニット]]を[[有効化/起動]]してください。&lt;br /&gt;
&lt;br /&gt;
=== GUI ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Cable|PipeWire および WirePlumber の設定を実行時に動的に変更するための PyQt アプリケーション。|https://github.com/magillos/Cable|{{AUR|cable}}}}&lt;br /&gt;
* {{App|coppwr|PipeWire 用の低レベル制御および診断 GUI。|https://github.com/dimtpap/coppwr|{{AUR|coppwr}}}}&lt;br /&gt;
* {{App|Helvum|JACK ツール「catia」にインスパイアされた GTK ベースのパッチベイ。接続セットの保存機能はありません。|https://gitlab.freedesktop.org/pipewire/helvum|{{Pkg|helvum}}}}&lt;br /&gt;
* {{App|pwvucontrol|Pipewire Volume Control。pavucontrol の代替。|https://github.com/saivert/pwvucontrol|{{AUR|pwvucontrol}}}}&lt;br /&gt;
* {{App|qpwgraph|JACK ツール「QjackCtl」にインスパイアされた Qt ベースのグラフ/パッチベイ。接続セットを保存できます。|https://gitlab.freedesktop.org/rncbc/qpwgraph|{{Pkg|qpwgraph}}}}&lt;br /&gt;
* {{App|sonusmix|Pipewire オーディオルーティングツール。|https://codeberg.org/sonusmix/sonusmix|{{AUR|sonusmix}}}}&lt;br /&gt;
&lt;br /&gt;
=== TUI ===&lt;br /&gt;
&lt;br /&gt;
* {{App|pipemixer|ncurses で構築された PipeWire 用の TUI ボリュームコントロールアプリケーション。|https://github.com/heather7283/pipemixer|{{AUR|pipemixer}}}}&lt;br /&gt;
* {{App|wiremix|PipeWire 用のシンプルな TUI オーディオミキサー。|https://github.com/tsowell/wiremix|{{Pkg|wiremix}}}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
PipeWire パッケージは、初期設定ファイルを{{ic|/usr/share/pipewire}} に用意しています。パッケージのアップデートで変更内容が上書きされてしまうので、これらのファイルを直接編集するべきではありません。PipeWire を設定するには、ファイルを {{ic|/usr/share/pipewire}} からシステム全体の代替場所 {{ic|/etc/pipewire}} か、ユーザーの場所 {{ic|~/.config/pipewire}} にコピーしてください。[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#configuration-file-pipewireconf]&lt;br /&gt;
&lt;br /&gt;
=== プロファイル ===&lt;br /&gt;
&lt;br /&gt;
Pipewire では、PulseAudio のプロファイルに加えて、pavucontrol で選択可能なカスタムの &#039;&#039;Pro Audio&#039;&#039; プロファイルが提供されています。その効果はこちらで解説しています:https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#what-is-the-pro-audio-profile&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
=== 音声 ===&lt;br /&gt;
&lt;br /&gt;
PulseAudio や JACK と同様に  PipeWire をオーディオサーバーとして使用できます。 PulseAudio サーバーの互換実装と JACK クライアント用の ABI 互換ライブラリを提供することで  PulseAudio と JACK の両方を置き換えることを目的としています。詳細については[https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ この記事]を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ALSA/レガシーアプリケーション ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-alsa}} をインストールして ALSA API を使用するすべてのアプリケーションが PipeWire を使用するよう設定できます。&lt;br /&gt;
&lt;br /&gt;
==== PulseAudio クライアント ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-pulse}} をインストールします。このパッケージは {{pkg|pulseaudio}} と {{pkg|pulseaudio-bluetooth}} を置き換えます。再起動するか、ログインし直すか、{{ic|pulseaudio.service}} を[[停止]]して、{{ic|pipewire-pulse.service}} ユーザーユニットを実行すると効果がわかります。&lt;br /&gt;
&lt;br /&gt;
パッケージがユーザーサービス {{ic|pipewire-pulse.socket}} を自動的に有効化するので、通常それ以上の操作は不要です。置き換えが機能しているかどうかを確認するには、次のコマンドを実行して出力を確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ pactl info|2=&lt;br /&gt;
...&lt;br /&gt;
Server Name: PulseAudio (on PipeWire &#039;&#039;x.y.z&#039;&#039;)&lt;br /&gt;
...&lt;br /&gt;
Default Sink: alsa_output.{bus}-{device}.{profile}&lt;br /&gt;
Default Source: alsa_input.{bus}-{device}.{profile}&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{man|1|pactl}} は、依存関係として &#039;&#039;pipewire-pulse&#039;&#039; とともにインストールされる PulseAudio クライアントライブラリパッケージ ({{pkg|libpulse}}) によって提供されます。&lt;br /&gt;
&lt;br /&gt;
===== 全体または個別のチャンネルの音量を設定する =====&lt;br /&gt;
&lt;br /&gt;
出力チャンネルのボリュームを調整するには、{{ic|pactl get-sink-volume {sink}}} を使用して、&#039;&#039;Default Sink:&#039;&#039; (上記) または &#039;&#039;Name&#039;&#039; の値を使用して &#039;&#039;sink&#039;&#039; を指定する必要があります。:&lt;br /&gt;
&#039;&#039; (下記)、デフォルトのシンクデバイス (&#039;&#039;@DEFAULT_SINK@&#039;&#039;)、または &#039;&#039;Sink #&#039;&#039; (例: 以下の &#039;&#039;1&#039;&#039;):&lt;br /&gt;
{{hc|$ pactl list sinks {{!}} grep -B1 -A9 State:|2=&lt;br /&gt;
Sink #1&lt;br /&gt;
        State: RUNNING&lt;br /&gt;
        Name: alsa_output.pci-0000_2d_00.4.analog-surround-51&lt;br /&gt;
...&lt;br /&gt;
        Driver: PipeWire&lt;br /&gt;
...&lt;br /&gt;
        Mute: no&lt;br /&gt;
        Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB,   rear-left: 65536 / 100% / 0.00 dB,   rear-right: 65536 / 100% / 0.00 dB,   front-center: 65536 / 100% / 0.00 dB,   lfe: 65536 / 100% / 0.00 dB&lt;br /&gt;
                balance 0.00&lt;br /&gt;
}}&lt;br /&gt;
ヒント: オーディオが再生されている場合、他のデバイスとして &#039;&#039;実行中&#039;&#039; の {{man|1|grep}} は &#039;&#039;一時停止&#039;&#039; されます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;バランス&#039;&#039; 比率は自動的に計算されます。デフォルトのデバイスの全体のボリュームを設定するには、次のコマンドを使用します: {{bc|pactl set-sink-volume @DEFAULT_SINK@ 75%}}&lt;br /&gt;
個別のチャンネルを設定するには、各チャンネルのボリュームを個別に指定します:&lt;br /&gt;
{{bc|pactl set-sink-volume @DEFAULT_SINK@ 100% 75% 100% 75% 100% 100%}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ソース&#039;&#039; 入力も同様に処理されます。さらに詳しい設定 (モジュールなど) については、[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Migrate-PulseAudio Migrate PulseAudio] および [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PulseAudio Pipewire-Pulse Configuration] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== JACK クライアント ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-jack}} をインストールします。{{ic|pw-jack}} を使用して JACK クライアントを起動すると、元の {{ic|libjack*}} ではなく PipeWire が提供する互換ライブラリが使用されます:&lt;br /&gt;
&lt;br /&gt;
 pw-jack &#039;&#039;application&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
カスタムバッファサイズを要求することもできます。{{ic|PIPEWIRE_LATENCY}}環境変数を {{ic|バッファサイズ/サンプルレート}} (ブロックのレイテンシ(秒)を意味します) に設定します:&lt;br /&gt;
&lt;br /&gt;
 PIPEWIRE_LATENCY=&amp;quot;128/48000&amp;quot; pw-jack &#039;&#039;application&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
また {{aur|pipewire-jack-dropin}} をインストールするか、{{pkg|jack}} か {{pkg|jack2}} をアンインストールして JACK クライアントが互換ライブラリを自動的に読み込むようにもできます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ldd}} を使用して JACK アプリケーションが正しいライブラリにリンクしていることを確認します。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ ldd /usr/bin/qjackctl {{!}} grep -i libjack|2=&lt;br /&gt;
        libjack.so.0 =&amp;gt; /usr/lib/pipewire-0.3/jack/libjack.so.0 (0x00007f7e5080a000)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth デバイス ====&lt;br /&gt;
&lt;br /&gt;
PipeWire は {{pkg|pipewire-pulse}} パッケージがインストールされている場合 Bluetooth オーディオデバイスを制御します。具体的には、メディアセッションデーモンは {{ic|/etc/pipewire/media-session.d/with-pulseaudio}} が存在する時に自動的にその {{ic|bluez5}} モジュールを有効にします。&lt;br /&gt;
&lt;br /&gt;
===== プロファイルの自動選択機能 =====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-media-session}} は、入力ストリームが必要なときに、HSP/HFP と A2DP プロファイルを自動的に切り替えます。これを有効にするには、{{ic|bluez5.autoswitch-profile}} プロパティを {{ic|true}} にセットしてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf (or ~/.config/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                ...&lt;br /&gt;
                bluez5.autoswitch-profile = true&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらの機能は、[[WirePlumber]] ではまだ [https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/90 実装中] です。&lt;br /&gt;
&lt;br /&gt;
==== PipeWire ネイティブパッチセット ====&lt;br /&gt;
&lt;br /&gt;
グラフィカルな視覚化と接続の作成のための Helvum はありますが、それ以外はまだ入っていません。以下は、ワイヤセットの保存、ワイヤセットの読み込み、すべての接続の解除を行う bash スクリプトです。保存と読み込みには、コマンドラインパラメータでファイル名を指定します。&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-savewires|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
if [[ &amp;quot;$#&amp;quot; -ne 1 ]]; then&lt;br /&gt;
	echo&lt;br /&gt;
	echo &#039;usage: pw-savewires filename&#039;&lt;br /&gt;
	echo&lt;br /&gt;
	exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
rm $1 &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
while IFS= read -r line; do&lt;br /&gt;
	link_on=`echo $line | cut -f 4 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_op=`echo $line | cut -f 6 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_in=`echo $line | cut -f 8 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_ip=`echo $line | cut -f 10 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	echo &amp;quot;Saving: &amp;quot; &amp;quot;&#039;&amp;quot;$link_on:$link_op&amp;quot;&#039;,&#039;&amp;quot;$link_in:$link_ip&amp;quot;&#039;&amp;quot;&lt;br /&gt;
	echo &amp;quot;&#039;&amp;quot;$link_on:$link_op&amp;quot;&#039;,&#039;&amp;quot;$link_in:$link_ip&amp;quot;&#039;&amp;quot; &amp;gt;&amp;gt; $1&lt;br /&gt;
done &amp;lt; &amp;lt;(pw-cli dump short link)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-loadwires|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import csv&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
if len(sys.argv) &amp;lt; 2:&lt;br /&gt;
	print(&#039;\n usage: pw-loadwires filename\n&#039;)&lt;br /&gt;
	quit()&lt;br /&gt;
&lt;br /&gt;
with open(sys.argv[1], newline=&#039;&#039;) as csvfile:&lt;br /&gt;
	pwwreader = csv.reader(csvfile, delimiter=&#039;,&#039;, quotechar=&#039;&amp;quot;&#039;)&lt;br /&gt;
	for row in pwwreader:&lt;br /&gt;
		print(&#039;Loading:  &#039; + row[0] + &#039; --&amp;gt; &#039; + row[1])&lt;br /&gt;
		process = os.popen(&#039;pw-link &#039; + row[0] + &#039; &#039; + row[1])&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-dewire|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
while read -r line; do&lt;br /&gt;
	echo &#039;Dewiring: &#039; $line &#039;...&#039;&lt;br /&gt;
	pw-link -d $line&lt;br /&gt;
done &amp;lt; &amp;lt;(pw-cli dump short link {{!}} grep -Eo &#039;^[0-9]+&#039;)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== ネットワーク上のコンピューターとオーディオ機器を共有する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire 自体はネットワーク透過型ではありませんが、そのパルス実装は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PulseAudio#network-support ネットワークストリーミング] をサポートしています。ネットワーク上のコンピュータ間でオーディオを共有する簡単な方法は、[[Avahi]] デーモンを使って検出することです。&lt;br /&gt;
オーディオを共有するすべてのコンピュータで {{ic|avahi-daemon.service}} が実行されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
ローカルのオーディオデバイスを共有するために、ホスト上で適切なモジュールをロードしてください。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-native-protocol-tcp listen=&#039;&#039;192.168.1.10&#039;&#039; # Use the local IP address&lt;br /&gt;
 pactl load-module module-zeroconf-publish&lt;br /&gt;
&lt;br /&gt;
次に、クライアントにディスカバリモジュールをロードします。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-zeroconf-discover&lt;br /&gt;
&lt;br /&gt;
===== AirPlay レシーバーにオーディオをストリーミングする =====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:AirPlay#Receivers|AirPlay Receiver]] を装ったデバイスにオーディオをストリーミングすることが可能です。この機能を有効にするには、[https://docs.pipewire.org/page_module_raop_discover.html RAOP Discover モジュール] をロードします。 &lt;br /&gt;
&lt;br /&gt;
 $ pactl load-module module-raop-discover&lt;br /&gt;
&lt;br /&gt;
専用の設定ファイルを作成することで、このモジュールを自動的にロードすることもできます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf.d/raop-discover.conf (or ~/.config/pipewire/pipewire.conf.d/raop-discover.conf)|2=&lt;br /&gt;
context.modules = [&lt;br /&gt;
   {&lt;br /&gt;
       name = libpipewire-module-raop-discover&lt;br /&gt;
       args = { }&lt;br /&gt;
   }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
一部のスピーカーの AirPlay 実装 (Sonos AirPlay 2 スピーカーなど) では、ソースデバイスで着信 UDP トラフィック用にポート 6001 および 6002 を開く必要がある場合があります。&lt;br /&gt;
&lt;br /&gt;
==== ネイティブ JACK 上で PipeWire を実行する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire はネイティブ JACK デーモン上の JACK クライアントとして実行することもできます。詳細は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/JACK JACK and PipeWire] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== PipeWire シンクとして ALSA dmix デバイスを使用する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire サーバー(またはユーザーごとに複数) を [[Advanced Linux Sound Architecture#Dmix|ALSA dmix デバイス]] を介して ALSA に出力することが可能です。これにより、ALSA を主要な音声出力システムとして使用しながら、Bluetooth ヘッドフォンなどの ALSA 以外のデバイスを使用することができるようになります。&lt;br /&gt;
&lt;br /&gt;
===== ALSA dmix セットアップ =====&lt;br /&gt;
&lt;br /&gt;
{{ic|PCH}} と {{ic|HDMI}} の 2 枚のカードがあるとします。&lt;br /&gt;
&lt;br /&gt;
{{hc|/proc/asound/cards|&lt;br /&gt;
 0 [PCH            ]: HDA-Intel - HDA Intel PCH&lt;br /&gt;
                      HDA Intel PCH at 0xdff40000 irq 146&lt;br /&gt;
 1 [HDMI           ]: HDA-Intel - HDA ATI HDMI&lt;br /&gt;
                      HDA ATI HDMI at 0xdfe60000 irq 147&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
PCM は次のようになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/proc/asound/pcm|&lt;br /&gt;
00-00: ALC1220 Analog : ALC1220 Analog : playback 1 : capture 1&lt;br /&gt;
00-02: ALC1220 Alt Analog : ALC1220 Alt Analog : capture 1&lt;br /&gt;
01-03: HDMI 0 : HDMI 0 : playback 1&lt;br /&gt;
01-07: HDMI 1 : HDMI 1 : playback 1&lt;br /&gt;
01-08: HDMI 2 : HDMI 2 : playback 1&lt;br /&gt;
01-09: HDMI 3 : HDMI 3 : playback 1&lt;br /&gt;
01-10: HDMI 4 : HDMI 4 : playback 1&lt;br /&gt;
01-11: HDMI 5 : HDMI 5 : playback 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ALSA 設定が次のようになっているとします。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/asound.conf|&lt;br /&gt;
ctl.!default {&lt;br /&gt;
  type hw&lt;br /&gt;
  card PCH&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.!default {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave.pcm &amp;quot;&#039;&#039;&#039;dmix:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.dhdmi {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave.pcm &amp;quot;&#039;&#039;&#039;dmix:HDMI,9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この特定の例では、dmix デバイスは {{ic|dmix:PCH,0}} と {{ic|dmix:HDMI,9}} になります。&lt;br /&gt;
&lt;br /&gt;
===== PipeWire dmix セットアップ =====&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|alsa_monitor.enable()}} をコメントアウトして、{{ic|wireplumber}} によるハードウェア ALSA デバイスの監視と追加を停止します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/90-enable-all.lua (or ~/.config/wireplumber/main.lua.d/90-enable-all.lua)|&lt;br /&gt;
...&lt;br /&gt;
-- Load devices&lt;br /&gt;
&#039;&#039;&#039;-- alsa_monitor.enable()&#039;&#039;&#039;&lt;br /&gt;
v4l2_monitor.enable()&lt;br /&gt;
libcamera_monitor.enable()&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ここで、dmix デバイスを使用するように {{ic|pipewire}} を設定します。デフォルトの設定ファイル ({{ic|/usr/share/pipewire/pipewire.conf}}) には [https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/0.3.59/src/daemon /pipewire.conf.in#L219-239 コメントアウトされた例] をベースとして使用できます。&lt;br /&gt;
&lt;br /&gt;
独自の要素を {{ic|context.objects}} 配列に追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf.d/alsa-dmix.conf (or ~/.config/pipewire/pipewire.conf.d/alsa-dmix.conf)|output=&lt;br /&gt;
context.objects = [&lt;br /&gt;
    # We do not start with dmix, but with an input device.&lt;br /&gt;
    # Do not forget to add an input device.&lt;br /&gt;
    # On a friend&#039;s Laptop, I saw Zoom having a nervous&lt;br /&gt;
    # breakdown and endlessly crying because no input device&lt;br /&gt;
    # was configured! You have been warned.&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.source&lt;br /&gt;
            node.name              = &amp;quot;alsa-mic-internal&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;Mic Internal&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Source&amp;quot;&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;hw:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    # Okay, now we add our dmix PCMs&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.sink # sink for dmix&lt;br /&gt;
            node.name              = &amp;quot;alsa-dmix-internal&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;PCM Internal&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Sink&amp;quot; # Sink for dmix&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;dmix:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.sink # sink for dmix&lt;br /&gt;
            node.name              = &amp;quot;alsa-dmix-hdmi&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;PCM HDMI&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Sink&amp;quot; # Sink for dmix&lt;br /&gt;
            # remember this is a non-default dmix from /etc/asound.conf&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;dmix:HDMI,9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ユーザー (非 root) として、{{ic|wpctl status}} の出力を確認し、{{ic|wpctl set-default &#039;&#039;ID&#039;&#039;}} でデフォルトの入力(ソース) と出力 (シンク) のデバイスを好みのものに設定します。{ic|&#039;&#039;ID&#039;&#039;}} はシンク/ソース名の前の数字です。&lt;br /&gt;
&lt;br /&gt;
これで、構成を完全にテストすることができます。&lt;br /&gt;
&lt;br /&gt;
==== デバイスプロファイルの切り替え ====&lt;br /&gt;
&lt;br /&gt;
{{ic|snd_hda_intel}} などの一部のハードウェアオーディオデバイスは、デバイスが実行されているプロファイルによって機能が異なります。{{ic|snd_hda_intel}} の場合、HDMI とアナログ出力用に個別のプロファイルがあります。&lt;br /&gt;
&lt;br /&gt;
WirePlumber で HDMI に切り替える:&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
$ wpctl set-profile &amp;lt;device-ID&amp;gt; 3&lt;br /&gt;
$ wpctl status&lt;br /&gt;
|output=&lt;br /&gt;
...&lt;br /&gt;
├─ Sinks:&lt;br /&gt;
│  *   53. Built-in Audio Digital Stereo (HDMI) [vol: 1.00]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
WirePlumber でアナログに切り替える:&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
$ wpctl set-profile &amp;lt;device-ID&amp;gt; 1&lt;br /&gt;
$ wpctl status&lt;br /&gt;
|output=&lt;br /&gt;
...&lt;br /&gt;
├─ Sinks:&lt;br /&gt;
│  *   51. Built-in Audio Analog Stereo        [vol: 0.60]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WebRTC 画面共有 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのアプリケーションは、例えばウェブブラウザで WebRTC を使うとき (例: Google Meet) などに、デスクトップ (あるいは個々のアプリケーション) をキャプチャするために X11 に依存していました。Wayland では、セキュリティ上の理由から画面共有は異なる方法で処理されます。PipeWire はきめ細かなアクセス制御を使用して、Wayland 上のコンテンツを共有できます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|WebRTC 画面共有が機能しているかどうか、[https://mozilla.github.io/webrtc-landing/gum_test.html Mozilla の GetUserMedia WebRTX テストページ]でテストしましょう。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{Pkg|xdg-desktop-portal}} 1.10.0 では、D-Bus インターフェースの仕様と実装の不一致が修正されました。[https://github.com/flatpak/xdg-desktop-portal/pull/609] そのため、一部のクライアントは xdg-desktop-portal 1.10.0 またはそれ以降で動作しないかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
Firefox (バージョン84以降) と Chromium (バージョン110以降) はデフォルトでこの方法をサポートしていますが、Chromium の古いバージョン (バージョン73以降) では、URL {{ic|chrome://flags/#enable-webrtc-pipewire-capturer}} で対応する (実験的) フラグを設定するか、CLI 引数 {{ic|1=--enable-features=WebRTCPipeWireCapturer}} を用いて、[https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWire サポート] を有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|obs-studio}} (バージョン27以降) は、新しい PipeWire キャプチャソースを使用することにより、この方法をサポートしています。&lt;br /&gt;
&lt;br /&gt;
=== 映像 ===&lt;br /&gt;
&lt;br /&gt;
ソフトウェアはまだ商業利用には適していませんが、試す分には問題ありません。[[GStreamer]] を使用して映像ストリームを処理するほとんどのアプリケーションは PipeWire GStreamer プラグインを使用して設定なしで動作するはずです ([[GStreamer#PipeWire]] を参照してください)。そのため既に {{pkg|cheese}} のようなアプリケーションは PipeWire を使用して映像入力を利用できます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-v4l2}} を使用すると、{{ic|pw-v4l2}} スクリプトを使用してライブラリをプリロードすることも可能になります ({{ic|/lib/pipewire-0.3/v4l2/libpw-v4l2.so}}) は、v4l2 呼び出しをインターセプトし、PipeWire 経由でビデオをルーティングします。&lt;br /&gt;
&lt;br /&gt;
== 音声のポストプロセッシング ==&lt;br /&gt;
&lt;br /&gt;
=== Pipewire モジュールフィルターチェーン ===&lt;br /&gt;
&lt;br /&gt;
Pipewire には {{ic|[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Filter-Chain filter-chain]}} という内部モジュールがあり、音声の入出力を処理するノードを作成することができます。参照してください。&lt;br /&gt;
 /usr/share/pipewire/filter-chain/ を参照してください。&lt;br /&gt;
イコライザー、バーチャルサラウンドサウンド、LADSPA プラグイン、チャンネルミキシングなどの例を紹介します。&lt;br /&gt;
&lt;br /&gt;
==== システム全体のパラメトリックイコライゼーション ====&lt;br /&gt;
&lt;br /&gt;
設定ファイルを {{ic|.config}} フォルダにコピーします。&lt;br /&gt;
 mkdir -p ~/.config/pipewire/pipewire.conf.d&lt;br /&gt;
 cp /usr/share/pipewire/filter-chain/sink-eq6.conf ~/.config/pipewire/pipewire.conf.d/&lt;br /&gt;
次に、{{ic|sink-eq6.conf}} を編集して、必要なパラメータを組み込みます。ヘッドフォンの場合、これらは [https://old.reddit.com/r/oratory1990/wiki/index Oratory1990 のデータベース] から入手できます。そこにリストされていない場合は、[https://github.com/jaakkopasanen/AutoEq/tree/master/results/ AutoEQ project]&lt;br /&gt;
&lt;br /&gt;
プリアンプが必要な場合は、{{ic|eq_band_1}} を変更して、{{ic|bq_highshelf}} フィルタを周波数 0Hz でマイナスゲイン (-120 〜 +20dB のゲインをサポート) で適用します。&lt;br /&gt;
 label = bq_highshelf&lt;br /&gt;
 control = { &amp;quot;Freq&amp;quot; = 0 &amp;quot;Q&amp;quot; = 1.0 &amp;quot;Gain&amp;quot; = -7.5 }&lt;br /&gt;
&lt;br /&gt;
6 バンドを超える場合は、{{ic|nodes}} リストと対応する {{ic|links}} にさらにエントリを追加して、1 つのフィルタ &amp;quot;:Out&amp;quot; を次のフィルタ &amp;quot;:In&amp;quot; に接続します。たとえば、11 に増やします。バンド (プリアンプ + 10):&lt;br /&gt;
                     { output = &amp;quot;eq_band_6:Out&amp;quot; input = &amp;quot;eq_band_7:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_7:Out&amp;quot; input = &amp;quot;eq_band_8:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_8:Out&amp;quot; input = &amp;quot;eq_band_9:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_9:Out&amp;quot; input = &amp;quot;eq_band_10:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_10:Out&amp;quot; input = &amp;quot;eq_band_11:In&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Pipewire を再起動し、デフォルトのサウンド出力デバイスとして &amp;quot;Equalizer Sink&amp;quot; を選択します。これは、すべてのアプリケーションに適用されます。&lt;br /&gt;
&lt;br /&gt;
=== EasyEffects ===&lt;br /&gt;
&lt;br /&gt;
EasyEffects (以前は PulseEffects と呼ばれていました) は多数のエフェクトとフィルタを個々の入出力ストリーム (アプリケーションの音声出力やマイクの入力など) に提供する GTK 製のユーティリティです。注目すべきエフェクトには、入出力イコライザー、出力ラウドネス等化、ベースエンハンスメント、入力ディエッサー、ノイズ抑制プラグインなどがあります。[https://github.com/wwmm/easyeffects GitHub ページ]にエフェクトの一覧があります。&lt;br /&gt;
&lt;br /&gt;
EasyEffects を使用するには、{{pkg|easyeffects}} をインストールします。プリセット設定集については、[https://github.com/wwmm/easyeffects/wiki/Community-presets コミュニティープリセット]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|PulseEffects の古いバージョンについては [[PulseAudio#PulseEffects]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== NoiseTorch ===&lt;br /&gt;
&lt;br /&gt;
{{aur|noisetorch}} はノイズ抑制に使用できます。ビルド済み ({{aur|noisetorch-bin}}) や開発版 ({{aur|noisetorch-git}}) のパッケージもあります。&lt;br /&gt;
&lt;br /&gt;
起動すると選択したマイクにモジュールを読み込むことができます。声が出力される閾値を調整することができます。実際の声が削除されない最大のレベルに設定するべきです。&lt;br /&gt;
&lt;br /&gt;
=== Noise suppression for voice ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|noise-suppression-for-voice}} をインストールし、以下のいずれかのオプションを使用します:&lt;br /&gt;
&lt;br /&gt;
* 以下の行を {{ic|context.exec}} セクションに追加する:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf (or ~/.config/pipewire/pipewire.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
context.exec = [&lt;br /&gt;
    ...&lt;br /&gt;
    { path = &amp;quot;/usr/bin/pipewire&amp;quot; args = &amp;quot;-c /usr/share/pipewire/filter-chain/source-rnnoise.conf&amp;quot; }&lt;br /&gt;
    ...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* https://github.com/werman/noise-suppression-for-voice#pipewire に従う&lt;br /&gt;
&lt;br /&gt;
そして、オーディオ設定でノイズキャンセルソースをデフォルトとして設定します。この機能を使う前に、アプリケーションを再起動する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== JamesDSP ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Audio4Linux/JDSP4Linux#readme JamesDSP for Linux] ({{AUR|jamesdsp}} として入手可能) は PipeWire と PulseAudio のためのオープンソースのサウンドエフェクトを提供します。LADSPA や Calf などに依存することなく、独自のエフェクトエンジンを使用しています。JamesDSP は当初 Android デバイス用のオーディオエフェクトプロセッサーとして公開されました。&lt;br /&gt;
&lt;br /&gt;
=== LADSPA、LV2、VST プラグイン ===&lt;br /&gt;
&lt;br /&gt;
LADSPA、LV2、VSTのプラグインを使用したい場合は、カスタム PulseAudio null シンクと Carla Jack ホストを利用できます。{{pkg|pipewire-pulse}} と {{pkg|pipewire-jack}} と {{pkg|carla}} をインストールします。はじめに {{ic|default_null_sink}} という名前の PulseAudio の null シンクを作成します。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=default_null_sink channel_map=FL,FR&lt;br /&gt;
&lt;br /&gt;
{{ic|pw-jack carla-rack}} で PipeWire を使用する Carla を起動します。&#039;&#039;Rack&#039;&#039; タブで使いたいプラグインを全て追加します。プラグインのタイプが &#039;&#039;stereo&#039;&#039; であることを確認してください。適用する順番を変えることができます。EasyEffectsのようにリストの最初のプラグインが最初に入力の音声ストリームを受け取ります。その後 &#039;&#039;Patchbay&#039;&#039; タブに移動し {{ic|default_null_sink}} の L/R monitor を Carla input に接続し、Carla output を出力したいデバイス (スピーカーやイヤホンや HDMI 出力など) の playback に接続します。設定をフォルダに保存します ({{ic|~/Documents/carla_sink_effects.carxp}} など)。&lt;br /&gt;
&lt;br /&gt;
Firefox で動画を見ている時など、アプリケーションが音声を再生している時に効果を試すことができます。2つの方法があります。一つは Carla の &#039;&#039;Patchbay&#039;&#039; タブで Firefox の接続を全て外し {{ic|default_null_sink}} の L/R output に接続する方法です。もう一つは {{pkg|pavucontrol}} を使用し Firefox の音声ストリームを {{ic|default_null_sink}} に変更する方法です (この方法は同じアプリケーションの次回起動時に同じ接続先を使用するはずです)。&lt;br /&gt;
&lt;br /&gt;
これらの設定を起動時に適用するには、まず2つの systemd ユーザーサービスを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/jack-carla-rack.service|output=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Load Carla Rack JACK host&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PassEnvironment=&amp;quot;PIPEWIRE_LINK_PASSIVE=true&amp;quot;&lt;br /&gt;
Type=exec&lt;br /&gt;
ExecStart=/usr/bin/pw-jack carla-rack -n&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
{{hc|~/.config/systemd/user/pulseaudio-null-sink@.service|output=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Load %i Pulseaudio null sink&lt;br /&gt;
Before=jack-carla-rack.service&lt;br /&gt;
After=pipewire-pulse.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=%i channel_map=FL,FR&lt;br /&gt;
ExecStop=/usr/bin/pactl unload-module module-null-sink&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;jack-carla-rack&#039;&#039; サービスの &#039;&#039;Environment&#039;&#039; を Carla の設定ファイルのフルパスを指定するよう上書きします:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/jack-carla-rack.service.d/override.conf|output=&lt;br /&gt;
Environment=&amp;quot;CARLA_CONFIG_FILE=/home/username/Documents/carla_sink_effects.carxp&amp;quot;&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/bin/pw-jack carla-rack -n $CARLA_CONFIG_FILE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に、作成したサービスを有効化します。&#039;&#039;pulseaudio-null-sink&#039;&#039; サービスには {{ic|default_null_sink}} 引数をつけてください:&lt;br /&gt;
&lt;br /&gt;
 systemctl --user enable pulseaudio-null-sink@default_null_sink.service&lt;br /&gt;
 systemctl --user enable jack-carla-rack.service&lt;br /&gt;
&lt;br /&gt;
{{Note|システム設定で {{ic|default_null_sink}} をデフォルトデバイスに設定すると、全てのアプリケーションが {{ic|default_null_sink}} にリダイレクトされ、音量の変更がスピーカーではなく {{ic|default_null_sink}} に対して行われるようになります。スピーカーの音量を変更したい場合は、デフォルトデバイスをスピーカーから変更せずにアプリケーションの出力先を pavucontrol で {{ic|default_null_sink}} に変更してください (PipeWire の互換性レイヤーは次回起動時も出力先を覚えています)。}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== オーディオ ===&lt;br /&gt;
&lt;br /&gt;
==== PipeWire にマイクが検出されない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire の {{ic|alsa-monitor}} モジュールは、デフォルトで {{Pkg|alsa-card-profiles}} を使ってデバイスを検出します。これがうまくいかない場合は、{{ic|api.alsa.use-acp}} をオフにするか、オプションで {{ic|api.alsa.use-ucm}} をオンにすることを試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-media-session}} を使用している場合。&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf (or ~/.config/pipewire/media-session.d/alsa-monitor.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        actions = {&lt;br /&gt;
        update-props = {&lt;br /&gt;
            ...&lt;br /&gt;
            api.alsa.use-acp = false&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
それ以外の場合は、{{Pkg|wireplumber}} を使用している場合。&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/50-alsa-config.lua (or ~/.config/wireplumber/main.lua.d/50-alsa-config.lua)|output=&lt;br /&gt;
...&lt;br /&gt;
alsa_monitor.rules = {&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        apply_properties = {&lt;br /&gt;
            -- Use ALSA-Card-Profile devices. They use UCM or the profile&lt;br /&gt;
            -- configuration to configure the device and mixer settings.&lt;br /&gt;
            -- [&amp;quot;api.alsa.use-acp&amp;quot;] = true,&lt;br /&gt;
 &lt;br /&gt;
            -- Use UCM instead of profile when available. Can be&lt;br /&gt;
            -- disabled to skip trying to use the UCM profile.&lt;br /&gt;
            [&amp;quot;api.alsa.use-ucm&amp;quot;] = true,&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、pipewire を再起動し、利用可能なデバイスを確認します。&lt;br /&gt;
&lt;br /&gt;
{{hc| 1=&lt;br /&gt;
$ pw-record --list-targets&lt;br /&gt;
|2=&lt;br /&gt;
Available targets (&amp;quot;*&amp;quot; denotes default): 62&lt;br /&gt;
	58: description=&amp;quot;Built-in Audio&amp;quot; prio=1872&lt;br /&gt;
	60: description=&amp;quot;Built-in Audio&amp;quot; prio=2000&lt;br /&gt;
*	62: description=&amp;quot;Built-in Audio (Loopback PCM)&amp;quot; prio=1984&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 新しいデバイスを接続したときにサウンドが自動的に切り替わらない ====&lt;br /&gt;
&lt;br /&gt;
新しく接続されたデバイスに自動的に切り替えるには、次のファイルを作成します。:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire-pulse.conf.d/switch-on-connect.conf (or ~/.config/pipewire/pipewire-pulse.conf.d/switch-on-connect.conf)|output=&lt;br /&gt;
# override for pipewire-pulse.conf file&lt;br /&gt;
pulse.cmd = [&lt;br /&gt;
    { cmd = &amp;quot;load-module&amp;quot; args = &amp;quot;module-always-sink&amp;quot; flags = [ ] }&lt;br /&gt;
    { cmd = &amp;quot;load-module&amp;quot; args = &amp;quot;module-switch-on-connect&amp;quot; }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== サウンドが自動的に Bluetooth ヘッドフォンに切り替わらない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|pactl load-module module-switch-on-connect}} を実行し、ログイン時に自動的にそのコマンドが実行されるようにデスクトップ環境を設定してください。詳しくは [https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/89 wireplumber issue #89] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth デバイスに接続しても音が出ない ====&lt;br /&gt;
&lt;br /&gt;
2020-12-07 の時点で、Bluetooth デバイスを接続しても音が出ない場合は、デフォルトのシンクに切り替えるか、シンク入力を正しいシンクに移動する必要があります。{{ic|pactl list sinks}} で使用可能なシンクの一覧を表示し、{{ic|pactl set-default-sink}} でデフォルトのシンクを Bluetooth デバイスに切り替えます。これは[https://gist.github.com/tinywrkb/04e7fd644afa9b92d33a3a99ab07ee9e このようなスクリプト]を使って [[udev]] で自動化できます。&lt;br /&gt;
&lt;br /&gt;
この問題については、この [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 Reddit スレッド]を参照してください。スクリプトの作成者によると、ヘッドセットプロファイル (HSP) にまだ問題がある可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== 音量が小さい ====&lt;br /&gt;
&lt;br /&gt;
PulseAudio を PipeWire で置き換えた後、正しく音が出ても、再起動後に音量が極端に小さくなることがあります。&lt;br /&gt;
&lt;br /&gt;
{{ic|alsamixer}} を開き、{{ic|F6}} を押して適切なサウンドカードを選び ALSA のボリュームが100%であることを確認してください。{{ic|alsactl}} は再起動後もこの設定を維持するはずです。&lt;br /&gt;
&lt;br /&gt;
==== increasing RLIMIT_MEMLOCK ====&lt;br /&gt;
&lt;br /&gt;
 Dec 13 11:11:11 HOST pipewire-pulse[99999]: Failed to mlock memory 0x7f4f659d8000 32832: This is not a problem but for best performance, consider increasing RLIMIT_MEMLOCK&lt;br /&gt;
&lt;br /&gt;
{{pkg|realtime-privileges}} をインストールし {{ic|realtime}} グループに自分のユーザーを追加します。&lt;br /&gt;
&lt;br /&gt;
あるいは memlock を 64kB から 128kB に増やすことで、この問題を解決できるようです。[[systemd/ユーザー]] で {{ic|pipewire-pulse}} を実行している場合は {{ic|/etc/security/limits.d/username.conf}} に次の行を追加します:&lt;br /&gt;
&lt;br /&gt;
 username	soft	memlock	64&lt;br /&gt;
 username	hard	memlock	128&lt;br /&gt;
&lt;br /&gt;
==== サンプリングレートを変更する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire のデフォルトでは、グローバルサンプルレートは 48kHz に設定されています。これを変更したい場合(より高い値をサポートする DAC を所有しているなど)、設定ファイル {{ic|/etc/pipewire/pipewire.conf}} の {{ic|1=default.clock.rate = 48000}} 行を編集することで行うことができます。例えば、192kHz にしたい場合は、{{ic|48000}} を {{ic|1=default.clock.rate = 192000}} にコメントを解除して変更します。&lt;br /&gt;
&lt;br /&gt;
PipeWire は、DAC がサポートする出力サンプルレートを変更することもできます。設定するには、{{ic|1=default.clock.allowed-rates = [ 48000 ]}} という行をコメント解除して設定します。例えば、{{ic|[ 44100 48000 88200 96000 ]}} とします。サンプルレートは、カードがアイドルのときに再生されるオーディオストリームのサンプルレートに従います。&lt;br /&gt;
&lt;br /&gt;
どの出力サンプルレートとサンプルフォーマットが DAC に送られたデータであるかを確認するには(おそらく桁を変更する必要があります)。&lt;br /&gt;
 cat /proc/asound/card0/pcm0p/sub0/hw_params&lt;br /&gt;
どの入力サンプルレートを使用しているかを確認するには、{{ic|pcm0p}} を {{ic|pcm0c}} に変更します。({{ic|c}} は &amp;quot;capture&amp;quot; の略、{{ic|p}} は &amp;quot;playback&amp;quot; の略です).&lt;br /&gt;
&lt;br /&gt;
==== 許容されるサンプルレートの変更 ====&lt;br /&gt;
&lt;br /&gt;
PipeWire は、DAC がサポートする出力サンプルレートを動的に変更することもできます。サンプルレートは、再生中のオーディオストリームのサンプルレートに従います。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf (or ~/.config/pipewire/pipewire.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
context.properties = {&lt;br /&gt;
    ...&lt;br /&gt;
    &#039;&#039;&#039;default.clock.allowed-rates = [ &#039;&#039;sample_rate_1&#039;&#039; &#039;&#039;sample_rate_2&#039;&#039; &#039;&#039;sample_rate_3&#039;&#039; ... ]&#039;&#039;&#039;&lt;br /&gt;
    ...&lt;br /&gt;
}}&lt;br /&gt;
たとえば、{{ic|[ 44100 48000 88200 96000 ]}} です。DAC でサポートされている値については、ハードウェアのマニュアルを参照してください。&lt;br /&gt;
&lt;br /&gt;
開発者の [https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1523] によると: &amp;quot;PipeWire は最大16の異なるサンプルレートを許容し、可能な限り切り替えます。&amp;quot; つまり、上記の設定では、&#039;&#039;&#039;再サンプリングは行われない&#039;&#039;&#039;ということです。&lt;br /&gt;
&lt;br /&gt;
DAC に送信されるデータがどの出力サンプルレートとサンプルフォーマットであるかを確認するには (おそらく桁を変更する必要があります):&lt;br /&gt;
&lt;br /&gt;
 $ cat /proc/asound/card0/pcm0p/sub0/hw_params&lt;br /&gt;
&lt;br /&gt;
どの入力サンプルレートが使用されているかを確認するには、{{ic|pcm0p}} を {{ic|pcm0c}} に変更します ({{ic|c}} は &amp;quot;capture&amp;quot; の略で、{{ic|p}} は &amp;quot;playback&amp;quot; の略です)&lt;br /&gt;
&lt;br /&gt;
==== 音質 (リサンプリング品質) ====&lt;br /&gt;
&lt;br /&gt;
PulseAudio を {{ic|1=resample-method = speex-float-10}} または {{ic|soxr-vhq}} で使用していた場合、コメントを解除して {{ic|1=resample.XXX}} を変更することを検討するとよいかもしれません。{{ic|1=resample.quality = 4}} を {{ic|10}} または最大値 {{ic|15}} に変更することを検討してください。(存在しない場合は {{ic|/usr/share/pipewire/}} からコピーしてください)。PipeWire の再起動を忘れないでください (sudo なし): {{ic|systemctl --user restart pipewire.service pipewire-pulse.socket}} (設定変更を適用させたい場合は、{{ic|pipewire-pulse.socket}}を絶対に忘れないでください)。&lt;br /&gt;
&lt;br /&gt;
{{ic|10}} と {{ic|15}} では、品質の差はほとんどありませんが、CPU 負荷は 2〜3 倍になっています。また、{{ic|4}}, {{ic|10}}, {{ic|15}} のレイテンシーの差はまだ誰も調べていません。Ryzen 2600 で 44100→48000Hz で {{ic|1= resample.quality = 15}} にすると {{ic|pipewire}} や {{ic|pipewire-pulse}} プロセスが 1CPUコア4.0% の負荷となる。&lt;br /&gt;
&lt;br /&gt;
リサンプラーの比較はこちら:https://src.infinitewave.ca/(18KHz以上、120dB以上は注意)。speeex は &#039;&#039;Xiph.org Speex&#039;&#039; と記載されています。&lt;br /&gt;
&lt;br /&gt;
PipeWire は Spa と呼ばれる独自のリサンプリングアルゴリズムを使用しています。SoX の {{ic|sox}}、Speex の {{ic|speexenc}} と同様、PipeWire にはそのスタンドアロン版があります。{{ic|spa-resample}} 使い方は&lt;br /&gt;
 spa-resample -q 15 -f s24 -r 48000 input16bit44100orAnythingElse.wav output24bit48000hz.wav&lt;br /&gt;
&lt;br /&gt;
自分で sink を作れば、他のリサンプラーを使うことも可能でしょう。あるいは、音楽プレーヤーのプラグインを使うこともできます(例えば、Qmmp には SoX プラグインがあります)&lt;br /&gt;
&lt;br /&gt;
==== 外付けサウンドカードが再接続後に有効にならない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.config/pipewire-media-session/default-profile}} にデフォルトプロファイル &#039;&#039;off&#039;&#039; のエントリがあれば削除します。それでも解決しない場合は {{ic|~/.config/pipewire-media-session/}} からすべてのファイルを削除し、{{ic|systemctl --user restart pipewire.service}} で PipeWire を再起動します。&lt;br /&gt;
&lt;br /&gt;
==== 音が出ないまたは pactl info が Failure: Connection refused と表示する ====&lt;br /&gt;
&lt;br /&gt;
これはアプリケーションが PipeWire-Pulse サービスに接続できていないことを意味します。{{ic|/etc/pipewire/pipewire-pulse.conf}} が存在し空でないことを確認し、{{ic|systemctl --user restart pipewire-pulse.service}} で PipeWire-Pulse を再起動してください。&lt;br /&gt;
&lt;br /&gt;
それでも解決しない場合は {{ic|strace -f -o /tmp/pipe.txt pactl info}} を実行し、pastebin に {{ic|/tmp/pipe.txt}} を貼り付けて、IRC (OFTC の [ircs://irc.oftc.net/pipewire #pipewire]) かメーリングリストで相談してください。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth の音声の品質が低い====&lt;br /&gt;
&lt;br /&gt;
Bluetooth で再生が途切れる場合は {{ic|systemctl --user status pipewire.service}} を実行してみてください。次のようなエラーが表示される場合は、&lt;br /&gt;
&lt;br /&gt;
 Feb 17 18:23:01 HOST pipewire[249297]: (bluez_input.18:54:CF:04:00:56.a2dp-sink-60) client too slow! rate:512/48000 pos:370688 status:triggered&lt;br /&gt;
&lt;br /&gt;
{{ic|pactl list sinks}} で現在選択されているコーデックを確認し、{{ic|/etc/pipewire/media-session.d/bluez-monitor.conf}} の {{ic|bluez5.codecs}} を {{ic|sbc aac ldac aptx aptx_hd}} のいずれかに変更してみてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
properties = {&lt;br /&gt;
  ...&lt;br /&gt;
  bluez5.codecs = [sbc]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
mSBC サポートの有効化を試すには (Sony 1000XM3 のマイクの問題を修正します):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
  ...&lt;br /&gt;
  actions = {&lt;br /&gt;
    ...&lt;br /&gt;
    update-props = {&lt;br /&gt;
     ...&lt;br /&gt;
     bluez5.msbc-support = true&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するには {{ic|systemctl --user restart pipewire.service}} で PipeWire を再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== 再生開始時に明らかな音声の遅延やポップノイズ/音割れが発生する ====&lt;br /&gt;
&lt;br /&gt;
これは、非アクティブ時のノードの一時停止が原因です。&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipiwire-media-session}} を使用: &lt;br /&gt;
&lt;br /&gt;
これを無効にするには、遅延が発生する場所に応じて {{ic|/etc/pipewire/media-session.d/*-monitor.conf}} を編集し、プロパティ {{ic|session.suspend-timeout-seconds}} を 0 に変更します。無効にするか、他の値を試して、何が機能するかを確認します。&lt;br /&gt;
&lt;br /&gt;
または、{{ic|/etc/pipewire/media-session.d/media-session.conf}} の行 {{ic|suspend-node}} をコメントアウトすることもできます。&lt;br /&gt;
&lt;br /&gt;
[[再起動]] して {{ic|pipewire.service}} と {{ic|pipewire-pulse.service}} の両方の変更を適用して下さい。&lt;br /&gt;
&lt;br /&gt;
{{pkg|wireplumber}} で、新しいファイルを作成してデフォルト設定を上書きします:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/main.lua.d/51-disable-suspension.lua&lt;br /&gt;
(or /etc/wireplumber/main.lua.d/51-disable-suspension.lua)|2=&lt;br /&gt;
table.insert (alsa_monitor.rules, {&lt;br /&gt;
  matches = {&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sources.&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_input.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sinks.&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_output.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
  },&lt;br /&gt;
  apply_properties = {&lt;br /&gt;
    [&amp;quot;session.suspend-timeout-seconds&amp;quot;] = 0,  -- 0 disables suspend&lt;br /&gt;
  },&lt;br /&gt;
})&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Bluetooth デバイスの場合は、次の設定も使用します (ファイルの場所が異なることに注意してください):&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/bluetooth.lua.d/51-disable-suspension.lua&lt;br /&gt;
(or /etc/wireplumber/bluetooth.lua.d/51-disable-suspension.lua)|2=&lt;br /&gt;
-- Note: bluez_monitor, not alsa_monitor&lt;br /&gt;
table.insert (bluez_monitor.rules, {&lt;br /&gt;
  matches = {&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sources.&lt;br /&gt;
      -- Note: bluez_input, not alsa_input&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;bluez_input.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sinks.&lt;br /&gt;
      -- Note: bluez_output, not alsa_output&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;bluez_output.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
  },&lt;br /&gt;
  apply_properties = {&lt;br /&gt;
    [&amp;quot;session.suspend-timeout-seconds&amp;quot;] = 0,  -- 0 disables suspend&lt;br /&gt;
  },&lt;br /&gt;
})&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|pipewire.service}} と {{ic|wireplumber.service}} を再起動して、変更を適用します。&lt;br /&gt;
&lt;br /&gt;
サスペンドを完全に無効にする代わりに、タイムアウト値を、ソースがサスペンドされるまでに必要な遅延秒数に変更することもできます。&lt;br /&gt;
&lt;br /&gt;
==== 複数のストリームの再生が開始されると音声が途切れる ====&lt;br /&gt;
&lt;br /&gt;
この問題は通常、{{ic|pipewire-pulse.service}} [[systemd/ユーザー|ユーザーユニット]] の [[journal]] を読み取り、次のような行を見つけることで診断できます。&lt;br /&gt;
&lt;br /&gt;
 pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#underrununderflow-and-broken-pipe-errors 公式 PipeWire トラブルシューティングガイド] によると、{{pkg|pipewire-media-session}} のこの問題を解決するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf (or ~/.config/pipewire/media-session.d/alsa-monitor.conf|2=&lt;br /&gt;
api.alsa.headroom = 1024&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|wireplumber}} を使用する場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/50-alsa-config.lua (or ~/.config/wireplumber/main.lua.d/50-alsa-config.lua)|2=&lt;br /&gt;
apply_properties = {&lt;br /&gt;
    [&amp;quot;api.alsa.headroom&amp;quot;] = 1024,&lt;br /&gt;
},&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
カーネルページのロックやスケジューリングの遅延が原因で音声の途切れが発生する場合は、[[ゲーム#カーネルパラメータを調整して応答時間を安定化させる|カーネルパラメータを調整して応答時間を安定化させる]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 音がひずむ ====&lt;br /&gt;
* マイクについては、{{ic|alsamixer}} を起動し、問題があるサウンドカードを選択し、{{ic|Mic Boost}} や {{ic|Internal Mic Boost}} の値を下げてみてください。&lt;br /&gt;
* {{ic|/etc/pipewire/pipewire.conf}} の {{ic|1=default.clock.rate = 48000}} のコメントを外して、値を {{ic|44100}} に下げてみてください。&lt;br /&gt;
&lt;br /&gt;
==== スタンバイ後に音声の問題が発生する ====&lt;br /&gt;
&lt;br /&gt;
スリープから復帰した際に音が消えたり壊れたりする場合は、ALSA を最初期化すると改善するかもしれません:&lt;br /&gt;
&lt;br /&gt;
 # alsactl init&lt;br /&gt;
&lt;br /&gt;
==== USB DAC(例:Schiit 社製 DAC)で高レイテンシー ====&lt;br /&gt;
&lt;br /&gt;
サンプルレートやフォーマットを変更することで、Schiit Hel 2 などの一部の DAC でレイテンシーを減らすことができるかもしれません [https://www.reddit.com/r/osugame/comments/msifdd/usb_dacamp_and_audio_lag/] &#039;&#039;pipewire-media-session&#039;&#039; のマッチングルールを使用すると、デバイスのプロパティを設定することができます [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-pipewire-media-session#matching-rules] &lt;br /&gt;
&#039;&#039;pipewire-media-session&#039;&#039; の {{ic|alsa-monitor.conf}}  のデフォルト設定を {{ic|/etc/pipewire/media-session.d}} か {{ic|~/.config/pipewire/media-session.d}} にコピーしてください。&lt;br /&gt;
そして、以下のような新しいルールブロックを追加してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf&lt;br /&gt;
~/.config/pipewire/media-session.d/alsa-monitor.conf|output=&lt;br /&gt;
rules = {&lt;br /&gt;
    ...&lt;br /&gt;
    {&lt;br /&gt;
        matches = [&lt;br /&gt;
            {&lt;br /&gt;
                node.name = &amp;quot;alsa_output.&amp;lt;name of node&amp;gt;&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                audio.format = &amp;quot;S24_3LE&amp;quot;&lt;br /&gt;
                audio.rate = 96000&lt;br /&gt;
                # Following value should be doubled until audio doesn&#039;t cut out or other issues stop occurring&lt;br /&gt;
                api.alsa.period-size = 128&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|alsa_output.&amp;lt;node name&amp;gt;}} ノードは {{ic|pw-top}} で取得することができます。&lt;br /&gt;
&lt;br /&gt;
DAC は異なるフォーマットやサンプルレートをサポートしているかもしれません。[[ALSA]] に問い合わせることで、あなたの  DAC が何をサポートしているかを確認することができます。&lt;br /&gt;
&lt;br /&gt;
まず、DAC のカード番号を取得します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ aplay -l|&lt;br /&gt;
...&lt;br /&gt;
card 3: S2 [Schiit Hel 2], device 0: USB Audio [USB Audio]&lt;br /&gt;
  Subdevices: 0/1&lt;br /&gt;
  Subdevice #0: subdevice #0&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
つまり、この例ではカード3ということになります。&lt;br /&gt;
サポートされているすべてのサンプルレートとフォーマットを取得します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /proc/asound/cardX/streamX|&lt;br /&gt;
...&lt;br /&gt;
Playback:&lt;br /&gt;
  ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 1&lt;br /&gt;
    Format: S16_LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 16&lt;br /&gt;
    ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 2&lt;br /&gt;
    Format: S24_3LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 24&lt;br /&gt;
    ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 3&lt;br /&gt;
    Format: S32_LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 32&lt;br /&gt;
    ...&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この場合、{{ic|S16_LE, S24_3LE, S32_LE}} はサポートされているフォーマットで、{{ic|44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000}} はすべてのフォーマットでサポートされているサンプルレートとなります。&lt;br /&gt;
&lt;br /&gt;
==== 音量が 30% になるまで USB DAC から音が出ない ====&lt;br /&gt;
&lt;br /&gt;
USB DAC の中には、ある一定の音量に達するまで音が出なくなるものがあります [https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1117] 一般的にこれは約 25%〜30% で、最初の音量が不快なほど大きくなり、低い音量を維持することができなくなります。解決策としては、{{ic|[&amp;quot;api.alsa.soft-mixer&amp;quot;]}} を {{ic|true}} に設定して、ハードウェアミキサーの音量コントロールを無視することが挙げられます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|wireplumber}} でこれを実現するには、{{ic|/usr/share/wireplumber/main.lua.d/50-alsa-config.lua}} 設定に次を使用して構成フラグメントを追加します。 {{ic|table.insert}}:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/main.lua.d/51-volume-fix.lua|output=&lt;br /&gt;
&lt;br /&gt;
table.insert (alsa_monitor.rules, {&lt;br /&gt;
    matches = {&lt;br /&gt;
      {&lt;br /&gt;
        -- This matches all cards.&lt;br /&gt;
        { &amp;quot;device.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_card.*&amp;quot; },&lt;br /&gt;
      },&lt;br /&gt;
    },&lt;br /&gt;
    -- Apply properties on the matched object.&lt;br /&gt;
    apply_properties = {&lt;br /&gt;
      -- Don&#039;t use the hardware mixer for volume control. It&lt;br /&gt;
      -- will only use software volume. The mixer is still used&lt;br /&gt;
      -- to mute unused paths based on the selected port.&lt;br /&gt;
      [&amp;quot;api.alsa.soft-mixer&amp;quot;] = true,&lt;br /&gt;
    }&lt;br /&gt;
  })&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、pipewire を再起動します。{{ic|alsamixer}} でマスターボリュームを設定し、{{ic|# alsactl store}} で設定を保存します。これで、ボリュームミキサーを通常どおり使用できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== リアルタイムオーディオが動作しない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|RTKit error: org.freedesktop.DBus.Error.AccessDenied}} が {{ic|systemctl --user status pipewire.service}} の出力に表示された場合、pipewire daemon の優先度がリアルタイムに変更されていないことを示します。この問題については、[https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1069] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 同じサウンドカード上の複数のシンクへの同時出力 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/share/alsa-card-profile/mixer/profile-sets/default.conf}} のコピーを作成し、アップデート後も変更が持続するようにします。ここでは、アナログと HDMI の2つのデフォルトマッピングを結合したプロファイルを定義しています。&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/alsa-card-profile/mixer/profile-sets/multiple.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
auto-profiles = no&lt;br /&gt;
&lt;br /&gt;
[Mapping analog-stereo]&lt;br /&gt;
device-strings = front:%f&lt;br /&gt;
channel-map = left,right&lt;br /&gt;
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2&lt;br /&gt;
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic&lt;br /&gt;
priority = 15&lt;br /&gt;
&lt;br /&gt;
[Mapping hdmi-stereo]&lt;br /&gt;
description = Digital Stereo (HDMI)&lt;br /&gt;
device-strings = hdmi:%f&lt;br /&gt;
paths-output = hdmi-output-0&lt;br /&gt;
channel-map = left,right&lt;br /&gt;
priority = 9&lt;br /&gt;
direction = output&lt;br /&gt;
&lt;br /&gt;
[Profile multiple]&lt;br /&gt;
description = Analog Stereo Duplex + Digital Stereo (HDMI) Output&lt;br /&gt;
output-mappings = analog-stereo hdmi-stereo&lt;br /&gt;
input-mappings = analog-stereo&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ここで、PipeWire の media-session に、新しい card-profile を使用してデバイスをマッチングするように設定します。識別情報は、{{ic|$ pw-cli dump device}} で見つけることができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf|2=&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        matches = [ { alsa.card_name = &amp;quot;HDA Intel PCH&amp;quot; } ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                api.alsa.use-acp = true&lt;br /&gt;
                device.profile-set = &amp;quot;multiple.conf&amp;quot;&lt;br /&gt;
                device.profile = &amp;quot;multiple&amp;quot;&lt;br /&gt;
                api.acp.auto-profile = false&lt;br /&gt;
                api.acp.auto-port = false&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Discord から通知音が鳴らない ====&lt;br /&gt;
&lt;br /&gt;
min.quantum が低すぎることが原因かもしれませんので、700以上に設定してみてください。pipewire-pulse.conf の pulse.rules セクションに以下のルールを追加することで、Discord 専用にオーバーライドすることが可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire-pulse.conf (or ~/.config/pipewire/pipewire-pulse.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
pulse.rules = [&lt;br /&gt;
  ...&lt;br /&gt;
    {&lt;br /&gt;
        # Discord notification sounds fix&lt;br /&gt;
        matches = [ { application.process.binary = &amp;quot;Discord&amp;quot; } ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                pulse.min.quantum      = 1024/48000     # 21ms&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== PipeWire で FMOD ゲームがクラッシュする ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Pillars_of_Eternity|Pillars of Eternity]] のような古いバージョンの [[Wikipedia:FMOD|FMOD オーディオエンジン]] を使っているゲームの中には、PulseAudio バイナリが存在しないと {{ic|pulseaudio --check}} を呼び出してクラッシュするものがあります。回避策としては、{{ic|/bin/pulseaudio}}を{{ic|/bin/true}}にシンボリックリンクすることです[https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1514]&lt;br /&gt;
&lt;br /&gt;
 # ln -s /bin/true /bin/pulseaudio&lt;br /&gt;
&lt;br /&gt;
PulseAudio を再インストールする場合は、シンボリックリンクを削除する必要があることに注意してください。&lt;br /&gt;
&lt;br /&gt;
==== 自動切り替えが機能しない ====&lt;br /&gt;
&lt;br /&gt;
自動切り替えが機能しない場合、[[WirePlumber]] の状態に問題がある可能性があります。[https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/191#note_1252549 this comment] が提案しているように、[[WirePlumber]] のローカル状態を削除し、デーモンを再起動することで改善されるかどうか確認することができます。&lt;br /&gt;
&lt;br /&gt;
 $ rm -r ~/.local/state/wireplumber/&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|wireplumber.service}} [[systemd/ユーザー|ユーザーユニット]] を [[ヘルプ:読み方# systemd ユニットのコントロール|再起動]] します。&lt;br /&gt;
&lt;br /&gt;
==== リアルタイムプライオリティの欠落/サスペンド後の負荷によるクラックリング ====&lt;br /&gt;
&lt;br /&gt;
rtkit の [https://github.com/heftig/rtkit/issues/13 2011年] からのバグにより、サスペンドイベントが発生すると PipeWire のリアルタイム優先度が取り消され、元に戻らなくなります。この原因となる保護を無効にするには、{{ic|rtkit-daemon.service}} を [[編集]] してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/rtkit-daemon.service.d/override.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/lib/rtkit-daemon --no-canary&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、メディアセッションサービスとともに、{{ic|rtkit-daemon.service}} ユニットと {{ic|pipewire.service}} ユーザー ユニットを再起動します。&lt;br /&gt;
&lt;br /&gt;
==== RAOP デバイス (Sonos など) へのストリーミング中に音が出ない ====&lt;br /&gt;
&lt;br /&gt;
[[Avahi]] または [[systemd-resolved]] を使用して mDNS ホスト名解決を設定します。&lt;br /&gt;
&lt;br /&gt;
==== KDE Plasma でサウンドデバイスが表示されない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire クライアント (デスクトップ環境を含む) は、[https://specations.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables XDG_RUNTIME_DIR] [[環境変数]] に依存して PipeWire デーモンに接続する場合があります。[https://docs.pipewire.org/page_daemon.html] ログイン直後にサウンドデバイスが表示されない場合は、この変数が手動で間違ったパスに設定されている可能性があります。&lt;br /&gt;
&lt;br /&gt;
これは PipeWire を手動で再起動することで解決できますが、Chromium で画面共有できない ({{ic|pipewire context failed}} により) など、他の問題が依然として発生する可能性があります。{{ic|XDG_RUNTIME_DIR}} は {{man|8|pam_systemd}} によって自動的に設定されるため、初期化ファイルに設定されているインスタンスをすべて削除する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== SDDM ユーザーのデバイス音量がログイン時に復元されない ====&lt;br /&gt;
&lt;br /&gt;
SDDM を使用していて、ログイン後にオーディオの音量レベルが正しく復元されない場合は、SDDM に対して Pipewire をマスクしてください。SDDM で実行される Wireplumber が、ユーザーの Wireplumber セッションに干渉する可能性があります。&lt;br /&gt;
&lt;br /&gt;
 systemctl --user -M sddm@ mask pipewire.socket&lt;br /&gt;
&lt;br /&gt;
詳細については、[https://wiki.debian.org/PipeWire#Device_volume_for_SDDM_users_is_not_restored_on_login Debian Wiki] の記事 を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ターミナルベルが動作しない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire の観点からは、module x11.bell がロードされている必要があります。これはデフォルトの設定です(上記の設定ファイルも参照){{Pkg|pipewire-x11-bell}} パッケージがインストールされているか確認してください。&lt;br /&gt;
&lt;br /&gt;
また、ウィンドウマネージャーがターミナルベルに影響を与えることがあります。例えば、xfwm を使用している場合は、xfwm-terminal の設定で &amp;quot;聴ベル(Audible bell)&amp;quot; が有効になっているか確認してください。&lt;br /&gt;
&lt;br /&gt;
次に、PipeWire サービスを再起動します:&lt;br /&gt;
&lt;br /&gt;
 systemctl --user restart pipewire&lt;br /&gt;
&lt;br /&gt;
ターミナルベルが動作するか試すには、以下のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 echo $&#039;\a&#039;&lt;br /&gt;
&lt;br /&gt;
==== 最初の再生試行まで音が出ない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire がソケットアクティベーションによって起動される設定になっている場合、一部の PipeWire ネイティブアプリケーションにおいて、[[WirePlumber]] がノードを構成する前にオーディオの再生を試みてしまい、結果としてエラーが発生することがあります。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ mpv -v &#039;&#039;/path/to/file&#039;&#039;|&lt;br /&gt;
[ao/pipewire] PipeWire does not have any audio sinks, skipping&lt;br /&gt;
[ao] Failed to initialize audio driver &#039;pipewire&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ journalctl --user -u mpd.service|&lt;br /&gt;
output: Failed to play on &amp;quot;PipeWire&amp;quot; (pipewire): no target node available&lt;br /&gt;
exception: Failed to open audio output&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
回避策として、{{ic|pipewire.service}} の[[ユーザーユニット]]を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
=== ビデオ ===&lt;br /&gt;
&lt;br /&gt;
==== OBS(など)がウィンドウ/スクリーンを要求しても何も表示されない ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xdg-desktop-portal}} と {{Pkg|xdg-desktop-portal-gtk}} または {{Pkg|xdg-desktop-portal-kde}} がインストールされていることが確実なら、デーモンの実行状態を確認してください。&lt;br /&gt;
&lt;br /&gt;
OBS では、すべてがうまくいっていれば、{{ic|stdout}} にこのように表示されるはずです。&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 info: [pipewire] desktop selected, setting up screencast&lt;br /&gt;
 info: [pipewire] created stream 0x5632d7456850&lt;br /&gt;
 info: [pipewire] playing stream...&lt;br /&gt;
&lt;br /&gt;
マルチモニタ環境では、{{Pkg|slurp}} パッケージを使用すると、すべての画面をキャプチャすることができます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home Wiki] — PipeWire Wiki on Freedesktop GitLab&lt;br /&gt;
* [https://blogs.gnome.org/uraeus/2018/01/26/an-update-on-pipewire-the-multimedia-revolution-an-update/ Pipewire Update Blog Post] — PipeWire の2018年1月時点での進捗が書かれた記事&lt;br /&gt;
* [https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ PipeWire Late Summer Update 2020] — 2020年9月からの記事&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=PipeWire&amp;diff=41351</id>
		<title>PipeWire</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=PipeWire&amp;diff=41351"/>
		<updated>2026-02-20T08:51:52Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* オーディオ */ 最初の再生試行まで音が出ないを翻訳して追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:マルチメディア]]&lt;br /&gt;
[[en:PipeWire]]&lt;br /&gt;
[[fi:PipeWire]]&lt;br /&gt;
[[pt:PipeWire]]&lt;br /&gt;
[[ru:PipeWire]]&lt;br /&gt;
[[zh-hans:PipeWire]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PipeWire/サンプル}}&lt;br /&gt;
{{Related|WirePlumber}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://pipewire.org PipeWire] は新しい低レベルマルチメディアフレームワークです。&lt;br /&gt;
映像と音声を最小の遅延で再生/キャプチャすることを目的としていて、[[PulseAudio]]、[[JACK]]、[[ALSA]]、[[GStreamer]] をベースとしたアプリケーションと互換性があります。&lt;br /&gt;
&lt;br /&gt;
このフレームワークのデーモンは (PulseAudio と JACK の機能を持った) オーディオサーバーとしても、ビデオキャプチャサーバーとしても設定できます。&lt;br /&gt;
&lt;br /&gt;
また PipeWire は [[Flatpak]] のようなコンテナをサポートしており、&#039;&#039;audio&#039;&#039; や &#039;&#039;video&#039;&#039; [[ユーザーとグループ#グループ管理|ユーザーグループ]]に依存するのではなく、Flatpak や Wayland にスクリーンや音声を録音する許可を求める [[Polkit]] のようなセキュリティモデルを使用しています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
公式リポジトリから {{Pkg|pipewire}} パッケージを [[インストール]] してください。[[multilib]] に対応した {{Pkg|lib32-pipewire}} もあります。&lt;br /&gt;
&lt;br /&gt;
Pipewire は [[systemd/ユーザー]] を使ってサーバーを管理し、ソケットを自動で起動します。&lt;br /&gt;
&lt;br /&gt;
オプションとして、{{Pkg|pipewire-docs}} をインストールすると、ドキュメントを確認することができます。&lt;br /&gt;
&lt;br /&gt;
Pipewire は、他のオーディオサーバーと置き換えることができます。詳しくは [[PipeWire#オーディオ|オーディオ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== セッション マネージャー ===&lt;br /&gt;
&lt;br /&gt;
[[JACK]] と同様、PipeWire は内部で接続ロジックを実装していません。新しいストリームを監視し、適切な出力デバイスやアプリケーションに接続する負担は、セッションマネージャーとして知られる外部のコンポーネントに任されています。&lt;br /&gt;
&lt;br /&gt;
現在、推奨のセッションマネージャーは1つだけで次になります:&lt;br /&gt;
* {{App|[[WirePlumber]]| 強力なマネージャであり、現在の推奨品です。モジュール設計に基づいており、実際の管理機能を実装する Lua プラグインがあります。|https://pipewire.pages.freedesktop.org/wireplumber/|{{Pkg|wireplumber}}}}&lt;br /&gt;
&lt;br /&gt;
次のセッションマネージャーはサポート外になっており WirePlumber を推奨しています:&lt;br /&gt;
&lt;br /&gt;
* {{App|PipeWire Media Session|いくつかの基本的なデスクトップのユースケースに対応した非常にシンプルなセッションマネージャです。これは主にテスト用と新しいセッションマネージャを構築するための例として実装されました。|https://gitlab.freedesktop.org/pipewire/media-session|{{Pkg|pipewire-media-session}}}}&lt;br /&gt;
&lt;br /&gt;
PipeWire のインストール時に、どちらかを選ぶように指示されます。後で適切なパッケージをインストールすることで、もう一方のオプションと衝突しますが、置き換えることで切り替えが可能です。&lt;br /&gt;
&lt;br /&gt;
=== GUI ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Helvum|PipeWire 用の GTK 製のパッチベイ。 JACK のツールの catia にインスパイアされた。|https://gitlab.freedesktop.org/ryuukyu/helvum|{{pkg|helvum}}}}&lt;br /&gt;
* {{App|qpwgraph|Qt-based Graph/Patchbay for PipeWire, inspired by the JACK tool QjackCtl.|https://gitlab.freedesktop.org/rncbc/qpwgraph|{{Pkg|qpwgraph}}}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
PipeWire パッケージは、初期設定ファイルを{{ic|/usr/share/pipewire}} に用意しています。パッケージのアップデートで変更内容が上書きされてしまうので、これらのファイルを直接編集するべきではありません。PipeWire を設定するには、ファイルを {{ic|/usr/share/pipewire}} からシステム全体の代替場所 {{ic|/etc/pipewire}} か、ユーザーの場所 {{ic|~/.config/pipewire}} にコピーしてください。[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#configuration-file-pipewireconf]&lt;br /&gt;
&lt;br /&gt;
=== プロファイル ===&lt;br /&gt;
&lt;br /&gt;
Pipewire では、PulseAudio のプロファイルに加えて、pavucontrol で選択可能なカスタムの &#039;&#039;Pro Audio&#039;&#039; プロファイルが提供されています。その効果はこちらで解説しています:https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#what-is-the-pro-audio-profile&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
=== 音声 ===&lt;br /&gt;
&lt;br /&gt;
PulseAudio や JACK と同様に  PipeWire をオーディオサーバーとして使用できます。 PulseAudio サーバーの互換実装と JACK クライアント用の ABI 互換ライブラリを提供することで  PulseAudio と JACK の両方を置き換えることを目的としています。詳細については[https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ この記事]を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ALSA/レガシーアプリケーション ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-alsa}} をインストールして ALSA API を使用するすべてのアプリケーションが PipeWire を使用するよう設定できます。&lt;br /&gt;
&lt;br /&gt;
==== PulseAudio クライアント ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-pulse}} をインストールします。このパッケージは {{pkg|pulseaudio}} と {{pkg|pulseaudio-bluetooth}} を置き換えます。再起動するか、ログインし直すか、{{ic|pulseaudio.service}} を[[停止]]して、{{ic|pipewire-pulse.service}} ユーザーユニットを実行すると効果がわかります。&lt;br /&gt;
&lt;br /&gt;
パッケージがユーザーサービス {{ic|pipewire-pulse.socket}} を自動的に有効化するので、通常それ以上の操作は不要です。置き換えが機能しているかどうかを確認するには、次のコマンドを実行して出力を確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ pactl info|2=&lt;br /&gt;
...&lt;br /&gt;
Server Name: PulseAudio (on PipeWire &#039;&#039;x.y.z&#039;&#039;)&lt;br /&gt;
...&lt;br /&gt;
Default Sink: alsa_output.{bus}-{device}.{profile}&lt;br /&gt;
Default Source: alsa_input.{bus}-{device}.{profile}&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{man|1|pactl}} は、依存関係として &#039;&#039;pipewire-pulse&#039;&#039; とともにインストールされる PulseAudio クライアントライブラリパッケージ ({{pkg|libpulse}}) によって提供されます。&lt;br /&gt;
&lt;br /&gt;
===== 全体または個別のチャンネルの音量を設定する =====&lt;br /&gt;
&lt;br /&gt;
出力チャンネルのボリュームを調整するには、{{ic|pactl get-sink-volume {sink}}} を使用して、&#039;&#039;Default Sink:&#039;&#039; (上記) または &#039;&#039;Name&#039;&#039; の値を使用して &#039;&#039;sink&#039;&#039; を指定する必要があります。:&lt;br /&gt;
&#039;&#039; (下記)、デフォルトのシンクデバイス (&#039;&#039;@DEFAULT_SINK@&#039;&#039;)、または &#039;&#039;Sink #&#039;&#039; (例: 以下の &#039;&#039;1&#039;&#039;):&lt;br /&gt;
{{hc|$ pactl list sinks {{!}} grep -B1 -A9 State:|2=&lt;br /&gt;
Sink #1&lt;br /&gt;
        State: RUNNING&lt;br /&gt;
        Name: alsa_output.pci-0000_2d_00.4.analog-surround-51&lt;br /&gt;
...&lt;br /&gt;
        Driver: PipeWire&lt;br /&gt;
...&lt;br /&gt;
        Mute: no&lt;br /&gt;
        Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB,   rear-left: 65536 / 100% / 0.00 dB,   rear-right: 65536 / 100% / 0.00 dB,   front-center: 65536 / 100% / 0.00 dB,   lfe: 65536 / 100% / 0.00 dB&lt;br /&gt;
                balance 0.00&lt;br /&gt;
}}&lt;br /&gt;
ヒント: オーディオが再生されている場合、他のデバイスとして &#039;&#039;実行中&#039;&#039; の {{man|1|grep}} は &#039;&#039;一時停止&#039;&#039; されます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;バランス&#039;&#039; 比率は自動的に計算されます。デフォルトのデバイスの全体のボリュームを設定するには、次のコマンドを使用します: {{bc|pactl set-sink-volume @DEFAULT_SINK@ 75%}}&lt;br /&gt;
個別のチャンネルを設定するには、各チャンネルのボリュームを個別に指定します:&lt;br /&gt;
{{bc|pactl set-sink-volume @DEFAULT_SINK@ 100% 75% 100% 75% 100% 100%}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ソース&#039;&#039; 入力も同様に処理されます。さらに詳しい設定 (モジュールなど) については、[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Migrate-PulseAudio Migrate PulseAudio] および [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PulseAudio Pipewire-Pulse Configuration] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== JACK クライアント ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-jack}} をインストールします。{{ic|pw-jack}} を使用して JACK クライアントを起動すると、元の {{ic|libjack*}} ではなく PipeWire が提供する互換ライブラリが使用されます:&lt;br /&gt;
&lt;br /&gt;
 pw-jack &#039;&#039;application&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
カスタムバッファサイズを要求することもできます。{{ic|PIPEWIRE_LATENCY}}環境変数を {{ic|バッファサイズ/サンプルレート}} (ブロックのレイテンシ(秒)を意味します) に設定します:&lt;br /&gt;
&lt;br /&gt;
 PIPEWIRE_LATENCY=&amp;quot;128/48000&amp;quot; pw-jack &#039;&#039;application&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
また {{aur|pipewire-jack-dropin}} をインストールするか、{{pkg|jack}} か {{pkg|jack2}} をアンインストールして JACK クライアントが互換ライブラリを自動的に読み込むようにもできます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ldd}} を使用して JACK アプリケーションが正しいライブラリにリンクしていることを確認します。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ ldd /usr/bin/qjackctl {{!}} grep -i libjack|2=&lt;br /&gt;
        libjack.so.0 =&amp;gt; /usr/lib/pipewire-0.3/jack/libjack.so.0 (0x00007f7e5080a000)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth デバイス ====&lt;br /&gt;
&lt;br /&gt;
PipeWire は {{pkg|pipewire-pulse}} パッケージがインストールされている場合 Bluetooth オーディオデバイスを制御します。具体的には、メディアセッションデーモンは {{ic|/etc/pipewire/media-session.d/with-pulseaudio}} が存在する時に自動的にその {{ic|bluez5}} モジュールを有効にします。&lt;br /&gt;
&lt;br /&gt;
===== プロファイルの自動選択機能 =====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-media-session}} は、入力ストリームが必要なときに、HSP/HFP と A2DP プロファイルを自動的に切り替えます。これを有効にするには、{{ic|bluez5.autoswitch-profile}} プロパティを {{ic|true}} にセットしてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf (or ~/.config/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                ...&lt;br /&gt;
                bluez5.autoswitch-profile = true&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらの機能は、[[WirePlumber]] ではまだ [https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/90 実装中] です。&lt;br /&gt;
&lt;br /&gt;
==== PipeWire ネイティブパッチセット ====&lt;br /&gt;
&lt;br /&gt;
グラフィカルな視覚化と接続の作成のための Helvum はありますが、それ以外はまだ入っていません。以下は、ワイヤセットの保存、ワイヤセットの読み込み、すべての接続の解除を行う bash スクリプトです。保存と読み込みには、コマンドラインパラメータでファイル名を指定します。&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-savewires|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
if [[ &amp;quot;$#&amp;quot; -ne 1 ]]; then&lt;br /&gt;
	echo&lt;br /&gt;
	echo &#039;usage: pw-savewires filename&#039;&lt;br /&gt;
	echo&lt;br /&gt;
	exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
rm $1 &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
while IFS= read -r line; do&lt;br /&gt;
	link_on=`echo $line | cut -f 4 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_op=`echo $line | cut -f 6 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_in=`echo $line | cut -f 8 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_ip=`echo $line | cut -f 10 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	echo &amp;quot;Saving: &amp;quot; &amp;quot;&#039;&amp;quot;$link_on:$link_op&amp;quot;&#039;,&#039;&amp;quot;$link_in:$link_ip&amp;quot;&#039;&amp;quot;&lt;br /&gt;
	echo &amp;quot;&#039;&amp;quot;$link_on:$link_op&amp;quot;&#039;,&#039;&amp;quot;$link_in:$link_ip&amp;quot;&#039;&amp;quot; &amp;gt;&amp;gt; $1&lt;br /&gt;
done &amp;lt; &amp;lt;(pw-cli dump short link)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-loadwires|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import csv&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
if len(sys.argv) &amp;lt; 2:&lt;br /&gt;
	print(&#039;\n usage: pw-loadwires filename\n&#039;)&lt;br /&gt;
	quit()&lt;br /&gt;
&lt;br /&gt;
with open(sys.argv[1], newline=&#039;&#039;) as csvfile:&lt;br /&gt;
	pwwreader = csv.reader(csvfile, delimiter=&#039;,&#039;, quotechar=&#039;&amp;quot;&#039;)&lt;br /&gt;
	for row in pwwreader:&lt;br /&gt;
		print(&#039;Loading:  &#039; + row[0] + &#039; --&amp;gt; &#039; + row[1])&lt;br /&gt;
		process = os.popen(&#039;pw-link &#039; + row[0] + &#039; &#039; + row[1])&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-dewire|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
while read -r line; do&lt;br /&gt;
	echo &#039;Dewiring: &#039; $line &#039;...&#039;&lt;br /&gt;
	pw-link -d $line&lt;br /&gt;
done &amp;lt; &amp;lt;(pw-cli dump short link {{!}} grep -Eo &#039;^[0-9]+&#039;)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== ネットワーク上のコンピューターとオーディオ機器を共有する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire 自体はネットワーク透過型ではありませんが、そのパルス実装は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PulseAudio#network-support ネットワークストリーミング] をサポートしています。ネットワーク上のコンピュータ間でオーディオを共有する簡単な方法は、[[Avahi]] デーモンを使って検出することです。&lt;br /&gt;
オーディオを共有するすべてのコンピュータで {{ic|avahi-daemon.service}} が実行されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
ローカルのオーディオデバイスを共有するために、ホスト上で適切なモジュールをロードしてください。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-native-protocol-tcp listen=&#039;&#039;192.168.1.10&#039;&#039; # Use the local IP address&lt;br /&gt;
 pactl load-module module-zeroconf-publish&lt;br /&gt;
&lt;br /&gt;
次に、クライアントにディスカバリモジュールをロードします。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-zeroconf-discover&lt;br /&gt;
&lt;br /&gt;
===== AirPlay レシーバーにオーディオをストリーミングする =====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:AirPlay#Receivers|AirPlay Receiver]] を装ったデバイスにオーディオをストリーミングすることが可能です。この機能を有効にするには、[https://docs.pipewire.org/page_module_raop_discover.html RAOP Discover モジュール] をロードします。 &lt;br /&gt;
&lt;br /&gt;
 $ pactl load-module module-raop-discover&lt;br /&gt;
&lt;br /&gt;
専用の設定ファイルを作成することで、このモジュールを自動的にロードすることもできます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf.d/raop-discover.conf (or ~/.config/pipewire/pipewire.conf.d/raop-discover.conf)|2=&lt;br /&gt;
context.modules = [&lt;br /&gt;
   {&lt;br /&gt;
       name = libpipewire-module-raop-discover&lt;br /&gt;
       args = { }&lt;br /&gt;
   }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
一部のスピーカーの AirPlay 実装 (Sonos AirPlay 2 スピーカーなど) では、ソースデバイスで着信 UDP トラフィック用にポート 6001 および 6002 を開く必要がある場合があります。&lt;br /&gt;
&lt;br /&gt;
==== ネイティブ JACK 上で PipeWire を実行する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire はネイティブ JACK デーモン上の JACK クライアントとして実行することもできます。詳細は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/JACK JACK and PipeWire] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== PipeWire シンクとして ALSA dmix デバイスを使用する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire サーバー(またはユーザーごとに複数) を [[Advanced Linux Sound Architecture#Dmix|ALSA dmix デバイス]] を介して ALSA に出力することが可能です。これにより、ALSA を主要な音声出力システムとして使用しながら、Bluetooth ヘッドフォンなどの ALSA 以外のデバイスを使用することができるようになります。&lt;br /&gt;
&lt;br /&gt;
===== ALSA dmix セットアップ =====&lt;br /&gt;
&lt;br /&gt;
{{ic|PCH}} と {{ic|HDMI}} の 2 枚のカードがあるとします。&lt;br /&gt;
&lt;br /&gt;
{{hc|/proc/asound/cards|&lt;br /&gt;
 0 [PCH            ]: HDA-Intel - HDA Intel PCH&lt;br /&gt;
                      HDA Intel PCH at 0xdff40000 irq 146&lt;br /&gt;
 1 [HDMI           ]: HDA-Intel - HDA ATI HDMI&lt;br /&gt;
                      HDA ATI HDMI at 0xdfe60000 irq 147&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
PCM は次のようになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/proc/asound/pcm|&lt;br /&gt;
00-00: ALC1220 Analog : ALC1220 Analog : playback 1 : capture 1&lt;br /&gt;
00-02: ALC1220 Alt Analog : ALC1220 Alt Analog : capture 1&lt;br /&gt;
01-03: HDMI 0 : HDMI 0 : playback 1&lt;br /&gt;
01-07: HDMI 1 : HDMI 1 : playback 1&lt;br /&gt;
01-08: HDMI 2 : HDMI 2 : playback 1&lt;br /&gt;
01-09: HDMI 3 : HDMI 3 : playback 1&lt;br /&gt;
01-10: HDMI 4 : HDMI 4 : playback 1&lt;br /&gt;
01-11: HDMI 5 : HDMI 5 : playback 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ALSA 設定が次のようになっているとします。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/asound.conf|&lt;br /&gt;
ctl.!default {&lt;br /&gt;
  type hw&lt;br /&gt;
  card PCH&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.!default {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave.pcm &amp;quot;&#039;&#039;&#039;dmix:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.dhdmi {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave.pcm &amp;quot;&#039;&#039;&#039;dmix:HDMI,9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この特定の例では、dmix デバイスは {{ic|dmix:PCH,0}} と {{ic|dmix:HDMI,9}} になります。&lt;br /&gt;
&lt;br /&gt;
===== PipeWire dmix セットアップ =====&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|alsa_monitor.enable()}} をコメントアウトして、{{ic|wireplumber}} によるハードウェア ALSA デバイスの監視と追加を停止します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/90-enable-all.lua (or ~/.config/wireplumber/main.lua.d/90-enable-all.lua)|&lt;br /&gt;
...&lt;br /&gt;
-- Load devices&lt;br /&gt;
&#039;&#039;&#039;-- alsa_monitor.enable()&#039;&#039;&#039;&lt;br /&gt;
v4l2_monitor.enable()&lt;br /&gt;
libcamera_monitor.enable()&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ここで、dmix デバイスを使用するように {{ic|pipewire}} を設定します。デフォルトの設定ファイル ({{ic|/usr/share/pipewire/pipewire.conf}}) には [https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/0.3.59/src/daemon /pipewire.conf.in#L219-239 コメントアウトされた例] をベースとして使用できます。&lt;br /&gt;
&lt;br /&gt;
独自の要素を {{ic|context.objects}} 配列に追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf.d/alsa-dmix.conf (or ~/.config/pipewire/pipewire.conf.d/alsa-dmix.conf)|output=&lt;br /&gt;
context.objects = [&lt;br /&gt;
    # We do not start with dmix, but with an input device.&lt;br /&gt;
    # Do not forget to add an input device.&lt;br /&gt;
    # On a friend&#039;s Laptop, I saw Zoom having a nervous&lt;br /&gt;
    # breakdown and endlessly crying because no input device&lt;br /&gt;
    # was configured! You have been warned.&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.source&lt;br /&gt;
            node.name              = &amp;quot;alsa-mic-internal&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;Mic Internal&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Source&amp;quot;&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;hw:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    # Okay, now we add our dmix PCMs&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.sink # sink for dmix&lt;br /&gt;
            node.name              = &amp;quot;alsa-dmix-internal&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;PCM Internal&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Sink&amp;quot; # Sink for dmix&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;dmix:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.sink # sink for dmix&lt;br /&gt;
            node.name              = &amp;quot;alsa-dmix-hdmi&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;PCM HDMI&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Sink&amp;quot; # Sink for dmix&lt;br /&gt;
            # remember this is a non-default dmix from /etc/asound.conf&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;dmix:HDMI,9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ユーザー (非 root) として、{{ic|wpctl status}} の出力を確認し、{{ic|wpctl set-default &#039;&#039;ID&#039;&#039;}} でデフォルトの入力(ソース) と出力 (シンク) のデバイスを好みのものに設定します。{ic|&#039;&#039;ID&#039;&#039;}} はシンク/ソース名の前の数字です。&lt;br /&gt;
&lt;br /&gt;
これで、構成を完全にテストすることができます。&lt;br /&gt;
&lt;br /&gt;
==== デバイスプロファイルの切り替え ====&lt;br /&gt;
&lt;br /&gt;
{{ic|snd_hda_intel}} などの一部のハードウェアオーディオデバイスは、デバイスが実行されているプロファイルによって機能が異なります。{{ic|snd_hda_intel}} の場合、HDMI とアナログ出力用に個別のプロファイルがあります。&lt;br /&gt;
&lt;br /&gt;
WirePlumber で HDMI に切り替える:&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
$ wpctl set-profile &amp;lt;device-ID&amp;gt; 3&lt;br /&gt;
$ wpctl status&lt;br /&gt;
|output=&lt;br /&gt;
...&lt;br /&gt;
├─ Sinks:&lt;br /&gt;
│  *   53. Built-in Audio Digital Stereo (HDMI) [vol: 1.00]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
WirePlumber でアナログに切り替える:&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
$ wpctl set-profile &amp;lt;device-ID&amp;gt; 1&lt;br /&gt;
$ wpctl status&lt;br /&gt;
|output=&lt;br /&gt;
...&lt;br /&gt;
├─ Sinks:&lt;br /&gt;
│  *   51. Built-in Audio Analog Stereo        [vol: 0.60]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WebRTC 画面共有 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのアプリケーションは、例えばウェブブラウザで WebRTC を使うとき (例: Google Meet) などに、デスクトップ (あるいは個々のアプリケーション) をキャプチャするために X11 に依存していました。Wayland では、セキュリティ上の理由から画面共有は異なる方法で処理されます。PipeWire はきめ細かなアクセス制御を使用して、Wayland 上のコンテンツを共有できます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|WebRTC 画面共有が機能しているかどうか、[https://mozilla.github.io/webrtc-landing/gum_test.html Mozilla の GetUserMedia WebRTX テストページ]でテストしましょう。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{Pkg|xdg-desktop-portal}} 1.10.0 では、D-Bus インターフェースの仕様と実装の不一致が修正されました。[https://github.com/flatpak/xdg-desktop-portal/pull/609] そのため、一部のクライアントは xdg-desktop-portal 1.10.0 またはそれ以降で動作しないかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
Firefox (バージョン84以降) と Chromium (バージョン110以降) はデフォルトでこの方法をサポートしていますが、Chromium の古いバージョン (バージョン73以降) では、URL {{ic|chrome://flags/#enable-webrtc-pipewire-capturer}} で対応する (実験的) フラグを設定するか、CLI 引数 {{ic|1=--enable-features=WebRTCPipeWireCapturer}} を用いて、[https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWire サポート] を有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|obs-studio}} (バージョン27以降) は、新しい PipeWire キャプチャソースを使用することにより、この方法をサポートしています。&lt;br /&gt;
&lt;br /&gt;
=== 映像 ===&lt;br /&gt;
&lt;br /&gt;
ソフトウェアはまだ商業利用には適していませんが、試す分には問題ありません。[[GStreamer]] を使用して映像ストリームを処理するほとんどのアプリケーションは PipeWire GStreamer プラグインを使用して設定なしで動作するはずです ([[GStreamer#PipeWire]] を参照してください)。そのため既に {{pkg|cheese}} のようなアプリケーションは PipeWire を使用して映像入力を利用できます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-v4l2}} を使用すると、{{ic|pw-v4l2}} スクリプトを使用してライブラリをプリロードすることも可能になります ({{ic|/lib/pipewire-0.3/v4l2/libpw-v4l2.so}}) は、v4l2 呼び出しをインターセプトし、PipeWire 経由でビデオをルーティングします。&lt;br /&gt;
&lt;br /&gt;
== 音声のポストプロセッシング ==&lt;br /&gt;
&lt;br /&gt;
=== Pipewire モジュールフィルターチェーン ===&lt;br /&gt;
&lt;br /&gt;
Pipewire には {{ic|[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Filter-Chain filter-chain]}} という内部モジュールがあり、音声の入出力を処理するノードを作成することができます。参照してください。&lt;br /&gt;
 /usr/share/pipewire/filter-chain/ を参照してください。&lt;br /&gt;
イコライザー、バーチャルサラウンドサウンド、LADSPA プラグイン、チャンネルミキシングなどの例を紹介します。&lt;br /&gt;
&lt;br /&gt;
==== システム全体のパラメトリックイコライゼーション ====&lt;br /&gt;
&lt;br /&gt;
設定ファイルを {{ic|.config}} フォルダにコピーします。&lt;br /&gt;
 mkdir -p ~/.config/pipewire/pipewire.conf.d&lt;br /&gt;
 cp /usr/share/pipewire/filter-chain/sink-eq6.conf ~/.config/pipewire/pipewire.conf.d/&lt;br /&gt;
次に、{{ic|sink-eq6.conf}} を編集して、必要なパラメータを組み込みます。ヘッドフォンの場合、これらは [https://old.reddit.com/r/oratory1990/wiki/index Oratory1990 のデータベース] から入手できます。そこにリストされていない場合は、[https://github.com/jaakkopasanen/AutoEq/tree/master/results/ AutoEQ project]&lt;br /&gt;
&lt;br /&gt;
プリアンプが必要な場合は、{{ic|eq_band_1}} を変更して、{{ic|bq_highshelf}} フィルタを周波数 0Hz でマイナスゲイン (-120 〜 +20dB のゲインをサポート) で適用します。&lt;br /&gt;
 label = bq_highshelf&lt;br /&gt;
 control = { &amp;quot;Freq&amp;quot; = 0 &amp;quot;Q&amp;quot; = 1.0 &amp;quot;Gain&amp;quot; = -7.5 }&lt;br /&gt;
&lt;br /&gt;
6 バンドを超える場合は、{{ic|nodes}} リストと対応する {{ic|links}} にさらにエントリを追加して、1 つのフィルタ &amp;quot;:Out&amp;quot; を次のフィルタ &amp;quot;:In&amp;quot; に接続します。たとえば、11 に増やします。バンド (プリアンプ + 10):&lt;br /&gt;
                     { output = &amp;quot;eq_band_6:Out&amp;quot; input = &amp;quot;eq_band_7:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_7:Out&amp;quot; input = &amp;quot;eq_band_8:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_8:Out&amp;quot; input = &amp;quot;eq_band_9:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_9:Out&amp;quot; input = &amp;quot;eq_band_10:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_10:Out&amp;quot; input = &amp;quot;eq_band_11:In&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Pipewire を再起動し、デフォルトのサウンド出力デバイスとして &amp;quot;Equalizer Sink&amp;quot; を選択します。これは、すべてのアプリケーションに適用されます。&lt;br /&gt;
&lt;br /&gt;
=== EasyEffects ===&lt;br /&gt;
&lt;br /&gt;
EasyEffects (以前は PulseEffects と呼ばれていました) は多数のエフェクトとフィルタを個々の入出力ストリーム (アプリケーションの音声出力やマイクの入力など) に提供する GTK 製のユーティリティです。注目すべきエフェクトには、入出力イコライザー、出力ラウドネス等化、ベースエンハンスメント、入力ディエッサー、ノイズ抑制プラグインなどがあります。[https://github.com/wwmm/easyeffects GitHub ページ]にエフェクトの一覧があります。&lt;br /&gt;
&lt;br /&gt;
EasyEffects を使用するには、{{pkg|easyeffects}} をインストールします。プリセット設定集については、[https://github.com/wwmm/easyeffects/wiki/Community-presets コミュニティープリセット]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|PulseEffects の古いバージョンについては [[PulseAudio#PulseEffects]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== NoiseTorch ===&lt;br /&gt;
&lt;br /&gt;
{{aur|noisetorch}} はノイズ抑制に使用できます。ビルド済み ({{aur|noisetorch-bin}}) や開発版 ({{aur|noisetorch-git}}) のパッケージもあります。&lt;br /&gt;
&lt;br /&gt;
起動すると選択したマイクにモジュールを読み込むことができます。声が出力される閾値を調整することができます。実際の声が削除されない最大のレベルに設定するべきです。&lt;br /&gt;
&lt;br /&gt;
=== Noise suppression for voice ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|noise-suppression-for-voice}} をインストールし、以下のいずれかのオプションを使用します:&lt;br /&gt;
&lt;br /&gt;
* 以下の行を {{ic|context.exec}} セクションに追加する:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf (or ~/.config/pipewire/pipewire.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
context.exec = [&lt;br /&gt;
    ...&lt;br /&gt;
    { path = &amp;quot;/usr/bin/pipewire&amp;quot; args = &amp;quot;-c /usr/share/pipewire/filter-chain/source-rnnoise.conf&amp;quot; }&lt;br /&gt;
    ...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* https://github.com/werman/noise-suppression-for-voice#pipewire に従う&lt;br /&gt;
&lt;br /&gt;
そして、オーディオ設定でノイズキャンセルソースをデフォルトとして設定します。この機能を使う前に、アプリケーションを再起動する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== JamesDSP ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Audio4Linux/JDSP4Linux#readme JamesDSP for Linux] ({{AUR|jamesdsp}} として入手可能) は PipeWire と PulseAudio のためのオープンソースのサウンドエフェクトを提供します。LADSPA や Calf などに依存することなく、独自のエフェクトエンジンを使用しています。JamesDSP は当初 Android デバイス用のオーディオエフェクトプロセッサーとして公開されました。&lt;br /&gt;
&lt;br /&gt;
=== LADSPA、LV2、VST プラグイン ===&lt;br /&gt;
&lt;br /&gt;
LADSPA、LV2、VSTのプラグインを使用したい場合は、カスタム PulseAudio null シンクと Carla Jack ホストを利用できます。{{pkg|pipewire-pulse}} と {{pkg|pipewire-jack}} と {{pkg|carla}} をインストールします。はじめに {{ic|default_null_sink}} という名前の PulseAudio の null シンクを作成します。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=default_null_sink channel_map=FL,FR&lt;br /&gt;
&lt;br /&gt;
{{ic|pw-jack carla-rack}} で PipeWire を使用する Carla を起動します。&#039;&#039;Rack&#039;&#039; タブで使いたいプラグインを全て追加します。プラグインのタイプが &#039;&#039;stereo&#039;&#039; であることを確認してください。適用する順番を変えることができます。EasyEffectsのようにリストの最初のプラグインが最初に入力の音声ストリームを受け取ります。その後 &#039;&#039;Patchbay&#039;&#039; タブに移動し {{ic|default_null_sink}} の L/R monitor を Carla input に接続し、Carla output を出力したいデバイス (スピーカーやイヤホンや HDMI 出力など) の playback に接続します。設定をフォルダに保存します ({{ic|~/Documents/carla_sink_effects.carxp}} など)。&lt;br /&gt;
&lt;br /&gt;
Firefox で動画を見ている時など、アプリケーションが音声を再生している時に効果を試すことができます。2つの方法があります。一つは Carla の &#039;&#039;Patchbay&#039;&#039; タブで Firefox の接続を全て外し {{ic|default_null_sink}} の L/R output に接続する方法です。もう一つは {{pkg|pavucontrol}} を使用し Firefox の音声ストリームを {{ic|default_null_sink}} に変更する方法です (この方法は同じアプリケーションの次回起動時に同じ接続先を使用するはずです)。&lt;br /&gt;
&lt;br /&gt;
これらの設定を起動時に適用するには、まず2つの systemd ユーザーサービスを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/jack-carla-rack.service|output=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Load Carla Rack JACK host&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PassEnvironment=&amp;quot;PIPEWIRE_LINK_PASSIVE=true&amp;quot;&lt;br /&gt;
Type=exec&lt;br /&gt;
ExecStart=/usr/bin/pw-jack carla-rack -n&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
{{hc|~/.config/systemd/user/pulseaudio-null-sink@.service|output=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Load %i Pulseaudio null sink&lt;br /&gt;
Before=jack-carla-rack.service&lt;br /&gt;
After=pipewire-pulse.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=%i channel_map=FL,FR&lt;br /&gt;
ExecStop=/usr/bin/pactl unload-module module-null-sink&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;jack-carla-rack&#039;&#039; サービスの &#039;&#039;Environment&#039;&#039; を Carla の設定ファイルのフルパスを指定するよう上書きします:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/jack-carla-rack.service.d/override.conf|output=&lt;br /&gt;
Environment=&amp;quot;CARLA_CONFIG_FILE=/home/username/Documents/carla_sink_effects.carxp&amp;quot;&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/bin/pw-jack carla-rack -n $CARLA_CONFIG_FILE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に、作成したサービスを有効化します。&#039;&#039;pulseaudio-null-sink&#039;&#039; サービスには {{ic|default_null_sink}} 引数をつけてください:&lt;br /&gt;
&lt;br /&gt;
 systemctl --user enable pulseaudio-null-sink@default_null_sink.service&lt;br /&gt;
 systemctl --user enable jack-carla-rack.service&lt;br /&gt;
&lt;br /&gt;
{{Note|システム設定で {{ic|default_null_sink}} をデフォルトデバイスに設定すると、全てのアプリケーションが {{ic|default_null_sink}} にリダイレクトされ、音量の変更がスピーカーではなく {{ic|default_null_sink}} に対して行われるようになります。スピーカーの音量を変更したい場合は、デフォルトデバイスをスピーカーから変更せずにアプリケーションの出力先を pavucontrol で {{ic|default_null_sink}} に変更してください (PipeWire の互換性レイヤーは次回起動時も出力先を覚えています)。}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== オーディオ ===&lt;br /&gt;
&lt;br /&gt;
==== PipeWire にマイクが検出されない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire の {{ic|alsa-monitor}} モジュールは、デフォルトで {{Pkg|alsa-card-profiles}} を使ってデバイスを検出します。これがうまくいかない場合は、{{ic|api.alsa.use-acp}} をオフにするか、オプションで {{ic|api.alsa.use-ucm}} をオンにすることを試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-media-session}} を使用している場合。&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf (or ~/.config/pipewire/media-session.d/alsa-monitor.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        actions = {&lt;br /&gt;
        update-props = {&lt;br /&gt;
            ...&lt;br /&gt;
            api.alsa.use-acp = false&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
それ以外の場合は、{{Pkg|wireplumber}} を使用している場合。&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/50-alsa-config.lua (or ~/.config/wireplumber/main.lua.d/50-alsa-config.lua)|output=&lt;br /&gt;
...&lt;br /&gt;
alsa_monitor.rules = {&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        apply_properties = {&lt;br /&gt;
            -- Use ALSA-Card-Profile devices. They use UCM or the profile&lt;br /&gt;
            -- configuration to configure the device and mixer settings.&lt;br /&gt;
            -- [&amp;quot;api.alsa.use-acp&amp;quot;] = true,&lt;br /&gt;
 &lt;br /&gt;
            -- Use UCM instead of profile when available. Can be&lt;br /&gt;
            -- disabled to skip trying to use the UCM profile.&lt;br /&gt;
            [&amp;quot;api.alsa.use-ucm&amp;quot;] = true,&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、pipewire を再起動し、利用可能なデバイスを確認します。&lt;br /&gt;
&lt;br /&gt;
{{hc| 1=&lt;br /&gt;
$ pw-record --list-targets&lt;br /&gt;
|2=&lt;br /&gt;
Available targets (&amp;quot;*&amp;quot; denotes default): 62&lt;br /&gt;
	58: description=&amp;quot;Built-in Audio&amp;quot; prio=1872&lt;br /&gt;
	60: description=&amp;quot;Built-in Audio&amp;quot; prio=2000&lt;br /&gt;
*	62: description=&amp;quot;Built-in Audio (Loopback PCM)&amp;quot; prio=1984&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 新しいデバイスを接続したときにサウンドが自動的に切り替わらない ====&lt;br /&gt;
&lt;br /&gt;
新しく接続されたデバイスに自動的に切り替えるには、次のファイルを作成します。:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire-pulse.conf.d/switch-on-connect.conf (or ~/.config/pipewire/pipewire-pulse.conf.d/switch-on-connect.conf)|output=&lt;br /&gt;
# override for pipewire-pulse.conf file&lt;br /&gt;
pulse.cmd = [&lt;br /&gt;
    { cmd = &amp;quot;load-module&amp;quot; args = &amp;quot;module-always-sink&amp;quot; flags = [ ] }&lt;br /&gt;
    { cmd = &amp;quot;load-module&amp;quot; args = &amp;quot;module-switch-on-connect&amp;quot; }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== サウンドが自動的に Bluetooth ヘッドフォンに切り替わらない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|pactl load-module module-switch-on-connect}} を実行し、ログイン時に自動的にそのコマンドが実行されるようにデスクトップ環境を設定してください。詳しくは [https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/89 wireplumber issue #89] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth デバイスに接続しても音が出ない ====&lt;br /&gt;
&lt;br /&gt;
2020-12-07 の時点で、Bluetooth デバイスを接続しても音が出ない場合は、デフォルトのシンクに切り替えるか、シンク入力を正しいシンクに移動する必要があります。{{ic|pactl list sinks}} で使用可能なシンクの一覧を表示し、{{ic|pactl set-default-sink}} でデフォルトのシンクを Bluetooth デバイスに切り替えます。これは[https://gist.github.com/tinywrkb/04e7fd644afa9b92d33a3a99ab07ee9e このようなスクリプト]を使って [[udev]] で自動化できます。&lt;br /&gt;
&lt;br /&gt;
この問題については、この [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 Reddit スレッド]を参照してください。スクリプトの作成者によると、ヘッドセットプロファイル (HSP) にまだ問題がある可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== 音量が小さい ====&lt;br /&gt;
&lt;br /&gt;
PulseAudio を PipeWire で置き換えた後、正しく音が出ても、再起動後に音量が極端に小さくなることがあります。&lt;br /&gt;
&lt;br /&gt;
{{ic|alsamixer}} を開き、{{ic|F6}} を押して適切なサウンドカードを選び ALSA のボリュームが100%であることを確認してください。{{ic|alsactl}} は再起動後もこの設定を維持するはずです。&lt;br /&gt;
&lt;br /&gt;
==== increasing RLIMIT_MEMLOCK ====&lt;br /&gt;
&lt;br /&gt;
 Dec 13 11:11:11 HOST pipewire-pulse[99999]: Failed to mlock memory 0x7f4f659d8000 32832: This is not a problem but for best performance, consider increasing RLIMIT_MEMLOCK&lt;br /&gt;
&lt;br /&gt;
{{pkg|realtime-privileges}} をインストールし {{ic|realtime}} グループに自分のユーザーを追加します。&lt;br /&gt;
&lt;br /&gt;
あるいは memlock を 64kB から 128kB に増やすことで、この問題を解決できるようです。[[systemd/ユーザー]] で {{ic|pipewire-pulse}} を実行している場合は {{ic|/etc/security/limits.d/username.conf}} に次の行を追加します:&lt;br /&gt;
&lt;br /&gt;
 username	soft	memlock	64&lt;br /&gt;
 username	hard	memlock	128&lt;br /&gt;
&lt;br /&gt;
==== サンプリングレートを変更する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire のデフォルトでは、グローバルサンプルレートは 48kHz に設定されています。これを変更したい場合(より高い値をサポートする DAC を所有しているなど)、設定ファイル {{ic|/etc/pipewire/pipewire.conf}} の {{ic|1=default.clock.rate = 48000}} 行を編集することで行うことができます。例えば、192kHz にしたい場合は、{{ic|48000}} を {{ic|1=default.clock.rate = 192000}} にコメントを解除して変更します。&lt;br /&gt;
&lt;br /&gt;
PipeWire は、DAC がサポートする出力サンプルレートを変更することもできます。設定するには、{{ic|1=default.clock.allowed-rates = [ 48000 ]}} という行をコメント解除して設定します。例えば、{{ic|[ 44100 48000 88200 96000 ]}} とします。サンプルレートは、カードがアイドルのときに再生されるオーディオストリームのサンプルレートに従います。&lt;br /&gt;
&lt;br /&gt;
どの出力サンプルレートとサンプルフォーマットが DAC に送られたデータであるかを確認するには(おそらく桁を変更する必要があります)。&lt;br /&gt;
 cat /proc/asound/card0/pcm0p/sub0/hw_params&lt;br /&gt;
どの入力サンプルレートを使用しているかを確認するには、{{ic|pcm0p}} を {{ic|pcm0c}} に変更します。({{ic|c}} は &amp;quot;capture&amp;quot; の略、{{ic|p}} は &amp;quot;playback&amp;quot; の略です).&lt;br /&gt;
&lt;br /&gt;
==== 許容されるサンプルレートの変更 ====&lt;br /&gt;
&lt;br /&gt;
PipeWire は、DAC がサポートする出力サンプルレートを動的に変更することもできます。サンプルレートは、再生中のオーディオストリームのサンプルレートに従います。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf (or ~/.config/pipewire/pipewire.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
context.properties = {&lt;br /&gt;
    ...&lt;br /&gt;
    &#039;&#039;&#039;default.clock.allowed-rates = [ &#039;&#039;sample_rate_1&#039;&#039; &#039;&#039;sample_rate_2&#039;&#039; &#039;&#039;sample_rate_3&#039;&#039; ... ]&#039;&#039;&#039;&lt;br /&gt;
    ...&lt;br /&gt;
}}&lt;br /&gt;
たとえば、{{ic|[ 44100 48000 88200 96000 ]}} です。DAC でサポートされている値については、ハードウェアのマニュアルを参照してください。&lt;br /&gt;
&lt;br /&gt;
開発者の [https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1523] によると: &amp;quot;PipeWire は最大16の異なるサンプルレートを許容し、可能な限り切り替えます。&amp;quot; つまり、上記の設定では、&#039;&#039;&#039;再サンプリングは行われない&#039;&#039;&#039;ということです。&lt;br /&gt;
&lt;br /&gt;
DAC に送信されるデータがどの出力サンプルレートとサンプルフォーマットであるかを確認するには (おそらく桁を変更する必要があります):&lt;br /&gt;
&lt;br /&gt;
 $ cat /proc/asound/card0/pcm0p/sub0/hw_params&lt;br /&gt;
&lt;br /&gt;
どの入力サンプルレートが使用されているかを確認するには、{{ic|pcm0p}} を {{ic|pcm0c}} に変更します ({{ic|c}} は &amp;quot;capture&amp;quot; の略で、{{ic|p}} は &amp;quot;playback&amp;quot; の略です)&lt;br /&gt;
&lt;br /&gt;
==== 音質 (リサンプリング品質) ====&lt;br /&gt;
&lt;br /&gt;
PulseAudio を {{ic|1=resample-method = speex-float-10}} または {{ic|soxr-vhq}} で使用していた場合、コメントを解除して {{ic|1=resample.XXX}} を変更することを検討するとよいかもしれません。{{ic|1=resample.quality = 4}} を {{ic|10}} または最大値 {{ic|15}} に変更することを検討してください。(存在しない場合は {{ic|/usr/share/pipewire/}} からコピーしてください)。PipeWire の再起動を忘れないでください (sudo なし): {{ic|systemctl --user restart pipewire.service pipewire-pulse.socket}} (設定変更を適用させたい場合は、{{ic|pipewire-pulse.socket}}を絶対に忘れないでください)。&lt;br /&gt;
&lt;br /&gt;
{{ic|10}} と {{ic|15}} では、品質の差はほとんどありませんが、CPU 負荷は 2〜3 倍になっています。また、{{ic|4}}, {{ic|10}}, {{ic|15}} のレイテンシーの差はまだ誰も調べていません。Ryzen 2600 で 44100→48000Hz で {{ic|1= resample.quality = 15}} にすると {{ic|pipewire}} や {{ic|pipewire-pulse}} プロセスが 1CPUコア4.0% の負荷となる。&lt;br /&gt;
&lt;br /&gt;
リサンプラーの比較はこちら:https://src.infinitewave.ca/(18KHz以上、120dB以上は注意)。speeex は &#039;&#039;Xiph.org Speex&#039;&#039; と記載されています。&lt;br /&gt;
&lt;br /&gt;
PipeWire は Spa と呼ばれる独自のリサンプリングアルゴリズムを使用しています。SoX の {{ic|sox}}、Speex の {{ic|speexenc}} と同様、PipeWire にはそのスタンドアロン版があります。{{ic|spa-resample}} 使い方は&lt;br /&gt;
 spa-resample -q 15 -f s24 -r 48000 input16bit44100orAnythingElse.wav output24bit48000hz.wav&lt;br /&gt;
&lt;br /&gt;
自分で sink を作れば、他のリサンプラーを使うことも可能でしょう。あるいは、音楽プレーヤーのプラグインを使うこともできます(例えば、Qmmp には SoX プラグインがあります)&lt;br /&gt;
&lt;br /&gt;
==== 外付けサウンドカードが再接続後に有効にならない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.config/pipewire-media-session/default-profile}} にデフォルトプロファイル &#039;&#039;off&#039;&#039; のエントリがあれば削除します。それでも解決しない場合は {{ic|~/.config/pipewire-media-session/}} からすべてのファイルを削除し、{{ic|systemctl --user restart pipewire.service}} で PipeWire を再起動します。&lt;br /&gt;
&lt;br /&gt;
==== 音が出ないまたは pactl info が Failure: Connection refused と表示する ====&lt;br /&gt;
&lt;br /&gt;
これはアプリケーションが PipeWire-Pulse サービスに接続できていないことを意味します。{{ic|/etc/pipewire/pipewire-pulse.conf}} が存在し空でないことを確認し、{{ic|systemctl --user restart pipewire-pulse.service}} で PipeWire-Pulse を再起動してください。&lt;br /&gt;
&lt;br /&gt;
それでも解決しない場合は {{ic|strace -f -o /tmp/pipe.txt pactl info}} を実行し、pastebin に {{ic|/tmp/pipe.txt}} を貼り付けて、IRC (OFTC の [ircs://irc.oftc.net/pipewire #pipewire]) かメーリングリストで相談してください。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth の音声の品質が低い====&lt;br /&gt;
&lt;br /&gt;
Bluetooth で再生が途切れる場合は {{ic|systemctl --user status pipewire.service}} を実行してみてください。次のようなエラーが表示される場合は、&lt;br /&gt;
&lt;br /&gt;
 Feb 17 18:23:01 HOST pipewire[249297]: (bluez_input.18:54:CF:04:00:56.a2dp-sink-60) client too slow! rate:512/48000 pos:370688 status:triggered&lt;br /&gt;
&lt;br /&gt;
{{ic|pactl list sinks}} で現在選択されているコーデックを確認し、{{ic|/etc/pipewire/media-session.d/bluez-monitor.conf}} の {{ic|bluez5.codecs}} を {{ic|sbc aac ldac aptx aptx_hd}} のいずれかに変更してみてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
properties = {&lt;br /&gt;
  ...&lt;br /&gt;
  bluez5.codecs = [sbc]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
mSBC サポートの有効化を試すには (Sony 1000XM3 のマイクの問題を修正します):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
  ...&lt;br /&gt;
  actions = {&lt;br /&gt;
    ...&lt;br /&gt;
    update-props = {&lt;br /&gt;
     ...&lt;br /&gt;
     bluez5.msbc-support = true&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するには {{ic|systemctl --user restart pipewire.service}} で PipeWire を再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== 再生開始時に明らかな音声の遅延やポップノイズ/音割れが発生する ====&lt;br /&gt;
&lt;br /&gt;
これは、非アクティブ時のノードの一時停止が原因です。&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipiwire-media-session}} を使用: &lt;br /&gt;
&lt;br /&gt;
これを無効にするには、遅延が発生する場所に応じて {{ic|/etc/pipewire/media-session.d/*-monitor.conf}} を編集し、プロパティ {{ic|session.suspend-timeout-seconds}} を 0 に変更します。無効にするか、他の値を試して、何が機能するかを確認します。&lt;br /&gt;
&lt;br /&gt;
または、{{ic|/etc/pipewire/media-session.d/media-session.conf}} の行 {{ic|suspend-node}} をコメントアウトすることもできます。&lt;br /&gt;
&lt;br /&gt;
[[再起動]] して {{ic|pipewire.service}} と {{ic|pipewire-pulse.service}} の両方の変更を適用して下さい。&lt;br /&gt;
&lt;br /&gt;
{{pkg|wireplumber}} で、新しいファイルを作成してデフォルト設定を上書きします:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/main.lua.d/51-disable-suspension.lua&lt;br /&gt;
(or /etc/wireplumber/main.lua.d/51-disable-suspension.lua)|2=&lt;br /&gt;
table.insert (alsa_monitor.rules, {&lt;br /&gt;
  matches = {&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sources.&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_input.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sinks.&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_output.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
  },&lt;br /&gt;
  apply_properties = {&lt;br /&gt;
    [&amp;quot;session.suspend-timeout-seconds&amp;quot;] = 0,  -- 0 disables suspend&lt;br /&gt;
  },&lt;br /&gt;
})&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Bluetooth デバイスの場合は、次の設定も使用します (ファイルの場所が異なることに注意してください):&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/bluetooth.lua.d/51-disable-suspension.lua&lt;br /&gt;
(or /etc/wireplumber/bluetooth.lua.d/51-disable-suspension.lua)|2=&lt;br /&gt;
-- Note: bluez_monitor, not alsa_monitor&lt;br /&gt;
table.insert (bluez_monitor.rules, {&lt;br /&gt;
  matches = {&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sources.&lt;br /&gt;
      -- Note: bluez_input, not alsa_input&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;bluez_input.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sinks.&lt;br /&gt;
      -- Note: bluez_output, not alsa_output&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;bluez_output.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
  },&lt;br /&gt;
  apply_properties = {&lt;br /&gt;
    [&amp;quot;session.suspend-timeout-seconds&amp;quot;] = 0,  -- 0 disables suspend&lt;br /&gt;
  },&lt;br /&gt;
})&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|pipewire.service}} と {{ic|wireplumber.service}} を再起動して、変更を適用します。&lt;br /&gt;
&lt;br /&gt;
サスペンドを完全に無効にする代わりに、タイムアウト値を、ソースがサスペンドされるまでに必要な遅延秒数に変更することもできます。&lt;br /&gt;
&lt;br /&gt;
==== 複数のストリームの再生が開始されると音声が途切れる ====&lt;br /&gt;
&lt;br /&gt;
この問題は通常、{{ic|pipewire-pulse.service}} [[systemd/ユーザー|ユーザーユニット]] の [[journal]] を読み取り、次のような行を見つけることで診断できます。&lt;br /&gt;
&lt;br /&gt;
 pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#underrununderflow-and-broken-pipe-errors 公式 PipeWire トラブルシューティングガイド] によると、{{pkg|pipewire-media-session}} のこの問題を解決するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf (or ~/.config/pipewire/media-session.d/alsa-monitor.conf|2=&lt;br /&gt;
api.alsa.headroom = 1024&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|wireplumber}} を使用する場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/50-alsa-config.lua (or ~/.config/wireplumber/main.lua.d/50-alsa-config.lua)|2=&lt;br /&gt;
apply_properties = {&lt;br /&gt;
    [&amp;quot;api.alsa.headroom&amp;quot;] = 1024,&lt;br /&gt;
},&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
カーネルページのロックやスケジューリングの遅延が原因で音声の途切れが発生する場合は、[[ゲーム#カーネルパラメータを調整して応答時間を安定化させる|カーネルパラメータを調整して応答時間を安定化させる]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 音がひずむ ====&lt;br /&gt;
* マイクについては、{{ic|alsamixer}} を起動し、問題があるサウンドカードを選択し、{{ic|Mic Boost}} や {{ic|Internal Mic Boost}} の値を下げてみてください。&lt;br /&gt;
* {{ic|/etc/pipewire/pipewire.conf}} の {{ic|1=default.clock.rate = 48000}} のコメントを外して、値を {{ic|44100}} に下げてみてください。&lt;br /&gt;
&lt;br /&gt;
==== スタンバイ後に音声の問題が発生する ====&lt;br /&gt;
&lt;br /&gt;
スリープから復帰した際に音が消えたり壊れたりする場合は、ALSA を最初期化すると改善するかもしれません:&lt;br /&gt;
&lt;br /&gt;
 # alsactl init&lt;br /&gt;
&lt;br /&gt;
==== USB DAC(例:Schiit 社製 DAC)で高レイテンシー ====&lt;br /&gt;
&lt;br /&gt;
サンプルレートやフォーマットを変更することで、Schiit Hel 2 などの一部の DAC でレイテンシーを減らすことができるかもしれません [https://www.reddit.com/r/osugame/comments/msifdd/usb_dacamp_and_audio_lag/] &#039;&#039;pipewire-media-session&#039;&#039; のマッチングルールを使用すると、デバイスのプロパティを設定することができます [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-pipewire-media-session#matching-rules] &lt;br /&gt;
&#039;&#039;pipewire-media-session&#039;&#039; の {{ic|alsa-monitor.conf}}  のデフォルト設定を {{ic|/etc/pipewire/media-session.d}} か {{ic|~/.config/pipewire/media-session.d}} にコピーしてください。&lt;br /&gt;
そして、以下のような新しいルールブロックを追加してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf&lt;br /&gt;
~/.config/pipewire/media-session.d/alsa-monitor.conf|output=&lt;br /&gt;
rules = {&lt;br /&gt;
    ...&lt;br /&gt;
    {&lt;br /&gt;
        matches = [&lt;br /&gt;
            {&lt;br /&gt;
                node.name = &amp;quot;alsa_output.&amp;lt;name of node&amp;gt;&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                audio.format = &amp;quot;S24_3LE&amp;quot;&lt;br /&gt;
                audio.rate = 96000&lt;br /&gt;
                # Following value should be doubled until audio doesn&#039;t cut out or other issues stop occurring&lt;br /&gt;
                api.alsa.period-size = 128&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|alsa_output.&amp;lt;node name&amp;gt;}} ノードは {{ic|pw-top}} で取得することができます。&lt;br /&gt;
&lt;br /&gt;
DAC は異なるフォーマットやサンプルレートをサポートしているかもしれません。[[ALSA]] に問い合わせることで、あなたの  DAC が何をサポートしているかを確認することができます。&lt;br /&gt;
&lt;br /&gt;
まず、DAC のカード番号を取得します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ aplay -l|&lt;br /&gt;
...&lt;br /&gt;
card 3: S2 [Schiit Hel 2], device 0: USB Audio [USB Audio]&lt;br /&gt;
  Subdevices: 0/1&lt;br /&gt;
  Subdevice #0: subdevice #0&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
つまり、この例ではカード3ということになります。&lt;br /&gt;
サポートされているすべてのサンプルレートとフォーマットを取得します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /proc/asound/cardX/streamX|&lt;br /&gt;
...&lt;br /&gt;
Playback:&lt;br /&gt;
  ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 1&lt;br /&gt;
    Format: S16_LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 16&lt;br /&gt;
    ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 2&lt;br /&gt;
    Format: S24_3LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 24&lt;br /&gt;
    ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 3&lt;br /&gt;
    Format: S32_LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 32&lt;br /&gt;
    ...&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この場合、{{ic|S16_LE, S24_3LE, S32_LE}} はサポートされているフォーマットで、{{ic|44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000}} はすべてのフォーマットでサポートされているサンプルレートとなります。&lt;br /&gt;
&lt;br /&gt;
==== 音量が 30% になるまで USB DAC から音が出ない ====&lt;br /&gt;
&lt;br /&gt;
USB DAC の中には、ある一定の音量に達するまで音が出なくなるものがあります [https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1117] 一般的にこれは約 25%〜30% で、最初の音量が不快なほど大きくなり、低い音量を維持することができなくなります。解決策としては、{{ic|[&amp;quot;api.alsa.soft-mixer&amp;quot;]}} を {{ic|true}} に設定して、ハードウェアミキサーの音量コントロールを無視することが挙げられます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|wireplumber}} でこれを実現するには、{{ic|/usr/share/wireplumber/main.lua.d/50-alsa-config.lua}} 設定に次を使用して構成フラグメントを追加します。 {{ic|table.insert}}:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/main.lua.d/51-volume-fix.lua|output=&lt;br /&gt;
&lt;br /&gt;
table.insert (alsa_monitor.rules, {&lt;br /&gt;
    matches = {&lt;br /&gt;
      {&lt;br /&gt;
        -- This matches all cards.&lt;br /&gt;
        { &amp;quot;device.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_card.*&amp;quot; },&lt;br /&gt;
      },&lt;br /&gt;
    },&lt;br /&gt;
    -- Apply properties on the matched object.&lt;br /&gt;
    apply_properties = {&lt;br /&gt;
      -- Don&#039;t use the hardware mixer for volume control. It&lt;br /&gt;
      -- will only use software volume. The mixer is still used&lt;br /&gt;
      -- to mute unused paths based on the selected port.&lt;br /&gt;
      [&amp;quot;api.alsa.soft-mixer&amp;quot;] = true,&lt;br /&gt;
    }&lt;br /&gt;
  })&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、pipewire を再起動します。{{ic|alsamixer}} でマスターボリュームを設定し、{{ic|# alsactl store}} で設定を保存します。これで、ボリュームミキサーを通常どおり使用できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== リアルタイムオーディオが動作しない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|RTKit error: org.freedesktop.DBus.Error.AccessDenied}} が {{ic|systemctl --user status pipewire.service}} の出力に表示された場合、pipewire daemon の優先度がリアルタイムに変更されていないことを示します。この問題については、[https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1069] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 同じサウンドカード上の複数のシンクへの同時出力 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/share/alsa-card-profile/mixer/profile-sets/default.conf}} のコピーを作成し、アップデート後も変更が持続するようにします。ここでは、アナログと HDMI の2つのデフォルトマッピングを結合したプロファイルを定義しています。&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/alsa-card-profile/mixer/profile-sets/multiple.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
auto-profiles = no&lt;br /&gt;
&lt;br /&gt;
[Mapping analog-stereo]&lt;br /&gt;
device-strings = front:%f&lt;br /&gt;
channel-map = left,right&lt;br /&gt;
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2&lt;br /&gt;
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic&lt;br /&gt;
priority = 15&lt;br /&gt;
&lt;br /&gt;
[Mapping hdmi-stereo]&lt;br /&gt;
description = Digital Stereo (HDMI)&lt;br /&gt;
device-strings = hdmi:%f&lt;br /&gt;
paths-output = hdmi-output-0&lt;br /&gt;
channel-map = left,right&lt;br /&gt;
priority = 9&lt;br /&gt;
direction = output&lt;br /&gt;
&lt;br /&gt;
[Profile multiple]&lt;br /&gt;
description = Analog Stereo Duplex + Digital Stereo (HDMI) Output&lt;br /&gt;
output-mappings = analog-stereo hdmi-stereo&lt;br /&gt;
input-mappings = analog-stereo&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ここで、PipeWire の media-session に、新しい card-profile を使用してデバイスをマッチングするように設定します。識別情報は、{{ic|$ pw-cli dump device}} で見つけることができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf|2=&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        matches = [ { alsa.card_name = &amp;quot;HDA Intel PCH&amp;quot; } ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                api.alsa.use-acp = true&lt;br /&gt;
                device.profile-set = &amp;quot;multiple.conf&amp;quot;&lt;br /&gt;
                device.profile = &amp;quot;multiple&amp;quot;&lt;br /&gt;
                api.acp.auto-profile = false&lt;br /&gt;
                api.acp.auto-port = false&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Discord から通知音が鳴らない ====&lt;br /&gt;
&lt;br /&gt;
min.quantum が低すぎることが原因かもしれませんので、700以上に設定してみてください。pipewire-pulse.conf の pulse.rules セクションに以下のルールを追加することで、Discord 専用にオーバーライドすることが可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire-pulse.conf (or ~/.config/pipewire/pipewire-pulse.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
pulse.rules = [&lt;br /&gt;
  ...&lt;br /&gt;
    {&lt;br /&gt;
        # Discord notification sounds fix&lt;br /&gt;
        matches = [ { application.process.binary = &amp;quot;Discord&amp;quot; } ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                pulse.min.quantum      = 1024/48000     # 21ms&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== PipeWire で FMOD ゲームがクラッシュする ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Pillars_of_Eternity|Pillars of Eternity]] のような古いバージョンの [[Wikipedia:FMOD|FMOD オーディオエンジン]] を使っているゲームの中には、PulseAudio バイナリが存在しないと {{ic|pulseaudio --check}} を呼び出してクラッシュするものがあります。回避策としては、{{ic|/bin/pulseaudio}}を{{ic|/bin/true}}にシンボリックリンクすることです[https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1514]&lt;br /&gt;
&lt;br /&gt;
 # ln -s /bin/true /bin/pulseaudio&lt;br /&gt;
&lt;br /&gt;
PulseAudio を再インストールする場合は、シンボリックリンクを削除する必要があることに注意してください。&lt;br /&gt;
&lt;br /&gt;
==== 自動切り替えが機能しない ====&lt;br /&gt;
&lt;br /&gt;
自動切り替えが機能しない場合、[[WirePlumber]] の状態に問題がある可能性があります。[https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/191#note_1252549 this comment] が提案しているように、[[WirePlumber]] のローカル状態を削除し、デーモンを再起動することで改善されるかどうか確認することができます。&lt;br /&gt;
&lt;br /&gt;
 $ rm -r ~/.local/state/wireplumber/&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|wireplumber.service}} [[systemd/ユーザー|ユーザーユニット]] を [[ヘルプ:読み方# systemd ユニットのコントロール|再起動]] します。&lt;br /&gt;
&lt;br /&gt;
==== リアルタイムプライオリティの欠落/サスペンド後の負荷によるクラックリング ====&lt;br /&gt;
&lt;br /&gt;
rtkit の [https://github.com/heftig/rtkit/issues/13 2011年] からのバグにより、サスペンドイベントが発生すると PipeWire のリアルタイム優先度が取り消され、元に戻らなくなります。この原因となる保護を無効にするには、{{ic|rtkit-daemon.service}} を [[編集]] してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/rtkit-daemon.service.d/override.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/lib/rtkit-daemon --no-canary&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、メディアセッションサービスとともに、{{ic|rtkit-daemon.service}} ユニットと {{ic|pipewire.service}} ユーザー ユニットを再起動します。&lt;br /&gt;
&lt;br /&gt;
==== RAOP デバイス (Sonos など) へのストリーミング中に音が出ない ====&lt;br /&gt;
&lt;br /&gt;
[[Avahi]] または [[systemd-resolved]] を使用して mDNS ホスト名解決を設定します。&lt;br /&gt;
&lt;br /&gt;
==== KDE Plasma でサウンドデバイスが表示されない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire クライアント (デスクトップ環境を含む) は、[https://specations.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables XDG_RUNTIME_DIR] [[環境変数]] に依存して PipeWire デーモンに接続する場合があります。[https://docs.pipewire.org/page_daemon.html] ログイン直後にサウンドデバイスが表示されない場合は、この変数が手動で間違ったパスに設定されている可能性があります。&lt;br /&gt;
&lt;br /&gt;
これは PipeWire を手動で再起動することで解決できますが、Chromium で画面共有できない ({{ic|pipewire context failed}} により) など、他の問題が依然として発生する可能性があります。{{ic|XDG_RUNTIME_DIR}} は {{man|8|pam_systemd}} によって自動的に設定されるため、初期化ファイルに設定されているインスタンスをすべて削除する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== SDDM ユーザーのデバイス音量がログイン時に復元されない ====&lt;br /&gt;
&lt;br /&gt;
SDDM を使用していて、ログイン後にオーディオの音量レベルが正しく復元されない場合は、SDDM に対して Pipewire をマスクしてください。SDDM で実行される Wireplumber が、ユーザーの Wireplumber セッションに干渉する可能性があります。&lt;br /&gt;
&lt;br /&gt;
 systemctl --user -M sddm@ mask pipewire.socket&lt;br /&gt;
&lt;br /&gt;
詳細については、[https://wiki.debian.org/PipeWire#Device_volume_for_SDDM_users_is_not_restored_on_login Debian Wiki] の記事 を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ターミナルベルが動作しない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire の観点からは、module x11.bell がロードされている必要があります。これはデフォルトの設定です(上記の設定ファイルも参照){{Pkg|pipewire-x11-bell}} パッケージがインストールされているか確認してください。&lt;br /&gt;
&lt;br /&gt;
また、ウィンドウマネージャーがターミナルベルに影響を与えることがあります。例えば、xfwm を使用している場合は、xfwm-terminal の設定で &amp;quot;聴ベル(Audible bell)&amp;quot; が有効になっているか確認してください。&lt;br /&gt;
&lt;br /&gt;
次に、PipeWire サービスを再起動します:&lt;br /&gt;
&lt;br /&gt;
 systemctl --user restart pipewire&lt;br /&gt;
&lt;br /&gt;
ターミナルベルが動作するか試すには、以下のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 echo $&#039;\a&#039;&lt;br /&gt;
&lt;br /&gt;
==== 最初の再生試行まで音が出ない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire がソケットアクティベーションによって起動される設定になっている場合、一部の PipeWire ネイティブアプリケーションにおいて、[[WirePlumber]] がノードを構成する前にオーディオの再生を試みてしまい、結果としてエラーが発生することがあります。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ mpv -v &#039;&#039;/path/to/file&#039;&#039;|&lt;br /&gt;
[ao/pipewire] PipeWire does not have any audio sinks, skipping&lt;br /&gt;
[ao] Failed to initialize audio driver &#039;pipewire&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ journalctl --user -u mpd.service|&lt;br /&gt;
output: Failed to play on &amp;quot;PipeWire&amp;quot; (pipewire): no target node available&lt;br /&gt;
exception: Failed to open audio output&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
回避策として、{{ic|pipewire.service}} の[[ユーザーユニット]]を[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
=== ビデオ ===&lt;br /&gt;
&lt;br /&gt;
==== OBS(など)がウィンドウ/スクリーンを要求しても何も表示されない ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xdg-desktop-portal}} と {{Pkg|xdg-desktop-portal-gtk}} または {{Pkg|xdg-desktop-portal-kde}} がインストールされていることが確実なら、デーモンの実行状態を確認してください。&lt;br /&gt;
&lt;br /&gt;
OBS では、すべてがうまくいっていれば、{{ic|stdout}} にこのように表示されるはずです。&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 info: [pipewire] desktop selected, setting up screencast&lt;br /&gt;
 info: [pipewire] created stream 0x5632d7456850&lt;br /&gt;
 info: [pipewire] playing stream...&lt;br /&gt;
&lt;br /&gt;
マルチモニタ環境では、{{Pkg|slurp}} パッケージを使用すると、すべての画面をキャプチャすることができます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home Wiki] — PipeWire Wiki on Freedesktop GitLab&lt;br /&gt;
* [https://blogs.gnome.org/uraeus/2018/01/26/an-update-on-pipewire-the-multimedia-revolution-an-update/ Pipewire Update Blog Post] — PipeWire の2018年1月時点での進捗が書かれた記事&lt;br /&gt;
* [https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ PipeWire Late Summer Update 2020] — 2020年9月からの記事&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Kanshi&amp;diff=41350</id>
		<title>Kanshi</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Kanshi&amp;diff=41350"/>
		<updated>2026-02-20T05:51:17Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 翻訳&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wayland]]&lt;br /&gt;
[[en:Kanshi]]&lt;br /&gt;
[[zh-hans:Kanshi]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Sway}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.freedesktop.org/emersion/kanshi kanshi] を使用すると、ホットプラグに応じて自動的に有効・無効が切り替わる出力プロファイルを定義できます。例えば、ノートパソコンをドックに接続した際に内蔵スクリーンをオフにする、といった設定が可能です。&lt;br /&gt;
&lt;br /&gt;
これは、[https://github.com/phillipberndt/autorandr autorandr] などのツールのWayland版に相当します。kanshiは、wlr-output-management プロトコルをサポートしている Wayland コンポジタで使用できます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|kanshi}} パッケージ、または {{AUR|kanshi-git}} を[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本設定 ===&lt;br /&gt;
&lt;br /&gt;
kanshiの設定ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
profile {&lt;br /&gt;
output LVDS-1 disable&lt;br /&gt;
output &amp;quot;Some Company ASDF 4242&amp;quot; mode 1600x900 position 0,0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
profile {&lt;br /&gt;
output LVDS-1 enable scale 2&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
各出力プロファイルはブラケット(波括弧)で区切られます。その中には複数の出力ディレクティブが含まれます(構文は {{man|5|sway-output}} と同様です) リストされているすべての出力が接続されている場合に、そのプロファイルが有効になります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|出力名や詳細情報のリストを取得するには、{{ic|wlr-randr}} や {{ic|swaymsg -t get_outputs}} などのコマンドを使用するか、GUIアプリケーションである {{AUR|wdisplays-git}} または {{AUR|wdisplays-persistent}} を使用してください。これらは、kanshiの設定ファイルに直接書き込むことも可能です。}}&lt;br /&gt;
&lt;br /&gt;
=== 応用設定 ===&lt;br /&gt;
&lt;br /&gt;
複数のセットアップ (例:ノート PC 本体のみ、自宅でモニター1台に接続、職場でモニター2台に接続、など) を簡単に管理するために、プロファイル内で使用する出力のデフォルト値を定義し、エイリアスを割り当てることができます。デフォルト値は、その出力が言及されているすべてのプロファイルに適用されます。詳細は {{man|5|kanshi}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
output &amp;quot;Dell Inc. DELL S2721DGF G52TR83&amp;quot; {&lt;br /&gt;
mode 2560x1440@165.08&lt;br /&gt;
position 1280,0&lt;br /&gt;
scale 2&lt;br /&gt;
alias $HOME_1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
output &amp;quot;LG Display 0x058B Unknown&amp;quot; {&lt;br /&gt;
mode 2560x1440@59.99800&lt;br /&gt;
position 0,0&lt;br /&gt;
scale 2&lt;br /&gt;
alias $INTERNAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
profile home_1 {&lt;br /&gt;
output $INTERNAL disable&lt;br /&gt;
output $HOME_1 enable&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらの値は、[https://wiki.hyprland.org/Configuring/Using-hyprctl/ hyprctl monitors] のようなコマンドで確認できます。実行すると、以下のように出力されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=hyprctl monitors|2=&lt;br /&gt;
make: LG Display&lt;br /&gt;
model: 0x058B&lt;br /&gt;
serial:&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
また、exec ディレクティブを使用することで、プロファイルが正常に適用された後にコマンドを実行し、ワークフローとさらに統合させることも可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
profile home_1 {&lt;br /&gt;
output $INTERNAL disable&lt;br /&gt;
output $HOME_1 enable&lt;br /&gt;
exec uwsm app -- $HOME/.config/hypr/scripts/move-workspaces.sh &amp;quot;LG Display 0x058B&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;
 $ kanshi&lt;br /&gt;
&lt;br /&gt;
自動的に実行する方法については、[[#systemd で kanshi を管理する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== systemd で kanshi を管理する ===&lt;br /&gt;
&lt;br /&gt;
[[Sway#systemd で sway 固有のデーモンを管理する]] の手順に従って、{{ic|~/.config/systemd/user/sway-session.target}} を作成し、起動してください (未作成の場合)&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|kanshi.service}} ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/systemd/user/kanshi.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Dynamic output configuration for Wayland compositors&lt;br /&gt;
Documentation=man:kanshi(1)&lt;br /&gt;
BindsTo=sway-session.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/kanshi&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sway-session.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この[[ユーザーユニット]]を[[有効化]]してください。これにより、Sway の実行中にのみ有効になり、Sway が停止すると無効になります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== スリープ復帰後、外部モニターのワークスペース番号が2から始まる ===&lt;br /&gt;
&lt;br /&gt;
[[#設定|上記]]のような設定をしている場合、2番目のディスプレイを接続した際、最初のディスプレイが無効化されているため、2番目のディスプレイのワークスペースは「1」から始まるはずです。初回接続時やシステム起動直後はその通りになりますが、スリープ復帰後にこの番号が「2」になってしまうことがあります。この場合は、kanshi の設定ファイルにディレクティブを追加して、最初のワークスペースをそのモニターに移動させるようにしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
profile {&lt;br /&gt;
output LVDS-1 disable&lt;br /&gt;
output &amp;quot;Some Company ASDF 4242&amp;quot; mode 1600x900 position 0,0&lt;br /&gt;
# 以下のディレクティブを追加します(出力名は適宜書き換えてください):&lt;br /&gt;
exec swaymsg workspace 1, move workspace to HDMI-A-1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
profile {&lt;br /&gt;
output LVDS-1 enable scale 2&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.freedesktop.org/emersion/kanshi ソースコードとドキュメント]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Niri&amp;diff=41346</id>
		<title>Niri</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Niri&amp;diff=41346"/>
		<updated>2026-02-17T07:23:42Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 微修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wayland コンポジタ]]&lt;br /&gt;
[[en:Niri]]&lt;br /&gt;
[https://github.com/niri-wm/niri Niri] は、スクロール可能なタイリング型 [[Wayland]] コンポジタです。[[Sway]] や [[Hyprland]] とは異なり、Niri はウィンドウを無限に広がる水平なデスクトップ上に配置し、左右にスクロールして操作します(より高度なレイアウトも可能です) [[GNOME]] の PaperWM や [[KDE]] の Karousel に近い操作感を提供します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Niri は {{pkg|niri}} パッケージで[[インストール]]できます。また、より快適な環境を構築するために、以下のパッケージのインストールが推奨されます:&lt;br /&gt;
&lt;br /&gt;
* {{pkg|fuzzel}}: Niri のデフォルトアプリケーションランチャー&lt;br /&gt;
* {{pkg|mako}}: 通知サーバー&lt;br /&gt;
* [[waybar]]: Wayland 用ステータスバー&lt;br /&gt;
* {{pkg|xdg-desktop-portal-gtk}}, {{pkg|xdg-desktop-portal-gnome}}: スクリーン共有を可能にするため&lt;br /&gt;
* [[alacritty]]: Niri のデフォルトターミナル&lt;br /&gt;
* {{pkg|swaybg}}: 壁紙の設定&lt;br /&gt;
* {{pkg|swayidle}}, {{pkg|swaylock}}: アイドル時の画面ロック&lt;br /&gt;
* {{pkg|xwayland-satellite}}: X11 アプリケーションの実行用&lt;br /&gt;
* {{pkg|udiskie}}: USB ドライブの管理と自動マウント&lt;br /&gt;
&lt;br /&gt;
== 起動 ==&lt;br /&gt;
&lt;br /&gt;
Niri には [[デスクトップエントリ]] が含まれており、[[ディスプレイマネージャ]] から選択可能です。これを選択すると {{ic|niri-session}} が実行され、[[systemd]] への [[環境変数]] のエクスポートが適切に行われます。&lt;br /&gt;
&lt;br /&gt;
また、[[getty]] (コンソール) から直接起動する場合は、以下のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 niri-session -l&lt;br /&gt;
&lt;br /&gt;
これは [[Getty#Automatic login to virtual console|自動ログイン]] と組み合わせることで、シームレスな [[ブート]] 体験を実現できます。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
Niri は {{ic|~/.config/niri/config.kdl}} から設定を読み込みます。ファイル形式は KDL で、セクションごとに分かれています。初回実行時に生成されるデフォルト設定ファイルには、各オプションの説明がコメントとして記載されています。ただし、アップデートで追加された新機能については記載されないため、[https://niri-wm.github.io/niri/Configuration:-Introduction.html Niri 公式ドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
設定ファイルを保存すると、Niri は自動的に設定を適用します。設定内容が不正であっても Niri はクラッシュせず、最後に動作していた状態が維持され、エラーがユーザーに通知されます。セッション外で設定を検証するには {{ic|niri validate}} を使用します。&lt;br /&gt;
&lt;br /&gt;
== キーマップ ==&lt;br /&gt;
&lt;br /&gt;
キーマップを設定するには、{{ic|input/keyboard/xkb}} セクションを編集します。&lt;br /&gt;
&lt;br /&gt;
例えば、&amp;quot;US Int Alt Gr&amp;quot; レイアウトを使用し、{{ic|CapsLock}} を {{ic|Ctrl}} として機能させる場合は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
input {&lt;br /&gt;
keyboard {&lt;br /&gt;
xkb {&lt;br /&gt;
layout &amp;quot;us&amp;quot;&lt;br /&gt;
variant &amp;quot;altgr-intl&amp;quot;&lt;br /&gt;
options &amp;quot;ctrl:nocaps&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;
まず {{ic|niri msg outputs}} を実行して、Niri が認識している出力を確認します。その後、各モニターに設定を適用できます。例として、HDMI モニターを 2560x1440 60Hz、スケーリング 1.2 に設定し、ノート PC の内蔵モニターをオフにする設定は以下の通りです:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
output &amp;quot;HDMI-A-1&amp;quot; {&lt;br /&gt;
mode &amp;quot;2560x1440@60.000&amp;quot;&lt;br /&gt;
scale 1.2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
output &amp;quot;eDP-1&amp;quot; {&lt;br /&gt;
off&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ドッキングステーションへの接続時などに動的なレイアウト変更を行いたい場合は、[[kanshi]] を併用することも検討してください。}}&lt;br /&gt;
&lt;br /&gt;
=== キーバインド ===&lt;br /&gt;
&lt;br /&gt;
binds セクションでは、Niri を操作するキーの組み合わせを設定します。初回起動時に生成される設定には多くのバインドが含まれており、これらはすべて変更可能です。&lt;br /&gt;
&lt;br /&gt;
注意点として、Niri はデフォルトのキーバインドを自動的にロードしません。設定ファイルに記述がないバインドは機能しません。そのため、不要なバインドを削除する際は、削除ではなくコメントアウトに留めることが推奨されます。&lt;br /&gt;
&lt;br /&gt;
バインドは、修飾キーに {{ic|+}} を繋げ、アクションを括弧内に記述します。spawn アクションはプログラムを起動します。以下の例では、{{ic|Mod+T}} で [[alacritty]] を、{{ic|Mod+D}} で {{pkg|fuzzel}} を起動します。{{ic|Mod}} は通常、単独実行時は {{ic|Super}} キー、他のコンポジット内での実行時は {{ic|Alt}} キーになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+T { spawn &amp;quot;alacritty&amp;quot;; }&lt;br /&gt;
Mod+D { spawn &amp;quot;fuzzel&amp;quot;; }&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|spawn}} に渡す引数にスペースが含まれる場合は、個別に引用符で囲む必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+Ctrl+semicolon {&lt;br /&gt;
spawn &amp;quot;swaylock&amp;quot; &amp;quot;-c&amp;quot; &amp;quot;121212&amp;quot; &amp;quot;-e&amp;quot; &amp;quot;-f&amp;quot; &amp;quot;-F&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== WASD 風のナビゲーション ====&lt;br /&gt;
&lt;br /&gt;
ゲームのような WASD キーによるウィンドウ移動を設定することも可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+A { focus-column-left; }&lt;br /&gt;
Mod+S { focus-window-or-workspace-down; }&lt;br /&gt;
Mod+W { focus-window-or-workspace-up; }&lt;br /&gt;
Mod+D { focus-column-right; }&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;
Niri の起動時に特定のプログラムを同時に開始できます。&lt;br /&gt;
前述した {{Pkg|mako}}、{{Pkg|waybar}}、{{Pkg|swayidle}}/{{Pkg|swaylock}} などの設定例は以下の通りです:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
spawn-at-startup &amp;quot;mako&amp;quot;&lt;br /&gt;
spawn-at-startup &amp;quot;waybar&amp;quot;&lt;br /&gt;
spawn-at-startup &amp;quot;swayidle&amp;quot; &amp;quot;-w&amp;quot; &amp;quot;timeout&amp;quot; &amp;quot;601&amp;quot; &amp;quot;niri msg action power-off-monitors&amp;quot; &amp;quot;timeout&amp;quot; &amp;quot;600&amp;quot; &amp;quot;swaylock -f&amp;quot; &amp;quot;before-sleep&amp;quot; &amp;quot;swaylock -f&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらのプロセスは Niri セッションに紐付けられており、Niri が終了または中断されると終了します。プロセスをバックグラウンドで永続させたい場合は、引数に {{ic|&amp;quot;&amp;amp;&amp;quot;}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== XWayland ===&lt;br /&gt;
&lt;br /&gt;
Niri は X11 アプリケーションを実行するための XWayland を標準ではサポートしていません。その代わり、外部ツールの使用を推奨しています。オプションの依存関係にある {{Pkg|xwayland-satellite}} をインストールすれば、特別な設定なしで使用可能です。&lt;br /&gt;
&lt;br /&gt;
=== マルチ GPU 設定 ===&lt;br /&gt;
&lt;br /&gt;
内蔵グラフィックスと専用 GPU (dGPU) の両方を搭載した環境では、Niri がデフォルトで dGPU を使用してしまい、バッテリーを浪費する場合があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|NVIDIA カードを使用している場合は、GPU を低電力状態にする方法やアプリごとの起動設定について [[PRIME]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
Niri が使用する GPU を指定するには、まずシステムで利用可能なレンダリングデバイスを確認します:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ ls -l /dev/dri/by-path/*-render|&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Jan 10 13:02 /dev/dri/by-path/pci-0000:c1:00.0-render -&amp;gt; ../renderD129&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Jan 10 13:02 /dev/dri/by-path/pci-0000:c2:00.0-render -&amp;gt; ../renderD128&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、PCI アドレスを使って各デバイスがどのカードかを確認します:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ lspci -s c1:00.0|&lt;br /&gt;
c1:00.0 VGA compatible controller: NVIDIA Corporation GB206M [GeForce RTX 5070 Max-Q / Mobile] (rev a1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
使用したいデバイスを特定したら、Niri の設定ファイルに追記します:&lt;br /&gt;
{{hc|&lt;br /&gt;
~/.config/niri/config.kdl|&lt;br /&gt;
debug {&lt;br /&gt;
    render-drm-device &amp;quot;/dev/dri/renderD128&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動後、以下のコマンドで GPU が正しく低電力状態 (D3cold など) になっているか確認できます:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ cat /sys/class/drm/card*/device/power_state|&lt;br /&gt;
D3cold&lt;br /&gt;
D0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
[https://niri-wm.github.io/niri/ Niri 公式 Wiki]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Kanshi&amp;diff=41345</id>
		<title>Kanshi</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Kanshi&amp;diff=41345"/>
		<updated>2026-02-17T07:22:03Z</updated>

		<summary type="html">&lt;p&gt;Kgx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wayland]]&lt;br /&gt;
[[en:Kanshi]]&lt;br /&gt;
[[zh-hans:Kanshi]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Sway}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.freedesktop.org/emersion/kanshi kanshi] allows you to define output profiles that are automatically enabled and disabled on hotplug. For instance, this can be used to turn a laptop&#039;s internal screen off when docked.&lt;br /&gt;
&lt;br /&gt;
This is a Wayland equivalent for tools like [https://github.com/phillipberndt/autorandr autorandr]. kanshi can be used on Wayland compositors supporting the wlr-output-management protocol.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
[[Install]] {{Pkg|kanshi}} or {{AUR|kanshi-git}}.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
Create kanshi configuration file:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
profile {&lt;br /&gt;
	output LVDS-1 disable&lt;br /&gt;
	output &amp;quot;Some Company ASDF 4242&amp;quot; mode 1600x900 position 0,0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
profile {&lt;br /&gt;
	output LVDS-1 enable scale 2&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Each output profile is delimited by brackets. It contains several output directives (whose syntax is similar to {{man|5|sway-output}}). A profile will be enabled if all of the listed outputs are connected.&lt;br /&gt;
&lt;br /&gt;
{{Tip|You can get a list of output names and additional information using commands like {{ic|wlr-randr}}, {{ic|swaymsg -t get_outputs}} or use the GUI applications {{AUR|wdisplays-git}} or {{AUR|wdisplays-persistent}} which will write also directly to kanshi&#039;s configuration file.}}&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
&lt;br /&gt;
For easier management of multiple setups &#039;&#039;(e.g. Internal laptop monitor only, Docked to one monitor at home, Docked to two work monitors, ...)&#039;&#039; you can define defaults for the outputs used inside profiles and assign them aliases. The defaults will apply to all profiles where the respective output is mentioned. For more see {{man|5|kanshi}}).&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
output &amp;quot;Dell Inc. DELL S2721DGF G52TR83&amp;quot; {&lt;br /&gt;
  mode 2560x1440@165.08&lt;br /&gt;
  position 1280,0&lt;br /&gt;
  scale 2&lt;br /&gt;
  alias $HOME_1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
output &amp;quot;LG Display 0x058B Unknown&amp;quot; {&lt;br /&gt;
  mode 2560x1440@59.99800&lt;br /&gt;
  position 0,0&lt;br /&gt;
  scale 2&lt;br /&gt;
  alias $INTERNAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
profile home_1 {&lt;br /&gt;
  output $INTERNAL disable&lt;br /&gt;
  output $HOME_1 enable&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
You can find out these values with a command like [https://wiki.hyprland.org/Configuring/Using-hyprctl/ hyprctl monitors] which will display all three of those in its output.&lt;br /&gt;
&lt;br /&gt;
{{hc|1=hyprctl monitors|2=&lt;br /&gt;
make: LG Display&lt;br /&gt;
model: 0x058B&lt;br /&gt;
serial:&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
It is also possible to further integrate kanshi with your workflow by using the &#039;&#039;exec&#039;&#039; directive to execute a command once the profile was successfully applied.&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
profile home_1 {&lt;br /&gt;
  output $INTERNAL disable&lt;br /&gt;
  output $HOME_1 enable&lt;br /&gt;
  exec uwsm app -- $HOME/.config/hypr/scripts/move-workspaces.sh &amp;quot;LG Display 0x058B&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Run the command:&lt;br /&gt;
&lt;br /&gt;
 $ kanshi&lt;br /&gt;
&lt;br /&gt;
See [[#Manage kanshi with systemd]] for an automated usage.&lt;br /&gt;
&lt;br /&gt;
== Tips and tricks ==&lt;br /&gt;
&lt;br /&gt;
=== Manage kanshi with systemd ===&lt;br /&gt;
&lt;br /&gt;
Create and start {{ic|~/.config/systemd/user/sway-session.target}} (if you don&#039;t have created yet) by following [[Sway#Manage Sway-specific daemons with systemd]].&lt;br /&gt;
&lt;br /&gt;
Create the {{ic|kanshi.service}} file:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/systemd/user/kanshi.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Dynamic output configuration for Wayland compositors&lt;br /&gt;
Documentation=man:kanshi(1)&lt;br /&gt;
BindsTo=sway-session.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/kanshi&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sway-session.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Enable]] this [[user unit]]. It is only activated when Sway is running and deactivated when Sway stops.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Workspace number starts from 2 in external monitor after wake up ===&lt;br /&gt;
&lt;br /&gt;
If you have a configuration like [[#Configuration|above]], when you connected a second display to your computer, the workspace in the second display should start from 1 since the first display is disabled. This should be the case when you plugged your monitor in the first time or after starting the system. But after sleep, this number might be 2. In this case just move the first workspace to this monitor by adding a directive to the kanshi configuration file:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
profile {&lt;br /&gt;
	output LVDS-1 disable&lt;br /&gt;
	output &amp;quot;Some Company ASDF 4242&amp;quot; mode 1600x900 position 0,0&lt;br /&gt;
	# We&#039;ve added this directive here (do not forget to update the output name):&lt;br /&gt;
	exec swaymsg workspace 1, move workspace to HDMI-A-1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
profile {&lt;br /&gt;
	output LVDS-1 enable scale 2&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.freedesktop.org/emersion/kanshi Source code and documentation]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Niri&amp;diff=41344</id>
		<title>Niri</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Niri&amp;diff=41344"/>
		<updated>2026-02-17T07:21:12Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 翻訳&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wayland コンポジタ]]&lt;br /&gt;
[[en:Niri]]&lt;br /&gt;
[https://github.com/niri-wm/niri Niri] は、スクロール可能なタイリング型 [[Wayland]] コンポジットです。[[Sway]] や [[Hyprland]] とは異なり、Niri はウィンドウを無限に広がる水平なデスクトップ上に配置し、左右にスクロールして操作します(より高度なレイアウトも可能です)。[[GNOME]] の PaperWM や [[KDE]] の Karousel に近い操作感を提供します。&lt;br /&gt;
インストール&lt;br /&gt;
&lt;br /&gt;
Niri は {{pkg|niri}} パッケージで[[インストール]]できます。また、より快適な環境を構築するために、以下のパッケージのインストールが推奨されます:&lt;br /&gt;
&lt;br /&gt;
* {{pkg|fuzzel}}: Niri のデフォルトアプリケーションランチャー&lt;br /&gt;
* {{pkg|mako}}: 通知サーバー&lt;br /&gt;
* [[waybar]]: Wayland 用ステータスバー&lt;br /&gt;
* {{pkg|xdg-desktop-portal-gtk}}, {{pkg|xdg-desktop-portal-gnome}}: スクリーン共有を可能にするため&lt;br /&gt;
* [[alacritty]]: Niri のデフォルトターミナル&lt;br /&gt;
* {{pkg|swaybg}}: 壁紙の設定&lt;br /&gt;
* {{pkg|swayidle}}, {{pkg|swaylock}}: アイドル時の画面ロック&lt;br /&gt;
* {{pkg|xwayland-satellite}}: X11 アプリケーションの実行用&lt;br /&gt;
* {{pkg|udiskie}}: USB ドライブの管理と自動マウント&lt;br /&gt;
&lt;br /&gt;
== 起動 ==&lt;br /&gt;
&lt;br /&gt;
Niri には [[デスクトップエントリ]] が含まれており、[[ディスプレイマネージャ]] から選択可能です。これを選択すると {{ic|niri-session}} が実行され、[[systemd]] への [[環境変数]] のエクスポートが適切に行われます。&lt;br /&gt;
&lt;br /&gt;
また、[[getty]] (コンソール) から直接起動する場合は、以下のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 niri-session -l&lt;br /&gt;
&lt;br /&gt;
これは [[Getty#Automatic login to virtual console|自動ログイン]] と組み合わせることで、シームレスな [[ブート]] 体験を実現できます。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
Niri は {{ic|~/.config/niri/config.kdl}} から設定を読み込みます。ファイル形式は KDL で、セクションごとに分かれています。初回実行時に生成されるデフォルト設定ファイルには、各オプションの説明がコメントとして記載されています。ただし、アップデートで追加された新機能については記載されないため、[https://niri-wm.github.io/niri/Configuration:-Introduction.html Niri 公式ドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
設定ファイルを保存すると、Niri は自動的に設定を適用します。設定内容が不正であっても Niri はクラッシュせず、最後に動作していた状態が維持され、エラーがユーザーに通知されます。セッション外で設定を検証するには {{ic|niri validate}} を使用します。&lt;br /&gt;
&lt;br /&gt;
== キーマップ ==&lt;br /&gt;
&lt;br /&gt;
キーマップを設定するには、{{ic|input/keyboard/xkb}} セクションを編集します。&lt;br /&gt;
&lt;br /&gt;
例えば、&amp;quot;US Int Alt Gr&amp;quot; レイアウトを使用し、{{ic|CapsLock}} を {{ic|Ctrl}} として機能させる場合は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
input {&lt;br /&gt;
keyboard {&lt;br /&gt;
xkb {&lt;br /&gt;
layout &amp;quot;us&amp;quot;&lt;br /&gt;
variant &amp;quot;altgr-intl&amp;quot;&lt;br /&gt;
options &amp;quot;ctrl:nocaps&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;
まず {{ic|niri msg outputs}} を実行して、Niri が認識している出力を確認します。その後、各モニターに設定を適用できます。例として、HDMI モニターを 2560x1440 60Hz、スケーリング 1.2 に設定し、ノート PC の内蔵モニターをオフにする設定は以下の通りです:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
output &amp;quot;HDMI-A-1&amp;quot; {&lt;br /&gt;
mode &amp;quot;2560x1440@60.000&amp;quot;&lt;br /&gt;
scale 1.2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
output &amp;quot;eDP-1&amp;quot; {&lt;br /&gt;
off&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ドッキングステーションへの接続時などに動的なレイアウト変更を行いたい場合は、[[kanshi]] を併用することも検討してください。}}&lt;br /&gt;
&lt;br /&gt;
=== キーバインド ===&lt;br /&gt;
&lt;br /&gt;
binds セクションでは、Niri を操作するキーの組み合わせを設定します。初回起動時に生成される設定には多くのバインドが含まれており、これらはすべて変更可能です。&lt;br /&gt;
&lt;br /&gt;
注意点として、Niri はデフォルトのキーバインドを自動的にロードしません。設定ファイルに記述がないバインドは機能しません。そのため、不要なバインドを削除する際は、削除ではなくコメントアウトに留めることが推奨されます。&lt;br /&gt;
&lt;br /&gt;
バインドは、修飾キーに {{ic|+}} を繋げ、アクションを括弧内に記述します。spawn アクションはプログラムを起動します。以下の例では、{{ic|Mod+T}} で [[alacritty]] を、{{ic|Mod+D}} で {{pkg|fuzzel}} を起動します。{{ic|Mod}} は通常、単独実行時は {{ic|Super}} キー、他のコンポジット内での実行時は {{ic|Alt}} キーになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+T { spawn &amp;quot;alacritty&amp;quot;; }&lt;br /&gt;
Mod+D { spawn &amp;quot;fuzzel&amp;quot;; }&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|spawn}} に渡す引数にスペースが含まれる場合は、個別に引用符で囲む必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+Ctrl+semicolon {&lt;br /&gt;
spawn &amp;quot;swaylock&amp;quot; &amp;quot;-c&amp;quot; &amp;quot;121212&amp;quot; &amp;quot;-e&amp;quot; &amp;quot;-f&amp;quot; &amp;quot;-F&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== WASD 風のナビゲーション ====&lt;br /&gt;
&lt;br /&gt;
ゲームのような WASD キーによるウィンドウ移動を設定することも可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
binds {&lt;br /&gt;
...&lt;br /&gt;
Mod+A { focus-column-left; }&lt;br /&gt;
Mod+S { focus-window-or-workspace-down; }&lt;br /&gt;
Mod+W { focus-window-or-workspace-up; }&lt;br /&gt;
Mod+D { focus-column-right; }&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;
Niri の起動時に特定のプログラムを同時に開始できます。&lt;br /&gt;
前述した {{Pkg|mako}}、{{Pkg|waybar}}、{{Pkg|swayidle}}/{{Pkg|swaylock}} などの設定例は以下の通りです:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/niri/config.kdl|&lt;br /&gt;
spawn-at-startup &amp;quot;mako&amp;quot;&lt;br /&gt;
spawn-at-startup &amp;quot;waybar&amp;quot;&lt;br /&gt;
spawn-at-startup &amp;quot;swayidle&amp;quot; &amp;quot;-w&amp;quot; &amp;quot;timeout&amp;quot; &amp;quot;601&amp;quot; &amp;quot;niri msg action power-off-monitors&amp;quot; &amp;quot;timeout&amp;quot; &amp;quot;600&amp;quot; &amp;quot;swaylock -f&amp;quot; &amp;quot;before-sleep&amp;quot; &amp;quot;swaylock -f&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらのプロセスは Niri セッションに紐付けられており、Niri が終了または中断されると終了します。プロセスをバックグラウンドで永続させたい場合は、引数に {{ic|&amp;quot;&amp;amp;&amp;quot;}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== XWayland ===&lt;br /&gt;
&lt;br /&gt;
Niri は X11 アプリケーションを実行するための XWayland を標準ではサポートしていません。その代わり、外部ツールの使用を推奨しています。オプションの依存関係にある {{Pkg|xwayland-satellite}} をインストールすれば、特別な設定なしで使用可能です。&lt;br /&gt;
&lt;br /&gt;
=== マルチ GPU 設定 ===&lt;br /&gt;
&lt;br /&gt;
内蔵グラフィックスと専用 GPU (dGPU) の両方を搭載した環境では、Niri がデフォルトで dGPU を使用してしまい、バッテリーを浪費する場合があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|NVIDIA カードを使用している場合は、GPU を低電力状態にする方法やアプリごとの起動設定について [[PRIME]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
Niri が使用する GPU を指定するには、まずシステムで利用可能なレンダリングデバイスを確認します:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ ls -l /dev/dri/by-path/*-render|&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Jan 10 13:02 /dev/dri/by-path/pci-0000:c1:00.0-render -&amp;gt; ../renderD129&lt;br /&gt;
lrwxrwxrwx 1 root root 13 Jan 10 13:02 /dev/dri/by-path/pci-0000:c2:00.0-render -&amp;gt; ../renderD128&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、PCI アドレスを使って各デバイスがどのカードかを確認します:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ lspci -s c1:00.0|&lt;br /&gt;
c1:00.0 VGA compatible controller: NVIDIA Corporation GB206M [GeForce RTX 5070 Max-Q / Mobile] (rev a1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
使用したいデバイスを特定したら、Niri の設定ファイルに追記します:&lt;br /&gt;
{{hc|&lt;br /&gt;
~/.config/niri/config.kdl|&lt;br /&gt;
debug {&lt;br /&gt;
    render-drm-device &amp;quot;/dev/dri/renderD128&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動後、以下のコマンドで GPU が正しく低電力状態 (D3cold など) になっているか確認できます:&lt;br /&gt;
{{hc|&lt;br /&gt;
$ cat /sys/class/drm/card*/device/power_state|&lt;br /&gt;
D3cold&lt;br /&gt;
D0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
[https://niri-wm.github.io/niri/ Niri 公式 Wiki]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Kanshi&amp;diff=41343</id>
		<title>Kanshi</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Kanshi&amp;diff=41343"/>
		<updated>2026-02-17T07:18:47Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 英語版から転載&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:Wayland]]&lt;br /&gt;
[[en:Kanshi]]&lt;br /&gt;
[[zh-hans:Kanshi]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Sway}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.freedesktop.org/emersion/kanshi kanshi] allows you to define output profiles that are automatically enabled and disabled on hotplug. For instance, this can be used to turn a laptop&#039;s internal screen off when docked.&lt;br /&gt;
&lt;br /&gt;
This is a Wayland equivalent for tools like [https://github.com/phillipberndt/autorandr autorandr]. kanshi can be used on Wayland compositors supporting the wlr-output-management protocol.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
[[Install]] {{Pkg|kanshi}} or {{AUR|kanshi-git}}.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
&lt;br /&gt;
Create kanshi configuration file:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
profile {&lt;br /&gt;
	output LVDS-1 disable&lt;br /&gt;
	output &amp;quot;Some Company ASDF 4242&amp;quot; mode 1600x900 position 0,0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
profile {&lt;br /&gt;
	output LVDS-1 enable scale 2&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Each output profile is delimited by brackets. It contains several output directives (whose syntax is similar to {{man|5|sway-output}}). A profile will be enabled if all of the listed outputs are connected.&lt;br /&gt;
&lt;br /&gt;
{{Tip|You can get a list of output names and additional information using commands like {{ic|wlr-randr}}, {{ic|swaymsg -t get_outputs}} or use the GUI applications {{AUR|wdisplays-git}} or {{AUR|wdisplays-persistent}} which will write also directly to kanshi&#039;s configuration file.}}&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
&lt;br /&gt;
For easier management of multiple setups &#039;&#039;(e.g. Internal laptop monitor only, Docked to one monitor at home, Docked to two work monitors, ...)&#039;&#039; you can define defaults for the outputs used inside profiles and assign them aliases. The defaults will apply to all profiles where the respective output is mentioned. For more see {{man|5|kanshi}}).&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
output &amp;quot;Dell Inc. DELL S2721DGF G52TR83&amp;quot; {&lt;br /&gt;
  mode 2560x1440@165.08&lt;br /&gt;
  position 1280,0&lt;br /&gt;
  scale 2&lt;br /&gt;
  alias $HOME_1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
output &amp;quot;LG Display 0x058B Unknown&amp;quot; {&lt;br /&gt;
  mode 2560x1440@59.99800&lt;br /&gt;
  position 0,0&lt;br /&gt;
  scale 2&lt;br /&gt;
  alias $INTERNAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
profile home_1 {&lt;br /&gt;
  output $INTERNAL disable&lt;br /&gt;
  output $HOME_1 enable&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
You can find out these values with a command like [https://wiki.hyprland.org/Configuring/Using-hyprctl/ hyprctl monitors] which will display all three of those in its output.&lt;br /&gt;
&lt;br /&gt;
{{hc|1=hyprctl monitors|2=&lt;br /&gt;
make: LG Display&lt;br /&gt;
model: 0x058B&lt;br /&gt;
serial:&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
It is also possible to further integrate kanshi with your workflow by using the &#039;&#039;exec&#039;&#039; directive to execute a command once the profile was successfully applied.&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
profile home_1 {&lt;br /&gt;
  output $INTERNAL disable&lt;br /&gt;
  output $HOME_1 enable&lt;br /&gt;
  exec uwsm app -- $HOME/.config/hypr/scripts/move-workspaces.sh &amp;quot;LG Display 0x058B&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Run the command:&lt;br /&gt;
&lt;br /&gt;
 $ kanshi&lt;br /&gt;
&lt;br /&gt;
See [[#Manage kanshi with systemd]] for an automated usage.&lt;br /&gt;
&lt;br /&gt;
== Tips and tricks ==&lt;br /&gt;
&lt;br /&gt;
=== Manage kanshi with systemd ===&lt;br /&gt;
&lt;br /&gt;
Create and start {{ic|~/.config/systemd/user/sway-session.target}} (if you don&#039;t have created yet) by following [[Sway#Manage Sway-specific daemons with systemd]].&lt;br /&gt;
&lt;br /&gt;
Create the {{ic|kanshi.service}} file:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/systemd/user/kanshi.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Dynamic output configuration for Wayland compositors&lt;br /&gt;
Documentation=man:kanshi(1)&lt;br /&gt;
BindsTo=sway-session.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/kanshi&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sway-session.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Enable]] this [[user unit]]. It is only activated when Sway is running and deactivated when Sway stops.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Workspace number starts from 2 in external monitor after wake up ===&lt;br /&gt;
&lt;br /&gt;
If you have a configuration like [[#Configuration|above]], when you connected a second display to your computer, the workspace in the second display should start from 1 since the first display is disabled. This should be the case when you plugged your monitor in the first time or after starting the system. But after sleep, this number might be 2. In this case just move the first workspace to this monitor by adding a directive to the kanshi configuration file:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/kanshi/config|2=&lt;br /&gt;
profile {&lt;br /&gt;
	output LVDS-1 disable&lt;br /&gt;
	output &amp;quot;Some Company ASDF 4242&amp;quot; mode 1600x900 position 0,0&lt;br /&gt;
	# We&#039;ve added this directive here (do not forget to update the output name):&lt;br /&gt;
	exec swaymsg workspace 1, move workspace to HDMI-A-1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
profile {&lt;br /&gt;
	output LVDS-1 enable scale 2&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.freedesktop.org/emersion/kanshi Source code and documentation]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Waybar&amp;diff=41342</id>
		<title>Waybar</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Waybar&amp;diff=41342"/>
		<updated>2026-02-17T07:16:10Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 英語版から転載&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wayland]]&lt;br /&gt;
[[de:Waybar]]&lt;br /&gt;
[[en:Waybar]]&lt;br /&gt;
[[pl:Waybar]]&lt;br /&gt;
[https://github.com/Alexays/Waybar Waybar] is a highly customizable [[Wayland]] bar for [[Sway]] and Wlroots based compositors. Its configuration is done in JSONC with styling in CSS.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
[[Install]] the {{Pkg|waybar}} package.&lt;br /&gt;
&lt;br /&gt;
For the icons of the preconfigured modules a font like {{Pkg|otf-font-awesome}} is needed.&lt;br /&gt;
Some standard modules need further programs to function properly. Those are visible through error messages from those modules.&lt;br /&gt;
&lt;br /&gt;
== Configuration == &lt;br /&gt;
{{Expansion|This chapter only links to an external source.}}&lt;br /&gt;
There are some good explanations in the [https://github.com/Alexays/Waybar/wiki/Configuration Waybar Wiki].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://github.com/Alexays/Waybar Official Git-Repository]&lt;br /&gt;
* [https://github.com/Alexays/Waybar/wiki Official Wiki]&lt;br /&gt;
* {{man|5|waybar}}&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Mkinitcpio&amp;diff=40838</id>
		<title>Mkinitcpio</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Mkinitcpio&amp;diff=40838"/>
		<updated>2025-09-11T11:11:48Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* 標準的なレスキュー手順 */ 翻訳を修正&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;
[[pt:Mkinitcpio]]&lt;br /&gt;
[[ru:Mkinitcpio]]&lt;br /&gt;
[[zh-hans:Mkinitcpio]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Booster}}&lt;br /&gt;
{{Related|ブートデバッグ}}&lt;br /&gt;
{{Related|dracut}}&lt;br /&gt;
{{Related|カーネルモジュール}}&lt;br /&gt;
{{Related|mkinitcpio/Initramfs の最小化}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related|ユニファイドカーネルイメージ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio mkinitcpio] は[[Wikipedia:Initial ramdisk|初期 RAM ディスク]]環境を作成するために使われる Bash スクリプトです。{{man|8|mkinitcpio}} man ページより:&lt;br /&gt;
&lt;br /&gt;
:初期 ram ディスクは非常に小さい環境（初期ユーザー空間）であり、様々なカーネルモジュールをロードして {{ic|init}} にコントロールを移す前に必要なことをセットアップします。これにより、root ファイルシステムを暗号化したりソフトウェア RAID アレイに root を載せたりすることが可能になります。&#039;&#039;mkinitcpio&#039;&#039; はカスタムフックによって簡単に拡張することができ、実行時の自動検知など様々な機能を持っています。&lt;br /&gt;
&lt;br /&gt;
伝統的には、[[Arch ブートプロセス|ブートプロセス]]の初めにハードウェアを検知したりタスクの初期化を行うのはカーネルで、それから root ファイルシステムがマウントされ {{ic|init}} にコントロールが移されます。しかしながら、先端技術が生まれるにつれ、こういった作業は複雑になりつつあります。&lt;br /&gt;
&lt;br /&gt;
今日、root ファイルシステムが載るハードウェアは SCSI から SATA、USB ドライブまで様々にわたり、それらハードウェアはそれぞれのメーカーによって作られたいろんなドライブコントローラによってコントロールされています。しかも、root ファイルシステムは暗号化されたり圧縮されたりする可能性もあります; ソフトウェア RAID アレイや論理ボリュームグループに含まれるかもしれません。複雑になったものをシンプルに扱う方法はユーザースペース (初期RAMディスク) へ管理を譲渡することです。参照: [https://web.archive.org/web/20150430223035/http://archlinux.me/brain0/2010/02/13/early-userspace-in-arch-linux/ /dev/brain0 » Blog Archive » Early Userspace in Arch Linux]。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mkinitcpio&#039;&#039; は Arch Linux デベロッパーとコミュニティの貢献によって開発されています。[https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio public Git リポジトリ]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
初期 ramdisk フェーズ中に行われる様々なタスクがどのように実行されるかには、2つの異なるアプローチがあることに注意が必要です。&lt;br /&gt;
&lt;br /&gt;
; Busybox ベースの初期 ramdisk: 初期 ramdisk のファイルシステムをスキャンし、実行されるスクリプト（この文脈ではランタイムフックと呼ばれる）を開始する init スクリプトが起動されます。&lt;br /&gt;
; systemd ベースの初期 ramdisk: 初期 ramdisk フェーズの開始時にすでに systemd が起動されています。実行されるタスクは、通常の systemd ユニットファイルによって決定されます。参照：[https://www.freedesktop.org/software/systemd/man/latest/bootup.html systemd bootup process]。&lt;br /&gt;
&lt;br /&gt;
具体的なバリアントは、{{ic|/etc/mkinitcpio.conf}} 内の {{ic|HOOKS}} 配列に {{ic|systemd}} フックが存在するかどうかによって決まります。より詳細については、[[#通常のフック]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mkinitcpio}} パッケージを[[インストール]]してください。このパッケージは {{Pkg|linux}} の依存パッケージとなっているので、大抵すでにインストールされているでしょう。&lt;br /&gt;
&lt;br /&gt;
上級者は {{AUR|mkinitcpio-git}} パッケージで &#039;&#039;mkinitcpio&#039;&#039; の最新開発バージョンをインストールできます。&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 ディスクイメージを作成するために必要な情報のリストです。&lt;br /&gt;
デフォルトでは、2つのイメージを生成するための命令が含まれています:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;default&#039;&#039; RAM ディスクイメージ。このイメージの内容は、mkinicpio の [[#設定]] で指定されたディレクティブに従って生成されます。&lt;br /&gt;
# &#039;&#039;fallback&#039;&#039; RAM ディスクイメージ。作成時に &#039;&#039;autodetect&#039;&#039; フックがスキップされることを除いて上記と同じであるため、ほとんどのシステムをサポートするすべてのモジュールが含まれます。&lt;br /&gt;
&lt;br /&gt;
プリセットを作成した後、pacman フックは、プリセットで提供された情報を使用して2つのイメージを生成する &#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|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|reiser4}} など) を {{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}} を追加してください。&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}} 配列は設定ファイルの中で一番重要な設定です。フックはイメージに追加されるものを記述する小さなスクリプトです。フックによっては、デーモンを起動したりスタックしたブロックデバイスを集めたりするためのランタイムコンポーネントを含んでいるものもあります。フックは名前によって参照され、設定ファイルの {{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;
ビルドフックは {{ic|/usr/lib/initcpio/install/}} にあります。カスタムビルドフックは {{ic|/etc/initcpio/install/}} に配置します。これらのファイルは &#039;&#039;mkinitcpio&#039;&#039; の実行時に bash シェルによって実行されます。ビルドフックには２つの関数が含まれています: {{ic|build}} と {{ic|help}}。{{ic|build}} 関数にはイメージに追加するモジュール、ファイル、バイナリを記述します。これらのアイテムの追加を容易にする {{man|8|mkinitcpio}} による API が用意されています。{{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;
==== ランタイムフック ====&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;
{{Note|ランタイムフックは busybox init でのみ使用されます。 &#039;&#039;&#039;systemd&#039;&#039;&#039; フックは systemd ベースの init をトリガーします。これはランタイムフックを実行せず、代わりに systemd ユニットを使用します。}}&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番最初に置いてください。&amp;lt;br/&amp;gt;&#039;&#039;&#039;systemd&#039;&#039;&#039; フックを使用する場合、&#039;&#039;&#039;base&#039;&#039;&#039; フックは busybox のリカバリシェルを提供するだけなので、&#039;&#039;&#039;base&#039;&#039;&#039; の追加は任意となります。{{Note|initramfs の root アカウントが[https://gitlab.archlinux.org/archlinux/packaging/packages/systemd/-/commit/292cdf8a2f7dd7c6c7d91d2b59617391935c837c ロックされている]ため、リカバリシェルは使用できません。{{Bug|70408}} &amp;lt;!-- TODO: {{Bug|70408}} を {{Issue|archlinux/mkinitcpio/mkinitcpio|205}} に置き換える --&amp;gt; を見てください。}}&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}} を展開して使用します。&amp;lt;br/&amp;gt; &#039;&#039;&#039;autodetect&#039;&#039;&#039; フックがこのフックより前に実行される場合、イメージをビルドする際に使用したシステムに搭載されているプロセッサ向けのマイクロコードの早期アップデートファイルのみが追加されます。&amp;lt;br/&amp;gt; このフックは、非推奨となっている {{ic|--microcode}} フラグと、プリセットファイルの {{ic|microcode}} オプションの機能を置き換えるものです。また、このフックによって、メインの initramfs イメージにマイクロコードのアップデートが埋め込まれるようになるため、マイクロコードを読み込む {{ic|initrd}} 行をブートローダーの設定に追加する必要が無くなります。 || {{-}}&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}} パーティションを分割する場合は必須です。このフックを含める場合、初期ユーザ空間でキーボードが動作することを保証するために必要なモジュールも追加することを強く推奨します。&amp;lt;br/&amp;gt;このフックを使用するには、[[カーネルコマンドライン]]にパラメータ {{ic|rw}} を設定する必要があります ([https://bbs.archlinux.org/viewtopic.php?pid=1307895#p1307895 議論])。詳細は [[fsck#ブート時のチェック]] を見てください。 || {{-}}&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;
==== ポストフック ====&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;
# (イメージに) 使用されている&#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;
さらに、次の環境変数が設定されます: カーネルの完全なバージョン {{ic|KERNELVERSION}}、起動するためにカーネルを配置する必要のある場所のデフォルト {{ic|KERNELDESTINATION}}。&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;
フォールバックイメージの生成は以下の方法で無効化できます:&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/mkinitcpio.d/}} 内の対応する &#039;&#039;.preset&#039;&#039; ファイル内の {{ic|1=PRESETS=(&#039;default&#039; &#039;fallback&#039;)}} 行を {{ic|1=PRESETS=(&#039;default&#039;)}} に変更する。&lt;br /&gt;
* {{ic|/boot/}} 内のフォールバック initramfs イメージを削除する。&lt;br /&gt;
* [[ブートローダー]]の設定を更新する。&lt;br /&gt;
&lt;br /&gt;
{{Warning|フォールバック 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 アーカイブであり、{{ic|find}} と {{ic|bsdcpio}} コマンドによって生成されています。また、任意で、カーネルが対応した圧縮方法によって圧縮されています。圧縮方法について詳しくは [[#COMPRESSION]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mkinitcpio&#039;&#039; には {{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 -x /boot/initramfs-linux.img&lt;br /&gt;
&lt;br /&gt;
イメージの重要なパーツについて読みやすいリストを取得することもできます:&lt;br /&gt;
&lt;br /&gt;
 # lsinitcpio -a /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-bnx2x}}&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      || ファームウェアはまだ利用できません。[https://intel.github.io/quickassist/RN/In-Tree/in_tree_firmware_RN.html?highlight=qat_420xx#id6] を参照。&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       || {{AUR|upd72020x-fw}}&lt;br /&gt;
|}&lt;br /&gt;
* 警告を取り除きたいが、必要ないファームウェアパッケージのためにシステムの空き領域を無駄にしたくない場合、[[#フォールバック initramfs の生成を無効化する|フォールバック initramfs の生成を無効化する]]ことができます。&lt;br /&gt;
&lt;br /&gt;
利用できないファームウェアに関しては、ダミーのファイルを作成することで警告を消すことができます。例えば:&lt;br /&gt;
&lt;br /&gt;
 # echo &amp;quot;Device not available&amp;quot; &amp;gt; /usr/lib/firmware/qat_420xx.bin&lt;br /&gt;
 # echo &amp;quot;Device not available&amp;quot; &amp;gt; /usr/lib/firmware/qat_420xx_mmp.bin&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;
不適切な初期 RAM ディスクを使用して、システムが起動できなくなった場合、以下のようなシステムレスキュー手順に従ってください:&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;
* 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|2024-12-27|823193}}&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Lenovo_ThinkPad_T14/T14s_(Intel)_Gen_4&amp;diff=40797</id>
		<title>Lenovo ThinkPad T14/T14s (Intel) Gen 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Lenovo_ThinkPad_T14/T14s_(Intel)_Gen_4&amp;diff=40797"/>
		<updated>2025-09-02T04:33:43Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 無駄な改行を削除&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Lenovo]]&lt;br /&gt;
[[en:Lenovo ThinkPad T14/T14s (Intel) Gen 4]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float: right;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ハードウェア !! PCI/USB ID !! 動作状況&lt;br /&gt;
|-&lt;br /&gt;
| タッチパッド || {{ic|04F3:3195}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| トラックポイント || {{ic|04F3:2EA3}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| GPU (Intel) || {{ic|8086:a7a1}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Web カメラ || {{ic|04f2:b74f}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || {{ic|8087:0033}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| オーディオ || {{ic|8086:51ca}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Wi-Fi || {{ic|8086:51f1}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || {{ic|8086:0dc6}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| モバイルブロードバンド || || {{Y|未テスト}}&lt;br /&gt;
|-&lt;br /&gt;
| 指紋認証リーダー || || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| スマートカードリーダー || || {{Y|未テスト}}&lt;br /&gt;
|}&lt;br /&gt;
Lenovo ThinkPad T14/T14s (Intel) Gen 4 は 2023年5月に登場した。14インチディスプレイ、第13世代 Intel Core プロセッサ、統合型 Intel Iris Xe グラフィックスを搭載している。カーネル &amp;gt;=6.11.6 でほぼすべての機能がそのまま動作します。&lt;br /&gt;
&lt;br /&gt;
この機種であることを確認するには、{{Pkg|dmidecode}} をインストールし、以下を実行して下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|# dmidecode -s system-version|ThinkPad T14 Gen 4}}&lt;br /&gt;
&lt;br /&gt;
ノートパソコン関連記事と推奨事項の概要は [[ノートパソコン]] を参照。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== Intel Turbo Boost Max ===&lt;br /&gt;
&lt;br /&gt;
Intel® Turbo Boost Max Technology 3.0 が有効になっているか確認する:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/devices/system/cpu/intel_pstate/no_turbo&lt;br /&gt;
&lt;br /&gt;
出力が `1` の場合は無効になっているので、BIOS をデフォルトにリセットする必要があります。リセット後に再度コマンドを実行すると `0` が出力されるはずです。&lt;br /&gt;
その後、CPU が高クロックまでブーストしているのを確認できます。&lt;br /&gt;
&lt;br /&gt;
=== サウンド ===&lt;br /&gt;
&lt;br /&gt;
この機種の内蔵サウンドカードは [https://wiki.archlinux.org/title/Advanced_Linux_Sound_Architecture#Firmware Sound Open Firmware] が必要です。&lt;br /&gt;
&lt;br /&gt;
== ファームウェア ==&lt;br /&gt;
&lt;br /&gt;
=== fwupd ===&lt;br /&gt;
&lt;br /&gt;
[[fwupd]] は UEFI BIOS、NVMe SSD、Embedded Controller、Intel Management Engine のアップデートをそのままサポートしています。&lt;br /&gt;
&lt;br /&gt;
== ファンクションキー ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key !! Visible?&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; !! Marked?&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+Esc}} || {{No}} || {{Yes}} || Enables Fn lock&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn}} || {{Yes}} || {{Yes}} || {{ic|XF86WakeUp}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F1}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioMute}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F2}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioLowerVolume}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F3}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioRaiseVolume}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F4}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioMicMute}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F5}} || {{Yes}} || {{Yes}} || {{ic|XF86MonBrightnessDown}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F6}} || {{Yes}} || {{Yes}} || {{ic|XF86MonBrightnessUp}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F7}} || {{Yes}} || {{Yes}} || {{ic|XF86Display}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F8}} || {{Yes}} || {{Yes}} || {{ic|XF86WLAN}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F9}} || {{Yes}} || {{Yes}} || {{ic|XF86Messenger}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F10}} || {{Yes}} || {{Yes}} || {{ic|XF86Go}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F11}} || {{Yes}} || {{Yes}} || {{ic|Cancel}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F12}} || {{Yes}} || {{Yes}} || {{ic|XF86Favorites}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+Space}} || {{No}} || {{Yes}} || Toggle keyboard backlight&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# {{ic|wev}} などのツールでキー入力が可視化できるかどうか。&lt;br /&gt;
# キーキャップにその機能を示すシンボルが印字されているかどうか。&lt;br /&gt;
# そのまま動作するが、ソフトウェア制御も可能。&lt;br /&gt;
&lt;br /&gt;
== モバイルブロードバンド ==&lt;br /&gt;
&lt;br /&gt;
[[NetworkManager#Mobile broadband support]] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
=== T14 リンク ===&lt;br /&gt;
&lt;br /&gt;
* https://ubuntu.com/certified/202303-31392&lt;br /&gt;
&lt;br /&gt;
=== T14s リンク ===&lt;br /&gt;
&lt;br /&gt;
* https://ubuntu.com/certified/202305-31639&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Lenovo_ThinkPad_T14/T14s_(Intel)_Gen_4&amp;diff=40796</id>
		<title>Lenovo ThinkPad T14/T14s (Intel) Gen 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Lenovo_ThinkPad_T14/T14s_(Intel)_Gen_4&amp;diff=40796"/>
		<updated>2025-09-02T04:33:13Z</updated>

		<summary type="html">&lt;p&gt;Kgx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Lenovo]]&lt;br /&gt;
[[en:Lenovo ThinkPad T14/T14s (Intel) Gen 4]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float: right;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ハードウェア !! PCI/USB ID !! 動作状況&lt;br /&gt;
|-&lt;br /&gt;
| タッチパッド || {{ic|04F3:3195}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| トラックポイント || {{ic|04F3:2EA3}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| GPU (Intel) || {{ic|8086:a7a1}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Web カメラ || {{ic|04f2:b74f}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || {{ic|8087:0033}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| オーディオ || {{ic|8086:51ca}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Wi-Fi || {{ic|8086:51f1}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || {{ic|8086:0dc6}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| モバイルブロードバンド || || {{Y|未テスト}}&lt;br /&gt;
|-&lt;br /&gt;
| 指紋認証リーダー || || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| スマートカードリーダー || || {{Y|未テスト}}&lt;br /&gt;
|}&lt;br /&gt;
Lenovo ThinkPad T14/T14s (Intel) Gen 4 は 2023年5月に登場した。14インチディスプレイ、第13世代 Intel Core プロセッサ、統合型 Intel Iris Xe グラフィックスを搭載している。カーネル &amp;gt;=6.11.6 でほぼすべての機能がそのまま動作します。&lt;br /&gt;
&lt;br /&gt;
この機種であることを確認するには、{{Pkg|dmidecode}} をインストールし、以下を実行して下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|# dmidecode -s system-version|ThinkPad T14 Gen 4}}&lt;br /&gt;
&lt;br /&gt;
ノートパソコン関連記事と推奨事項の概要は [[ノートパソコン]] を参照。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== Intel Turbo Boost Max ===&lt;br /&gt;
&lt;br /&gt;
Intel® Turbo Boost Max Technology 3.0 が有効になっているか確認する:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/devices/system/cpu/intel_pstate/no_turbo&lt;br /&gt;
&lt;br /&gt;
出力が `1` の場合は無効になっているので、BIOS をデフォルトにリセットする必要があります。リセット後に再度コマンドを実行すると `0` が出力されるはずです。&lt;br /&gt;
その後、CPU が高クロックまでブーストしているのを確認できます。&lt;br /&gt;
&lt;br /&gt;
=== サウンド ===&lt;br /&gt;
&lt;br /&gt;
この機種の内蔵サウンドカードは [https://wiki.archlinux.org/title/Advanced_Linux_Sound_Architecture#Firmware Sound Open Firmware] が必要です。&lt;br /&gt;
&lt;br /&gt;
== ファームウェア ==&lt;br /&gt;
&lt;br /&gt;
=== fwupd ===&lt;br /&gt;
&lt;br /&gt;
[[fwupd]] は UEFI BIOS、NVMe SSD、Embedded Controller、Intel Management Engine のアップデートをそのままサポートしています。&lt;br /&gt;
&lt;br /&gt;
== ファンクションキー ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key !! Visible?&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; !! Marked?&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+Esc}} || {{No}} || {{Yes}} || Enables Fn lock&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn}} || {{Yes}} || {{Yes}} || {{ic|XF86WakeUp}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F1}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioMute}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F2}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioLowerVolume}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F3}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioRaiseVolume}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F4}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioMicMute}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F5}} || {{Yes}} || {{Yes}} || {{ic|XF86MonBrightnessDown}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F6}} || {{Yes}} || {{Yes}} || {{ic|XF86MonBrightnessUp}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F7}} || {{Yes}} || {{Yes}} || {{ic|XF86Display}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F8}} || {{Yes}} || {{Yes}} || {{ic|XF86WLAN}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F9}} || {{Yes}} || {{Yes}} || {{ic|XF86Messenger}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F10}} || {{Yes}} || {{Yes}} || {{ic|XF86Go}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F11}} || {{Yes}} || {{Yes}} || {{ic|Cancel}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F12}} || {{Yes}} || {{Yes}} || {{ic|XF86Favorites}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+Space}} || {{No}} || {{Yes}} || Toggle keyboard backlight&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# {{ic|wev}} などのツールでキー入力が可視化できるかどうか。&lt;br /&gt;
# キーキャップにその機能を示すシンボルが印字されているかどうか。&lt;br /&gt;
# そのまま動作するが、ソフトウェア制御も可能。&lt;br /&gt;
&lt;br /&gt;
== モバイルブロードバンド ==&lt;br /&gt;
&lt;br /&gt;
[[NetworkManager#Mobile broadband support]] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
=== T14 リンク ===&lt;br /&gt;
&lt;br /&gt;
* https://ubuntu.com/certified/202303-31392&lt;br /&gt;
&lt;br /&gt;
=== T14s リンク ===&lt;br /&gt;
&lt;br /&gt;
* https://ubuntu.com/certified/202305-31639&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Lenovo_ThinkPad_T14/T14s_(Intel)_Gen_4&amp;diff=40795</id>
		<title>Lenovo ThinkPad T14/T14s (Intel) Gen 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Lenovo_ThinkPad_T14/T14s_(Intel)_Gen_4&amp;diff=40795"/>
		<updated>2025-09-02T04:32:40Z</updated>

		<summary type="html">&lt;p&gt;Kgx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Lenovo]]&lt;br /&gt;
[[en:Lenovo ThinkPad T14/T14s (Intel) Gen 4]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float: right;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ハードウェア !! PCI/USB ID !! 動作状況&lt;br /&gt;
|-&lt;br /&gt;
| タッチパッド || {{ic|04F3:3195}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| トラックポイント || {{ic|04F3:2EA3}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| GPU (Intel) || {{ic|8086:a7a1}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Web カメラ || {{ic|04f2:b74f}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || {{ic|8087:0033}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| オーディオ || {{ic|8086:51ca}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Wi-Fi || {{ic|8086:51f1}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || {{ic|8086:0dc6}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| モバイルブロードバンド || || {{Y|未テスト}}&lt;br /&gt;
|-&lt;br /&gt;
| 指紋認証リーダー || || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| スマートカードリーダー || || {{Y|未テスト}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lenovo ThinkPad T14/T14s (Intel) Gen 4 は 2023年5月に登場した。14インチディスプレイ、第13世代 Intel Core プロセッサ、統合型 Intel Iris Xe グラフィックスを搭載している。カーネル &amp;gt;=6.11.6 でほぼすべての機能がそのまま動作します。&lt;br /&gt;
&lt;br /&gt;
この機種であることを確認するには、{{Pkg|dmidecode}} をインストールし、以下を実行して下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|# dmidecode -s system-version|ThinkPad T14 Gen 4}}&lt;br /&gt;
&lt;br /&gt;
ノートパソコン関連記事と推奨事項の概要は [[ノートパソコン]] を参照。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== Intel Turbo Boost Max ===&lt;br /&gt;
&lt;br /&gt;
Intel® Turbo Boost Max Technology 3.0 が有効になっているか確認する:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/devices/system/cpu/intel_pstate/no_turbo&lt;br /&gt;
&lt;br /&gt;
出力が `1` の場合は無効になっているので、BIOS をデフォルトにリセットする必要があります。リセット後に再度コマンドを実行すると `0` が出力されるはずです。&lt;br /&gt;
その後、CPU が高クロックまでブーストしているのを確認できます。&lt;br /&gt;
&lt;br /&gt;
=== サウンド ===&lt;br /&gt;
&lt;br /&gt;
この機種の内蔵サウンドカードは [https://wiki.archlinux.org/title/Advanced_Linux_Sound_Architecture#Firmware Sound Open Firmware] が必要です。&lt;br /&gt;
&lt;br /&gt;
== ファームウェア ==&lt;br /&gt;
&lt;br /&gt;
=== fwupd ===&lt;br /&gt;
&lt;br /&gt;
[[fwupd]] は UEFI BIOS、NVMe SSD、Embedded Controller、Intel Management Engine のアップデートをそのままサポートしています。&lt;br /&gt;
&lt;br /&gt;
== ファンクションキー ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key !! Visible?&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; !! Marked?&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+Esc}} || {{No}} || {{Yes}} || Enables Fn lock&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn}} || {{Yes}} || {{Yes}} || {{ic|XF86WakeUp}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F1}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioMute}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F2}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioLowerVolume}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F3}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioRaiseVolume}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F4}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioMicMute}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F5}} || {{Yes}} || {{Yes}} || {{ic|XF86MonBrightnessDown}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F6}} || {{Yes}} || {{Yes}} || {{ic|XF86MonBrightnessUp}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F7}} || {{Yes}} || {{Yes}} || {{ic|XF86Display}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F8}} || {{Yes}} || {{Yes}} || {{ic|XF86WLAN}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F9}} || {{Yes}} || {{Yes}} || {{ic|XF86Messenger}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F10}} || {{Yes}} || {{Yes}} || {{ic|XF86Go}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F11}} || {{Yes}} || {{Yes}} || {{ic|Cancel}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F12}} || {{Yes}} || {{Yes}} || {{ic|XF86Favorites}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+Space}} || {{No}} || {{Yes}} || Toggle keyboard backlight&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# {{ic|wev}} などのツールでキー入力が可視化できるかどうか。&lt;br /&gt;
# キーキャップにその機能を示すシンボルが印字されているかどうか。&lt;br /&gt;
# そのまま動作するが、ソフトウェア制御も可能。&lt;br /&gt;
&lt;br /&gt;
== モバイルブロードバンド ==&lt;br /&gt;
&lt;br /&gt;
[[NetworkManager#Mobile broadband support]] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
=== T14 リンク ===&lt;br /&gt;
&lt;br /&gt;
* https://ubuntu.com/certified/202303-31392&lt;br /&gt;
&lt;br /&gt;
=== T14s リンク ===&lt;br /&gt;
&lt;br /&gt;
* https://ubuntu.com/certified/202305-31639&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Linux_%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2&amp;diff=40794</id>
		<title>Linux ファームウェア</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Linux_%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2&amp;diff=40794"/>
		<updated>2025-09-02T04:27:32Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* インストール */ リンクを修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ハードウェア]]&lt;br /&gt;
[[Category:カーネル]]&lt;br /&gt;
[[en:Linux firmware]]&lt;br /&gt;
[[ru:Linux firmware]]&lt;br /&gt;
[[zh-hans:Linux 固件]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|カーネル}}&lt;br /&gt;
{{Related|マイクロコード}}&lt;br /&gt;
{{Related|fwupd}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/kernel-firmware/linux-firmware#linux-firmware Linux ファームウェア]は、特定のハードウェアデバイスの一部または完全な機能に必要な、[[Wikipedia:Binary blob|バイナリ・ブロブ]]のコレクションであり、[[Wikipedia:Linux kernel|Linux カーネル]]とともに配布されます。これらのバイナリ・ブロブは、[[Wikipedia:GNU General Public License|GPL]] でライセンスされた作品に含めることは許可されていませんが、別の形で再配布することは許可されています。&lt;br /&gt;
&lt;br /&gt;
ファームウェアが必要となる典型的なハードウェアの種類:&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Graphics processing unit|GPU]]&lt;br /&gt;
* [[ネットワーク設定/イーサネット|有線]]ネットワークアダプター&lt;br /&gt;
* [[ネットワーク設定/ワイヤレス|無線]]ネットワークアダプター&lt;br /&gt;
* [[Bluetooth]] コントローラー&lt;br /&gt;
* サウンドカード ― [[プロフェッショナルオーディオ]]やオンボードオーディオ&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|linux-firmware}} [[メタパッケージ]]を [[インストール]]することで、[https://gitlab.archlinux.org/archlinux/packaging/packages/linux-firmware/-/blob/main/PKGBUILD?ref_type=heads#L103 よく使われる] すべてのファームウェアを取得できます。これはほとんどのユーザーに推奨される方法です。ディスク容量を節約したい場合は、自身のシステムで使用しているハードウェアベンダー向けのファームウェアのみを選んでインストールすることもできます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|必要なファームウェアがないと、システムが動作しない可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|linux-firmware}} によってインストールされる主なパッケージ:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|linux-firmware-amdgpu}} — [[AMD]] Radeon GPU&lt;br /&gt;
* {{Pkg|linux-firmware-atheros}} — [[Wikipedia:Atheros|Qualcomm Atheros]] 製 Wi-Fi および Bluetooth アダプター&lt;br /&gt;
* {{Pkg|linux-firmware-broadcom}} — [[Broadcom]] および [[Wikipedia:Cypress Semiconductor|Cypress]] 製ネットワークアダプター&lt;br /&gt;
* {{Pkg|linux-firmware-cirrus}} — [[Wikipedia:Cirrus Logic|Cirrus Logic]] 製オーディオデバイス&lt;br /&gt;
* {{Pkg|linux-firmware-intel}} — [[Intel]] 製オーディオデバイス、Bluetooth アダプター、GPU、ネットワークアダプター、NPU、Web カメラなどの各種デバイス&lt;br /&gt;
* {{Pkg|linux-firmware-mediatek}} — [[Wikipedia:MediaTek|MediaTek]] および [[Wikipedia:Ralink|Ralink]] 製ネットワークアダプター&lt;br /&gt;
* {{Pkg|linux-firmware-nvidia}} — [[NVIDIA]] 製 GPU および SoC&lt;br /&gt;
* {{Pkg|linux-firmware-other}} — その他の未分類デバイス&lt;br /&gt;
* {{Pkg|linux-firmware-radeon}} — [[ATI]] Radeon GPU&lt;br /&gt;
* {{Pkg|linux-firmware-realtek}} — [[Wikipedia:Realtek|Realtek]] 製ネットワークおよび Bluetooth アダプター&lt;br /&gt;
&lt;br /&gt;
オプションパッケージ:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|linux-firmware-liquidio}} — [[Wikipedia:Cavium|Cavium]] LiquidIO サーバーアダプター&lt;br /&gt;
* {{Pkg|linux-firmware-marvell}} — [[Wikipedia:Marvell Technology|Marvell]] 製ネットワークアダプター&lt;br /&gt;
* {{Pkg|linux-firmware-mellanox}} — [[Wikipedia:Mellanox Technologies|Mellanox]] 製 Spectrum スイッチ&lt;br /&gt;
* {{Pkg|linux-firmware-nfp}} — [[Wikipedia:Netronome|Netronome]] Flow Processor&lt;br /&gt;
* {{Pkg|linux-firmware-qcom}} — [[Wikipedia:Qualcomm|Qualcomm]] 製 SoC&lt;br /&gt;
* {{Pkg|linux-firmware-qlogic}} — [[Wikipedia:QLogic|QLogic]] 製ネットワークデバイス&lt;br /&gt;
&lt;br /&gt;
サードパーティ製パッケージ:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|alsa-firmware}} — {{Pkg|alsa-tools}} に含まれるローダープログラムおよびホットプラグ対応ファームウェアローダー、詳しくは [[ALSA#Firmware]] を参照&lt;br /&gt;
* {{Pkg|sane-gt68xx-firmware}} — [http://www.meier-geinitz.de/sane/gt68xx-backend/ gt68xx] ベースのスキャナー用&lt;br /&gt;
* {{Pkg|sigrok-firmware-fx2lafw}} — [https://sigrok.org/wiki/Fx2lafw FX2] ロジックアナライザー用&lt;br /&gt;
* {{Pkg|sof-firmware}} — [[Advanced Linux Sound Architecture#ファームウェア|Sound Open Firmware]] 用&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 読み込まれたファームウェアの検出 ===&lt;br /&gt;
&lt;br /&gt;
デバッグやインストールすべきファームウェアパッケージを特定するために、システムによってどのファームウェアが読み込まれたかを知りたい場合があります。&lt;br /&gt;
&lt;br /&gt;
これは [https://docs.kernel.org/admin-guide/dynamic-debug-howto.html dynamic debug] を使って確認できます:&lt;br /&gt;
&lt;br /&gt;
* [[カーネルパラメータ]] に {{ic|1=dyndbg=&amp;quot;func fw_log_firmware_info +p&amp;quot;}} を追加してください。なお、使用している [[ブートローダー]] によってはクォートをエスケープする必要があります。&lt;br /&gt;
* 以下のコマンドで読み込まれたファームウェアを一覧表示できます:  &lt;br /&gt;
  {{bc|# journalctl -kg &#039;loaded f&#039;}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Gentoo:Linux firmware]]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Linux_%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2&amp;diff=40793</id>
		<title>Linux ファームウェア</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Linux_%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2&amp;diff=40793"/>
		<updated>2025-09-02T04:26:03Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 他言語へのリンクを追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ハードウェア]]&lt;br /&gt;
[[Category:カーネル]]&lt;br /&gt;
[[en:Linux firmware]]&lt;br /&gt;
[[ru:Linux firmware]]&lt;br /&gt;
[[zh-hans:Linux 固件]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|カーネル}}&lt;br /&gt;
{{Related|マイクロコード}}&lt;br /&gt;
{{Related|fwupd}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/kernel-firmware/linux-firmware#linux-firmware Linux ファームウェア]は、特定のハードウェアデバイスの一部または完全な機能に必要な、[[Wikipedia:Binary blob|バイナリ・ブロブ]]のコレクションであり、[[Wikipedia:Linux kernel|Linux カーネル]]とともに配布されます。これらのバイナリ・ブロブは、[[Wikipedia:GNU General Public License|GPL]] でライセンスされた作品に含めることは許可されていませんが、別の形で再配布することは許可されています。&lt;br /&gt;
&lt;br /&gt;
ファームウェアが必要となる典型的なハードウェアの種類:&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Graphics processing unit|GPU]]&lt;br /&gt;
* [[ネットワーク設定/イーサネット|有線]]ネットワークアダプター&lt;br /&gt;
* [[ネットワーク設定/ワイヤレス|無線]]ネットワークアダプター&lt;br /&gt;
* [[Bluetooth]] コントローラー&lt;br /&gt;
* サウンドカード ― [[プロフェッショナルオーディオ]]やオンボードオーディオ&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|linux-firmware}} [[メタパッケージ]]を [[インストール]]することで、[https://gitlab.archlinux.org/archlinux/packaging/packages/linux-firmware/-/blob/main/PKGBUILD?ref_type=heads#L103 よく使われる] すべてのファームウェアを取得できます。これはほとんどのユーザーに推奨される方法です。ディスク容量を節約したい場合は、自身のシステムで使用しているハードウェアベンダー向けのファームウェアのみを選んでインストールすることもできます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|必要なファームウェアがないと、システムが動作しない可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|linux-firmware}} によってインストールされる主なパッケージ:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|linux-firmware-amdgpu}} — [[AMD]] Radeon GPU&lt;br /&gt;
* {{Pkg|linux-firmware-atheros}} — [[Wikipedia:Atheros|Qualcomm Atheros]] 製 Wi-Fi および Bluetooth アダプター&lt;br /&gt;
* {{Pkg|linux-firmware-broadcom}} — [[Broadcom]] および [[Wikipedia:Cypress Semiconductor|Cypress]] 製ネットワークアダプター&lt;br /&gt;
* {{Pkg|linux-firmware-cirrus}} — [[Wikipedia:Cirrus Logic|Cirrus Logic]] 製オーディオデバイス&lt;br /&gt;
* {{Pkg|linux-firmware-intel}} — [[Intel]] 製オーディオデバイス、Bluetooth アダプター、GPU、ネットワークアダプター、NPU、Web カメラなどの各種デバイス&lt;br /&gt;
* {{Pkg|linux-firmware-mediatek}} — [[Wikipedia:MediaTek|MediaTek]] および [[Wikipedia:Ralink|Ralink]] 製ネットワークアダプター&lt;br /&gt;
* {{Pkg|linux-firmware-nvidia}} — [[NVIDIA]] 製 GPU および SoC&lt;br /&gt;
* {{Pkg|linux-firmware-other}} — その他の未分類デバイス&lt;br /&gt;
* {{Pkg|linux-firmware-radeon}} — [[ATI]] Radeon GPU&lt;br /&gt;
* {{Pkg|linux-firmware-realtek}} — [[Wikipedia:Realtek|Realtek]] 製ネットワークおよび Bluetooth アダプター&lt;br /&gt;
&lt;br /&gt;
オプションパッケージ:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|linux-firmware-liquidio}} — [[Wikipedia:Cavium|Cavium]] LiquidIO サーバーアダプター&lt;br /&gt;
* {{Pkg|linux-firmware-marvell}} — [[Wikipedia:Marvell Technology|Marvell]] 製ネットワークアダプター&lt;br /&gt;
* {{Pkg|linux-firmware-mellanox}} — [[Wikipedia:Mellanox Technologies|Mellanox]] 製 Spectrum スイッチ&lt;br /&gt;
* {{Pkg|linux-firmware-nfp}} — [[Wikipedia:Netronome|Netronome]] Flow Processor&lt;br /&gt;
* {{Pkg|linux-firmware-qcom}} — [[Wikipedia:Qualcomm|Qualcomm]] 製 SoC&lt;br /&gt;
* {{Pkg|linux-firmware-qlogic}} — [[Wikipedia:QLogic|QLogic]] 製ネットワークデバイス&lt;br /&gt;
&lt;br /&gt;
サードパーティ製パッケージ:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|alsa-firmware}} — {{Pkg|alsa-tools}} に含まれるローダープログラムおよびホットプラグ対応ファームウェアローダー、詳しくは [[ALSA#Firmware]] を参照&lt;br /&gt;
* {{Pkg|sane-gt68xx-firmware}} — [http://www.meier-geinitz.de/sane/gt68xx-backend/ gt68xx] ベースのスキャナー用&lt;br /&gt;
* {{Pkg|sigrok-firmware-fx2lafw}} — [https://sigrok.org/wiki/Fx2lafw FX2] ロジックアナライザー用&lt;br /&gt;
* {{Pkg|sof-firmware}} — [[Sound Open Firmware]] 用&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 読み込まれたファームウェアの検出 ===&lt;br /&gt;
&lt;br /&gt;
デバッグやインストールすべきファームウェアパッケージを特定するために、システムによってどのファームウェアが読み込まれたかを知りたい場合があります。&lt;br /&gt;
&lt;br /&gt;
これは [https://docs.kernel.org/admin-guide/dynamic-debug-howto.html dynamic debug] を使って確認できます:&lt;br /&gt;
&lt;br /&gt;
* [[カーネルパラメータ]] に {{ic|1=dyndbg=&amp;quot;func fw_log_firmware_info +p&amp;quot;}} を追加してください。なお、使用している [[ブートローダー]] によってはクォートをエスケープする必要があります。&lt;br /&gt;
* 以下のコマンドで読み込まれたファームウェアを一覧表示できます:  &lt;br /&gt;
  {{bc|# journalctl -kg &#039;loaded f&#039;}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Gentoo:Linux firmware]]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Advanced_Linux_Sound_Architecture&amp;diff=40792</id>
		<title>Advanced Linux Sound Architecture</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Advanced_Linux_Sound_Architecture&amp;diff=40792"/>
		<updated>2025-09-02T04:23:23Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* インストール */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:サウンド]]&lt;br /&gt;
[[cs:Advanced Linux Sound Architecture]]&lt;br /&gt;
[[de:Alsa]]&lt;br /&gt;
[[en:Advanced Linux Sound Architecture]]&lt;br /&gt;
[[es:Advanced Linux Sound Architecture]]&lt;br /&gt;
[[fa:ALSA]]&lt;br /&gt;
[[fr:Alsa]]&lt;br /&gt;
[[he:Advanced Linux Sound Architecture]]&lt;br /&gt;
[[it:Advanced Linux Sound Architecture]]&lt;br /&gt;
[[nl:Advanced Linux Sound Architecture]]&lt;br /&gt;
[[pt:Advanced Linux Sound Architecture]]&lt;br /&gt;
[[ru:Advanced Linux Sound Architecture]]&lt;br /&gt;
[[sk:Advanced Linux Sound Architecture]]&lt;br /&gt;
[[th:Advanced Linux Sound Architecture]]&lt;br /&gt;
[[tr:Gelişmiş_ses_mimarisi_(ALSA)]]&lt;br /&gt;
[[zh-hans:Advanced Linux Sound Architecture]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Advanced Linux Sound Architecture/設定例}}&lt;br /&gt;
{{Related|Advanced Linux Sound Architecture/トラブルシューティング}}&lt;br /&gt;
{{Related|サウンドシステム}}&lt;br /&gt;
{{Related|PC スピーカーのビープ音の無効化}}&lt;br /&gt;
{{Related|PulseAudio}}&lt;br /&gt;
{{Related|Open Sound System}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[[Wikipedia:ja:Advanced Linux Sound Architecture|Advanced Linux Sound Architecture]] (&#039;&#039;&#039;ALSA&#039;&#039;&#039;) は、サウンドカードのデバイスドライバを提供する Open Sound System (OSSv3) を置き換えるために開発された Linux カーネルコンポーネントです。デバイスドライバの他に、&#039;&#039;&#039;ALSA&#039;&#039;&#039; は、カーネルドライバと直接やりとりせずに高レベルの API を使ってドライバ機能を使いたいという開発者のために、ユーザ空間のライブラリも提供しています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
ALSA ドライバは Linux カーネルの一部です。ALSA ライブラリ({{Pkg|alsa-lib}})は通常、[[PKGBUILD#依存関係|依存関係]]としてインストールされます。そのため、手動でインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
起動時に自動で [[udev]] があなたのハードウェアを調べて、オーディオカード用の適切なカーネルモジュールをロードします。したがって、サウンドはすでに鳴らせるはずです。&lt;br /&gt;
&lt;br /&gt;
ただ、デフォルトでは全てのチャンネルはミュートにされています。[[#チャンネルのミュートを解除する|チャンネルのミュートを解除]]してください。&lt;br /&gt;
&lt;br /&gt;
=== ファームウェア ===&lt;br /&gt;
&lt;br /&gt;
[https://www.sofproject.org/ Sound Open Firmware] (SOF) ({{Pkg|sof-firmware}}) は通常、ノートパソコンで必須です。これらのノートパソコンはCadence Tensilica Xtensaアーキテクチャの [[Wikipedia:デジタル信号プロセッサ|DSP]] を搭載していることが多いため、[https://thesofproject.github.io/latest/platforms/ 対応プラットフォーム] のリストをご覧ください。&lt;br /&gt;
&lt;br /&gt;
ファームウェアがインストールされていない場合、[[journal]] には次のようなメッセージが表示されます:&lt;br /&gt;
&lt;br /&gt;
 error: sof firmware file is missing&lt;br /&gt;
 error: failed to load DSP firmware -2&lt;br /&gt;
 error: sof_probe_work failed err: -2&lt;br /&gt;
&lt;br /&gt;
SOF のトラブルシューティングの詳細については、[https://thesofproject.github.io/latest/getting_started/intel_debug/introduction.html Intel ハードウェア プラットフォームの概要] を参照してください。&lt;br /&gt;
&lt;br /&gt;
Cirrus Logic [https://www.cirrus.com/products/audio/boosted-amplifiers/laptop-audio スマートアンプ] を搭載したノートパソコンには、{{Pkg|linux-firmware-cirrus}} パッケージが必要です。こちらもご覧ください: &lt;br /&gt;
&lt;br /&gt;
* [https://docs.kernel.org/sound/codecs/cs35l56.html Cirrus Logic CS35L54/56/57/63 Boosted Smart Amplifiers 用オーディオドライバ]&lt;br /&gt;
* [https://gitlab.archlinux.org/archlinux/packaging/packages/linux-firmware/-/issues/19 archlinux/packaging/packages/linux-firmware#19]&lt;br /&gt;
&lt;br /&gt;
{{Pkg|linux-firmware-intel}} パッケージは一部の Intel オーディオデバイスに必要です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|alsa-firmware}} パッケージには、[https://github.com/alsa-project/alsa-firmware 特定の] サウンド カードに必要な可能性があるファームウェアが含まれています。&lt;br /&gt;
&lt;br /&gt;
あわせて [[#デフォルトサウンドカードの設定]] および [[Linux ファームウェア]] も参照。&lt;br /&gt;
&lt;br /&gt;
=== ALSA ユーティリティ ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|alsa-utils}} パッケージを[[インストール]]してください、サウンドデバイスをコンソールや端末から設定するための {{ic|alsamixer}} ユーザー空間ツールが含まれています。また、[[#高品質なリサンプリング|高品質なリサンプリング]]や[[#アップ・ダウンミキシング|アップ・ダウンミキシング]]などの高度な機能を使いたい場合は {{Pkg|alsa-plugins}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
=== ALSA と systemd ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|alsa-utils}} パッケージには、それぞれ起動時とシャットダウン時に動くように設定された {{ic|alsa-restore.service}} と {{ic|alsa-state.service}} が含まれています。&lt;br /&gt;
&lt;br /&gt;
自動的にインストールされ有効化されるため、特に設定は必要ありません。{{ic|systemctl}} を使うことでステータスを確認できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=ALSA は設定を {{ic|/var/lib/alsa/asound.state}} に保存します。}}&lt;br /&gt;
&lt;br /&gt;
=== ユーザー権限 ===&lt;br /&gt;
&lt;br /&gt;
通常、ローカルユーザーは音楽を再生したり、ミキサーレベルを変更する権限があります。&lt;br /&gt;
&lt;br /&gt;
リモートユーザーが ALSA を使用できるようにするには、ユーザーを {{ic|audio}} グループに[[ユーザーとグループ#グループ管理|追加]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{ic|audio}} グループに含まれているユーザーは直接デバイスにアクセスできるので、アプリケーションから排他的にアウトプットしたり(ソフトウェアミキシングが破壊されます)、高速ユーザー切り替えや multiseat を破壊してしまうおそれがあります。よって、特に必要がないのならばユーザーを {{ic|audio}} グループに追加することは&#039;&#039;&#039;推奨されません&#039;&#039;&#039;[https://wiki.ubuntu.com/Audio/TheAudioGroup]}}&lt;br /&gt;
&lt;br /&gt;
=== OSS との互換性 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|/dev/dsp}} や {{ic|/dev/snd/seq}} が存在しないとアプリケーションがエラーを吐く場合は以下の設定が必要です。}}&lt;br /&gt;
&lt;br /&gt;
ALSA には [[OSS]] のコールに介入して ALSA を使うようにさせる機能があります。このエミュレーションレイヤーは {{ic|/dev/dsp}} を開いて音声データを直接書き込むような古いアプリケーションで有用です。OSS やエミュレーションライブラリがないと、{{ic|/dev/dsp}} が見つからずにアプリケーションは音声を鳴らすことができません。&lt;br /&gt;
&lt;br /&gt;
OSS アプリケーションに dmix (ソフトウェアミキシング) を扱わせたい場合は {{Pkg|alsa-oss}} パッケージをインストールして {{ic|snd-seq-oss}}, {{ic|snd-pcm-oss}}, {{ic|snd-mixer-oss}} [[カーネルモジュール]]をロードして OSS エミュレーションモジュールを有効にしてください。&lt;br /&gt;
&lt;br /&gt;
==チャンネルのミュートを解除する==&lt;br /&gt;
&lt;br /&gt;
現在のバージョンでは ALSA をインストールしたあと全てのチャンネルは&#039;&#039;&#039;デフォルトでミュートされています&#039;&#039;&#039;。手動でチャンネルをアンミュートする必要があります。&lt;br /&gt;
&lt;br /&gt;
===amixer を使ってミュートを解除===&lt;br /&gt;
&lt;br /&gt;
コマンドラインで {{ic|amixer}} を使うことでサウンドカードのマスターボリュームのミュートを解除できます:&lt;br /&gt;
&lt;br /&gt;
 $ amixer sset Master unmute&lt;br /&gt;
&lt;br /&gt;
===alsamixer を使ってミュートを解除===&lt;br /&gt;
&lt;br /&gt;
{{ic|alsamixer}} ncurses UI を使えば簡単にミュートを解除できます:&lt;br /&gt;
&lt;br /&gt;
 $ alsamixer&lt;br /&gt;
&lt;br /&gt;
{{ic|alsamixer}} の、チャンネルの下の {{ic|MM}} ラベルはそのチャンネルがミュートになっていることを示しています。{{ic|00}} はミュートが解除されていることを示しています。&lt;br /&gt;
&lt;br /&gt;
{{ic|←}} や {{ic|→}} キーを押して {{ic|Master}} や {{ic|PCM}} チャンネルに移動して {{ic|m}} キーを押してミュートを解除してください。{{ic|↑}} キーを押してボリュームを上げて値を {{ic|0}} dB ゲインにしてください。ゲインは左上の {{ic|項目:}} の隣に表示されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ゲインを大きくしすぎると音にノイズが混じります。}}&lt;br /&gt;
&lt;br /&gt;
=== 5.1/7.1 サウンドのミュートの解除 ===&lt;br /&gt;
&lt;br /&gt;
5.1 または 7.1 サラウンドを鳴らしたいときは Front, Surround, Center, LFE (サブウーファー), Side などの他のチャンネルも同じようにミュートを解除してください（これらのチャンネル名は Intel HD Audio のものです、チャンネル名はハードウェアによって変わっているかもしれません）。&lt;br /&gt;
&lt;br /&gt;
{{Note|ミュートを解除しただけではステレオ音源は自動でアップミキシングされません。[[#アップ・ダウンミキシング]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== マイクの有効化 ===&lt;br /&gt;
&lt;br /&gt;
マイクロフォンを有効にするには、Capture タブに {{ic|F4}} で切り替えてチャンネルを {{ic|Space}} で有効にしてください。マイクが使えない時は [[Advanced Linux Sound Architecture/トラブルシューティング#マイクロフォン]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== テスト ===&lt;br /&gt;
&lt;br /&gt;
次に、音が鳴るかテストしてみましょう:&lt;br /&gt;
&lt;br /&gt;
 $ speaker-test -c 2&lt;br /&gt;
&lt;br /&gt;
{{ic|-c}} はスピーカーによって変えて下さい。例えば 7.1 では {{ic|-c 8}} を使います:&lt;br /&gt;
&lt;br /&gt;
 $ speaker-test -c 8&lt;br /&gt;
&lt;br /&gt;
間違ったデバイスから音が出力される場合、{{ic|-D}} 引数を使って手動でデバイスを指定してみてください:&lt;br /&gt;
&lt;br /&gt;
 $ speaker-test -D default:PCH -c 8&lt;br /&gt;
&lt;br /&gt;
{{ic|-D}} では PCM チャンネルの名前を値として指定できます。以下のコマンドで確認することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;$ aplay -L | grep :CARD&amp;lt;/nowiki&amp;gt;|2=&lt;br /&gt;
default:CARD=PCH  # &#039;default:PCH&#039; is the PCM channel name for -D&lt;br /&gt;
sysdefault:CARD=PCH&lt;br /&gt;
front:CARD=PCH,DEV=0&lt;br /&gt;
surround21:CARD=PCH,DEV=0&lt;br /&gt;
surround40:CARD=PCH,DEV=0&lt;br /&gt;
surround41:CARD=PCH,DEV=0&lt;br /&gt;
surround50:CARD=PCH,DEV=0&lt;br /&gt;
surround51:CARD=PCH,DEV=0&lt;br /&gt;
surround71:CARD=PCH,DEV=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
音が出ない場合、[[#設定]]や [[Advanced Linux Sound Architecture/トラブルシューティング]]に進んで問題を解決してください。&lt;br /&gt;
&lt;br /&gt;
===ノート===&lt;br /&gt;
&lt;br /&gt;
* カードによってはアナログサウンドを聞くためにはデジタル出力をミュートする必要があります。Soundblaster Audigy LS では IEC958 チャンネルをミュートしてください。&lt;br /&gt;
* マシンによっては (Thinkpad T61 など)、Speaker チャンネルのミュートを解除する必要があります。&lt;br /&gt;
* マシンによっては (Dell E6400 など)、同じく {{ic|Front}} や {{ic|Headphone}} チャンネルのミュートを解除する必要があります。&lt;br /&gt;
* 再起動するとボリューム調整が元に戻ってしまう場合、root で alsamixer を実行してみて下さい。&lt;br /&gt;
&lt;br /&gt;
==設定==&lt;br /&gt;
&lt;br /&gt;
システムの設定ファイルは {{ic|/etc/asound.conf}} で、ユーザー別の設定ファイルは {{ic|~/.asoundrc}} です。&lt;br /&gt;
&lt;br /&gt;
===デフォルトサウンドカードの設定===&lt;br /&gt;
&lt;br /&gt;
起動毎にサウンドカードの順番が変わってしまうときは、{{ic|/etc/modprobe.d}} 内の {{ic|.conf}} で終わるファイル (例: {{ic|/etc/modprobe.d/alsa-base.conf}}) に順番を明記することができます。&lt;br /&gt;
例えば、mia サウンドカードを #0 にしたい場合は:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/alsa-base.conf|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
options snd slots=snd_mia,snd_hda_intel&lt;br /&gt;
options snd_mia index=0&lt;br /&gt;
options snd_hda_intel index=1&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;nowiki&amp;gt;$ cat /proc/asound/modules&amp;lt;/nowiki&amp;gt;}} を使ってロードされているサウンドモジュールとその順番を取得してください。{{ic|&amp;lt;nowiki&amp;gt;$ lsmod | grep snd&amp;lt;/nowiki&amp;gt;}} を使ってデバイス・モジュールのリストを取得してください。この設定では {{ic|snd_mia}} を使うサウンドカードと {{ic|snd_hda_intel}} を使うサウンドカード (例: オンボード) を一枚づつ挿していると仮定しています。&lt;br /&gt;
&lt;br /&gt;
index を {{ic|-2}} にすることで ALSA にカードを優先的に使わせないようにすることも可能です。Linux Mint や Ubuntu などのディストリビューションでは以下の設定を使うことで USB やその他の&amp;quot;一般的でない&amp;quot;ドライバに index {{ic|0}} を与えないようにしています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/alsa-base.conf|2=&lt;br /&gt;
options bt87x index=-2&lt;br /&gt;
options cx88_alsa index=-2&lt;br /&gt;
options saa7134-alsa index=-2&lt;br /&gt;
options snd-atiixp-modem index=-2&lt;br /&gt;
options snd-intel8x0m index=-2&lt;br /&gt;
options snd-via82xx-modem index=-2&lt;br /&gt;
options snd-usb-audio index=-2&lt;br /&gt;
options snd-usb-caiaq index=-2&lt;br /&gt;
options snd-usb-ua101 index=-2&lt;br /&gt;
options snd-usb-us122l index=-2&lt;br /&gt;
options snd-usb-usx2y index=-2&lt;br /&gt;
options snd-pcsp index=-2&lt;br /&gt;
options snd-usb-audio index=-2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
変更を反映させるには再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使ってデフォルト PCM を選択する ====&lt;br /&gt;
&lt;br /&gt;
設定ファイルで、以下を追加してください:&lt;br /&gt;
  pcm.!default {&lt;br /&gt;
    type plug&lt;br /&gt;
    slave.pcm {&lt;br /&gt;
      @func getenv&lt;br /&gt;
      vars [ ALSAPCM ]&lt;br /&gt;
      default &amp;quot;hw:Audigy2&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
default の行はあなたのカードの名前に置き換える必要があります (ここでは {{ic|Audigy2}} を例にしています)。{{ic|aplay -l}} で名前を取得することができ &#039;&#039;&#039;surround51&#039;&#039;&#039; のように PCM を使うことも可能です。ただしマイクロフォンを使う必要がある場合は full-duplex PCM をデフォルトにすると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
これで環境変数 {{ic|ALSAPCM}} を変更することでサウンドカードを選択できるようになります。カードを選択できない全てのプログラムで問題なく使えます。&lt;br /&gt;
例えば、&#039;&#039;&#039;mix51to20&#039;&#039;&#039; という名前の downmix PCM を書いたときは {{ic|mplayer}} を {{ic|ALSAPCM&amp;amp;#61;mix51to20 mplayer example_6_channel.wav}} で使うことができます。&lt;br /&gt;
&lt;br /&gt;
==== ハードウェアを直接割り当てる ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|この設定では他のアプリケーションからデバイスが使用不可能になります。この方法は、デジタル出力や音楽サーバーに捧げる場合など、わざとそうした場合にのみ推奨されます。サウンドサーバーや[[Advanced_Linux_Sound_Architecture#ミキシング|ミキシング]]無しの設定は[[Chromium]]等の幾つかのアプリケーションでサポートされていません。}}&lt;br /&gt;
&lt;br /&gt;
まずデフォルトに設定したいカード・デバイスの id を {{ic|aplay -l}} で見つける必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ aplay -l|2=&lt;br /&gt;
**** List of PLAYBACK Hardware Devices ****&lt;br /&gt;
card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog]&lt;br /&gt;
  Subdevices: 1/1&lt;br /&gt;
  Subdevice #0: subdevice #0&lt;br /&gt;
card 0: Intel [HDA Intel], device 1: Conexant Digital [Conexant Digital]&lt;br /&gt;
  Subdevices: 1/1&lt;br /&gt;
  Subdevice #0: subdevice #0&lt;br /&gt;
card 1: JamLab [JamLab], device 0: USB Audio [USB Audio]&lt;br /&gt;
  Subdevices: 1/1&lt;br /&gt;
  Subdevice #0: subdevice #0&lt;br /&gt;
card 2: Audio [Altec Lansing XT1 - USB Audio], device 0: USB Audio [USB Audio]&lt;br /&gt;
  Subdevices: 1/1&lt;br /&gt;
  Subdevice #0: subdevice #0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
例えば、このリストの最後のエントリはカード ID 2,カード名 Audio でデバイス ID 0 です。このカードをデフォルトにするには、システム全体のファイル {{ic|/etc/asound.conf}} かユーザー定義ファイル {{ic|~/.asoundrc}} のどちらかを使ってください。ファイルが存在しないときは作成する必要があります。そして以下のオプションを適切なカード・デバイス id を使って挿入して下さい。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
pcm.!default {&lt;br /&gt;
	type hw&lt;br /&gt;
	card Audio #又はcard 2&lt;br /&gt;
	hint&lt;br /&gt;
	 show on #幾つかのアプリケーションで必要&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ctl.!default {&lt;br /&gt;
	type hw           &lt;br /&gt;
	card Audio&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.dmixer {&lt;br /&gt;
	type dmix&lt;br /&gt;
	ipc_key 2048&lt;br /&gt;
	slave {&lt;br /&gt;
		pcm &amp;quot;hw:Audio&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
pcm.dsnooper {&lt;br /&gt;
	type dsnoop&lt;br /&gt;
	ipc_key 2048&lt;br /&gt;
	slave {&lt;br /&gt;
		pcm &amp;quot;hw:Audio&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
カードIDではなくカード名の使用をおすすめします。デバイスの順番に依存しないためです。&lt;br /&gt;
&lt;br /&gt;
{{ic|pcm.dmixer}}と{{ic|pcm.dsnooper}}は[[Advanced_Linux_Sound_Architecture#ミキシング|ミキシング]]が必要なアプリケーションの為の予備です。&lt;br /&gt;
{{Accuracy|General method to select alsa device should be introduced such as environment value.}}&lt;br /&gt;
例えば、{{ic|1=chromium -alsa-output-device=pcm.dmixer -alsa-input-device=pcm.dsnooper}}でChromiumがミキシングを使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|Asus U32U シリーズではカードの pcm と ctl の両方を 1 に設定する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
&#039;pcm&#039; オプションは音声の再生で使われるカード・デバイスに影響を与え、&#039;ctl&#039; オプションは alsamixer などのコントロールユーティリティで使われるカードに影響を与えます。&lt;br /&gt;
&lt;br /&gt;
アプリケーション (mplayer など) を（再）起動すれば変更はすぐ適用されます。また、&#039;&#039;aplay&#039;&#039; などのコマンドを使ってテストすることが可能です。&lt;br /&gt;
&lt;br /&gt;
 $ aplay -D default:PCH &#039;&#039;your_favourite_sound.wav&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
asound 設定に関するエラーが表示される場合は、[http://www.alsa-project.org/main/index.php/Asoundrc#The_default_plugin 上流のドキュメント] を確認して設定ファイルフォーマットの変更を確認してください。&lt;br /&gt;
&lt;br /&gt;
===サウンドモジュールがロードされていることを確かめる===&lt;br /&gt;
&lt;br /&gt;
udev が正しくサウンドカードを検知しているかチェックするには次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;$ lsmod | grep &#039;^snd&#039; | column -t&amp;lt;/nowiki&amp;gt;|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
snd_hda_codec_hdmi     22378   4&lt;br /&gt;
snd_hda_codec_realtek  294191  1&lt;br /&gt;
snd_hda_intel          21738   1&lt;br /&gt;
snd_hda_codec          73739   3  snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel&lt;br /&gt;
snd_hwdep              6134    1  snd_hda_codec&lt;br /&gt;
snd_pcm                71032   3  snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec&lt;br /&gt;
snd_timer              18992   1  snd_pcm&lt;br /&gt;
snd                    55132   9  snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer&lt;br /&gt;
snd_page_alloc         7017    2  snd_hda_intel,snd_pcm&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
出力が上と同じようになっていれば、サウンドドライバが首尾よく自動検出されています。&lt;br /&gt;
{{Note|{{ic|udev&amp;gt;&amp;amp;#61;171}} から、OSS エミュレーションモジュール ({{ic|snd_seq_oss, snd_pcm_oss, snd_mixer_oss}}) はデフォルトではロードされないようになりました: 必要ならば[[カーネルモジュール#ロード|手動でロードしてください]]。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/dev/snd/}} ディレクトリにデバイスファイルがあるか調べてもいいかもしれません:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ls -l /dev/snd|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
total 0&lt;br /&gt;
crw-rw----  1 root audio 116,  0 Apr  8 14:17 controlC0&lt;br /&gt;
crw-rw----  1 root audio 116, 32 Apr  8 14:17 controlC1&lt;br /&gt;
crw-rw----  1 root audio 116, 24 Apr  8 14:17 pcmC0D0c&lt;br /&gt;
crw-rw----  1 root audio 116, 16 Apr  8 14:17 pcmC0D0p&lt;br /&gt;
crw-rw----  1 root audio 116, 25 Apr  8 14:17 pcmC0D1c&lt;br /&gt;
crw-rw----  1 root audio 116, 56 Apr  8 14:17 pcmC1D0c&lt;br /&gt;
crw-rw----  1 root audio 116, 48 Apr  8 14:17 pcmC1D0p&lt;br /&gt;
crw-rw----  1 root audio 116,  1 Apr  8 14:17 seq&lt;br /&gt;
crw-rw----  1 root audio 116, 33 Apr  8 14:17 timer&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|IRC やフォーラムで助けを求める時は、上記のコマンドの出力を貼って下さい。}}&lt;br /&gt;
&lt;br /&gt;
とにかく &#039;&#039;&#039;controlC0&#039;&#039;&#039; や &#039;&#039;&#039;pcmC0D0p&#039;&#039;&#039; のようなデバイスがあれば、サウンドモジュールが正しくロードされていることを示しています。&lt;br /&gt;
&lt;br /&gt;
そうなってないのなら、あなたのサウンドモジュールは正しく検出されていません。これを解決するには、手動でモジュールのロードを試して下さい:&lt;br /&gt;
&lt;br /&gt;
* サウンドカードのモジュールを確認します: [http://www.alsa-project.org/main/index.php/Matrix:Main ALSA Soundcard Matrix] モジュールには名前の前に &#039;snd-&#039; が付きます (例: {{ic|snd-via82xx}})。&lt;br /&gt;
* [[カーネルモジュール#ロード|モジュールをロードします]]。&lt;br /&gt;
* {{ic|/dev/snd}} の中のデバイスファイルを確認したり（上述）、{{ic|alsamixer}} や {{ic|amixer}} に変化がないか調べて下さい。&lt;br /&gt;
* {{ic|snd-NAME-OF-MODULE}} と {{ic|snd-pcm-oss}} を[[カーネルモジュール#ロード|起動時にロード]]するよう設定して下さい。&lt;br /&gt;
&lt;br /&gt;
===S/PDIF 出力===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:ja:S/PDIF|S/PDIF]] はコンピュータとオーディオアンプを接続するときにしばしば使われるデジタルオーディオインターフェイスです (5.1/7.1 サラウンドのホームシアターなど)。&lt;br /&gt;
{{note|サウンドカードによっては以下の瀬底でアナログ出力が無効になることがあります (例: Sound Blaster Audigy 2)。}}&lt;br /&gt;
使用している[[シェル]]にあわせて、シェルの設定ファイルに以下の行を追加してください:&lt;br /&gt;
 amixer -c 0 cset name=&#039;IEC958 Playback Switch&#039; on&lt;br /&gt;
&lt;br /&gt;
カードのデジタル出力の名前は以下のコマンドで確認できます:&lt;br /&gt;
 $ amixer scontrols&lt;br /&gt;
&lt;br /&gt;
===イコライザー===&lt;br /&gt;
&lt;br /&gt;
====AlsaEqual を使う (UI あり)====&lt;br /&gt;
&lt;br /&gt;
{{AUR|alsaequal}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
パッケージをインストールした後、以下を ALSA 設定ファイル ({{ic|~/.asoundrc}} か {{ic|/etc/asound.conf}}) に挿入してください:&lt;br /&gt;
&lt;br /&gt;
 ctl.equal {&lt;br /&gt;
  type equal;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 pcm.plugequal {&lt;br /&gt;
   type equal;&lt;br /&gt;
   # Modify the line below if you do not&lt;br /&gt;
   # want to use sound card 0.&lt;br /&gt;
   #slave.pcm &amp;quot;plughw:0,0&amp;quot;;&lt;br /&gt;
   #by default we want to play from more sources at time:&lt;br /&gt;
   slave.pcm &amp;quot;plug:dmix&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 #pcm.equal {&lt;br /&gt;
   # If you do not want the equalizer to be your&lt;br /&gt;
   # default soundcard comment the following&lt;br /&gt;
   # line and uncomment the above line. (You can&lt;br /&gt;
   # choose it as the output device by addressing&lt;br /&gt;
   # it with specific apps,eg mpg123 -a equal 06.Back_In_Black.mp3)&lt;br /&gt;
 pcm.!default {&lt;br /&gt;
   type plug;&lt;br /&gt;
   slave.pcm plugequal;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
x86_64 環境で {{Pkg|lib32-flashplugin}}{{Broken package link|{{aur-mirror|lib32-flashplugin}}}} を使用している場合、上記の設定では flash で音が鳴りません。以下の設定で flash の音を有効にできますが、{{ic|pcm &amp;quot;hw:0,0&amp;quot;}} の行でサウンドカードを手動で指定する必要があります (利用可能なサウンドカードとカードのデバイス番号は {{ic|aplay -l}} で確認できます):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/asound.conf|2=&lt;br /&gt;
pcm.dmixer {&lt;br /&gt;
    type dmix&lt;br /&gt;
    ipc_key 2048&lt;br /&gt;
    slave {&lt;br /&gt;
        pcm &amp;quot;hw:0,0&amp;quot;&lt;br /&gt;
        buffer_size 16384&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ctl.equal {&lt;br /&gt;
    type equal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.equalizer {&lt;br /&gt;
    type equal&lt;br /&gt;
    slave.pcm &amp;quot;plug:dmixer&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.!default {&lt;br /&gt;
    type plug&lt;br /&gt;
    slave.pcm equalizer&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次のコマンドを使ってイコライザーを変更することができます:&lt;br /&gt;
 $ alsamixer -D equal&lt;br /&gt;
&lt;br /&gt;
設定ファイルはユーザーごとに違うので注意してください。{{ic|~/.alsaequal.bin}}　に保存されます。&lt;br /&gt;
AlsaEqual を異なるユーザーの [[Music Player Daemon|mpd]] などのソフトウェアで使いたいときは、次を実行することで設定できます:&lt;br /&gt;
 # su mpd -c &#039;alsamixer -D equal&#039;&lt;br /&gt;
もしくは、ユーザーの home にある {{ic|.alsaequal.bin}} のシンボリックリンクを作って下さい。&lt;br /&gt;
&lt;br /&gt;
=====AlsaEqual の管理=====&lt;br /&gt;
&lt;br /&gt;
{{AUR|alsaequal-mgr}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
通常通りイコライザーを設定してください:&lt;br /&gt;
 $ alsamixer -D equal&lt;br /&gt;
&lt;br /&gt;
状態に満足したら、名前を付けて保存してください (例: &amp;quot;foo&amp;quot;):&lt;br /&gt;
 $ alsaequal-mgr save foo&lt;br /&gt;
&lt;br /&gt;
イコライザーの状態 &amp;quot;foo&amp;quot; は次のコマンドで戻すことができます:&lt;br /&gt;
 $ alsaequal-mgr load foo&lt;br /&gt;
&lt;br /&gt;
ゲームや映画、音楽のジャンル別、VoIP アプリなどそれぞれに合わせてイコライザーの状態を作成し、必要なときにリロードできます。&lt;br /&gt;
&lt;br /&gt;
オプションの詳細は [https://xyne.archlinux.ca/projects/alsaequal-mgr/ project page] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
====mbeq を使う====&lt;br /&gt;
&lt;br /&gt;
{{Note|この方法では ladspa プラグインを使う必要があります。サウンドを再生する際に CPU の使用量が多めです。さらに、ステレオサウンドを念頭に置いて作成されています (例: ヘッドフォン)。}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|alsa-plugins}}, {{Pkg|ladspa}}, {{Pkg|swh-plugins}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
まだ {{ic|~/.asoundrc}} か {{ic|/etc/asound.conf}} ファイルを作成していない場合は、どちらかを作成して以下を挿入して下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/asound.conf|2=&amp;lt;nowiki&amp;gt;pcm.eq {&lt;br /&gt;
  type ladspa&lt;br /&gt;
&lt;br /&gt;
  # The output from the EQ can either go direct to a hardware device&lt;br /&gt;
  # (if you have a hardware mixer, e.g. SBLive/Audigy) or it can go&lt;br /&gt;
  # to the software mixer shown here.&lt;br /&gt;
  #slave.pcm &amp;quot;plughw:0,0&amp;quot;&lt;br /&gt;
  slave.pcm &amp;quot;plug:dmix&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # Sometimes you may need to specify the path to the plugins,&lt;br /&gt;
  # especially if you have just installed them.  Once you have logged&lt;br /&gt;
  # out/restarted this should not be necessary, but if you get errors&lt;br /&gt;
  # about being unable to find plugins, try uncommenting this.&lt;br /&gt;
  #path &amp;quot;/usr/lib/ladspa&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  plugins [&lt;br /&gt;
    {&lt;br /&gt;
      label mbeq&lt;br /&gt;
      id 1197&lt;br /&gt;
      input {&lt;br /&gt;
        #this setting is here by example, edit to your own taste&lt;br /&gt;
        #bands: 50hz, 100hz, 156hz, 220hz, 311hz, 440hz, 622hz, 880hz, 1250hz, 1750hz, 25000hz,&lt;br /&gt;
        #50000hz, 10000hz, 20000hz&lt;br /&gt;
        controls [ -5 -5 -5 -5 -5 -10 -20 -15 -10 -10 -10 -10 -10 -3 -2 ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 # Redirect the default device to go via the EQ - you may want to do&lt;br /&gt;
 # this last, once you are sure everything is working.  Otherwise all&lt;br /&gt;
 # your audio programs will break/crash if something has gone wrong.&lt;br /&gt;
&lt;br /&gt;
 pcm.!default {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave.pcm &amp;quot;eq&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 # Redirect the OSS emulation through the EQ too (when programs are running through &amp;quot;aoss&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 pcm.dsp0 {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave.pcm &amp;quot;eq&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==高品質なリサンプリング==&lt;br /&gt;
&lt;br /&gt;
ソフトウェアミキシングが有効になっていると、ALSA は全てを同じ周波数 (デフォルトで 48000) にリサンプリングします。dmix はサウンドの品質を落としてしまう低品質リサンプリングアルゴリズムを使っています。&lt;br /&gt;
&lt;br /&gt;
{{pkg|alsa-plugins}} と {{pkg|libsamplerate}} をインストールして下さい。&lt;br /&gt;
&lt;br /&gt;
デフォルトの変換器を libsamplerate に変更します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/asound.conf|defaults.pcm.rate_converter &amp;quot;samplerate_best&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.asoundrc|defaults.pcm.rate_converter &amp;quot;samplerate_best&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;samplerate_best&#039;&#039;&#039; は最高のサウンド品質を提供しますが、リアルタイムサンプリングをするには CPU サイクルが大量に必要になるので使うにはそこそこの CPU が必須です。また、dmix の設定で buffer_size を基本の 4096 から 8192 か 16384 に調整する必要もあるかもしれません。他のアルゴリズム (&#039;&#039;&#039;samplerate&#039;&#039;&#039; など) も利用できますがデフォルトのリサンプラーに比べておそらくあまり改善はないでしょう。&lt;br /&gt;
&lt;br /&gt;
{{Warning|環境によっては、samplerate_best を有効にすると flashplayer でサウンドが出力されなくなるという問題が発生します。}}&lt;br /&gt;
&lt;br /&gt;
==アップ・ダウンミキシング==&lt;br /&gt;
&lt;br /&gt;
===アップミキシング===&lt;br /&gt;
&lt;br /&gt;
音楽などのステレオ音源を 5.1 や 7.1 サウンドシステムをフルに使って再生するには、アップミキシングを使う必要があります。黎明期ではこれをするのはとても難しいものでした。ですが現在では簡単にアップミキシングができるプラグインがあります。{{Pkg|alsa-plugins}} に含まれている {{ic|upmix}} プラグインを使います。&lt;br /&gt;
&lt;br /&gt;
それから以下を ALSA 設定ファイル ({{ic|/etc/asound.conf}} か {{ic|~/.asoundrc}}) に追加してください:&lt;br /&gt;
 pcm.upmix71 {&lt;br /&gt;
     type upmix&lt;br /&gt;
     slave.pcm &amp;quot;surround71&amp;quot;&lt;br /&gt;
     delay 15&lt;br /&gt;
     channels 8&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
上の例は 7.1 のものですが 5.1 や 4.0 にも簡単に変えられます。&lt;br /&gt;
&lt;br /&gt;
設定をするとアップミキシングに使う新しい pcm が加わります。全てのサウンド音源をこの pcm に通したい時は、次のようにデフォルトとして追加してください:&lt;br /&gt;
&lt;br /&gt;
 pcm.!default &amp;quot;plug:upmix71&amp;quot;&lt;br /&gt;
&lt;br /&gt;
このプラグインは使うにあたって特に設定を変える必要はありません。&lt;br /&gt;
プラグインが動作しないときは、以下のようにしてアップミキシングする PCM のための dmixer を自分で設定してください: &lt;br /&gt;
 pcm.dmix6 {&lt;br /&gt;
     type asym&lt;br /&gt;
     playback.pcm {&lt;br /&gt;
         type dmix&lt;br /&gt;
         ipc_key 567829&lt;br /&gt;
         slave {&lt;br /&gt;
             pcm &amp;quot;hw:0,0&amp;quot;&lt;br /&gt;
             channels 6&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
そして &amp;quot;surround71&amp;quot; のかわりに &amp;quot;dmix6&amp;quot; を使って下さい。 &lt;br /&gt;
音がスキップしたり歪むときは、buffer_size を増やす (例: 32768) か [[#高品質なリサンプリング|高品質リサンプラー]]を使ってください。&lt;br /&gt;
&lt;br /&gt;
===ダウンミキシング===&lt;br /&gt;
5.1 サウンドの映画をステレオシステムで視聴するときなど、音源をステレオにダウンミキシングしたい場合、{{Pkg|alsa-plugins}} に含まれている {{ic|vdownmix}} プラグインを使って下さい。&lt;br /&gt;
&lt;br /&gt;
設定ファイルに以下を追加して下さい:&lt;br /&gt;
&lt;br /&gt;
 pcm.!surround51 {&lt;br /&gt;
     type vdownmix&lt;br /&gt;
     slave.pcm &amp;quot;default&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 pcm.!surround40 {&lt;br /&gt;
     type vdownmix&lt;br /&gt;
     slave.pcm &amp;quot;default&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{{Note|1=これだけではダウンミキシングが動作しないかもしれません、[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=541786] を参照してください。その場合、{{ic|pcm.!default &amp;quot;plug:surround51&amp;quot;}} か {{ic|pcm.!default &amp;quot;plug:surround40&amp;quot;}} を追加する必要があります。{{ic|vdownmix}} プラグはひとつだけ使うことができます; 7.1 チャンネルのときは、上の設定の代わりに {{ic|surround71}} を使って下さい。{{ic|vdownmix}} と {{ic|dmix}} の両方を動かす設定例が[https://bbs.archlinux.org/viewtopic.php?id=167275 ここ]にあります。}}&lt;br /&gt;
&lt;br /&gt;
==ミキシング==&lt;br /&gt;
&lt;br /&gt;
ミキシングを使うことで複数のアプリケーションが同時に音を出力することが可能になります。外付けのサウンドカードはほとんどの場合ハードウェアミキシングをサポートしており、可能であればデフォルトで有効にされます。内蔵のマザーボードに載っているサウンドカード (Intel HD Audio など) は基本的にハードウェアミキシングをサポートしていません。そのようなカードでは、dmix という名前の ALSA プラグインを使ってソフトウェアミキシングを利用します。この機能はハードウェアミキシングが使えない場合に自動で有効にされます。&lt;br /&gt;
&lt;br /&gt;
===手動で dmix を有効にする===&lt;br /&gt;
&lt;br /&gt;
{{Note|ALSA 1.0.9rc2 以上ではアナログサウンドに dmix を設定する必要はありません。ハードウェアミキシングをサポートしていないサウンドカードのために Dmix はデフォルトで有効にされています。}}&lt;br /&gt;
&lt;br /&gt;
ソフトウェアミキシングが動作しない場合は、あなたの home フォルダに以下の内容で .asoundrc ファイルを作成してください。&lt;br /&gt;
&lt;br /&gt;
 pcm.dsp {&lt;br /&gt;
     type plug&lt;br /&gt;
     slave.pcm &amp;quot;dmix&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
これでソフトウェアミキシングが有効になり複数のアプリケーションがサウンドカードを使えるようになるはずです。使えない場合は、{{ic|/etc/asound.conf}} の中身を全て上のように置き換えてみて下さい。&lt;br /&gt;
&lt;br /&gt;
S/PDIF などのデジタル音声出力をするために、ALSA パッケージは依然として dmix をデフォルトで有効にしていません。そのため、上の dmix 設定は S/PDIF デバイスで dmix を有効にするために使うことはできません。&lt;br /&gt;
&lt;br /&gt;
一般的な問題と解決方法は [[Advanced Linux Sound Architecture/トラブルシューティング]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===ハードウェアミキシング===&lt;br /&gt;
&lt;br /&gt;
====サポート====&lt;br /&gt;
&lt;br /&gt;
ハードウェアでミキシングをサポートしているオーディオチップセットを持っている場合、設定は必要ありません。ほとんど全てのオンボード・オーディオチップセットはハードウェアミキシングをサポートしていないので、ソフトウェアでミキシングする必要があります（上述）。ハードウェアミキシングをサポートしているサウンドカードは少なく、Linux でサポートされているサウンドカードは以下になります:&lt;br /&gt;
&lt;br /&gt;
* Creative SoundBlaster Live! (5.1 モデル)&lt;br /&gt;
* Creative SoundBlaster Audigy (複数)&lt;br /&gt;
* Creative SoundBlaster Audidy 2 (ZS モデル)&lt;br /&gt;
* Creative SoundBlaster Audigy 4 (Pro モデル)&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 上記のカードのローエンド版 (Audigy SE, Audigy 2 NX, SoundBlaster Live! 24bit, SoundBlaster Live! 7.1) は別のチップを使っているためハードウェアミキシングに対応していません。&lt;br /&gt;
* オンボードの VIA8237 チップは4ストリームのハードウェアミキシングに対応していますが、マザーボードによってはそれが3ストリームになったり (4番目のストリームが音を出さない) あるいは使えないこともあります。動作したとしても、他の方法と比べて音質は劣ります。}}&lt;br /&gt;
&lt;br /&gt;
====フィックス====&lt;br /&gt;
&lt;br /&gt;
64-bit Arch で Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 02) を使っている場合、Enemy Territory でサウンドを鳴らすには以下を実行して下さい:&lt;br /&gt;
 echo &amp;quot;et.x86 0 0 direct&amp;quot; &amp;gt; /proc/asound/card0/pcm0p/oss&lt;br /&gt;
 echo &amp;quot;et.x86 0 0 disable&amp;quot; &amp;gt; /proc/asound/card0/pcm0c/oss&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== USB サウンドカードのホットプラグ ===&lt;br /&gt;
&lt;br /&gt;
USB サウンドカードが挿入されたときに、自動的に第一のアウトプットデバイスにするために、以下の udev ルールを使うことができます (例: 以下の2行を {{ic|/etc/udev/rules.d/00-local.rules}} に追加して再起動する)。&lt;br /&gt;
&lt;br /&gt;
{{bc|1=KERNEL==&amp;quot;pcmC[D0-9cp]*&amp;quot;, ACTION==&amp;quot;add&amp;quot;, PROGRAM=&amp;quot;/bin/sh -c &#039;K=%k; K=$${K#pcmC}; K=$${K%%D*}; echo defaults.ctl.card $$K &amp;gt; /etc/asound.conf; echo defaults.pcm.card $$K &amp;gt;&amp;gt;/etc/asound.conf&#039;&amp;quot;&lt;br /&gt;
KERNEL==&amp;quot;pcmC[D0-9cp]*&amp;quot;, ACTION==&amp;quot;remove&amp;quot;, PROGRAM=&amp;quot;/bin/sh -c &#039;echo defaults.ctl.card 0 &amp;gt; /etc/asound.conf; echo defaults.pcm.card 0 &amp;gt;&amp;gt;/etc/asound.conf&#039;&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== 同時出力 ===&lt;br /&gt;
&lt;br /&gt;
ミニジャックで接続した外付けスピーカーと内蔵のスピーカーで同時に音楽を再生したい場合、{{ic|alsamixer}} や {{ic|amixer}} を使うことで &#039;&#039;Auto-Mute&#039;&#039; のミュートを解除してください:&lt;br /&gt;
 $ amixer sset &amp;quot;Auto-Mute&amp;quot; unmute&lt;br /&gt;
&lt;br /&gt;
そして &#039;&#039;Headphones&#039;&#039;&#039;, &#039;&#039;Speaker&#039;&#039;, &#039;&#039;&#039;Bass Speaker&#039;&#039; など他の必要なアイテムのミュートを解除してください。&lt;br /&gt;
{{Note|(ミニジャック) ヘッドフォンコネクタで接続した場合に音が割れる場合、[[Advanced Linux Sound Architecture/トラブルシューティング#ミニジャック (ヘッドフォンコネクタ) で音が割れる]]を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== キーボードのボリュームコントロール ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドをボリュームキーにマッピングしてください: {{ic|XF86AudioRaiseVolume}}, {{ic|XF86AudioLowerVolume}}, {{ic|XF86AudioMute}}&lt;br /&gt;
&lt;br /&gt;
ボリュームを上げるには:&lt;br /&gt;
 amixer set Master 5%+&lt;br /&gt;
&lt;br /&gt;
ボリュームを下げるには:&lt;br /&gt;
 amixer set Master 5%-&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
[[Advanced Linux Sound Architecture/トラブルシューティング]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==設定例==&lt;br /&gt;
&lt;br /&gt;
[[Advanced Linux Sound Architecture/設定例]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
* [http://www.alsa-project.org/ ALSA wiki]&lt;br /&gt;
* [http://www.alsa-project.org/main/index.php/Asoundrc Asoundrc] &lt;br /&gt;
* [http://alsa.opensrc.org/ 非公式 ALSA wiki]&lt;br /&gt;
* [https://www.mjmwired.net/kernel/Documentation/sound/alsa/ALSA-Configuration.txt 高度な ALSA モジュール設定]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=36815 HOWTO: compile driver from svn]&lt;br /&gt;
* [http://www.volkerschatz.com/noise/alsa.html A close look at ALSA: ALSA concept introduction]&lt;br /&gt;
* [http://www.sabi.co.uk/Notes/linuxSoundALSA.html Linux ALSA sound notes]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Lenovo_ThinkPad_T14/T14s_(Intel)_Gen_4&amp;diff=40791</id>
		<title>Lenovo ThinkPad T14/T14s (Intel) Gen 4</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Lenovo_ThinkPad_T14/T14s_(Intel)_Gen_4&amp;diff=40791"/>
		<updated>2025-09-02T04:05:15Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 翻訳&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Lenovo]]&lt;br /&gt;
[[en:Lenovo ThinkPad T14/T14s (Intel) Gen 4]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable archwiki-table-laptop&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ハードウェア !! PCI/USB ID !! 動作状況&lt;br /&gt;
|-&lt;br /&gt;
| タッチパッド || {{ic|04F3:3195}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| トラックポイント || {{ic|04F3:2EA3}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| GPU (Intel) || {{ic|8086:a7a1}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Web カメラ || {{ic|04f2:b74f}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || {{ic|8087:0033}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| オーディオ || {{ic|8086:51ca}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Wi-Fi || {{ic|8086:51f1}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || {{ic|8086:0dc6}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| モバイルブロードバンド || || {{Y|未テスト}}&lt;br /&gt;
|-&lt;br /&gt;
| 指紋認証リーダー || || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| スマートカードリーダー || || {{Y|未テスト}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lenovo ThinkPad T14/T14s (Intel) Gen 4 は 2023年5月に登場した。14インチディスプレイ、第13世代 Intel Core プロセッサ、統合型 Intel Iris Xe グラフィックスを搭載している。カーネル &amp;gt;=6.11.6 でほぼすべての機能がそのまま動作します。&lt;br /&gt;
&lt;br /&gt;
この機種であることを確認するには、{{Pkg|dmidecode}} をインストールし、以下を実行して下さい:&lt;br /&gt;
&lt;br /&gt;
{{hc|# dmidecode -s system-version|ThinkPad T14 Gen 4}}&lt;br /&gt;
&lt;br /&gt;
ノートパソコン関連記事と推奨事項の概要は [[ノートパソコン]] を参照。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== Intel Turbo Boost Max ===&lt;br /&gt;
&lt;br /&gt;
Intel® Turbo Boost Max Technology 3.0 が有効になっているか確認する:&lt;br /&gt;
&lt;br /&gt;
 $ cat /sys/devices/system/cpu/intel_pstate/no_turbo&lt;br /&gt;
&lt;br /&gt;
出力が `1` の場合は無効になっているので、BIOS をデフォルトにリセットする必要があります。リセット後に再度コマンドを実行すると `0` が出力されるはずです。&lt;br /&gt;
その後、CPU が高クロックまでブーストしているのを確認できます。&lt;br /&gt;
&lt;br /&gt;
=== サウンド ===&lt;br /&gt;
&lt;br /&gt;
この機種の内蔵サウンドカードは [https://wiki.archlinux.org/title/Advanced_Linux_Sound_Architecture#Firmware Sound Open Firmware] が必要です。&lt;br /&gt;
&lt;br /&gt;
== ファームウェア ==&lt;br /&gt;
&lt;br /&gt;
=== fwupd ===&lt;br /&gt;
&lt;br /&gt;
[[fwupd]] は UEFI BIOS、NVMe SSD、Embedded Controller、Intel Management Engine のアップデートをそのままサポートしています。&lt;br /&gt;
&lt;br /&gt;
== ファンクションキー ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key !! Visible?&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; !! Marked?&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+Esc}} || {{No}} || {{Yes}} || Enables Fn lock&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn}} || {{Yes}} || {{Yes}} || {{ic|XF86WakeUp}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F1}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioMute}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F2}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioLowerVolume}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F3}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioRaiseVolume}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F4}} || {{Yes}} || {{Yes}} || {{ic|XF86AudioMicMute}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F5}} || {{Yes}} || {{Yes}} || {{ic|XF86MonBrightnessDown}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F6}} || {{Yes}} || {{Yes}} || {{ic|XF86MonBrightnessUp}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F7}} || {{Yes}} || {{Yes}} || {{ic|XF86Display}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F8}} || {{Yes}} || {{Yes}} || {{ic|XF86WLAN}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F9}} || {{Yes}} || {{Yes}} || {{ic|XF86Messenger}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F10}} || {{Yes}} || {{Yes}} || {{ic|XF86Go}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F11}} || {{Yes}} || {{Yes}} || {{ic|Cancel}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+F12}} || {{Yes}} || {{Yes}} || {{ic|XF86Favorites}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|Fn+Space}} || {{No}} || {{Yes}} || Toggle keyboard backlight&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# {{ic|wev}} などのツールでキー入力が可視化できるかどうか。&lt;br /&gt;
# キーキャップにその機能を示すシンボルが印字されているかどうか。&lt;br /&gt;
# そのまま動作するが、ソフトウェア制御も可能。&lt;br /&gt;
&lt;br /&gt;
== モバイルブロードバンド ==&lt;br /&gt;
&lt;br /&gt;
[[NetworkManager#Mobile broadband support]] を参照。&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
&lt;br /&gt;
=== T14 リンク ===&lt;br /&gt;
&lt;br /&gt;
* [https://ubuntu.com/certified/202303-31392](https://ubuntu.com/certified/202303-31392)&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Neovim&amp;diff=40789</id>
		<title>Neovim</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Neovim&amp;diff=40789"/>
		<updated>2025-09-01T09:44:57Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* ヒントとテクニック */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:開発]]&lt;br /&gt;
[[Category:テキストエディタ]]&lt;br /&gt;
[[Category:コンソールアプリケーション]]&lt;br /&gt;
[[en:Neovim]]&lt;br /&gt;
[[es:Neovim]]&lt;br /&gt;
[[pl:Neovim]]&lt;br /&gt;
[[pt:Neovim]]&lt;br /&gt;
[[zh-hans:Neovim]]&lt;br /&gt;
[https://neovim.io/ Neovim] は、コードベースの改善を目的とした [[Vim]] のフォークであり、API の実装を容易にし、ユーザーエクスペリエンスとプラグインの実装を向上させます。Neovim は [[Helix]] のようなエディターに影響を与えました。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|neovim}} パッケージを [[インストール]] または最新の開発バージョンの場合は {{Aur|neovim-nightly-bin}} を選択して下さい。メインの設定言語として {{Pkg|lua}} を使用することが強く推奨されます。&lt;br /&gt;
システムクリップボードを Neovim で動作させるには、{{Pkg|xclip}} (X11) または {{Pkg|wl-clipboard}} (Wayland) をインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|neovim では、一部の機能が外部 &#039;&#039;プロバイダ&#039;&#039; に委任されます。Python プロバイダの場合は、{{Pkg|python-pynvim}} を使用します。&lt;br /&gt;
クリップボードプロバイダの場合は、[https://neovim.io/doc/user/provider.html#provider-clipboard provider-clipbood] または {{ic|:help provider-clipboard}} neovim コマンドを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
また、[https://github.com/neovim/neovim/wiki/Related-projects 多くの GUI およびその他の関連プロジェクト] のいずれかをインストールすることもできます (大部分は [[公式リポジトリ]] または [[AUR]] にあります。)&lt;br /&gt;
&lt;br /&gt;
* {{App|{{Pkg|neovim-qt}}|高速、軽量、カスタマイズ可能な Qt GUI 複数のタブ、分割ウィンドウ、カスタマイズ可能なテーマのサポートを含む、最新のインターフェイスを提供します。|https://github.com/equalsraf/neovim-qt|{{Pkg|neovim-qt}}}}&lt;br /&gt;
* {{App|{{AUR|neovim-gtk}}|GTK GUI 分割ウィンドウ、複数のタブ、カスタマイズ可能なテーマのサポートを含む、最新のカスタマイズ可能なインターフェイスを提供します。|https://github.com/Lyude/neovim-gtk|{{AUR|neovim-gtk}}, {{AUR|neovim-gtk-git}}}}&lt;br /&gt;
* {{App|{{AUR|uivonim-git}}|([https://aur.archlinux.org/packages/uibonim-git#comment-888471 Inactive]) シンプルで軽量な GTK GUI 分割ウィンドウやカスタマイズ可能なテーマのサポートなど、最小限のインターフェイスを提供します。|{{AUR|uivonim-git}}|{{AUR|uivonim-git}}}}&lt;br /&gt;
* {{App|{{Pkg|neovide}}|Rust GUI.|https://github.com/neovide/neovide|{{Pkg|neovide}}, {{AUR|neovide-git}}}}&lt;br /&gt;
* {{App|{{AUR|neoray-git}}|Go GUI.|https://github.com/hismailbulut/neoray|{{AUR|neoray-git}}}}&lt;br /&gt;
* {{App|{{AUR|gnvim}}|GTK GUI.|https://github.com/vhakulinen/gnvim|{{AUR|gnvim}}}}&lt;br /&gt;
* {{App|{{AUR|fvim}}|F# GUI.|https://github.com/yatli/fvim|{{AUR|fvim}}}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
Neovim のユーザ固有の設定ファイルは {{ic|$XDG_CONFIG_HOME/nvim/init.vim}} にあり、デフォルトでは {{ic|~/.config/nvim/init.vim}} です。グローバルコンフィグレーションファイルが、存在する場合は {{ic|$XDG_CONFIG_DIRS/nvim/sysinit.vim}} デフォルトでは {{ic|/etc/xdg/nvim/sysinit.vim}} から、存在しない場合は {{ic|/usr/share/nvim/sysinit.vim}} からロードされます。このファイルは、ユーザが編集することはできません。[https://github.com/neovim/neovim/blob/master/runtime/doc/starting.txt#L437] デフォルトでは、以前のグローバルコンフィグレーションファイルは存在しません。前者のファイルを作成する場合、 pacman でインストールされた vim パッケージを Neovim で動作させる機能が必要な場合は、後者をソースにすることもできます。&lt;br /&gt;
&lt;br /&gt;
Neovim は Vimのほとんどのオプションと互換性がありますが、 Neovim 固有のオプションもあります。 Neovim のオプションの完全なリストについては、 Neovim の  [https://neovim.io/doc/user/options.html help file] を参照してください。&lt;br /&gt;
&lt;br /&gt;
Neovim のデータディレクトリは {{ic|~/.local/share/nvim/}} にあり、開いているファイルのスワップ、 [https://neovim.io/doc/user/starting.html#shada ShaDa] (共有データ) ファイル、プラグインのサイトディレクトリが含まれています。&lt;br /&gt;
&lt;br /&gt;
Nvim のバージョン 0.5 から Lua を使って Nvim を設定することができるようになりました。現在の設定を変換する方法については、[https://github.com/nanotee/nvim-lua-guide] を参照してください。現時点では、{{ic|init.lua}} と一般的な {{ic|init.vim}} を比較した場合、あまり大きなメリットはありませんが、正しく設定すれば、Lua は起動時間を少し改善しますし、設定が簡単なので、Lua で書かれたプラグインをいくつか使う場合に特に有用です。&lt;br /&gt;
&lt;br /&gt;
=== vim からの移行 ===&lt;br /&gt;
&lt;br /&gt;
既存の Vim の設定を Nvim に移行したい場合は、{{ic|~/.vimrc}} を {{ic|~/.config/nvim/init.vim}} にコピーするだけす。&lt;br /&gt;
該当する場合は、{{ic|~/.vim/autoload/}} の内容を {{ic|~/.local/share/nvim/site/autoload/}} にコピーしてください。&lt;br /&gt;
&lt;br /&gt;
=== vim と nvim の間の共有設定 ===&lt;br /&gt;
&lt;br /&gt;
Neovimは、メイン設定ディレクトリとして {{ic|~/.vim}} の代わりに {{ic|$XDG_CONFIG_HOME/nvim}} を使用し、メイン設定ファイルとして {{ic|~/.vimrc}} の代わりに {{ic|$XDG_CONFIG_HOME/nvim/init.vim}} を使用します。&lt;br /&gt;
&lt;br /&gt;
vim を使い続けたい場合や、Neovim で既存の vim 構成をソース化したい場合は、 [https://neovim.io/doc/user/nvim.html#nvim-from-vim nvim-from-vim] または {{ic|:help nvim-from-vim}} neovim コマンドを参照して下さい。&lt;br /&gt;
&lt;br /&gt;
==== プラグインのロード ====&lt;br /&gt;
&lt;br /&gt;
[[公式リポジトリ]] や [[AUR]] からインストールした Vim/Nvim プラグインは自動的に {{ic|/etc/xdg/nvim/sysinit.vim}} でソースを取得するので、余計な手順を踏む必要はありません。膨大な数のプラグインが両方の場所で見つかりますが、プラグインを追加する最も推奨される方法はプラグインマネージャを使うことです。最もよく使われるのは、Vim と Nvim の両方で使える [https://github.com/junegunn/vim-plug vim-plug] と と Nvim のみで動作する Lua で書かれた [https://github.com/folke/lazy.nvim lazy.nvim] です。どちらも github ブランチからランタイムコマンドまで、柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
vim 用に書かれたプラグインのほとんどは Nvim でも問題なく動作しますが、Nvim 用に書かれたプラグインのすべてが Vim で動作するわけではないので、互換性のある設定を確保したい場合は、従来の {{ic|init.vim}} や {{ic|.vimrc}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== vi や vim を neovim で置き換える ===&lt;br /&gt;
&lt;br /&gt;
{{ic|$VISUAL}} と {{ic|$EDITOR}} [[環境変数]]を設定することで大抵の場合に neovim が使われるようになります。&lt;br /&gt;
&lt;br /&gt;
一部のアプリケーションでは vi や vim がデフォルトエディタとしてハードコードされていますが、{{AUR|neovim-drop-in}} をインストールすることで &#039;&#039;neovim&#039;&#039; を使うことができます。&lt;br /&gt;
&lt;br /&gt;
=== init.vim から .vimrc にシンボリックリンクを作成 ===&lt;br /&gt;
&lt;br /&gt;
neovim は標準 vim と互換性を保っているため、{{ic|nvim/init.vim}} から {{ic|.vimrc}} にシンボリックリンクを張ることで設定オプションをそのまま使うことができます:&lt;br /&gt;
&lt;br /&gt;
 $ ln -s ~/.vimrc ~/.config/nvim/init.vim&lt;br /&gt;
&lt;br /&gt;
neovim と vim の設定を分けたい場合、{{ic|.vimrc}} ファイルの中で {{ic|if}} ブロックを使うことでどちらかにだけ適用される設定を記述できます:&lt;br /&gt;
&lt;br /&gt;
 if has(&#039;nvim&#039;)&lt;br /&gt;
     &amp;quot; Neovim specific commands&lt;br /&gt;
 else&lt;br /&gt;
     &amp;quot; Standard vim specific commands&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
=== True color のサポート ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/carlowood/nneovim-true-color-scheme-editor このプロジェクト] の {{ic|READMEs}} では、構文の強調表示に24ビットの &#039;&#039;TrueColor&#039;&#039; サポートを追加する方法と、カラーピッカーを使用してリアルタイムでどのように表示されるかを確認する方法について説明しています。C++ 用の作者のシンタックスハイライト (インストールしている場合) が付属しています。&lt;br /&gt;
&lt;br /&gt;
=== カーソルの最後の位置をサポート ===&lt;br /&gt;
&lt;br /&gt;
カーソルの最後の位置を保存したい場合は、[https://github.com/neovim/neovim/issues/16339#issuecomment-1348133829 lastplace.lua] が非常に便利です。 {{ic|~/.config/nvim/plugin/}} またはシステム全体のディレクトリ {{ic|/usr/share/nvim/runtime/plugin/}} に配置する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 言語サーバープロトコル (LSP) ===&lt;br /&gt;
&lt;br /&gt;
Neovim には、組み込みの [https://microsoft.github.io/language-server-protocol Language Server Protocol] クライアントが含まれており [https://github.com/neovim/nvim-lspconfig nvim-lspconfig] プラグインは、その共通設定を提供します。&lt;br /&gt;
&lt;br /&gt;
Arch パッケージのリストについては、[[言語サーバープロトコル]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ページャとして使用 ===&lt;br /&gt;
&lt;br /&gt;
マニュアルページを開くには {{ic|:Man}} コマンドを使います。neovim ですべてのマニュアルページを開くには、{{ic|MANPAGER}} [[環境変数]] を {{ic|nvim +Man!}} に設定します。&lt;br /&gt;
&lt;br /&gt;
他のページャをサポートするには {{AUR|nvimpager}} か {{AUR|nvimpager-git}} パッケージをインストールし、{{ic|PAGER}} [[環境変数]] を {{ic|nvimpager}} に設定します。&lt;br /&gt;
&lt;br /&gt;
{{AUR|page-git}} でパッケージされている [https://github.com/I60R/page page] も試してみてください。&lt;br /&gt;
&lt;br /&gt;
=== 複数の nvim 設定を並行して利用する ===&lt;br /&gt;
&lt;br /&gt;
[https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME NVIM_APPNAME] 環境変数を使うことで、複数の nvim フレーバーを並行してインストールして利用することができます。  &lt;br /&gt;
{{ic|XDG_CONFIG_HOME}} 内にディレクトリを作成し、例として {{ic|~/.config/foo}} に新しい nvim 設定を置きます。&lt;br /&gt;
&lt;br /&gt;
特定の設定で &#039;&#039;nvim&#039;&#039; を実行するには:&lt;br /&gt;
&lt;br /&gt;
* シェルや設定ファイルで直接 {{ic|NVIM_APPNAME}} 変数を設定します: {{ic|1=export NVIM_APPNAME=foo}} これにより {{ic|nvim}} コマンドが自動的に &#039;&#039;foo&#039;&#039; フレーバーを呼び出すようになります。デフォルトの動作に戻すには {{ic|unset NVIM_APPNAME}} を実行してください。&lt;br /&gt;
* エイリアスを定義する方法もあります。例: {{ic|1=alias v=&#039; NVIM_APPNAME=foo nvim&#039;}}&lt;br /&gt;
&lt;br /&gt;
==== ネイティブの nvim 設定と並行して LazyVim をインストールする ====&lt;br /&gt;
&lt;br /&gt;
人気のある [https://www.lazyvim.org/ LazyVim] フレーバーを &#039;&#039;ネイティブ&#039;&#039; の nvim 設定と並行してインストールしたい場合は、[https://www.lazyvim.org/installation インストール手順] に従ってください。  &lt;br /&gt;
ただし実際の nvim 設定ディレクトリである {{ic|~/.config/nvim}}, {{ic|~/.local/share/nvim}}, {{ic|~/.local/state/nvim}}, {{ic|~/.cache/nvim}} を削除または移動する必要はありません。&lt;br /&gt;
&lt;br /&gt;
代わりに、スタータリポジトリを {{ic|.config}} パス内のお好みのディレクトリ名にクローンしてください。以下のコマンドでは {{ic|nvimLazyvim}} というディレクトリ名を例としています:&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://github.com/LazyVim/starter ~/.config/nvimLazyvim&lt;br /&gt;
&lt;br /&gt;
{{ic|.git}} ディレクトリを削除するのを忘れないでください:&lt;br /&gt;
&lt;br /&gt;
 $ rm -rf ~/.config/nvimLazyvim/.git&lt;br /&gt;
&lt;br /&gt;
新しい &#039;&#039;フレーバー&#039;&#039; を起動するには次のコマンドを使います:&lt;br /&gt;
&lt;br /&gt;
 $ NVIM_APPNAME=nvimLazyvim nvim&lt;br /&gt;
&lt;br /&gt;
入力を短縮するために、{{ic|.bashrc}} または {{ic|.zshrc}} に以下の行を追加してエイリアスを作成できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|.zshrc|2=&lt;br /&gt;
alias v=&#039; NVIM_APPNAME=nvimLazyvim nvim&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Neovim を終了してもカーソルが元に戻らない ===&lt;br /&gt;
&lt;br /&gt;
Neovim の終了後もカーソルが点滅してしまう場合は [https://github.com/neovim/neovim/wiki/FAQ#cursor-style-isnt-restored-after-exiting-nvim neovim FAQ] の解決方法を見てください。&lt;br /&gt;
&lt;br /&gt;
=== システムアップグレード後の Tree-sitter パーサーエラー ===&lt;br /&gt;
&lt;br /&gt;
システムを更新した後は、{{ic|:Lazy sync}} などを使用して Neovim のパッケージを同期し、{{ic|:TSUpdate}} を使用して手動でパーサーを強制的に更新することをお勧めします。{{ic|~/.local/share/nvim}} にある Neovim のキャッシュファイルを削除すると、問題が解決する場合があります。&lt;br /&gt;
&lt;br /&gt;
=== Tree-sitter executable not found ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|tree-sitter}} パッケージはライブラリのみを提供します。&#039;&#039;tree-sitter&#039;&#039; 実行ファイルが必要な場合は、{{Pkg|tree-sitter-cli}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/neovim/neovim Github リポジトリ]&lt;br /&gt;
* [https://github.com/neovim/neovim/wiki Github wiki]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Neovim&amp;diff=40788</id>
		<title>Neovim</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Neovim&amp;diff=40788"/>
		<updated>2025-09-01T09:40:30Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* トラブルシューティング */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:開発]]&lt;br /&gt;
[[Category:テキストエディタ]]&lt;br /&gt;
[[Category:コンソールアプリケーション]]&lt;br /&gt;
[[en:Neovim]]&lt;br /&gt;
[[es:Neovim]]&lt;br /&gt;
[[pl:Neovim]]&lt;br /&gt;
[[pt:Neovim]]&lt;br /&gt;
[[zh-hans:Neovim]]&lt;br /&gt;
[https://neovim.io/ Neovim] は、コードベースの改善を目的とした [[Vim]] のフォークであり、API の実装を容易にし、ユーザーエクスペリエンスとプラグインの実装を向上させます。Neovim は [[Helix]] のようなエディターに影響を与えました。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|neovim}} パッケージを [[インストール]] または最新の開発バージョンの場合は {{Aur|neovim-nightly-bin}} を選択して下さい。メインの設定言語として {{Pkg|lua}} を使用することが強く推奨されます。&lt;br /&gt;
システムクリップボードを Neovim で動作させるには、{{Pkg|xclip}} (X11) または {{Pkg|wl-clipboard}} (Wayland) をインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|neovim では、一部の機能が外部 &#039;&#039;プロバイダ&#039;&#039; に委任されます。Python プロバイダの場合は、{{Pkg|python-pynvim}} を使用します。&lt;br /&gt;
クリップボードプロバイダの場合は、[https://neovim.io/doc/user/provider.html#provider-clipboard provider-clipbood] または {{ic|:help provider-clipboard}} neovim コマンドを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
また、[https://github.com/neovim/neovim/wiki/Related-projects 多くの GUI およびその他の関連プロジェクト] のいずれかをインストールすることもできます (大部分は [[公式リポジトリ]] または [[AUR]] にあります。)&lt;br /&gt;
&lt;br /&gt;
* {{App|{{Pkg|neovim-qt}}|高速、軽量、カスタマイズ可能な Qt GUI 複数のタブ、分割ウィンドウ、カスタマイズ可能なテーマのサポートを含む、最新のインターフェイスを提供します。|https://github.com/equalsraf/neovim-qt|{{Pkg|neovim-qt}}}}&lt;br /&gt;
* {{App|{{AUR|neovim-gtk}}|GTK GUI 分割ウィンドウ、複数のタブ、カスタマイズ可能なテーマのサポートを含む、最新のカスタマイズ可能なインターフェイスを提供します。|https://github.com/Lyude/neovim-gtk|{{AUR|neovim-gtk}}, {{AUR|neovim-gtk-git}}}}&lt;br /&gt;
* {{App|{{AUR|uivonim-git}}|([https://aur.archlinux.org/packages/uibonim-git#comment-888471 Inactive]) シンプルで軽量な GTK GUI 分割ウィンドウやカスタマイズ可能なテーマのサポートなど、最小限のインターフェイスを提供します。|{{AUR|uivonim-git}}|{{AUR|uivonim-git}}}}&lt;br /&gt;
* {{App|{{Pkg|neovide}}|Rust GUI.|https://github.com/neovide/neovide|{{Pkg|neovide}}, {{AUR|neovide-git}}}}&lt;br /&gt;
* {{App|{{AUR|neoray-git}}|Go GUI.|https://github.com/hismailbulut/neoray|{{AUR|neoray-git}}}}&lt;br /&gt;
* {{App|{{AUR|gnvim}}|GTK GUI.|https://github.com/vhakulinen/gnvim|{{AUR|gnvim}}}}&lt;br /&gt;
* {{App|{{AUR|fvim}}|F# GUI.|https://github.com/yatli/fvim|{{AUR|fvim}}}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
Neovim のユーザ固有の設定ファイルは {{ic|$XDG_CONFIG_HOME/nvim/init.vim}} にあり、デフォルトでは {{ic|~/.config/nvim/init.vim}} です。グローバルコンフィグレーションファイルが、存在する場合は {{ic|$XDG_CONFIG_DIRS/nvim/sysinit.vim}} デフォルトでは {{ic|/etc/xdg/nvim/sysinit.vim}} から、存在しない場合は {{ic|/usr/share/nvim/sysinit.vim}} からロードされます。このファイルは、ユーザが編集することはできません。[https://github.com/neovim/neovim/blob/master/runtime/doc/starting.txt#L437] デフォルトでは、以前のグローバルコンフィグレーションファイルは存在しません。前者のファイルを作成する場合、 pacman でインストールされた vim パッケージを Neovim で動作させる機能が必要な場合は、後者をソースにすることもできます。&lt;br /&gt;
&lt;br /&gt;
Neovim は Vimのほとんどのオプションと互換性がありますが、 Neovim 固有のオプションもあります。 Neovim のオプションの完全なリストについては、 Neovim の  [https://neovim.io/doc/user/options.html help file] を参照してください。&lt;br /&gt;
&lt;br /&gt;
Neovim のデータディレクトリは {{ic|~/.local/share/nvim/}} にあり、開いているファイルのスワップ、 [https://neovim.io/doc/user/starting.html#shada ShaDa] (共有データ) ファイル、プラグインのサイトディレクトリが含まれています。&lt;br /&gt;
&lt;br /&gt;
Nvim のバージョン 0.5 から Lua を使って Nvim を設定することができるようになりました。現在の設定を変換する方法については、[https://github.com/nanotee/nvim-lua-guide] を参照してください。現時点では、{{ic|init.lua}} と一般的な {{ic|init.vim}} を比較した場合、あまり大きなメリットはありませんが、正しく設定すれば、Lua は起動時間を少し改善しますし、設定が簡単なので、Lua で書かれたプラグインをいくつか使う場合に特に有用です。&lt;br /&gt;
&lt;br /&gt;
=== vim からの移行 ===&lt;br /&gt;
&lt;br /&gt;
既存の Vim の設定を Nvim に移行したい場合は、{{ic|~/.vimrc}} を {{ic|~/.config/nvim/init.vim}} にコピーするだけす。&lt;br /&gt;
該当する場合は、{{ic|~/.vim/autoload/}} の内容を {{ic|~/.local/share/nvim/site/autoload/}} にコピーしてください。&lt;br /&gt;
&lt;br /&gt;
=== vim と nvim の間の共有設定 ===&lt;br /&gt;
&lt;br /&gt;
Neovimは、メイン設定ディレクトリとして {{ic|~/.vim}} の代わりに {{ic|$XDG_CONFIG_HOME/nvim}} を使用し、メイン設定ファイルとして {{ic|~/.vimrc}} の代わりに {{ic|$XDG_CONFIG_HOME/nvim/init.vim}} を使用します。&lt;br /&gt;
&lt;br /&gt;
vim を使い続けたい場合や、Neovim で既存の vim 構成をソース化したい場合は、 [https://neovim.io/doc/user/nvim.html#nvim-from-vim nvim-from-vim] または {{ic|:help nvim-from-vim}} neovim コマンドを参照して下さい。&lt;br /&gt;
&lt;br /&gt;
==== プラグインのロード ====&lt;br /&gt;
&lt;br /&gt;
[[公式リポジトリ]] や [[AUR]] からインストールした Vim/Nvim プラグインは自動的に {{ic|/etc/xdg/nvim/sysinit.vim}} でソースを取得するので、余計な手順を踏む必要はありません。膨大な数のプラグインが両方の場所で見つかりますが、プラグインを追加する最も推奨される方法はプラグインマネージャを使うことです。最もよく使われるのは、Vim と Nvim の両方で使える [https://github.com/junegunn/vim-plug vim-plug] と と Nvim のみで動作する Lua で書かれた [https://github.com/folke/lazy.nvim lazy.nvim] です。どちらも github ブランチからランタイムコマンドまで、柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
vim 用に書かれたプラグインのほとんどは Nvim でも問題なく動作しますが、Nvim 用に書かれたプラグインのすべてが Vim で動作するわけではないので、互換性のある設定を確保したい場合は、従来の {{ic|init.vim}} や {{ic|.vimrc}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== vi や vim を neovim で置き換える ===&lt;br /&gt;
&lt;br /&gt;
{{ic|$VISUAL}} と {{ic|$EDITOR}} [[環境変数]]を設定することで大抵の場合に neovim が使われるようになります。&lt;br /&gt;
&lt;br /&gt;
一部のアプリケーションでは vi や vim がデフォルトエディタとしてハードコードされていますが、{{AUR|neovim-drop-in}} をインストールすることで &#039;&#039;neovim&#039;&#039; を使うことができます。&lt;br /&gt;
&lt;br /&gt;
=== init.vim から .vimrc にシンボリックリンクを作成 ===&lt;br /&gt;
&lt;br /&gt;
neovim は標準 vim と互換性を保っているため、{{ic|nvim/init.vim}} から {{ic|.vimrc}} にシンボリックリンクを張ることで設定オプションをそのまま使うことができます:&lt;br /&gt;
&lt;br /&gt;
 $ ln -s ~/.vimrc ~/.config/nvim/init.vim&lt;br /&gt;
&lt;br /&gt;
neovim と vim の設定を分けたい場合、{{ic|.vimrc}} ファイルの中で {{ic|if}} ブロックを使うことでどちらかにだけ適用される設定を記述できます:&lt;br /&gt;
&lt;br /&gt;
 if has(&#039;nvim&#039;)&lt;br /&gt;
     &amp;quot; Neovim specific commands&lt;br /&gt;
 else&lt;br /&gt;
     &amp;quot; Standard vim specific commands&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
=== True color のサポート ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/carlowood/nneovim-true-color-scheme-editor このプロジェクト] の {{ic|READMEs}} では、構文の強調表示に24ビットの &#039;&#039;TrueColor&#039;&#039; サポートを追加する方法と、カラーピッカーを使用してリアルタイムでどのように表示されるかを確認する方法について説明しています。C++ 用の作者のシンタックスハイライト (インストールしている場合) が付属しています。&lt;br /&gt;
&lt;br /&gt;
=== カーソルの最後の位置をサポート ===&lt;br /&gt;
&lt;br /&gt;
カーソルの最後の位置を保存したい場合は、[https://github.com/neovim/neovim/issues/16339#issuecomment-1348133829 lastplace.lua] が非常に便利です。 {{ic|~/.config/nvim/plugin/}} またはシステム全体のディレクトリ {{ic|/usr/share/nvim/runtime/plugin/}} に配置する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 言語サーバープロトコル (LSP) ===&lt;br /&gt;
&lt;br /&gt;
Neovim には、組み込みの [https://microsoft.github.io/language-server-protocol Language Server Protocol] クライアントが含まれており [https://github.com/neovim/nvim-lspconfig nvim-lspconfig] プラグインは、その共通設定を提供します。&lt;br /&gt;
&lt;br /&gt;
Arch パッケージのリストについては、[[言語サーバープロトコル]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ページャとして使用 ===&lt;br /&gt;
&lt;br /&gt;
マニュアルページを開くには {{ic|:Man}} コマンドを使います。neovim ですべてのマニュアルページを開くには、{{ic|MANPAGER}} [[環境変数]] を {{ic|nvim +Man!}} に設定します。&lt;br /&gt;
&lt;br /&gt;
他のページャをサポートするには {{AUR|nvimpager}} か {{AUR|nvimpager-git}} パッケージをインストールし、{{ic|PAGER}} [[環境変数]] を {{ic|nvimpager}} に設定します。&lt;br /&gt;
&lt;br /&gt;
{{AUR|page-git}} でパッケージされている [https://github.com/I60R/page page] も試してみてください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Neovim を終了してもカーソルが元に戻らない ===&lt;br /&gt;
&lt;br /&gt;
Neovim の終了後もカーソルが点滅してしまう場合は [https://github.com/neovim/neovim/wiki/FAQ#cursor-style-isnt-restored-after-exiting-nvim neovim FAQ] の解決方法を見てください。&lt;br /&gt;
&lt;br /&gt;
=== システムアップグレード後の Tree-sitter パーサーエラー ===&lt;br /&gt;
&lt;br /&gt;
システムを更新した後は、{{ic|:Lazy sync}} などを使用して Neovim のパッケージを同期し、{{ic|:TSUpdate}} を使用して手動でパーサーを強制的に更新することをお勧めします。{{ic|~/.local/share/nvim}} にある Neovim のキャッシュファイルを削除すると、問題が解決する場合があります。&lt;br /&gt;
&lt;br /&gt;
=== Tree-sitter executable not found ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|tree-sitter}} パッケージはライブラリのみを提供します。&#039;&#039;tree-sitter&#039;&#039; 実行ファイルが必要な場合は、{{Pkg|tree-sitter-cli}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/neovim/neovim Github リポジトリ]&lt;br /&gt;
* [https://github.com/neovim/neovim/wiki Github wiki]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Virt-Manager&amp;diff=40745</id>
		<title>Virt-Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Virt-Manager&amp;diff=40745"/>
		<updated>2025-08-23T05:48:15Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* ネットワーク */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[en:Virt-Manager]]&lt;br /&gt;
[[pt:Virt-Manager]]&lt;br /&gt;
[[Wikipedia:ja:Virt-manager|virt-manager]] は [[libvirt]] ライブラリのグラフィカルフロントエンドであり、仮想マシンの管理機能を提供します。&lt;br /&gt;
virt-manager のインターフェースを使えば、ユーザーはターミナルを使わずに仮想マシンを作成・削除・操作できます。&lt;br /&gt;
&lt;br /&gt;
virt-manager は主に KVM をサポートしているが、Xen や LXC といった他のハイパーバイザーでも動作可能。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
まず [[libvirt]] または [[LXC]] のページを参照し、仮想マシンを作成できることを確認します。その後 {{Pkg|virt-manager}} パッケージを[[インストール]] して下さい。&lt;br /&gt;
必要に応じて [[QEMU]] もインストールして下さい。&lt;br /&gt;
&lt;br /&gt;
{{ic|LXC}} 接続を使用する場合は {{ic|libvirtd.service}} ユニットを [[有効化/起動]] します。&lt;br /&gt;
&lt;br /&gt;
{{ic|QEMU}} 接続を使用する場合は {{ic|libvirtd.socket}} ユニットを [[有効化/起動]] します。&lt;br /&gt;
&lt;br /&gt;
サービスが実行中かどうかは [[ユニットステータス]] で確認できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ドメインの [https://www.libvirt.org/manpages/virsh.html#autostart 自動起動機能] を使用するには、{{ic|libvirtd.service}} を有効にする必要があります。}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本設定 ===&lt;br /&gt;
&lt;br /&gt;
自分を &#039;&#039;libvirt&#039;&#039; [[ユーザーグループ]] に追加して下さい。&lt;br /&gt;
&lt;br /&gt;
また、virt-manager のデフォルトプール外にあるファイルやフォルダを利用する場合、それらの所有者を {{ic|libvirt-qemu}} グループに設定しておくとよいでしょう。そうしないと、アクセス時にパーミッションエラーが発生する可能性があります。&lt;br /&gt;
&lt;br /&gt;
 # chown &amp;quot;$USER&amp;quot;:libvirt-qemu &#039;&#039;/path/to/vm/folder&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|他にも解決方法はあります。もし忘れても virt-manager が権限変更を提案してくれます。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Socket を使わない非 root KVM ===&lt;br /&gt;
&lt;br /&gt;
{{Note|[[systemd]] のソケットを有効化するとこの設定は上書きされるので、ソケットを有効化したくない場合にのみ行ってください。}}&lt;br /&gt;
&lt;br /&gt;
root 権限のない通常のユーザーとして使用するには、KVM を設定する必要があります。これにより、libvirt ネットワーク コンポーネントも有効になります。&lt;br /&gt;
&lt;br /&gt;
次のように変更して、UNIX ドメイン ソケットの所有権を libvirt に設定し、UNIX ソケットの権限を読み取りと書き込みに設定します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/libvirtd.conf|2=&lt;br /&gt;
...&lt;br /&gt;
unix_sock_group = &#039;libvirt&#039;&lt;br /&gt;
...&lt;br /&gt;
unix_sock_rw_perms = &#039;0770&#039;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
自分を &#039;&#039;libvirt&#039;&#039; [[ユーザーグループ]] に追加する。&lt;br /&gt;
&lt;br /&gt;
さらに {{ic|/etc/libvirt/qemu.conf}} に自分のユーザーを設定します。設定しないと QEMU がローカルディスクにアクセスする際に permission denied となります。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=user = &amp;quot;libvirt-qemu&amp;quot;}} または {{ic|1=group = &amp;quot;libvirt-qemu&amp;quot;}} を検索し、両方のエントリのコメントを解除して、{{ic|libvirt-qemu}} を自分のユーザー名またはIDに変更してください。編集後、以下のようになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/qemu.conf|2=&lt;br /&gt;
# Some examples of valid values are:&lt;br /&gt;
#&lt;br /&gt;
#       user = &amp;quot;qemu&amp;quot;   # A user named &amp;quot;qemu&amp;quot;&lt;br /&gt;
#       user = &amp;quot;+0&amp;quot;     # Super user (uid=0)&lt;br /&gt;
#       user = &amp;quot;100&amp;quot;    # A user named &amp;quot;100&amp;quot; or a user with uid=100&lt;br /&gt;
#&lt;br /&gt;
user = &amp;quot;&#039;&#039;username&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The group for QEMU processes run by the system instance. It can be&lt;br /&gt;
# specified in a similar way to user.&lt;br /&gt;
group = &amp;quot;&#039;&#039;username&#039;&#039;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Virt-Manager を開くと、QEMU 接続のシステムバリアント (root) がデフォルトになります。&lt;br /&gt;
&lt;br /&gt;
これをユーザー接続に変更するには、&#039;&#039;ファイル&#039;&#039; &amp;gt; &#039;&#039;接続の追加&#039;&#039; に移動します。&lt;br /&gt;
&lt;br /&gt;
次に、ハイパーバイザーとして {{ic|QEMU/KVM ユーザー セッション}} を選択し、[OK] をクリックします。&lt;br /&gt;
これにより、ユーザーセッションに自動接続されます。必要に応じて、システム接続を切断して削除することもできます。&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク ===&lt;br /&gt;
&lt;br /&gt;
{{Note| &lt;br /&gt;
*記事は &#039;&#039;&#039;ユーザーセッション&#039;&#039;&#039; での virt-manager と libvirt の利用に焦点を当てていますが、ユーザーセッションにはネットワーク機能の制限があります。(詳細は [https://wiki.libvirt.org/FAQ.html#what-is-the-difference-between-qemu-system-and-qemu-session-which-one-should-i-use libvirt の FAQ を参照してください。)]&lt;br /&gt;
*ネットワークの問題の場合は、[[libvirt]] も参照してください。}}&lt;br /&gt;
&lt;br /&gt;
ユーザーセッションでネットワークブリッジを使用するには、まず {{ic|libvirt}} システム管理で設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
このためには、{{ic|libvirt}} [[libvirt#Daemon|デーモン]] が実行されている必要があります。&lt;br /&gt;
&lt;br /&gt;
正常に起動すると、QEMU 接続のシステムバリアント (root) が virt-managerで開きます。ネットワークタブで必要な設定を行い、ブリッジを設定してください。&lt;br /&gt;
&lt;br /&gt;
ユーザーセッション仮想マシンでブリッジを使用できるようにするには、ブリッジの設定に応じて [[QEMU#Bridged networking using qemu-bridge-helper|qemu-bridge-helper]] を設定します。&lt;br /&gt;
&lt;br /&gt;
その後、ブリッジは、virt-manager ユーザーセッションで実行される仮想ネットワークで使用できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== NAT - Bridged - Host-Only====&lt;br /&gt;
&lt;br /&gt;
===== NAT =====&lt;br /&gt;
&lt;br /&gt;
NAT は同じ IP 経由で VM をルーティングします。このオプションはハードウェアの表示 -&amp;gt; NIC で使用でき、追加の設定は必要ありません。&lt;br /&gt;
&lt;br /&gt;
===== Bridged =====&lt;br /&gt;
&lt;br /&gt;
ブリッジモードでは、VM がネットワーク内の独自のクライアントであるかのように動作します。&lt;br /&gt;
virt-manager では、インターフェースを選択する必要があります。&lt;br /&gt;
&lt;br /&gt;
これは、自動的に選択される virtualbox や vmware とは異なります。&lt;br /&gt;
Bridged を使用するには、NAT を使用して [[#仮想インターフェースの作成|仮想インターフェース]] を作成する必要があります。&lt;br /&gt;
&lt;br /&gt;
(独自のインターフェースを使用することも可能ですが、追加の設定が必要になる場合があります。)&lt;br /&gt;
&lt;br /&gt;
===== Host-Only =====&lt;br /&gt;
&lt;br /&gt;
ホストのみの設定では、ホストとゲスト間のネットワーク操作のみが許可されます。&lt;br /&gt;
&lt;br /&gt;
このオプションは virt-manager には存在しません。&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;
NAT, Routed, Open, Isolated, SR-IOV Pool&lt;br /&gt;
&lt;br /&gt;
=== 3Dアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
virtio は準仮想化 3D グラフィックドライバです。基本的な 3D アクセラレーションを有効にするには、以下の手順を実行してください。&lt;br /&gt;
&lt;br /&gt;
# 仮想マシンの設定ページに移動します。&lt;br /&gt;
# &amp;quot;ハードウェアの追加&amp;quot; ボタンをクリックし、&amp;quot;ビデオ&amp;quot; を選択し、&amp;quot;モデル&amp;quot; で &amp;quot;Virtio&amp;quot; を選択します。その後、サイドバー内の他の &amp;quot;ビデオ&amp;quot; 仮想ハードウェアを削除します。&lt;br /&gt;
# &amp;quot;Display Spice&amp;quot; に移動し、&amp;quot;Listen Type&amp;quot; を &amp;quot;None&amp;quot; に設定します。また、&amp;quot;OpenGL&amp;quot; チェックボックスをオンにして、適切なレンダラーを選択します。&lt;br /&gt;
# &amp;quot;Video Virtio&amp;quot; をクリックし、&amp;quot;3D Acceleration&amp;quot; にチェックを入れます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mesa-utils}} パッケージの &#039;&#039;glxgears&#039;&#039; を使用して 3D グラフィックスをテストできます。{{ic|glxgears -info}} はコンソールに OpenGL レンダラー情報を表示します。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://virt-manager.org Project homepage]&lt;br /&gt;
* [https://github.com/virt-manager/virt-manager Project repository]&lt;br /&gt;
* [https://www.spice-space.org/download.html Spice drivers (graphics)]&lt;br /&gt;
* [https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md VirtIO Windows drivers]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Virt-Manager&amp;diff=40744</id>
		<title>Virt-Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Virt-Manager&amp;diff=40744"/>
		<updated>2025-08-23T05:47:28Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* ネットワーク */ リンクを修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[en:Virt-Manager]]&lt;br /&gt;
[[pt:Virt-Manager]]&lt;br /&gt;
[[Wikipedia:ja:Virt-manager|virt-manager]] は [[libvirt]] ライブラリのグラフィカルフロントエンドであり、仮想マシンの管理機能を提供します。&lt;br /&gt;
virt-manager のインターフェースを使えば、ユーザーはターミナルを使わずに仮想マシンを作成・削除・操作できます。&lt;br /&gt;
&lt;br /&gt;
virt-manager は主に KVM をサポートしているが、Xen や LXC といった他のハイパーバイザーでも動作可能。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
まず [[libvirt]] または [[LXC]] のページを参照し、仮想マシンを作成できることを確認します。その後 {{Pkg|virt-manager}} パッケージを[[インストール]] して下さい。&lt;br /&gt;
必要に応じて [[QEMU]] もインストールして下さい。&lt;br /&gt;
&lt;br /&gt;
{{ic|LXC}} 接続を使用する場合は {{ic|libvirtd.service}} ユニットを [[有効化/起動]] します。&lt;br /&gt;
&lt;br /&gt;
{{ic|QEMU}} 接続を使用する場合は {{ic|libvirtd.socket}} ユニットを [[有効化/起動]] します。&lt;br /&gt;
&lt;br /&gt;
サービスが実行中かどうかは [[ユニットステータス]] で確認できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ドメインの [https://www.libvirt.org/manpages/virsh.html#autostart 自動起動機能] を使用するには、{{ic|libvirtd.service}} を有効にする必要があります。}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本設定 ===&lt;br /&gt;
&lt;br /&gt;
自分を &#039;&#039;libvirt&#039;&#039; [[ユーザーグループ]] に追加して下さい。&lt;br /&gt;
&lt;br /&gt;
また、virt-manager のデフォルトプール外にあるファイルやフォルダを利用する場合、それらの所有者を {{ic|libvirt-qemu}} グループに設定しておくとよいでしょう。そうしないと、アクセス時にパーミッションエラーが発生する可能性があります。&lt;br /&gt;
&lt;br /&gt;
 # chown &amp;quot;$USER&amp;quot;:libvirt-qemu &#039;&#039;/path/to/vm/folder&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|他にも解決方法はあります。もし忘れても virt-manager が権限変更を提案してくれます。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Socket を使わない非 root KVM ===&lt;br /&gt;
&lt;br /&gt;
{{Note|[[systemd]] のソケットを有効化するとこの設定は上書きされるので、ソケットを有効化したくない場合にのみ行ってください。}}&lt;br /&gt;
&lt;br /&gt;
root 権限のない通常のユーザーとして使用するには、KVM を設定する必要があります。これにより、libvirt ネットワーク コンポーネントも有効になります。&lt;br /&gt;
&lt;br /&gt;
次のように変更して、UNIX ドメイン ソケットの所有権を libvirt に設定し、UNIX ソケットの権限を読み取りと書き込みに設定します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/libvirtd.conf|2=&lt;br /&gt;
...&lt;br /&gt;
unix_sock_group = &#039;libvirt&#039;&lt;br /&gt;
...&lt;br /&gt;
unix_sock_rw_perms = &#039;0770&#039;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
自分を &#039;&#039;libvirt&#039;&#039; [[ユーザーグループ]] に追加する。&lt;br /&gt;
&lt;br /&gt;
さらに {{ic|/etc/libvirt/qemu.conf}} に自分のユーザーを設定します。設定しないと QEMU がローカルディスクにアクセスする際に permission denied となります。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=user = &amp;quot;libvirt-qemu&amp;quot;}} または {{ic|1=group = &amp;quot;libvirt-qemu&amp;quot;}} を検索し、両方のエントリのコメントを解除して、{{ic|libvirt-qemu}} を自分のユーザー名またはIDに変更してください。編集後、以下のようになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/qemu.conf|2=&lt;br /&gt;
# Some examples of valid values are:&lt;br /&gt;
#&lt;br /&gt;
#       user = &amp;quot;qemu&amp;quot;   # A user named &amp;quot;qemu&amp;quot;&lt;br /&gt;
#       user = &amp;quot;+0&amp;quot;     # Super user (uid=0)&lt;br /&gt;
#       user = &amp;quot;100&amp;quot;    # A user named &amp;quot;100&amp;quot; or a user with uid=100&lt;br /&gt;
#&lt;br /&gt;
user = &amp;quot;&#039;&#039;username&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The group for QEMU processes run by the system instance. It can be&lt;br /&gt;
# specified in a similar way to user.&lt;br /&gt;
group = &amp;quot;&#039;&#039;username&#039;&#039;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Virt-Manager を開くと、QEMU 接続のシステムバリアント (root) がデフォルトになります。&lt;br /&gt;
&lt;br /&gt;
これをユーザー接続に変更するには、&#039;&#039;ファイル&#039;&#039; &amp;gt; &#039;&#039;接続の追加&#039;&#039; に移動します。&lt;br /&gt;
&lt;br /&gt;
次に、ハイパーバイザーとして {{ic|QEMU/KVM ユーザー セッション}} を選択し、[OK] をクリックします。&lt;br /&gt;
これにより、ユーザーセッションに自動接続されます。必要に応じて、システム接続を切断して削除することもできます。&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク ===&lt;br /&gt;
&lt;br /&gt;
{{Note| &lt;br /&gt;
*記事は &#039;&#039;&#039;ユーザーセッション&#039;&#039;&#039; での virt-manager と libvirt の利用に焦点を当てていますが、ユーザーセッションにはネットワーク機能の制限があります。(詳細は [https://wiki.libvirt.org/FAQ.html#what-is-the-difference-between-qemu-system-and-qemu-session-which-one-should-i-use libvirt の FAQ を参照してください。]&lt;br /&gt;
*ネットワークの問題の場合は、[[libvirt]] も参照してください。}}&lt;br /&gt;
&lt;br /&gt;
ユーザーセッションでネットワークブリッジを使用するには、まず {{ic|libvirt}} システム管理で設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
このためには、{{ic|libvirt}} [[libvirt#Daemon|デーモン]] が実行されている必要があります。&lt;br /&gt;
&lt;br /&gt;
正常に起動すると、QEMU 接続のシステムバリアント (root) が virt-managerで開きます。ネットワークタブで必要な設定を行い、ブリッジを設定してください。&lt;br /&gt;
&lt;br /&gt;
ユーザーセッション仮想マシンでブリッジを使用できるようにするには、ブリッジの設定に応じて [[QEMU#Bridged networking using qemu-bridge-helper|qemu-bridge-helper]] を設定します。&lt;br /&gt;
&lt;br /&gt;
その後、ブリッジは、virt-manager ユーザーセッションで実行される仮想ネットワークで使用できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== NAT - Bridged - Host-Only====&lt;br /&gt;
&lt;br /&gt;
===== NAT =====&lt;br /&gt;
&lt;br /&gt;
NAT は同じ IP 経由で VM をルーティングします。このオプションはハードウェアの表示 -&amp;gt; NIC で使用でき、追加の設定は必要ありません。&lt;br /&gt;
&lt;br /&gt;
===== Bridged =====&lt;br /&gt;
&lt;br /&gt;
ブリッジモードでは、VM がネットワーク内の独自のクライアントであるかのように動作します。&lt;br /&gt;
virt-manager では、インターフェースを選択する必要があります。&lt;br /&gt;
&lt;br /&gt;
これは、自動的に選択される virtualbox や vmware とは異なります。&lt;br /&gt;
Bridged を使用するには、NAT を使用して [[#仮想インターフェースの作成|仮想インターフェース]] を作成する必要があります。&lt;br /&gt;
&lt;br /&gt;
(独自のインターフェースを使用することも可能ですが、追加の設定が必要になる場合があります。)&lt;br /&gt;
&lt;br /&gt;
===== Host-Only =====&lt;br /&gt;
&lt;br /&gt;
ホストのみの設定では、ホストとゲスト間のネットワーク操作のみが許可されます。&lt;br /&gt;
&lt;br /&gt;
このオプションは virt-manager には存在しません。&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;
NAT, Routed, Open, Isolated, SR-IOV Pool&lt;br /&gt;
&lt;br /&gt;
=== 3Dアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
virtio は準仮想化 3D グラフィックドライバです。基本的な 3D アクセラレーションを有効にするには、以下の手順を実行してください。&lt;br /&gt;
&lt;br /&gt;
# 仮想マシンの設定ページに移動します。&lt;br /&gt;
# &amp;quot;ハードウェアの追加&amp;quot; ボタンをクリックし、&amp;quot;ビデオ&amp;quot; を選択し、&amp;quot;モデル&amp;quot; で &amp;quot;Virtio&amp;quot; を選択します。その後、サイドバー内の他の &amp;quot;ビデオ&amp;quot; 仮想ハードウェアを削除します。&lt;br /&gt;
# &amp;quot;Display Spice&amp;quot; に移動し、&amp;quot;Listen Type&amp;quot; を &amp;quot;None&amp;quot; に設定します。また、&amp;quot;OpenGL&amp;quot; チェックボックスをオンにして、適切なレンダラーを選択します。&lt;br /&gt;
# &amp;quot;Video Virtio&amp;quot; をクリックし、&amp;quot;3D Acceleration&amp;quot; にチェックを入れます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mesa-utils}} パッケージの &#039;&#039;glxgears&#039;&#039; を使用して 3D グラフィックスをテストできます。{{ic|glxgears -info}} はコンソールに OpenGL レンダラー情報を表示します。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://virt-manager.org Project homepage]&lt;br /&gt;
* [https://github.com/virt-manager/virt-manager Project repository]&lt;br /&gt;
* [https://www.spice-space.org/download.html Spice drivers (graphics)]&lt;br /&gt;
* [https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md VirtIO Windows drivers]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Virt-Manager&amp;diff=40743</id>
		<title>Virt-Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Virt-Manager&amp;diff=40743"/>
		<updated>2025-08-23T05:45:06Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 翻訳&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[en:Virt-Manager]]&lt;br /&gt;
[[pt:Virt-Manager]]&lt;br /&gt;
[[Wikipedia:ja:Virt-manager|virt-manager]] は [[libvirt]] ライブラリのグラフィカルフロントエンドであり、仮想マシンの管理機能を提供します。&lt;br /&gt;
virt-manager のインターフェースを使えば、ユーザーはターミナルを使わずに仮想マシンを作成・削除・操作できます。&lt;br /&gt;
&lt;br /&gt;
virt-manager は主に KVM をサポートしているが、Xen や LXC といった他のハイパーバイザーでも動作可能。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
まず [[libvirt]] または [[LXC]] のページを参照し、仮想マシンを作成できることを確認します。その後 {{Pkg|virt-manager}} パッケージを[[インストール]] して下さい。&lt;br /&gt;
必要に応じて [[QEMU]] もインストールして下さい。&lt;br /&gt;
&lt;br /&gt;
{{ic|LXC}} 接続を使用する場合は {{ic|libvirtd.service}} ユニットを [[有効化/起動]] します。&lt;br /&gt;
&lt;br /&gt;
{{ic|QEMU}} 接続を使用する場合は {{ic|libvirtd.socket}} ユニットを [[有効化/起動]] します。&lt;br /&gt;
&lt;br /&gt;
サービスが実行中かどうかは [[ユニットステータス]] で確認できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ドメインの [https://www.libvirt.org/manpages/virsh.html#autostart 自動起動機能] を使用するには、{{ic|libvirtd.service}} を有効にする必要があります。}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本設定 ===&lt;br /&gt;
&lt;br /&gt;
自分を &#039;&#039;libvirt&#039;&#039; [[ユーザーグループ]] に追加して下さい。&lt;br /&gt;
&lt;br /&gt;
また、virt-manager のデフォルトプール外にあるファイルやフォルダを利用する場合、それらの所有者を {{ic|libvirt-qemu}} グループに設定しておくとよいでしょう。そうしないと、アクセス時にパーミッションエラーが発生する可能性があります。&lt;br /&gt;
&lt;br /&gt;
 # chown &amp;quot;$USER&amp;quot;:libvirt-qemu &#039;&#039;/path/to/vm/folder&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|他にも解決方法はあります。もし忘れても virt-manager が権限変更を提案してくれます。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Socket を使わない非 root KVM ===&lt;br /&gt;
&lt;br /&gt;
{{Note|[[systemd]] のソケットを有効化するとこの設定は上書きされるので、ソケットを有効化したくない場合にのみ行ってください。}}&lt;br /&gt;
&lt;br /&gt;
root 権限のない通常のユーザーとして使用するには、KVM を設定する必要があります。これにより、libvirt ネットワーク コンポーネントも有効になります。&lt;br /&gt;
&lt;br /&gt;
次のように変更して、UNIX ドメイン ソケットの所有権を libvirt に設定し、UNIX ソケットの権限を読み取りと書き込みに設定します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/libvirtd.conf|2=&lt;br /&gt;
...&lt;br /&gt;
unix_sock_group = &#039;libvirt&#039;&lt;br /&gt;
...&lt;br /&gt;
unix_sock_rw_perms = &#039;0770&#039;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
自分を &#039;&#039;libvirt&#039;&#039; [[ユーザーグループ]] に追加する。&lt;br /&gt;
&lt;br /&gt;
さらに {{ic|/etc/libvirt/qemu.conf}} に自分のユーザーを設定します。設定しないと QEMU がローカルディスクにアクセスする際に permission denied となります。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=user = &amp;quot;libvirt-qemu&amp;quot;}} または {{ic|1=group = &amp;quot;libvirt-qemu&amp;quot;}} を検索し、両方のエントリのコメントを解除して、{{ic|libvirt-qemu}} を自分のユーザー名またはIDに変更してください。編集後、以下のようになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/qemu.conf|2=&lt;br /&gt;
# Some examples of valid values are:&lt;br /&gt;
#&lt;br /&gt;
#       user = &amp;quot;qemu&amp;quot;   # A user named &amp;quot;qemu&amp;quot;&lt;br /&gt;
#       user = &amp;quot;+0&amp;quot;     # Super user (uid=0)&lt;br /&gt;
#       user = &amp;quot;100&amp;quot;    # A user named &amp;quot;100&amp;quot; or a user with uid=100&lt;br /&gt;
#&lt;br /&gt;
user = &amp;quot;&#039;&#039;username&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The group for QEMU processes run by the system instance. It can be&lt;br /&gt;
# specified in a similar way to user.&lt;br /&gt;
group = &amp;quot;&#039;&#039;username&#039;&#039;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Virt-Manager を開くと、QEMU 接続のシステムバリアント (root) がデフォルトになります。&lt;br /&gt;
&lt;br /&gt;
これをユーザー接続に変更するには、&#039;&#039;ファイル&#039;&#039; &amp;gt; &#039;&#039;接続の追加&#039;&#039; に移動します。&lt;br /&gt;
&lt;br /&gt;
次に、ハイパーバイザーとして {{ic|QEMU/KVM ユーザー セッション}} を選択し、[OK] をクリックします。&lt;br /&gt;
これにより、ユーザーセッションに自動接続されます。必要に応じて、システム接続を切断して削除することもできます。&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク ===&lt;br /&gt;
&lt;br /&gt;
{{Note| &lt;br /&gt;
*記事は &#039;&#039;&#039;ユーザーセッション&#039;&#039;&#039; での virt-manager と libvirt の利用に焦点を当てていますが、ユーザーセッションにはネットワーク機能の制限があります。(詳細は [https://wiki.libvirt.org/FAQ.html#what-is-the-difference-between-qemu-system-and-qemu-session-which-one-should-i-use&lt;br /&gt;
*ネットワークの問題の場合は、[[libvirt]] も参照してください。}}&lt;br /&gt;
&lt;br /&gt;
ユーザーセッションでネットワークブリッジを使用するには、まず {{ic|libvirt}} システム管理で設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
このためには、{{ic|libvirt}} [[libvirt#Daemon|デーモン]] が実行されている必要があります。&lt;br /&gt;
&lt;br /&gt;
正常に起動すると、QEMU 接続のシステムバリアント (root) が virt-managerで開きます。ネットワークタブで必要な設定を行い、ブリッジを設定してください。&lt;br /&gt;
&lt;br /&gt;
ユーザーセッション仮想マシンでブリッジを使用できるようにするには、ブリッジの設定に応じて [[QEMU#Bridged networking using qemu-bridge-helper|qemu-bridge-helper]] を設定します。&lt;br /&gt;
&lt;br /&gt;
その後、ブリッジは、virt-manager ユーザーセッションで実行される仮想ネットワークで使用できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== NAT - Bridged - Host-Only====&lt;br /&gt;
&lt;br /&gt;
===== NAT =====&lt;br /&gt;
&lt;br /&gt;
NAT は同じ IP 経由で VM をルーティングします。このオプションはハードウェアの表示 -&amp;gt; NIC で使用でき、追加の設定は必要ありません。&lt;br /&gt;
&lt;br /&gt;
===== Bridged =====&lt;br /&gt;
&lt;br /&gt;
ブリッジモードでは、VM がネットワーク内の独自のクライアントであるかのように動作します。&lt;br /&gt;
virt-manager では、インターフェースを選択する必要があります。&lt;br /&gt;
&lt;br /&gt;
これは、自動的に選択される virtualbox や vmware とは異なります。&lt;br /&gt;
Bridged を使用するには、NAT を使用して [[#仮想インターフェースの作成|仮想インターフェース]] を作成する必要があります。&lt;br /&gt;
&lt;br /&gt;
(独自のインターフェースを使用することも可能ですが、追加の設定が必要になる場合があります。)&lt;br /&gt;
&lt;br /&gt;
===== Host-Only =====&lt;br /&gt;
&lt;br /&gt;
ホストのみの設定では、ホストとゲスト間のネットワーク操作のみが許可されます。&lt;br /&gt;
&lt;br /&gt;
このオプションは virt-manager には存在しません。&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;
NAT, Routed, Open, Isolated, SR-IOV Pool&lt;br /&gt;
&lt;br /&gt;
=== 3Dアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
virtio は準仮想化 3D グラフィックドライバです。基本的な 3D アクセラレーションを有効にするには、以下の手順を実行してください。&lt;br /&gt;
&lt;br /&gt;
# 仮想マシンの設定ページに移動します。&lt;br /&gt;
# &amp;quot;ハードウェアの追加&amp;quot; ボタンをクリックし、&amp;quot;ビデオ&amp;quot; を選択し、&amp;quot;モデル&amp;quot; で &amp;quot;Virtio&amp;quot; を選択します。その後、サイドバー内の他の &amp;quot;ビデオ&amp;quot; 仮想ハードウェアを削除します。&lt;br /&gt;
# &amp;quot;Display Spice&amp;quot; に移動し、&amp;quot;Listen Type&amp;quot; を &amp;quot;None&amp;quot; に設定します。また、&amp;quot;OpenGL&amp;quot; チェックボックスをオンにして、適切なレンダラーを選択します。&lt;br /&gt;
# &amp;quot;Video Virtio&amp;quot; をクリックし、&amp;quot;3D Acceleration&amp;quot; にチェックを入れます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mesa-utils}} パッケージの &#039;&#039;glxgears&#039;&#039; を使用して 3D グラフィックスをテストできます。{{ic|glxgears -info}} はコンソールに OpenGL レンダラー情報を表示します。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://virt-manager.org Project homepage]&lt;br /&gt;
* [https://github.com/virt-manager/virt-manager Project repository]&lt;br /&gt;
* [https://www.spice-space.org/download.html Spice drivers (graphics)]&lt;br /&gt;
* [https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md VirtIO Windows drivers]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Virt-Manager&amp;diff=40742</id>
		<title>Virt-Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Virt-Manager&amp;diff=40742"/>
		<updated>2025-08-23T05:14:49Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 英語版から転載&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Wikipedia:Virt-manager|virt-manager]] is a graphical user front end for the [[libvirt]] library which provides virtual machine management services. virt-manager interface makes it easy for the user to create, delete and manipulate virtual machines without going through the terminal.&lt;br /&gt;
&lt;br /&gt;
virt-manager mainly supports KVM but it can work with other hypervisors, such as Xen and LXC.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
First follow the [[libvirt]] or [[LXC]] pages and ensure you can create virtual machines, then [[install]] the {{Pkg|virt-manager}} package. &lt;br /&gt;
Install [[QEMU]] if needed.&lt;br /&gt;
&lt;br /&gt;
To use an {{ic|LXC}} connection [[enable/start]] the {{ic|libvirtd.service}} unit.&lt;br /&gt;
&lt;br /&gt;
To use a {{ic|QEMU}} connection [[enable/start]] the {{ic|libvirtd.socket}} unit.&lt;br /&gt;
&lt;br /&gt;
You can check the [[unit status]] to make sure the service is running.&lt;br /&gt;
&lt;br /&gt;
{{Note|The domain [https://www.libvirt.org/manpages/virsh.html#autostart autostart] feature requires {{ic|libvirtd.service}} to be enabled.}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Basic configuration ===&lt;br /&gt;
&lt;br /&gt;
Add yourself to the &#039;&#039;libvirt&#039;&#039; [[user group]].&lt;br /&gt;
&lt;br /&gt;
It is also a good idea to ensure that any files/folders outside of virt-manager&#039;s default pool are owned by the {{ic|libvirt-qemu}} group, otherwise you might encounter permission errors when accessing files outside of the default pool.&lt;br /&gt;
&lt;br /&gt;
 # chown &amp;quot;$USER&amp;quot;:libvirt-qemu &#039;&#039;/path/to/vm/folder&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|There are other ways to solve this issue, if you forget then virt-manager will ask for permission to change these settings for you.}}&lt;br /&gt;
&lt;br /&gt;
== Tips and tricks ==&lt;br /&gt;
&lt;br /&gt;
=== Non root KVM without Socket ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Enabling the [[systemd]] socket overrides this, only do this if you don&#039;t want to enable the socket}}&lt;br /&gt;
&lt;br /&gt;
To use as a normal user without [[root]] we need to configure KVM, this will also enable the libvirt networking components.&lt;br /&gt;
&lt;br /&gt;
Set the UNIX domain socket ownership to libvirt and the UNIX socket permission to read and write by changing the following:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/libvirtd.conf|2=&lt;br /&gt;
...&lt;br /&gt;
unix_sock_group = &#039;libvirt&#039;&lt;br /&gt;
...&lt;br /&gt;
unix_sock_rw_perms = &#039;0770&#039;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Add your user to the &#039;&#039;libvirt&#039;&#039; [[user group]].&lt;br /&gt;
&lt;br /&gt;
Add your user to {{ic|/etc/libvirt/qemu.conf}}. Otherwise, QEMU will give a permission denied error when trying to access local drives.&lt;br /&gt;
&lt;br /&gt;
Search for {{ic|1=user = &amp;quot;libvirt-qemu&amp;quot;}} or {{ic|1=group = &amp;quot;libvirt-qemu&amp;quot;}}, uncomment both entries and change {{ic|libvirt-qemu}} to your user name or ID. Once edited it should look something like below.&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/qemu.conf|2=&lt;br /&gt;
# Some examples of valid values are:&lt;br /&gt;
#&lt;br /&gt;
#       user = &amp;quot;qemu&amp;quot;   # A user named &amp;quot;qemu&amp;quot;&lt;br /&gt;
#       user = &amp;quot;+0&amp;quot;     # Super user (uid=0)&lt;br /&gt;
#       user = &amp;quot;100&amp;quot;    # A user named &amp;quot;100&amp;quot; or a user with uid=100&lt;br /&gt;
#&lt;br /&gt;
user = &amp;quot;&#039;&#039;username&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The group for QEMU processes run by the system instance. It can be&lt;br /&gt;
# specified in a similar way to user.&lt;br /&gt;
group = &amp;quot;&#039;&#039;username&#039;&#039;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Upon opening Virt-Manager, it will default to the system variant (root) of the QEMU connection.&lt;br /&gt;
&lt;br /&gt;
This can be changed to the user connection by going to: &#039;&#039;File&#039;&#039; &amp;gt; &#039;&#039;Add Connection&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Now select {{ic|QEMU/KVM User session}} as the Hypervisor and click OK.&lt;br /&gt;
This will now auto-connect to the user session. You can now disconnect and remove the system connection if desired.&lt;br /&gt;
&lt;br /&gt;
=== Networking ===&lt;br /&gt;
&lt;br /&gt;
{{Note| &lt;br /&gt;
*The virt-manager article focuses on using virt-manager and libvirt in &#039;&#039;&#039;user session&#039;&#039;&#039;, which has limited networking capabilities (see [https://wiki.libvirt.org/FAQ.html#what-is-the-difference-between-qemu-system-and-qemu-session-which-one-should-i-use libvirt FAQ] for details). There are more networking possibilities when using the system variant (root).&lt;br /&gt;
*Also look at [[libvirt]] in case of networking issues.}}&lt;br /&gt;
&lt;br /&gt;
To use a network bridge in user session it has to be setup in {{ic|libvirt}} system administration first.&lt;br /&gt;
&lt;br /&gt;
For this the {{ic|libvirt}} [[libvirt#Daemon|daemon]] must be running.&lt;br /&gt;
&lt;br /&gt;
When it is started successfully, the system variant (root) of the QEMU connection can be opened in virt-manager. Setup the bridge with the desired settings in the networking tab  there.&lt;br /&gt;
&lt;br /&gt;
To be able to use the bridge in a user session virtual machine, setup the [[QEMU#Bridged networking using qemu-bridge-helper|qemu-bridge-helper]] according to your bridge setup .&lt;br /&gt;
&lt;br /&gt;
After that the bridge can be used at a virtual network that runs in virt-manager user session.&lt;br /&gt;
&lt;br /&gt;
==== NAT - Bridged - Host-Only====&lt;br /&gt;
&lt;br /&gt;
===== NAT =====&lt;br /&gt;
&lt;br /&gt;
NAT routes the VM over the same IP, this option is available in the Show hardware -&amp;gt; NIC and does not need any additional configuration&lt;br /&gt;
&lt;br /&gt;
===== Bridged =====&lt;br /&gt;
&lt;br /&gt;
Bridged mode acts as if the VM where it&#039;s own client in the network.&lt;br /&gt;
In virt-manager you must select an interface for it. &lt;br /&gt;
&lt;br /&gt;
Which is different from virtualbox or vmware, where it gets automatically selected.&lt;br /&gt;
In order to use Bridged you should create a [[#Creating a Virtual Interface|virtual interface]] with NAT.&lt;br /&gt;
&lt;br /&gt;
(It can be possible to use your own interface, but that might require additional configuration.)&lt;br /&gt;
&lt;br /&gt;
===== Host-Only =====&lt;br /&gt;
&lt;br /&gt;
A host only configuration, only permits network operations between host and guest. &lt;br /&gt;
&lt;br /&gt;
This option doesn&#039;t exist for virt-manager. &lt;br /&gt;
Instead you must use a bridge connected to a virtual isolated Network. See: [[#Creating a Virtual Interface]]&lt;br /&gt;
&lt;br /&gt;
=== Connection Details ===&lt;br /&gt;
&lt;br /&gt;
==== Creating a Virtual Interface ====&lt;br /&gt;
&lt;br /&gt;
Go to Edit -&amp;gt; Connection Details -&amp;gt; add&lt;br /&gt;
&lt;br /&gt;
Following Options are available:&lt;br /&gt;
&lt;br /&gt;
NAT, Routed, Open, Isolated, SR-IOV Pool&lt;br /&gt;
&lt;br /&gt;
=== 3D acceleration ===&lt;br /&gt;
&lt;br /&gt;
virtio is a paravirtual 3D graphics driver. To enable basic 3D acceleration:&lt;br /&gt;
&lt;br /&gt;
# Go to a virtual machine&#039;s setting page.&lt;br /&gt;
# Click on the &amp;quot;Add Hardware&amp;quot; button &amp;gt; Video &amp;gt; select the &amp;quot;Model&amp;quot; as &amp;quot;Virtio&amp;quot;.  Then remove any other &amp;quot;Video&amp;quot; virtual hardware (within the sidebar).&lt;br /&gt;
# Go to &amp;quot;Display Spice&amp;quot; and set &amp;quot;Listen Type&amp;quot; to &amp;quot;None&amp;quot;.  Also tick the &amp;quot;OpenGL&amp;quot; checkbox and select the appropriate renderer.&lt;br /&gt;
# Click on &amp;quot;Video Virtio&amp;quot; and tick &amp;quot;3D Acceleration&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;glxgears&#039;&#039; from the {{Pkg|mesa-utils}} package to test the 3D graphics. {{ic|glxgears -info}} displays OpenGL renderer info in the console.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://virt-manager.org Project homepage]&lt;br /&gt;
* [https://github.com/virt-manager/virt-manager Project repository]&lt;br /&gt;
* [https://www.spice-space.org/download.html Spice drivers (graphics)]&lt;br /&gt;
* [https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md VirtIO Windows drivers]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Reflector&amp;diff=40740</id>
		<title>Reflector</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Reflector&amp;diff=40740"/>
		<updated>2025-08-23T01:20:15Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* 自動化 */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:パッケージ管理]]&lt;br /&gt;
[[en:Reflector]]&lt;br /&gt;
[[es:Reflector]]&lt;br /&gt;
[[fr:Reflector]]&lt;br /&gt;
[[it:Reflector]]&lt;br /&gt;
[[ko:Reflector]]&lt;br /&gt;
[[pl:Reflector]]&lt;br /&gt;
[[ru:Reflector]]&lt;br /&gt;
[[zh-hans:Reflector]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ミラー}}&lt;br /&gt;
{{Related|Pacman}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://xyne.archlinux.ca/projects/reflector/ Reflector] は [https://archlinux.org/mirrors/status/ Arch Linux Mirror Status] ページから最新のミラーリストを取得して、フィルタリングおよび速度でソートし、{{ic|/etc/pacman.d/mirrorlist}} ファイルを上書きする Python スクリプトです。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|reflector}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
利用できるコマンドを表示するには、次のコマンドを実行:&lt;br /&gt;
 # reflector --help&lt;br /&gt;
&lt;br /&gt;
{{Note|通常、国ごとにミラーを絞り込むのは得策ではありません。ひとつの国に存在するミラーの数には限りがありますし、ネットワークの通信速度は地理的な距離だけで決まるものではないからです。}}&lt;br /&gt;
&lt;br /&gt;
=== サンプル ===&lt;br /&gt;
&lt;br /&gt;
{{man|1|reflector|EXAMPLES}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|/etc/pacman.d/mirrorlist}} を上書きする例は root 権限で実行する必要があります。作業を進める前にバックアップを作成し、その後結果を確認してください。}}&lt;br /&gt;
&lt;br /&gt;
== 自動化 ==&lt;br /&gt;
&lt;br /&gt;
=== systemd サービス ===&lt;br /&gt;
&lt;br /&gt;
Reflector には {{ic|reflector.service}} が同梱されており、{{ic|/etc/xdg/reflector/reflector.conf}} に指定されたオプションを使って Reflector を実行します。このファイルにあるデフォルトのオプションは、良い出発点であり例となります。&lt;br /&gt;
&lt;br /&gt;
Reflector を起動時に実行するには {{ic|reflector.service}} を [[有効化]] してください。すぐに実行する場合は、サービスを [[起動]] します。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|reflector.service}} は [[systemd#ネットワークが稼働した後にサービスを実行する|network-online.target]] を介してネットワーク待機サービスが設定されている必要があります。}}&lt;br /&gt;
&lt;br /&gt;
=== systemd タイマー ===&lt;br /&gt;
&lt;br /&gt;
Reflector は [[systemd/タイマー]]({{ic|reflector.timer}})を提供しており、[[#systemd サービス]] {{ic|reflector.service}} を週に一度起動します。スケジュールは {{ic|reflector.timer}} を [[編集]] することで変更できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|reflector.service}} が起動する際のデフォルトオプションを変更するには、[[#systemd サービス]] で説明されているように設定ファイルを編集してください。その後、{{ic|reflector.timer}} を [[起動]] し、[[有効化]] します。&lt;br /&gt;
&lt;br /&gt;
スケジュールより前にミラーリストを更新したい場合は、{{ic|reflector.service}} を [[起動]] してください。&lt;br /&gt;
&lt;br /&gt;
=== pacman フック ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pacman-mirrorlist}} は定期的に更新されるわけではなく、世界のどこかでミラーが追加・削除されたからといって reflector を呼び出すのは適切ではありません。その代わりに [[systemd/タイマー]] のアプローチを利用してください。{{ic|mirrorlist.pacnew}} をまったくインストールしたくない場合は、{{ic|/etc/pacman.conf}} の [[pacman#インストールさせないファイルを設定|NoExtract]] を使用してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=115714 Reflector Arch Linux フォーラムのスレッド]&lt;br /&gt;
* [https://xyne.archlinux.ca/projects/reflector/ 変更ログを含むアップストリームプロジェクトページ]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Reflector&amp;diff=40739</id>
		<title>Reflector</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Reflector&amp;diff=40739"/>
		<updated>2025-08-23T01:11:34Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* 使用方法 */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:パッケージ管理]]&lt;br /&gt;
[[en:Reflector]]&lt;br /&gt;
[[es:Reflector]]&lt;br /&gt;
[[fr:Reflector]]&lt;br /&gt;
[[it:Reflector]]&lt;br /&gt;
[[ko:Reflector]]&lt;br /&gt;
[[pl:Reflector]]&lt;br /&gt;
[[ru:Reflector]]&lt;br /&gt;
[[zh-hans:Reflector]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ミラー}}&lt;br /&gt;
{{Related|Pacman}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://xyne.archlinux.ca/projects/reflector/ Reflector] は [https://archlinux.org/mirrors/status/ Arch Linux Mirror Status] ページから最新のミラーリストを取得して、フィルタリングおよび速度でソートし、{{ic|/etc/pacman.d/mirrorlist}} ファイルを上書きする Python スクリプトです。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|reflector}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
利用できるコマンドを表示するには、次のコマンドを実行:&lt;br /&gt;
 # reflector --help&lt;br /&gt;
&lt;br /&gt;
{{Note|通常、国ごとにミラーを絞り込むのは得策ではありません。ひとつの国に存在するミラーの数には限りがありますし、ネットワークの通信速度は地理的な距離だけで決まるものではないからです。}}&lt;br /&gt;
&lt;br /&gt;
=== サンプル ===&lt;br /&gt;
&lt;br /&gt;
{{man|1|reflector|EXAMPLES}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|/etc/pacman.d/mirrorlist}} を上書きする例は root 権限で実行する必要があります。作業を進める前にバックアップを作成し、その後結果を確認してください。}}&lt;br /&gt;
&lt;br /&gt;
== 自動化 ==&lt;br /&gt;
&lt;br /&gt;
=== Systemd サービス ===&lt;br /&gt;
&lt;br /&gt;
サービスは、{{ic|/etc/xdg/reflector/reflector.conf}} で指定されたパラメータを使用し Reflector を実行します。このファイルのデフォルトのオプションは、例として示しています。&lt;br /&gt;
&lt;br /&gt;
たとえば、HTTPS をサポートし、上書き {{ic|/etc/pacman.d/mirrorlist}} する最新の5つのミラーを日本とオーストラリアから選択するには、次のコマンドを使用します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/xdg/reflector/reflector.conf|&lt;br /&gt;
--save /etc/pacman.d/mirrorlist&lt;br /&gt;
--country Japan,Australia&lt;br /&gt;
--protocol https&lt;br /&gt;
--latest 5&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|reflector.service}} を [[有効化]] すればミラーリストが起動時に更新されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|reflector.service}} は、[[systemd#ネットワークが稼働した後にサービスを実行する|network-online.target]] を介して設定されるネットワーク待機サービスに依存します。}}&lt;br /&gt;
&lt;br /&gt;
=== Systemd タイマー ===&lt;br /&gt;
&lt;br /&gt;
バージョン2020.8 以降、Reflector は [[systemd/タイマー]] ({{ic|reflector.timer}}) を提供しており、 [[Reflector#Systemd サービス]] {{ic|reflector.service}} を毎週開始します。スケジュールは {{ic|reflector.timer}} を [https://wiki.archlinux.jp/index.php/Systemd#.E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E7.B7.A8.E9.9B.86 編集] することで変更できます。&lt;br /&gt;
&lt;br /&gt;
まず、[[Reflector#Systemd サービス]] の説明に従って、設定ファイルを編集します。設定ファイルを更新した後、{{ic|reflector.timer}} を [[有効化]] してください。 &lt;br /&gt;
&lt;br /&gt;
ミラーリストをスケジュールより先に更新するには、{{ic|reflector.service}} を [https://wiki.archlinux.jp/index.php/Systemd#.E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86 start] してください。&lt;br /&gt;
&lt;br /&gt;
=== Pacman フック ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pacman-mirrorlist}} は定期的に更新されず、世界の一部のミラーが追加または削除されたという理由だけで reflector を呼び出します。代わりにタイマーベースの自動化を使いましょう。もし {{ic|mirrorlist.pacnew}} を全くインストールしたくない場合は、{{ic|pacman.conf}} で {{ic|NoExtract}} を使って下さい。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=115714 Reflector Arch Linux フォーラムのスレッド]&lt;br /&gt;
* [https://xyne.archlinux.ca/projects/reflector/ 変更ログを含むアップストリームプロジェクトページ]&lt;/div&gt;</summary>
		<author><name>Kgx</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=40702</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=40702"/>
		<updated>2025-08-15T08:12:28Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* irqbalance */ 同期&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;
{{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=以下の設定を使うときは問題の脆弱性について確認してください。詳しくは [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>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=GNOME&amp;diff=40701</id>
		<title>GNOME</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=GNOME&amp;diff=40701"/>
		<updated>2025-08-15T06:16:48Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* インストール */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:GNOME]]&lt;br /&gt;
[[cs:GNOME]]&lt;br /&gt;
[[de:GNOME]]&lt;br /&gt;
[[en:GNOME]]&lt;br /&gt;
[[es:GNOME]]&lt;br /&gt;
[[it:GNOME]]&lt;br /&gt;
[[pt:GNOME]]&lt;br /&gt;
[[ru:GNOME]]&lt;br /&gt;
[[zh-hans:GNOME]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|デスクトップ環境}}&lt;br /&gt;
{{Related|GTK}}&lt;br /&gt;
{{Related|GDM}}&lt;br /&gt;
{{Related|GNOME/ヒントとテクニック}}&lt;br /&gt;
{{Related|GNOME/トラブルシューティング}}&lt;br /&gt;
{{Related|GNOME/Files}}&lt;br /&gt;
{{Related|GNOME/Gedit}}&lt;br /&gt;
{{Related|GNOME/Web}}&lt;br /&gt;
{{Related|GNOME/Evolution}}&lt;br /&gt;
{{Related|GNOME/Flashback}}&lt;br /&gt;
{{Related|GNOME/Keyring}}&lt;br /&gt;
{{Related|GNOME/ドキュメントビューア}}&lt;br /&gt;
{{Related|公式リポジトリ#gnome-unstable}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:GNOME|GNOME]] (/(ɡ)noʊm/) は、シンプルで使いやすいことを目指した [[デスクトップ環境]] です。[[Wikipedia:ja:GNOMEプロジェクト|GNOME プロジェクト]] によって設計され、すべてフリーでオープンソースのソフトウェアで構成されています。デフォルトのディスプレイは [[Xorg]] の代わりに [[Wayland]] であり、利用可能なセッションは以下の通りです。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;GNOME &#039;&#039;&#039; は、GNOME Shell を [[Wayland]] 上で動作させます。伝統的な X アプリケーションは Xwayland を通して実行され、デフォルトの選択です。&lt;br /&gt;
* &#039;&#039;&#039;GNOME Classic&#039;&#039;&#039; は &amp;quot;[https://help.gnome.org/users/gnome-help/stable/gnome-classic.html 伝統的なデスクトップ体験]&amp;quot; を提供します。(GNOME 2 に似たインターフェイスで) [https://web.archive.org/web/20190503163814/http://www.worldofgnome.org/welcome-to-gnome-3-8-flintstones-mode/ 特定の拡張子や値] を使用します。したがって、これは GNOME Shell をカスタマイズしたものであり、真の意味で別個のモードと言うわけではありません。&lt;br /&gt;
* &#039;&#039;&#039;GNOME on Xorg&#039;&#039;&#039; は [[Xorg]] を使って GNOME Shell を実行します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
GNOME には2つのパッケージグループが存在します:&lt;br /&gt;
&lt;br /&gt;
* {{Grp|gnome}} には、ベースの GNOME デスクトップと、統合された[https://apps.gnome.org/ コアアプリケーション]が含まれています。&lt;br /&gt;
* {{Grp|gnome-circle}} には、GNOME エコシステムを拡張するためのさまざまな[https://apps.gnome.org/#circle 追加アプリケーション]が含まれています。&lt;br /&gt;
* {{Grp|gnome-extra}} には、E メールクライアント、IRC クライアント、[[#高度な設定|GNOME Tweaks]]、ゲーム集、そして開発ツールを含むその他の GNOME アプリケーションが含まれています。このグループは {{Grp|gnome}} を必要とすることに注意してください。&lt;br /&gt;
&lt;br /&gt;
ベースのデスクトップは [[Wikipedia:ja:Mutter|Mutter]] ウィンドウマネージャのプラグインである [[Wikipedia:ja:GNOME Shell|GNOME Shell]] からできています。これは {{Pkg|gnome-shell}} パッケージでで個別にインストールできます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;mutter&#039;&#039; はデスクトップのコンポジットマネージャとして動作します。ハードウェアグラフィックアクセラレーションを使って画面のちらつきを抑えます。GNOME セッションマネージャはあなたのビデオドライバが GNOME Shell を動かすことができるか自動で検知して、場合によっては &#039;&#039;llvmpipe&#039;&#039; によるソフトウェアレンダリングを利用します。}}&lt;br /&gt;
&lt;br /&gt;
不安定なリリースも使用できます。[[公式リポジトリ#gnome-unstable]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 起動 ==&lt;br /&gt;
&lt;br /&gt;
GNOME は[[ディスプレイマネージャ]]を使ってグラフィカルに起動することも、コンソールから手動で起動する (ただし、一部の機能が不足している場合があります) こともできます。{{Grp|gnome}} に含まれているディスプレイマネージャは [[GDM]] です。&lt;br /&gt;
&lt;br /&gt;
{{Note|GNOME における画面ロック (など) のサポートは GDM によって提供されています。GNOME を GDM で開始しない場合、他の画面ロッカーを使用できます。[[アプリケーション一覧/セキュリティ#スクリーンロック]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== グラフィカル ===&lt;br /&gt;
&lt;br /&gt;
{{Grp|gnome}} グループをインストールしていて、次回のブート時に GNOME を自動的に開始させたい場合、{{ic|gdm.service}} を[[有効化]]してください。ディスプレイマネージャのセッションメニューからセッションを選ぶことができます: &#039;&#039;GNOME&#039;&#039;、&#039;&#039;GNOME Classic&#039;&#039; ({{Pkg|gnome-shell-extensions}} がインストールされている場合にのみ表示されます)、&#039;&#039;GNOME on Xorg&#039;&#039;。Wayland セッションは [[GDM#Xorg バックエンドを使う|GDM の設定ファイル]]で有効化/無効化できます。&lt;br /&gt;
&lt;br /&gt;
再起動せずに GNOME をすぐに起動したい場合は、グラフィックに使用されていない tty から前述の {{ic|gdm.service}} を[[起動]]してください。&lt;br /&gt;
&lt;br /&gt;
=== 手動 ===&lt;br /&gt;
&lt;br /&gt;
==== Xorg セッション ====&lt;br /&gt;
&lt;br /&gt;
* GNOME on Xorg セッションの場合は、{{ic|~/.xinitrc}} ファイルに以下を追加してください (詳細は [https://gitlab.gnome.org/GNOME/gtk/issues/1390#note_344758] を参照してください): {{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
export XDG_SESSION_TYPE=x11&lt;br /&gt;
export GDK_BACKEND=x11&lt;br /&gt;
exec gnome-session&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
* GNOME Classic セッションの場合は、{{ic|~/.xinitrc}} ファイルに以下を追加してください: {{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
export XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME&lt;br /&gt;
export GNOME_SHELL_SESSION_MODE=classic&lt;br /&gt;
exec gnome-session&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.xinitrc}} ファイルを編集した後、{{ic|startx}} コマンドで GNOME を起動できます (logind セッションの保持など、その他の詳細については [[xinitrc]] を参照してください)。{{ic|~/.xinitrc}} ファイルを設定した後、例えば以下を {{ic|.bash_profile}} に追加することで tty1 で[[ログイン時に X を起動]]するように設定することもできます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
if [[ -z $DISPLAY &amp;amp;&amp;amp; $(tty) == /dev/tty1 ]]; then&lt;br /&gt;
  XDG_SESSION_TYPE=x11 GDK_BACKEND=x11 exec startx&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== Wayland セッション ====&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|dbus から {{ic|gnome-session}} を実行すると、問題が発生したり、あるいは全く動作しない場合があります。発生する問題としては、Chrome/Chromium を起動できなかったり、サウンドデバイスを利用できなかったりします。{{ic|gnome-session}} を直接実行するほうが良く機能するでしょう。議論: [[:en:Talk:GNOME#Manually start a Wayland session]]}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Wayland]] に移植されていないアプリケーションを実行するには、まだ X サーバが必要です (詳細は [[Wayland#Xwayland]] を参照してください)。Qt のような特定のグラフィックライブラリを使用するアプリケーションは、環境変数を設定することで強制的に Wayland を使用させることができます。詳しくは [[Wayland#GUI ライブラリ]] をご覧ください。}}&lt;br /&gt;
&lt;br /&gt;
Wayland セッションを手動で開始するには:&lt;br /&gt;
&lt;br /&gt;
 $ XDG_SESSION_TYPE=wayland dbus-run-session gnome-session&lt;br /&gt;
&lt;br /&gt;
{{ic|gnome-shell --wayland}} を直接実行することは推奨されていません。セッション管理機能が無いからです。&lt;br /&gt;
&lt;br /&gt;
GNOME を手動で起動する際に {{ic|gdm}} は全く &#039;&#039;&#039;不要&#039;&#039;&#039; であることに注意してください (つまり、{{ic|gdm.service}} も不要です)。なので、個人の好みで {{ic|gnome}} グループに含まれる数個のパッケージだけで、アクセス可能な最小限の GNOME 環境を構築することができます。&lt;br /&gt;
&lt;br /&gt;
tty1 へのログイン時にセッションを開始するには、前述のコマンドを {{ic|.bash_profile}} に追加してください。Firefox と QT アプリケーションは {{ic|XDG_SESSION_TYPE}} の設定を反映しないので、それらのアプリケーションに対しても変数を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
if [[ -z $DISPLAY &amp;amp;&amp;amp; $(tty) == /dev/tty1 &amp;amp;&amp;amp; $XDG_SESSION_TYPE == tty ]]; then&lt;br /&gt;
  MOZ_ENABLE_WAYLAND=1 QT_QPA_PLATFORM=wayland XDG_SESSION_TYPE=wayland exec dbus-run-session gnome-session&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Wayland における GNOME アプリケーション ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;GNOME&#039;&#039; セッションを使用すると、GNOME アプリケーションは Wayland を使用して実行されます。デバッグする際には、https://docs.gtk.org/gtk3/running.html と https://docs.gtk.org/gtk4/running.html にオプションと環境変数のリストがあります。&lt;br /&gt;
&lt;br /&gt;
== ナビゲーション ==&lt;br /&gt;
&lt;br /&gt;
GNOME shell の効果的な使い方を学ぶには、[https://wiki.gnome.org/Projects/GnomeShell/CheatSheet GNOME Shell Cheat Sheet] を読んでください。GNOME shell の機能とキーボードショートカットを紹介しています。機能にはタスクの切り替え、キーボードの使用、ウィンドウの制御、パネル、概要モードなどが含まれます。ショートカットのいくつかを紹介します:&lt;br /&gt;
&lt;br /&gt;
* {{ic|Super+m}}: 通知リストを表示&lt;br /&gt;
* {{ic|Super+a}}: アプリケーションメニューを表示&lt;br /&gt;
* {{ic|Alt+Tab}}: アクティブなアプリケーションを循環&lt;br /&gt;
* {{ic|Alt+`}}(US キーボードレイアウトなら {{ic|Tab}} の上のキー): フォアグラウンドのアプリケーションのウィンドウの循環&lt;br /&gt;
* {{ic|Alt+F2}} を押してから {{ic|r}} または {{ic|restart}}: シェルに問題が発生した場合にシェルを再起動 (X/レガシーモード限定、Wayland モードでは機能しません)&lt;br /&gt;
&lt;br /&gt;
デフォルトの設定を変更してウィンドウの切り替えを Windows のようにする方法については、[[GNOME/ヒントとテクニック#ナビゲーション]] を見てください。&lt;br /&gt;
&lt;br /&gt;
その他のショートカットについては、[https://help.gnome.org/users/gnome-help/stable/keyboard-nav.html キーボードナビゲーション]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== アプリケーションの旧名 ==&lt;br /&gt;
&lt;br /&gt;
{{Note|GNOME プログラムの中には名前の変更が行われて、ドキュメントやダイアログでのアプリケーション名は変更されたのに実行可能ファイルの名前は変わっていないものがあります。以下の表ではそのようなアプリケーションを挙げています。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|アプリケーションの旧名を Shell の検索バーで検索すると探したいアプリケーションが出て来ます。例えば、&#039;&#039;nautilus&#039;&#039; を検索すると &#039;&#039;Files&#039;&#039; が表示されます。}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 新名&lt;br /&gt;
! 旧名&lt;br /&gt;
|-&lt;br /&gt;
| [[GNOME Files|Files]]&lt;br /&gt;
| Nautilus&lt;br /&gt;
|-&lt;br /&gt;
| [[GNOME Web|Web]]&lt;br /&gt;
| Epiphany&lt;br /&gt;
|-&lt;br /&gt;
| Videos&lt;br /&gt;
| Totem&lt;br /&gt;
|-&lt;br /&gt;
| Main Menu&lt;br /&gt;
| Alacarte&lt;br /&gt;
|-&lt;br /&gt;
| [[Evince|Document Viewer]]&lt;br /&gt;
| Evince&lt;br /&gt;
|-&lt;br /&gt;
| Disk Usage Analyser&lt;br /&gt;
| Baobab&lt;br /&gt;
|-&lt;br /&gt;
| Image Viewer&lt;br /&gt;
| EoG (Eye of GNOME)&lt;br /&gt;
|-&lt;br /&gt;
| [[GNOME Keyring|Passwords and Keys]]&lt;br /&gt;
| Seahorse&lt;br /&gt;
|-&lt;br /&gt;
| GNOME Translation Editor&lt;br /&gt;
| Gtranslator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
GNOME 設定 (&#039;&#039;gnome-control-center&#039;&#039;) と GNOME アプリケーションは、設定を保存するために [[wikipedia:Dconf|dconf]] 設定システムを使用します。&lt;br /&gt;
&lt;br /&gt;
{{man|1|gsettings}} コマンドラインツールを使えば dconf データベースに直接アクセスできます。また、ユーザインターフェイスに公開されていない設定項目を設定することもできます。コマンドラインツール {{man|1|dconf}} は、検証プロセスをスキップしてデータベースを直接変更することができます。gsettings と dconf の設定キーは同じですが、形式が若干異なっています: gsettings での {{ic|gsettings set mygroup.mysubgroup mysetting myvalue}} は、dconf では {{ic|dconf write /mygroup/mysubgroup/mysetting myvalue}} となります。&lt;br /&gt;
&lt;br /&gt;
GNOME 3.24 より前は、設定は GNOME 設定デーモン ({{ic|/usr/lib/gnome-settings-daemon/gnome-settings-daemon}}) によって適用されていました。これは、GNOME セッションの外から実行することができました。&lt;br /&gt;
&lt;br /&gt;
しかし、GNOME 2.24 から、GNOME 設定デーモンは複数の設定プラグイン {{ic|/usr/lib/gnome-settings-daemon/gsd-*}} に置き換えられました (プラグインは後に {{ic|/usr/lib/gsd-*}} に移動されました)。現在、これらのプラグインは {{ic|/etc/xdg/autostart/}} にあるデスクトップファイル ({{ic|org.gnome.SettingsDaemon.*.desktop}} でマッチします) で制御されます。これらのプラグインを GNOME セッションの外から実行するには、プラグインの[[デスクトップエントリ]]を {{ic|~/.config/autostart}} にコピー/編集する必要があります。&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|colord}} デーモンはディスプレイの EDID を読み取って適切なカラープロファイルを展開します。ほとんどのカラープロファイルは正確で、セットアップは必要ありません。しかし、カラープロファイルが正確でない場合や、ディスプレイが古い場合は、新しいカラープロファイルを {{ic|~/.local/share/icc/}} に置いて、それを使用することができます。&lt;br /&gt;
&lt;br /&gt;
==== 夜間モード ====&lt;br /&gt;
&lt;br /&gt;
GNOMEには、[[Redshift]] のようなブルーライトフィルタが組み込まれています。ディスプレイ設定メニューから、夜間モードを有効化したり、有効化する時間をカスタマイズしたりできます。さらに、以下の {{Pkg|dconf}} 設定で色温度を調整することができます (例として 5000 に設定しています):&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.settings-daemon.plugins.color night-light-temperature 5000&lt;br /&gt;
&lt;br /&gt;
{{Tip|Wayland セッションで日中の色温度を変更するには、[https://extensions.gnome.org/extension/1276/night-light-slider/ Night Light Slider 拡張]をインストールしてください。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|現在、NVIDIA カードを使用している場合、夜間モードは Wayland セッションで動作しません。}}&lt;br /&gt;
&lt;br /&gt;
==== 日付と時刻 ====&lt;br /&gt;
&lt;br /&gt;
システムに [[Network Time Protocol daemon]] が設定されている場合、GNOME でも適用されます。必要であれば、メニューから同期を手動に設定することも可能です。&lt;br /&gt;
&lt;br /&gt;
ロケーションサービスが有効化されている場合 (設定の &#039;&#039;プライバシー&#039;&#039; セクションを見てください)、GNOME はタイムゾーンの自動選択をサポートします (システム設定の &#039;&#039;日付と時刻&#039;&#039; セクションで有効化できます)。&lt;br /&gt;
&lt;br /&gt;
上部のバーに日付を表示するには、次を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.desktop.interface clock-show-date true&lt;br /&gt;
&lt;br /&gt;
さらに、上部のバーのカレンダーに週番号を表示するには、次を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.desktop.calendar show-weekdate true&lt;br /&gt;
&lt;br /&gt;
==== デフォルトアプリケーション ====&lt;br /&gt;
&lt;br /&gt;
GNOME を初めてインストールしたとき、特定のプロトコルについて間違ったアプリケーションが開かれてしまうことがあります。例えば、動画を開いた時に [[VLC]] ではなく &#039;&#039;totem&#039;&#039; が起動してしまう、など。プロトコルによってはアプリケーションの関連付けをシステム設定の &#039;&#039;Default Apps&#039;&#039; から設定することができます。&lt;br /&gt;
&lt;br /&gt;
他のプロトコルの設定については [[デフォルトアプリケーション]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== マウスとタッチパッド ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドの大抵の設定はシステム設定の &#039;&#039;マウスとタッチパッド&#039;&#039; から行うことができます。&lt;br /&gt;
&lt;br /&gt;
使用しているデバイスによっては、他の設定が使える場合もありますが、デフォルトの GUI では設定ができません。例えば、タッチパッドに以下のような {{ic|click-method}} の設定がある場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ gsettings range org.gnome.desktop.peripherals.touchpad click-method|&lt;br /&gt;
enum&lt;br /&gt;
&#039;default&#039;&lt;br /&gt;
&#039;none&#039;&lt;br /&gt;
&#039;areas&#039;&lt;br /&gt;
&#039;fingers&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
手動で設定するには:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad click-method &#039;fingers&#039;&lt;br /&gt;
&lt;br /&gt;
または、{{Pkg|gnome-tweaks}} で設定することもできます。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=GNOME は [[synaptics]] ドライバーをサポートしていません。代わりに [[libinput]] を使う必要があります。[https://bugzilla.gnome.org/show_bug.cgi?id=764257#c12 こちらのバグレポート]を参照。}}&lt;br /&gt;
&lt;br /&gt;
===== マウスによるウィンドウサイズの変更 =====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|Super}} を押した状態でマウスの左ボタンでウィンドウをドラッグすることで、ウィンドウを移動させることができます。&lt;br /&gt;
&lt;br /&gt;
さらに、{{ic|Super}} を押した状態でマウスの右ボタンでウィンドウをドラッグすることで、ウィンドウをリサイズするように設定することもできます:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.desktop.wm.preferences resize-with-right-button true&lt;br /&gt;
&lt;br /&gt;
{{ic|Super}} 以外を使いたい場合は、{{ic|Alt}} や {{ic|Ctrl}} などの他の修飾キーに変更することもできます:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.desktop.wm.preferences mouse-button-modified &amp;quot;&#039;&amp;lt;Alt&amp;gt;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== ネットワーク ====&lt;br /&gt;
&lt;br /&gt;
[[NetworkManager]] は GNOME プロジェクトのネイティブなツールであり、GNOME Shell からネットワークの設定を制御することができます。{{Pkg|networkmanager}} パッケージを[[インストール]]し、{{ic|NetworkManager.service}} systemd ユニットを[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
他の[[ネットワークマネージャ]]を使うこともできますが、NetworkManager は GNOME Shell のネットワーク設定やステータスインジケータアプレットの {{Pkg|network-manager-applet}} (GNOME の依存パッケージではありません) と完全に統合されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{Pkg|networkmanager}} の &#039;&#039;nmtui&#039;&#039; でセットアップされた隠されたワイヤレスネットワークは、自動的に接続されません。そのようなネットワークで自動接続の機能を使うには GNOME コントロールセンターを使って新しいプロファイルを作成する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
==== オンラインアカウント ====&lt;br /&gt;
&lt;br /&gt;
[[ownCloud]] などの一部のオンラインアカウントにおいては、[[GNOME Files]] や GNOME Documents などの GNOME アプリケーションで完全な機能を使用するために {{Pkg|gvfs-goa}} がインストールされている必要があります [https://wiki.gnome.org/ThreePointSeven/Features/Owncloud]。&lt;br /&gt;
&lt;br /&gt;
詳細は [https://help.gnome.org/users/gnome-help/stable/accounts.html Online accounts] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== 検索 ====&lt;br /&gt;
&lt;br /&gt;
GNOME シェルには検索機能が存在し、{{ic|Super}} キーを押してから入力することですぐにアクセスできます。{{Pkg|tracker3}} パッケージは {{Grp|gnome}} グループの {{Pkg|tracker3-miners}} の依存パッケージとしてデフォルトでインストールされます。このパッケージは、アプリケーションのインデックス生成とメタデータのデータベースを提供します。&#039;&#039;検索とインデックス生成&#039;&#039; メニューアイテムから設定することができ、ステータスは {{ic|tracker3 status}} でクエリできます。ユーザーがログインしたときに &#039;&#039;gnome-session&#039;&#039; によって自動的に起動されます。{{ic|tracker3 daemon -s}} を実行することで手動でインデックス作成を開始することもできます。検索の設定は &#039;&#039;設定&#039;&#039; からでも行うことができます。&lt;br /&gt;
&lt;br /&gt;
Tracker のデータベースは {{ic|tracker3 sparql}} コマンドを使うことでクエリできます。詳しくは {{man|1|tracker3-sparql}} を参照。&lt;br /&gt;
&lt;br /&gt;
==== アクセシビリティ ====&lt;br /&gt;
&lt;br /&gt;
GNOME には、&#039;&#039;設定 &amp;gt; アクセシビリティ&#039;&#039; から利用できるアクセシビリティ設定があります。トップバーアイコンを有効にした後、主な設定を直接切り替えることができますが、&#039;&#039;eeing&#039;&#039;, &#039;&#039;Hearing&#039;&#039;, &#039;&#039;Typing&#039;&#039;, &#039;&#039;Pointing and clicking&#039;&#039;, &#039;&#039;Zoom&#039;&#039; のサブメニューを介してさらなる設定が利用できることに注意してください。&lt;br /&gt;
&lt;br /&gt;
==== デバイスのセキュリティ設定 ====&lt;br /&gt;
&lt;br /&gt;
Gnome 43 には、設定に新しい [https://release.gnome.org/43/ Device Security] パネルが付属しています。これを機能させるには {{Pkg|fwupd}} が必要です。[https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2122] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 高度な設定 ===&lt;br /&gt;
&lt;br /&gt;
先に述べたように、[[GTK]] テーマや[[ウィンドウマネージャ]]のテーマなどの多くの設定オプションが GNOME 設定 (&#039;&#039;gnome-control-center&#039;&#039;) に公開されません。それらの設定を変更したい場合は、多くの設定を公開する便利なグラフィカルツールである GNOME Tweaks ({{Pkg|gnome-tweaks}}) を使うことができます。&lt;br /&gt;
&lt;br /&gt;
また、{{man|1|dconf-editor}} (グラフィカルな DConf 設定ツール) や [https://developer.gnome.org/gio/stable/GSettings.html gsettings] コマンドラインツールを使って (DConf データベースに保存されている) GNOME の設定を変更することもできます。GNOME Tweaks には隠された設定は存在しません。しかし、以下のセクションで説明されている設定全てが GNOME Tweaks にあるわけではないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
==== 拡張機能 ====&lt;br /&gt;
&lt;br /&gt;
拡張機能のカタログは https://extensions.gnome.org で見られます。拡張機能は[https://archlinux.org/packages/?q=gnome-shell-extension 公式リポジトリ] (数個だけです) や [https://aur.archlinux.org/packages?K=gnome-shell-extension AUR]、[https://extensions.gnome.org ブラウザ]からインストールできます。&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|以下のノートでは、手動によるユーザファイル管理の方が &amp;quot;簡単&amp;quot; だと言って推奨されていますが、理由が説明されていません。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ブラウザーから拡張機能をインストールすると、現在のユーザーのみが使用できるようになり、それぞれを手動で更新する必要があります。これが最も簡単な方法です。&lt;br /&gt;
** さらに、ブラウザから拡張機能をインストールする場合は、{{Pkg|gnome-browser-connector}} をインストールする必要があります。公式リポジトリや AUR から拡張機能をインストールする必要はありません。&lt;br /&gt;
* AUR から (または、ある場合は公式リポジトリから) 拡張機能をインストールすると、システム全体で使用できるようになります ([[AUR ヘルパー]]を使用している場合は、更新プロセスが自動化されます)。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
インストールされた拡張機能は、&#039;&#039;gnome-extensions-app&#039;&#039; で GUI から、{{man|1|gnome-extensions}} でコマンドラインから、またはブラウザから、設定/有効化/無効化することができます。ブラウザからでは、画面右上のスイッチを &#039;&#039;&#039;ON&#039;&#039;&#039; に設定し、ポップアップウィンドウで &#039;&#039;&#039;Install&#039;&#039;&#039; をクリックすることで、拡張機能をインストールしてブラウザで有効にすることができます。インストールされた拡張機能は、https://extensions.gnome.org/local/ に表示され、利用可能な更新を確認できます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|gnome-shell-extensions}} パッケージは、GNOME プロジェクトの一部としてメンテナンスされている非常に便利な拡張機能のセットを提供します。&lt;br /&gt;
&lt;br /&gt;
{{AUR|extension-manager}} は、拡張機能のインストールと削除、およびシステム全体とユーザーの両方の拡張機能の有効化と無効化にも使用できるグラフィカルツールです。使用する前に、よく知られている問題のリストを見てください: https://github.com/mjakeman/extension-manager/labels/bug&lt;br /&gt;
&lt;br /&gt;
拡張機能の使用を有効にするには (デフォルトでは無効):&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.shell disable-user-extensions false&lt;br /&gt;
&lt;br /&gt;
現在有効になっている拡張機能を一覧表示するには:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings get org.gnome.shell enabled-extensions&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは、すでに削除された拡張機能を表示する場合があります。有効 &#039;&#039;かつ&#039;&#039; インストールされている拡張機能のみを一覧表示するには、代わりに &#039;&#039;gnome-extensions&#039;&#039; を使用します:&lt;br /&gt;
&lt;br /&gt;
 $ gnome-extensions list --enabled&lt;br /&gt;
&lt;br /&gt;
GNOME シェル拡張機能の詳細については、https://extensions.gnome.org/about/ を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 外観 ====&lt;br /&gt;
&lt;br /&gt;
===== テーマ =====&lt;br /&gt;
&lt;br /&gt;
{{Note|[https://release.gnome.org/42/ Gnome 42] の時点で、多くのデフォルトの GNOME アプリケーションが libadwaita で GTK 4 を使用しています。現在、それらのアプリケーションは gsettings や {{pkg|gnome-tweaks}} によるテーマの変更をサポートしておらず、唯一のグラフィカルな設定方法は &#039;&#039;設定 &amp;gt; 外観&#039;&#039; です。Adwaita や Adwaita-dark 以外の GTK テーマを設定する方法については [[GTK#テーマ]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
GNOME はデフォルトで Adwaita を使用します。Adwaita-dark を GTK 2 アプリケーションのみに適用するには、以下のシンボリックリンクを使用します:&lt;br /&gt;
&lt;br /&gt;
 $ ln -s /usr/share/themes/Adwaita-dark ~/.themes/Adwaita&lt;br /&gt;
&lt;br /&gt;
{{Note|Adwaita-dark テーマは {{Pkg|gnome-themes-extra}} によって提供されており、GNOME の最小インストールではインストールされない可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
新しいテーマを選択するには、(テーマを適切なディレクトリに移動して) GNOME Tweaks を使うか、以下の GSettings コマンドを使用してください。&lt;br /&gt;
&lt;br /&gt;
GTK テーマの場合:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.desktop.interface gtk-theme &#039;&#039;theme-name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
アイコンテーマの場合:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.desktop.interface icon-theme &#039;&#039;theme-name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|ウィンドウマネージャのテーマは GTK のテーマに従います。{{ic|org.gnome.desktop.wm.preferences theme}} を使うことは非推奨で無視されます。}}&lt;br /&gt;
&lt;br /&gt;
[[GTK#テーマ]] と [[アイコン#アイコンテーマ]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
===== タイトルバーのボタンの順番 =====&lt;br /&gt;
&lt;br /&gt;
GNOME のウィンドウマネージャ (Mutter、Metacity) でボタンの順番を設定するには:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.desktop.wm.preferences button-layout &#039;:minimize,maximize,close&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|コロンは、タイトルバーのどちらの側にウィンドウのボタンを表示するかを表しています。}}&lt;br /&gt;
&lt;br /&gt;
===== GNOME シェルのテーマ =====&lt;br /&gt;
&lt;br /&gt;
GNOME Shell 自体のテーマも設定可能です。Shell のテーマを使うには、まず {{Pkg|gnome-shell-extensions}} がインストールされていることを確認してください。そして、&#039;&#039;GNOME 拡張機能&#039;&#039; アプリケーションか [https://extensions.gnome.org GNOME Shell Extensions] ウェブページで &#039;&#039;User Themes&#039;&#039; 拡張を有効化してください。Shell のテーマは、&#039;&#039;GNOME 拡張機能&#039;&#039; を使ってロードしたり選択したりできます。&lt;br /&gt;
&lt;br /&gt;
多くの GNOME Shell テーマが [https://aur.archlinux.org/packages?K=gtk+theme AUR] で利用できます。多くのテーマは同じ形式の名前を使用していないため、AUR でテーマを検索してみてください。Shell のテーマは [https://gnome-look.org/ gnome-look.org] からダウンロードすることも可能です。&lt;br /&gt;
&lt;br /&gt;
===== AppIndicators/Top バーのアイコン =====&lt;br /&gt;
&lt;br /&gt;
AppIndicators (バックグラウンドで動作する特定のアプリケーションを制御/監視する際に便利です) を有効化するには、{{Pkg|gnome-shell-extension-appindicator}} か {{AUR|gnome-shell-extension-appindicator-git}} をインストールし、[[#ナビゲーション|GNOME Shell を再起動]]し、&#039;&#039;GNOME 拡張機能&#039;&#039; アプリケーションで AppIndicator を有効化するか以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ gnome-extensions enable $(gnome-extensions list {{!}} grep -m 1 appindicatorsupport)&lt;br /&gt;
&lt;br /&gt;
===== アニメーションの速度 =====&lt;br /&gt;
&lt;br /&gt;
GNOME シェルのアニメーションは、速度を上げたり、遅くしたり、無効にしたりできます。[[GNOME/ヒントとテクニック#アニメーション速度を変更する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
===== Shell のぼかし =====&lt;br /&gt;
&lt;br /&gt;
Blur my Shell は、概要画面だけでなく、シェル自身や他のアプリにぼかし効果を追加する拡張機能です。{{AUR|gnome-shell-extension-blur-my-shell}} か {{AUR|gnome-shell-extension-blur-my-shell-git}} (開発アップデート) をインストールしてください。この拡張機能は高度にカスタマイズ可能で、ぼかしをかけるアプリケーションを選択することができます。&lt;br /&gt;
&lt;br /&gt;
===== Alt-Tab でカバーフロー =====&lt;br /&gt;
&lt;br /&gt;
GNOME のデフォルトの Alt-Tab は非常にシンプルで、選択されたウィンドウの概要が表示されることはありません。Coverflow Alt-Tab は Alt-Tab の動作を拡張し、アプリケーション間の切り替えをより簡単にする機能を追加し、さらに見栄えも良くする拡張機能です。{{AUR|gnome-shell-extension-coverflow-alt-tab-git}} をインストールすれば、この拡張機能の設定を好みに合わせて変更することができます。&lt;br /&gt;
&lt;br /&gt;
==== 自動起動 ====&lt;br /&gt;
&lt;br /&gt;
GNOME は [[XDG Autostart]] を実装しています。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|gnome-tweaks}} で自動起動のエントリを管理することができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=Tweaks の &#039;&#039;スタートアップアプリケーション&#039;&#039; セクションにあるプラス記号ボタンが反応しない場合は、次のコマンド {{ic|gnome-tweaks}} を使用してターミナルから Tweaks を起動してみてください。以下の [https://bbs.archlinux.org/viewtopic.php?pid=1413631#p1413631 フォーラムスレッド]を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|非推奨となった &#039;&#039;gnome-session-properties&#039;&#039; ダイアログは、{{AUR|gnome-session-properties}} パッケージを[[インストール]]することで追加できます。これにより、&#039;&#039;gnome-tweaks&#039;&#039; では許可されていない、システム全体で自動起動するアプリケーションを無効にする機能も提供されます。}}&lt;br /&gt;
&lt;br /&gt;
==== デスクトップ ====&lt;br /&gt;
&lt;br /&gt;
===== Dash to Dock =====&lt;br /&gt;
&lt;br /&gt;
ダッシュをオーバービューの外に出して、アプリケーションを簡単に起動・切り替えできるドックにするには、{{AUR|gnome-shell-extension-dash-to-dock}} を[[インストール]]します。&lt;br /&gt;
&lt;br /&gt;
===== オーバービューモードでの起動 =====&lt;br /&gt;
&lt;br /&gt;
GNOME 40 からは、(以前のバージョンのように) 空のデスクトップではなく、直接オーバービューモードで起動するようになりました。{{AUR|gnome-shell-extension-no-overview}} を[[インストール]]することで、以前の挙動を模倣させることができます。&lt;br /&gt;
&lt;br /&gt;
または、{{AUR|gnome-shell-extension-dash-to-dock}} を使用している場合、gsettings を使ってこの挙動を無効化できます:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.shell.extensions.dash-to-dock disable-overview-on-startup true&lt;br /&gt;
&lt;br /&gt;
[https://discourse.gnome.org/t/gnome-40-login-is-to-the-activities-overview-mode-how-do-you-disable-this/5783] での議論を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== クリップボードの履歴 ====&lt;br /&gt;
&lt;br /&gt;
他のデスクトップ環境とは異なり、GNOME にはクリップボードの履歴を管理するためのビルトインツールがありません。しかし、拡張機能の助けを借りて、これを行うことができます。{{AUR|gnome-shell-extension-clipboard-indicator}} をインストールして下さい。&lt;br /&gt;
&lt;br /&gt;
==== 天気 ====&lt;br /&gt;
&lt;br /&gt;
選択した場所に基づいて現在の天気情報をトップパネルに表示するには、{{AUR|gnome-shell-extension-openweather}} をインストールしてください。天気情報はリアルタイムで更新され、天候、風速、気圧などの有用な情報を表示します。&lt;br /&gt;
&lt;br /&gt;
==== サウンド入出力デバイスセレクター ====&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|おそらく、GNOME 43 の時点ではもはや必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、サウンドの入出力デバイスを変更したり、マイクの音量を変更したい場合、GNOME Control Center を開いて、そこからこれらの設定を行う必要があります。デバイスセレクターとマイクのボリュームスライダーを統合するには、{{AUR|gnome-shell-extension-sound-output-device-chooser}} か {{AUR|gnome-shell-extension-sound-output-device-chooser-git}} をインストールしてください。インストール後にさらに設定を行うことができます。&lt;br /&gt;
&lt;br /&gt;
==== フォント ====&lt;br /&gt;
&lt;br /&gt;
{{Tip|&#039;&#039;倍率&#039;&#039; を 1.00 より大きい値に設定した場合、アクセシビリティメニューが自動的に有効になります。}}&lt;br /&gt;
&lt;br /&gt;
ウィンドウタイトル、インターフェイス (アプリケーション)、ドキュメントやモノスペースのフォントを設定することができます。gnome-tweaks の &#039;&#039;フォント&#039;&#039; タブにあるオプションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
サブピクセルレンダリングについては大抵のモニターに適合する RGBA が良いでしょう。フォントの表示がおかしい場合は &#039;&#039;弱&#039;&#039; や &#039;&#039;なし&#039;&#039; にまでヒンティングを減らして下さい。&lt;br /&gt;
&lt;br /&gt;
==== インプットメソッド ====&lt;br /&gt;
&lt;br /&gt;
Gnome は [[IBus]] によって[[インプットメソッド]]の統合的なサポートをしており、インストールする必要があるのは {{Pkg|ibus}} と必要なインプットメソッドエンジン (例: Intelligent Pinyin の場合 {{Pkg|ibus-libpinyin}}) だけです。インストール後、GNOME 設定 (&#039;&#039;gnome-control-center&#039;&#039;) の &#039;&#039;キーボード &amp;gt; 入力ソース&#039;&#039; からインプットメソッドエンジンをキーボードレイアウトとして追加できます。&lt;br /&gt;
&lt;br /&gt;
==== キーボード配列の癖 ====&lt;br /&gt;
&lt;br /&gt;
Neo2 のような複数のレイヤー/モディファイアを使う代替キーボードレイアウトを使っている場合、GNOME 設定 (&#039;&#039;gnome-control-center&#039;&#039;) の &#039;&#039;キーボード &amp;gt; 特殊文字の入力&#039;&#039; で &#039;&#039;代替文字キー&#039;&#039; を &#039;&#039;右 Alt&#039;&#039; から変更して、キーボードレイアウトのネイティブモディファイアとして使えるようにしなければならない場合があります。例えば、&#039;&#039;左 Alt&#039;&#039; に設定すると、&#039;&#039;Alt+Tab&#039;&#039; ができなくなるので、変更する場合は注意が必要です。&lt;br /&gt;
この変更をしないと、左の &#039;&#039;Mod3&#039;&#039; キーは動作するかもしれませんが、右のキー (&#039;&#039;AltGr&#039;&#039;) は動作しないかもしれません。(2021-05-18現在)&lt;br /&gt;
&lt;br /&gt;
==== 電源 ====&lt;br /&gt;
&lt;br /&gt;
ノート PC を使用している場合、アイドル時や電源ボタンが押された時、蓋が閉じられたときの挙動を制御する以下の設定を変更したい場合があります:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout &#039;&#039;3600&#039;&#039;&lt;br /&gt;
 $ gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type &#039;&#039;hibernate&#039;&#039;&lt;br /&gt;
 $ gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout &#039;&#039;1800&#039;&#039;&lt;br /&gt;
 $ gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type &#039;&#039;hibernate&#039;&#039;&lt;br /&gt;
 $ gsettings set org.gnome.settings-daemon.plugins.power power-button-action &#039;&#039;suspend&#039;&#039;&lt;br /&gt;
 $ gsettings set org.gnome.desktop.lockdown disable-lock-screen &#039;&#039;true&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
フタを閉じた時でもモニターの電源を切らないようにするには:&lt;br /&gt;
&lt;br /&gt;
 $ gsettings set org.gnome.settings-daemon.plugins.xrandr default-monitors-setup do-nothing&lt;br /&gt;
&lt;br /&gt;
GNOME 3.24 では以下の設定が廃止されました:&lt;br /&gt;
&lt;br /&gt;
 org.gnome.settings-daemon.plugins.power button-hibernate&lt;br /&gt;
 org.gnome.settings-daemon.plugins.power button-power&lt;br /&gt;
 org.gnome.settings-daemon.plugins.power button-sleep&lt;br /&gt;
 org.gnome.settings-daemon.plugins.power button-suspend&lt;br /&gt;
 org.gnome.settings-daemon.plugins.power critical-battery-action&lt;br /&gt;
&lt;br /&gt;
===== ノートパソコンの蓋が閉まってもサスペンドさせない =====&lt;br /&gt;
&lt;br /&gt;
GNOME の設定パネルには、ラップトップの蓋が閉じたときに起動する動作をユーザが変更するためのオプションがありません。しかし、{{Pkg|gnome-tweaks}} は {{Pkg|systemd}} によって適用される設定を上書きすることができます。&#039;&#039;全般&#039;&#039; タブで、&#039;&#039;ラップトップの蓋を閉じるとサスペンドする&#039;&#039; をオフにしてください。そうすると、システムは蓋を閉じたときに &#039;&#039;Suspend to RAM (S3)&#039;&#039; をしなくなります。&lt;br /&gt;
&lt;br /&gt;
システム全体で蓋スイッチの動作を変更するには、上記の設定が &#039;&#039;&#039;off でない&#039;&#039;&#039; ことを確認し、{{ic|/etc/systemd/logind.conf}} の systemd 設定を編集してください。蓋を閉じた時のサスペンドをオフにするには、[[電源管理#ACPI イベント]] で説明されているように {{ic|1=HandleLidSwitch=ignore}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
===== バッテリー残量が少なくなった時の動作を変更する =====&lt;br /&gt;
&lt;br /&gt;
設定パネルにはバッテリーが少なくなったときに行うアクションを変更するオプションは存在しません。dconf からも設定は削除されています。現在は upower によって管理されているので、{{ic|/etc/UPower/UPower.conf}} で upower の設定を変更してください。以下の設定を適宜修正してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=/etc/UPower/UPower.conf|output=&lt;br /&gt;
PercentageLow=10&lt;br /&gt;
PercentageCritical=3&lt;br /&gt;
PercentageAction=2&lt;br /&gt;
CriticalPowerAction=HybridSleep&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== 電源モード =====&lt;br /&gt;
&lt;br /&gt;
電源プロファイルをサポートするために、({{Pkg|gnome-control-center}} の) 任意の依存パッケージである [[power-profiles-daemon]] をインストールしてください。&#039;&#039;gnome-shell&#039;&#039; と GNOME Settings は両方とも起動時に {{ic|power-profiles-daemon}} のアクティブ化をリクエストするので、このサービスを明示的に[[起動/有効化]]する必要はありません。&lt;br /&gt;
&lt;br /&gt;
このサービスがアクティブである時、電源プロファイルは GNOME 設定とシステムメニューの &#039;&#039;電源&#039;&#039; セクションで管理できます。&lt;br /&gt;
&lt;br /&gt;
==== スクリーンキャスト ====&lt;br /&gt;
&lt;br /&gt;
組み込みのスクリーンショットツールには、デフォルトではスクリーンキャストオプションがありません。({{Pkg|gnome-shell}} の) 任意の依存パッケージである {{Pkg|gst-plugin-pipewire}} をインストールすることで、画面の録画が可能になります。&lt;br /&gt;
&lt;br /&gt;
=== 別のウィンドウマネージャを使う ===&lt;br /&gt;
&lt;br /&gt;
GNOME Shell は別の[[ウィンドウマネージャ]]の使用をサポートしていませんが、[[GNOME Flashback]] は Metacity と [[Compiz]] のセッションを提供します。さらに、代替のコンポーネントを使用する独自の[[GNOME/ヒントとテクニック#カスタム GNOME セッション|カスタムの GNOME セッション]]を定義することができます。&lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 環境下では、GNOME Shell を別のコンポジターに置き換えると、{{Pkg|gnome-control-center}} (GNOME 設定) の特定セクションが正しく表示されなくなります。&amp;quot;gnome-control-center&amp;quot; は動作しますが、{{Pkg|mutter}} (GNOME Shell) がこれらのセクションの表示に必要な設定を提供できないため、設定が反映されなかったり、設定内容が正確に表示されなかったりします。影響を受けるセクションには、bluetooth、ディスプレイ、マウス/タッチパッド などがあります。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnome.org/ 公式ウェブサイト]&lt;br /&gt;
* [https://blogs.gnome.org/tbernard/2021/06/15/community-power-2/ GNOME への貢献、機能リクエスト、バグ、コード]&lt;br /&gt;
* [[Wikipedia:ja:GNOME|Wikipedia 記事]]&lt;br /&gt;
* [https://extensions.gnome.org/ GNOME-Shell 拡張]&lt;br /&gt;
* [https://wiki.gnome.org/Projects/GnomeShell/CheatSheet GNOME Shell チートシート]&lt;br /&gt;
* カスタマイズ (テーマやアイコンなど):&lt;br /&gt;
** [https://wiki.gnome.org/Personalization Personalize GNOME]&lt;br /&gt;
** [https://www.gnome-look.org/ GNOME Look]&lt;br /&gt;
* GNOME アプリケーション:&lt;br /&gt;
** [https://wiki.gnome.org/Apps GNOME アプリインデックス]&lt;br /&gt;
** [[Wikipedia:ja:GNOME Core Applications]]&lt;br /&gt;
* GNOME ソース/ミラー:&lt;br /&gt;
** [https://gitlab.gnome.org/ GNOME GitLab]&lt;br /&gt;
** [https://github.com/GNOME GNOME Github ミラー]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|GNOME|2023-08-01|783436}}&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%89%E3%83%83%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&amp;diff=40280</id>
		<title>ドットファイル</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%89%E3%83%83%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&amp;diff=40280"/>
		<updated>2025-05-15T02:16:31Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* Git を使ってドットファイルを直接管理する */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:設定ファイル]]&lt;br /&gt;
[[Category:設定管理]]&lt;br /&gt;
[[en:Dotfiles]]&lt;br /&gt;
[[es:Dotfiles]]&lt;br /&gt;
[[pt:Dotfiles]]&lt;br /&gt;
[[zh-hans:Dotfiles]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|XDG Base Directory サポート}}&lt;br /&gt;
{{Related|X resources}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
ユーザー固有のアプリケーション設定は、伝統的に [[Wikipedia:dotfile|ドットファイル]](ファイル名がドットで始まるファイル) に保存されています。変更を追跡し、さまざまなホスト間でドットファイルを同期するために、[[Git]] などの [[バージョン管理システム]] でドットファイルを管理することは一般的な方法です。ドットファイルを管理するには、さまざまな方法があります(例えば、ホームディレクトリでドットファイルを直接追跡する、サブディレクトリに保存する、[[シェル]]スクリプト や[[#他のツール|専用ツール]] でファイルをシンボリックリンク/コピー/生成するなど)。ドットファイルの管理方法とは別に、この記事には、[[#リポジトリ|ドットファイルのリボジトリのリスト]] も含まれています。&lt;br /&gt;
&lt;br /&gt;
== Git を使ってドットファイルを直接管理する ==&lt;br /&gt;
&lt;br /&gt;
ドットファイルを直接 Git で追跡することの利点は、[[Git]] だけで済み、シンボリックリンクを必要としないことです。デメリットは、[[#ホスト固有の設定|ホスト固有の設定]] では一般的に複数の [[Git#Branching|branches]] に変更をマージする必要があるということです。&lt;br /&gt;
&lt;br /&gt;
このアプローチを実現する最も簡単な方法は、[[Git]] リポジトリをホームディレクトリで直接初期化し、デフォルトで {{man|5|gitignore}} パターンの {{ic|*}} を使用してすべてのファイルを無視することです。ただし、この方法には 2 つの欠点があります。ホームディレクトリに他の Git リポジトリがある場合は混乱する可能性があります (たとえば、リポジトリの初期化を忘れた場合、突然 dotfile リポジトリを操作することになります) また、ディレクトリ内のどのファイルが簡単に確認できなくなります。現在のディレクトリは追跡されません (無視されるため)&lt;br /&gt;
&lt;br /&gt;
これらの欠点を避けるための代替方法として、&amp;quot;bare repository and alias method&amp;quot; があります。この方法は、[https://news.ycombinator.com/item?id=11071754 Ask Hacker News: What do you use to manage your dotfiles?] で広く知られるようになったもので、たった3つのコマンドでセットアップが可能です:&lt;br /&gt;
&lt;br /&gt;
 $ git init --bare ~/.dotfiles&lt;br /&gt;
 $ alias config=&#039;/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME&#039;&lt;br /&gt;
 $ config config status.showUntrackedFiles no&lt;br /&gt;
&lt;br /&gt;
{{note|通常、ドットファイルのパーミッションはすべてデフォルトの設定のままで問題ありませんが、特定のファイルに特定のパーミッションが必要な場合は、別の方法を検討する必要があります。Git はファイルのパーミッションを保存しないためです。}}&lt;br /&gt;
&lt;br /&gt;
このドットファイルを使って新しいシステムに複製できます:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --bare &amp;lt;git-repo-url&amp;gt; $HOME/.dotfiles&lt;br /&gt;
 $ alias config=&#039;/usr/bin/git --git-dir=&amp;quot;$HOME/.dotfiles/&amp;quot; --work-tree=&amp;quot;$HOME&amp;quot;&#039;&lt;br /&gt;
 $ config checkout&lt;br /&gt;
 $ config config --local status.showUntrackedFiles no&lt;br /&gt;
&lt;br /&gt;
* リモートリポジトリを使わずにこれを行うには、[[git#バンドル|git bundles]] を使用できます。ソースコンピュータで {{ic|dotfiles.bundle}} という名前の git バンドルを作成するには、次のコマンドを実行します:&lt;br /&gt;
:{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ dotfiles bundle create --progress dotfiles.bundle --all&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
:バンドルは {{ic|&amp;lt;git-repo-url&amp;gt;}} と同様に使用できます:&lt;br /&gt;
:{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ git clone --bare dotfiles.bundle $HOME/.dotfiles&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* 上書きされる可能性のあるいくつかのストック設定がすでにある場合は、次のようなエラーが発生します:&lt;br /&gt;
:{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ config checkout&lt;br /&gt;
error: The following untracked working tree files would be overwritten by checkout:&lt;br /&gt;
    .bashrc&lt;br /&gt;
    .gitignore&lt;br /&gt;
Please move or remove them before you can switch branches.&lt;br /&gt;
Aborting&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
:既存のファイルを書き換える {{ic|$ config checkout -f}} を使用することもできます。または、より安全な方法として、次のスクリプトを使用してすべてのファイルのバックアップを取得し、{{ic|checkout}} を使用することもできます:&lt;br /&gt;
:{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mkdir -p .config-backup &amp;amp;&amp;amp; \&lt;br /&gt;
config checkout 2&amp;gt;&amp;amp;1 | egrep &amp;quot;\s+\.&amp;quot; | awk {&#039;print $1&#039;} | \&lt;br /&gt;
xargs -I{} mv {} .config-backup/{}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
その後、作成した [[エイリアス]] でドットファイルを管理することができます。もし [[Bash]] を使っていてこのエイリアスを bash 補完したい場合は、{{AUR|bash-complete-alias}} をインストールして、エイリアスと次の行を {{ic|~/.bashrc}} に追加してください。&lt;br /&gt;
&lt;br /&gt;
 $ complete -F _complete_alias config&lt;br /&gt;
&lt;br /&gt;
bash で補完させるもう一つの方法は、{{ic|~/.bashrc}} に以下を追加することです。([https://askubuntu.com/a/642778] から引用):&lt;br /&gt;
&lt;br /&gt;
 source /usr/share/bash-completion/completions/git&lt;br /&gt;
 __git_complete config __git_main&lt;br /&gt;
&lt;br /&gt;
{{Tip|機密情報を誤ってコミットしないようにするには、[https://wiki.archlinux.org/title/Git#Filtering_confidential_information Git#Filtering confidential information] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
== ホスト固有の設定 ==&lt;br /&gt;
&lt;br /&gt;
様々なマシンで dotfiles を同期させる際によくある問題が、ホスト固有の設定です。&lt;br /&gt;
&lt;br /&gt;
[[Git]] では、すべての共有設定を master ブランチで管理し、個々のマシンにはマシン固有のブランチをチェックアウトすることでこれを解決できます。ホスト固有の設定はマシン固有のブランチにコミットすることができます。共有設定が master ブランチで変更された場合、マシンごとのブランチは更新された master の上にリベースされる必要があります。&lt;br /&gt;
&lt;br /&gt;
[[コマンドラインシェル#設定ファイル|シェル設定ファイル]] のような設定スクリプトでは、条件付きロジックを使用することができます。例えば、[[Bash]] スクリプト (すなわち {{ic|.bashrc}}) は、マシン名 (またはタイプ、カスタム変数など) に応じて異なる設定を適用することができます。&lt;br /&gt;
&lt;br /&gt;
 if &amp;lt;nowiki&amp;gt;[[ &amp;quot;$(hostname)&amp;quot; == &amp;quot;archlaptop&amp;quot; ]];&amp;lt;/nowiki&amp;gt; then&lt;br /&gt;
     # laptop specific commands here&lt;br /&gt;
 else&lt;br /&gt;
     # desktop or server machine commands&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
同様のことは、[[.Xresources]] でも実現できます。[https://jnrowe.github.io/articles/tips/Sharing_Xresources_between_systems.html]&lt;br /&gt;
&lt;br /&gt;
Git ブランチのリベースが面倒だと感じる場合は、&#039;&#039;ファイルのグループ化&#039;&#039; をサポートする [[#Tools|ツール]] や、さらに柔軟性を求めるなら &#039;&#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;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 名前 !! パッケージ !! 言語 !! ファイルのグループ化 !! 処理&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/anishathalye/dotbot dotbot]&lt;br /&gt;
| {{Pkg|chezmoi}} || Python || 設定ファイル || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/twpayne/chezmoi chezmoi]&lt;br /&gt;
| {{AUR|dotbot}} || Go || ディレクトリベース || Go テンプレート&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/kesslern/dot-templater dot-templater]&lt;br /&gt;
| {{AUR|dot-templater-git}} || Rust || ディレクトリベース || カスタムシンタックス&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/oknozor/toml-bombadil toml-bombadil]&lt;br /&gt;
| {{Pkg|toml-bombadil}} || Rust || 設定ファイル || tera&lt;br /&gt;
|-&lt;br /&gt;
! [https://deadc0de.re/dotdrop/ dotdrop]&lt;br /&gt;
| {{AUR|dotdrop}} || Python || 設定ファイル || Jinja2&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/jbernard/dotfiles dotfiles]&lt;br /&gt;
| {{AUR|dotfiles}} || Python || {{Grey|[https://github.com/jbernard/dotfiles/pull/24 No]}} || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/EvanPurkhiser/dots Dots]&lt;br /&gt;
| {{AUR|dots-manager}} || Python || ディレクトリベース || カスタム追加ポイント&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/SuperCuber/dotter dotter]&lt;br /&gt;
| {{AUR|dotter-rs}} || Rust || 設定ファイル || Handlebars&lt;br /&gt;
|-&lt;br /&gt;
! [https://dt.cli.rs dt-cli]&lt;br /&gt;
| {{AUR|dt-cli}} || Rust || 設定ファイル || Handlebars&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.gnu.org/software/stow/ GNU Stow]&lt;br /&gt;
| {{Pkg|stow}} || Perl || ディレクトリベース [http://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html] || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/lra/mackup Mackup]&lt;br /&gt;
| {{AUR|mackup}} || Python || アプリケーションごとに自動 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/darkfeline/mir.qualia mir.qualia]&lt;br /&gt;
| {{AUR|mir.qualia}} || Python || {{Grey|No}} || カスタムブロック&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/thoughtbot/rcm rcm]&lt;br /&gt;
| {{AUR|rcm}} || Perl || ディレクトリベース (ホストまたはタグによる) || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/sebastiancarlos/yas-bdsm yas-bdsm]&lt;br /&gt;
| {{-}} || Shell || ディレクトリベース || {{Grey|No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Git を wrapping するツール ===&lt;br /&gt;
&lt;br /&gt;
[[Git]] に不安がある場合は、バージョン管理システムを (多かれ少なかれ) 抽象化するこれらのツールのいずれかを使用することをお勧めします。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! 名前 !! パッケージ !! 言語 !! ファイルのグループ化 !! 処理&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/kazhala/dotbare dotbare]&lt;br /&gt;
| {{AUR|dotbare}} || Shell ({{Pkg|fzf}}) || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/kobus-v-schoor/dotgit dotgit]&lt;br /&gt;
| {{AUR|dotgit}} || Python || ファイル名ベース || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/andsens/homeshick homeshick]&lt;br /&gt;
| {{AUR|homeshick-git}} || Bash || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/technicalpickles/homesick homesick]&lt;br /&gt;
| {{-}} || Ruby || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/pearl-core/pearl Pearl]&lt;br /&gt;
| {{AUR|pearl-git}} || Python || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/RichiH/vcsh vcsh]&lt;br /&gt;
| {{Pkg|vcsh}} || Shell || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://yadm.io yadm]&amp;lt;sup&amp;gt;(1)&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{Pkg|yadm}} || Bash || ファイル名ベース&amp;lt;br&amp;gt;(by class/OS/distro/hostname/user)[https://yadm.io/docs/alternates] ||組み込みのテンプレート /Jinja2/ESH [https://yadm.io/docs/templates]&amp;lt;br&amp;gt;(オプション)&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/justone/dotfiles dfm]&lt;br /&gt;
| {{AUR|dfm}} || Perl || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# [[GPG]] または OpenSS による機密ファイルの暗号化をサポートします。 [https://yadm.io/docs/encryption]&lt;br /&gt;
&lt;br /&gt;
== ユーザーリポジトリ ==&lt;br /&gt;
&lt;br /&gt;
{{Note|このテーブルは、ドットファイルの参照/例として使用して下さい。ドットファイルをテーブルに追加する場合は、それらがクリーンでコメントされていて、最新の状態に保たれているかを確認してください。}}&lt;br /&gt;
{{Warning|これらのドットファイルは Arch Linux スタッフによって検証されていないため、自己責任で使用してください。}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! 作者 || シェル || WM / DE || エディタ || ターミナル || マルチプレクサ || オーディオ || モニター ||  メール || IRC || ファイルマネージャ || RSS リーダー&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/adamperkowski/dwm adamperkowski]&lt;br /&gt;
| [[Zsh]] || [[dwm]] || [[Neovim]] || [[Kitty]] || [[tmux]] || [[Mpv]] || custom || || [[WeeChat]] || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/alfunx/.dotfiles alfunx]&lt;br /&gt;
| [[Zsh]] || [[Awesome]] || [[Vim]] || [[Kitty]] || [[tmux]] || [[Ncmpcpp]]/[[Mpd]] || [[アプリケーション一覧/ユーティリティ#タスクマネージャ|Htop]]/lain || [[Thunderbird]] || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://gitlab.com/Ambrevar/dotfiles Ambrevar]&lt;br /&gt;
| Eshell || [[EXWM]] || [[Emacs]] || Emacs (Eshell) || Emacs TRAMP + dtach || EMMS || [[Conky]]/[[Dzen]] || mu4e || Circe || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/ask1234560/dotfiles_bspwm ananthu]&lt;br /&gt;
| [[Zsh]] || [[Bspwm]] || [[Neovim]] || [[Alacritty]] ||  || [[Mpv]] || [[アプリケーション一覧/ユーティリティ#タスクマネージャ|Htop]], [[Polybar]] || [[Neomutt]] || [[WeeChat]] || [[Ranger]] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/awalGarg/dotfiles awal]&lt;br /&gt;
| [[Fish]] || [[i3]] || [[Vim]] || [[St]] || [[tmux]] || || i3status || || The Lounge || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/ayekat/localdir ayekat]&lt;br /&gt;
| [[Zsh]] || karuiwm || [[Vim]] || [[Rxvt-unicode]] || [[tmux]] || [[Ncmpcpp]]/[[Mpd]] || karuibar || [[Mutt]] || [[Irssi]] || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/BachoSeven/dotfiles bachoseven]&lt;br /&gt;
| [[Zsh]] || [[Dwm]] [https://github.com/BachoSeven/dwm source] || [[Neovim]] || [[St]] [https://github.com/BachoSeven/st source] || [[tmux]] || [[Ncmpcpp]] || bottom || [[Neomutt]] || [[WeeChat]] || [[Lf]] || [[newsboat]]&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/bamos/dotfiles bamos]&lt;br /&gt;
| [[Zsh]] || [[i3]]/[[xmonad]] || vim/emacs || rxvt-unicode || [[tmux]] || mpv/cmus || conky/xmobar || mutt || ERC || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/benmezger/dotfiles benmezger] &lt;br /&gt;
| [https://github.com/benmezger/dotfiles zsh/bash] || [https://github.com/benmezger/dotfiles/tree/main/dot_config/i3 i3-gaps] || [https://github.com/benmezger/dotfiles/tree/main/dot_doom.d emacs] || [https://github.com/benmezger/dotfiles/blob/main/dot_Xresources rxvt-unicode]/[https://github.com/benmezger/dotfiles/blob/main/dot_config/alacritty/ alacritty] || [https://github.com/benmezger/dotfiles/blob/main/dot_tmux.conf tmux] || mopidy/ncmpcpp || [https://github.com/benmezger/dotfiles/blob/main/dot_config/i3/status.toml.tmpl i3status-rs] || [https://github.com/benmezger/dotfiles/blob/main/dot_doom.d/ mu4e]/[https://github.com/benmezger/dotfiles/blob/main/dot_config/neomutt neomutt]/[https://github.com/benmezger/dotfiles/blob/main/dot_mbsyncrc.tmpl mbsync] || [https://github.com/benmezger/dotfiles/blob/main/dot_weechat/ weechat] || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/pbrisbin/dotfiles brisbin33]&lt;br /&gt;
| [https://github.com/pbrisbin/oh-my-zsh zsh] || [https://github.com/pbrisbin/xmonad-config xmonad] || [https://github.com/pbrisbin/vim-config vim] || rxvt-unicode || [[GNU Screen]] || || dzen || [https://github.com/pbrisbin/mutt-config mutt] || [https://github.com/pbrisbin/irssi-config irssi] || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://gitlab.com/BVollmerhaus/dotfiles BVollmerhaus]&lt;br /&gt;
| [https://gitlab.com/BVollmerhaus/dotfiles/-/tree/master/config/fish fish] || [https://gitlab.com/BVollmerhaus/dotfiles/blob/master/config/i3/config i3-gaps] || [https://gitlab.com/BVollmerhaus/dotfiles/blob/master/config/kak/kakrc kakoune] || [https://gitlab.com/BVollmerhaus/dotfiles/-/blob/master/config/kitty/kitty.conf kitty] || || || [https://gitlab.com/BVollmerhaus/dotfiles/blob/master/config/polybar/config polybar] || || || [https://gitlab.com/BVollmerhaus/dotfiles/-/tree/master/config/ranger ranger] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/christian-heusel/dotfiles christian-heusel]&lt;br /&gt;
| [[Zsh]] || [[i3]] || [[Neovim]] || [[st]] / [[terminator]] || byobu / [[tmux]] || || [[アプリケーション一覧/ユーティリティ#タスクマネージャ|Htop]] || [[neomutt]]/[[thunderbird]] || [[WeeChat]] || [[nemo]] / [[ranger]] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/CuterThanYou/dotfiles CuterThanYou]&lt;br /&gt;
| [[Zsh]] || [[i3]] / [[Hyprland]] || [[Neovim]] || [[Alacritty]] / [[Foot]] || || [[Mpv]] || [[Polybar]] / Yambar || || || [[Lf]] / [[Thunar]] ||[[Newsboat]]&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/cinelli/dotfiles cinelli]&lt;br /&gt;
| [[Zsh]] || dwm || [[Vim]] || termite-git || || pianobar || htop || mutt-kz || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/dikiaap/dotfiles dikiaap]&lt;br /&gt;
| [[Zsh]] || [[i3]]-gaps || neovim || alacritty || [[tmux]] || || i3blocks || || || nnn ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/Earnestly/dotfiles Earnestly]&lt;br /&gt;
| [[Zsh]] || [[i3]]/orbment || vim/emacs || termite || [[tmux]] || mpd || conky || mutt || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/ErikBjare/dotfiles ErikBjare]&lt;br /&gt;
| [[Zsh]] || [[xmonad]]/[[Xfce|Xfce4]] || [[Vim]] || terminator || [[tmux]] || || xfce4-panel || || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/erikw/dotfiles erikw]&lt;br /&gt;
| [[Zsh]]/[[Bash]] || DWM/macOS || NeoVim || urxvtc || [[tmux]] || mpd ||  || mutt || irssi || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/falconindy/dotfiles falconindy]&lt;br /&gt;
| [[Bash]] || [[i3]] || [[Vim]] || rxvt-unicode || || ncmpcpp || conky || mutt || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/filiparag/dotfiles filiparag]&lt;br /&gt;
| [[fish]] || bspwm || [[Vim]] || alacritty || [[tmux]] || mpv, [https://github.com/altdesktop/playerctl playerctl] || htop, polybar || [https://www.nongnu.org/mailnotify/ mail-notification] || || [[PCManFM]] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/Freed-Wu/Freed-Wu Freed-Wu]&lt;br /&gt;
| [[zsh]] || [[openbox]] || [[neovim]] || [[wezterm]] || [[tmux]] || [[cmus]] || bottom || [[neomutt]] || [[WeeChat]] || [[neovim]] || [[newsboat]]&lt;br /&gt;
|-&lt;br /&gt;
! [https://git.sr.ht/~gardenapple/dotfiles gardenapple]&lt;br /&gt;
| [[Zsh]] ([https://git.sr.ht/~gardenapple/dotfiles/tree/main/item/stow/zsh/.zshrc fish-like]) || [[Hyprland]] || [[neovim]] || [[kitty]] || || || [[アプリケーション一覧/ユーティリティ#タスクマネージャ|Htop]] || [[aerc]] || || [[vifm]] || [[Newsboat]]&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/graysky2/configs/tree/master/dotfiles graysky]&lt;br /&gt;
| [[Zsh]] || Xfce|xfce4 || [[Vim]] || terminal || || ncmpcpp || custom || thunderbird || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/hugdru/dotfiles hugdru]&lt;br /&gt;
| [[Zsh]] || awesome || neovim || rxvt-unicode || [[tmux]] || || || thunderbird || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/insanum/dotfiles insanum]&lt;br /&gt;
| [[Bash]] || herbstluftwm || [[Vim]] || evilvte || [[tmux]] || || dzen || mutt-kz || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/isti115/dotfiles isti115]&lt;br /&gt;
| [https://github.com/Isti115/dotfiles/blob/master/.config/powershell/Microsoft.PowerShell_profile.ps1 pwsh]&lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/blob/master/.config/sway/config sway]&lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/tree/master/.config/nvim neovim]&lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/blob/master/.config/alacritty/alacritty.yml alacritty]&lt;br /&gt;
|| [[tmux]]&lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/tree/master/.config/mpv mpv] / playerctl&lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/tree/master/.config/waybar waybar] / htop / ytop&lt;br /&gt;
|| &lt;br /&gt;
|| &lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/tree/master/.config/ranger ranger]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! [https://hg.sr.ht/~jasonwryan/shiv jasonwryan]&lt;br /&gt;
| bash/zsh || dwm || [[Vim]] || rxvt-unicode || [[tmux]] || ncmpcpp || custom || mutt || irssi || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/JDevlieghere/dotfiles/ jdevlieghere]&lt;br /&gt;
| [[Zsh]] || xmonad || [[Vim]] || terminal || [[tmux]] || || htop || mutt || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/jelly/Dotfiles jelly]&lt;br /&gt;
| [[Zsh]] || [[i3]] || [[Vim]] || termite || [[tmux]] || ncmpcpp || || mutt-kz-git || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://gitlab.com/jlo62/dotties jl2]&lt;br /&gt;
| [[Zsh]] || swayfx || geany || [[foot]] || || || missioncenter, eww (bar) || || srain || [[thunar]] || &lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/markuszoppelt/dotfiles MarkusZoppelt]&lt;br /&gt;
| [[Zsh]] || gnome || [[Neovim]] || [[Alacritty]] || [[tmux]] || ||  ||  || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/maximbaz/dotfiles maximbaz]&lt;br /&gt;
| [[Zsh]] || sway || kakoune || kitty || || || waybar || neomutt || || nnn ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://code.mehalter.com/dotfiles mehalter]&lt;br /&gt;
| [[Zsh]] || [[i3]]-gaps || neovim || termite || [[tmux]] || cmus || gotop || neomutt || weechat || ranger ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/meskarune/.dotfiles meskarune]&lt;br /&gt;
| [[Bash]] || herbstluftwm || [[Vim]] || rxvt-unicode || [[GNU Screen]] || || conky || || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/neersighted/dotfiles neersighted]&lt;br /&gt;
| [[fish]] || [[i3]] || neovim || alacritty || [[tmux]] || ncmpcpp || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/nimaipatel/dotfiles nimaipatel]&lt;br /&gt;
| [[fish]] || awesome|| neovim || alacritty || || ncmpcpp || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/oibind/dotfiles oibind]&lt;br /&gt;
| [[fish]] || awesome || neovim || st || [[tmux]] || || htop-vim || || weechat || lf ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/ok100/configs OK100]&lt;br /&gt;
| [[Bash]] || dwm || [[Vim]] || rxvt-unicode || || cmus || conky, dzen || mutt || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/orhun/dotfiles orhun]&lt;br /&gt;
| [[Bash]] || [[i3]]-gaps || neovim || alacritty || || || i3status || || weechat || tere ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/pablox-cl/dotfiles pablox-cl]&lt;br /&gt;
| zsh (zplug) || [[GNOME]] || neovim || kitty || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/patri9ck/dotfiles patri9ck]&lt;br /&gt;
| [[Zsh]] || [[bspwm]] || [[Vim]] || [[kitty]] || || || || || || [[Thunar]] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://gitlab.com/peterzuger/dotfiles peterzuger]&lt;br /&gt;
| [[Zsh]] || [[i3]]-gaps || emacs || rxvt-unicode || [[GNU Screen]] || moc || htop || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://gitlab.com/polyzen/dotfiles polyzen]&lt;br /&gt;
| [[Zsh]] || [[i3]] || Neovim || Alacritty || [[tmux]] || mpv || i3status,htop || himalaya || || ranger || Newsboat&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/potamides/dotfiles potamides]&lt;br /&gt;
| [[Bash]] || awesome || neovim || termite || [[tmux]] || ncmpcpp || conky,htop || mutt || weechat || ranger ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/reisub0/dot reisub0]&lt;br /&gt;
| [[fish]] || qtile || neovim || kitty || || mpd || conky || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/sistematico/majestic sistematico]&lt;br /&gt;
| zsh/fish/bash || [https://github.com/Airblader/i3 i3-gaps] || vim/nano || termite || [[tmux]] || ncmpcpp || polybar || mutt || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://git.sr.ht/~thecashewtrader/dotfiles thecashewtrader]&lt;br /&gt;
| Eshell || EXWM || Emacs || Emacs (VTerm) || Emacs || Bongo || htop || mu4e || ERC || Dired || Elfeed&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/thiagowfx/.dotfiles thiagowfx]&lt;br /&gt;
| bash/zsh || [[i3]] || [[Vim]] || alacritty || [[tmux]] || playerctl || i3status || || || ranger ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://codeberg.org/tplasdio/dotfiles tplasdio]&lt;br /&gt;
| [https://codeberg.org/tplasdio/bash-config bash (ble.sh)] || [https://codeberg.org/tplasdio/awesomewm-config awesome] || [https://codeberg.org/tplasdio/neovim-config neovim] || [https://codeberg.org/tplasdio/dotfiles/src/branch/main/.config/alacritty/alacritty.yml alacritty] || [https://codeberg.org/tplasdio/dotfiles/src/branch/main/.config/byobu/.tmux.conf tmux] || [https://codeberg.org/tplasdio/mpv-config mpv], mpvs || htop || neomutt || weechat || [https://codeberg.org/tplasdio/lf-config lf] || &lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/tuurep/dotfiles tuurep]&lt;br /&gt;
| [[Bash]] || openbox || neovim || alacritty || [[tmux]] || || polybar || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://git.sr.ht/~unrealapex/dotfiles unrealapex]&lt;br /&gt;
| [[Zsh]] || [[Dwm]] || [[Neovim]] || [[St]] || || [[Ncmpcpp]] || htop || [[Neomutt]] || [[Irssi]] || fff || [[Newsboat]]&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/vodik/dotfiles vodik]&lt;br /&gt;
| [[Zsh]] || xmonad || [[Vim]] || termite-git || [[tmux]] || ncmpcpp || custom || mutt || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/w0ng/dotfiles w0ng]&lt;br /&gt;
| [[Zsh]] || dwm || [[Vim]] || rxvt-unicode || [[tmux]] || ncmpcpp || custom || mutt || irssi || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/whitelynx/dotfiles whitelynx]&lt;br /&gt;
| [[fish]] || [[i3]] || neovim || kitty || || || i3pystatus || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://git.sr.ht/~whynothugo/dotfiles whynothugo]&lt;br /&gt;
| [[Zsh]] || sway || neovim || alacritty || || mpv || waybar, top || neomutt || || nemo ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/wryonik/dotfiles wryonik]&lt;br /&gt;
| [[Zsh]] || i3-gaps-rounded || [[Vim]] || terminator || || cmus || htop, i3blocks, gotop || || || ranger, nautilus ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [http://mywiki.wooledge.org/DotFiles gregswiki:DotFiles]&lt;br /&gt;
* [http://wiki.haskell.org/Xmonad/Config_archive XMonad Config Archive]&lt;br /&gt;
* [http://dotshare.it dotshare.it]&lt;br /&gt;
* [https://dotfiles.github.io/ dotfiles.github.io]&lt;br /&gt;
* [https://terminal.sexy/ terminal.sexy] - ターミナルのカラースキームデザイナー&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%89%E3%83%83%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&amp;diff=40279</id>
		<title>ドットファイル</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%89%E3%83%83%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&amp;diff=40279"/>
		<updated>2025-05-15T02:15:29Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* Git を使ってドットファイルを直接管理する */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:設定ファイル]]&lt;br /&gt;
[[Category:設定管理]]&lt;br /&gt;
[[en:Dotfiles]]&lt;br /&gt;
[[es:Dotfiles]]&lt;br /&gt;
[[pt:Dotfiles]]&lt;br /&gt;
[[zh-hans:Dotfiles]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|XDG Base Directory サポート}}&lt;br /&gt;
{{Related|X resources}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
ユーザー固有のアプリケーション設定は、伝統的に [[Wikipedia:dotfile|ドットファイル]](ファイル名がドットで始まるファイル) に保存されています。変更を追跡し、さまざまなホスト間でドットファイルを同期するために、[[Git]] などの [[バージョン管理システム]] でドットファイルを管理することは一般的な方法です。ドットファイルを管理するには、さまざまな方法があります(例えば、ホームディレクトリでドットファイルを直接追跡する、サブディレクトリに保存する、[[シェル]]スクリプト や[[#他のツール|専用ツール]] でファイルをシンボリックリンク/コピー/生成するなど)。ドットファイルの管理方法とは別に、この記事には、[[#リポジトリ|ドットファイルのリボジトリのリスト]] も含まれています。&lt;br /&gt;
&lt;br /&gt;
== Git を使ってドットファイルを直接管理する ==&lt;br /&gt;
&lt;br /&gt;
ドットファイルを直接 Git で追跡することの利点は、[[Git]] だけで済み、シンボリックリンクを必要としないことです。デメリットは、[[#ホスト固有の設定|ホスト固有の設定]] では一般的に複数の [[Git#Branching|branches]] に変更をマージする必要があるということです。&lt;br /&gt;
&lt;br /&gt;
このアプローチを実現する最も簡単な方法は、[[Git]] リポジトリをホームディレクトリで直接初期化し、デフォルトで {{man|5|gitignore}} パターンの {{ic|*}} を使用してすべてのファイルを無視することです。ただし、この方法には 2 つの欠点があります。ホームディレクトリに他の Git リポジトリがある場合は混乱する可能性があります (たとえば、リポジトリの初期化を忘れた場合、突然 dotfile リポジトリを操作することになります) また、ディレクトリ内のどのファイルが簡単に確認できなくなります。現在のディレクトリは追跡されません (無視されるため)&lt;br /&gt;
&lt;br /&gt;
これらの欠点を避けるための代替方法として、&amp;quot;bare repository and alias method&amp;quot; があります。この方法は、[https://news.ycombinator.com/item?id=11071754 Ask Hacker News: What do you use to manage your dotfiles?] で広く知られるようになったもので、たった3つのコマンドでセットアップが可能です:&lt;br /&gt;
&lt;br /&gt;
 $ git init --bare ~/.dotfiles&lt;br /&gt;
 $ alias config=&#039;/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME&#039;&lt;br /&gt;
 $ config config status.showUntrackedFiles no&lt;br /&gt;
&lt;br /&gt;
{{note|通常、ドットファイルのパーミッションはすべてデフォルトの設定のままで問題ありませんが、特定のファイルに特定のパーミッションが必要な場合は、別の方法を検討する必要があります。Git はファイルのパーミッションを保存しないためです。}}&lt;br /&gt;
&lt;br /&gt;
このドットファイルを使って新しいシステムに複製できます:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --bare &amp;lt;git-repo-url&amp;gt; $HOME/.dotfiles&lt;br /&gt;
 $ alias config=&#039;/usr/bin/git --git-dir=&amp;quot;$HOME/.dotfiles/&amp;quot; --work-tree=&amp;quot;$HOME&amp;quot;&#039;&lt;br /&gt;
 $ config checkout&lt;br /&gt;
 $ config config --local status.showUntrackedFiles no&lt;br /&gt;
&lt;br /&gt;
リモートリポジトリを使わずにこれを行うには、[[git#バンドル|git bundles]] を使用できます。ソースコンピュータで {{ic|dotfiles.bundle}} という名前の git バンドルを作成するには、次のコマンドを実行します:&lt;br /&gt;
:{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ dotfiles bundle create --progress dotfiles.bundle --all&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
:バンドルは {{ic|&amp;lt;git-repo-url&amp;gt;}} と同様に使用できます:&lt;br /&gt;
:{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ git clone --bare dotfiles.bundle $HOME/.dotfiles&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* 上書きされる可能性のあるいくつかのストック設定がすでにある場合は、次のようなエラーが発生します:&lt;br /&gt;
:{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ config checkout&lt;br /&gt;
error: The following untracked working tree files would be overwritten by checkout:&lt;br /&gt;
    .bashrc&lt;br /&gt;
    .gitignore&lt;br /&gt;
Please move or remove them before you can switch branches.&lt;br /&gt;
Aborting&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
:既存のファイルを書き換える {{ic|$ config checkout -f}} を使用することもできます。または、より安全な方法として、次のスクリプトを使用してすべてのファイルのバックアップを取得し、{{ic|checkout}} を使用することもできます:&lt;br /&gt;
:{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mkdir -p .config-backup &amp;amp;&amp;amp; \&lt;br /&gt;
config checkout 2&amp;gt;&amp;amp;1 | egrep &amp;quot;\s+\.&amp;quot; | awk {&#039;print $1&#039;} | \&lt;br /&gt;
xargs -I{} mv {} .config-backup/{}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
その後、作成した [[エイリアス]] でドットファイルを管理することができます。もし [[Bash]] を使っていてこのエイリアスを bash 補完したい場合は、{{AUR|bash-complete-alias}} をインストールして、エイリアスと次の行を {{ic|~/.bashrc}} に追加してください。&lt;br /&gt;
&lt;br /&gt;
 $ complete -F _complete_alias config&lt;br /&gt;
&lt;br /&gt;
bash で補完させるもう一つの方法は、{{ic|~/.bashrc}} に以下を追加することです。([https://askubuntu.com/a/642778] から引用):&lt;br /&gt;
&lt;br /&gt;
 source /usr/share/bash-completion/completions/git&lt;br /&gt;
 __git_complete config __git_main&lt;br /&gt;
&lt;br /&gt;
{{Tip|機密情報を誤ってコミットしないようにするには、[https://wiki.archlinux.org/title/Git#Filtering_confidential_information Git#Filtering confidential information] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
== ホスト固有の設定 ==&lt;br /&gt;
&lt;br /&gt;
様々なマシンで dotfiles を同期させる際によくある問題が、ホスト固有の設定です。&lt;br /&gt;
&lt;br /&gt;
[[Git]] では、すべての共有設定を master ブランチで管理し、個々のマシンにはマシン固有のブランチをチェックアウトすることでこれを解決できます。ホスト固有の設定はマシン固有のブランチにコミットすることができます。共有設定が master ブランチで変更された場合、マシンごとのブランチは更新された master の上にリベースされる必要があります。&lt;br /&gt;
&lt;br /&gt;
[[コマンドラインシェル#設定ファイル|シェル設定ファイル]] のような設定スクリプトでは、条件付きロジックを使用することができます。例えば、[[Bash]] スクリプト (すなわち {{ic|.bashrc}}) は、マシン名 (またはタイプ、カスタム変数など) に応じて異なる設定を適用することができます。&lt;br /&gt;
&lt;br /&gt;
 if &amp;lt;nowiki&amp;gt;[[ &amp;quot;$(hostname)&amp;quot; == &amp;quot;archlaptop&amp;quot; ]];&amp;lt;/nowiki&amp;gt; then&lt;br /&gt;
     # laptop specific commands here&lt;br /&gt;
 else&lt;br /&gt;
     # desktop or server machine commands&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
同様のことは、[[.Xresources]] でも実現できます。[https://jnrowe.github.io/articles/tips/Sharing_Xresources_between_systems.html]&lt;br /&gt;
&lt;br /&gt;
Git ブランチのリベースが面倒だと感じる場合は、&#039;&#039;ファイルのグループ化&#039;&#039; をサポートする [[#Tools|ツール]] や、さらに柔軟性を求めるなら &#039;&#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;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! 名前 !! パッケージ !! 言語 !! ファイルのグループ化 !! 処理&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/anishathalye/dotbot dotbot]&lt;br /&gt;
| {{Pkg|chezmoi}} || Python || 設定ファイル || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/twpayne/chezmoi chezmoi]&lt;br /&gt;
| {{AUR|dotbot}} || Go || ディレクトリベース || Go テンプレート&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/kesslern/dot-templater dot-templater]&lt;br /&gt;
| {{AUR|dot-templater-git}} || Rust || ディレクトリベース || カスタムシンタックス&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/oknozor/toml-bombadil toml-bombadil]&lt;br /&gt;
| {{Pkg|toml-bombadil}} || Rust || 設定ファイル || tera&lt;br /&gt;
|-&lt;br /&gt;
! [https://deadc0de.re/dotdrop/ dotdrop]&lt;br /&gt;
| {{AUR|dotdrop}} || Python || 設定ファイル || Jinja2&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/jbernard/dotfiles dotfiles]&lt;br /&gt;
| {{AUR|dotfiles}} || Python || {{Grey|[https://github.com/jbernard/dotfiles/pull/24 No]}} || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/EvanPurkhiser/dots Dots]&lt;br /&gt;
| {{AUR|dots-manager}} || Python || ディレクトリベース || カスタム追加ポイント&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/SuperCuber/dotter dotter]&lt;br /&gt;
| {{AUR|dotter-rs}} || Rust || 設定ファイル || Handlebars&lt;br /&gt;
|-&lt;br /&gt;
! [https://dt.cli.rs dt-cli]&lt;br /&gt;
| {{AUR|dt-cli}} || Rust || 設定ファイル || Handlebars&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.gnu.org/software/stow/ GNU Stow]&lt;br /&gt;
| {{Pkg|stow}} || Perl || ディレクトリベース [http://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html] || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/lra/mackup Mackup]&lt;br /&gt;
| {{AUR|mackup}} || Python || アプリケーションごとに自動 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/darkfeline/mir.qualia mir.qualia]&lt;br /&gt;
| {{AUR|mir.qualia}} || Python || {{Grey|No}} || カスタムブロック&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/thoughtbot/rcm rcm]&lt;br /&gt;
| {{AUR|rcm}} || Perl || ディレクトリベース (ホストまたはタグによる) || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/sebastiancarlos/yas-bdsm yas-bdsm]&lt;br /&gt;
| {{-}} || Shell || ディレクトリベース || {{Grey|No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Git を wrapping するツール ===&lt;br /&gt;
&lt;br /&gt;
[[Git]] に不安がある場合は、バージョン管理システムを (多かれ少なかれ) 抽象化するこれらのツールのいずれかを使用することをお勧めします。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! 名前 !! パッケージ !! 言語 !! ファイルのグループ化 !! 処理&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/kazhala/dotbare dotbare]&lt;br /&gt;
| {{AUR|dotbare}} || Shell ({{Pkg|fzf}}) || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/kobus-v-schoor/dotgit dotgit]&lt;br /&gt;
| {{AUR|dotgit}} || Python || ファイル名ベース || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/andsens/homeshick homeshick]&lt;br /&gt;
| {{AUR|homeshick-git}} || Bash || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/technicalpickles/homesick homesick]&lt;br /&gt;
| {{-}} || Ruby || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/pearl-core/pearl Pearl]&lt;br /&gt;
| {{AUR|pearl-git}} || Python || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/RichiH/vcsh vcsh]&lt;br /&gt;
| {{Pkg|vcsh}} || Shell || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://yadm.io yadm]&amp;lt;sup&amp;gt;(1)&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{Pkg|yadm}} || Bash || ファイル名ベース&amp;lt;br&amp;gt;(by class/OS/distro/hostname/user)[https://yadm.io/docs/alternates] ||組み込みのテンプレート /Jinja2/ESH [https://yadm.io/docs/templates]&amp;lt;br&amp;gt;(オプション)&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/justone/dotfiles dfm]&lt;br /&gt;
| {{AUR|dfm}} || Perl || リポジトリ的 || {{Grey|No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# [[GPG]] または OpenSS による機密ファイルの暗号化をサポートします。 [https://yadm.io/docs/encryption]&lt;br /&gt;
&lt;br /&gt;
== ユーザーリポジトリ ==&lt;br /&gt;
&lt;br /&gt;
{{Note|このテーブルは、ドットファイルの参照/例として使用して下さい。ドットファイルをテーブルに追加する場合は、それらがクリーンでコメントされていて、最新の状態に保たれているかを確認してください。}}&lt;br /&gt;
{{Warning|これらのドットファイルは Arch Linux スタッフによって検証されていないため、自己責任で使用してください。}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
! 作者 || シェル || WM / DE || エディタ || ターミナル || マルチプレクサ || オーディオ || モニター ||  メール || IRC || ファイルマネージャ || RSS リーダー&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/adamperkowski/dwm adamperkowski]&lt;br /&gt;
| [[Zsh]] || [[dwm]] || [[Neovim]] || [[Kitty]] || [[tmux]] || [[Mpv]] || custom || || [[WeeChat]] || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/alfunx/.dotfiles alfunx]&lt;br /&gt;
| [[Zsh]] || [[Awesome]] || [[Vim]] || [[Kitty]] || [[tmux]] || [[Ncmpcpp]]/[[Mpd]] || [[アプリケーション一覧/ユーティリティ#タスクマネージャ|Htop]]/lain || [[Thunderbird]] || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://gitlab.com/Ambrevar/dotfiles Ambrevar]&lt;br /&gt;
| Eshell || [[EXWM]] || [[Emacs]] || Emacs (Eshell) || Emacs TRAMP + dtach || EMMS || [[Conky]]/[[Dzen]] || mu4e || Circe || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/ask1234560/dotfiles_bspwm ananthu]&lt;br /&gt;
| [[Zsh]] || [[Bspwm]] || [[Neovim]] || [[Alacritty]] ||  || [[Mpv]] || [[アプリケーション一覧/ユーティリティ#タスクマネージャ|Htop]], [[Polybar]] || [[Neomutt]] || [[WeeChat]] || [[Ranger]] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/awalGarg/dotfiles awal]&lt;br /&gt;
| [[Fish]] || [[i3]] || [[Vim]] || [[St]] || [[tmux]] || || i3status || || The Lounge || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/ayekat/localdir ayekat]&lt;br /&gt;
| [[Zsh]] || karuiwm || [[Vim]] || [[Rxvt-unicode]] || [[tmux]] || [[Ncmpcpp]]/[[Mpd]] || karuibar || [[Mutt]] || [[Irssi]] || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/BachoSeven/dotfiles bachoseven]&lt;br /&gt;
| [[Zsh]] || [[Dwm]] [https://github.com/BachoSeven/dwm source] || [[Neovim]] || [[St]] [https://github.com/BachoSeven/st source] || [[tmux]] || [[Ncmpcpp]] || bottom || [[Neomutt]] || [[WeeChat]] || [[Lf]] || [[newsboat]]&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/bamos/dotfiles bamos]&lt;br /&gt;
| [[Zsh]] || [[i3]]/[[xmonad]] || vim/emacs || rxvt-unicode || [[tmux]] || mpv/cmus || conky/xmobar || mutt || ERC || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/benmezger/dotfiles benmezger] &lt;br /&gt;
| [https://github.com/benmezger/dotfiles zsh/bash] || [https://github.com/benmezger/dotfiles/tree/main/dot_config/i3 i3-gaps] || [https://github.com/benmezger/dotfiles/tree/main/dot_doom.d emacs] || [https://github.com/benmezger/dotfiles/blob/main/dot_Xresources rxvt-unicode]/[https://github.com/benmezger/dotfiles/blob/main/dot_config/alacritty/ alacritty] || [https://github.com/benmezger/dotfiles/blob/main/dot_tmux.conf tmux] || mopidy/ncmpcpp || [https://github.com/benmezger/dotfiles/blob/main/dot_config/i3/status.toml.tmpl i3status-rs] || [https://github.com/benmezger/dotfiles/blob/main/dot_doom.d/ mu4e]/[https://github.com/benmezger/dotfiles/blob/main/dot_config/neomutt neomutt]/[https://github.com/benmezger/dotfiles/blob/main/dot_mbsyncrc.tmpl mbsync] || [https://github.com/benmezger/dotfiles/blob/main/dot_weechat/ weechat] || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/pbrisbin/dotfiles brisbin33]&lt;br /&gt;
| [https://github.com/pbrisbin/oh-my-zsh zsh] || [https://github.com/pbrisbin/xmonad-config xmonad] || [https://github.com/pbrisbin/vim-config vim] || rxvt-unicode || [[GNU Screen]] || || dzen || [https://github.com/pbrisbin/mutt-config mutt] || [https://github.com/pbrisbin/irssi-config irssi] || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://gitlab.com/BVollmerhaus/dotfiles BVollmerhaus]&lt;br /&gt;
| [https://gitlab.com/BVollmerhaus/dotfiles/-/tree/master/config/fish fish] || [https://gitlab.com/BVollmerhaus/dotfiles/blob/master/config/i3/config i3-gaps] || [https://gitlab.com/BVollmerhaus/dotfiles/blob/master/config/kak/kakrc kakoune] || [https://gitlab.com/BVollmerhaus/dotfiles/-/blob/master/config/kitty/kitty.conf kitty] || || || [https://gitlab.com/BVollmerhaus/dotfiles/blob/master/config/polybar/config polybar] || || || [https://gitlab.com/BVollmerhaus/dotfiles/-/tree/master/config/ranger ranger] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/christian-heusel/dotfiles christian-heusel]&lt;br /&gt;
| [[Zsh]] || [[i3]] || [[Neovim]] || [[st]] / [[terminator]] || byobu / [[tmux]] || || [[アプリケーション一覧/ユーティリティ#タスクマネージャ|Htop]] || [[neomutt]]/[[thunderbird]] || [[WeeChat]] || [[nemo]] / [[ranger]] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/CuterThanYou/dotfiles CuterThanYou]&lt;br /&gt;
| [[Zsh]] || [[i3]] / [[Hyprland]] || [[Neovim]] || [[Alacritty]] / [[Foot]] || || [[Mpv]] || [[Polybar]] / Yambar || || || [[Lf]] / [[Thunar]] ||[[Newsboat]]&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/cinelli/dotfiles cinelli]&lt;br /&gt;
| [[Zsh]] || dwm || [[Vim]] || termite-git || || pianobar || htop || mutt-kz || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/dikiaap/dotfiles dikiaap]&lt;br /&gt;
| [[Zsh]] || [[i3]]-gaps || neovim || alacritty || [[tmux]] || || i3blocks || || || nnn ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/Earnestly/dotfiles Earnestly]&lt;br /&gt;
| [[Zsh]] || [[i3]]/orbment || vim/emacs || termite || [[tmux]] || mpd || conky || mutt || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/ErikBjare/dotfiles ErikBjare]&lt;br /&gt;
| [[Zsh]] || [[xmonad]]/[[Xfce|Xfce4]] || [[Vim]] || terminator || [[tmux]] || || xfce4-panel || || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/erikw/dotfiles erikw]&lt;br /&gt;
| [[Zsh]]/[[Bash]] || DWM/macOS || NeoVim || urxvtc || [[tmux]] || mpd ||  || mutt || irssi || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/falconindy/dotfiles falconindy]&lt;br /&gt;
| [[Bash]] || [[i3]] || [[Vim]] || rxvt-unicode || || ncmpcpp || conky || mutt || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/filiparag/dotfiles filiparag]&lt;br /&gt;
| [[fish]] || bspwm || [[Vim]] || alacritty || [[tmux]] || mpv, [https://github.com/altdesktop/playerctl playerctl] || htop, polybar || [https://www.nongnu.org/mailnotify/ mail-notification] || || [[PCManFM]] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/Freed-Wu/Freed-Wu Freed-Wu]&lt;br /&gt;
| [[zsh]] || [[openbox]] || [[neovim]] || [[wezterm]] || [[tmux]] || [[cmus]] || bottom || [[neomutt]] || [[WeeChat]] || [[neovim]] || [[newsboat]]&lt;br /&gt;
|-&lt;br /&gt;
! [https://git.sr.ht/~gardenapple/dotfiles gardenapple]&lt;br /&gt;
| [[Zsh]] ([https://git.sr.ht/~gardenapple/dotfiles/tree/main/item/stow/zsh/.zshrc fish-like]) || [[Hyprland]] || [[neovim]] || [[kitty]] || || || [[アプリケーション一覧/ユーティリティ#タスクマネージャ|Htop]] || [[aerc]] || || [[vifm]] || [[Newsboat]]&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/graysky2/configs/tree/master/dotfiles graysky]&lt;br /&gt;
| [[Zsh]] || Xfce|xfce4 || [[Vim]] || terminal || || ncmpcpp || custom || thunderbird || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/hugdru/dotfiles hugdru]&lt;br /&gt;
| [[Zsh]] || awesome || neovim || rxvt-unicode || [[tmux]] || || || thunderbird || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/insanum/dotfiles insanum]&lt;br /&gt;
| [[Bash]] || herbstluftwm || [[Vim]] || evilvte || [[tmux]] || || dzen || mutt-kz || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/isti115/dotfiles isti115]&lt;br /&gt;
| [https://github.com/Isti115/dotfiles/blob/master/.config/powershell/Microsoft.PowerShell_profile.ps1 pwsh]&lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/blob/master/.config/sway/config sway]&lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/tree/master/.config/nvim neovim]&lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/blob/master/.config/alacritty/alacritty.yml alacritty]&lt;br /&gt;
|| [[tmux]]&lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/tree/master/.config/mpv mpv] / playerctl&lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/tree/master/.config/waybar waybar] / htop / ytop&lt;br /&gt;
|| &lt;br /&gt;
|| &lt;br /&gt;
|| [https://github.com/Isti115/dotfiles/tree/master/.config/ranger ranger]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
! [https://hg.sr.ht/~jasonwryan/shiv jasonwryan]&lt;br /&gt;
| bash/zsh || dwm || [[Vim]] || rxvt-unicode || [[tmux]] || ncmpcpp || custom || mutt || irssi || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/JDevlieghere/dotfiles/ jdevlieghere]&lt;br /&gt;
| [[Zsh]] || xmonad || [[Vim]] || terminal || [[tmux]] || || htop || mutt || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/jelly/Dotfiles jelly]&lt;br /&gt;
| [[Zsh]] || [[i3]] || [[Vim]] || termite || [[tmux]] || ncmpcpp || || mutt-kz-git || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://gitlab.com/jlo62/dotties jl2]&lt;br /&gt;
| [[Zsh]] || swayfx || geany || [[foot]] || || || missioncenter, eww (bar) || || srain || [[thunar]] || &lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/markuszoppelt/dotfiles MarkusZoppelt]&lt;br /&gt;
| [[Zsh]] || gnome || [[Neovim]] || [[Alacritty]] || [[tmux]] || ||  ||  || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/maximbaz/dotfiles maximbaz]&lt;br /&gt;
| [[Zsh]] || sway || kakoune || kitty || || || waybar || neomutt || || nnn ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://code.mehalter.com/dotfiles mehalter]&lt;br /&gt;
| [[Zsh]] || [[i3]]-gaps || neovim || termite || [[tmux]] || cmus || gotop || neomutt || weechat || ranger ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/meskarune/.dotfiles meskarune]&lt;br /&gt;
| [[Bash]] || herbstluftwm || [[Vim]] || rxvt-unicode || [[GNU Screen]] || || conky || || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/neersighted/dotfiles neersighted]&lt;br /&gt;
| [[fish]] || [[i3]] || neovim || alacritty || [[tmux]] || ncmpcpp || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/nimaipatel/dotfiles nimaipatel]&lt;br /&gt;
| [[fish]] || awesome|| neovim || alacritty || || ncmpcpp || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/oibind/dotfiles oibind]&lt;br /&gt;
| [[fish]] || awesome || neovim || st || [[tmux]] || || htop-vim || || weechat || lf ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/ok100/configs OK100]&lt;br /&gt;
| [[Bash]] || dwm || [[Vim]] || rxvt-unicode || || cmus || conky, dzen || mutt || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/orhun/dotfiles orhun]&lt;br /&gt;
| [[Bash]] || [[i3]]-gaps || neovim || alacritty || || || i3status || || weechat || tere ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/pablox-cl/dotfiles pablox-cl]&lt;br /&gt;
| zsh (zplug) || [[GNOME]] || neovim || kitty || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/patri9ck/dotfiles patri9ck]&lt;br /&gt;
| [[Zsh]] || [[bspwm]] || [[Vim]] || [[kitty]] || || || || || || [[Thunar]] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://gitlab.com/peterzuger/dotfiles peterzuger]&lt;br /&gt;
| [[Zsh]] || [[i3]]-gaps || emacs || rxvt-unicode || [[GNU Screen]] || moc || htop || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://gitlab.com/polyzen/dotfiles polyzen]&lt;br /&gt;
| [[Zsh]] || [[i3]] || Neovim || Alacritty || [[tmux]] || mpv || i3status,htop || himalaya || || ranger || Newsboat&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/potamides/dotfiles potamides]&lt;br /&gt;
| [[Bash]] || awesome || neovim || termite || [[tmux]] || ncmpcpp || conky,htop || mutt || weechat || ranger ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/reisub0/dot reisub0]&lt;br /&gt;
| [[fish]] || qtile || neovim || kitty || || mpd || conky || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/sistematico/majestic sistematico]&lt;br /&gt;
| zsh/fish/bash || [https://github.com/Airblader/i3 i3-gaps] || vim/nano || termite || [[tmux]] || ncmpcpp || polybar || mutt || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://git.sr.ht/~thecashewtrader/dotfiles thecashewtrader]&lt;br /&gt;
| Eshell || EXWM || Emacs || Emacs (VTerm) || Emacs || Bongo || htop || mu4e || ERC || Dired || Elfeed&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/thiagowfx/.dotfiles thiagowfx]&lt;br /&gt;
| bash/zsh || [[i3]] || [[Vim]] || alacritty || [[tmux]] || playerctl || i3status || || || ranger ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://codeberg.org/tplasdio/dotfiles tplasdio]&lt;br /&gt;
| [https://codeberg.org/tplasdio/bash-config bash (ble.sh)] || [https://codeberg.org/tplasdio/awesomewm-config awesome] || [https://codeberg.org/tplasdio/neovim-config neovim] || [https://codeberg.org/tplasdio/dotfiles/src/branch/main/.config/alacritty/alacritty.yml alacritty] || [https://codeberg.org/tplasdio/dotfiles/src/branch/main/.config/byobu/.tmux.conf tmux] || [https://codeberg.org/tplasdio/mpv-config mpv], mpvs || htop || neomutt || weechat || [https://codeberg.org/tplasdio/lf-config lf] || &lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/tuurep/dotfiles tuurep]&lt;br /&gt;
| [[Bash]] || openbox || neovim || alacritty || [[tmux]] || || polybar || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://git.sr.ht/~unrealapex/dotfiles unrealapex]&lt;br /&gt;
| [[Zsh]] || [[Dwm]] || [[Neovim]] || [[St]] || || [[Ncmpcpp]] || htop || [[Neomutt]] || [[Irssi]] || fff || [[Newsboat]]&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/vodik/dotfiles vodik]&lt;br /&gt;
| [[Zsh]] || xmonad || [[Vim]] || termite-git || [[tmux]] || ncmpcpp || custom || mutt || weechat || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/w0ng/dotfiles w0ng]&lt;br /&gt;
| [[Zsh]] || dwm || [[Vim]] || rxvt-unicode || [[tmux]] || ncmpcpp || custom || mutt || irssi || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/whitelynx/dotfiles whitelynx]&lt;br /&gt;
| [[fish]] || [[i3]] || neovim || kitty || || || i3pystatus || || || ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://git.sr.ht/~whynothugo/dotfiles whynothugo]&lt;br /&gt;
| [[Zsh]] || sway || neovim || alacritty || || mpv || waybar, top || neomutt || || nemo ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/wryonik/dotfiles wryonik]&lt;br /&gt;
| [[Zsh]] || i3-gaps-rounded || [[Vim]] || terminator || || cmus || htop, i3blocks, gotop || || || ranger, nautilus ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [http://mywiki.wooledge.org/DotFiles gregswiki:DotFiles]&lt;br /&gt;
* [http://wiki.haskell.org/Xmonad/Config_archive XMonad Config Archive]&lt;br /&gt;
* [http://dotshare.it dotshare.it]&lt;br /&gt;
* [https://dotfiles.github.io/ dotfiles.github.io]&lt;br /&gt;
* [https://terminal.sexy/ terminal.sexy] - ターミナルのカラースキームデザイナー&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Fortune&amp;diff=40261</id>
		<title>Fortune</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Fortune&amp;diff=40261"/>
		<updated>2025-05-08T09:12:48Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* 使用方法 */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:視覚効果]]&lt;br /&gt;
[[Category:コマンドシェル]]&lt;br /&gt;
[[en:Fortune]]&lt;br /&gt;
[[pt:Fortune]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|アスキーアート}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[[Wikipedia:ja:Fortune (UNIX)|Fortune]] は引用句データベースからランダムに痛烈・示唆的・頓馬・皮肉なメッセージを表示するシンプルなプログラムです。&#039;&#039;fortune&#039;&#039; コマンドラインユーティリティは、{{Pkg|fortune-mod}} パッケージの一部です。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|fortune-mod}} または {{AUR|fortune-mod-git}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|特定のソースからの引用を提供するメタパッケージは、[[AUR]] で &amp;quot;fortune-mod-&amp;quot; というプレフィックスで利用できます。例えば、{{AUR|fortune-mod-archlinux}} は Arch 関係の発言集を含んでいます。}}&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
ターミナルで以下のコマンドを実行:&lt;br /&gt;
{{hc|$ fortune|&lt;br /&gt;
It is Texas law that when two trains meet each other at a railroad crossing,&lt;br /&gt;
each shall come to a full stop, and neither shall proceed until the other has gone.}}&lt;br /&gt;
&lt;br /&gt;
インタラクティブシェルを起動したときにランダムな引用句を表示するには、シェルの rc 設定ファイルに &#039;&#039;fortune&#039;&#039; コマンドを追加してください:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # ~/.bashrc&lt;br /&gt;
 fortune&lt;br /&gt;
&lt;br /&gt;
{{Note|デフォルトでは、{{ic|fortune}} はあまり害のない引用句を表示します [https://github.com/shlomif/fortune-mod/blob/master/fortune-mod/Offensive] しかしながら、過激と思えるような引用句もパッケージには含まれており、{{ic|/usr/share/fortune/off/}} に入ります。使用したい場合は {{man|6|fortune}} を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== カスタムファイルの作成 ===&lt;br /&gt;
&lt;br /&gt;
カスタムファイルを作成するには、最初に引用句を含むファイルを作成する必要があります。各引用句の間に、{{ic|%}} 文字のみを含む行を追加する必要があります。myquotes など、任意の名前を使用してこのファイルを保存します。次に引用句のランダムアクセスを有効にするために、{{ic|strfile &#039;&#039;myquotes&#039;&#039;}} をターミナルで実行します。ターミナルで  {{ic|fortune &#039;&#039;myquotes&#039;&#039;}} を実行すると、引用句にアクセスできるようになります。このコマンドを実行するには、{{ic|&#039;&#039;myquotes&#039;&#039;}} と {{ic|&#039;&#039;myquotes&#039;&#039;.dat}} が同じディレクトリにいる必要があります。コマンドを実行するだけで引用句にアクセスできるようにしたい場合は、両方のファイルを {{ic|/usr/share/fortune/}} ディレクトリに移動する必要があります。ファイルに変更を加える場合は、最初から繰り返します。&lt;br /&gt;
&lt;br /&gt;
=== Cowsay ===&lt;br /&gt;
&lt;br /&gt;
[[アスキーアート#Cowsay]] を参照。&lt;br /&gt;
&lt;br /&gt;
===Ponysay===&lt;br /&gt;
&lt;br /&gt;
[[アスキーアート#Ponysay]] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [https://github.com/shlomif/fortune-mod fortune-mod GitHub プロジェクトページ]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Fortune&amp;diff=40260</id>
		<title>Fortune</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Fortune&amp;diff=40260"/>
		<updated>2025-05-08T09:11:03Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* インストール */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:視覚効果]]&lt;br /&gt;
[[Category:コマンドシェル]]&lt;br /&gt;
[[en:Fortune]]&lt;br /&gt;
[[pt:Fortune]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|アスキーアート}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[[Wikipedia:ja:Fortune (UNIX)|Fortune]] は引用句データベースからランダムに痛烈・示唆的・頓馬・皮肉なメッセージを表示するシンプルなプログラムです。&#039;&#039;fortune&#039;&#039; コマンドラインユーティリティは、{{Pkg|fortune-mod}} パッケージの一部です。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|fortune-mod}} または {{AUR|fortune-mod-git}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|特定のソースからの引用を提供するメタパッケージは、[[AUR]] で &amp;quot;fortune-mod-&amp;quot; というプレフィックスで利用できます。例えば、{{AUR|fortune-mod-archlinux}} は Arch 関係の発言集を含んでいます。}}&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
ターミナルで以下のコマンドを実行:&lt;br /&gt;
{{hc|$ fortune|&lt;br /&gt;
It is Texas law that when two trains meet each other at a railroad crossing,&lt;br /&gt;
each shall come to a full stop, and neither shall proceed until the other has gone.}}&lt;br /&gt;
&lt;br /&gt;
インタラクティブシェルを起動したときにランダムな引用句を表示するには、シェルの rc 設定ファイルに &#039;&#039;fortune&#039;&#039; コマンドを追加してください:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # ~/.bashrc&lt;br /&gt;
 fortune&lt;br /&gt;
&lt;br /&gt;
[[Dash]] を使用する場合:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/dash&lt;br /&gt;
 # ~/.dashrc&lt;br /&gt;
 fortune&lt;br /&gt;
&lt;br /&gt;
ターミナルにログインしたときにランダムな引用句を表示するには、シェルのプロファイル設定ファイルに &#039;&#039;fortune&#039;&#039; コマンドを追加してください:&lt;br /&gt;
 #!/bin/mksh&lt;br /&gt;
 # ~/.profile&lt;br /&gt;
 fortune&lt;br /&gt;
&lt;br /&gt;
{{Note|デフォルトでは、{{ic|fortune}} はあまり害のない引用句を表示します [https://github.com/shlomif/fortune-mod/blob/master/fortune-mod/Offensive]。しかしながら、過激と思えるような引用句もパッケージには含まれており、{{ic|/usr/share/fortune/off/}} に入ります。使用したい場合は {{man|6|fortune}} を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== カスタムファイルの作成 ===&lt;br /&gt;
&lt;br /&gt;
カスタムファイルを作成するには、最初に引用句を含むファイルを作成する必要があります。各引用句の間に、{{ic|%}} 文字のみを含む行を追加する必要があります。myquotes など、任意の名前を使用してこのファイルを保存します。次に引用句のランダムアクセスを有効にするために、{{ic|strfile &#039;&#039;myquotes&#039;&#039;}} をターミナルで実行します。ターミナルで  {{ic|fortune &#039;&#039;myquotes&#039;&#039;}} を実行すると、引用句にアクセスできるようになります。このコマンドを実行するには、{{ic|&#039;&#039;myquotes&#039;&#039;}} と {{ic|&#039;&#039;myquotes&#039;&#039;.dat}} が同じディレクトリにいる必要があります。コマンドを実行するだけで引用句にアクセスできるようにしたい場合は、両方のファイルを {{ic|/usr/share/fortune/}} ディレクトリに移動する必要があります。ファイルに変更を加える場合は、最初から繰り返します。&lt;br /&gt;
&lt;br /&gt;
=== Cowsay ===&lt;br /&gt;
&lt;br /&gt;
[[アスキーアート#Cowsay]] を参照。&lt;br /&gt;
&lt;br /&gt;
===Ponysay===&lt;br /&gt;
&lt;br /&gt;
[[アスキーアート#Ponysay]] を参照。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [https://github.com/shlomif/fortune-mod fortune-mod GitHub プロジェクトページ]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Sudo&amp;diff=40257</id>
		<title>Sudo</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Sudo&amp;diff=40257"/>
		<updated>2025-05-07T08:53:48Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* ヒントとテクニック */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:セキュリティ]]&lt;br /&gt;
[[Category:コマンド]]&lt;br /&gt;
[[de:sudo]]&lt;br /&gt;
[[en:Sudo]]&lt;br /&gt;
[[es:Sudo]]&lt;br /&gt;
[[fr:Sudo]]&lt;br /&gt;
[[pt:Sudo]]&lt;br /&gt;
[[ru:Sudo]]&lt;br /&gt;
[[uk:Sudo]]&lt;br /&gt;
[[zh-hans:Sudo]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ユーザーとグループ}}&lt;br /&gt;
{{Related|su}}&lt;br /&gt;
{{Related|doas}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://www.sudo.ws/sudo/ sudo] を使うことでシステム管理者は権限を委託できるようになり、root や他のユーザーとして複数の(もしくは全ての)コマンドを実行する能力を特定のユーザー(もしくはユーザーのグループ)に与えることができます。&lt;br /&gt;
&lt;br /&gt;
Sudo は root でコマンドを実行するためのものとして [[su]] に代わるものです。[[su]] が root シェルを起動してそれから全てのコマンドを root として実行できるようにするのに対し、sudo は一つのコマンドだけに特権を与えます。必要な時だけに root 特権を有効にするので、sudo を使うことにより打ち間違いや呼び出されたコマンドのバグによってシステムを破壊してしまう可能性を減らすことができます。&lt;br /&gt;
&lt;br /&gt;
Sudo は他のユーザーとしてコマンドを実行するために使うこともできます; さらに、sudo は全てのコマンドとセキュリティ検査のアクセス失敗を記録します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|sudo}} パッケージをインストールしてください。あるいは、{{Pkg|sudo-rs}}にsudo-rsというメモリ安全なsudoの実装があります。&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
ユーザーはコマンドの前に {{ic|sudo}} を付けることで、スーパーユーザー(もしくはその他の)特権がある状態でコマンドを実行できます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sudo&#039;&#039; を使うときはコマンドの前に {{ic|sudo}} と空白を付けてください:&lt;br /&gt;
&lt;br /&gt;
 $ sudo &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
例えば、pacman を root で使いたいなら:&lt;br /&gt;
&lt;br /&gt;
 $ sudo pacman -Syu&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|8|sudo}} を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ログインシェル ===&lt;br /&gt;
&lt;br /&gt;
すべてのコマンドを他のユーザーとして実行するために単に &#039;&#039;sudo&#039;&#039; を前置するだけでは不十分です。特に、[[Wikipedia:Redirection_(computing)|リダイレクション]]や[[Wikipedia:Command substitution|コマンド置換]]を使用する場合、ログインシェルを使用する必要があります。これは {{ic|sudo -iu &#039;&#039;user&#039;&#039;}} で簡単にアクセスできます（目的のユーザーが root である場合は {{ic|-u &#039;&#039;user&#039;&#039;}} を省略できます）。&lt;br /&gt;
&lt;br /&gt;
次の例では、コマンド置換はフルシェルで動作しますが、&#039;&#039;sudo&#039;&#039; を前置すると失敗します：&lt;br /&gt;
&lt;br /&gt;
{{hc|$ sudo wpa_supplicant -B -i &#039;&#039;interface&#039;&#039; -c &#039;&#039;&#039;&amp;lt;(&#039;&#039;&#039;wpa_passphrase &#039;&#039;MYSSID passphrase&#039;&#039;&#039;&#039;&#039;)&#039;&#039;&#039;|&lt;br /&gt;
Successfully initialized wpa_supplicant&lt;br /&gt;
Failed to open config file &#039;/dev/fd/63&#039;, error: No such file or directory&lt;br /&gt;
Failed to read or parse configuration &#039;/dev/fd/63&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== デフォルトのスケルトンファイル ===&lt;br /&gt;
&lt;br /&gt;
{{man|5|sudoers|SUDOERS OPTIONS}} は {{ic|/etc/sudoers}} ファイル内の {{ic|Defaults}} コマンドで使用できる全てのオプションをリストアップします。&lt;br /&gt;
&lt;br /&gt;
オプションのリスト (バージョン 1.8.7 のソースコードから解析されたもの) を {{ic|sudoers}} 用に最適化した形式で表示するには [https://gist.github.com/AladW/7eca9799b9ea624eca31] を参照してください。&lt;br /&gt;
&lt;br /&gt;
パスワードのタイムアウトの設定など、より詳しい情報は {{man|5|sudoers}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== 現在の設定を表示 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|sudo -ll}} を実行して現在の sudo 設定を表示してください。{{ic|sudo -lU &#039;&#039;user&#039;&#039;}} で指定したユーザーの sudo 設定も確認できます。&lt;br /&gt;
&lt;br /&gt;
=== visudo を使う ===&lt;br /&gt;
&lt;br /&gt;
sudo の設定ファイルは {{ic|/etc/sudoers}} です。このファイルは&#039;&#039;&#039;どんなときでも&#039;&#039;&#039; {{ic|visudo}} コマンドを使って編集するべきです。{{ic|visudo}} は {{ic|sudoers}} ファイルをロックし、一時ファイルに編集内容を保存して、それを {{ic|/etc/sudoers}} にコピーする前にファイルの構文をチェックします。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* {{ic|sudoers}} に構文エラーの危険性があるということは絶対避けなくてはいけません!どんなエラーでも sudo を使用不可能にしてしまいます。エラーを防ぐためにどんなときでも {{ic|visudo}} を使って編集するようにしてください。&lt;br /&gt;
* {{man|8|visudo}} は、ユーザーが選択したエディターのユーザー環境変数を尊重するように visudo を設定すると、その変数を別の値に設定するだけで、visudo 権限を持つユーザーがログを記録せずに root として任意のコマンドを実行できるようになるため、セキュリティ ホールになる可能性があると警告しています。}}&lt;br /&gt;
&lt;br /&gt;
visudo のデフォルトエディタは {{ic|vi}} です。core リポジトリの sudo はデフォルトで {{Ic|--with-env-editor}} を有効にしてコンパイルされており、{{Ic|VISUAL}} や {{Ic|EDITOR}} 変数を使用することができます。{{ic|VISUAL}} が設定されている場合 {{ic|EDITOR}} は使われません。&lt;br /&gt;
&lt;br /&gt;
現在のシェルセッションの間だけ &#039;&#039;&#039;visudo&#039;&#039;&#039; のエディタとして nano を使いたい場合、&#039;&#039;&#039;visudo&#039;&#039;&#039; を実行する前に {{Ic|EDITOR}} 変数を設定してください:&lt;br /&gt;
&lt;br /&gt;
 # EDITOR=nano visudo&lt;br /&gt;
&lt;br /&gt;
もしくは {{ic|/etc/sudoers}} ファイルのコピーを編集して {{ic|visudo -c -f &#039;&#039;/copy/of/sudoers&#039;&#039;}} でチェックすることもできます。visudo でファイルをロックしたくない場合に有用です。&lt;br /&gt;
&lt;br /&gt;
エディタを永久に変更するには、[[環境変数#ユーザーごと]]を参照してください。システム全体で &#039;&#039;visudo&#039;&#039; のみのエディタを永久に変更するには、以下を {{ic|/etc/sudoers}} に追加します（[[nano]] が好みのエディタであると仮定します）：&lt;br /&gt;
&lt;br /&gt;
 # デフォルトのエディタを nano の制限付きバージョンに設定し、visudo が EDITOR/VISUAL を使用しないようにする。&lt;br /&gt;
 Defaults      editor=/usr/bin/rnano, !env_editor&lt;br /&gt;
&lt;br /&gt;
=== エントリの例 ===&lt;br /&gt;
&lt;br /&gt;
ユーザー USER_NAME が {{ic|sudo}} を使った時に、完全な root 権限を与えたい場合は、次の行を加えて下さい:&lt;br /&gt;
&lt;br /&gt;
 USER_NAME   ALL=(ALL) ALL&lt;br /&gt;
&lt;br /&gt;
マシンのホストネームが HOST_NAME のときだけ、ユーザー USER_NAME に他のユーザーとしてコマンドを実行する権限を与えるには:&lt;br /&gt;
&lt;br /&gt;
 USER_NAME   HOST_NAME=(ALL) ALL&lt;br /&gt;
&lt;br /&gt;
{{ic|wheel}} グループに追加されている全てのユーザーが sudo を使えるようにするには:&lt;br /&gt;
&lt;br /&gt;
 %wheel      ALL=(ALL) ALL&lt;br /&gt;
&lt;br /&gt;
{{Tip|新しい管理者を作成する際、{{ic|wheel}} グループに sudo アクセスを有効にし、[[ユーザーとグループ#グループ管理|ユーザーを追加する]]ことが望ましいです。デフォルトでは、[[Polkit#Administrator identities|Polkit]] は {{ic|wheel}} グループのメンバーを管理者として扱うためです。ユーザーが {{ic|wheel}} のメンバーでない場合、Polkit を使用するソフトウェアはユーザーのパスワードではなく root のパスワードを使用して認証を求めることがあります。}}&lt;br /&gt;
&lt;br /&gt;
ユーザー {{ic|USER_NAME}} にパスワードを尋ねるのを無効化するには:&lt;br /&gt;
&lt;br /&gt;
{{Warning|これにより、ユーザー名で実行されている任意のプロセスが、許可を求めずに sudo を使用できるようになります。}}&lt;br /&gt;
&lt;br /&gt;
 Defaults:USER_NAME      !authenticate&lt;br /&gt;
&lt;br /&gt;
ホスト {{ic|HOST_NAME}} 上のユーザー {{ic|USER_NAME}} のみに対して明示的に定義されたコマンドを有効にするには：&lt;br /&gt;
&lt;br /&gt;
 USER_NAME HOST_NAME=/usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu&lt;br /&gt;
&lt;br /&gt;
{{note|後ろの行の設定が前の設定よりも優先されるので、細かくカスタマイズしたオプションはファイルの最後に置くべきです。特にユーザーがグループに含まれているときは上のような行は {{ic|%wheel}} 行の後にすべきです。}}&lt;br /&gt;
ユーザー USER_NAME が ホスト HOST_NAME を使っているときだけ特定のコマンドに sudo をパスワードなしで使えるようにするには:&lt;br /&gt;
&lt;br /&gt;
 USER_NAME HOST_NAME= NOPASSWD: /usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu&lt;br /&gt;
&lt;br /&gt;
説明のついた sudoers のサンプルは {{ic|/usr/share/doc/sudo/examples/sudoers}} にあります。詳しくは {{man|5|sudoers}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== Sudoers デフォルトファイルパーミッション ===&lt;br /&gt;
&lt;br /&gt;
sudoers ファイルの所有者とグループはゼロにしてください、つまり所有者が居てはいけません。ファイルパーミッションは 0440 に設定する必要があります。このパーミッションはデフォルトでセットされますが、パーミッションを変える事故を起こしてしまった場合、すぐにパーミッションを元に戻すか sudo を消して下さい。&lt;br /&gt;
&lt;br /&gt;
 # chown -c root:root /etc/sudoers&lt;br /&gt;
 # chmod -c 0440 /etc/sudoers&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== パスワードプロンプトのタイムアウトを無効にする ===&lt;br /&gt;
&lt;br /&gt;
よくある悩みは、通常のパーミッションで実行され、必要な時にのみ上昇するバックグラウンドターミナルで実行される長時間実行プロセスです。これにより sudo のパスワード入力が促され、気づかれずにタイムアウトし、その時点でプロセスが終了し、完了した作業は失われるか、せいぜいキャッシュされます。一般的なアドバイスは、パスワードなしの sudo を有効にするか、パスワードを記憶する sudo のタイムアウトを延長することです。これらはいずれもセキュリティに悪影響を及ぼします。 &#039;&#039;&#039;プロンプト&#039;&#039;&#039; タイムアウトを無効にすることもできますが、これは適切なセキュリティ上の目的を果たすものではありません、そこを理解して設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
 Defaults passwd_timeout=0&lt;br /&gt;
&lt;br /&gt;
=== Bash 補完 ===&lt;br /&gt;
&lt;br /&gt;
sudo コマンドで完全な Bash 補完機能を利用できるようにするには、{{Pkg|bash-completion}} パッケージをインストールしてください。&lt;br /&gt;
何らかの理由でこのパッケージをインストールできない場合、sudo コマンドの補完機能は限定的になりますが、代替手段として以下の内容を [[.bashrc]] に追加することで利用可能です:&lt;br /&gt;
&lt;br /&gt;
 complete -cf sudo&lt;br /&gt;
&lt;br /&gt;
=== エイリアスを渡す ===&lt;br /&gt;
&lt;br /&gt;
[[Zsh]] と [[Bash]] では、エイリアスは通常、コマンドの最初の単語に対してのみ展開されます。これは、{{ic|sudo}} コマンドを実行するときにエイリアスが通常展開されないことを意味します。次の単語を展開する方法の一つは、スペースで終わる sudo のエイリアスを作成することです。以下を[[コマンドラインシェル#設定ファイル|シェルの設定ファイル]]に追加します:&lt;br /&gt;
&lt;br /&gt;
 alias sudo=&#039;sudo &#039;&lt;br /&gt;
&lt;br /&gt;
{{man|1|zshmisc|ALIASING}} はこれがどのように機能するかを説明しています:&lt;br /&gt;
: 置換テキストがスペースで終わる場合、シェル入力の次の単語は常にエイリアス展開の対象になります。&lt;br /&gt;
&lt;br /&gt;
{{man|1|bash|ALIASES}} も同様に説明しています:&lt;br /&gt;
: エイリアス値の最後の文字が空白の場合、エイリアスの次のコマンド単語もエイリアス展開の対象としてチェックされます。&lt;br /&gt;
&lt;br /&gt;
=== パスワードプロンプトに端末ベルを鳴らす ===&lt;br /&gt;
&lt;br /&gt;
バックグラウンドの端末で sudo プロンプトに注意を引く為に、[[Wikipedia:Bell character|bell character]] を鳴らす方法もあります。&lt;br /&gt;
&lt;br /&gt;
 Defaults passprompt=&amp;quot;^G[sudo] password for %p: &amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|^G}} は文字通りベル文字です。 例えば。 [[vim]] で、シーケンスを使用して挿入 {{ic|Ctrl+v}} {{ic|Ctrl+g}} または [[Nano]] {{ic|alt+v}} {{ic|Ctrl+g}}&lt;br /&gt;
&lt;br /&gt;
もう一つのオプションとして、{{ic|SUDO_PROMPT}} [[環境変数]] を設定する方法があります。例えば、シェルの設定ファイルに以下を追加します:&lt;br /&gt;
&lt;br /&gt;
 export SUDO_PROMPT=$&#039;\a[sudo] please enter a password: &#039;&lt;br /&gt;
&lt;br /&gt;
=== ターミナルごとの sudo を無効化 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|以下を行うとすべてのプロセスがあなたの sudo セッションを使うようになります。}}&lt;br /&gt;
&lt;br /&gt;
新しいターミナルを開くたびにパスワードを入力するよう求められる sudo のデフォルト設定が煩わしい場合は、{{ic|timestamp_type}} を {{ic|global}} に設定します:&lt;br /&gt;
&lt;br /&gt;
 Defaults timestamp_type=global&lt;br /&gt;
&lt;br /&gt;
=== パスワードの入力回数を減らす ===&lt;br /&gt;
&lt;br /&gt;
5分ごとにパスワードを再入力するのが面倒な場合 (デフォルト)、 {{ic|timestamp_timeout}} に長い値を設定することで変更することができます。(単位:分)。&lt;br /&gt;
&lt;br /&gt;
 Defaults timestamp_timeout=10&lt;br /&gt;
&lt;br /&gt;
多くの sudo コマンドを連続して使用する場合、{{ic|timestamp_timeout}} を増やすよりも、sudo を使用するたびにタイムアウトを更新する方が論理的です。タイムアウトを更新するには、{{ic|sudo -v}} を使用します({{ic|sudo -K}} は即座に取り消します)。&lt;br /&gt;
&lt;br /&gt;
次の内容を[[環境変数#シェルの初期化ファイルを使う|シェル初期化ファイル]]に追加することで、自動化することができます:&lt;br /&gt;
&lt;br /&gt;
 alias sudo=&#039;sudo -v; sudo &#039;&lt;br /&gt;
&lt;br /&gt;
また、bash 関数を使用することも可能です。詳細は [https://unix.stackexchange.com/questions/584725/expand-certain-aliases-from-within-sudo-bash-function stackexchange] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 環境変数 ===&lt;br /&gt;
&lt;br /&gt;
環境変数をたくさん使っている場合や、{{ic|1=export http_proxy=&amp;quot;...&amp;quot;}} でプロクシー設定を export している場合、sudo を使うときに、sudo に {{ic|-E}} オプションを付けない限りこれらの環境変数が root アカウントに渡されません。&lt;br /&gt;
&lt;br /&gt;
 $ sudo -E pacman -Syu&lt;br /&gt;
&lt;br /&gt;
環境変数を維持するために {{ic|env_keep}} にそれら環境変数を追加するのを推奨します:&lt;br /&gt;
{{hc|/etc/sudoers|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Defaults env_keep += &amp;quot;ftp_proxy http_proxy https_proxy no_proxy&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Root パスワード ===&lt;br /&gt;
&lt;br /&gt;
ユーザーは、{{ic|/etc/sudoers}} の Defaults 行に {{ic|targetpw}}(ターゲットユーザー、デフォルトは root)または {{ic|rootpw}} を追加することで、ユーザーパスワードの代わりに root パスワードを尋ねるように sudo を設定できます:&lt;br /&gt;
&lt;br /&gt;
 Defaults targetpw&lt;br /&gt;
&lt;br /&gt;
root パスワードをユーザーに公開しないようにするためには、これを特定のグループに制限できます:&lt;br /&gt;
&lt;br /&gt;
 Defaults:%wheel targetpw&lt;br /&gt;
 %wheel ALL=(ALL) ALL&lt;br /&gt;
&lt;br /&gt;
=== root ログインを無効化 ===&lt;br /&gt;
&lt;br /&gt;
sudo をインストール・設定したら、root ログインを無効化できます。root を無効化すれば、攻撃者はユーザーのパスワードだけでなく sudoer として設定されたユーザー名もまず考えなくてはならなくなります。[[Secure Shell#root ログインを制限する]]も参照。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* ルートログインを無効にすることで、自分自身をロックアウトしてしまう可能性がありますのでご注意ください。Sudo は自動的にインストールされませんし、そのデフォルトの設定では、パスワードなしの root アクセスも、自分のパスワードによる root アクセスもできません。root アカウントを無効にする前に、ユーザが sudoer として適切に設定されている ことを確認してください!&lt;br /&gt;
* sudoers ファイルをデフォルトで rootpw を使用するように変更した場合、以下のコマンドで root ログインを無効化しないでください!&lt;br /&gt;
* すでにロックアウトされている場合は、[[パスワードリカバリ]] を参照してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
アカウントをロックするには {{ic|passwd}} を使います:&lt;br /&gt;
&lt;br /&gt;
 # passwd -l root&lt;br /&gt;
&lt;br /&gt;
同じようなコマンドで root をアンロックできます。&lt;br /&gt;
&lt;br /&gt;
 $ sudo passwd -u root&lt;br /&gt;
&lt;br /&gt;
もしくは、{{ic|/etc/shadow}} を編集して root の暗号化されたパスワードを &amp;quot;!&amp;quot; で置き換えてください:&lt;br /&gt;
&lt;br /&gt;
 root:!:12345::::::&lt;br /&gt;
&lt;br /&gt;
もう一度 root ログインを有効にするには:&lt;br /&gt;
&lt;br /&gt;
 $ sudo passwd root&lt;br /&gt;
&lt;br /&gt;
システム緊急時には、リカバリプロンプトが root パスワードを要求するため、リカバリシェルにログインすることができません。緊急時に自動的に root アカウントをアンロックするには、{{ic|rescue.service}} に [[ドロップインファイル]] を使用して {{ic|1=SYSTEMD_SULOGIN_FORCE=1}} 環境変数を追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/rescue.service.d/SYSTEMD_SULOGIN_FORCE.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=SYSTEMD_SULOGIN_FORCE=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|&#039;&#039;root&#039;&#039; アカウントを無効化した後もインタラクティブな root プロンプトを表示するには、{{ic|sudo -i}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
==== kdesu ====&lt;br /&gt;
&lt;br /&gt;
KDE では root 権限で GUI アプリケーションを起動するのに kdesu が使われることがあります。root アカウントが無効になっているときでもデフォルトで kdesu は su を使おうとします。幸いに、kdesu では su の代わりに sudo を使うようにすることができます。{{ic|~/.config/kdesurc}} (kde4 の場合は {{ic|~/.kde4/share/config/kdesurc}}) ファイルを作成・編集してください:&lt;br /&gt;
&lt;br /&gt;
 [super-user-command]&lt;br /&gt;
 super-user-command=sudo&lt;br /&gt;
&lt;br /&gt;
もしくは以下のコマンドを使用 (kde4 の場合は &#039;&#039;kwriteconfig&#039;&#039; を使用):&lt;br /&gt;
&lt;br /&gt;
 $ kwriteconfig5 --file kdesurc --group super-user-command --key super-user-command sudo&lt;br /&gt;
&lt;br /&gt;
=== sudoでハード化する例 ===&lt;br /&gt;
&lt;br /&gt;
例えば、admin, devel, joe の3人のユーザーを作ったとします。&#039;&#039;admin&#039;&#039; は journalctl, systemctl, mount, kill, iptables に、&#039;&#039;devel&#039;&#039; はパッケージのインストールや設定ファイルの編集に、そして &#039;&#039;joe&#039;&#039; はログインするユーザにそれぞれ使用します。&#039;&#039;joe&amp;quot; にリブート、シャットダウン、netctl を使わせるためには、以下のようにします。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/pam.d/su}} と {{ic|/etc/pam.d/su-l}} を編集してください。&lt;br /&gt;
ユーザが wheel グループに属していることを要求するが、誰もその中に入れないようにする。&lt;br /&gt;
 #%PAM-1.0&lt;br /&gt;
 auth            sufficient      pam_rootok.so&lt;br /&gt;
 # Uncomment the following line to implicitly trust users in the &amp;quot;wheel&amp;quot; group.&lt;br /&gt;
 #auth           sufficient      pam_wheel.so trust use_uid&lt;br /&gt;
 # Uncomment the following line to require a user to be in the &amp;quot;wheel&amp;quot; group.&lt;br /&gt;
 auth            required        pam_wheel.so use_uid&lt;br /&gt;
 auth            required        pam_unix.so&lt;br /&gt;
 account         required        pam_unix.so&lt;br /&gt;
 session         required        pam_unix.so&lt;br /&gt;
&lt;br /&gt;
SSH ログインを &#039;ssh&#039; グループに制限します。&#039;&#039;joe&#039;&#039; だけがこのグループの一員になります。&lt;br /&gt;
 groupadd -r ssh&lt;br /&gt;
 gpasswd -a joe ssh&lt;br /&gt;
 echo &#039;AllowGroups ssh&#039; &amp;gt;&amp;gt; /etc/ssh/sshd_config&lt;br /&gt;
&lt;br /&gt;
[[リスタート]] {{ic|sshd.service}}.&lt;br /&gt;
&lt;br /&gt;
ユーザーを他のグループに追加する。&lt;br /&gt;
 for g in power network ;do ;gpasswd -a joe $g ;done&lt;br /&gt;
 for g in network power storage ;do ;gpasswd -a admin $g ;done&lt;br /&gt;
&lt;br /&gt;
デベロッパーが編集できるように、コンフィグにパーミッションを設定します。&lt;br /&gt;
 chown -R devel:root /etc/{http,openvpn,cups,zsh,vim,screenrc}&lt;br /&gt;
&lt;br /&gt;
 Cmnd_Alias  POWER       =   /usr/bin/shutdown -h now, /usr/bin/halt, /usr/bin/poweroff, /usr/bin/reboot&lt;br /&gt;
 Cmnd_Alias  STORAGE     =   /usr/bin/mount -o nosuid\,nodev\,noexec, /usr/bin/umount&lt;br /&gt;
 Cmnd_Alias  SYSTEMD     =   /usr/bin/journalctl, /usr/bin/systemctl&lt;br /&gt;
 Cmnd_Alias  KILL        =   /usr/bin/kill, /usr/bin/killall&lt;br /&gt;
 Cmnd_Alias  PKGMAN      =   /usr/bin/pacman&lt;br /&gt;
 Cmnd_Alias  NETWORK     =   /usr/bin/netctl&lt;br /&gt;
 Cmnd_Alias  FIREWALL    =   /usr/bin/iptables, /usr/bin/ip6tables&lt;br /&gt;
 Cmnd_Alias  SHELL       =   /usr/bin/zsh, /usr/bin/bash&lt;br /&gt;
 %power      ALL         =   (root)  NOPASSWD: POWER&lt;br /&gt;
 %network    ALL         =   (root)  NETWORK&lt;br /&gt;
 %storage    ALL         =   (root)  STORAGE&lt;br /&gt;
 root        ALL         =   (ALL)   ALL&lt;br /&gt;
 admin       ALL         =   (root)  SYSTEMD, KILL, FIREWALL&lt;br /&gt;
 devel	    ALL         =   (root)  PKGMAN&lt;br /&gt;
 joe	    ALL         =   (devel) SHELL, (admin) SHELL &lt;br /&gt;
&lt;br /&gt;
この設定により、root ユーザーでのログインはほとんど必要なくなります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;joe&#039;&#039; は自宅の WiFi に接続できます。&lt;br /&gt;
 sudo netctl start home&lt;br /&gt;
 sudo poweroff&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;joe&#039;&#039; は、他のユーザーとして netctl を使用できません。&lt;br /&gt;
 sudo -u admin -- netctl start home&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;joe&#039;&#039; が journalctl を使ったり、逃亡したプロセスを kill したりする必要があるとき、そのユーザーに切り替えることができます。&lt;br /&gt;
 sudo -i -u devel&lt;br /&gt;
 sudo -i -u admin&lt;br /&gt;
&lt;br /&gt;
しかし、&#039;&#039;joe&#039;&#039; は root ユーザーに切り替えることはできません。&lt;br /&gt;
 sudo -i -u root&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;joe&#039;&#039; が管理者として gnu-screen のセッションを開始したい場合は、次のようにします。&lt;br /&gt;
 sudo -i -u admin&lt;br /&gt;
 admin% chown admin:tty `echo $TTY`&lt;br /&gt;
 admin% screen&lt;br /&gt;
&lt;br /&gt;
=== /etc/sudoers.d のドロップインファイルを使って sudo を設定 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sudo&#039;&#039; は {{ic|/etc/sudoers.d/}} ディレクトリ内のファイルを読み込みます。{{ic|/etc/sudoers}} を編集するかわりに、{{ic|/etc/sudoers.d/}} ディレクトリのファイルで設定を変更することができます。これには2つのメリットがあります:&lt;br /&gt;
* {{ic|sudoers.pacnew}} ファイルを編集する必要がありません。&lt;br /&gt;
* 新しいエントリに問題があった場合、{{ic|/etc/sudoers}} を編集するのではなく問題のあるファイルを削除するだけですみます。&lt;br /&gt;
&lt;br /&gt;
ドロップインファイルのエントリの形式は {{ic|/etc/sudoers}} 自体と同じです。直接編集するときは、{{ic|visudo -f /etc/sudoers.d/&#039;&#039;somefile&#039;&#039;}} を使ってください。詳しくは {{man|5|sudoers}} の &amp;quot;Including other files from within sudoers&amp;quot; セクションを参照。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/sudoers.d/}} ディレクトリのファイルは辞書順に読み込まれます。ファイル名に {{ic|.}} または {{ic|~}} が含まれているとスキップされます。ソート順で問題が起こらないように、ファイル名には2桁の数字を付けてください。例: {{ic|01_foo}}。&lt;br /&gt;
&lt;br /&gt;
{{Note|ドロップインファイルのエントリの順番は重要です: 間違って上書きしてしまわないように注意してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|/etc/sudoers.d/}} のファイルは {{ic|/etc/sudoers}} と同じように注意して扱う必要があります: フォーマットを間違えてしまうと {{ic|sudo}} が機能不全に陥ります。{{ic|visudo}} を使うことを強く推奨します。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルの編集 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|sudo -e}} または {{ic|sudoedit}} を使うことで、ファイルを他のユーザーとして編集することができます。テキストエディタを動かすユーザーは変わりません。&lt;br /&gt;
&lt;br /&gt;
テキストエディタの権限を昇格させることなく root でファイルを編集することが可能です。詳しくは {{man|8|sudo|e}} を読んでください。&lt;br /&gt;
&lt;br /&gt;
エディタは他のプログラムに設定できます。例えば {{Pkg|meld}} を使って [[Pacnew と Pacsave ファイル|pacnew]] ファイルを管理する場合:&lt;br /&gt;
&lt;br /&gt;
 $ SUDO_EDITOR=meld sudo -e /etc/&#039;&#039;file&#039;&#039;{,.pacnew&#039;&#039;}&lt;br /&gt;
&lt;br /&gt;
=== 侮辱を有効にする ===&lt;br /&gt;
&lt;br /&gt;
visudo を使用して sudoers ファイルに次の行を追加することにより、sudo でイースターエッグ (侮辱) することができます。&lt;br /&gt;
&lt;br /&gt;
不正なパスワードを入力すると、{{ic|Sorry, try again.}} のメッセージがユーモラスな侮辱に置き換えられます。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/sudoers|2=&lt;br /&gt;
Defaults insults&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== パスワード入力のフィードバックを有効にする ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、パスワードを入力する際に視覚的なフィードバックはありません。これは、セキュリティを高めるために意図的に行われています。しかし、視覚的な入力が必要な場合は、この行を追加することで有効にすることができます: &lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sudoers|2=&lt;br /&gt;
Defaults pwfeedback&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== カラーパスワードプロンプト ===&lt;br /&gt;
&lt;br /&gt;
パスワードプロンプトをカラーや太字フォントでカスタマイズするには、シェル初期化ファイルに {{ic|SUDO_PROMPT}} [[環境変数]] を設定し、{{man|1|tput}} を使用します。&lt;br /&gt;
&lt;br /&gt;
例えば、パスワードプロンプトを太字の赤で表示するには、以下のように設定します:&lt;br /&gt;
&lt;br /&gt;
 export SUDO_PROMPT=&amp;quot;$(tput setaf 1 bold)Password:$(tput sgr0) &amp;quot;&lt;br /&gt;
&lt;br /&gt;
また、デフォルトメッセージに異なる色を使用するには、以下のようにします:&lt;br /&gt;
&lt;br /&gt;
 export SUDO_PROMPT=&amp;quot;$(tput setab 1 setaf 7 bold)[sudo]$(tput sgr0) $(tput setaf 6)password for$(tput sgr0) $(tput setaf 5)%p$(tput sgr0): &amp;quot;&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;
|+ tput コマンドラインオプション チートシート&lt;br /&gt;
|-&lt;br /&gt;
! tput コマンド !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|tput bold}} || 太字テキスト&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|tput setaf [CODE]}} || 前景色を設定&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|tput setab [CODE]}} || 背景色を設定&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|tput rev}} || 色を反転&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|tput sgr0}} || すべてをリセット&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| &amp;amp;nbsp;&amp;amp;nbsp; || &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ tput カラーコード&lt;br /&gt;
|-&lt;br /&gt;
! tput カラー [CODE] !! 色&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 黒&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 赤&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 緑&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 黄&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 青&lt;br /&gt;
|-&lt;br /&gt;
| 5 || マゼンタ&lt;br /&gt;
|-&lt;br /&gt;
| 6 || シアン&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 白&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== U2F の使用 ===&lt;br /&gt;
&lt;br /&gt;
U2F は sudo と一緒に使用するのに最適です。これは、公共の場所での[[Wikipedia:Shoulder surfing (computer security)|ショルダーハック]]のリスクを効果的に排除しながら、シンプルな物理的なタッチでプロンプトを承認する意識的なコントロールを与えてくれます。&lt;br /&gt;
&lt;br /&gt;
[[Universal 2nd Factor#パスワードなしの sudo]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 保護されたファイルへの書き込み ===&lt;br /&gt;
&lt;br /&gt;
sudo を使用する際、保護されたファイルに書き込みたい場合、[[tee]] を使うことで、このような分離が可能になります:&lt;br /&gt;
&lt;br /&gt;
 $ &#039;&#039;input stream&#039;&#039; | sudo tee &#039;&#039;--option&#039;&#039; &#039;&#039;protected_file_1 protected_file_2...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これは、単純な {{ic|&amp;gt;}}/{{ic|&amp;gt;&amp;gt;}} が機能しない場合に有効です。&lt;br /&gt;
&lt;br /&gt;
==== Vim の場合 ====&lt;br /&gt;
&lt;br /&gt;
他のユーザーが所有するファイルを編集している際、sudo 付きで [[Vim]] を起動するのを忘れた場合にも、同様の方法が役立ちます。&lt;br /&gt;
そのようなときには、[[Vim]] 内部で以下を実行することでファイルを保存できます:&lt;br /&gt;
&lt;br /&gt;
 :w !sudo tee %&lt;br /&gt;
&lt;br /&gt;
この操作を簡単に使えるように、以下を {{ic|~/.vimrc}} に追加すると、コマンドモードで {{ic|:w!!}} によるマッピングが使えるようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.vimrc|2=&lt;br /&gt;
 &amp;quot; Allow saving of files as sudo when I forgot to start vim using sudo&lt;br /&gt;
 cmap w!! w !sudo tee &amp;gt; /dev/null %&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;gt; /dev/null}} の部分は、標準出力を明示的に破棄するためのもので、他のパイプコマンドに何も渡す必要がないためです。&lt;br /&gt;
&lt;br /&gt;
この仕組みがどのように動作し、なぜ機能するのかについての詳細な説明は、StackOverflow の記事&lt;br /&gt;
[https://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work How does the vim “write with sudo” trick work?] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== SSH TTY 問題 ===&lt;br /&gt;
&lt;br /&gt;
リモートコマンドを実行するとき SSH はデフォルトでは tty を割り当てません。tty がないと、パスワードを要求するときに sudo は echo を無効化することができません。ssh の {{ic|-tt}} オプションを使うことで強制的に tty を割り当てることができます ({{ic|-tt}} を2回使ってください)。&lt;br /&gt;
&lt;br /&gt;
{{ic|Defaults}} オプションの {{ic|requiretty}} は tty が存在するときだけ sudo を実行することを許可します。&lt;br /&gt;
&lt;br /&gt;
 # Disable &amp;quot;ssh hostname sudo &amp;lt;cmd&amp;gt;&amp;quot;, because it will show the password in clear text. You have to run &amp;quot;ssh -t hostname sudo &amp;lt;cmd&amp;gt;&amp;quot;.&lt;br /&gt;
 #&lt;br /&gt;
 #Defaults    requiretty&lt;br /&gt;
&lt;br /&gt;
=== Permissive Umask ===&lt;br /&gt;
&lt;br /&gt;
Sudo はユーザーの [[umask]] の値を sudo の umask (デフォルトは 0022) と結合します。これによってユーザーの umask が許可している以上のパーミッションでファイルを作成できないようにしています。umask をカスタマイズしていない場合はデフォルトで問題ありませんが、sudo によって実行されたユーティリティが作成したファイルのパーミッションが root で直接実行した場合と異なってしまう可能性があります。エラーが発生する場合、たとえユーザーが指定した umask よりもパーミッションを甘くしたいときでも、sudo には umask を修正する手段があります。以下を追加 ({{ic|visudo}} を使用) することで sudo のデフォルトの挙動が上書きされます:&lt;br /&gt;
&lt;br /&gt;
 Defaults umask = 0022&lt;br /&gt;
 Defaults umask_override&lt;br /&gt;
&lt;br /&gt;
sudo の umask が root のデフォルト umask (0022) に設定されデフォルトの挙動が上書きされます。ユーザーによって設定された umask を無視して指定された umask を常時使うようになります。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Sudo|2024-07-31|811791}}&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Doas&amp;diff=40255</id>
		<title>Doas</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Doas&amp;diff=40255"/>
		<updated>2025-05-06T18:09:52Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* 使用方法 */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:セキュリティ]]&lt;br /&gt;
[[Category:コマンド]]&lt;br /&gt;
[[en:doas]]&lt;br /&gt;
[[ru:doas]]&lt;br /&gt;
[[zh-hans:Doas]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ユーザーとグループ}}&lt;br /&gt;
{{Related|sudo}}&lt;br /&gt;
{{Related|アプリケーション一覧/セキュリティ#管理者権限}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
OpenDoas は OpenBSD の [[Wikipedia:doas|doas]] コマンドの移植版です。[[sudo]] と比べてサイズがかなり小さいことで知られています。&#039;&#039;sudo&#039;&#039; と同じように、&#039;&#039;doas&#039;&#039; はシステム上の他のユーザーとして実行したいときに使います。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|opendoas}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
非特権ユーザーで &#039;&#039;doas&#039;&#039; を使い始めるには、設定が必要です。[[#設定]]を見てください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;doas&#039;&#039; を使う時はコマンドとその引数の前に {{ic|doas}} とスペースを追加します:&lt;br /&gt;
&lt;br /&gt;
 $ doas &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
例えば [[pacman]] を使う場合:&lt;br /&gt;
&lt;br /&gt;
 $ doas pacman -Syu&lt;br /&gt;
&lt;br /&gt;
別のユーザーとして対話型シェルに入るには({{ic|-u &#039;&#039;user&#039;&#039;}} を省略すると、デフォルトで root になります):&lt;br /&gt;
&lt;br /&gt;
 $ doas -su &#039;&#039;user&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
一部のコマンドを実行するには、別のユーザーとしてログインする必要があります。詳しくは [[Sudo#ログインシェル]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
詳細については、 {{man|1|doas}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
[[PAM]] モジュールはインストールされますが、デフォルトの設定やサンプルは含まれていません。&lt;br /&gt;
&lt;br /&gt;
[[ユーザーとグループ#ユーザーグループ|wheel]] グループのメンバーに他のユーザーとしてコマンドの実行を許可するには、以下の内容の設定ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/doas.conf|&lt;br /&gt;
permit setenv {{{{ic|PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin}}}} :wheel&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 設定ファイルは改行で終わる必要があります。&lt;br /&gt;
* {{ic|setenv}} オプションは、OpenDoas の BSD 由来の [https://github.com/Duncaen/OpenDoas/issues/117 問題] を回避します。Linux では、{{ic|/usr/local/bin}} は一般的に実行可能ファイルを上書きするために使われるので、パッケージの実行可能ファイルを含む {{ic|/usr/bin}} の前に置かれます&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/doas.conf}} の所有者および所有グループは {{ic|0}} に、ファイルのパーミッションは {{ic|0400}} に設定してください:&lt;br /&gt;
&lt;br /&gt;
 # chown -c root:root /etc/doas.conf&lt;br /&gt;
 # chmod -c 0400 /etc/doas.conf&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/doas.conf}} の構文エラーをチェックするには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # doas -C /etc/doas.conf &amp;amp;&amp;amp; echo &amp;quot;config ok&amp;quot; || echo &amp;quot;config error&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|/etc/doas.conf}} に構文エラーが含まれないように必ずチェックしてください。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|plugdev}} グループのメンバーが root ユーザーとして [[S.M.A.R.T.#smartctl|smartctl]] をパスワードなしで実行できるようにするには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/doas.conf|&lt;br /&gt;
permit nopass :plugdev as root cmd /usr/bin/smartctl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/doas.conf}} の基本構文は以下のとおりです:&lt;br /&gt;
&lt;br /&gt;
 permit|deny [options] identity [as target] [cmd command [args ...]]&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|5|doas.conf}} を読んでください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== doas の persist 機能 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;doas&#039;&#039; には永続機能があります: ユーザーが認証成功した後、しばらくはパスワードを要求しなくなります。デフォルトでは無効になっているので、{{ic|persist}} オプションで有効にしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/doas.conf|2=&lt;br /&gt;
permit &#039;&#039;&#039;persist&#039;&#039;&#039; setenv {PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin} :wheel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|doas -L}} を実行すると、自動的なタイムアウト前に保存されていた認証情報がクリアされます。&lt;br /&gt;
&lt;br /&gt;
{{Note|永続的機能はデフォルトで無効になっています。これは潜在的に危険であるためです。元の &#039;&#039;doas&#039;&#039; では、カーネル API を使ってタイムアウトの設定と解除を行っています。この API は OpenBSD 特有のもので、他のオペレーティングシステムには同様の API が存在しません。そのため、代替手段として、&#039;&#039;sudo&#039;&#039; と同様にタイムスタンプファイルを使って永続機能が実装されています。}}&lt;br /&gt;
&lt;br /&gt;
=== sudo から doas への移行 ===&lt;br /&gt;
&lt;br /&gt;
後方互換を保ちつつ &#039;&#039;sudo&#039;&#039; から &#039;&#039;doas&#039;&#039; にスムーズに移行するために、以下の設定を追加すると良いかもしれません:&lt;br /&gt;
&lt;br /&gt;
 alias sudo=&#039;doas&#039;&lt;br /&gt;
 alias sudoedit=&#039;doas rnano&#039;&lt;br /&gt;
&lt;br /&gt;
または、代わりに、&#039;&#039;sudo&#039;&#039; を &#039;&#039;doas&#039;&#039; へのシンボリックリンクにします。(ただし {{ic|sudoedit}} コマンドは提供されません):&lt;br /&gt;
&lt;br /&gt;
 # ln -s $(which doas) /usr/bin/sudo&lt;br /&gt;
&lt;br /&gt;
もう1つの方法は、いくつかの sudo オプションをエミュレートする {{AUR|doas-sudo-shim}} をインストールすることです。&lt;br /&gt;
&lt;br /&gt;
{{Note|デフォルトでは、&#039;&#039;sudo&#039;&#039; はいくつかの環境変数を保持しますが、&#039;&#039;doas&#039;&#039; は保持しません。特に XAUTHORITY、LANG、LC_ALL は保持しません。これは、X でグラフィカルなアプリケーションを起動したり、 ユーザーのロケールにアクセスしたりすることが、さらなる設定なしではできないことを意味します。例えば、&#039;&#039;wheel&#039;&#039; グループのメンバーがグラフィカルなアプリケーションを実行したり、setenv オプションを使用してユーザーのロケールにアクセスできるようにするには、次のようにします。&lt;br /&gt;
{{hc|/etc/doas.conf|&lt;br /&gt;
permit setenv { XAUTHORITY LANG LC_ALL } :wheel&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Bash タブ補完 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、bash はカレントまたは参照ディレクトリ内のファイルとディレクトリのみをタブで補完します。引数を別のコマンドのように補完するようにするには(他のコマンドのタブ補完の設定も利用する)、次のようにユーザの {{ic|.bashrc}} またはグローバルの {{ic|/etc/bash.bashrc}} に追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bashrc|&lt;br /&gt;
complete -cf doas&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bash-completion}} がインストールされている場合は、以下を使用して、ターゲットコマンドの追加補完を可能にすることもできます。&lt;br /&gt;
{{hc|~/.bashrc|&lt;br /&gt;
complete -F _command doas&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|doas|2025-05-07|736536}}&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Doas&amp;diff=40254</id>
		<title>Doas</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Doas&amp;diff=40254"/>
		<updated>2025-05-06T18:05:41Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* ヒントとテクニック */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:セキュリティ]]&lt;br /&gt;
[[Category:コマンド]]&lt;br /&gt;
[[en:doas]]&lt;br /&gt;
[[ru:doas]]&lt;br /&gt;
[[zh-hans:Doas]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ユーザーとグループ}}&lt;br /&gt;
{{Related|sudo}}&lt;br /&gt;
{{Related|アプリケーション一覧/セキュリティ#管理者権限}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
OpenDoas は OpenBSD の [[Wikipedia:doas|doas]] コマンドの移植版です。[[sudo]] と比べてサイズがかなり小さいことで知られています。&#039;&#039;sudo&#039;&#039; と同じように、&#039;&#039;doas&#039;&#039; はシステム上の他のユーザーとして実行したいときに使います。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|opendoas}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
非特権ユーザーで &#039;&#039;doas&#039;&#039; を使い始めるには、設定が必要です。[[#設定]]を見てください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;doas&#039;&#039; を使う時はコマンドとその引数の前に {{ic|doas}} とスペースを追加します:&lt;br /&gt;
&lt;br /&gt;
 $ doas &#039;&#039;cmd&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
例えば [[pacman]] を使う場合:&lt;br /&gt;
&lt;br /&gt;
 $ doas pacman -Syu&lt;br /&gt;
&lt;br /&gt;
root のインタラクティブシェルを開くには:&lt;br /&gt;
&lt;br /&gt;
 $ doas -s&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|1|doas}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
[[PAM]] モジュールはインストールされますが、デフォルトの設定やサンプルは含まれていません。&lt;br /&gt;
&lt;br /&gt;
[[ユーザーとグループ#ユーザーグループ|wheel]] グループのメンバーに他のユーザーとしてコマンドの実行を許可するには、以下の内容の設定ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/doas.conf|&lt;br /&gt;
permit setenv {{{{ic|PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin}}}} :wheel&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 設定ファイルは改行で終わる必要があります。&lt;br /&gt;
* {{ic|setenv}} オプションは、OpenDoas の BSD 由来の [https://github.com/Duncaen/OpenDoas/issues/117 問題] を回避します。Linux では、{{ic|/usr/local/bin}} は一般的に実行可能ファイルを上書きするために使われるので、パッケージの実行可能ファイルを含む {{ic|/usr/bin}} の前に置かれます&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/doas.conf}} の所有者および所有グループは {{ic|0}} に、ファイルのパーミッションは {{ic|0400}} に設定してください:&lt;br /&gt;
&lt;br /&gt;
 # chown -c root:root /etc/doas.conf&lt;br /&gt;
 # chmod -c 0400 /etc/doas.conf&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/doas.conf}} の構文エラーをチェックするには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # doas -C /etc/doas.conf &amp;amp;&amp;amp; echo &amp;quot;config ok&amp;quot; || echo &amp;quot;config error&amp;quot; &lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|/etc/doas.conf}} に構文エラーが含まれないように必ずチェックしてください。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|plugdev}} グループのメンバーが root ユーザーとして [[S.M.A.R.T.#smartctl|smartctl]] をパスワードなしで実行できるようにするには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/doas.conf|&lt;br /&gt;
permit nopass :plugdev as root cmd /usr/bin/smartctl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/doas.conf}} の基本構文は以下のとおりです:&lt;br /&gt;
&lt;br /&gt;
 permit|deny [options] identity [as target] [cmd command [args ...]]&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|5|doas.conf}} を読んでください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== doas の persist 機能 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;doas&#039;&#039; には永続機能があります: ユーザーが認証成功した後、しばらくはパスワードを要求しなくなります。デフォルトでは無効になっているので、{{ic|persist}} オプションで有効にしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/doas.conf|2=&lt;br /&gt;
permit &#039;&#039;&#039;persist&#039;&#039;&#039; setenv {PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin} :wheel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|doas -L}} を実行すると、自動的なタイムアウト前に保存されていた認証情報がクリアされます。&lt;br /&gt;
&lt;br /&gt;
{{Note|永続的機能はデフォルトで無効になっています。これは潜在的に危険であるためです。元の &#039;&#039;doas&#039;&#039; では、カーネル API を使ってタイムアウトの設定と解除を行っています。この API は OpenBSD 特有のもので、他のオペレーティングシステムには同様の API が存在しません。そのため、代替手段として、&#039;&#039;sudo&#039;&#039; と同様にタイムスタンプファイルを使って永続機能が実装されています。}}&lt;br /&gt;
&lt;br /&gt;
=== sudo から doas への移行 ===&lt;br /&gt;
&lt;br /&gt;
後方互換を保ちつつ &#039;&#039;sudo&#039;&#039; から &#039;&#039;doas&#039;&#039; にスムーズに移行するために、以下の設定を追加すると良いかもしれません:&lt;br /&gt;
&lt;br /&gt;
 alias sudo=&#039;doas&#039;&lt;br /&gt;
 alias sudoedit=&#039;doas rnano&#039;&lt;br /&gt;
&lt;br /&gt;
または、代わりに、&#039;&#039;sudo&#039;&#039; を &#039;&#039;doas&#039;&#039; へのシンボリックリンクにします。(ただし {{ic|sudoedit}} コマンドは提供されません):&lt;br /&gt;
&lt;br /&gt;
 # ln -s $(which doas) /usr/bin/sudo&lt;br /&gt;
&lt;br /&gt;
もう1つの方法は、いくつかの sudo オプションをエミュレートする {{AUR|doas-sudo-shim}} をインストールすることです。&lt;br /&gt;
&lt;br /&gt;
{{Note|デフォルトでは、&#039;&#039;sudo&#039;&#039; はいくつかの環境変数を保持しますが、&#039;&#039;doas&#039;&#039; は保持しません。特に XAUTHORITY、LANG、LC_ALL は保持しません。これは、X でグラフィカルなアプリケーションを起動したり、 ユーザーのロケールにアクセスしたりすることが、さらなる設定なしではできないことを意味します。例えば、&#039;&#039;wheel&#039;&#039; グループのメンバーがグラフィカルなアプリケーションを実行したり、setenv オプションを使用してユーザーのロケールにアクセスできるようにするには、次のようにします。&lt;br /&gt;
{{hc|/etc/doas.conf|&lt;br /&gt;
permit setenv { XAUTHORITY LANG LC_ALL } :wheel&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Bash タブ補完 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、bash はカレントまたは参照ディレクトリ内のファイルとディレクトリのみをタブで補完します。引数を別のコマンドのように補完するようにするには(他のコマンドのタブ補完の設定も利用する)、次のようにユーザの {{ic|.bashrc}} またはグローバルの {{ic|/etc/bash.bashrc}} に追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bashrc|&lt;br /&gt;
complete -cf doas&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bash-completion}} がインストールされている場合は、以下を使用して、ターゲットコマンドの追加補完を可能にすることもできます。&lt;br /&gt;
{{hc|~/.bashrc|&lt;br /&gt;
complete -F _command doas&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|doas|2025-05-07|736536}}&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Tar_%E3%81%AB%E3%82%88%E3%82%8B%E3%83%95%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97&amp;diff=40243</id>
		<title>Tar によるフルシステムバックアップ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Tar_%E3%81%AB%E3%82%88%E3%82%8B%E3%83%95%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97&amp;diff=40243"/>
		<updated>2025-05-03T08:52:28Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* 並列圧縮でバックアップ */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:バックアップ]]&lt;br /&gt;
[[en:Full System Backup with tar]]&lt;br /&gt;
[[es:Full System Backup with tar]]&lt;br /&gt;
[[zh-hans:Full system backup with tar]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|システムバックアップ}}&lt;br /&gt;
{{Related|SquashFS によるフルシステムバックアップ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
この記事では [[tar]] を使ってフルシステムバックアップを行う方法を説明します。&lt;br /&gt;
&lt;br /&gt;
tar を使ったバックアップには、ディスク領域の節約に役立つ圧縮機能があることや、簡単にできるという利点があります。基本的な手順は以下のようになります:&lt;br /&gt;
 &lt;br /&gt;
# LiveCD から起動&lt;br /&gt;
# Linux 環境に [[Change Root]]&lt;br /&gt;
# パーティションやドライブをマウント&lt;br /&gt;
# 除外リストを追加&lt;br /&gt;
# バックアップスクリプトを使ってバックアップ&lt;br /&gt;
&lt;br /&gt;
全てのファイルシステムが LVM ボリューム上にある場合、[[LVM#スナップショット|LVM のスナップショット]]を使うことでバックアップによってシステムが使えなくなる時間を最小限に留めることができます。&lt;br /&gt;
&lt;br /&gt;
== LiveCD を起動 ==&lt;br /&gt;
&lt;br /&gt;
多くの Linux ブータブル CD、USB には、root をインストール先へ変更できる機能があります。バックアップを行うためにルートを変更する必要はありませんが、スクリプトを一時ドライブに転送したり、ファイルシステム上で見つけたりする必要がなく、スクリプトを実行するだけで済みます。Live メディアは、現在 Linux インストールされているものと同じアーキテクチャ (i686 または x86_64) である必要があります。&lt;br /&gt;
&lt;br /&gt;
== Change Root ==&lt;br /&gt;
&lt;br /&gt;
まずは現在の Linux 環境にスクリプト環境をセットアップしてください。通常のプログラムと同じようにスクリプトを実行できるようにします。詳しくは [http://linuxtidbits.wordpress.com/2009/12/03/setting-up-a-scripting-environment/ こちらの記事] を読んでください。次に Change Root を実行します。詳しくは [[Change Root]] の記事を読んでください。Change Root を行うときに一時的なファイルシステム ({{ic|/proc}}, {{ic|/sys}}, {{ic|/dev}}) をマウントする必要はありません。起動時に作成されているファイルシステムをバックアップしてしまうと通常の作成プロセスと干渉する可能性があります。Change Root を行うには Linux がインストールされているルートパーティションをマウントしてください。例:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /mnt/arch&lt;br /&gt;
 # mount /dev/&amp;lt;your-partition-or-drive&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Ic|fdisk -l}} でパーティションやドライブを確認できます。その後に [[chroot]] を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # cd /mnt/arch&lt;br /&gt;
 # chroot . /bin/bash&lt;br /&gt;
&lt;br /&gt;
{{Warning|ターゲットシステムに chroot するために {{ic|arch-chroot}} を使用しないでください。一時ファイルシステム、すべてのシステムメモリ、その他の興味深いものをバックアップしようとするため、バックアッププロセスは失敗します。代わりにプレーンな {{ic|chroot}} を使用してください。}}&lt;br /&gt;
&lt;br /&gt;
この例では bash を使用していますが、利用可能な場合は他のシェルを使用することもできます。これで、スクリプト環境に入ります (これは、入力時に {{ic|~/.bashrc}} をソースしていることが前提です。)&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bash_profile|&lt;br /&gt;
# If using bash, source the local .bashrc&lt;br /&gt;
source ~/.bashrc&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 他のパーティションのマウント ==&lt;br /&gt;
&lt;br /&gt;
使用しているパーティション (例: {{ic|/home}} パーティション) は適切な場所にマウントする必要があります。&lt;br /&gt;
&lt;br /&gt;
== 除外ファイルリスト ==&lt;br /&gt;
&lt;br /&gt;
{{Ic|tar}} には指定されたファイルやディレクトリを無視する機能があります。1行ごとに指定してください。正規表現も使えます。例:&lt;br /&gt;
&lt;br /&gt;
 # Not old backups                                                               &lt;br /&gt;
 /opt/backup/arch-full*                                                                   &lt;br /&gt;
                                                                                &lt;br /&gt;
 # Not temporary files                                                           &lt;br /&gt;
 /tmp/*&lt;br /&gt;
 &lt;br /&gt;
 # Not the cache for pacman&lt;br /&gt;
 /var/cache/pacman/pkg/&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
== バックアップスクリプト ==&lt;br /&gt;
&lt;br /&gt;
{{ic|bsdtar}} でバックアップを取るのは簡単なプロセスです。ここでは、それを行うことができる基本的なスクリプトを紹介し、いくつかのチェックを提供します。このスクリプトを修正して、バックアップの場所と除外ファイル (ある場合) を定義し、{{ic|chroot}} してすべてのパーティションをマウントした後にこのコマンドを実行する必要があります。[https://bbs.archlinux.org/viewtopic.php?id=146269 GNU tar を {{ic|--xattrs}} で実行しても拡張属性は保存されない] ことに注意してください。&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# full system backup&lt;br /&gt;
&lt;br /&gt;
# Backup destination&lt;br /&gt;
backdest=/opt/backup&lt;br /&gt;
&lt;br /&gt;
# Labels for backup name&lt;br /&gt;
#PC=${HOSTNAME}&lt;br /&gt;
pc=pavilion&lt;br /&gt;
distro=arch&lt;br /&gt;
type=full&lt;br /&gt;
date=$(date &amp;quot;+%F&amp;quot;)&lt;br /&gt;
backupfile=&amp;quot;$backdest/$distro-$type-$date.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Exclude file location&lt;br /&gt;
prog=${0##*/} # Program name from filename&lt;br /&gt;
excdir=&amp;quot;/home/&amp;lt;user&amp;gt;/.bin/root/backup&amp;quot;&lt;br /&gt;
exclude_file=&amp;quot;$excdir/$prog-exc.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Check if chrooted prompt.&lt;br /&gt;
echo -n &amp;quot;First chroot from a LiveCD.  Are you ready to backup? (y/n): &amp;quot;&lt;br /&gt;
read executeback&lt;br /&gt;
&lt;br /&gt;
# Check if exclude file exists&lt;br /&gt;
if [ ! -f $exclude_file ]; then&lt;br /&gt;
  echo -n &amp;quot;No exclude file exists, continue? (y/n): &amp;quot;&lt;br /&gt;
  read continue&lt;br /&gt;
  if [ $continue == &amp;quot;n&amp;quot; ]; then exit; fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ $executeback = &amp;quot;y&amp;quot; ]; then&lt;br /&gt;
  # -p, --acls and --xattrs store all permissions, ACLs and extended attributes. &lt;br /&gt;
  # Without both of these, many programs will stop working!&lt;br /&gt;
  # It is safe to remove the verbose (-v) flag. If you are using a &lt;br /&gt;
  # slow terminal, this can greatly speed up the backup process.&lt;br /&gt;
  # Use bsdtar because GNU tar will not preserve extended attributes.&lt;br /&gt;
  bsdtar --exclude-from=$exclude_file --acls --xattrs -cpvzf $backupfile /&lt;br /&gt;
fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== リストア ==&lt;br /&gt;
&lt;br /&gt;
以前のバックアップから復元するには、関連するすべてのパーティションをマウントし、現在の作業ディレクトリをルート ディレクトリに変更して、次のコマンドを実行します。&lt;br /&gt;
&lt;br /&gt;
 $ bsdtar --acls --xattrs -xpzf &#039;&#039;backupfile&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
バックアップファイルをバックアップアーカイブに置き換えます。バックアップの作成後に追加されたすべてのファイルの削除は、手動で行う必要があります。ファイルシステムを再作成するのが簡単な方法です。&lt;br /&gt;
&lt;br /&gt;
== 並列圧縮でバックアップ ==&lt;br /&gt;
&lt;br /&gt;
並列圧縮 ([[Wikipedia:Symmetric multiprocessing|SMP]]) を使ってバックアップしたい場合 {{Pkg|pbzip2}} (Parallel bzip2) を使用してください:&lt;br /&gt;
&lt;br /&gt;
 # bsdtar -cvf /path/to/chosen/directory/etc-backup.tar.bz2 \&lt;br /&gt;
          --use-compress-program pbzip2 /etc&lt;br /&gt;
&lt;br /&gt;
{{ic|etc-backup.tar.bz2}} を1つ以上のオフラインメディア (USB スティック、外付けハード ドライブ、CD-R など) に保存します。時々、元のファイルとディレクトリをバックアップと比較して、バックアッププロセスの整合性を検証します。比較を迅速に行うために、バックアップファイルのハッシュのリストを維持することもできます。&lt;br /&gt;
&lt;br /&gt;
破損した {{ic|/etc}} ファイルを復元するには、一時作業ディレクトリに {{ic|etc-backup.tar.bz2}} ファイルを抽出し、必要に応じて個々のファイルとディレクトリをコピーします。{{ic|/etc}} ディレクトリ全体をそのすべての内容とともに復元するには、root として次のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # bsdtar -xvf etc-backup.tar.bz2 -C /&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Systemd/%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC&amp;diff=40241</id>
		<title>Systemd/タイマー</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Systemd/%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC&amp;diff=40241"/>
		<updated>2025-05-02T16:10:07Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* cron を置き換える */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:システム管理]]&lt;br /&gt;
[[de:Systemd/Timers]]&lt;br /&gt;
[[en:Systemd/Timers]]&lt;br /&gt;
[[es:Systemd/Timers]]&lt;br /&gt;
[[fr:Systemd/cron]]&lt;br /&gt;
[[pt:Systemd/Timers]]&lt;br /&gt;
[[ru:Systemd (Русский)/Timers]]&lt;br /&gt;
[[zh-hans:Systemd/Timers]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related|systemd/ユーザー}}&lt;br /&gt;
{{Related|systemd FAQ}}&lt;br /&gt;
{{Related|cron}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
タイマーは名前が {{ic|.timer}} で終わる [[systemd]] のユニットファイルであり、{{ic|.service}} ファイルやイベントを制御します。[[cron]] の代わりとしてタイマーを使うことができます ([[#cron を置き換える]] を読んで下さい)。タイマーにはカレンダー時刻のイベントとモノトニック時刻のイベントのサポートが入っており、さらに非同期に実行することも可能です。&lt;br /&gt;
&lt;br /&gt;
== タイマーユニット ==&lt;br /&gt;
&lt;br /&gt;
タイマーは拡張子が {{ic|.timer}} の &#039;&#039;systemd&#039;&#039; のユニットファイルです。他の [[systemd#ユニットファイル|ユニット設定ファイル]] と似ていますが特別に {{ic|[Timer]}} セクションが存在します。{{ic|[Timer]}} セクションにはタイマーが作動する時間と処理を定義します。タイマーには2つのタイプがあり、どちらか一つを使って定義されます:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;モノトニックタイマー&#039;&#039;&#039; は刻々と変わる開始点と相応したタイムスパンの後に作動します。様々なモノトニックタイマーが存在しますがどれも次のような形式です: {{ic|1=On&#039;&#039;Type&#039;&#039;Sec=}} {{ic|OnBootSec}} と {{ic|OnActiveSec}} は全てのモノトニックタイマーで共通です。&lt;br /&gt;
* &#039;&#039;&#039;リアルタイムタイマー&#039;&#039;&#039; (別名ウォールクロックタイマー) は (cron のジョブと同じように) カレンダーイベントにあわせて作動します。{{ic|1=OnCalendar=}} オプションを使って定義を行います。&lt;br /&gt;
&lt;br /&gt;
タイマーのオプションについては {{man|5|systemd.timer}} の [[man ページ]] で説明されています。カレンダーイベントやタイムスパンの引数構文については {{man|7|systemd.time}} の [[man ページ]] で説明されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;systemd&#039;&#039; は、ブート後にアクティブにする必要があるすべてのタイマーを設定するターゲット {{ic|timers.target}} を提供します (詳細については、{{man|7|systemd.special}} を参照してください) これを使用するには、タイマーの {{ic|[Install]}} セクションに {{ic|1=WantedBy=timers.target}} を追加し、タイマーユニットを [[有効化]] します。}}&lt;br /&gt;
&lt;br /&gt;
== サービスユニット ==&lt;br /&gt;
&lt;br /&gt;
それぞれの {{ic|.timer}} ファイルには、対応する {{ic|.service}} ファイルが存在します (例: {{ic|foo.timer}} と {{ic|foo.service}})。{{ic|.timer}} ファイルは {{ic|.service}} ファイルを作動・制御します。{{ic|.service}} に {{ic|[Install]}} セクションは必要ありません。有効にするのは &#039;&#039;timer&#039;&#039; ユニットだからです。必要ならば、タイマーの {{ic|[Timer]}} セクションで {{ic|1=Unit=}} オプションを使うことで別の名前のユニットを制御することもできます。&lt;br /&gt;
&lt;br /&gt;
== 管理 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;timer&#039;&#039; ユニットを使用するには、他のユニットと同じように[[systemd#ユニットを使う|有効化・起動]]します。起動しているタイマーを全て表示するには、次を実行:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ systemctl list-timers|&lt;br /&gt;
NEXT                          LEFT        LAST                          PASSED     UNIT                         ACTIVATES&lt;br /&gt;
Thu 2014-07-10 19:37:03 CEST  11h left    Wed 2014-07-09 19:37:03 CEST  12h ago    systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service&lt;br /&gt;
Fri 2014-07-11 00:00:00 CEST  15h left    Thu 2014-07-10 00:00:13 CEST  8h ago     logrotate.timer              logrotate.service&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* (有効でないタイマーも含めて) 全てのタイマーを確認したい場合、{{ic|systemctl list-timers --all}} を使って下さい。&lt;br /&gt;
* タイマーによって実行するサービスの状態は、今現在作動しているのでない限り、inactive になります。&lt;br /&gt;
* タイマーがズレる場合は、{{ic|/var/lib/systemd/timers}} もしくは {{ic|~/.local/share/systemd/}} にある {{ic|stamp-*}} ファイルを削除してみてください。stamp ファイルはタイマーが実行された最後の時刻を記録しており、ファイルを削除することでタイマーの次の作動時に systemd が再構成を行います。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== サンプル ==&lt;br /&gt;
&lt;br /&gt;
タイマーを使用してサービスを実行するのにあたって、service ユニットファイルに変更を加える必要はありません。以下の例では {{ic|foo.timer}} という名前のタイマーを使って {{ic|foo.service}} を定期的に実行します。&lt;br /&gt;
&lt;br /&gt;
=== モノトニックタイマー ===&lt;br /&gt;
&lt;br /&gt;
起動15分後に実行され、システムが起動している間、一週間ごとに再度実行されるタイマー:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/foo.timer|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Run foo weekly and on boot&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnBootSec=15min&lt;br /&gt;
OnUnitActiveSec=1w &lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== リアルタイムタイマー ===&lt;br /&gt;
&lt;br /&gt;
一週間ごとに起動するタイマー (月曜日の午前12:00に実行)。システムの電源が切られていたなどの理由で、最後の起動時間を過ぎていた場合、すぐに実行されます ({{ic|1=Persistent=true}} オプション):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/foo.timer|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Run foo weekly&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=weekly&lt;br /&gt;
Persistent=true     &lt;br /&gt;
 &lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
もっと細かく日時を指定する必要がある場合、次の形式で {{ic|OnCalendar}} イベントを制御できます: {{ic|DayOfWeek Year-Month-Day Hour:Minute:Second}}。アスタリスクをワイルドカードとして使うことができ、カンマで複数の日時を指定することができます。値を {{ic|..}} で区切ることで連続的に日程を指定することも可能です。&lt;br /&gt;
&lt;br /&gt;
例えば、以下の場合、毎月の1日から4日まで、月曜日か火曜日の場合にのみ、午後0時にサービスを実行します:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=Mon,Tue *-*-01..04 12:00:00&lt;br /&gt;
&lt;br /&gt;
毎月第1土曜日にサービスを実行したい場合は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=Sat *-*-1..7 18:00:00&lt;br /&gt;
&lt;br /&gt;
毎朝4時に実行したい場合は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=*-*-* 4:00:00&lt;br /&gt;
&lt;br /&gt;
{{ic|OnCalendar}} は複数指定でき、複数の異なるタイミングでサービスを実行できます。次の例では、平日の22:30および土日の20:00に実行されます:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=Mon..Fri 22:30&lt;br /&gt;
 OnCalendar=Sat,Sun 20:00&lt;br /&gt;
&lt;br /&gt;
ディレクティブの最後にタイムゾーンを指定することもできます (受け入れられる値をリストするには、{{ic|timedatectl list-timezones}} を使用します。)&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=*-*-* 02:00:00 Europe/Paris&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|7|systemd.time}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* {{ic|OnCalendar}} の日時の指定方法は &#039;&#039;systemd-analyze&#039;&#039; ユーティリティの {{ic|calendar}} オプションを使用することでテストすることができます。タイマーユニットで使用したときに次に実行される日時も確認できます。例えば、{{ic|systemd-analyze calendar weekly}} や {{ic|systemd-analyze calendar &amp;quot;Mon,Tue *-*-01..04 12:00:00&amp;quot;}} のようにコマンドを実行することでテストできます。&lt;br /&gt;
* {{Pkg|libfaketime}} でインストールできる {{ic|faketime}} コマンドを使うと、これらのコマンドを使ったいろいろなシナリオをテストするのに便利です。&lt;br /&gt;
* {{ic|daily}} や {{ic|weekly}} などの特殊なイベントの表現は&#039;&#039;特定の起動時間&#039;&#039;を示しているため、同じカレンダーイベントが設定されているタイマーがあった場合、同時に起動します。そのようなことが発生すると、タイマーのサービスがシステムリソースを取り合って、システムパフォーマンスが落ち込む可能性があります。このような問題は {{ic|RandomizedDelaySec}} オプションを使用してタイマーの起動時間を散らすことで解決できます。{{man|5|systemd.timer}} を参照してください。&lt;br /&gt;
* {{ic|AccuracySec}} のデフォルト値 &#039;&#039;1m&#039;&#039; の不正確さを避けるために、オプション {{ic|1=AccuracySec=1us}} を [Timer] セクションに追加します。{{man|5|systemd.timer}} も参照してください。&lt;br /&gt;
* 一部のオプション ({{ic|WakeSystem}}) は、特定のシステム機能を必要とし、タイマーの開始を妨げる場合があり、その結果、次のエラーメッセージが表示されます: &amp;quot;Failed to enter waiting state: Operation not supported&amp;quot; そして &amp;quot;Failed with result &#039;resources&#039;.&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 一時的な .timer ユニット ==&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd-run}} を使うことで一時的な {{ic|.timer}} ユニットを作ることができます。サービスファイルを作成しなくても、特定時刻にコマンドが実行されるように設定することが可能です。例えば、以下のコマンドは30秒後にファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
 # systemd-run --on-active=30 /bin/touch /tmp/foo&lt;br /&gt;
&lt;br /&gt;
タイマーファイルが存在しない既存のサービスファイルを指定することもできます。例えば、以下のコマンドは12.5時間後に {{ic|&#039;&#039;someunit&#039;&#039;.service}} という名前の systemd ユニットを起動します:&lt;br /&gt;
&lt;br /&gt;
 # systemd-run --on-active=&amp;quot;12h 30m&amp;quot; --unit &#039;&#039;someunit&#039;&#039;.service&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|1|systemd-run}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== cron を置き換える ==&lt;br /&gt;
&lt;br /&gt;
おそらく一番有名なジョブスケジューラは [[cron]] ですが、&#039;&#039;systemd&#039;&#039; のタイマーはその代替手段になりえます。&lt;br /&gt;
&lt;br /&gt;
=== メリット ===&lt;br /&gt;
&lt;br /&gt;
タイマーを使う主要なメリットは、それぞれのジョブが固有の &#039;&#039;systemd&#039;&#039; サービスを使うというところに根ざします。そのメリットには以下のようなものがあります:&lt;br /&gt;
&lt;br /&gt;
* タイマーとは別個にジョブを実行することが簡単にできます。これによってデバッグが楽になります。&lt;br /&gt;
* 特定の環境で動作するようにジョブを設定することができます ({{man|5|systemd.exec}} [[man ページ]]を参照)。&lt;br /&gt;
* ジョブを [[cgroups]] の支配下に置けます。&lt;br /&gt;
* 他の &#039;&#039;systemd&#039;&#039; ユニットに依存するようにジョブを設定できます。&lt;br /&gt;
* &#039;&#039;systemd&#039;&#039; の journal でジョブが記録されるのでデバッグが簡単です。&lt;br /&gt;
&lt;br /&gt;
=== 注意事項 ===&lt;br /&gt;
&lt;br /&gt;
cron では簡単にできることが、タイマーユニットを使用する場合、難しかったり不可能であったりすることがいくつか存在します。&lt;br /&gt;
&lt;br /&gt;
* 冗長性: &#039;&#039;systemd&#039;&#039; を使って定期的なジョブを設定するには2つのファイルを作成して2回 {{ic|systemctl}} コマンドを実行します。それに対して crontab には一行を追加するだけです。&lt;br /&gt;
* メール: cron の {{ic|MAILTO}} のように、ジョブの失敗時にメールを送信する組み込み機能はありません。代わりに、{{ic|1=OnFailure=}} を使用して同様の機能を設定する方法については、[[systemd#Eメールでの通知]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
また、デフォルトでは [[systemd/ユーザー|ユーザー]] タイマー・ユニットは、ユーザーのログインセッションがアクティブな間のみ実行されます。ただし、[[systemd/ユーザー#systemd のユーザーインスタンスを自動起動|lingering]] を有効にすることで、ユーザーがログインしていない状態でも、ブート時にサービスを実行できるようになります。&lt;br /&gt;
&lt;br /&gt;
=== crontab を使用する ===&lt;br /&gt;
&lt;br /&gt;
crontab を使って定期的なサービスを管理するツールとして {{aur|systemd-cron-next}} と {{aur|systemd-cron}} があります。どちらも [[AUR]] からインストールすることができます。これらのツールには systemd に存在しない {{ic|MAILTO}} 機能が実装されています。&lt;br /&gt;
&lt;br /&gt;
もし、スケジュールされたジョブをまとめて見れるから crontab が好きだという場合は、{{ic|systemctl}} でそれと同じことが可能です。[[#管理]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== 手動で行う ===&lt;br /&gt;
&lt;br /&gt;
既存の crontab から移行する以外に、cron と同じ周期を使用することが望ましい場合があります。定期的に開始する各サービスのタイマーを作成するという面倒な作業を回避するには、[[systemd#ユニットを使う|テンプレートユニット]] を使用します。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/monthly@.timer|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Monthly Timer for %i service&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*-*-1 02:00:00&lt;br /&gt;
AccuracySec=6h&lt;br /&gt;
RandomizedDelaySec=1h&lt;br /&gt;
Persistent=true&lt;br /&gt;
Unit=%i.service&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|タイマーの起動によってすべてのユニットが同時に開始されるのを避けるために、{{ic|AccuracySec}} だけでなく {{ic|RandomizedDelaySec}} を使用する重要性については、{{man|5|systemd.timer|OPTIONS}} を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|monthly@&#039;&#039;unit_name&#039;&#039;.timer}} を [[起動/有効化]] 行うだけで済みます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|テンプレートユニットはネストできます。たとえば、{{ic|monthly@btrfs-scrub@mnt-$(systemd-escape bbb76c63-e4ac-4e39-8897-a120c5d30686).timer}} を [[起動/有効化]] することができます。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;有効期間&amp;quot; の処理 ===&lt;br /&gt;
&lt;br /&gt;
一部のソフトウェアは、最後に実行されてからの経過時間を追跡します。たとえば、最後のダウンロードが 24 時間以内に終了した場合はデータベースの更新をブロックします。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、タイマーは起動したタスクがいつ終了したかを追跡しません。これを回避するには、{{ic|OnUnitInactiveSeconds}} を使用できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/daily-inactive@.timer|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Launch %i service 24hours after it deactivated&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
&#039;&#039;&#039;OnUnitInactiveSec=1day1sec&#039;&#039;&#039;&lt;br /&gt;
Unit=%i.service&lt;br /&gt;
Persistent=true&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|1=Restart=on-failure}} と {{ic|RestartSec}} を併用すると、失敗と成功の後に異なるスケジュールに従ってユニットを再実行することができます。{{man|5|systemd.service|OPTIONS}} を参照して下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== デスクトップ通知 ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|systemd-timer-notify}} は、systemd のタイマーによってサービスが実行された際に、自動的にデスクトップ通知を表示するツールです。通知はサービスの実行中に表示され、サービスの終了とともに自動的に閉じられます。&lt;br /&gt;
&lt;br /&gt;
このツールは、CPU 使用率が高い原因を把握したり、バックアップサービスが終了していない場合にシャットダウンを防いだりするのに役立ちます。&lt;br /&gt;
&lt;br /&gt;
詳細および設定オプションについては、以下のページをご覧ください:&lt;br /&gt;
https://gitlab.com/Zesko/systemd-timer-notify&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* {{man|5|systemd.timer}}&lt;br /&gt;
* [https://fedoraproject.org/wiki/Features/SystemdCalendarTimers Fedora Project wiki] の &#039;&#039;systemd&#039;&#039; カレンダータイマーのページ&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Systemd#Timer_services Gentoo wiki] の &#039;&#039;systemd&#039;&#039; タイマーサービスのセクション&lt;br /&gt;
* {{App|systemd-cron|cron スクリプトを実行する systemd ユニットが入っています。&#039;&#039;systemd-crontab-generator&#039;&#039; を使って crontab を変換。|https://github.com/systemd-cron/systemd-cron|{{Aur|systemd-cron}}}}&lt;br /&gt;
* {{App|systemd-cron-next|crontab と anacrontab ファイルからタイマーとサービスを生成するツール|https://github.com/systemd-cron/systemd-cron-next|{{Aur|systemd-cron-next-git}}}}&lt;br /&gt;
* [https://fedoramagazine.org/systemd-timers-for-scheduling-tasks/ Systemd Timers for Scheduling Tasks]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Systemd/%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC&amp;diff=40240</id>
		<title>Systemd/タイマー</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Systemd/%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC&amp;diff=40240"/>
		<updated>2025-05-02T16:03:59Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* 参照 */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:システム管理]]&lt;br /&gt;
[[de:Systemd/Timers]]&lt;br /&gt;
[[en:Systemd/Timers]]&lt;br /&gt;
[[es:Systemd/Timers]]&lt;br /&gt;
[[fr:Systemd/cron]]&lt;br /&gt;
[[pt:Systemd/Timers]]&lt;br /&gt;
[[ru:Systemd (Русский)/Timers]]&lt;br /&gt;
[[zh-hans:Systemd/Timers]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related|systemd/ユーザー}}&lt;br /&gt;
{{Related|systemd FAQ}}&lt;br /&gt;
{{Related|cron}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
タイマーは名前が {{ic|.timer}} で終わる [[systemd]] のユニットファイルであり、{{ic|.service}} ファイルやイベントを制御します。[[cron]] の代わりとしてタイマーを使うことができます ([[#cron を置き換える]] を読んで下さい)。タイマーにはカレンダー時刻のイベントとモノトニック時刻のイベントのサポートが入っており、さらに非同期に実行することも可能です。&lt;br /&gt;
&lt;br /&gt;
== タイマーユニット ==&lt;br /&gt;
&lt;br /&gt;
タイマーは拡張子が {{ic|.timer}} の &#039;&#039;systemd&#039;&#039; のユニットファイルです。他の [[systemd#ユニットファイル|ユニット設定ファイル]] と似ていますが特別に {{ic|[Timer]}} セクションが存在します。{{ic|[Timer]}} セクションにはタイマーが作動する時間と処理を定義します。タイマーには2つのタイプがあり、どちらか一つを使って定義されます:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;モノトニックタイマー&#039;&#039;&#039; は刻々と変わる開始点と相応したタイムスパンの後に作動します。様々なモノトニックタイマーが存在しますがどれも次のような形式です: {{ic|1=On&#039;&#039;Type&#039;&#039;Sec=}} {{ic|OnBootSec}} と {{ic|OnActiveSec}} は全てのモノトニックタイマーで共通です。&lt;br /&gt;
* &#039;&#039;&#039;リアルタイムタイマー&#039;&#039;&#039; (別名ウォールクロックタイマー) は (cron のジョブと同じように) カレンダーイベントにあわせて作動します。{{ic|1=OnCalendar=}} オプションを使って定義を行います。&lt;br /&gt;
&lt;br /&gt;
タイマーのオプションについては {{man|5|systemd.timer}} の [[man ページ]] で説明されています。カレンダーイベントやタイムスパンの引数構文については {{man|7|systemd.time}} の [[man ページ]] で説明されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;systemd&#039;&#039; は、ブート後にアクティブにする必要があるすべてのタイマーを設定するターゲット {{ic|timers.target}} を提供します (詳細については、{{man|7|systemd.special}} を参照してください) これを使用するには、タイマーの {{ic|[Install]}} セクションに {{ic|1=WantedBy=timers.target}} を追加し、タイマーユニットを [[有効化]] します。}}&lt;br /&gt;
&lt;br /&gt;
== サービスユニット ==&lt;br /&gt;
&lt;br /&gt;
それぞれの {{ic|.timer}} ファイルには、対応する {{ic|.service}} ファイルが存在します (例: {{ic|foo.timer}} と {{ic|foo.service}})。{{ic|.timer}} ファイルは {{ic|.service}} ファイルを作動・制御します。{{ic|.service}} に {{ic|[Install]}} セクションは必要ありません。有効にするのは &#039;&#039;timer&#039;&#039; ユニットだからです。必要ならば、タイマーの {{ic|[Timer]}} セクションで {{ic|1=Unit=}} オプションを使うことで別の名前のユニットを制御することもできます。&lt;br /&gt;
&lt;br /&gt;
== 管理 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;timer&#039;&#039; ユニットを使用するには、他のユニットと同じように[[systemd#ユニットを使う|有効化・起動]]します。起動しているタイマーを全て表示するには、次を実行:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ systemctl list-timers|&lt;br /&gt;
NEXT                          LEFT        LAST                          PASSED     UNIT                         ACTIVATES&lt;br /&gt;
Thu 2014-07-10 19:37:03 CEST  11h left    Wed 2014-07-09 19:37:03 CEST  12h ago    systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service&lt;br /&gt;
Fri 2014-07-11 00:00:00 CEST  15h left    Thu 2014-07-10 00:00:13 CEST  8h ago     logrotate.timer              logrotate.service&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* (有効でないタイマーも含めて) 全てのタイマーを確認したい場合、{{ic|systemctl list-timers --all}} を使って下さい。&lt;br /&gt;
* タイマーによって実行するサービスの状態は、今現在作動しているのでない限り、inactive になります。&lt;br /&gt;
* タイマーがズレる場合は、{{ic|/var/lib/systemd/timers}} もしくは {{ic|~/.local/share/systemd/}} にある {{ic|stamp-*}} ファイルを削除してみてください。stamp ファイルはタイマーが実行された最後の時刻を記録しており、ファイルを削除することでタイマーの次の作動時に systemd が再構成を行います。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== サンプル ==&lt;br /&gt;
&lt;br /&gt;
タイマーを使用してサービスを実行するのにあたって、service ユニットファイルに変更を加える必要はありません。以下の例では {{ic|foo.timer}} という名前のタイマーを使って {{ic|foo.service}} を定期的に実行します。&lt;br /&gt;
&lt;br /&gt;
=== モノトニックタイマー ===&lt;br /&gt;
&lt;br /&gt;
起動15分後に実行され、システムが起動している間、一週間ごとに再度実行されるタイマー:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/foo.timer|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Run foo weekly and on boot&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnBootSec=15min&lt;br /&gt;
OnUnitActiveSec=1w &lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== リアルタイムタイマー ===&lt;br /&gt;
&lt;br /&gt;
一週間ごとに起動するタイマー (月曜日の午前12:00に実行)。システムの電源が切られていたなどの理由で、最後の起動時間を過ぎていた場合、すぐに実行されます ({{ic|1=Persistent=true}} オプション):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/foo.timer|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Run foo weekly&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=weekly&lt;br /&gt;
Persistent=true     &lt;br /&gt;
 &lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
もっと細かく日時を指定する必要がある場合、次の形式で {{ic|OnCalendar}} イベントを制御できます: {{ic|DayOfWeek Year-Month-Day Hour:Minute:Second}}。アスタリスクをワイルドカードとして使うことができ、カンマで複数の日時を指定することができます。値を {{ic|..}} で区切ることで連続的に日程を指定することも可能です。&lt;br /&gt;
&lt;br /&gt;
例えば、以下の場合、毎月の1日から4日まで、月曜日か火曜日の場合にのみ、午後0時にサービスを実行します:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=Mon,Tue *-*-01..04 12:00:00&lt;br /&gt;
&lt;br /&gt;
毎月第1土曜日にサービスを実行したい場合は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=Sat *-*-1..7 18:00:00&lt;br /&gt;
&lt;br /&gt;
毎朝4時に実行したい場合は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=*-*-* 4:00:00&lt;br /&gt;
&lt;br /&gt;
{{ic|OnCalendar}} は複数指定でき、複数の異なるタイミングでサービスを実行できます。次の例では、平日の22:30および土日の20:00に実行されます:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=Mon..Fri 22:30&lt;br /&gt;
 OnCalendar=Sat,Sun 20:00&lt;br /&gt;
&lt;br /&gt;
ディレクティブの最後にタイムゾーンを指定することもできます (受け入れられる値をリストするには、{{ic|timedatectl list-timezones}} を使用します。)&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=*-*-* 02:00:00 Europe/Paris&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|7|systemd.time}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* {{ic|OnCalendar}} の日時の指定方法は &#039;&#039;systemd-analyze&#039;&#039; ユーティリティの {{ic|calendar}} オプションを使用することでテストすることができます。タイマーユニットで使用したときに次に実行される日時も確認できます。例えば、{{ic|systemd-analyze calendar weekly}} や {{ic|systemd-analyze calendar &amp;quot;Mon,Tue *-*-01..04 12:00:00&amp;quot;}} のようにコマンドを実行することでテストできます。&lt;br /&gt;
* {{Pkg|libfaketime}} でインストールできる {{ic|faketime}} コマンドを使うと、これらのコマンドを使ったいろいろなシナリオをテストするのに便利です。&lt;br /&gt;
* {{ic|daily}} や {{ic|weekly}} などの特殊なイベントの表現は&#039;&#039;特定の起動時間&#039;&#039;を示しているため、同じカレンダーイベントが設定されているタイマーがあった場合、同時に起動します。そのようなことが発生すると、タイマーのサービスがシステムリソースを取り合って、システムパフォーマンスが落ち込む可能性があります。このような問題は {{ic|RandomizedDelaySec}} オプションを使用してタイマーの起動時間を散らすことで解決できます。{{man|5|systemd.timer}} を参照してください。&lt;br /&gt;
* {{ic|AccuracySec}} のデフォルト値 &#039;&#039;1m&#039;&#039; の不正確さを避けるために、オプション {{ic|1=AccuracySec=1us}} を [Timer] セクションに追加します。{{man|5|systemd.timer}} も参照してください。&lt;br /&gt;
* 一部のオプション ({{ic|WakeSystem}}) は、特定のシステム機能を必要とし、タイマーの開始を妨げる場合があり、その結果、次のエラーメッセージが表示されます: &amp;quot;Failed to enter waiting state: Operation not supported&amp;quot; そして &amp;quot;Failed with result &#039;resources&#039;.&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 一時的な .timer ユニット ==&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd-run}} を使うことで一時的な {{ic|.timer}} ユニットを作ることができます。サービスファイルを作成しなくても、特定時刻にコマンドが実行されるように設定することが可能です。例えば、以下のコマンドは30秒後にファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
 # systemd-run --on-active=30 /bin/touch /tmp/foo&lt;br /&gt;
&lt;br /&gt;
タイマーファイルが存在しない既存のサービスファイルを指定することもできます。例えば、以下のコマンドは12.5時間後に {{ic|&#039;&#039;someunit&#039;&#039;.service}} という名前の systemd ユニットを起動します:&lt;br /&gt;
&lt;br /&gt;
 # systemd-run --on-active=&amp;quot;12h 30m&amp;quot; --unit &#039;&#039;someunit&#039;&#039;.service&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|1|systemd-run}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== cron を置き換える ==&lt;br /&gt;
&lt;br /&gt;
おそらく一番有名なジョブスケジューラは [[cron]] ですが、&#039;&#039;systemd&#039;&#039; のタイマーはその代替手段になりえます。&lt;br /&gt;
&lt;br /&gt;
=== メリット ===&lt;br /&gt;
&lt;br /&gt;
タイマーを使う主要なメリットは、それぞれのジョブが固有の &#039;&#039;systemd&#039;&#039; サービスを使うというところに根ざします。そのメリットには以下のようなものがあります:&lt;br /&gt;
&lt;br /&gt;
* タイマーとは別個にジョブを実行することが簡単にできます。これによってデバッグが楽になります。&lt;br /&gt;
* 特定の環境で動作するようにジョブを設定することができます ({{man|5|systemd.exec}} [[man ページ]]を参照)。&lt;br /&gt;
* ジョブを [[cgroups]] の支配下に置けます。&lt;br /&gt;
* 他の &#039;&#039;systemd&#039;&#039; ユニットに依存するようにジョブを設定できます。&lt;br /&gt;
* &#039;&#039;systemd&#039;&#039; の journal でジョブが記録されるのでデバッグが簡単です。&lt;br /&gt;
&lt;br /&gt;
=== 注意事項 ===&lt;br /&gt;
&lt;br /&gt;
cron では簡単にできることが、タイマーユニットを使用する場合、難しかったり不可能であったりすることがいくつか存在します。&lt;br /&gt;
&lt;br /&gt;
* 冗長性: &#039;&#039;systemd&#039;&#039; を使って定期的なジョブを設定するには2つのファイルを作成して2回 {{ic|systemctl}} コマンドを実行します。それに対して crontab には一行を追加するだけです。&lt;br /&gt;
* メール: ジョブが失敗した時にメールを送信する cron の {{ic|MAILTO}} と同等なものは存在しません。ただし各サービスに {{ic|1=OnFailure=}} オプションを使うことで同じような機能を設定することはできます。&lt;br /&gt;
&lt;br /&gt;
=== MAILTO ===&lt;br /&gt;
&lt;br /&gt;
Cron の {{ic|MAILTO}} のように、systemd で、ユニットが失敗したときにメールを送信するように設定できます。それにはまず2つのファイルが必要です: メールを送信するための実行可能ファイルと、実行可能ファイルを起動するための &#039;&#039;.service&#039;&#039;。以下の例では、{{ic|sendmail}} ({{ic|smtp-forwarder}} を含むパッケージにはすべて含まれています) を使用するシェルスクリプトが実行可能ファイルになっています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/local/bin/systemd-email|&amp;lt;nowiki&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
/usr/bin/sendmail -t &amp;lt;&amp;lt;ERRMAIL&lt;br /&gt;
To: $1&lt;br /&gt;
From: systemd &amp;lt;root@$HOSTNAME&amp;gt;&lt;br /&gt;
Subject: $2&lt;br /&gt;
Content-Transfer-Encoding: 8bit&lt;br /&gt;
Content-Type: text/plain; charset=UTF-8&lt;br /&gt;
&lt;br /&gt;
$(systemctl status --full &amp;quot;$2&amp;quot;)&lt;br /&gt;
ERRMAIL&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
どんな実行可能ファイルを使うのであれ、上記のシェルスクリプトのように、最低でも2つの引数が必要になります: 送信先のアドレスと状態を取得するユニットファイルです。以下の &#039;&#039;.service&#039;&#039; はそれらの引数を渡します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/status-email-&#039;&#039;user&#039;&#039;@.service|2=[Unit]&lt;br /&gt;
Description=status email for %i to &#039;&#039;user&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/local/bin/systemd-email &#039;&#039;address&#039;&#039; %i&lt;br /&gt;
User=nobody&lt;br /&gt;
Group=systemd-journal}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;user&#039;&#039;}} はメールを送信するユーザーに、{{ic|&#039;&#039;address&#039;&#039;}} はユーザーのメールアドレスに置き換えてください。受信者はハードコードされますが、インスタンスパラメータとしてユニットファイルを渡すことで、上記のサービスだけで他のユニットのメールも送ることができます。{{ic|status-email-&#039;&#039;user&#039;&#039;@dbus.service}} を[[systemd#ユニットを使う|起動]]して、メールが受け取れることを確認してください。&lt;br /&gt;
&lt;br /&gt;
問題ないようでしたら、メールを送って欲しいユニットの {{ic|[Unit]}} セクションに {{ic|1=OnFailure=status-email-&#039;&#039;user&#039;&#039;@%n.service}} を追加してください。{{ic|%n}} はユニットの名前をテンプレートに指定します。&lt;br /&gt;
&lt;br /&gt;
{{note|&lt;br /&gt;
*[[SSMTP#セキュリティ]] にしたがって SSMTP を設定した場合、ユーザー {{ic|nobody}} は {{ic|/etc/ssmtp/ssmtp.conf}} にアクセスすることができず、{{ic|systemctl start status-email-&#039;&#039;user&#039;&#039;@dbus.service}} コマンドは失敗します。{{ic|status-email-&#039;&#039;user&#039;&#039;@.service}} モジュールの User に {{ic|root}} を使うことでこれを回避できます。&lt;br /&gt;
* メールスクリプトで {{ic|mail -s somelogs &#039;&#039;address&#039;&#039;}} を使用すると、{{ic|mail}} はフォークして、systemd はスクリプトの終了を確認したときに mail プロセスを終了します。{{ic|mail -Ssendwait -s somelogs &#039;&#039;address&#039;&#039;}} として mail がフォークしないようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
=== crontab を使用する ===&lt;br /&gt;
&lt;br /&gt;
crontab を使って定期的なサービスを管理するツールとして {{aur|systemd-cron-next}} と {{aur|systemd-cron}} があります。どちらも [[AUR]] からインストールすることができます。これらのツールには systemd に存在しない {{ic|MAILTO}} 機能が実装されています。&lt;br /&gt;
&lt;br /&gt;
もし、スケジュールされたジョブをまとめて見れるから crontab が好きだという場合は、{{ic|systemctl}} でそれと同じことが可能です。[[#管理]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== 手動で行う ===&lt;br /&gt;
&lt;br /&gt;
既存の crontab から移行する以外に、cron と同じ周期を使用することが望ましい場合があります。定期的に開始する各サービスのタイマーを作成するという面倒な作業を回避するには、[[systemd#ユニットを使う|テンプレートユニット]] を使用します。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/monthly@.timer|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Monthly Timer for %i service&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*-*-1 02:00:00&lt;br /&gt;
AccuracySec=6h&lt;br /&gt;
RandomizedDelaySec=1h&lt;br /&gt;
Persistent=true&lt;br /&gt;
Unit=%i.service&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|タイマーの起動によってすべてのユニットが同時に開始されるのを避けるために、{{ic|AccuracySec}} だけでなく {{ic|RandomizedDelaySec}} を使用する重要性については、{{man|5|systemd.timer|OPTIONS}} を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|monthly@&#039;&#039;unit_name&#039;&#039;.timer}} を [[起動/有効化]] 行うだけで済みます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|テンプレートユニットはネストできます。たとえば、{{ic|monthly@btrfs-scrub@mnt-$(systemd-escape bbb76c63-e4ac-4e39-8897-a120c5d30686).timer}} を [[起動/有効化]] することができます。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;有効期間&amp;quot; の処理 ===&lt;br /&gt;
&lt;br /&gt;
一部のソフトウェアは、最後に実行されてからの経過時間を追跡します。たとえば、最後のダウンロードが 24 時間以内に終了した場合はデータベースの更新をブロックします。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、タイマーは起動したタスクがいつ終了したかを追跡しません。これを回避するには、{{ic|OnUnitInactiveSeconds}} を使用できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/daily-inactive@.timer|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Launch %i service 24hours after it deactivated&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
&#039;&#039;&#039;OnUnitInactiveSec=1day1sec&#039;&#039;&#039;&lt;br /&gt;
Unit=%i.service&lt;br /&gt;
Persistent=true&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|1=Restart=on-failure}} と {{ic|RestartSec}} を併用すると、失敗と成功の後に異なるスケジュールに従ってユニットを再実行することができます。{{man|5|systemd.service|OPTIONS}} を参照して下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== デスクトップ通知 ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|systemd-timer-notify}} は、systemd のタイマーによってサービスが実行された際に、自動的にデスクトップ通知を表示するツールです。通知はサービスの実行中に表示され、サービスの終了とともに自動的に閉じられます。&lt;br /&gt;
&lt;br /&gt;
このツールは、CPU 使用率が高い原因を把握したり、バックアップサービスが終了していない場合にシャットダウンを防いだりするのに役立ちます。&lt;br /&gt;
&lt;br /&gt;
詳細および設定オプションについては、以下のページをご覧ください:&lt;br /&gt;
https://gitlab.com/Zesko/systemd-timer-notify&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* {{man|5|systemd.timer}}&lt;br /&gt;
* [https://fedoraproject.org/wiki/Features/SystemdCalendarTimers Fedora Project wiki] の &#039;&#039;systemd&#039;&#039; カレンダータイマーのページ&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Systemd#Timer_services Gentoo wiki] の &#039;&#039;systemd&#039;&#039; タイマーサービスのセクション&lt;br /&gt;
* {{App|systemd-cron|cron スクリプトを実行する systemd ユニットが入っています。&#039;&#039;systemd-crontab-generator&#039;&#039; を使って crontab を変換。|https://github.com/systemd-cron/systemd-cron|{{Aur|systemd-cron}}}}&lt;br /&gt;
* {{App|systemd-cron-next|crontab と anacrontab ファイルからタイマーとサービスを生成するツール|https://github.com/systemd-cron/systemd-cron-next|{{Aur|systemd-cron-next-git}}}}&lt;br /&gt;
* [https://fedoramagazine.org/systemd-timers-for-scheduling-tasks/ Systemd Timers for Scheduling Tasks]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Systemd/%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC&amp;diff=40239</id>
		<title>Systemd/タイマー</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Systemd/%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC&amp;diff=40239"/>
		<updated>2025-05-02T16:02:19Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* &amp;quot;有効期間&amp;quot; の処理 */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:システム管理]]&lt;br /&gt;
[[de:Systemd/Timers]]&lt;br /&gt;
[[en:Systemd/Timers]]&lt;br /&gt;
[[es:Systemd/Timers]]&lt;br /&gt;
[[fr:Systemd/cron]]&lt;br /&gt;
[[pt:Systemd/Timers]]&lt;br /&gt;
[[ru:Systemd (Русский)/Timers]]&lt;br /&gt;
[[zh-hans:Systemd/Timers]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related|systemd/ユーザー}}&lt;br /&gt;
{{Related|systemd FAQ}}&lt;br /&gt;
{{Related|cron}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
タイマーは名前が {{ic|.timer}} で終わる [[systemd]] のユニットファイルであり、{{ic|.service}} ファイルやイベントを制御します。[[cron]] の代わりとしてタイマーを使うことができます ([[#cron を置き換える]] を読んで下さい)。タイマーにはカレンダー時刻のイベントとモノトニック時刻のイベントのサポートが入っており、さらに非同期に実行することも可能です。&lt;br /&gt;
&lt;br /&gt;
== タイマーユニット ==&lt;br /&gt;
&lt;br /&gt;
タイマーは拡張子が {{ic|.timer}} の &#039;&#039;systemd&#039;&#039; のユニットファイルです。他の [[systemd#ユニットファイル|ユニット設定ファイル]] と似ていますが特別に {{ic|[Timer]}} セクションが存在します。{{ic|[Timer]}} セクションにはタイマーが作動する時間と処理を定義します。タイマーには2つのタイプがあり、どちらか一つを使って定義されます:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;モノトニックタイマー&#039;&#039;&#039; は刻々と変わる開始点と相応したタイムスパンの後に作動します。様々なモノトニックタイマーが存在しますがどれも次のような形式です: {{ic|1=On&#039;&#039;Type&#039;&#039;Sec=}} {{ic|OnBootSec}} と {{ic|OnActiveSec}} は全てのモノトニックタイマーで共通です。&lt;br /&gt;
* &#039;&#039;&#039;リアルタイムタイマー&#039;&#039;&#039; (別名ウォールクロックタイマー) は (cron のジョブと同じように) カレンダーイベントにあわせて作動します。{{ic|1=OnCalendar=}} オプションを使って定義を行います。&lt;br /&gt;
&lt;br /&gt;
タイマーのオプションについては {{man|5|systemd.timer}} の [[man ページ]] で説明されています。カレンダーイベントやタイムスパンの引数構文については {{man|7|systemd.time}} の [[man ページ]] で説明されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;systemd&#039;&#039; は、ブート後にアクティブにする必要があるすべてのタイマーを設定するターゲット {{ic|timers.target}} を提供します (詳細については、{{man|7|systemd.special}} を参照してください) これを使用するには、タイマーの {{ic|[Install]}} セクションに {{ic|1=WantedBy=timers.target}} を追加し、タイマーユニットを [[有効化]] します。}}&lt;br /&gt;
&lt;br /&gt;
== サービスユニット ==&lt;br /&gt;
&lt;br /&gt;
それぞれの {{ic|.timer}} ファイルには、対応する {{ic|.service}} ファイルが存在します (例: {{ic|foo.timer}} と {{ic|foo.service}})。{{ic|.timer}} ファイルは {{ic|.service}} ファイルを作動・制御します。{{ic|.service}} に {{ic|[Install]}} セクションは必要ありません。有効にするのは &#039;&#039;timer&#039;&#039; ユニットだからです。必要ならば、タイマーの {{ic|[Timer]}} セクションで {{ic|1=Unit=}} オプションを使うことで別の名前のユニットを制御することもできます。&lt;br /&gt;
&lt;br /&gt;
== 管理 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;timer&#039;&#039; ユニットを使用するには、他のユニットと同じように[[systemd#ユニットを使う|有効化・起動]]します。起動しているタイマーを全て表示するには、次を実行:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ systemctl list-timers|&lt;br /&gt;
NEXT                          LEFT        LAST                          PASSED     UNIT                         ACTIVATES&lt;br /&gt;
Thu 2014-07-10 19:37:03 CEST  11h left    Wed 2014-07-09 19:37:03 CEST  12h ago    systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service&lt;br /&gt;
Fri 2014-07-11 00:00:00 CEST  15h left    Thu 2014-07-10 00:00:13 CEST  8h ago     logrotate.timer              logrotate.service&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* (有効でないタイマーも含めて) 全てのタイマーを確認したい場合、{{ic|systemctl list-timers --all}} を使って下さい。&lt;br /&gt;
* タイマーによって実行するサービスの状態は、今現在作動しているのでない限り、inactive になります。&lt;br /&gt;
* タイマーがズレる場合は、{{ic|/var/lib/systemd/timers}} もしくは {{ic|~/.local/share/systemd/}} にある {{ic|stamp-*}} ファイルを削除してみてください。stamp ファイルはタイマーが実行された最後の時刻を記録しており、ファイルを削除することでタイマーの次の作動時に systemd が再構成を行います。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== サンプル ==&lt;br /&gt;
&lt;br /&gt;
タイマーを使用してサービスを実行するのにあたって、service ユニットファイルに変更を加える必要はありません。以下の例では {{ic|foo.timer}} という名前のタイマーを使って {{ic|foo.service}} を定期的に実行します。&lt;br /&gt;
&lt;br /&gt;
=== モノトニックタイマー ===&lt;br /&gt;
&lt;br /&gt;
起動15分後に実行され、システムが起動している間、一週間ごとに再度実行されるタイマー:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/foo.timer|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Run foo weekly and on boot&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnBootSec=15min&lt;br /&gt;
OnUnitActiveSec=1w &lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== リアルタイムタイマー ===&lt;br /&gt;
&lt;br /&gt;
一週間ごとに起動するタイマー (月曜日の午前12:00に実行)。システムの電源が切られていたなどの理由で、最後の起動時間を過ぎていた場合、すぐに実行されます ({{ic|1=Persistent=true}} オプション):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/foo.timer|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Run foo weekly&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=weekly&lt;br /&gt;
Persistent=true     &lt;br /&gt;
 &lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
もっと細かく日時を指定する必要がある場合、次の形式で {{ic|OnCalendar}} イベントを制御できます: {{ic|DayOfWeek Year-Month-Day Hour:Minute:Second}}。アスタリスクをワイルドカードとして使うことができ、カンマで複数の日時を指定することができます。値を {{ic|..}} で区切ることで連続的に日程を指定することも可能です。&lt;br /&gt;
&lt;br /&gt;
例えば、以下の場合、毎月の1日から4日まで、月曜日か火曜日の場合にのみ、午後0時にサービスを実行します:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=Mon,Tue *-*-01..04 12:00:00&lt;br /&gt;
&lt;br /&gt;
毎月第1土曜日にサービスを実行したい場合は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=Sat *-*-1..7 18:00:00&lt;br /&gt;
&lt;br /&gt;
毎朝4時に実行したい場合は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=*-*-* 4:00:00&lt;br /&gt;
&lt;br /&gt;
{{ic|OnCalendar}} は複数指定でき、複数の異なるタイミングでサービスを実行できます。次の例では、平日の22:30および土日の20:00に実行されます:&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=Mon..Fri 22:30&lt;br /&gt;
 OnCalendar=Sat,Sun 20:00&lt;br /&gt;
&lt;br /&gt;
ディレクティブの最後にタイムゾーンを指定することもできます (受け入れられる値をリストするには、{{ic|timedatectl list-timezones}} を使用します。)&lt;br /&gt;
&lt;br /&gt;
 OnCalendar=*-*-* 02:00:00 Europe/Paris&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|7|systemd.time}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* {{ic|OnCalendar}} の日時の指定方法は &#039;&#039;systemd-analyze&#039;&#039; ユーティリティの {{ic|calendar}} オプションを使用することでテストすることができます。タイマーユニットで使用したときに次に実行される日時も確認できます。例えば、{{ic|systemd-analyze calendar weekly}} や {{ic|systemd-analyze calendar &amp;quot;Mon,Tue *-*-01..04 12:00:00&amp;quot;}} のようにコマンドを実行することでテストできます。&lt;br /&gt;
* {{Pkg|libfaketime}} でインストールできる {{ic|faketime}} コマンドを使うと、これらのコマンドを使ったいろいろなシナリオをテストするのに便利です。&lt;br /&gt;
* {{ic|daily}} や {{ic|weekly}} などの特殊なイベントの表現は&#039;&#039;特定の起動時間&#039;&#039;を示しているため、同じカレンダーイベントが設定されているタイマーがあった場合、同時に起動します。そのようなことが発生すると、タイマーのサービスがシステムリソースを取り合って、システムパフォーマンスが落ち込む可能性があります。このような問題は {{ic|RandomizedDelaySec}} オプションを使用してタイマーの起動時間を散らすことで解決できます。{{man|5|systemd.timer}} を参照してください。&lt;br /&gt;
* {{ic|AccuracySec}} のデフォルト値 &#039;&#039;1m&#039;&#039; の不正確さを避けるために、オプション {{ic|1=AccuracySec=1us}} を [Timer] セクションに追加します。{{man|5|systemd.timer}} も参照してください。&lt;br /&gt;
* 一部のオプション ({{ic|WakeSystem}}) は、特定のシステム機能を必要とし、タイマーの開始を妨げる場合があり、その結果、次のエラーメッセージが表示されます: &amp;quot;Failed to enter waiting state: Operation not supported&amp;quot; そして &amp;quot;Failed with result &#039;resources&#039;.&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 一時的な .timer ユニット ==&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd-run}} を使うことで一時的な {{ic|.timer}} ユニットを作ることができます。サービスファイルを作成しなくても、特定時刻にコマンドが実行されるように設定することが可能です。例えば、以下のコマンドは30秒後にファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
 # systemd-run --on-active=30 /bin/touch /tmp/foo&lt;br /&gt;
&lt;br /&gt;
タイマーファイルが存在しない既存のサービスファイルを指定することもできます。例えば、以下のコマンドは12.5時間後に {{ic|&#039;&#039;someunit&#039;&#039;.service}} という名前の systemd ユニットを起動します:&lt;br /&gt;
&lt;br /&gt;
 # systemd-run --on-active=&amp;quot;12h 30m&amp;quot; --unit &#039;&#039;someunit&#039;&#039;.service&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|1|systemd-run}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== cron を置き換える ==&lt;br /&gt;
&lt;br /&gt;
おそらく一番有名なジョブスケジューラは [[cron]] ですが、&#039;&#039;systemd&#039;&#039; のタイマーはその代替手段になりえます。&lt;br /&gt;
&lt;br /&gt;
=== メリット ===&lt;br /&gt;
&lt;br /&gt;
タイマーを使う主要なメリットは、それぞれのジョブが固有の &#039;&#039;systemd&#039;&#039; サービスを使うというところに根ざします。そのメリットには以下のようなものがあります:&lt;br /&gt;
&lt;br /&gt;
* タイマーとは別個にジョブを実行することが簡単にできます。これによってデバッグが楽になります。&lt;br /&gt;
* 特定の環境で動作するようにジョブを設定することができます ({{man|5|systemd.exec}} [[man ページ]]を参照)。&lt;br /&gt;
* ジョブを [[cgroups]] の支配下に置けます。&lt;br /&gt;
* 他の &#039;&#039;systemd&#039;&#039; ユニットに依存するようにジョブを設定できます。&lt;br /&gt;
* &#039;&#039;systemd&#039;&#039; の journal でジョブが記録されるのでデバッグが簡単です。&lt;br /&gt;
&lt;br /&gt;
=== 注意事項 ===&lt;br /&gt;
&lt;br /&gt;
cron では簡単にできることが、タイマーユニットを使用する場合、難しかったり不可能であったりすることがいくつか存在します。&lt;br /&gt;
&lt;br /&gt;
* 冗長性: &#039;&#039;systemd&#039;&#039; を使って定期的なジョブを設定するには2つのファイルを作成して2回 {{ic|systemctl}} コマンドを実行します。それに対して crontab には一行を追加するだけです。&lt;br /&gt;
* メール: ジョブが失敗した時にメールを送信する cron の {{ic|MAILTO}} と同等なものは存在しません。ただし各サービスに {{ic|1=OnFailure=}} オプションを使うことで同じような機能を設定することはできます。&lt;br /&gt;
&lt;br /&gt;
=== MAILTO ===&lt;br /&gt;
&lt;br /&gt;
Cron の {{ic|MAILTO}} のように、systemd で、ユニットが失敗したときにメールを送信するように設定できます。それにはまず2つのファイルが必要です: メールを送信するための実行可能ファイルと、実行可能ファイルを起動するための &#039;&#039;.service&#039;&#039;。以下の例では、{{ic|sendmail}} ({{ic|smtp-forwarder}} を含むパッケージにはすべて含まれています) を使用するシェルスクリプトが実行可能ファイルになっています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/local/bin/systemd-email|&amp;lt;nowiki&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
/usr/bin/sendmail -t &amp;lt;&amp;lt;ERRMAIL&lt;br /&gt;
To: $1&lt;br /&gt;
From: systemd &amp;lt;root@$HOSTNAME&amp;gt;&lt;br /&gt;
Subject: $2&lt;br /&gt;
Content-Transfer-Encoding: 8bit&lt;br /&gt;
Content-Type: text/plain; charset=UTF-8&lt;br /&gt;
&lt;br /&gt;
$(systemctl status --full &amp;quot;$2&amp;quot;)&lt;br /&gt;
ERRMAIL&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
どんな実行可能ファイルを使うのであれ、上記のシェルスクリプトのように、最低でも2つの引数が必要になります: 送信先のアドレスと状態を取得するユニットファイルです。以下の &#039;&#039;.service&#039;&#039; はそれらの引数を渡します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/status-email-&#039;&#039;user&#039;&#039;@.service|2=[Unit]&lt;br /&gt;
Description=status email for %i to &#039;&#039;user&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/local/bin/systemd-email &#039;&#039;address&#039;&#039; %i&lt;br /&gt;
User=nobody&lt;br /&gt;
Group=systemd-journal}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;user&#039;&#039;}} はメールを送信するユーザーに、{{ic|&#039;&#039;address&#039;&#039;}} はユーザーのメールアドレスに置き換えてください。受信者はハードコードされますが、インスタンスパラメータとしてユニットファイルを渡すことで、上記のサービスだけで他のユニットのメールも送ることができます。{{ic|status-email-&#039;&#039;user&#039;&#039;@dbus.service}} を[[systemd#ユニットを使う|起動]]して、メールが受け取れることを確認してください。&lt;br /&gt;
&lt;br /&gt;
問題ないようでしたら、メールを送って欲しいユニットの {{ic|[Unit]}} セクションに {{ic|1=OnFailure=status-email-&#039;&#039;user&#039;&#039;@%n.service}} を追加してください。{{ic|%n}} はユニットの名前をテンプレートに指定します。&lt;br /&gt;
&lt;br /&gt;
{{note|&lt;br /&gt;
*[[SSMTP#セキュリティ]] にしたがって SSMTP を設定した場合、ユーザー {{ic|nobody}} は {{ic|/etc/ssmtp/ssmtp.conf}} にアクセスすることができず、{{ic|systemctl start status-email-&#039;&#039;user&#039;&#039;@dbus.service}} コマンドは失敗します。{{ic|status-email-&#039;&#039;user&#039;&#039;@.service}} モジュールの User に {{ic|root}} を使うことでこれを回避できます。&lt;br /&gt;
* メールスクリプトで {{ic|mail -s somelogs &#039;&#039;address&#039;&#039;}} を使用すると、{{ic|mail}} はフォークして、systemd はスクリプトの終了を確認したときに mail プロセスを終了します。{{ic|mail -Ssendwait -s somelogs &#039;&#039;address&#039;&#039;}} として mail がフォークしないようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
=== crontab を使用する ===&lt;br /&gt;
&lt;br /&gt;
crontab を使って定期的なサービスを管理するツールとして {{aur|systemd-cron-next}} と {{aur|systemd-cron}} があります。どちらも [[AUR]] からインストールすることができます。これらのツールには systemd に存在しない {{ic|MAILTO}} 機能が実装されています。&lt;br /&gt;
&lt;br /&gt;
もし、スケジュールされたジョブをまとめて見れるから crontab が好きだという場合は、{{ic|systemctl}} でそれと同じことが可能です。[[#管理]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== 手動で行う ===&lt;br /&gt;
&lt;br /&gt;
既存の crontab から移行する以外に、cron と同じ周期を使用することが望ましい場合があります。定期的に開始する各サービスのタイマーを作成するという面倒な作業を回避するには、[[systemd#ユニットを使う|テンプレートユニット]] を使用します。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/monthly@.timer|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Monthly Timer for %i service&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnCalendar=*-*-1 02:00:00&lt;br /&gt;
AccuracySec=6h&lt;br /&gt;
RandomizedDelaySec=1h&lt;br /&gt;
Persistent=true&lt;br /&gt;
Unit=%i.service&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|タイマーの起動によってすべてのユニットが同時に開始されるのを避けるために、{{ic|AccuracySec}} だけでなく {{ic|RandomizedDelaySec}} を使用する重要性については、{{man|5|systemd.timer|OPTIONS}} を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|monthly@&#039;&#039;unit_name&#039;&#039;.timer}} を [[起動/有効化]] 行うだけで済みます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|テンプレートユニットはネストできます。たとえば、{{ic|monthly@btrfs-scrub@mnt-$(systemd-escape bbb76c63-e4ac-4e39-8897-a120c5d30686).timer}} を [[起動/有効化]] することができます。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;有効期間&amp;quot; の処理 ===&lt;br /&gt;
&lt;br /&gt;
一部のソフトウェアは、最後に実行されてからの経過時間を追跡します。たとえば、最後のダウンロードが 24 時間以内に終了した場合はデータベースの更新をブロックします。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、タイマーは起動したタスクがいつ終了したかを追跡しません。これを回避するには、{{ic|OnUnitInactiveSeconds}} を使用できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/daily-inactive@.timer|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Launch %i service 24hours after it deactivated&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
&#039;&#039;&#039;OnUnitInactiveSec=1day1sec&#039;&#039;&#039;&lt;br /&gt;
Unit=%i.service&lt;br /&gt;
Persistent=true&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|1=Restart=on-failure}} と {{ic|RestartSec}} を併用すると、失敗と成功の後に異なるスケジュールに従ってユニットを再実行することができます。{{man|5|systemd.service|OPTIONS}} を参照して下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== デスクトップ通知 ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|systemd-timer-notify}} は、systemd のタイマーによってサービスが実行された際に、自動的にデスクトップ通知を表示するツールです。通知はサービスの実行中に表示され、サービスの終了とともに自動的に閉じられます。&lt;br /&gt;
&lt;br /&gt;
このツールは、CPU 使用率が高い原因を把握したり、バックアップサービスが終了していない場合にシャットダウンを防いだりするのに役立ちます。&lt;br /&gt;
&lt;br /&gt;
詳細および設定オプションについては、以下のページをご覧ください:&lt;br /&gt;
https://gitlab.com/Zesko/systemd-timer-notify&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* {{man|5|systemd.timer}}&lt;br /&gt;
* [https://fedoraproject.org/wiki/Features/SystemdCalendarTimers Fedora Project wiki] の &#039;&#039;systemd&#039;&#039; カレンダータイマーのページ&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Systemd#Timer_services Gentoo wiki] の &#039;&#039;systemd&#039;&#039; タイマーサービスのセクション&lt;br /&gt;
* {{App|systemd-cron-next|crontab と anacrontab ファイルからタイマーとサービスを生成するツール|https://github.com/systemd-cron/systemd-cron-next|{{Aur|systemd-cron-next}}}}&lt;br /&gt;
* {{App|systemd-cron|cron スクリプトを実行する systemd ユニットが入っています。&#039;&#039;systemd-crontab-generator&#039;&#039; を使って crontab を変換。|https://github.com/systemd-cron/systemd-cron|{{Aur|systemd-cron}}}}&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Makepkg-optimize&amp;diff=40227</id>
		<title>Makepkg-optimize</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Makepkg-optimize&amp;diff=40227"/>
		<updated>2025-04-28T05:48:09Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* chroot を使う */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:パッケージ管理]]&lt;br /&gt;
[[en:Makepkg-optimize]]&lt;br /&gt;
[[ru:Makepkg-optimize]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|DeveloperWiki:クリーンな chroot 内でビルドする}}&lt;br /&gt;
{{Related|Arch User Repository}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
{{AUR|makepkg-optimize}} は [[pacman]] を補助する [https://git.archlinux.org/pacman.git/commit/?id=295a3491adc4af5c8634ac82777212ed9c664457 tidy]、[https://git.archlinux.org/pacman.git/commit/?id=508b4e3ec0cb3e365942f4dc0626edda4789932b buildenv] と [https://git.archlinux.org/pacman.git/commit/?id=0bb04fa16a82db133dd010478c1256bc8500c5e7 executable] スクリプト集です。{{ic|build()}} と {{ic|package()}} で最適化をかけるマクロを提供します。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Arch User Repository]] の他のパッケージと同じく、{{AUR|makepkg-optimize}} に公式サポートはありません。AUR ページのコメント欄を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|makepkg-optimize}} をインストールしてください。また、最適化を行うためにバックエンドをインストールしてください: {{Pkg|openmp}}, {{Pkg|upx}}, {{Pkg|optipng}}, {{AUR|svgo}}, {{Pkg|polly}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|makepkg-optimize}} は現在の [[makepkg]] の設定から {{ic|/etc/makepkg-optimize.conf}} という名前の [https://jlk.fjfi.cvut.cz/arch/manpages/man/makepkg.conf.5 設定ファイル] を生成します。&lt;br /&gt;
&lt;br /&gt;
このファイルには[[Makepkg#最適化されたパッケージの作成|コンパイルフラグ]], [https://aur.archlinux.org/cgit/aur.git/tree/buildenv_ext.conf?h=makepkg-optimize ビルド環境], [https://aur.archlinux.org/cgit/aur.git/tree/pkgopts_ext.conf?h=makepkg-optimize パッケージオプション], [https://aur.archlinux.org/cgit/aur.git/tree/destdirs_ext.conf?h=makepkg-optimize パッケージ出力], [https://aur.archlinux.org/cgit/aur.git/tree/compress-param_max.conf?h=makepkg-optimize 圧縮デフォルト] の追加オプションが記載されています。デフォルトでは全て無効となっています。&lt;br /&gt;
&lt;br /&gt;
== 最適化されたパッケージのビルド ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|最適化によってはパッケージのビルドが上手くいかなくなることがあり、過最適化がパフォーマンスの劣化を引き起こしたりセグメンテーション違反が発生する可能性もあります。}}&lt;br /&gt;
&lt;br /&gt;
[[#設定|最適化の設定]]を行ったら、[[Makepkg#使用方法|ビルド]]するときに設定ファイルを指定してください:&lt;br /&gt;
&lt;br /&gt;
 $ makepkg -c --config /etc/makepkg-optimize.conf&lt;br /&gt;
&lt;br /&gt;
{{Tip|パッケージに古い最適化フラグを再利用しないように、{{ic|makepkg}}に{{ic|-c}}を使用します。[[Makepkg#使用方法]]を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Wikipedia:Profile-guided optimization|Profile-guided optimization]] ではパッケージを&#039;&#039;2回&#039;&#039;ビルド・インストールする必要があります。最初 {{ic|$PROFDEST/&#039;&#039;pkgbase&#039;&#039;.gen}} にプロファイルを生成して、それからプロファイルを {{ic|$PROFDEST/&#039;&#039;pkgbase&#039;&#039;.used}} に移動して適用します。}}&lt;br /&gt;
&lt;br /&gt;
== chroot で最適化されたパッケージのビルド  ==&lt;br /&gt;
&lt;br /&gt;
また、{{ic|makepkg-optimize}} を使って [[en2:DeveloperWiki:Building in a clean chroot#Classic way|chroot]] の中で最適化済みのパッケージをビルドすることもできます。&lt;br /&gt;
&lt;br /&gt;
=== Chroot の設定 ===&lt;br /&gt;
&lt;br /&gt;
[[DeveloperWiki:クリーンな chroot でビルドする#古典的な方法|chroot をセットアップ]]した後、設定が必要です。&lt;br /&gt;
&lt;br /&gt;
==== makepkg-optimize とバックエンドのインストール ====&lt;br /&gt;
&lt;br /&gt;
まず、chroot に最適化マクロのバックエンドをインストール:&lt;br /&gt;
&lt;br /&gt;
 $ arch-nspawn &amp;quot;$CHROOT&amp;quot;/root pacman -S openmp upx optipng polly&lt;br /&gt;
&lt;br /&gt;
それから {{AUR|makepkg-optimize}} と {{AUR|svgo}} を[[Arch User Repository#ビルドファイルを獲得|ダウンロード]]・[[DeveloperWiki:クリーンな chroot でビルドする#chroot でのビルド|ビルド]]してください。&lt;br /&gt;
&lt;br /&gt;
chroot でインストールするには、以下のようにパッケージファイルをコピーしてインストールします:&lt;br /&gt;
&lt;br /&gt;
 # cp svgo-1.2.2-2-any.pkg.tar.xz &amp;quot;$CHROOT&amp;quot;/root/root/&lt;br /&gt;
 $ arch-nspawn &amp;quot;$CHROOT&amp;quot;/root pacman -U /root/svgo-1.2.2-2-any.pkg.tar.xz&lt;br /&gt;
{{Warning|上記の操作を行うと完全な chroot ではなくなります。}}&lt;br /&gt;
&lt;br /&gt;
=== chroot を使う ===&lt;br /&gt;
&lt;br /&gt;
==== パッケージのビルド ====&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集して[[makepkg-optimize#設定|好みの最適化を選択]]してください。&lt;br /&gt;
&lt;br /&gt;
[[DeveloperWiki:クリーンな chroot でビルドする#chroot でのビルド|ビルド]]するときに、{{ic|makepkg}} に設定ファイルを指定してください:&lt;br /&gt;
&lt;br /&gt;
 $ makechrootpkg -c -r &amp;quot;$CHROOT&amp;quot; -- -c --config /etc/makepkg-optimize.conf&lt;br /&gt;
&lt;br /&gt;
===== PGO でビルド =====&lt;br /&gt;
&lt;br /&gt;
{{ic|BUILDENV}} の {{ic|pgo}} オプションは、パッケージのビルド時にこのフラグが有効になっているかどうかによって、プロファイルの &#039;&#039;生成&#039;&#039; または &#039;&#039;適用&#039;&#039; のどちらかを行います。&lt;br /&gt;
クリーンな chroot ビルドでは、プロファイル生成時にはソフトウェアが chroot の外で実行される一方で、再コンパイル時にはプロファイルを chroot 内から適用する必要があるため、これが複雑になります。&lt;br /&gt;
この問題を解決する方法は、バインドマウントされたフォルダーを使って、3つのファイルシステム間を橋渡しすることです。&lt;br /&gt;
&lt;br /&gt;
====== PGO キャッシュの作成 ======&lt;br /&gt;
&lt;br /&gt;
プロファイルデータを保存するフォルダーを作成してバインドします [https://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html profiles]:&lt;br /&gt;
&lt;br /&gt;
 # mkdir -m 777 {&amp;quot;$CHROOT&amp;quot;/{root,&amp;quot;$USER&amp;quot;},}/mnt/pgo&lt;br /&gt;
 # mount -o bind {,&amp;quot;$CHROOT&amp;quot;/root}/mnt/pgo&lt;br /&gt;
 # mount -o bind &amp;quot;$CHROOT&amp;quot;/{root,&amp;quot;$USER&amp;quot;}/mnt/pgo&lt;br /&gt;
&lt;br /&gt;
{{Tip|起動時にこれらのフォルダーを自動的にバインドするには、[[fstab]] を使います。[https://serverfault.com/a/613184 bind] の設定例:&lt;br /&gt;
 #PGODEST&lt;br /&gt;
 /full/path/to/$CHROOT/$USER/mnt/pgo/ /mnt/pgo/ none bind,x-gvfs-hide 0 0&lt;br /&gt;
 /mnt/pgo/ /full/path/to/$CHROOT/root/mnt/pgo/ none bind,x-gvfs-hide 0 0 &lt;br /&gt;
&lt;br /&gt;
{{Note|chroot 内の pgo ディレクトリへのパスは、$VARIABLES を使わずにフルパスで記述してください。}} }}&lt;br /&gt;
&lt;br /&gt;
{{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集し、{{ic|1=PROFDEST=/mnt/pgo}} を設定します。&lt;br /&gt;
&lt;br /&gt;
====== プログラムのプロファイル ======&lt;br /&gt;
&lt;br /&gt;
パッケージをビルドして、[[Pacman#追加コマンド|インストール]]して、テスト実行してみてください。&lt;br /&gt;
&lt;br /&gt;
{{Note|プログラムの {{ic|exit()}} 時にプロファイルは作成されます。[[systemd]] などのデーモンの場合、プロファイルを作成するには再起動が必要となります。再起動したら、再ビルドする前に PGO キャッシュを再バインドしてください。}}&lt;br /&gt;
&lt;br /&gt;
ソフトウェアを一通り使ったら、パッケージを[[#パッケージのビルド|再ビルド]]・再インストールしてください。&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Makepkg-optimize&amp;diff=40226</id>
		<title>Makepkg-optimize</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Makepkg-optimize&amp;diff=40226"/>
		<updated>2025-04-28T05:47:07Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* PGO でビルド */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:パッケージ管理]]&lt;br /&gt;
[[en:Makepkg-optimize]]&lt;br /&gt;
[[ru:Makepkg-optimize]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|DeveloperWiki:クリーンな chroot 内でビルドする}}&lt;br /&gt;
{{Related|Arch User Repository}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
{{AUR|makepkg-optimize}} は [[pacman]] を補助する [https://git.archlinux.org/pacman.git/commit/?id=295a3491adc4af5c8634ac82777212ed9c664457 tidy]、[https://git.archlinux.org/pacman.git/commit/?id=508b4e3ec0cb3e365942f4dc0626edda4789932b buildenv] と [https://git.archlinux.org/pacman.git/commit/?id=0bb04fa16a82db133dd010478c1256bc8500c5e7 executable] スクリプト集です。{{ic|build()}} と {{ic|package()}} で最適化をかけるマクロを提供します。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Arch User Repository]] の他のパッケージと同じく、{{AUR|makepkg-optimize}} に公式サポートはありません。AUR ページのコメント欄を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|makepkg-optimize}} をインストールしてください。また、最適化を行うためにバックエンドをインストールしてください: {{Pkg|openmp}}, {{Pkg|upx}}, {{Pkg|optipng}}, {{AUR|svgo}}, {{Pkg|polly}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|makepkg-optimize}} は現在の [[makepkg]] の設定から {{ic|/etc/makepkg-optimize.conf}} という名前の [https://jlk.fjfi.cvut.cz/arch/manpages/man/makepkg.conf.5 設定ファイル] を生成します。&lt;br /&gt;
&lt;br /&gt;
このファイルには[[Makepkg#最適化されたパッケージの作成|コンパイルフラグ]], [https://aur.archlinux.org/cgit/aur.git/tree/buildenv_ext.conf?h=makepkg-optimize ビルド環境], [https://aur.archlinux.org/cgit/aur.git/tree/pkgopts_ext.conf?h=makepkg-optimize パッケージオプション], [https://aur.archlinux.org/cgit/aur.git/tree/destdirs_ext.conf?h=makepkg-optimize パッケージ出力], [https://aur.archlinux.org/cgit/aur.git/tree/compress-param_max.conf?h=makepkg-optimize 圧縮デフォルト] の追加オプションが記載されています。デフォルトでは全て無効となっています。&lt;br /&gt;
&lt;br /&gt;
== 最適化されたパッケージのビルド ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|最適化によってはパッケージのビルドが上手くいかなくなることがあり、過最適化がパフォーマンスの劣化を引き起こしたりセグメンテーション違反が発生する可能性もあります。}}&lt;br /&gt;
&lt;br /&gt;
[[#設定|最適化の設定]]を行ったら、[[Makepkg#使用方法|ビルド]]するときに設定ファイルを指定してください:&lt;br /&gt;
&lt;br /&gt;
 $ makepkg -c --config /etc/makepkg-optimize.conf&lt;br /&gt;
&lt;br /&gt;
{{Tip|パッケージに古い最適化フラグを再利用しないように、{{ic|makepkg}}に{{ic|-c}}を使用します。[[Makepkg#使用方法]]を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Wikipedia:Profile-guided optimization|Profile-guided optimization]] ではパッケージを&#039;&#039;2回&#039;&#039;ビルド・インストールする必要があります。最初 {{ic|$PROFDEST/&#039;&#039;pkgbase&#039;&#039;.gen}} にプロファイルを生成して、それからプロファイルを {{ic|$PROFDEST/&#039;&#039;pkgbase&#039;&#039;.used}} に移動して適用します。}}&lt;br /&gt;
&lt;br /&gt;
== chroot で最適化されたパッケージのビルド  ==&lt;br /&gt;
&lt;br /&gt;
また、{{ic|makepkg-optimize}} を使って [[en2:DeveloperWiki:Building in a clean chroot#Classic way|chroot]] の中で最適化済みのパッケージをビルドすることもできます。&lt;br /&gt;
&lt;br /&gt;
=== Chroot の設定 ===&lt;br /&gt;
&lt;br /&gt;
[[DeveloperWiki:クリーンな chroot でビルドする#古典的な方法|chroot をセットアップ]]した後、設定が必要です。&lt;br /&gt;
&lt;br /&gt;
==== makepkg-optimize とバックエンドのインストール ====&lt;br /&gt;
&lt;br /&gt;
まず、chroot に最適化マクロのバックエンドをインストール:&lt;br /&gt;
&lt;br /&gt;
 $ arch-nspawn &amp;quot;$CHROOT&amp;quot;/root pacman -S openmp upx optipng polly&lt;br /&gt;
&lt;br /&gt;
それから {{AUR|makepkg-optimize}} と {{AUR|svgo}} を[[Arch User Repository#ビルドファイルを獲得|ダウンロード]]・[[DeveloperWiki:クリーンな chroot でビルドする#chroot でのビルド|ビルド]]してください。&lt;br /&gt;
&lt;br /&gt;
chroot でインストールするには、以下のようにパッケージファイルをコピーしてインストールします:&lt;br /&gt;
&lt;br /&gt;
 # cp svgo-1.2.2-2-any.pkg.tar.xz &amp;quot;$CHROOT&amp;quot;/root/root/&lt;br /&gt;
 $ arch-nspawn &amp;quot;$CHROOT&amp;quot;/root pacman -U /root/svgo-1.2.2-2-any.pkg.tar.xz&lt;br /&gt;
{{Warning|上記の操作を行うと完全な chroot ではなくなります。}}&lt;br /&gt;
&lt;br /&gt;
=== chroot を使う ===&lt;br /&gt;
&lt;br /&gt;
{{Note|chroot を [[en2:DeveloperWiki:Building in a clean chroot#Building in the chroot|アップデート]] するとき、[[#makepkg-optimize とバックエンドのインストール|AUR パッケージ]]は手動で更新が必要です。}}&lt;br /&gt;
&lt;br /&gt;
==== パッケージのビルド ====&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集して[[makepkg-optimize#設定|好みの最適化を選択]]してください。&lt;br /&gt;
&lt;br /&gt;
[[DeveloperWiki:クリーンな chroot でビルドする#chroot でのビルド|ビルド]]するときに、{{ic|makepkg}} に設定ファイルを指定してください:&lt;br /&gt;
&lt;br /&gt;
 $ makechrootpkg -c -r &amp;quot;$CHROOT&amp;quot; -- -c --config /etc/makepkg-optimize.conf&lt;br /&gt;
&lt;br /&gt;
===== PGO でビルド =====&lt;br /&gt;
&lt;br /&gt;
{{ic|BUILDENV}} の {{ic|pgo}} オプションは、パッケージのビルド時にこのフラグが有効になっているかどうかによって、プロファイルの &#039;&#039;生成&#039;&#039; または &#039;&#039;適用&#039;&#039; のどちらかを行います。&lt;br /&gt;
クリーンな chroot ビルドでは、プロファイル生成時にはソフトウェアが chroot の外で実行される一方で、再コンパイル時にはプロファイルを chroot 内から適用する必要があるため、これが複雑になります。&lt;br /&gt;
この問題を解決する方法は、バインドマウントされたフォルダーを使って、3つのファイルシステム間を橋渡しすることです。&lt;br /&gt;
&lt;br /&gt;
====== PGO キャッシュの作成 ======&lt;br /&gt;
&lt;br /&gt;
プロファイルデータを保存するフォルダーを作成してバインドします [https://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html profiles]:&lt;br /&gt;
&lt;br /&gt;
 # mkdir -m 777 {&amp;quot;$CHROOT&amp;quot;/{root,&amp;quot;$USER&amp;quot;},}/mnt/pgo&lt;br /&gt;
 # mount -o bind {,&amp;quot;$CHROOT&amp;quot;/root}/mnt/pgo&lt;br /&gt;
 # mount -o bind &amp;quot;$CHROOT&amp;quot;/{root,&amp;quot;$USER&amp;quot;}/mnt/pgo&lt;br /&gt;
&lt;br /&gt;
{{Tip|起動時にこれらのフォルダーを自動的にバインドするには、[[fstab]] を使います。[https://serverfault.com/a/613184 bind] の設定例:&lt;br /&gt;
 #PGODEST&lt;br /&gt;
 /full/path/to/$CHROOT/$USER/mnt/pgo/ /mnt/pgo/ none bind,x-gvfs-hide 0 0&lt;br /&gt;
 /mnt/pgo/ /full/path/to/$CHROOT/root/mnt/pgo/ none bind,x-gvfs-hide 0 0 &lt;br /&gt;
&lt;br /&gt;
{{Note|chroot 内の pgo ディレクトリへのパスは、$VARIABLES を使わずにフルパスで記述してください。}} }}&lt;br /&gt;
&lt;br /&gt;
{{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集し、{{ic|1=PROFDEST=/mnt/pgo}} を設定します。&lt;br /&gt;
&lt;br /&gt;
====== プログラムのプロファイル ======&lt;br /&gt;
&lt;br /&gt;
パッケージをビルドして、[[Pacman#追加コマンド|インストール]]して、テスト実行してみてください。&lt;br /&gt;
&lt;br /&gt;
{{Note|プログラムの {{ic|exit()}} 時にプロファイルは作成されます。[[systemd]] などのデーモンの場合、プロファイルを作成するには再起動が必要となります。再起動したら、再ビルドする前に PGO キャッシュを再バインドしてください。}}&lt;br /&gt;
&lt;br /&gt;
ソフトウェアを一通り使ったら、パッケージを[[#パッケージのビルド|再ビルド]]・再インストールしてください。&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Makepkg-optimize&amp;diff=40225</id>
		<title>Makepkg-optimize</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Makepkg-optimize&amp;diff=40225"/>
		<updated>2025-04-28T05:45:16Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* PGO キャッシュの作成 */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:パッケージ管理]]&lt;br /&gt;
[[en:Makepkg-optimize]]&lt;br /&gt;
[[ru:Makepkg-optimize]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|DeveloperWiki:クリーンな chroot 内でビルドする}}&lt;br /&gt;
{{Related|Arch User Repository}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
{{AUR|makepkg-optimize}} は [[pacman]] を補助する [https://git.archlinux.org/pacman.git/commit/?id=295a3491adc4af5c8634ac82777212ed9c664457 tidy]、[https://git.archlinux.org/pacman.git/commit/?id=508b4e3ec0cb3e365942f4dc0626edda4789932b buildenv] と [https://git.archlinux.org/pacman.git/commit/?id=0bb04fa16a82db133dd010478c1256bc8500c5e7 executable] スクリプト集です。{{ic|build()}} と {{ic|package()}} で最適化をかけるマクロを提供します。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Arch User Repository]] の他のパッケージと同じく、{{AUR|makepkg-optimize}} に公式サポートはありません。AUR ページのコメント欄を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|makepkg-optimize}} をインストールしてください。また、最適化を行うためにバックエンドをインストールしてください: {{Pkg|openmp}}, {{Pkg|upx}}, {{Pkg|optipng}}, {{AUR|svgo}}, {{Pkg|polly}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|makepkg-optimize}} は現在の [[makepkg]] の設定から {{ic|/etc/makepkg-optimize.conf}} という名前の [https://jlk.fjfi.cvut.cz/arch/manpages/man/makepkg.conf.5 設定ファイル] を生成します。&lt;br /&gt;
&lt;br /&gt;
このファイルには[[Makepkg#最適化されたパッケージの作成|コンパイルフラグ]], [https://aur.archlinux.org/cgit/aur.git/tree/buildenv_ext.conf?h=makepkg-optimize ビルド環境], [https://aur.archlinux.org/cgit/aur.git/tree/pkgopts_ext.conf?h=makepkg-optimize パッケージオプション], [https://aur.archlinux.org/cgit/aur.git/tree/destdirs_ext.conf?h=makepkg-optimize パッケージ出力], [https://aur.archlinux.org/cgit/aur.git/tree/compress-param_max.conf?h=makepkg-optimize 圧縮デフォルト] の追加オプションが記載されています。デフォルトでは全て無効となっています。&lt;br /&gt;
&lt;br /&gt;
== 最適化されたパッケージのビルド ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|最適化によってはパッケージのビルドが上手くいかなくなることがあり、過最適化がパフォーマンスの劣化を引き起こしたりセグメンテーション違反が発生する可能性もあります。}}&lt;br /&gt;
&lt;br /&gt;
[[#設定|最適化の設定]]を行ったら、[[Makepkg#使用方法|ビルド]]するときに設定ファイルを指定してください:&lt;br /&gt;
&lt;br /&gt;
 $ makepkg -c --config /etc/makepkg-optimize.conf&lt;br /&gt;
&lt;br /&gt;
{{Tip|パッケージに古い最適化フラグを再利用しないように、{{ic|makepkg}}に{{ic|-c}}を使用します。[[Makepkg#使用方法]]を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Wikipedia:Profile-guided optimization|Profile-guided optimization]] ではパッケージを&#039;&#039;2回&#039;&#039;ビルド・インストールする必要があります。最初 {{ic|$PROFDEST/&#039;&#039;pkgbase&#039;&#039;.gen}} にプロファイルを生成して、それからプロファイルを {{ic|$PROFDEST/&#039;&#039;pkgbase&#039;&#039;.used}} に移動して適用します。}}&lt;br /&gt;
&lt;br /&gt;
== chroot で最適化されたパッケージのビルド  ==&lt;br /&gt;
&lt;br /&gt;
また、{{ic|makepkg-optimize}} を使って [[en2:DeveloperWiki:Building in a clean chroot#Classic way|chroot]] の中で最適化済みのパッケージをビルドすることもできます。&lt;br /&gt;
&lt;br /&gt;
=== Chroot の設定 ===&lt;br /&gt;
&lt;br /&gt;
[[DeveloperWiki:クリーンな chroot でビルドする#古典的な方法|chroot をセットアップ]]した後、設定が必要です。&lt;br /&gt;
&lt;br /&gt;
==== makepkg-optimize とバックエンドのインストール ====&lt;br /&gt;
&lt;br /&gt;
まず、chroot に最適化マクロのバックエンドをインストール:&lt;br /&gt;
&lt;br /&gt;
 $ arch-nspawn &amp;quot;$CHROOT&amp;quot;/root pacman -S openmp upx optipng polly&lt;br /&gt;
&lt;br /&gt;
それから {{AUR|makepkg-optimize}} と {{AUR|svgo}} を[[Arch User Repository#ビルドファイルを獲得|ダウンロード]]・[[DeveloperWiki:クリーンな chroot でビルドする#chroot でのビルド|ビルド]]してください。&lt;br /&gt;
&lt;br /&gt;
chroot でインストールするには、以下のようにパッケージファイルをコピーしてインストールします:&lt;br /&gt;
&lt;br /&gt;
 # cp svgo-1.2.2-2-any.pkg.tar.xz &amp;quot;$CHROOT&amp;quot;/root/root/&lt;br /&gt;
 $ arch-nspawn &amp;quot;$CHROOT&amp;quot;/root pacman -U /root/svgo-1.2.2-2-any.pkg.tar.xz&lt;br /&gt;
{{Warning|上記の操作を行うと完全な chroot ではなくなります。}}&lt;br /&gt;
&lt;br /&gt;
=== chroot を使う ===&lt;br /&gt;
&lt;br /&gt;
{{Note|chroot を [[en2:DeveloperWiki:Building in a clean chroot#Building in the chroot|アップデート]] するとき、[[#makepkg-optimize とバックエンドのインストール|AUR パッケージ]]は手動で更新が必要です。}}&lt;br /&gt;
&lt;br /&gt;
==== パッケージのビルド ====&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集して[[makepkg-optimize#設定|好みの最適化を選択]]してください。&lt;br /&gt;
&lt;br /&gt;
[[DeveloperWiki:クリーンな chroot でビルドする#chroot でのビルド|ビルド]]するときに、{{ic|makepkg}} に設定ファイルを指定してください:&lt;br /&gt;
&lt;br /&gt;
 $ makechrootpkg -c -r &amp;quot;$CHROOT&amp;quot; -- -c --config /etc/makepkg-optimize.conf&lt;br /&gt;
&lt;br /&gt;
===== PGO でビルド =====&lt;br /&gt;
&lt;br /&gt;
====== PGO キャッシュの作成 ======&lt;br /&gt;
&lt;br /&gt;
プロファイルデータを保存するフォルダーを作成してバインドします [https://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html profiles]:&lt;br /&gt;
&lt;br /&gt;
 # mkdir -m 777 {&amp;quot;$CHROOT&amp;quot;/{root,&amp;quot;$USER&amp;quot;},}/mnt/pgo&lt;br /&gt;
 # mount -o bind {,&amp;quot;$CHROOT&amp;quot;/root}/mnt/pgo&lt;br /&gt;
 # mount -o bind &amp;quot;$CHROOT&amp;quot;/{root,&amp;quot;$USER&amp;quot;}/mnt/pgo&lt;br /&gt;
&lt;br /&gt;
{{Tip|起動時にこれらのフォルダーを自動的にバインドするには、[[fstab]] を使います。[https://serverfault.com/a/613184 bind] の設定例:&lt;br /&gt;
 #PGODEST&lt;br /&gt;
 /full/path/to/$CHROOT/$USER/mnt/pgo/ /mnt/pgo/ none bind,x-gvfs-hide 0 0&lt;br /&gt;
 /mnt/pgo/ /full/path/to/$CHROOT/root/mnt/pgo/ none bind,x-gvfs-hide 0 0 &lt;br /&gt;
&lt;br /&gt;
{{Note|chroot 内の pgo ディレクトリへのパスは、$VARIABLES を使わずにフルパスで記述してください。}} }}&lt;br /&gt;
&lt;br /&gt;
{{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集し、{{ic|1=PROFDEST=/mnt/pgo}} を設定します。&lt;br /&gt;
&lt;br /&gt;
====== プログラムのプロファイル ======&lt;br /&gt;
&lt;br /&gt;
パッケージをビルドして、[[Pacman#追加コマンド|インストール]]して、テスト実行してみてください。&lt;br /&gt;
&lt;br /&gt;
{{Note|プログラムの {{ic|exit()}} 時にプロファイルは作成されます。[[systemd]] などのデーモンの場合、プロファイルを作成するには再起動が必要となります。再起動したら、再ビルドする前に PGO キャッシュを再バインドしてください。}}&lt;br /&gt;
&lt;br /&gt;
ソフトウェアを一通り使ったら、パッケージを[[#パッケージのビルド|再ビルド]]・再インストールしてください。&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Ext4&amp;diff=40219</id>
		<title>Ext4</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Ext4&amp;diff=40219"/>
		<updated>2025-04-26T15:24:05Z</updated>

		<summary type="html">&lt;p&gt;Kgx: 翻訳ステータスを更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[de:Ext4]]&lt;br /&gt;
[[en:Ext4]]&lt;br /&gt;
[[es:Ext4]]&lt;br /&gt;
[[fr:Ext4]]&lt;br /&gt;
[[ru:Ext4]]&lt;br /&gt;
[[zh-hans:Ext4]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related|Ext3}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
Ext4 は Linux で一番よく使われているファイルシステム、Ext3 の発展版です。多くの点で、Ext3 から Ext4 になって Ext2 から Ext3 に進んだときよりも大きな改善がされています。Ext3 では Ext2 にジャーナリングを追加したのがほとんどでしたが、Ext4 ではファイルデータを保存するファイルシステムの重要なデータ構造にメスが入っています。その結果、改良された設計、優れたパフォーマンス、信頼性、機能性を備えたファイルシステムが誕生しました (ソース: [http://kernelnewbies.org/Ext4 Ext4 - Linux Kernel Newbies])&lt;br /&gt;
&lt;br /&gt;
== 新しく ext4 ファイルシステムを作成 ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|e2fsprogs}} を [[インストール]] します。&lt;br /&gt;
&lt;br /&gt;
パーティションをフォーマットするには次を実行:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
*オプションについては {{man|8|mke2fs}} の [[man ページ]]を見て下さい。{{ic|/etc/mke2fs.conf}} を編集すればデフォルトのオプションを見たり設定できます。&lt;br /&gt;
*サポートされている場合は、[[Ext4#メタデータチェックサムを有効化する|メタデータチェックサム]] を有効にすることをお勧めします。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Bytes-per-inode 比率 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mke2fs&#039;&#039;&#039; はひとつの inode に対してディスク上に &#039;&#039;bytes-per-inode&#039;&#039; バイト分の領域を作成します。&#039;&#039;bytes-per-inode&#039;&#039; 比率を大きくすることで、作成される inode は少なくなります。詳しくは {{man|8|mke2fs}} を参照。&lt;br /&gt;
&lt;br /&gt;
新しいファイルやディレクトリ、シンボリックリンクなどを作成するとき [[Wikipedia:Inode|inode]] が最低でもひとつは必要です。inode の数が少なすぎると、たとえディスクに空き容量があったとしてもファイルシステムにファイルを作成できなくなります。&lt;br /&gt;
&lt;br /&gt;
ファイルシステムを作成した後に bytes-per-inode 比率や inode の数を変更することはできないため、ファイルが作成できなくなってしまわないように {{ic|mkfs.ext4}} はデフォルトでは比率を低くして inode に対して16384バイト (16Kb) を割り当てます。&lt;br /&gt;
&lt;br /&gt;
しかしながら、1GB 以上のファイルが多数存在してファイルの平均容量がメガバイト級になるような使い方をしているパーティションの場合、inode の数が多すぎてファイルの作成では inode の限界に絶対に達しないということになります。&lt;br /&gt;
&lt;br /&gt;
未使用の inode にも256バイト取られるのでディスク領域の無駄使いです (256バイトという数字は {{ic|/etc/mke2fs.conf}} で設定されていますが変更してはいけません) 256バイトでも数百万の inode に換算するとギガバイト単位で容量を無駄にしていることになります。&lt;br /&gt;
&lt;br /&gt;
{{ic|df}} と {{ic|df -i}} を実行したときの {{ic|{I}Use%}} の値を比較することでどれくらい無駄になっているのか確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ df -h /home|&lt;br /&gt;
Filesystem              Size    Used   Avail  &#039;&#039;&#039;Use%&#039;&#039;&#039;   Mounted on&lt;br /&gt;
/dev/mapper/lvm-home    115G    56G    59G    &#039;&#039;&#039;49%&#039;&#039;&#039;    /home}}&lt;br /&gt;
{{hc|$ df -hi /home|&lt;br /&gt;
Filesystem              Inodes  IUsed  IFree  &#039;&#039;&#039;IUse%&#039;&#039;&#039;  Mounted on&lt;br /&gt;
/dev/mapper/lvm-home    1.8M    1.1K   1.8M   &#039;&#039;&#039;1%&#039;&#039;&#039;     /home}}&lt;br /&gt;
&lt;br /&gt;
bytes-per-inode 比率を変更するには、{{ic|-T &#039;&#039;usage-type&#039;&#039;}} オプションを使用します。{{ic|/etc/mke2fs.conf}} で定義されたタイプを使用してファイルシステムの利用方法を指定できます。{{ic|largefile}} や {{ic|largefile4}} タイプは inode に対してそれぞれ 1 MiB と 4 MiB という大きな容量を割り当てます。以下のように使うことができます:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -T largefile /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|-i}} オプションを使って bytes-per-inode 比率を直接設定することもできます。例えば {{ic|-i 2097152}} なら 2 MiB、{{ic|-i 6291456}} なら 6 MiB になります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|逆に、メールやニュースグループのアイテムなどで小さなファイルを何百万も保存するような使い方をする場合、{{ic|news}} (ひとつの inode に4096バイトを割り当て) や {{ic|small}} (inode 自体のサイズやブロックサイズも小さくする) などのタイプを使うこともできます。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|シンボリックリンクを大量に使用する場合は、bytes-per-inode 比率を低くして inode の数量は大きくしてください。シンボリックリンクを作成しても容量は取られませんが inode はひとつ消費されるので、ファイルシステムの inode をあっという間に使い切ってしまう可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
=== 予約ブロック ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、ファイルシステムの 5% はフラグメントが起こらないように root ユーザー用に予約されます。非特権のプロセスがファイルシステムに書き込めなくなってからも root が使用しているデーモンは正しく動作し続けることができます (詳しくは {{man|8|mke2fs}} を参照)。&lt;br /&gt;
&lt;br /&gt;
最近の大容量ディスクでは、パーティションを長期アーカイブとして使用したり、システム運用に重要でない場合({{ic|/home}}など)必要以上に大きな値を設定します。予約ブロックに関する ext4 開発者の Ted Ts&#039;o の意見は [https://www.redhat.com/archives/ext3-users/2009-January/msg00026.html このメール] を、このトピックに関する一般的な背景は [https://superuser.com/questions/1256074/how-much-space-to-leave-free-on-hdd-or-ssd/1257550#1257550 このスーパーユーザの回答] を参照してください。&lt;br /&gt;
&lt;br /&gt;
パーティションが以下の条件を満たしているならば、ディスク容量を増やすために予約ブロックの割合を減らしても大抵は問題ありません: &lt;br /&gt;
&lt;br /&gt;
*パーティションがとても大きい (例えば 50GB 以上)&lt;br /&gt;
*長期保存用のアーカイブとして使っている、頻繁にファイルを作成したり削除することがない。&lt;br /&gt;
&lt;br /&gt;
ext4 関連のユーティリティを使うときに {{ic|-m}} オプションで予約ブロックの割合を指定できます。&lt;br /&gt;
&lt;br /&gt;
ファイルシステムの作成時に予約ブロックを全く作成しないようにするには:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -m 0 /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
パーティションの予約ブロックの割合を 1% に設定するには:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -m 1 /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
予約ブロック数をギガバイト単位の絶対サイズに設定する場合は、{{ic|-r}} を使用します。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -r $((&#039;&#039;ngigs&#039;&#039; * 1024**3 / &#039;&#039;blocksize&#039;&#039;)) /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;blocksize&#039;&#039;}} はファイルシステムのブロックサイズをバイト単位で指定します。これはほとんどの場合 4096 ですが、念のため確認することができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|# tune2fs -l /dev/&#039;&#039;device&#039;&#039; {{!}} egrep &#039;^Block size:&#039;|&lt;br /&gt;
Block size:               4096&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|$(())}} 構文は、数式展開のための構文です。この構文は {{Pkg|bash}} と {{Pkg|zsh}} では動作しますが、{{Pkg|fish}} では動作しません。&#039;&#039;fish&#039;&#039; では、このような構文になります。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -r (math &#039;ngigs * 1024^3 / blocksize&#039;) /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これらのコマンドは、現在マウントされているファイルシステムに適用することができ、変更は即座に反映されます。デバイス名は {{man|8|findmnt}} で調べることができます。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -m 1 &amp;quot;$(findmnt -no SOURCE &#039;&#039;/the/mount/point&#039;&#039;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
現在の予約ブロック数を問い合わせる場合。&lt;br /&gt;
&lt;br /&gt;
{{hc|# tune2fs -l /dev/mapper/proxima-root {{!}} egrep &#039;^Reserved block count:&#039;|&lt;br /&gt;
Reserved block count:     2975334&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これはブロック数なので、これにファイルシステムのブロックサイズを掛けて、バイト数やギガバイト数を得る必要があります。{{ic|1=2975334 * 4096 / 1024**3 = 11.34 GiB}} です。&lt;br /&gt;
&lt;br /&gt;
==ext2/ext3 から ext4 に移行==&lt;br /&gt;
&lt;br /&gt;
===ext2/ext3 パーティションを変換せずに ext4 としてマウント===&lt;br /&gt;
&lt;br /&gt;
====理由====&lt;br /&gt;
&lt;br /&gt;
ext4 を完全に変換する案と ext2/ext3 をそのまま使用する案の折衷案として、既存の ext2/ext3 パーティションを ext4 としてマウントする方法があります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;利点:&#039;&#039;&#039;&lt;br /&gt;
* 互換性 (ext2/ext3 としてファイルシステムをマウントできます) &amp;amp;ndash; ext4 のサポートがないオペレーティングシステムからもファイルシステムを読み込むことが可能です (例: Windows の ext2/ext3 ドライバー)&lt;br /&gt;
* パフォーマンスが向上 (ext4 パーティションに完全に変換するのよりは劣ります) &amp;amp;ndash; 詳しくは [http://kernelnewbies.org/Ext4] や [http://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_fujita.pdf] を見てください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;欠点:&#039;&#039;&#039;&lt;br /&gt;
* ext4 の機能を全て活用することはできません (マルチブロックアロケーションや遅延アロケーションなどのディスクフォーマットに変更を与える機能は使えません)&lt;br /&gt;
&lt;br /&gt;
{{Note|ext4 が比較的新しいファイルシステムということ以外に (このこと自体をリスクと考えることもできます)、この方法を使用することで不利益になることは特にありません。}}&lt;br /&gt;
&lt;br /&gt;
====方法====&lt;br /&gt;
&lt;br /&gt;
# {{ic|/etc/fstab}} を編集して ext4 としてマウントしたいパーティションの &#039;type&#039; を ext2/ext3 から ext4 に変更してください。&lt;br /&gt;
# 変更したパーティションを再マウントします。&lt;br /&gt;
&lt;br /&gt;
===ext2/ext3 パーティションを ext4 に変換===&lt;br /&gt;
&lt;br /&gt;
====理由====&lt;br /&gt;
&lt;br /&gt;
ext4 の能力を活かすには、非可逆の変換をする必要があります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;利点:&#039;&#039;&#039;&lt;br /&gt;
* パフォーマンスの向上と新機能 &amp;amp;ndash; 詳しくは [http://kernelnewbies.org/Ext4] や [http://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_fujita.pdf] を見てください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;欠点:&#039;&#039;&#039;&lt;br /&gt;
* {{ic|/boot}} パーティションなど、静的なファイルしか存在しない場合、新機能を使うメリットはありません。さらに、ジャーナリングによって性能がむしろ落ちる可能性もあります。&lt;br /&gt;
* 一方通行 (ext4 パーティションを ext2/ext3 に&#039;ダウングレード&#039;することはできません) ただしエクステントなどのオプションを有効にしなければ後方互換性を確保できます。&lt;br /&gt;
&lt;br /&gt;
====方法====&lt;br /&gt;
&lt;br /&gt;
以下の手順は [http://ext4.wiki.kernel.org/index.php/Ext4_Howto カーネルドキュメント] と [https://bbs.archlinux.org/viewtopic.php?id=61602 フォーラムスレッド] から引用しています。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* システムのルートパーティションを変換する場合、再起動時にフォールバックの initramfs が使えるようになっていることを確認してください。また、変換する前に {{ic|/etc/mkinitcpio.conf}} の [[Mkinitcpio#MODULES|MODULES]] 行に {{ic|ext4}} を追加して {{Ic|mkinitcpio -p linux}} でデフォルトの initramfs を再作成してください。&lt;br /&gt;
* 分割している {{ic|/boot}} パーティションを変換する場合、[[ブートローダー]]が ext4 からの起動に対応していることを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;[[バックアッププログラム|バックアップ]]&#039;&#039;&#039;を行なって下さい。ext4 に変換する ext3 パーティションに存在するデータを全てバックアップします。特に / (root) パーティションをバックアップする場合は、[http://clonezilla.org Clonezilla] が役に立ちます。&lt;br /&gt;
# {{ic|/etc/fstab}} を編集して ext4 に変換するパーティションの &#039;type&#039; を ext3 から ext4 に変換してください。&lt;br /&gt;
# (必要であれば) ライブメディアを起動します。{{Pkg|e2fsprogs}} で変換を行う際はドライブがマウントされていない状態になっている必要があります。ドライブの root (/) パーティションを変換するときは、他のライブメディアから起動して変換するのが一番簡単です。&lt;br /&gt;
# パーティションがマウントされていないことを確認してください&lt;br /&gt;
# ext2 パーティションを変換する場合、まずは {{ic|tune2fs -j /dev/sdxX}} を root で実行して[[ファイルシステム#ジャーナリング|ジャーナル]]を追加して ext3 パーティションに変換してください。&lt;br /&gt;
# {{Ic|tune2fs -O extent,uninit_bg,dir_index /dev/sdxX}} を root で実行 ({{Ic|/dev/sdxX}} は変換するパーティションのパスに置き換えて下さい、例: {{Ic|/dev/sda1}})。ext4 に変換されます (不可逆です)&lt;br /&gt;
# root で {{Ic|fsck -f /dev/sdxX}} を実行。&lt;br /&gt;
#* ファイルシステムのチェックを実行しないとファイルシステムを読み込めなくなります。&#039;&#039;fsck&#039;&#039; の実行は必須です。グループ記述子のチェックサムエラーが発見されます。これは仕様通りの動作です。{{ic|-f}} オプションはファイルシステムに問題がない場合でも強制的にチェックを実行します。{{ic|-p}} オプションを使用して自動修復させることもできます (オプションを使用しない場合、エラーに対して入力を求められます)&lt;br /&gt;
# 推奨: パーティションをマウントして {{Ic|e4defrag -c -v /dev/sdxX}} を実行。&lt;br /&gt;
#* ファイルシステムが ext4 に変換されても、変換前に書き込まれたファイルは ext4 のエクステントオプションを利用することができません。エクステントオプションは巨大なファイルの操作を高速化しフラグメンテーションを減らしてファイルシステムのチェック時間を短縮します。ext4 を活用するには、全てのファイルをディスクに再書き込みする必要があります。&#039;&#039;e4defrag&#039;&#039; を使うことで問題を解決できます。&lt;br /&gt;
# Arch Linux を再起動してください。&lt;br /&gt;
&lt;br /&gt;
== パフォーマンスの向上 ==&lt;br /&gt;
&lt;br /&gt;
=== アクセス時間の更新を無効にする ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ext4&#039;&#039;ファイルシステムは、ファイルが最後にアクセスされた時刻に関する情報を記録しますが、これには記録に伴うコストがあります。{{ic|noatime}} や関連するオプションについては、[[fstab#atime オプション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== コミット間隔の増加 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|commit}} オプションで長い時間遅延を提供することにより、データとメタデータの同期間隔を増やすことができます。&lt;br /&gt;
&lt;br /&gt;
デフォルトの5秒は、電源が失われた場合、最新の5秒の作業が失われることを意味します。&lt;br /&gt;
5秒ごとにすべてのデータ/ジャーナルを物理メディアに完全に同期します。 ただし、ジャーナリングのおかげで、ファイルシステムが損傷することはありません。&lt;br /&gt;
次の [[fstab]] は、 {{ic|commit}} の使用法を示しています。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
/dev/sda5    /    ext4    defaults,&#039;&#039;&#039;commit=60&#039;&#039;&#039;    0    1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== バリアとパフォーマンス ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|バリアを無効化すると、電源が失われたときにキャッシュが正しく書き込まれるか保証がされなくなります。これによってファイルシステムの破壊やデータ損失が発生する場合があります。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ext4&#039;&#039; はデフォルトで書き込みバリアを有効にします。これにより、書き込みキャッシュの電源が失われた場合でも、ファイルシステムのメタデータがディスク上に正しく書き込まれ、順序付けされることが保証されます。これには、特に &#039;&#039;fsync&#039;&#039; を頻繁に使用するアプリケーションや、小さなファイルを多数作成および削除するアプリケーションの場合、パフォーマンスにコストが伴います。何らかの方法でバッテリーバックアップが行われている書き込みキャッシュを持つディスクの場合、バリアを無効にするとパフォーマンスが安全に向上する可能性があります。&lt;br /&gt;
&lt;br /&gt;
バリアをオフにしたいときは {{ic|/etc/fstab}} の変更したいファイルシステムに {{Ic|1=barrier=0}} オプションを追加してください。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
/dev/sda5    /    ext4    defaults,&#039;&#039;&#039;barrier=0&#039;&#039;&#039;    0    1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ジャーナリングの無効化 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|ジャーナリングなしでファイルシステムを使用すると、停電やカーネルのロックアップなどの突然のマウント解除の場合にデータが失われる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ext4&#039;&#039; を使用してジャーナルを無効にするには、マウントされていないディスクで次のコマンドを使用します。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O &amp;quot;^has_journal&amp;quot; /dev/sdXN&lt;br /&gt;
&lt;br /&gt;
=== ジャーナルを使用してパフォーマンスを最適化する ===&lt;br /&gt;
&lt;br /&gt;
[https://lwn.net/Articles/842385/ Fast commits for ext4] の記事のイントロダクションは、マウントオプション {{ic|1=data=journal}} や {{ic|1=data=writeback}} が、デフォルトの {{ic|1=data=ordered}} 動作モードと比較して、どのように全体的な ext4 のパフォーマンスを高速化するかを簡潔にまとめています。さらに、ジャーナリング自体は、{{ic|journal_async_commit}} マウントオプションを追加することで高速化できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|journal_async_commit}} マウントオプションは、デフォルトのマウントオプションである {{ic|1=data=ordered}} と一緒に使うと[https://patchwork.ozlabs.org/patch/414750/ 動作しません]。なので、明示的に {{ic|&#039;&#039;ext4_device&#039;&#039;}} を別のモードでマウントしてください。{{man|5|ext4|3=data=}} を見てください。}}&lt;br /&gt;
&lt;br /&gt;
さらに別のオプションとして、新しいジャーナルフォーマットを使用する方法があります。詳細は [[#fast_commit を有効化]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 外部ジャーナルデバイス ====&lt;br /&gt;
&lt;br /&gt;
デフォルト以外の {{ic|1=data=}} オプションを使用している場合、専用のジャーナルデバイスを使用することで、ファイル操作が高速化される場合もあります。例えば、データには比較的遅いデバイスを使用し、ジャーナルにはより高速だが小容量の別デバイスを使用する場合などです。別のジャーナルデバイスを設定するには:&lt;br /&gt;
&lt;br /&gt;
 # mke2fs -O journal_dev /dev/&#039;&#039;journal_device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;ext4_device&#039;&#039;}} のジャーナルとして {{ic|&#039;&#039;journal_device&#039;&#039;}} を割り当てるには、次を使用してください:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -J device=/dev/&#039;&#039;journal_device&#039;&#039; /dev/&#039;&#039;ext4_device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;ext4_device&#039;&#039;}} に新しいファイルシステムを作成したい場合は、{{ic|tune2fs}} の代わりに {{ic|mkfs.ext4}} を使用してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;journal_device&#039;&#039;}} を {{ic|&#039;&#039;ext4_device&#039;&#039;}} の依存関係として追加するには、{{ic|/etc/fstab}} で {{ic|x-systemd.requires}} マウントオプションを使用します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
/dev/&#039;&#039;ext4_device&#039;&#039;    /    ext4    defaults,&#039;&#039;&#039;x-systemd.requires=/dev/&#039;&#039;journal_device&#039;&#039;&#039;&#039;&#039;    0    1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これにより、{{ic|&#039;&#039;journal_device&#039;&#039;}} にセットアップ (例:暗号化) が必要な場合でも問題を防ぐことができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|UUID}} とジャーナルデバイスの devnum の両方が ext4 ファイルシステムに保存されます。ジャーナルデバイスの読み込み時には devnum のみが使用されるため、ディスクの並び順が変更されると問題が発生します。devnum が間違ったデバイスを指している場合、Linux はファイルシステムのマウントを拒否しますが、以下の回避策が役立つかもしれません:&lt;br /&gt;
&lt;br /&gt;
パスを使用してジャーナルのロードを強制する {{ic|journal_path}} マウントオプションを使い、保存された devnum を無視する:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
/dev/&#039;&#039;ext4_device&#039;&#039;    /    ext4    defaults,x-systemd.requires=/dev/&#039;&#039;journal_device&#039;&#039;,&#039;&#039;&#039;journal_path=/dev/&#039;&#039;journal_device&#039;&#039;&#039;&#039;&#039;    0    1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|e2fsck}} は {{ic|UUID}} を使ってジャーナルデバイスを検索し、ずれていた場合には保存された devnum を修正します。ただし、これを破損とみなして不要なフルファイルシステムスキャンをトリガーしてしまいます([https://github.com/tytso/e2fsprogs/pull/26] を参照)これを {{ic|e2fsck}} の [https://man.archlinux.org/man/e2fsck.conf.5.en 設定ファイル]で無効化できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/e2fsck.conf|2=&lt;br /&gt;
[problems]&lt;br /&gt;
# PR_0_EXTERNAL_JOURNAL_HINT: Superblock hint for external superblock should be xxxx&lt;br /&gt;
0x000033 = {&lt;br /&gt;
    # Tell e2fsck that if this problem is encountered, it can be fixed but should&lt;br /&gt;
    # not be considered corruption, the filesystem should still be marked clean.&lt;br /&gt;
    not_a_fix = true&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;
Linux 4.1 以降、ext4 はファイル暗号化をネイティブにサポートしています。 [[fscrypt]] の記事を参照してください。 暗号化はディレクトリレベルで適用され、ディレクトリごとに異なる暗号化キーを使用できます。 これは、ブロックデバイスレベルの暗号化である [[dm-crypt]] と、スタック暗号化ファイルシステムである [[eCryptfs]] の両方とは異なります。&lt;br /&gt;
&lt;br /&gt;
=== メタデータチェックサムを有効化する ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムが {{Pkg|e2fsprogs}} で作成されている場合。1.43 (2016) 以降では、メタデータチェックサムがデフォルトで有効になっています。既存のファイルシステムを変換して、メタデータチェックサムのサポートを有効にすることができます。&lt;br /&gt;
&lt;br /&gt;
CPU が SSE 4.2 をサポートしている場合、{{ic|crc32c_intel}} が有効であることを確認してください。ハードウェアアクセラレーションによる CRC32C アルゴリズム [https://ext4.wiki.kernel.org/index.php/Ext4_Metadata_Checksums#Benchmarking] を有効にするために [[カーネルモジュール]] がロードされています。もしそうでなければ、代わりに {{ic|crc32c_generic}} モジュールをロードしてください。&lt;br /&gt;
&lt;br /&gt;
メタデータチェックサムの詳細については、[https://ext4.wiki.kernel.org/index.php/Ext4_Metadata_Checksums ext4 wiki] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|dumpe2fs}} を使用して、ファイルシステムで有効になっている機能を確認します。&lt;br /&gt;
 # dumpe2fs -h &#039;&#039;/dev/path/to/disk&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイルシステムをマウントしないでください。}}&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|e2fsck}} を使用してパーティションをチェックし、最適化する必要があります。&lt;br /&gt;
&lt;br /&gt;
 # e2fsck -Df &#039;&#039;/dev/path/to/disk&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
ファイルシステムを64ビットに変換します。&lt;br /&gt;
&lt;br /&gt;
 # resize2fs -b &#039;&#039;/dev/path/to/disk&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
最後に、チェックサムサポートを有効にします。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O metadata_csum &#039;&#039;/dev/path/to/disk&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
検証します:&lt;br /&gt;
&lt;br /&gt;
{{hc|# dumpe2fs -h &#039;&#039;/dev/path/to/disk&#039;&#039; {{!}} grep features:|2=&lt;br /&gt;
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent &#039;&#039;&#039;64bit&#039;&#039;&#039; flex_bg sparse_super large_file huge_file dir_nlink extra_isize &#039;&#039;&#039;metadata_csum&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== LVM を使用する場合のメンテナンス ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;e2scrub&#039;&#039; ツールは、ext4ファイルシステムのメタデータをチェックするためのツールで、特に LVM (Logical Volume Manager) の論理ボリュームで使用されている場合に適用されます。このチェックを行うには、ボリュームグループに256MiBの未割り当てスペースが必要です。これは、ツールがチェック用にスナップショットを作成するためです。&lt;br /&gt;
&lt;br /&gt;
{{man|8|e2scrub}} マニュアルによると、このツールはエラーを修復するものではなく、エラーを報告し、次回のマウント前に &#039;&#039;e2fsck&#039;&#039;({{man|8|e2fsck}} を参照)の実行が必要であることをファイルシステムにマークします。&lt;br /&gt;
&lt;br /&gt;
このチェックは自動化可能で、例えば、パッケージに含まれる {{ic|e2scrub_all.timer}} ユニットを有効化することで設定できます。&lt;br /&gt;
&lt;br /&gt;
なお、必要な256MiBの未割り当てスペースが不足している場合は、[[LVM#論理ボリュームとファイルシステムのサイズを一度に変更する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== fast_commit を有効化 ===&lt;br /&gt;
&lt;br /&gt;
ext4の &amp;quot;fast commits&amp;quot; 機能は、新しい軽量なジャーナリング方式を導入します。この機能は、ext4 ファイルシステムのパフォーマンスを大幅に向上させることが期待されています。[https://lwn.net/Articles/842385/]&lt;br /&gt;
&lt;br /&gt;
新しいファイルシステムでこの機能を有効にするには、{{ic|fast_commit}} を {{ic|-O}} ファイルシステムオプション引数に含めます。&lt;br /&gt;
&lt;br /&gt;
既存のファイルシステムでこの機能を有効にするには、次のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O fast_commit /dev/&#039;&#039;drivepartition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
現在の構成または変更を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -l /dev/&#039;&#039;drivepartition&#039;&#039; | grep features&lt;br /&gt;
&lt;br /&gt;
既存のファイルシステムでこの機能を無効にするには、次のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O &#039;^fast_commit&#039; /dev/&#039;&#039;drivepartition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 大文字と小文字を区別しないモードを有効にする ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* {{ic|casefold}} 機能が有効にされている場合、それは確実に無効化することができません({{ic|tune2fs}} の潜在的なバグのため)有効化する前に、以下の制限に注意してください&lt;br /&gt;
* GRUB は現在、ext4 の {{ic|casefold}} 機能をサポートしていません。[https://savannah.gnu.org/bugs/?56897 GRUB バグ#56897] を参照してください。この機能を GRUB が読み取る必要があるファイルシステムで有効にすると、システムは起動不可能になり、{{ic|unknown filesystem}} という無意味なエラーが表示されます。たとえ実際にディレクトリがその機能を使用していなくてもです。&lt;br /&gt;
* {{ic|casefold}} 機能は {{ic|overlayfs}} と互換性がないため、[[Docker]] や [[Podman]] などのコンテナソフトウェアがそのファイルシステムで動作しなくなる可能性があります。また、{{man|8|systemd-sysext}} 拡張イメージなどの高度な [[systemd]] 機能も使用できなくなる場合があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Ext4 は大文字と小文字を区別しないモードで使用でき、[[Wine]] で実行されるアプリケーションやゲームのパフォーマンスを向上させることができます。この機能はファイルシステム全体には影響しません。大文字と小文字を区別しない属性が有効になっているディレクトリにのみ影響します。&lt;br /&gt;
&lt;br /&gt;
まず、ファイルシステムでこの機能を有効にします:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O casefold &#039;&#039;/dev/path/to/disk&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これで、任意のディレクトリで大文字と小文字を区別しない[[ファイルのパーミッションと属性#ファイルの属性|属性]]を有効にできるようになります:&lt;br /&gt;
&lt;br /&gt;
 $ chattr +F &#039;&#039;/mnt/partition/case-insensitive-directory&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ディレクトリは空である必要があり、他の場所からサブディレクトリを移動させても、その属性は継承されないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://ext4.wiki.kernel.org/ 公式 Ext4 wiki]&lt;br /&gt;
* Ext4 wiki の [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 ディスクレイアウト]&lt;br /&gt;
* LWN の [https://lwn.net/Articles/639427/ Ext4 暗号化] 記事&lt;br /&gt;
* ext4 暗号化のカーネルコミット [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6162e4b0bedeb3dac2ba0a5e1b1f56db107d97ec] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8663da2c0919896788321cd8a0016af08588c656]&lt;br /&gt;
* [http://e2fsprogs.sourceforge.net/e2fsprogs-release.html e2fsprogs 変更履歴]&lt;br /&gt;
* [https://ext4.wiki.kernel.org/index.php/Ext4_Metadata_Checksums Ext4 メタデータチェックサム]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Ext4|2025-04-27|805843}}&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Ext4&amp;diff=40218</id>
		<title>Ext4</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Ext4&amp;diff=40218"/>
		<updated>2025-04-26T15:21:56Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* 外部ジャーナルを使用してパフォーマンスを最適化する */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ファイルシステム]]&lt;br /&gt;
[[de:Ext4]]&lt;br /&gt;
[[en:Ext4]]&lt;br /&gt;
[[es:Ext4]]&lt;br /&gt;
[[fr:Ext4]]&lt;br /&gt;
[[ru:Ext4]]&lt;br /&gt;
[[zh-hans:Ext4]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related|Ext3}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
Ext4 は Linux で一番よく使われているファイルシステム、Ext3 の発展版です。多くの点で、Ext3 から Ext4 になって Ext2 から Ext3 に進んだときよりも大きな改善がされています。Ext3 では Ext2 にジャーナリングを追加したのがほとんどでしたが、Ext4 ではファイルデータを保存するファイルシステムの重要なデータ構造にメスが入っています。その結果、改良された設計、優れたパフォーマンス、信頼性、機能性を備えたファイルシステムが誕生しました (ソース: [http://kernelnewbies.org/Ext4 Ext4 - Linux Kernel Newbies])&lt;br /&gt;
&lt;br /&gt;
== 新しく ext4 ファイルシステムを作成 ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|e2fsprogs}} を [[インストール]] します。&lt;br /&gt;
&lt;br /&gt;
パーティションをフォーマットするには次を実行:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 /dev/&#039;&#039;partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
*オプションについては {{man|8|mke2fs}} の [[man ページ]]を見て下さい。{{ic|/etc/mke2fs.conf}} を編集すればデフォルトのオプションを見たり設定できます。&lt;br /&gt;
*サポートされている場合は、[[Ext4#メタデータチェックサムを有効化する|メタデータチェックサム]] を有効にすることをお勧めします。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Bytes-per-inode 比率 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mke2fs&#039;&#039;&#039; はひとつの inode に対してディスク上に &#039;&#039;bytes-per-inode&#039;&#039; バイト分の領域を作成します。&#039;&#039;bytes-per-inode&#039;&#039; 比率を大きくすることで、作成される inode は少なくなります。詳しくは {{man|8|mke2fs}} を参照。&lt;br /&gt;
&lt;br /&gt;
新しいファイルやディレクトリ、シンボリックリンクなどを作成するとき [[Wikipedia:Inode|inode]] が最低でもひとつは必要です。inode の数が少なすぎると、たとえディスクに空き容量があったとしてもファイルシステムにファイルを作成できなくなります。&lt;br /&gt;
&lt;br /&gt;
ファイルシステムを作成した後に bytes-per-inode 比率や inode の数を変更することはできないため、ファイルが作成できなくなってしまわないように {{ic|mkfs.ext4}} はデフォルトでは比率を低くして inode に対して16384バイト (16Kb) を割り当てます。&lt;br /&gt;
&lt;br /&gt;
しかしながら、1GB 以上のファイルが多数存在してファイルの平均容量がメガバイト級になるような使い方をしているパーティションの場合、inode の数が多すぎてファイルの作成では inode の限界に絶対に達しないということになります。&lt;br /&gt;
&lt;br /&gt;
未使用の inode にも256バイト取られるのでディスク領域の無駄使いです (256バイトという数字は {{ic|/etc/mke2fs.conf}} で設定されていますが変更してはいけません) 256バイトでも数百万の inode に換算するとギガバイト単位で容量を無駄にしていることになります。&lt;br /&gt;
&lt;br /&gt;
{{ic|df}} と {{ic|df -i}} を実行したときの {{ic|{I}Use%}} の値を比較することでどれくらい無駄になっているのか確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ df -h /home|&lt;br /&gt;
Filesystem              Size    Used   Avail  &#039;&#039;&#039;Use%&#039;&#039;&#039;   Mounted on&lt;br /&gt;
/dev/mapper/lvm-home    115G    56G    59G    &#039;&#039;&#039;49%&#039;&#039;&#039;    /home}}&lt;br /&gt;
{{hc|$ df -hi /home|&lt;br /&gt;
Filesystem              Inodes  IUsed  IFree  &#039;&#039;&#039;IUse%&#039;&#039;&#039;  Mounted on&lt;br /&gt;
/dev/mapper/lvm-home    1.8M    1.1K   1.8M   &#039;&#039;&#039;1%&#039;&#039;&#039;     /home}}&lt;br /&gt;
&lt;br /&gt;
bytes-per-inode 比率を変更するには、{{ic|-T &#039;&#039;usage-type&#039;&#039;}} オプションを使用します。{{ic|/etc/mke2fs.conf}} で定義されたタイプを使用してファイルシステムの利用方法を指定できます。{{ic|largefile}} や {{ic|largefile4}} タイプは inode に対してそれぞれ 1 MiB と 4 MiB という大きな容量を割り当てます。以下のように使うことができます:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -T largefile /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|-i}} オプションを使って bytes-per-inode 比率を直接設定することもできます。例えば {{ic|-i 2097152}} なら 2 MiB、{{ic|-i 6291456}} なら 6 MiB になります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|逆に、メールやニュースグループのアイテムなどで小さなファイルを何百万も保存するような使い方をする場合、{{ic|news}} (ひとつの inode に4096バイトを割り当て) や {{ic|small}} (inode 自体のサイズやブロックサイズも小さくする) などのタイプを使うこともできます。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|シンボリックリンクを大量に使用する場合は、bytes-per-inode 比率を低くして inode の数量は大きくしてください。シンボリックリンクを作成しても容量は取られませんが inode はひとつ消費されるので、ファイルシステムの inode をあっという間に使い切ってしまう可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
=== 予約ブロック ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、ファイルシステムの 5% はフラグメントが起こらないように root ユーザー用に予約されます。非特権のプロセスがファイルシステムに書き込めなくなってからも root が使用しているデーモンは正しく動作し続けることができます (詳しくは {{man|8|mke2fs}} を参照)。&lt;br /&gt;
&lt;br /&gt;
最近の大容量ディスクでは、パーティションを長期アーカイブとして使用したり、システム運用に重要でない場合({{ic|/home}}など)必要以上に大きな値を設定します。予約ブロックに関する ext4 開発者の Ted Ts&#039;o の意見は [https://www.redhat.com/archives/ext3-users/2009-January/msg00026.html このメール] を、このトピックに関する一般的な背景は [https://superuser.com/questions/1256074/how-much-space-to-leave-free-on-hdd-or-ssd/1257550#1257550 このスーパーユーザの回答] を参照してください。&lt;br /&gt;
&lt;br /&gt;
パーティションが以下の条件を満たしているならば、ディスク容量を増やすために予約ブロックの割合を減らしても大抵は問題ありません: &lt;br /&gt;
&lt;br /&gt;
*パーティションがとても大きい (例えば 50GB 以上)&lt;br /&gt;
*長期保存用のアーカイブとして使っている、頻繁にファイルを作成したり削除することがない。&lt;br /&gt;
&lt;br /&gt;
ext4 関連のユーティリティを使うときに {{ic|-m}} オプションで予約ブロックの割合を指定できます。&lt;br /&gt;
&lt;br /&gt;
ファイルシステムの作成時に予約ブロックを全く作成しないようにするには:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -m 0 /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
パーティションの予約ブロックの割合を 1% に設定するには:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -m 1 /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
予約ブロック数をギガバイト単位の絶対サイズに設定する場合は、{{ic|-r}} を使用します。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -r $((&#039;&#039;ngigs&#039;&#039; * 1024**3 / &#039;&#039;blocksize&#039;&#039;)) /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;blocksize&#039;&#039;}} はファイルシステムのブロックサイズをバイト単位で指定します。これはほとんどの場合 4096 ですが、念のため確認することができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|# tune2fs -l /dev/&#039;&#039;device&#039;&#039; {{!}} egrep &#039;^Block size:&#039;|&lt;br /&gt;
Block size:               4096&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|$(())}} 構文は、数式展開のための構文です。この構文は {{Pkg|bash}} と {{Pkg|zsh}} では動作しますが、{{Pkg|fish}} では動作しません。&#039;&#039;fish&#039;&#039; では、このような構文になります。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -r (math &#039;ngigs * 1024^3 / blocksize&#039;) /dev/&#039;&#039;device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これらのコマンドは、現在マウントされているファイルシステムに適用することができ、変更は即座に反映されます。デバイス名は {{man|8|findmnt}} で調べることができます。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -m 1 &amp;quot;$(findmnt -no SOURCE &#039;&#039;/the/mount/point&#039;&#039;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
現在の予約ブロック数を問い合わせる場合。&lt;br /&gt;
&lt;br /&gt;
{{hc|# tune2fs -l /dev/mapper/proxima-root {{!}} egrep &#039;^Reserved block count:&#039;|&lt;br /&gt;
Reserved block count:     2975334&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これはブロック数なので、これにファイルシステムのブロックサイズを掛けて、バイト数やギガバイト数を得る必要があります。{{ic|1=2975334 * 4096 / 1024**3 = 11.34 GiB}} です。&lt;br /&gt;
&lt;br /&gt;
==ext2/ext3 から ext4 に移行==&lt;br /&gt;
&lt;br /&gt;
===ext2/ext3 パーティションを変換せずに ext4 としてマウント===&lt;br /&gt;
&lt;br /&gt;
====理由====&lt;br /&gt;
&lt;br /&gt;
ext4 を完全に変換する案と ext2/ext3 をそのまま使用する案の折衷案として、既存の ext2/ext3 パーティションを ext4 としてマウントする方法があります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;利点:&#039;&#039;&#039;&lt;br /&gt;
* 互換性 (ext2/ext3 としてファイルシステムをマウントできます) &amp;amp;ndash; ext4 のサポートがないオペレーティングシステムからもファイルシステムを読み込むことが可能です (例: Windows の ext2/ext3 ドライバー)&lt;br /&gt;
* パフォーマンスが向上 (ext4 パーティションに完全に変換するのよりは劣ります) &amp;amp;ndash; 詳しくは [http://kernelnewbies.org/Ext4] や [http://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_fujita.pdf] を見てください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;欠点:&#039;&#039;&#039;&lt;br /&gt;
* ext4 の機能を全て活用することはできません (マルチブロックアロケーションや遅延アロケーションなどのディスクフォーマットに変更を与える機能は使えません)&lt;br /&gt;
&lt;br /&gt;
{{Note|ext4 が比較的新しいファイルシステムということ以外に (このこと自体をリスクと考えることもできます)、この方法を使用することで不利益になることは特にありません。}}&lt;br /&gt;
&lt;br /&gt;
====方法====&lt;br /&gt;
&lt;br /&gt;
# {{ic|/etc/fstab}} を編集して ext4 としてマウントしたいパーティションの &#039;type&#039; を ext2/ext3 から ext4 に変更してください。&lt;br /&gt;
# 変更したパーティションを再マウントします。&lt;br /&gt;
&lt;br /&gt;
===ext2/ext3 パーティションを ext4 に変換===&lt;br /&gt;
&lt;br /&gt;
====理由====&lt;br /&gt;
&lt;br /&gt;
ext4 の能力を活かすには、非可逆の変換をする必要があります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;利点:&#039;&#039;&#039;&lt;br /&gt;
* パフォーマンスの向上と新機能 &amp;amp;ndash; 詳しくは [http://kernelnewbies.org/Ext4] や [http://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_fujita.pdf] を見てください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;欠点:&#039;&#039;&#039;&lt;br /&gt;
* {{ic|/boot}} パーティションなど、静的なファイルしか存在しない場合、新機能を使うメリットはありません。さらに、ジャーナリングによって性能がむしろ落ちる可能性もあります。&lt;br /&gt;
* 一方通行 (ext4 パーティションを ext2/ext3 に&#039;ダウングレード&#039;することはできません) ただしエクステントなどのオプションを有効にしなければ後方互換性を確保できます。&lt;br /&gt;
&lt;br /&gt;
====方法====&lt;br /&gt;
&lt;br /&gt;
以下の手順は [http://ext4.wiki.kernel.org/index.php/Ext4_Howto カーネルドキュメント] と [https://bbs.archlinux.org/viewtopic.php?id=61602 フォーラムスレッド] から引用しています。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* システムのルートパーティションを変換する場合、再起動時にフォールバックの initramfs が使えるようになっていることを確認してください。また、変換する前に {{ic|/etc/mkinitcpio.conf}} の [[Mkinitcpio#MODULES|MODULES]] 行に {{ic|ext4}} を追加して {{Ic|mkinitcpio -p linux}} でデフォルトの initramfs を再作成してください。&lt;br /&gt;
* 分割している {{ic|/boot}} パーティションを変換する場合、[[ブートローダー]]が ext4 からの起動に対応していることを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;[[バックアッププログラム|バックアップ]]&#039;&#039;&#039;を行なって下さい。ext4 に変換する ext3 パーティションに存在するデータを全てバックアップします。特に / (root) パーティションをバックアップする場合は、[http://clonezilla.org Clonezilla] が役に立ちます。&lt;br /&gt;
# {{ic|/etc/fstab}} を編集して ext4 に変換するパーティションの &#039;type&#039; を ext3 から ext4 に変換してください。&lt;br /&gt;
# (必要であれば) ライブメディアを起動します。{{Pkg|e2fsprogs}} で変換を行う際はドライブがマウントされていない状態になっている必要があります。ドライブの root (/) パーティションを変換するときは、他のライブメディアから起動して変換するのが一番簡単です。&lt;br /&gt;
# パーティションがマウントされていないことを確認してください&lt;br /&gt;
# ext2 パーティションを変換する場合、まずは {{ic|tune2fs -j /dev/sdxX}} を root で実行して[[ファイルシステム#ジャーナリング|ジャーナル]]を追加して ext3 パーティションに変換してください。&lt;br /&gt;
# {{Ic|tune2fs -O extent,uninit_bg,dir_index /dev/sdxX}} を root で実行 ({{Ic|/dev/sdxX}} は変換するパーティションのパスに置き換えて下さい、例: {{Ic|/dev/sda1}})。ext4 に変換されます (不可逆です)&lt;br /&gt;
# root で {{Ic|fsck -f /dev/sdxX}} を実行。&lt;br /&gt;
#* ファイルシステムのチェックを実行しないとファイルシステムを読み込めなくなります。&#039;&#039;fsck&#039;&#039; の実行は必須です。グループ記述子のチェックサムエラーが発見されます。これは仕様通りの動作です。{{ic|-f}} オプションはファイルシステムに問題がない場合でも強制的にチェックを実行します。{{ic|-p}} オプションを使用して自動修復させることもできます (オプションを使用しない場合、エラーに対して入力を求められます)&lt;br /&gt;
# 推奨: パーティションをマウントして {{Ic|e4defrag -c -v /dev/sdxX}} を実行。&lt;br /&gt;
#* ファイルシステムが ext4 に変換されても、変換前に書き込まれたファイルは ext4 のエクステントオプションを利用することができません。エクステントオプションは巨大なファイルの操作を高速化しフラグメンテーションを減らしてファイルシステムのチェック時間を短縮します。ext4 を活用するには、全てのファイルをディスクに再書き込みする必要があります。&#039;&#039;e4defrag&#039;&#039; を使うことで問題を解決できます。&lt;br /&gt;
# Arch Linux を再起動してください。&lt;br /&gt;
&lt;br /&gt;
== パフォーマンスの向上 ==&lt;br /&gt;
&lt;br /&gt;
=== アクセス時間の更新を無効にする ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ext4&#039;&#039;ファイルシステムは、ファイルが最後にアクセスされた時刻に関する情報を記録しますが、これには記録に伴うコストがあります。{{ic|noatime}} や関連するオプションについては、[[fstab#atime オプション]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== コミット間隔の増加 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|commit}} オプションで長い時間遅延を提供することにより、データとメタデータの同期間隔を増やすことができます。&lt;br /&gt;
&lt;br /&gt;
デフォルトの5秒は、電源が失われた場合、最新の5秒の作業が失われることを意味します。&lt;br /&gt;
5秒ごとにすべてのデータ/ジャーナルを物理メディアに完全に同期します。 ただし、ジャーナリングのおかげで、ファイルシステムが損傷することはありません。&lt;br /&gt;
次の [[fstab]] は、 {{ic|commit}} の使用法を示しています。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
/dev/sda5    /    ext4    defaults,&#039;&#039;&#039;commit=60&#039;&#039;&#039;    0    1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== バリアとパフォーマンス ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|バリアを無効化すると、電源が失われたときにキャッシュが正しく書き込まれるか保証がされなくなります。これによってファイルシステムの破壊やデータ損失が発生する場合があります。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Ext4&#039;&#039; はデフォルトで書き込みバリアを有効にします。これにより、書き込みキャッシュの電源が失われた場合でも、ファイルシステムのメタデータがディスク上に正しく書き込まれ、順序付けされることが保証されます。これには、特に &#039;&#039;fsync&#039;&#039; を頻繁に使用するアプリケーションや、小さなファイルを多数作成および削除するアプリケーションの場合、パフォーマンスにコストが伴います。何らかの方法でバッテリーバックアップが行われている書き込みキャッシュを持つディスクの場合、バリアを無効にするとパフォーマンスが安全に向上する可能性があります。&lt;br /&gt;
&lt;br /&gt;
バリアをオフにしたいときは {{ic|/etc/fstab}} の変更したいファイルシステムに {{Ic|1=barrier=0}} オプションを追加してください。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
/dev/sda5    /    ext4    defaults,&#039;&#039;&#039;barrier=0&#039;&#039;&#039;    0    1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ジャーナリングの無効化 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|ジャーナリングなしでファイルシステムを使用すると、停電やカーネルのロックアップなどの突然のマウント解除の場合にデータが失われる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ext4&#039;&#039; を使用してジャーナルを無効にするには、マウントされていないディスクで次のコマンドを使用します。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O &amp;quot;^has_journal&amp;quot; /dev/sdXN&lt;br /&gt;
&lt;br /&gt;
=== ジャーナルを使用してパフォーマンスを最適化する ===&lt;br /&gt;
&lt;br /&gt;
[https://lwn.net/Articles/842385/ Fast commits for ext4] の記事のイントロダクションは、マウントオプション {{ic|1=data=journal}} や {{ic|1=data=writeback}} が、デフォルトの {{ic|1=data=ordered}} 動作モードと比較して、どのように全体的な ext4 のパフォーマンスを高速化するかを簡潔にまとめています。さらに、ジャーナリング自体は、{{ic|journal_async_commit}} マウントオプションを追加することで高速化できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|journal_async_commit}} マウントオプションは、デフォルトのマウントオプションである {{ic|1=data=ordered}} と一緒に使うと[https://patchwork.ozlabs.org/patch/414750/ 動作しません]。なので、明示的に {{ic|&#039;&#039;ext4_device&#039;&#039;}} を別のモードでマウントしてください。{{man|5|ext4|3=data=}} を見てください。}}&lt;br /&gt;
&lt;br /&gt;
さらに別のオプションとして、新しいジャーナルフォーマットを使用する方法があります。詳細は [[#fast_commit を有効化]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 外部ジャーナルデバイス ====&lt;br /&gt;
&lt;br /&gt;
デフォルト以外の {{ic|1=data=}} オプションを使用している場合、専用のジャーナルデバイスを使用することで、ファイル操作が高速化される場合もあります。例えば、データには比較的遅いデバイスを使用し、ジャーナルにはより高速だが小容量の別デバイスを使用する場合などです。別のジャーナルデバイスを設定するには:&lt;br /&gt;
&lt;br /&gt;
 # mke2fs -O journal_dev /dev/&#039;&#039;journal_device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;ext4_device&#039;&#039;}} のジャーナルとして {{ic|&#039;&#039;journal_device&#039;&#039;}} を割り当てるには、次を使用してください:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -J device=/dev/&#039;&#039;journal_device&#039;&#039; /dev/&#039;&#039;ext4_device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;ext4_device&#039;&#039;}} に新しいファイルシステムを作成したい場合は、{{ic|tune2fs}} の代わりに {{ic|mkfs.ext4}} を使用してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;journal_device&#039;&#039;}} を {{ic|&#039;&#039;ext4_device&#039;&#039;}} の依存関係として追加するには、{{ic|/etc/fstab}} で {{ic|x-systemd.requires}} マウントオプションを使用します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
/dev/&#039;&#039;ext4_device&#039;&#039;    /    ext4    defaults,&#039;&#039;&#039;x-systemd.requires=/dev/&#039;&#039;journal_device&#039;&#039;&#039;&#039;&#039;    0    1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これにより、{{ic|&#039;&#039;journal_device&#039;&#039;}} にセットアップ (例:暗号化) が必要な場合でも問題を防ぐことができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|UUID}} とジャーナルデバイスの devnum の両方が ext4 ファイルシステムに保存されます。ジャーナルデバイスの読み込み時には devnum のみが使用されるため、ディスクの並び順が変更されると問題が発生します。devnum が間違ったデバイスを指している場合、Linux はファイルシステムのマウントを拒否しますが、以下の回避策が役立つかもしれません:&lt;br /&gt;
&lt;br /&gt;
パスを使用してジャーナルのロードを強制する {{ic|journal_path}} マウントオプションを使い、保存された devnum を無視する:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
/dev/&#039;&#039;ext4_device&#039;&#039;    /    ext4    defaults,x-systemd.requires=/dev/&#039;&#039;journal_device&#039;&#039;,&#039;&#039;&#039;journal_path=/dev/&#039;&#039;journal_device&#039;&#039;&#039;&#039;&#039;    0    1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|e2fsck}} は {{ic|UUID}} を使ってジャーナルデバイスを検索し、ずれていた場合には保存された devnum を修正します。ただし、これを破損とみなして不要なフルファイルシステムスキャンをトリガーしてしまいます([https://github.com/tytso/e2fsprogs/pull/26] を参照)これを {{ic|e2fsck}} の [https://man.archlinux.org/man/e2fsck.conf.5.en 設定ファイル]で無効化できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/e2fsck.conf|2=&lt;br /&gt;
[problems]&lt;br /&gt;
# PR_0_EXTERNAL_JOURNAL_HINT: Superblock hint for external superblock should be xxxx&lt;br /&gt;
0x000033 = {&lt;br /&gt;
    # Tell e2fsck that if this problem is encountered, it can be fixed but should&lt;br /&gt;
    # not be considered corruption, the filesystem should still be marked clean.&lt;br /&gt;
    not_a_fix = true&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;
Linux 4.1 以降、ext4 はファイル暗号化をネイティブにサポートしています。 [[fscrypt]] の記事を参照してください。 暗号化はディレクトリレベルで適用され、ディレクトリごとに異なる暗号化キーを使用できます。 これは、ブロックデバイスレベルの暗号化である [[dm-crypt]] と、スタック暗号化ファイルシステムである [[eCryptfs]] の両方とは異なります。&lt;br /&gt;
&lt;br /&gt;
=== メタデータチェックサムを有効化する ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムが {{Pkg|e2fsprogs}} で作成されている場合。1.43 (2016) 以降では、メタデータチェックサムがデフォルトで有効になっています。既存のファイルシステムを変換して、メタデータチェックサムのサポートを有効にすることができます。&lt;br /&gt;
&lt;br /&gt;
CPU が SSE 4.2 をサポートしている場合、{{ic|crc32c_intel}} が有効であることを確認してください。ハードウェアアクセラレーションによる CRC32C アルゴリズム [https://ext4.wiki.kernel.org/index.php/Ext4_Metadata_Checksums#Benchmarking] を有効にするために [[カーネルモジュール]] がロードされています。もしそうでなければ、代わりに {{ic|crc32c_generic}} モジュールをロードしてください。&lt;br /&gt;
&lt;br /&gt;
メタデータチェックサムの詳細については、[https://ext4.wiki.kernel.org/index.php/Ext4_Metadata_Checksums ext4 wiki] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|dumpe2fs}} を使用して、ファイルシステムで有効になっている機能を確認します。&lt;br /&gt;
 # dumpe2fs -h &#039;&#039;/dev/path/to/disk&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイルシステムをマウントしないでください。}}&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|e2fsck}} を使用してパーティションをチェックし、最適化する必要があります。&lt;br /&gt;
&lt;br /&gt;
 # e2fsck -Df &#039;&#039;/dev/path/to/disk&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
ファイルシステムを64ビットに変換します。&lt;br /&gt;
&lt;br /&gt;
 # resize2fs -b &#039;&#039;/dev/path/to/disk&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
最後に、チェックサムサポートを有効にします。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O metadata_csum &#039;&#039;/dev/path/to/disk&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
検証します:&lt;br /&gt;
&lt;br /&gt;
{{hc|# dumpe2fs -h &#039;&#039;/dev/path/to/disk&#039;&#039; {{!}} grep features:|2=&lt;br /&gt;
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent &#039;&#039;&#039;64bit&#039;&#039;&#039; flex_bg sparse_super large_file huge_file dir_nlink extra_isize &#039;&#039;&#039;metadata_csum&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== LVM を使用する場合のメンテナンス ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;e2scrub&#039;&#039; ツールは、ext4ファイルシステムのメタデータをチェックするためのツールで、特に LVM (Logical Volume Manager) の論理ボリュームで使用されている場合に適用されます。このチェックを行うには、ボリュームグループに256MiBの未割り当てスペースが必要です。これは、ツールがチェック用にスナップショットを作成するためです。&lt;br /&gt;
&lt;br /&gt;
{{man|8|e2scrub}} マニュアルによると、このツールはエラーを修復するものではなく、エラーを報告し、次回のマウント前に &#039;&#039;e2fsck&#039;&#039;({{man|8|e2fsck}} を参照)の実行が必要であることをファイルシステムにマークします。&lt;br /&gt;
&lt;br /&gt;
このチェックは自動化可能で、例えば、パッケージに含まれる {{ic|e2scrub_all.timer}} ユニットを有効化することで設定できます。&lt;br /&gt;
&lt;br /&gt;
なお、必要な256MiBの未割り当てスペースが不足している場合は、[[LVM#論理ボリュームとファイルシステムのサイズを一度に変更する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== fast_commit を有効化 ===&lt;br /&gt;
&lt;br /&gt;
ext4の &amp;quot;fast commits&amp;quot; 機能は、新しい軽量なジャーナリング方式を導入します。この機能は、ext4 ファイルシステムのパフォーマンスを大幅に向上させることが期待されています。[https://lwn.net/Articles/842385/]&lt;br /&gt;
&lt;br /&gt;
新しいファイルシステムでこの機能を有効にするには、{{ic|fast_commit}} を {{ic|-O}} ファイルシステムオプション引数に含めます。&lt;br /&gt;
&lt;br /&gt;
既存のファイルシステムでこの機能を有効にするには、次のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O fast_commit /dev/&#039;&#039;drivepartition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
現在の構成または変更を確認するには:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -l /dev/&#039;&#039;drivepartition&#039;&#039; | grep features&lt;br /&gt;
&lt;br /&gt;
既存のファイルシステムでこの機能を無効にするには、次のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O &#039;^fast_commit&#039; /dev/&#039;&#039;drivepartition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 大文字と小文字を区別しないモードを有効にする ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* {{ic|casefold}} 機能が有効にされている場合、それは確実に無効化することができません({{ic|tune2fs}} の潜在的なバグのため)有効化する前に、以下の制限に注意してください&lt;br /&gt;
* GRUB は現在、ext4 の {{ic|casefold}} 機能をサポートしていません。[https://savannah.gnu.org/bugs/?56897 GRUB バグ#56897] を参照してください。この機能を GRUB が読み取る必要があるファイルシステムで有効にすると、システムは起動不可能になり、{{ic|unknown filesystem}} という無意味なエラーが表示されます。たとえ実際にディレクトリがその機能を使用していなくてもです。&lt;br /&gt;
* {{ic|casefold}} 機能は {{ic|overlayfs}} と互換性がないため、[[Docker]] や [[Podman]] などのコンテナソフトウェアがそのファイルシステムで動作しなくなる可能性があります。また、{{man|8|systemd-sysext}} 拡張イメージなどの高度な [[systemd]] 機能も使用できなくなる場合があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Ext4 は大文字と小文字を区別しないモードで使用でき、[[Wine]] で実行されるアプリケーションやゲームのパフォーマンスを向上させることができます。この機能はファイルシステム全体には影響しません。大文字と小文字を区別しない属性が有効になっているディレクトリにのみ影響します。&lt;br /&gt;
&lt;br /&gt;
まず、ファイルシステムでこの機能を有効にします:&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O casefold &#039;&#039;/dev/path/to/disk&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これで、任意のディレクトリで大文字と小文字を区別しない[[ファイルのパーミッションと属性#ファイルの属性|属性]]を有効にできるようになります:&lt;br /&gt;
&lt;br /&gt;
 $ chattr +F &#039;&#039;/mnt/partition/case-insensitive-directory&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ディレクトリは空である必要があり、他の場所からサブディレクトリを移動させても、その属性は継承されないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://ext4.wiki.kernel.org/ 公式 Ext4 wiki]&lt;br /&gt;
* Ext4 wiki の [https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Ext4 ディスクレイアウト]&lt;br /&gt;
* LWN の [https://lwn.net/Articles/639427/ Ext4 暗号化] 記事&lt;br /&gt;
* ext4 暗号化のカーネルコミット [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6162e4b0bedeb3dac2ba0a5e1b1f56db107d97ec] [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8663da2c0919896788321cd8a0016af08588c656]&lt;br /&gt;
* [http://e2fsprogs.sourceforge.net/e2fsprogs-release.html e2fsprogs 変更履歴]&lt;br /&gt;
* [https://ext4.wiki.kernel.org/index.php/Ext4_Metadata_Checksums Ext4 メタデータチェックサム]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Ext4|2024-08-28|805843}}&lt;/div&gt;</summary>
		<author><name>Kgx</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=40213</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=40213"/>
		<updated>2025-04-24T12:20:01Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* ファイルシステムのタイプ */ リンクを修正&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;
[[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;
| [[Wikipedia:ja:NILFS|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;
* {{App|[[Wikipedia:Tahoe-LAFS|Tahoe-LAFS]]|Tahoe Least-Authority File Store は、フリーでオープン、安全、分散、耐障害性、ピアツーピア分散データストアおよび分散ファイルシステムです。|https://tahoe-lafs.org/|{{AUR|tahoe-lafs}}{{Broken package link|package not found}}}}&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-04-11|831547}}&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Tmpfs&amp;diff=40201</id>
		<title>Tmpfs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Tmpfs&amp;diff=40201"/>
		<updated>2025-04-22T01:29:33Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* サンプル */ 同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Tmpfs]]&lt;br /&gt;
[[es:Tmpfs]]&lt;br /&gt;
[[ru:Tmpfs]]&lt;br /&gt;
[[Wikipedia:Tmpfs|tmpfs]] はメモリやスワップパーティションに存在する一時ファイルシステムです。ディレクトリを tmpfs としてマウントすることでファイルへのアクセスを高速化させたり、再起動時に自動的に中身が消去されるようにすることができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[systemd]] を使っている場合、[[Systemd#systemd-tmpfiles - 一時ファイル|systemd-tmpfiles]] を使って tmpfs ディレクトリの一時ファイルを起動時に再作成することができます。}}&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
{{man|5|tmpfs}} が使われる主なディレクトリは [https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s18.html /tmp], [https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05s09.html /var/lock], [https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05s13.html /var/run] です。tmpfs を [https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05s15.html /var/tmp] で使ってはいけません。このフォルダは、再起動しても消えない一時ファイルを置くところだからです。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|glibc}} 2.2 以上では tmpfs は [[wikipedia:ja:共有メモリ#UNIXでのサポート|POSIX shared memory]] の {{ic|/dev/shm}} にマウントされることになっています。{{ic|/dev/shm}} への tmpfs のマウントは [[systemd]] によって自動的に行われるため、[[fstab]] における手動設定は必要なくなりました。&lt;br /&gt;
&lt;br /&gt;
Arch は tmpfs の {{ic|/run}} ディレクトリを使っており、{{ic|/var/run}} と {{ic|/var/lock}} は互換性維持のため単なるシンボリックリンクとして存在しています。また、systemd のデフォルト設定で {{ic|/tmp}} で使用されるため、特別な設定が必要ないかぎり [[fstab]] にエントリを記述する必要はありません。&lt;br /&gt;
&lt;br /&gt;
一般的に、tmpfs フォルダを使う意味があるのは、読み書き操作を頻繁に実行するような I/O の処理が重い作業やプログラムです。アプリケーションによっては、部分的な (または全ての) データを共有メモリにオフロードすることで体感することができるほどの変化が現れることもあります。例えば、[[Firefox_Ramdisk|Firefox のプロファイルを RAM に再配置]]するとパフォーマンスが著しく上昇します。&lt;br /&gt;
&lt;br /&gt;
== サンプル ==&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、tmpfs パーティションの最大容量は合計 RAM の半分に設定されていますが、この値はカスタマイズすることができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|実際に使用されるメモリ/スワップは使用する量によって変わり、必要とされるまで tmpfs パーティションはメモリを消費しないので注意してください。}}&lt;br /&gt;
&lt;br /&gt;
最大容量を明示的に設定するために、以下の例ではデフォルトの {{ic|/tmp}} マウントを上書きして、{{ic|size}} マウントオプションを使っています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
tmpfs   /tmp         tmpfs   rw,nodev,nosuid,size=2G          0  0}}&lt;br /&gt;
&lt;br /&gt;
以下はユーザーに tmpfs マウントを追加する、より高度な例です。ウェブサイトや mysql の一時ファイル、{{ic|~/.vim/}} などで有用です。設定する前にマウントオプションをよく確かめて下さい。悪用を防止するためにできる限りセキュリティを高めるべきです。容量を制限したり、uid と gid のモードを指定すると良いでしょう。詳しくは、[[#参照]]セクションのリンクを見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
tmpfs   /www/cache    tmpfs  rw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=&#039;&#039;user&#039;&#039;,gid=&#039;&#039;group&#039;&#039;,mode=1700 0 0}}&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|5|tmpfs}} man ページおよび [[セキュリティ#ファイルシステム]] に載っています。&lt;br /&gt;
&lt;br /&gt;
変更を適用するには再起動してください。{{ic|mount -a}} と実行するだけで変更が即座に適用できるかに思われるかもしれませんが、これではディレクトリ内に存在する既存のファイルにアクセスできなくなってしまいます (特にロックファイルを使用するプログラムを実行している場合は危険です)。ただし、ディレクトリの中身が全て空なのであれば、再起動する代わりに {{ic|mount -a}} を実行しても問題ありません (もしくは個別にマウントを実行してもよい)。&lt;br /&gt;
&lt;br /&gt;
変更の適用後、{{ic|findmnt}} を使って {{ic|/proc/mounts}} を見ることで効果が現れているかどうか確認することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ findmnt /tmp|&lt;br /&gt;
TARGET SOURCE FSTYPE OPTIONS&lt;br /&gt;
/tmp   tmpfs  tmpfs  rw,nosuid,nodev,relatime}}&lt;br /&gt;
&lt;br /&gt;
また、tmpfs は再起動せずとも一時的にサイズを変更することが可能です。いますぐ巨大なコンパイルを行う必要があるときなどに有用です。その場合、以下を実行します:&lt;br /&gt;
&lt;br /&gt;
 # mount -o remount,size=4G,noatime /tmp&lt;br /&gt;
&lt;br /&gt;
または RAM に基づいてサイズを変更する場合は:&lt;br /&gt;
&lt;br /&gt;
 # mount -o remount,size=80% /tmp&lt;br /&gt;
&lt;br /&gt;
== 自動マウントの無効化 ==&lt;br /&gt;
&lt;br /&gt;
[[systemd]] 下では、{{ic|/etc/fstab}} にエントリを記述してなくても {{ic|/tmp}} は自動的に tmpfs としてマウントされます。自動マウントを無効にするには、{{ic|tmp.mount}} systemd ユニットを[[マスク]]してください。&lt;br /&gt;
&lt;br /&gt;
ファイルは tmpfs ではなく、ブロックデバイスに保存されるようになります。{{ic|/tmp}} の中身は再起動しても消去されないようになるので、問題が起こる可能性があります。前の挙動に戻して再起動で {{ic|/tmp}} フォルダが自動的に消去されるようにするには、以下の {{man|5|tmpfiles.d}} を使ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/tmpfiles.d/tmp.conf|2=&lt;br /&gt;
# see tmpfiles.d(5)&lt;br /&gt;
# always enable /tmp folder cleaning&lt;br /&gt;
D! /tmp 1777 root root 0&lt;br /&gt;
&lt;br /&gt;
# remove files in /var/tmp older than 10 days&lt;br /&gt;
D /var/tmp 1777 root root 10d&lt;br /&gt;
&lt;br /&gt;
# namespace mountpoints (PrivateTmp=yes) are excluded from removal&lt;br /&gt;
x /tmp/systemd-private-*&lt;br /&gt;
x /var/tmp/systemd-private-*&lt;br /&gt;
X /tmp/systemd-private-*/tmp&lt;br /&gt;
X /var/tmp/systemd-private-*/tmp}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== root で tmpfs のシンボリックリンクを開けない ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/tmp}} は tmpfs を使っているので、カレントディレクトリを {{ic|/tmp}} に変更してから、ファイルを作成して、同じ {{ic|/tmp}} ディレクトリの中にファイルのシンボリックリンクを作成してみて下さい。シンボリックリンクを使って作成したファイルを開こうとすると、パーミッションエラーが表示されるはずです。{{ic|/tmp}} には [https://wiki.ubuntu.com/Security/Features#Symlink_restrictions スティッキービット] が設定されているためにこうなります。&lt;br /&gt;
&lt;br /&gt;
この挙動は {{ic|/proc/sys/fs/protected_symlinks}} や sysctl で変更できます: {{ic|1=sysctl -w fs.protected_symlinks=0}}。設定を永続化させる方法は [[Sysctl#設定]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Warning|この挙動を変更するとセキュリティに問題が起こります。無闇に無効化しないでください。}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.kernel.org/doc/html/latest/filesystems/tmpfs.html Linux カーネルドキュメント]&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Fstab&amp;diff=40200</id>
		<title>Fstab</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Fstab&amp;diff=40200"/>
		<updated>2025-04-22T01:27:01Z</updated>

		<summary type="html">&lt;p&gt;Kgx: /* ヒントとテクニック */ 同期&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;
[[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;
{{Note|この設定はファイルシステムのタイプを {{ic|autofs}} にします。これは [[mlocate]] によってデフォルトで無視されます。}}&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|noauto}} パラメータを {{ic|/etc/crypttab}} の適当なエントリに追加することができます。設定することで &#039;&#039;systemd&#039;&#039; は起動時に暗号化デバイスを開かないようになり、実際にアクセスされたときになってから指定したキーファイルを使ってファイルシステムを開いてマウントします。デバイスが利用可能になるのを systemd が待機しないようになるので、暗号化 RAID デバイスなどを使っている場合、起動時間が数秒間短くなるかもしれません。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/crypttab|&lt;br /&gt;
data /dev/md/MyRAIDArray /etc/cryptsetup-keys.d/data.key noauto&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;
外部デバイスが存在する時はマウントし、存在しない場合は無視したい場合、{{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}} および [[wikipedia:Stat (system call)#Criticism of 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;
=== バインドマウント ===&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 ユーティリティ。|https://apps.gnome.org/DiskUtility/|{{Pkg|gnome-disk-utility}}}}&lt;br /&gt;
* {{App|KDE Partition Manager|コンピュータ上のディスク、パーティション、ファイルシステムの管理を補助するユーティリティ。|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|2024-05-29|809165}}&lt;/div&gt;</summary>
		<author><name>Kgx</name></author>
	</entry>
</feed>