<?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=Pikosip</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=Pikosip"/>
	<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/Pikosip"/>
	<updated>2026-05-25T11:44:48Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<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=41318</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=41318"/>
		<updated>2026-02-06T04:40:08Z</updated>

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

		<summary type="html">&lt;p&gt;Pikosip: /* インストール */ 誤字修正(管理べき-&amp;gt;管理するべき)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:エミュレーション]]&lt;br /&gt;
[[Category:ゲーム]]&lt;br /&gt;
[[de:Wine]]&lt;br /&gt;
[[en:Wine]]&lt;br /&gt;
[[fr:Wine]]&lt;br /&gt;
[[ru:Wine]]&lt;br /&gt;
[[zh-hans:Wine]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|CrossOver}}&lt;br /&gt;
{{Related|Deepin-wine}}&lt;br /&gt;
{{Related|Wine パッケージガイドライン}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[[Wikipedia:ja:Wine|Wine]] は、Microsoft Windows のアプリケーションを UNIX ライクな OS で動かすための &#039;&#039;互換レイヤー&#039;&#039; です。Wine で実行されるプログラムは、エミュレータにあるようなパフォーマンスやメモリのペナルティなしに、ネイティブプログラムと同じように機能します。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* Wine はシステムから分離されていません。&lt;br /&gt;
* ユーザーアカウントでファイルまたはリソースにアクセスできる場合は、Wine で実行されているプログラムもそれらにアクセスできます。[[#Wine を別のユーザアカウントで実行する]] と [[セキュリティ#アプリケーションのサンドボックス化]] を参照してください。&lt;br /&gt;
* Wine はマルウェアを実行することもできます ([https://wiki.winehq.org/FAQ#Is_Wine_malware-compatible.3F Wine FAQ on Malware compatibility] を参照)。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[multilib]] リポジトリを有効にし、{{Pkg|wine}} (開発版)、{{AUR|wine-stable}} (安定版)、{{Pkg|wine-staging}} (テスト版) のどれかをインストールすることで、Wine を利用できます。[https://wine-staging.com/ Wine Staging] は [https://www.winehq.org/ Wine] にパッチが適用されたバージョンで、安定ブランチや開発ブランチにマージされていないバグフィックスや機能追加が含まれています。これらは、64 ビット Linux ライブラリのみを使用しており、32 ビット Windows アプリケーションを実行するためのモード付きでビルドされています。&lt;br /&gt;
&lt;br /&gt;
その他の要件については [[#グラフィックドライバ]] と [[#サウンド]] も見てください。&lt;br /&gt;
&lt;br /&gt;
Internet Explorer や .NET に依存しているアプリケーションを使う場合、それぞれ {{pkg|wine-gecko}} と {{pkg|wine-mono}} をインストールしてください。Wine は必要なときに関連ファイルをダウンロードするので、これらのパッケージは厳密には必要ありません。しかし、[[システムメンテナンス#パッケージマネージャーを使用してソフトウェアをインストールする|これらのパッケージは pacman で管理]]するべきです 。&lt;br /&gt;
&lt;br /&gt;
=== 任意の依存パッケージ ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|一般的な依存パッケージ (特にゲーム関連) は [https://github.com/lutris/docs/blob/master/WineDependencies.md#archendeavourosmanjaroother-arch-derivatives lutris のドキュメント]にリストアップされています。}}&lt;br /&gt;
&lt;br /&gt;
Wine には、基本的なアプリケーションでは必要ないが、サウンド、3D グラフィックス、動画再生などを提供するためにインストールする必要がある[[任意の依存パッケージ]]が多くあります。&lt;br /&gt;
&lt;br /&gt;
多くの Windows アプリケーションは 32 ビットであり、32 ビット版のライブラリが必要であることに注意してください。これらのライブラリの一部は [[AUR]] でしか入手できません。標準 (64 ビット) のライブラリは、64 ビットアプリケーションに対して、または、新しい WoW64 モード ([[#インストール]] 章のノートを参照) のある Wine バージョンを実行している場合は全てのアプリケーションに対して使用することができます。Windows 実行ファイルが 64 ビットであるかどうかは、{{man|1|file}} コマンドで確認することができます。&lt;br /&gt;
&lt;br /&gt;
==== グラフィックドライバ ====&lt;br /&gt;
&lt;br /&gt;
グラフィックドライバの32ビットバージョンをインストールする必要があります。[[Xorg#ドライバーのインストール]] にある表の &#039;&#039;OpenGL (multilib)&#039;&#039; 列に載っているパッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
Wine がターミナルウィンドウに以下のようなメッセージを出力する場合、ドライバが不適切であるか正しく設定されていないことの印です:&lt;br /&gt;
&lt;br /&gt;
 Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly&lt;br /&gt;
&lt;br /&gt;
{{Note|適切なライブラリをインストールした後は X を再起動する必要があるかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
==== サウンド ====&lt;br /&gt;
&lt;br /&gt;
デフォルトの状態では、Wine アプリケーションを実行する際にサウンドの問題が発生する場合があります。&#039;&#039;winecfg&#039;&#039; でサウンドデバイスが1つだけ選択されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
あなたが使いたいオーディオドライバの正しいパッケージをインストールしてください:&lt;br /&gt;
&lt;br /&gt;
* [[ALSA]] の場合、{{Pkg|lib32-alsa-lib}} と {{Pkg|lib32-alsa-plugins}} をインストールしてください&lt;br /&gt;
* [[PulseAudio]] の場合、{{Pkg|lib32-libpulse}} をインストールしてください&lt;br /&gt;
* [[PipeWire]] の場合、{{Pkg|lib32-pipewire}} と、以下のどれかをインストールしてください:&lt;br /&gt;
** PulseAudio をフロントエンドとして使用するには {{Pkg|pipewire-pulse}} と {{Pkg|lib32-libpulse}}。&lt;br /&gt;
** ALSA をフロントエンドとして使用するには {{Pkg|pipewire-alsa}}、{{Pkg|lib32-alsa-lib}}、{{Pkg|lib32-alsa-plugins}}。&lt;br /&gt;
* [[OSS]] の場合、{{Pkg|lib32-alsa-oss}} をインストールしてください&lt;br /&gt;
&lt;br /&gt;
上記のパッケージをインストールしても&#039;&#039;なお&#039;&#039;、&#039;&#039;winecfg&#039;&#039; がオーディオドライバを見つけられない時 (Selected driver: (none)) は、[https://wiki.winehq.org/Wine_User&#039;s_Guide#Using_Regedit レジストリから設定してください]。例えば、64ビットの標準の wine-1.9.7 で32ビットの Windows アプリケーションを使ったときにマイクが機能しない場合、次の手順でサウンドハードウェア (サウンドプレイバックとマイク) にアクセスできるようになります: &#039;&#039;regedit&#039;&#039; を開いて &#039;&#039;HKEY_CURRENT_USER &amp;gt; Software &amp;gt; Wine &amp;gt; Drivers&#039;&#039; と進んで &#039;&#039;Audio&#039;&#039; という名前の文字列を追加して値を &#039;&#039;alsa&#039;&#039; に設定してください。また、[[#WINEPREFIX|prefix を再作成]]することで解決するかもしれません。&lt;br /&gt;
&lt;br /&gt;
===== MIDI サポート =====&lt;br /&gt;
&lt;br /&gt;
90年代のビデオゲームでは音楽に [[MIDI]] を使うのが人気でした。古いゲームを動かすときは、設定をしないと音楽が再生できないのは珍しくありません。&lt;br /&gt;
Wine には素晴らしい MIDI サポートがあります。ただし、最初に MIDI がシステムで動くように設定する必要があります。詳しくは [[MIDI]] を見てください。そして Wine が適切な MIDI 出力を使うように設定しなくてはなりません。&lt;br /&gt;
&lt;br /&gt;
==== 他の依存パッケージ ====&lt;br /&gt;
&lt;br /&gt;
一部のアプリケーションは追加のパッケージを必要とします [https://wiki.winehq.org/Building_Wine#Satisfying_Build_Dependencies]。&lt;br /&gt;
&lt;br /&gt;
* 暗号化サポートは、{{Pkg|lib32-gnutls}} をインストールしてください。&lt;br /&gt;
* 32ビットの prefix におけるジョイスティックとゲームパッドのサポートは、{{Pkg|lib32-sdl2}} をインストールしてください。&lt;br /&gt;
* 32ビットプログラムでのメディアプレイバックは、{{Pkg|lib32-gst-plugins-base}}、{{Pkg|lib32-gst-plugins-good}}、{{Aur|lib32-gst-plugins-bad}}、{{Aur|lib32-gst-plugins-ugly}}、{{Aur|lib32-gst-libav}} をインストールしてください。&lt;br /&gt;
* [[Wikipedia:ja:NTLM|NTLM]] 認証は、{{Pkg|samba}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
=== Prefix 内の依存パッケージ ===&lt;br /&gt;
&lt;br /&gt;
システムの依存パッケージとは別に、多くのプログラムは追加のフォントや DLL が Wine prefix にインストールされていることを要求します [https://wiki.winehq.org/FAQ#My_application_says_some_DLL_or_font_is_missing._What_do_I_do?]。これらの依存関係は、[https://github.com/Winetricks/winetricks Winetricks] を使うことでインストールすることができます。Winetricks はシンプルなパッケージマネージャで、何かをインストールしたり、設定の調整を行ったりする &#039;&#039;verb&#039;&#039; が用意されています。Winetricks には2つの使い方があります:&lt;br /&gt;
&lt;br /&gt;
* CLI から: {{ic|winetricks &#039;&#039;verb_name&#039;&#039;}} を実行する。&lt;br /&gt;
* GUI から: {{Pkg|zenity}} か {{Pkg|kdialog}} をインストールし、{{ic|winetricks}} を実行する。&lt;br /&gt;
&lt;br /&gt;
依存パッケージ間の衝突により、何でもできる &amp;quot;完璧な&amp;quot; Windows 環境を構築することができない場合があります [https://github.com/Winetricks/winetricks/issues/1580#issuecomment-666604256] [https://github.com/Winetricks/winetricks/issues/469]。そうするよりも、(重要な設定やデータが存在しない限り) prefix を使い捨てにして、異なる依存パッケージを必要とするプログラム毎に個別の prefix を使用するほうが良いです。[[#WINEPREFIX]] 環境変数を使うことで、どの prefix に対して verb を実行するかを指定することができます。&lt;br /&gt;
&lt;br /&gt;
プログラムが必要とする verb を知るには、多くのトライアンドエラーが必要になる可能性があります。一部のより一般的な依存パッケージは [https://usebottles.com/database/dependencies/ Bottles の依存関係ページ]を、また以下のプログラム固有のリソースを参照してください:&lt;br /&gt;
&lt;br /&gt;
* [https://appdb.winehq.org/ Wine Application Database]: 公式のリソースですが、古く、他のものと比べてメンテナンスされていないかもしれません。&lt;br /&gt;
* [https://lutris.net/ Lutris のウェブサイト]。このサイトで扱われているゲームを実行しようとしているならば、ドロップダウンメニューをクリックして、&#039;&#039;View install script&#039;&#039; をクリックすることで Lutris で使用されている Winetricks の verb を見ることができます。&lt;br /&gt;
* [https://github.com/bottlesdevs/programs Bottles のプログラムリポジトリ]。小さいですが、ゲーム以外もあります。&lt;br /&gt;
* [https://www.protondb.com/ ProtonDB]。Proton は Wine とは異なる互換性があります (それに加え、このサイトを見るなら単に Proton を使うほうが良いかもしれません)。しかし、ユーザーが書き込んだ verb は使えるかもしれません。&lt;br /&gt;
** また、[https://github.com/GloriousEggroll/proton-ge-custom proton-ge-custom] に同梱されている変化の速い [https://github.com/Open-Wine-Components/ULWGL-protonfixes/ protonfixes] ツールのソースを参照することもできます。しかし、このツールはゲームを修正する追加の Proton と GE のパッチが存在していることを想定しています。&lt;br /&gt;
&lt;br /&gt;
ゲームの prefix を管理するのに多くの時間が掛かる場合は、prefix を管理してくれるサードパーティのアプリケーションを使う方が簡単かもしれません。&lt;br /&gt;
&lt;br /&gt;
=== サードパーティ製アプリケーション ===&lt;br /&gt;
&lt;br /&gt;
以下のアプリケーションは、独自のコミュニティーとウェブサイトを持っており、メインの Wine コミュニティによって &#039;&#039;&#039;サポートされていません&#039;&#039;&#039;。詳しくは [https://wiki.winehq.org/Third_Party_Applications Wine Wiki] を見てください。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Bottles]]|Wine 用のグラフィカルな prefix マネージャであり、ランナーマネージャ。GTK ベース。|https://usebottles.com/|{{AUR|bottles}}}}&lt;br /&gt;
* {{App|[[CrossOver]]|公式の商用版 Wine。グラフィカルなインターフェイスと包括的なエンドユーザーサポートを提供しています。|https://www.codeweavers.com|{{AUR|crossover}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Lutris|Lutris]]|Wine のゲームから Linux ネイティブのゲーム、エミュレータまで、あらゆるゲームに対応するゲームランチャー (prefix の管理機能が存在します)。|https://lutris.net|{{Pkg|lutris}}}}&lt;br /&gt;
* {{App|[[Wikipedia:PlayOnLinux|PlayOnLinux]]|Wine のグラフィカルな prefix マネージャです。プログラムのインストールと設定を支援するスクリプトが含まれています。|https://www.playonlinux.com|{{AUR|playonlinux}}}}&lt;br /&gt;
* {{App|[[Proton]]|[[Steam]] のために作成された互換ツール。Wine と追加のコンポーネントをベースとしています。互換性のリストは [https://www.protondb.com/ ProtonDB] を見てください。|https://github.com/ValveSoftware/Proton|{{AUR|proton}}}}&lt;br /&gt;
* {{App|PyWinery|シンプルでグラフィカルな Wine 用の prefix マネージャ。|https://github.com/ergoithz/pywinery|{{AUR|pywinery}}}}&lt;br /&gt;
* {{App|Q4Wine|Wine のグラフィカルな prefix マネージャ。[[Qt]] テーマを Wine の設定に適用することで見た目を統合することができます。|https://sourceforge.net/projects/q4wine/|{{AUR|q4wine-git}}}}&lt;br /&gt;
* {{App|WINEgui|ユーザフレンドリーな WINE グラフィカルインターフェイス。|https://gitlab.melroy.org/melroy/winegui|{{AUR|winegui}}, {{AUR|winegui-bin}}}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
通常 Wine の設定には以下を用います:&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.winehq.org/Winecfg winecfg] は Wine の GUI 設定ツールです。{{ic|winecfg}} を実行することで起動できます。&lt;br /&gt;
* [https://wiki.winehq.org/Regedit regedit] は Wine のレジストリ編集ツールです。{{ic|regedit}} を実行することで起動できます。WineHQ の記事 [https://wiki.winehq.org/Useful_Registry_Keys Useful Registry Keys] を見てください。&lt;br /&gt;
* [https://wiki.winehq.org/Control control] は Windows コントロールパネルの Wine 実装です。{{ic|wine control}} を実行することで起動できます。&lt;br /&gt;
* 完全なリストは WineHQ の [https://wiki.winehq.org/List_of_Commands List of Commands] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== WINEPREFIX ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Wine の設定ファイルとインストールされた Windows プログラムは {{ic|~/.wine}} に置かれます。このディレクトリは一般的に &amp;quot;Wine prefix&amp;quot; や &amp;quot;Wine bottle&amp;quot; と呼ばれます。Windows プログラムを動かしたり、Wine を設定するための {{ic|winecfg}} を動かすと自動的にフォルダが作成されます。そして Wine で動いているプログラムはこのフォルダの下のツリーを {{ic|C:}} (C ドライブ) とみなします。&lt;br /&gt;
&lt;br /&gt;
{{Note|Wine の prefix には前方互換性がありません。新しいバージョンの Wine は、必要に応じて自動的に古い prefix をアップグレードします。アップグレードされると、その prefix は古いバージョンの Wine で動作しなくなる場合があります。[https://github.com/GloriousEggroll/wine-ge-custom/releases/tag/7.0-GE-8-LoL]}}&lt;br /&gt;
&lt;br /&gt;
{{ic|WINEPREFIX}} [[環境変数]]を設定することで、Wine が使用する prefix の場所を指定することができます。これは Windows プログラムにそれぞれ違う設定をしたいときに便利です。初めて新しい Wine の prefix を使ってプログラムを起動した時、Wine は自動で C ドライブとレジストリの入ったディレクトリを作成します。&lt;br /&gt;
&lt;br /&gt;
例えば、{{ic|1=env WINEPREFIX=~/.win-a wine program-a.exe}} と {{ic|1=env WINEPREFIX=~/.win-b wine program-b.exe}} のようにプログラムを動かせば、2つのプログラムは別の C ドライブとレジストリを使います。&lt;br /&gt;
&lt;br /&gt;
{{Warning|Wine の prefix は[[Wikipedia:ja:サンドボックス (セキュリティ)|サンドボックス]]ではありません！Wine で動いているプログラムは依然として Wine システムの外にアクセスすることが可能です (例えば、Wine の prefix に関係なく、{{ic|Z:}} は {{ic|/}} にマッピングされます)。}}&lt;br /&gt;
&lt;br /&gt;
Windows プログラムや GUI ツールを実行せずに、デフォルトの prefix を作成するには:&lt;br /&gt;
&lt;br /&gt;
 $ env WINEPREFIX=~/.customprefix wineboot -u&lt;br /&gt;
&lt;br /&gt;
=== WINEARCH ===&lt;br /&gt;
&lt;br /&gt;
Wine はデフォルトで 64 ビットの環境を作ります。この挙動は {{ic|WINEARCH}} [[環境変数]]を使うことで変更できます。{{ic|~/.wine}} ディレクトリの名前を変更し、{{ic|1=$ WINEARCH=win32 winecfg}} を実行して新しい Wine 環境を作成してください。これで 32 ビットの Wine 環境が作られます。{{ic|WINEARCH}} を設定しないときは 64 ビット環境が作られます。&lt;br /&gt;
&lt;br /&gt;
{{ic|WINEPREFIX}} を使うことで {{ic|win32}} 環境と {{ic|win64}} 環境を分離することができます:&lt;br /&gt;
&lt;br /&gt;
 $ WINEARCH=win32 WINEPREFIX=~/win32 winecfg&lt;br /&gt;
 $ WINEPREFIX=~/win64 winecfg&lt;br /&gt;
&lt;br /&gt;
{{ic|WINEARCH}} を &#039;&#039;winetricks&#039;&#039; などの他の Wine プログラムと一緒に使うこともできます (以下の例では Steam):&lt;br /&gt;
&lt;br /&gt;
 WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam&lt;br /&gt;
&lt;br /&gt;
prefix のアーキテクチャは、レジストリファイルを見ることで確認できます。以下のコマンドは、{{ic|~/.wine}} prefix のシステムレジストリを読み込み、アーキテクチャタイプに応じて {{ic|1=#arch=win32}} か {{ic|1=#arch=win64}} を返します:&lt;br /&gt;
&lt;br /&gt;
 $ grep &#039;#arch&#039; ~/.wine/system.reg&lt;br /&gt;
&lt;br /&gt;
=== フォント ===&lt;br /&gt;
&lt;br /&gt;
Wine アプリケーションで読みづらいフォントや不足しているフォントがある場合、フォントがインストールされていないのかもしれません。Wine からアクセスできるようにシステムフォントにすべてリンクするには:&lt;br /&gt;
&lt;br /&gt;
 $ cd ${WINEPREFIX:-~/.wine}/drive_c/windows/Fonts &amp;amp;&amp;amp; for i in /usr/share/fonts/**/*.{ttf,otf}; do ln -s &amp;quot;$i&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Wine はフォントをレンダリングするために FreeType を使用します。FreeType のデフォルトは数リリース前に変更されました。Wine でプログラムを実行する際に以下の[[環境変数]]を使ってみてください:&lt;br /&gt;
&lt;br /&gt;
 FREETYPE_PROPERTIES=&amp;quot;truetype:interpreter-version=35&amp;quot;&lt;br /&gt;
&lt;br /&gt;
他の手段として、Wine prefix に [[MS フォント#インストール|Microsoft の TrueType フォントをインストール]]するというものがあります。これでもうまく行かない場合、まず {{ic|winetricks corefonts}} を実行し、最後の手段として {{ic|winetricks allfonts}} を実行してみてください。&lt;br /&gt;
&lt;br /&gt;
プログラムを実行した後は、すべての Wine サーバを kill して {{ic|winecfg}} を実行してください。これでフォントが読めるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
フォントが汚く見える場合、[https://wiki.winehq.org/FAQ#How_do_I_edit_the_Wine_registry.3F regedit] を使って以下のテキストファイルを Wine のレジストリにインポートしてください:&lt;br /&gt;
&lt;br /&gt;
 Windows Registry Editor Version 5.00&lt;br /&gt;
 [HKEY_CURRENT_USER\Software\Wine\X11 Driver]&lt;br /&gt;
 &amp;quot;ClientSideWithRender&amp;quot;=&amp;quot;N&amp;quot;&lt;br /&gt;
&lt;br /&gt;
高解像度ディスプレイにおいては、dpi の値を winecfg で調整できます。&lt;br /&gt;
&lt;br /&gt;
[[フォント設定#fontconfig をサポートしていないアプリケーション]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
==== フォントスムージングの有効化 ====&lt;br /&gt;
&lt;br /&gt;
Wine のフォントレンダリングを改善する良い方法として、cleartype フォントスムージングを有効化するというものがあります。&lt;br /&gt;
&amp;quot;Subpixel smoothing (ClearType) RGB&amp;quot; を有効化するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/tmp/fontsmoothing.reg|2=&lt;br /&gt;
REGEDIT4&lt;br /&gt;
&lt;br /&gt;
[HKEY_CURRENT_USER\Control Panel\Desktop]&lt;br /&gt;
&amp;quot;FontSmoothing&amp;quot;=&amp;quot;2&amp;quot;&lt;br /&gt;
&amp;quot;FontSmoothingOrientation&amp;quot;=dword:00000001&lt;br /&gt;
&amp;quot;FontSmoothingType&amp;quot;=dword:00000002&lt;br /&gt;
&amp;quot;FontSmoothingGamma&amp;quot;=dword:00000578&lt;br /&gt;
EOF&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
 $ WINE=${WINE:-wine} WINEPREFIX=${WINEPREFIX:-$HOME/.wine} $WINE regedit /tmp/fontsmoothing.reg 2&amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
詳細は [https://askubuntu.com/a/219795 元になった回答] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== デスクトップランチャーメニュー ===&lt;br /&gt;
&lt;br /&gt;
Windows アプリケーションインストーラによってショートカットが作成された場合、Wine は [[.desktop]] ファイルを作成します。Arch Linux ではデフォルトで以下の場所にファイルが作成されます:&lt;br /&gt;
&lt;br /&gt;
* デスクトップショートカットは {{ic|~/Desktop}} に保存されます&lt;br /&gt;
* スタートメニューのショートカットは {{ic|~/.local/share/applications/wine/Programs/}} に保存されます&lt;br /&gt;
&lt;br /&gt;
{{Note|1=Wine は全てのユーザー共通で Windows アプリケーションをインストールすることはできません。{{ic|.desktop}} ファイルが {{ic|/usr/share/applications}} に作成されることはありません。詳しくは WineHQ バグの [https://bugs.winehq.org/show_bug.cgi?id=11112 11112] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|メニューがインストールしてもファイルが&#039;&#039;作られなかったり&#039;&#039;もしくは消えてしまった場合、{{ic|wine winemenubuilder}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
==== Wine ユーティリティのメニューエントリを作成する ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Wine をインストールしても Wine に付属しているソフトウェア (例:&#039;&#039;winecfg&#039;&#039; や &#039;&#039;winebrowser&#039;&#039; など) のデスクトップメニューやアイコンは作られません。{{AUR|wine-installer}} か {{AUR|wine-installer-git}} をインストールすることでこれらを作成できます。あるいは、以下の指示により、これらのアプリケーションのエントリを追加できます。&lt;br /&gt;
&lt;br /&gt;
まず、ベースメニューを作るために Wine で Windows プログラムをインストールします。ベースメニューが作られたら、{{ic|~/.local/share/applications/wine/}} に以下のファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|wine-browsedrive.desktop|2=&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Browse C: Drive&lt;br /&gt;
Comment=Browse your virtual C: drive&lt;br /&gt;
Exec=wine winebrowser c:&lt;br /&gt;
Terminal=false&lt;br /&gt;
Type=Application&lt;br /&gt;
Icon=folder-wine&lt;br /&gt;
Categories=Wine;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|wine-uninstaller.desktop|2=&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Uninstall Wine Software&lt;br /&gt;
Comment=Uninstall Windows applications for Wine&lt;br /&gt;
Exec=wine uninstaller&lt;br /&gt;
Terminal=false&lt;br /&gt;
Type=Application&lt;br /&gt;
Icon=wine-uninstaller&lt;br /&gt;
Categories=Wine;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|wine-winecfg.desktop|2=&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Configure Wine&lt;br /&gt;
Comment=Change application-specific and general Wine options&lt;br /&gt;
Exec=winecfg&lt;br /&gt;
Terminal=false&lt;br /&gt;
Icon=wine-winecfg&lt;br /&gt;
Type=Application&lt;br /&gt;
Categories=Wine;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして {{ic|~/.config/menus/applications-merged/}} に次のファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|wine.menu|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE Menu PUBLIC &amp;quot;-//freedesktop//DTD Menu 1.0//EN&amp;quot;&lt;br /&gt;
&amp;quot;http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Menu&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;Applications&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Menu&amp;gt;&lt;br /&gt;
    &amp;lt;Name&amp;gt;wine-wine&amp;lt;/Name&amp;gt;&lt;br /&gt;
    &amp;lt;Directory&amp;gt;wine-wine.directory&amp;lt;/Directory&amp;gt;&lt;br /&gt;
    &amp;lt;Include&amp;gt;&lt;br /&gt;
      &amp;lt;Category&amp;gt;Wine&amp;lt;/Category&amp;gt;&lt;br /&gt;
    &amp;lt;/Include&amp;gt;&lt;br /&gt;
  &amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
以上の設定でアイコンが表示されない、あるいはアイコンが醜い場合は、有効になっているアイコンセットにランチャーのためのアイコンが存在しないのが原因です。使いたいアイコンの位置を指定してアイコンの設定を置き換えてください。プロパティメニューのアイコンをクリックしても同じことができます。これらのショートカットをサポートしているアイコンセットは {{AUR|gnome-colors-icon-theme}} です。&lt;br /&gt;
&lt;br /&gt;
==== メニューエントリを削除する ====&lt;br /&gt;
&lt;br /&gt;
Wine によって作成されるエントリは {{ic|~/.local/share/applications/wine/Programs/}} にあります。プログラムの &amp;quot;.desktop&amp;quot; エントリを削除すればメニューからアプリケーションが削除されます。&lt;br /&gt;
&lt;br /&gt;
Wine による不要な拡張を削除するのに加えて、以下のコマンドを実行: [https://wiki.winehq.org/FAQ#How_do_I_clean_the_Open_With_List.3F]&lt;br /&gt;
&lt;br /&gt;
 $ rm ~/.local/share/mime/packages/x-wine*&lt;br /&gt;
 $ rm ~/.local/share/applications/wine-extension*&lt;br /&gt;
 $ rm ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*&lt;br /&gt;
 $ rm ~/.local/share/mime/application/x-wine-extension*&lt;br /&gt;
&lt;br /&gt;
場合によっては、KDE の Wine サブメニューからアイテムを完全に削除するために、{{ic|wine-*.menu}} も {{ic|/.config/menus/}} から削除する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 外観 ===&lt;br /&gt;
&lt;br /&gt;
XP のような見た目のテーマを[https://archive.org/download/zune-desktop-theme/ZuneDesktopTheme.msi ダウンロード]できます。これをインストールするには、[https://wiki.winehq.org/Wine_User%27s_Guide#Running_.msi_files この上流の wiki 記事] を見てください。最後に、&#039;&#039;winecfg&#039;&#039; を使ってそのテーマを選択してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|上記のリンクのテーマは、Windows XP の prefix バージョンが設定された32ビット prefix にしかインストールできません。64ビット prefix にインストールするには、一時的な32ビット prefix を作成し、テーマをインストールし、{{ic|drive_c/Windows/Resources/Themes}} から {{ic|Zune}} フォルダと {{ic|Zune.theme}} ファイルを64ビットの prefix の同じ場所にコピーする必要があるかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
Wine staging のユーザは、現在の GTK テーマにマッチさせるために、代わりに &#039;&#039;winecfg&#039;&#039; の Staging セクションの &#039;&#039;Enable GTK3 Theming&#039;&#039; オプションを有効化する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== 印刷 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;win32 prefix&#039;&#039; で wine アプリケーション (例: MS Word) を使ってプリンター (ローカル・ネットワーク両方) を使用するには {{Pkg|lib32-libcups}} パッケージをインストールしてください。それから wine アプリケーションを再起動 (&#039;&#039;wineboot&#039;&#039;) してください。&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションが LTS や HTTPS 接続を行えるようにするために、場合によっては Wine のインストール後に {{pkg|lib32-gnutls}} を[[インストール]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
ICMP (ping) の場合、[https://wiki.winehq.org/FAQ#Failed_to_use_ICMP_.28network_ping.29.2C_this_requires_special_permissions WineHQ FAQ] で説明されているように Wine はネットワークアクセスを必要とします:&lt;br /&gt;
&lt;br /&gt;
 # setcap cap_net_raw+epi /usr/bin/wine-preloader&lt;br /&gt;
&lt;br /&gt;
このコマンドを実行した後に問題が発生する場合 (キャッチされない例外や特権命令など)、以下を実行してケーパビリティを削除してください:&lt;br /&gt;
&lt;br /&gt;
 # setcap -r /usr/bin/wine-preloader&lt;br /&gt;
&lt;br /&gt;
== 使用法 ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|Wine アプリケーションを root として実行/インストールしないでください! 詳細は [https://wiki.winehq.org/FAQ#Should_I_run_Wine_as_root.3F Wine FAQ] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
Wine の使用法に関する一般的な情報は [https://wiki.winehq.org/Wine_User%27s_Guide#Using_Wine Wine User&#039;s Guide] を見てください。&lt;br /&gt;
&lt;br /&gt;
Wine における特定の Windows アプリケーションに関する追加の情報は [https://appdb.winehq.org/ Wine Application Database (AppDB)] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Wayland ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|ネイティブな [[Wayland]] ドライバはまだ実験段階です。}}&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Wine は Wayland 上で動作する際に [[Xwayland]] を使用します。これは、ほとんどのユーザーにとって十分なエクスペリエンスを得られます。バージョン 9.0rc1 現在、Wine はネイティブな Wayland サポートにおいて大幅な進捗があり、一部のユースケースにおいては使用に適した状態になっています。&lt;br /&gt;
&lt;br /&gt;
最近の Wine バージョンで追加されたネイティブな Wayland ドライバを試すには、以下の手順を踏んでください:&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.winehq.org/FAQ#How_do_I_edit_the_Wine_registry.3F regedit] で以下のテキストファイルを Wine レジストリにインポートしてください:&lt;br /&gt;
&lt;br /&gt;
 Windows Registry Editor Version 5.00&lt;br /&gt;
 [HKEY_CURRENT_USER\Software\Wine\Drivers]&lt;br /&gt;
 &amp;quot;Graphics&amp;quot;=&amp;quot;x11,wayland&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* {{Ic|DISPLAY}} [[環境変数]]を空にして、Xwayland を使用せずにネイティブな Wayland ドライバを強制してください:&lt;br /&gt;
&lt;br /&gt;
 $ DISPLAY= wine example.exe&lt;br /&gt;
&lt;br /&gt;
2番目の手順で Wine が停止した場合は、インストールされている Wine のバージョンが新しい Wayland ドライバのサポートありでビルドされていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Wine の実行を停止する ===&lt;br /&gt;
&lt;br /&gt;
起動済みのプログラムを停止する ({{ic|wine}} に対して {{ic|wine}}、あるいは {{ic|wineconsole}} に対して Ctrl+C を押す) と、バックグラウンドでプロセスが実行中のままになってしまうかもしれません。例えば:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;$ ps -xo pid,cmd&lt;br /&gt;
    PID CMD&lt;br /&gt;
    297 -bash&lt;br /&gt;
    933 /usr/bin/wineserver&lt;br /&gt;
    939 C:\windows\system32\services.exe&lt;br /&gt;
    942 C:\windows\system32\winedevice.exe&lt;br /&gt;
    950 C:\windows\system32\explorer.exe /desktop&lt;br /&gt;
    954 C:\windows\system32\winedevice.exe&lt;br /&gt;
    965 C:\windows\system32\plugplay.exe&lt;br /&gt;
    977 C:\windows\system32\svchost.exe -k LocalServiceNetworkRestricted&lt;br /&gt;
    984 C:\windows\system32\rpcss.exe&lt;br /&gt;
    997 mbserver.exe&lt;br /&gt;
   1017 start.exe /exec&lt;br /&gt;
   1019 C:\windows\system32\conhost.exe --unix --width 169 --height 40 --server 0x10&lt;br /&gt;
   1021 Z:\home\wineuser\mbserver.exe&lt;br /&gt;
   1030 ps -xo pid,cmd&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
実行中の {{ic|wine}} と {{ic|wineconsole}} プロセスは、[https://wiki.winehq.org/Wine_User%27s_Guide#-k_%5Bn%5D wineserver -k] コマンドを使って一度にすべて停止できます。例えば:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;$ wineserver -k 15&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
このコマンドは {{ic|WINEPREFIX}} 変数に依存しているため、カスタムの Wine prefix を使用している場合は、以下のコマンドを使用してください:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;$ WINEPREFIX=~/wine/my-prefix wineserver -k&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
上記の例で挙げたプログラムを両方停止するコマンドは以下のようになります:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;$ kill 997 1021&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Wineconsole ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;.exe&#039;&#039; を実行してゲームファイルにパッチを適用する必要がある場合 (例えば古いゲームにワイドスクリーン対応 MOD を適用するなど)、通常の方法で Wine から &#039;&#039;.exe&#039;&#039; を実行しても何も起きないことがあります。その場合、ターミナルを開いて以下のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ wineconsole cmd&lt;br /&gt;
&lt;br /&gt;
そして、プログラムがあるフォルダまで移動して、&#039;&#039;.exe&#039;&#039; プログラムを実行してください。&lt;br /&gt;
&lt;br /&gt;
=== Winetricks ===&lt;br /&gt;
&lt;br /&gt;
[https://wiki.winehq.org/Winetricks Winetricks] は Windows プログラムを動かすために必要なランタイムなどをインストールするためのスクリプトです。DirectX 9.x や MSXML (Microsoft Office 2007 や Internet Explorer で必要)、Visual ランタイムライブラリなどをインストールできます。&lt;br /&gt;
&lt;br /&gt;
使うには {{pkg|winetricks}} パッケージ (あるいは {{AUR|winetricks-git}}) を[[インストール]]してください。そして、以下で実行してください:&lt;br /&gt;
 $ winetricks&lt;br /&gt;
&lt;br /&gt;
GUI を使う場合、{{pkg|zenity}} (GTK) か {{pkg|kdialog}} (Qt) を[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
=== パフォーマンス ===&lt;br /&gt;
&lt;br /&gt;
==== CSMT ====&lt;br /&gt;
&lt;br /&gt;
CSMT は OpenGL 呼び出しに対して別のスレッドを使うことでパフォーマンスを著しく向上させる技術で、Wine によって使われています。Wine 3.2 から CSMT はデフォルトで有効になっています。&lt;br /&gt;
&lt;br /&gt;
アプリケーションによっては CSMT がパフォーマンスを劣化させることがあります。そのような場合、{{ic|wine regedit}} を実行してレジストリエディタを起動し、&#039;&#039;HKEY_CURRENT_USER -&amp;gt; Software &amp;gt; Wine &amp;gt; Direct3D &amp;gt; csmt&#039;&#039; に DWORD の値 0x00 を設定して、CSMT を無効化してください。&lt;br /&gt;
&lt;br /&gt;
詳細:&lt;br /&gt;
:CSMT の開発者 Stefan Dösinger による [https://www.phoronix.com/forums/showthread.php?93967-Wine-s-Big-Command-Stream-D3D-Patch-Set-Updated/page3&amp;amp;s=7775d7c3d4fa698089d5492bb7b1a435 Phoronix Forum の議論]&lt;br /&gt;
&lt;br /&gt;
==== ゲームで強制的に OpenGL モードにする ====&lt;br /&gt;
&lt;br /&gt;
多くのゲームには OpenGL モードがあり&#039;&#039;多くの場合&#039;&#039;デフォルトの DirectX モードより良いパフォーマンスが出ます。OpenGL レンダリングを有効にする方法は&#039;&#039;それぞれのアプリケーションによる&#039;&#039;一方、多くのゲームは {{Ic|-opengl}} パラメータを認識します。&lt;br /&gt;
&lt;br /&gt;
 $ wine &#039;&#039;/path/to/3d_game.exe&#039;&#039; -opengl&lt;br /&gt;
&lt;br /&gt;
詳しい情報は、それぞれのアプリケーションのドキュメントや Wine の [https://appdb.winehq.org AppDB] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== VKD3D-Proton ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/HansKristian-Work/vkd3d-proton VKD3D-Proton] は [https://wiki.winehq.org/Vkd3d VKD3D] のフォークで、Vulkan を用いて完全な Direct3D 12 API の実装を目指しています。このプロジェクトは、Proton で Direct3D 12 をサポートし、DirectX 12 ゲームのパフォーマンスと互換性を向上させるものです。&lt;br /&gt;
&lt;br /&gt;
VKD3D-Proton を使うには、{{AUR|vkd3d-proton-mingw}} または {{AUR|vkd3d-proton-bin}} をインストールしてください。そして、以下のコマンドを実行し、prefix (デフォルトでは {{ic|~/.wine}}) で VKD3D-Proton を有効化してください:&lt;br /&gt;
 $ WINEPREFIX=&#039;&#039;your-prefix&#039;&#039; setup_vkd3d_proton install&lt;br /&gt;
&lt;br /&gt;
{{Warning|VKD3D-Proton は DirectX 12 の DLL を上書きします。これは、オンラインマルチプレイヤーゲームではチートとみなされる場合があり、あなたのアカウントが &#039;&#039;&#039;BAN&#039;&#039;&#039; されてしまうかもしれません。自己責任で使用してください!}}&lt;br /&gt;
&lt;br /&gt;
==== DXVK ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/doitsujin/dxvk DXVK] は、DirectX 9、10、11 の Vulkan による実装です。ほとんどのゲームにおいて、こちらのほうが WineD3D ドライバよりもパフォーマンス及び互換性で勝っています。&lt;br /&gt;
&lt;br /&gt;
DXVK を使うには、{{AUR|dxvk-mingw}} または {{AUR|dxvk-bin}} をインストールしてください。そして、以下のコマンドを実行し、prefix (デフォルトでは {{ic|~/.wine}}) で DXVK を有効化してください:&lt;br /&gt;
&lt;br /&gt;
 $ WINEPREFIX=&#039;&#039;your-prefix&#039;&#039; setup_dxvk install&lt;br /&gt;
&lt;br /&gt;
DXVK をデュアルグラフィックスの環境で使用する場合、Wine は専用の GPU を優先します。ノート PC では、省電力のためにこれを上書きできます:&lt;br /&gt;
&lt;br /&gt;
 $ VK_DRIVER_FILES=/usr/share/vulkan/icd.d/&#039;&#039;your_driver&#039;&#039;.json wine &#039;&#039;executable&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===== HDR サポート =====&lt;br /&gt;
&lt;br /&gt;
[[Gamescope]] と一緒に使用する場合、DXVK (V2.1+) は HDR10 ディスプレイのサポートを提供します ([[AMDGPU]] ユーザのみ)。詳細は [[HDR モニターのサポート]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== Gallium Nine ====&lt;br /&gt;
&lt;br /&gt;
Gallium ベースの mesa ドライバを使用する場合 (ほとんどの場合 AMD と Intel のカード)、DirectX 9 で優れたパフォーマンスを出すネイティブな [https://docs.mesa3d.org/gallium-nine.html Gallium Direct3D ドライバ]があります。このドライバは DXVK によりほとんど使われなくなりましたが、Vulkan のサポートがない場合に依然として便利である場合があります。DXVK と Gallium Nine のパフォーマンスは[https://www.supergoodcode.com/the-finale/#this-is-no-longer-a-zink-blog ほぼ同じである]はずです。&lt;br /&gt;
&lt;br /&gt;
Gallium Nine を使うには {{Pkg|wine-nine}} をインストールしてください。これはスタンドアローンパッケージで、どの Wine バージョンとも併用できます。有効化されているか確かめるには {{ic|wine ninewinecfg}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
古い Intel graphics (4 から 7 世代: GMA 3000, GMA 4500, HD 2000-5000; 2006年-2014年) では、Mesa 21.2 以降 Crocus Gallium ドライバが i965 の代わりに使用されるはずです。Wine を実行する前に以下の環境変数を [[Export]] してください:&lt;br /&gt;
&lt;br /&gt;
 MESA_LOADER_DRIVER_OVERRIDE=crocus&lt;br /&gt;
&lt;br /&gt;
=== Wine によるファイルの関連付けの解除 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトで、大量のフォーマットで Wine はデフォルトアプリケーションとして設定されます。Windows にしかないフォーマットもあり (例: {{ic|vbs}} や {{ic|chm}})、その場合 Wine で開けるようになるのは便利かもしれません。しかしながら、他のフォーマット (例: {{ic|gif}}, {{ic|jpeg}}, {{ic|txt}}, {{ic|js}}) が Wine の素っ気ない Internet Explorer やメモ帳で開かれるのは迷惑と感じることもあるでしょう。&lt;br /&gt;
&lt;br /&gt;
Wine のファイルの関連付けは {{ic|~/.local/share/applications/}} にある {{ic|wine-extension-&#039;&#039;extension&#039;&#039;.desktop}} というファイルによって設定されます。関連付けを解除したい拡張子の名前が入っているファイルを削除してください。もしくは、Wine の関連付けを全て削除したい場合:&lt;br /&gt;
&lt;br /&gt;
 $ rm -f ~/.local/share/applications/wine-extension*.desktop&lt;br /&gt;
 $ rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*&lt;br /&gt;
&lt;br /&gt;
古いキャッシュを削除:&lt;br /&gt;
&lt;br /&gt;
 $ rm -f ~/.local/share/applications/mimeinfo.cache&lt;br /&gt;
 $ rm -f ~/.local/share/mime/packages/x-wine*&lt;br /&gt;
 $ rm -f ~/.local/share/mime/application/x-wine-extension*&lt;br /&gt;
&lt;br /&gt;
キャッシュをアップデート:&lt;br /&gt;
&lt;br /&gt;
 $ update-desktop-database ~/.local/share/applications&lt;br /&gt;
 $ update-mime-database ~/.local/share/mime/&lt;br /&gt;
&lt;br /&gt;
削除しても、アプリケーションによってファイルの関連付けが設定されたら、Wine はファイルの関連付けを作成し続けます。&lt;br /&gt;
&lt;br /&gt;
=== Wine がファイルの関連付けをしないようにする ===&lt;br /&gt;
&lt;br /&gt;
{{Note|以下の作業は、{{ic|/usr/share/wine/wine.inf}} を変更しない限り、ファイルの関連付けをアップデートさせたくない WINEPREFIX それぞれに対して行わなければなりません。}}&lt;br /&gt;
&lt;br /&gt;
以下の方法は、ファイルの関連付けを作成することを防止しますが、XDG .desktop ファイルは保持します (メニューなどに表示されるかもしれません)。&lt;br /&gt;
&lt;br /&gt;
winecfg を通して Wine がファイルの関連付けをしないように設定するには、Desktop Integration タブのチェックボックス &amp;quot;Manage File Associations&amp;quot; のチェックを解除する必要があります。[https://wiki.winehq.org/FAQ#How_can_I_prevent_Wine_from_changing_the_filetype_associations_on_my_system_or_adding_unwanted_menu_entries.2Fdesktop_links.3F Wine FAQ] を見てください。&lt;br /&gt;
&lt;br /&gt;
レジストリを通して同じ変更を加えるには、以下に文字列 {{ic|Enable}} を {{ic|N}} という値で追加してください:&lt;br /&gt;
&lt;br /&gt;
 HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;まず、{{ic|FileOpenAssociations}} キーを作成する必要があるかもしれません。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
この変更をコマンドラインを通して加えるには、以下のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ wine reg add &amp;quot;HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations&amp;quot; /v Enable /d N&lt;br /&gt;
&lt;br /&gt;
新しく作成される WINEPREFIX に対してこの変更をデフォルトで加えるようにしたい場合、{{ic|/usr/share/wine/wine.inf}} を編集し、例えば以下の行を {{ic|[Services]}} セクションに追加してください:&lt;br /&gt;
 HKCU,&amp;quot;Software\Wine\FileOpenAssociations&amp;quot;,&amp;quot;Enable&amp;quot;,2,&amp;quot;N&amp;quot;&lt;br /&gt;
&lt;br /&gt;
パッケージのアップグレードの際にこのファイルが上書きされないようにするには、pacman フックを作成して上記の変更が自動的に加えられるようにしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/pacman.d/hooks/stop-wine-associations.hook|2=&lt;br /&gt;
&lt;br /&gt;
[Trigger]&lt;br /&gt;
Operation = Install&lt;br /&gt;
Operation = Upgrade&lt;br /&gt;
Type = Path&lt;br /&gt;
Target = usr/share/wine/wine.inf&lt;br /&gt;
&lt;br /&gt;
[Action]&lt;br /&gt;
Description = Stopping Wine from hijacking file associations...&lt;br /&gt;
When = PostTransaction&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Exec = /bin/sh -c &#039;/usr/bin/grep -q &amp;quot;HKCU,\&amp;quot;Software\\\Wine\\\FileOpenAssociations\&amp;quot;,\&amp;quot;Enable\&amp;quot;,2,\&amp;quot;N\&amp;quot;&amp;quot; /usr/share/wine/wine.inf || /usr/bin/sed -i &amp;quot;s/\[Services\]/\[Services\]\nHKCU,\&amp;quot;Software\\\Wine\\\FileOpenAssociations\&amp;quot;,\&amp;quot;Enable\&amp;quot;,2,\&amp;quot;N\&amp;quot;/g&amp;quot; /usr/share/wine/wine.inf&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳細は [[Pacman#フック]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Windows バイナリを暗黙的に Wine で実行する ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|wine}} パッケージは &#039;&#039;binfmt&#039;&#039; ファイルをインストールします。このファイルにより、Windows プログラムを直接実行できるようになります。例えば、{{ic|&#039;&#039;./myprogram.exe&#039;&#039;}} は、{{ic|wine &#039;&#039;./myprogram.exe&#039;&#039;}} と入力した時と同じように振る舞います。デフォルトでサービスは起動時に開始されます。Wine をインストールした後に再起動していないのであれば、{{ic|systemd-binfmt.service}} を[[起動]]することで、すぐに使えるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Note|Windows バイナリが[[実行可能属性|実行可能]]であることを確認してください。さもないと、バイナリは実行されません。}}&lt;br /&gt;
&lt;br /&gt;
=== 異なる解像度でのデュアルスクリーン ===&lt;br /&gt;
&lt;br /&gt;
デュアルヘッドの設定でディスプレイの解像度が異なったときに問題が起きる場合はおそらく {{Pkg|lib32-libxrandr}} をインストールしていません。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|lib32-libxinerama}} をインストールすることでも wine のデュアルスクリーンの問題が解決することがあります (例えば、最右や最下のモニタでアプリケーションのボタンやメニューがクリックできなくなったり、アプリケーションのインターフェイスが再描画されなかったり、アプリケーションのエリアでマウスカーソルがドラッグの状態のまま固まったりします)。&lt;br /&gt;
&lt;br /&gt;
=== 光学メディアを焼く ===&lt;br /&gt;
&lt;br /&gt;
CD や DVD を焼くためには、{{ic|sg}} [[カーネルモジュール]]をロードする必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 光学メディアイメージの適切なマウント ===&lt;br /&gt;
&lt;br /&gt;
一部のアプリケーションは光学メディアがドライブにあるかの確認をします。ほとんどはデータの確認だけなので、{{ic|winecfg}} で CD-ROM ドライブのパスを正しく設定すれば問題ありません。&lt;br /&gt;
しかし、アプリケーションによってはメディアの名前やシリアルナンバーを確認するので、イメージを特別なプロパティを使ってマウントする必要があります。&lt;br /&gt;
&lt;br /&gt;
fuse ベースの仮想ドライブ (例えば Acetoneiso) など、仮想ドライブツールはこれらのメタデータを扱えないことがあります。[[CDemu]] は適切にこれを処理します。&lt;br /&gt;
&lt;br /&gt;
=== ゲーム内に FPS オーバーレイを表示 ===&lt;br /&gt;
&lt;br /&gt;
Wine には全てのグラフィカルアプリケーションで使える FPS モニター機能があります。環境変数 {{ic|1=WINEDEBUG=fps}} を設定してください。FPS は標準出力にアウトプットされます。{{pkg|xosd}} パッケージの &#039;&#039;osd_cat&#039;&#039; を使うことでウィンドウ上に FPS を表示することが可能です。ヘルパースクリプト [https://gist.github.com/anonymous/844aefd70bb50bf72b35 winefps.sh] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Wine を別のユーザアカウントで実行する ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|これは適切なサンドボックス化方法ではなく、ファイルシステムのパーミッションによるホームディレクトリの保護しか行いません。サンドボックス化する必要がある場合は、[[firejail]] や [[bubblewrap]] のようなものを使用するべきです (これらには、rootful Xorg が必要であったり、音声の問題が発生したりといった欠点がありません)。}}&lt;br /&gt;
&lt;br /&gt;
別のユーザーアカウントで Wine を実行することで、Windows アプリケーションからホームディレクトリにアクセスできてしまうという懸念を減らすことができます。&lt;br /&gt;
&lt;br /&gt;
まず Wine 用の[[ユーザーアカウント]]を作成:&lt;br /&gt;
&lt;br /&gt;
 # useradd -m -s /bin/bash wineuser&lt;br /&gt;
&lt;br /&gt;
他の TTY に切り替えて、通常通り X WM や DE を起動するか、このまま読み続けてください。&lt;br /&gt;
&lt;br /&gt;
{{Note|以下の方法は Xorg の root を有効にしている場合にのみうまく行きます。メインのユーザで {{ic|xhost}} を実行する方法については [[Xorg#Rootless Xorg]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
新しいユーザーアカウントを使って Wine アプリケーションを開けるようにするために、X サーバーのパーミッションリストに新しいユーザーを追加してください:&lt;br /&gt;
&lt;br /&gt;
 $ xhost +SI:localuser:wineuser&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを使って Wine を実行することができます ({{ic|env}} を使用して Wine の起動する環境を設定します):&lt;br /&gt;
&lt;br /&gt;
 $ sudo -u wineuser env HOME=/home/wineuser USER=wineuser USERNAME=wineuser LOGNAME=wineuser wine &#039;&#039;arguments&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
以下のようにシェルスクリプトを使って Wine による Windows アプリケーションの実行を自動化できます:&lt;br /&gt;
{{hc|1=/usr/local/bin/runaswine|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
xhost +SI:localuser:wineuser&lt;br /&gt;
sudo -u wineuser env HOME=/home/wineuser USER=wineuser USERNAME=wineuser LOGNAME=wineuser wine &amp;quot;$@&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
シェルスクリプトを保存したら、以下のようにして Wine アプリケーションを起動できます:&lt;br /&gt;
&lt;br /&gt;
 $ runaswine &#039;&#039;&amp;quot;C:\path\to\application.exe&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wine を実行するたびにパスワードが要求されないようにしたい場合、sudoers ファイルに次のエントリを追加してください: {{ic|1=&#039;&#039;mainuser&#039;&#039;	ALL=(wineuser) NOPASSWD: ALL}}。詳しくは [[Sudo#設定]]を参照。&lt;br /&gt;
&lt;br /&gt;
{{ic|winecfg}} を Wine ユーザーで起動して、&amp;quot;Desktop Integration&amp;quot; タブから Wine ユーザーのホームディレクトリ以外のディレクトリのバインドを全て削除することを推奨します (Wine によって起動したプログラムが Wine ユーザーのホームディレクトリの外のファイルにアクセスできないようにするため)。&lt;br /&gt;
&lt;br /&gt;
[[PulseAudio]] を使用している場合、Wine プログラムで音が鳴らなくなってしまいます。他のユーザーの PulseAudio デーモンに Wine ユーザーからアクセスできるようにする情報が [[PulseAudio/サンプル#複数のユーザーが同時に PulseAudio を使えるようにする]]にあります。&lt;br /&gt;
&lt;br /&gt;
=== Temp ディレクトリを tmpfs 上に置く ===&lt;br /&gt;
&lt;br /&gt;
Wine が物理ディスク上に一時ファイルを書き込まないようにするために、&#039;&#039;tmpfs&#039;&#039; のような別の場所を使うことができます。Wine の一時ファイルのデフォルトのディレクトリを削除し、シンボリックリンクを作成してください:&lt;br /&gt;
&lt;br /&gt;
 $ rm -r ~/.wine/drive_c/users/$USER/Temp ~/.wine/drive_c/windows/temp&lt;br /&gt;
 $ ln -s /tmp/ ~/.wine/drive_c/users/$USER/Temp&lt;br /&gt;
 $ ln -s /tmp/ ~/.wine/drive_c/windows/temp&lt;br /&gt;
&lt;br /&gt;
=== Mono/Gecko をインストールさせない ===&lt;br /&gt;
&lt;br /&gt;
Gecko や Mono がシステムと Wine prefix のどちらにも存在しない場合、Wine はそれらをインターネットからダウンロードするか尋ねるダイアログを表示します。Gecko や Mono が必要ない場合、このダイアログを無効化できます: {{ic|WINEDLLOVERRIDES}} [[環境変数]]に {{ic|1=mscoree=d;mshtml=d}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
=== Vulkan ===&lt;br /&gt;
&lt;br /&gt;
デフォルトの Wine Vulkan ICD ローダは、ほとんどのアプリケーションでうまく動作しますが、高度な機能はサポートしていません (例えば Vulkan レイヤー)。これらの機能を使うには、公式の Vulkan SDK をインストールしなければなりません。オリジナルの Vulkan パッチの作者の [https://github.com/roderickc/wine-vulkan GitHub ページ] のステップ 2 から 4 を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Wine のファイルバインディングを除去する ===&lt;br /&gt;
&lt;br /&gt;
セキュリティ上の理由により、事前にインストールされている Wine バインディングを削除することは有用である場合があります。これにより、Windows アプリケーションはファイルマネージャやブラウザ (Firefox は EXE ファイルを直接 Wine で開くことができます) から直接起動できなくなります。&lt;br /&gt;
以下を {{ic|1= /etc/pacman.conf}} の {{ic|1= [options]}} セクションに追加してください:&lt;br /&gt;
&lt;br /&gt;
 NoExtract = usr/lib/binfmt.d/wine.conf&lt;br /&gt;
 NoExtract = usr/share/applications/wine.desktop&lt;br /&gt;
&lt;br /&gt;
=== Wine が自身のアプリケーションをデフォルトとして設定してしまう ===&lt;br /&gt;
&lt;br /&gt;
Wine は、prefix を作成 (または更新) する度に、それに応じて Notepad や Winebrowser などのバンドルされたアプリをデフォルトのテキストエディタやウェブブラウザとして設定します。&lt;br /&gt;
&lt;br /&gt;
この望ましくない挙動を回避する方法は、以下の[[環境変数]]を設定することです:&lt;br /&gt;
&lt;br /&gt;
 $ WINEDLLOVERRIDES=winemenubuilder.exe=d ...&lt;br /&gt;
&lt;br /&gt;
=== WineASIO ===&lt;br /&gt;
&lt;br /&gt;
Wine で専門的なオーディオサポートが必要な場合、{{Aur|wineasio}} を使うことができます。これは、Wine 用の ASIO インターフェイスを提供し、[[JACK]] で使用できます。&lt;br /&gt;
&lt;br /&gt;
wineasio を使うためには、あなたのユーザアカウントを {{ic|realtime}} [[ユーザーとグループ#ユーザーグループ|ユーザーグループ]]に追加する必要があります。&lt;br /&gt;
&lt;br /&gt;
次に、wineasio を wine prefix に登録する必要があります。必要に応じて32ビットバージョンや64ビットバージョンに登録してください:&lt;br /&gt;
&lt;br /&gt;
 $ regsvr32 /usr/lib32/wine/i386-windows/wineasio32.dll&lt;br /&gt;
 $ wine64 regsvr32 /usr/lib/wine/x86_64-windows/wineasio64.dll&lt;br /&gt;
&lt;br /&gt;
=== explorer.exe の起動を無効化する ===&lt;br /&gt;
&lt;br /&gt;
X がインストールされていない状態でテキストモード ([https://www.winehq.org/docs/wineusr-guid%3Cbr%20/%3Ee/cui-programs Command User Interface]) の実行ファイルを実行すると、実行ファイルの起動中に以下のエラーが発生するかもしれません:&lt;br /&gt;
&lt;br /&gt;
{{bc|0060:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.&lt;br /&gt;
0060:err:winediag:nodrv_CreateWindow L&amp;quot;The explorer process failed to start.&amp;quot;&lt;br /&gt;
0060:err:systray:initialize_systray Could not create tray window&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|wine}} はデフォルトで explorer.exe を起動することが原因です。{{ic|ps}} の出力を見ればわかる通り、{{ic|wineconsole}} ですら {{ic|explorer.exe /desktop}} を起動します。&lt;br /&gt;
&lt;br /&gt;
以下のように環境変数を設定することで、systray も含めて explorer の起動を無効化することができます:&lt;br /&gt;
&lt;br /&gt;
 $ WINEDLLOVERRIDES=&amp;quot;explorer.exe=d&amp;quot; wine program.exe&lt;br /&gt;
&lt;br /&gt;
CUI プログラムによっては、services.exe も無効化することによって目盛り使用量を最小限にすることができるかもしれません:&lt;br /&gt;
&lt;br /&gt;
 $ WINEDLLOVERRIDES=&amp;quot;explorer.exe,services.exe=d&amp;quot; wine program.exe&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
一般的なヒントは [https://wiki.winehq.org/Wine_User%27s_Guide#Troubleshooting_.2F_Reporting_bugs Wine User&#039;s Guide] と [https://wiki.winehq.org/FAQ Wine FAQ] (特に [https://wiki.winehq.org/FAQ#Troubleshooting Troubleshooting] セクション) を見てください。&lt;br /&gt;
&lt;br /&gt;
また、特定のアプリケーションでの推奨事項は [https://appdb.winehq.org/ Wine AppDB] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== インストールの一般的な問題 ===&lt;br /&gt;
&lt;br /&gt;
それぞれの [[#WINEPREFIX|Wine prefix]] には、インストールされているプログラムからレジストリに至るまで多くの永続的な状態があります。プログラムのインストールに関する問題のトラブルシューティングの第一歩として、隔離された prefix を作成するか、{{ic|rm -rf ~/.wine}} でデフォルトの prefix を削除してみるべきでしょう。後者のコマンドは、デフォルトの prefix に追加したプログラムと設定を全て削除します。&lt;br /&gt;
&lt;br /&gt;
=== libc.so.6 のロードエラー ===&lt;br /&gt;
&lt;br /&gt;
wine を実行すると以下のエラーが発生することがあります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ wine cmd|&lt;br /&gt;
/usr/bin/wine: error while loading shared libraries: libc.so.6: cannot create shared object descriptor: Operation not permitted&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|mmap2}} のシステムコールが失敗したことが原因です:&lt;br /&gt;
&lt;br /&gt;
 mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 EPERM (Operation not permitted)&lt;br /&gt;
&lt;br /&gt;
これは [https://bugzilla.kernel.org/show_bug.cgi?id=198355 Linux カーネルの既知のバグ]です。&lt;br /&gt;
&lt;br /&gt;
[[sysctl]] の {{ic|vm.mmap_min_addr}} の値をデフォルトの {{ic|65536}} から変更することで、問題が解決するようです:&lt;br /&gt;
&lt;br /&gt;
 # sysctl -w vm.mmap_min_addr=32768&lt;br /&gt;
&lt;br /&gt;
=== Xwayland の問題 ===&lt;br /&gt;
&lt;br /&gt;
[[Xwayland]] で Wine を使用する場合、以下のような問題を避けるために winecfg の Graphics タブで &amp;quot;Emulating a virtual desktop&amp;quot; のオプションを有効化できます:&lt;br /&gt;
&lt;br /&gt;
* チラつき&lt;br /&gt;
* 誤ったウィンドウの位置&lt;br /&gt;
* 誤ったマウスカーソルの位置とクリック&lt;br /&gt;
* キーボード検出&lt;br /&gt;
&lt;br /&gt;
仮想デスクトップを無効化すると winecfg のウィンドウがマウスとキーボードに反応しなくなってしまう場合、以下のコマンドで明示的にどれかの仮想デスクトップ上で winecfg を起動することで、再び使えるようにできます:&lt;br /&gt;
&lt;br /&gt;
 $ wine explorer /desktop=name,800x600 winecfg&lt;br /&gt;
&lt;br /&gt;
Wayland で GUI ウィンドウ (winecfg など) を起動すると、何も表示されずコンソールに以下のエラーが出力される場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ wine winecfg|&lt;br /&gt;
Authorization required, but no authorization protocol specified&lt;br /&gt;
&lt;br /&gt;
008c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.&lt;br /&gt;
008c:err:winediag:nodrv_CreateWindow L&amp;quot;The explorer process failed to start.&amp;quot;&lt;br /&gt;
008c:err:systray:initialize_systray Could not create tray window&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|DISPLAY}} 変数を {{ic|:1}} に設定してみてください:&lt;br /&gt;
&lt;br /&gt;
 $ DISPLAY=:1 wine winecfg&lt;br /&gt;
&lt;br /&gt;
=== キーボード入力ができない ===&lt;br /&gt;
&lt;br /&gt;
ウィンドウマネージャがフォーカスを切り替えないことにより発生することがあります。&#039;&#039;winecfg&#039;&#039; の &#039;&#039;Graphics&#039;&#039; タブで、&#039;Allow the window manager...&#039; オプションを無効化してください。あるいは、ウィンドウモードを &#039;Emulate a virtual desktop&#039; に設定してください。&lt;br /&gt;
* &#039;&#039;Window settings&#039;&#039; のオプションを全て切り替えて、&#039;&#039;Apply&#039;&#039; をクリックし、そしてオプションを全て戻すと問題が解決するという人もいます。これがうまく行かない場合、上記の方法を試してください。&lt;br /&gt;
&lt;br /&gt;
アプリケーションからフォーカスを移動させた後にキーボードが動作しなくなる場合、レジストリを編集してみてください:&lt;br /&gt;
* &#039;&#039;HKEY_CURRENT_USER\Software\Wine\X11 Driver&#039;&#039; に行き、文字列 &#039;&#039;UseTakeFocus&#039;&#039; を追加し、それを &#039;&#039;N&#039;&#039; にセットする。&lt;br /&gt;
* あるいは、[[#Winetricks|Winetricks]] を使って値をセットできます: {{bc|1=$ winetricks usetakefocus=n}}&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションが起動に失敗する ===&lt;br /&gt;
&lt;br /&gt;
一部の古いゲームやアプリケーションは、[[Wikipedia:ja:カレントディレクトリ|カレントディレクトリ]]が実行ファイルの場所と同じであることを期待します。これらの実行ファイルを他の場所から実行すると、正しく起動しなくなってしまいます。このような問題を防ぐには、Wine を実行する前に {{ic|cd &#039;&#039;exeへのパス&#039;&#039;}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.winehq.org/ Wine Homepage]&lt;br /&gt;
* [https://wiki.winehq.org/ Wine Wiki]&lt;br /&gt;
* [https://appdb.winehq.org/ Wine Application Database (AppDB)] - 特定のアプリケーションを動作させるための情報 (特定のアプリケーションの既知の問題、評価、ガイドなど)&lt;br /&gt;
* [https://forum.winehq.org/ Wine Forums] - あなたが FAQ と AppDB を見た&#039;&#039;後&#039;&#039;に質問するための素晴らしい場所&lt;br /&gt;
* [[Gentoo:Wine]]&lt;br /&gt;
* [https://www.darlinghq.org/ Darling] - MacOS ソフトウェア向けの Wine と似たプロジェクト&lt;br /&gt;
* [https://github.com/wineasio/wineasio WineASIO] - WineASIO プロジェクトの GitHub ページ。追加の情報あり。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Wine|2024-06-16|810069}}&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Universal_Wayland_Session_Manager&amp;diff=40402</id>
		<title>Universal Wayland Session Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Universal_Wayland_Session_Manager&amp;diff=40402"/>
		<updated>2025-06-13T10:19:30Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: 和訳の修正(参照実装-&amp;gt;リファレンス実装)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィカルユーザーインターフェイス]]&lt;br /&gt;
[[en:Universal Wayland Session Manager]]&lt;br /&gt;
[https://github.com/Vladimir-csp/uwsm Universal Wayland Session Manager](&#039;&#039;&#039;uwsm&#039;&#039;&#039;)は、スタンドアロンの[[Wayland#コンポジタ|Wayland コンポジタ]] をオンザフライで [[systemd]] ユニットのセットにラップします。これにより、環境設定、[[XDG Autostart]] のサポート、ログインセッションとの双方向バインディング、クリーンシャットダウンを含む堅牢なセッション管理が提供されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[D-Bus#dbus-broker|dbus-broker]] を D-Bus デーモンの実装として使用することが強く推奨されます。その他の利点として、systemdのアクティベーション環境を再利用し、別の環境を持つことがないため、環境管理が簡素化され、適切なクリーンアップが可能になります。[[D-Bus#Reference_implementation|リファレンス実装]] もサポートされていますが、変数の解除ができないため、代わりに空の文字列を設定して最善の努力でクリーンアップが行われます。D-Bus デーモンの別々の環境を適切にクリーンアップする唯一の方法は、{{ic|loginctl terminate-user &amp;quot;&amp;quot;}}を実行することです。}}&lt;br /&gt;
 &lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|uwsm}} パッケージを[[インストール]]します。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== コンポジタによって設定されたサービスの起動通知と変数 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|管理されているコンポジタがすでに {{ic|WAYLAND_DISPLAY}}(およびその他の有用な環境変数)を systemd アクティベーション環境に設定している場合、このセクションをスキップでき、{{ic|uwsm finalize}} を使用する必要はありません。}}&lt;br /&gt;
&lt;br /&gt;
現在のコンポジタを見つけるために、Wayland アプリケーションは {{ic|WAYLAND_DISPLAY}}(または、[[Wayland#Xwayland|Xwayland]] を通じて実行する場合は {{ic|DISPLAY}})変数が必要です。そのため、これらの環境変数およびその他の有用な環境変数は、コンポジタがその値を設定した後、systemd/dbus アクティベーション環境に設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
コマンド {{ic|uwsm finalize}} は、{{ic|WAYLAND_DISPLAY}}、{{ic|DISPLAY}} および {{ic|UWSM_FINALIZE_VARNAMES}} リストで空白区切りで指定されたその他の環境変数をアクティベーション環境に設定します。したがって、このコマンドはコンポジタが準備完了した後に実行する必要があります。&lt;br /&gt;
&lt;br /&gt;
コンポジタによって設定された他の変数がアクティベーション環境に必要な場合、それらも引数として渡すことができます:&lt;br /&gt;
&lt;br /&gt;
 exec uwsm finalize &#039;&#039;VAR1&#039;&#039; &#039;&#039;VAR2&#039;&#039; &#039;&#039;...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 環境変数 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|${XDG_CONFIG_HOME}/uwsm/env}} ファイルに設定されたすべての環境変数は、&#039;&#039;uwsm&#039;&#039; によってソースされ、管理されているコンポジタおよびそのセッション内で実行されるグラフィカルアプリケーションで利用可能になります。&lt;br /&gt;
&lt;br /&gt;
特定の&#039;&#039;コンポジタ&#039;&#039;(およびそのグラフィカルセッション内のグラフィカルアプリケーション)のみのために環境変数を設定する必要がある場合は、代わりに {{ic|${XDG_CONFIG_HOME}/uwsm/env-&#039;&#039;compositor&#039;&#039;}} に入れてください。&lt;br /&gt;
&lt;br /&gt;
これらのファイルでは、以下の形式で環境変数を設定する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=export &#039;&#039;KEY1&#039;&#039;=&#039;&#039;VAR1&#039;&#039;&lt;br /&gt;
export &#039;&#039;KEY2&#039;&#039;=&#039;&#039;VAR2&#039;&#039;&lt;br /&gt;
export &#039;&#039;KEY3&#039;&#039;=&#039;&#039;VAR3&#039;&#039;&lt;br /&gt;
&#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;
&#039;&#039;UWSM&#039;&#039; は、TTY と[[ディスプレイマネージャ]]によって開始できます。&lt;br /&gt;
&lt;br /&gt;
==== TTY ====&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.profile}} ファイルに追加してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|if uwsm check may-start &amp;amp;&amp;amp; uwsm select; then&lt;br /&gt;
  exec uwsm start default&lt;br /&gt;
fi}}&lt;br /&gt;
&lt;br /&gt;
同じ &#039;&#039;コンポジタ&#039;&#039; を常に起動したい場合は、代わりに {{ic|~/.profile}} ファイルに次のように記述できます:&lt;br /&gt;
&lt;br /&gt;
{{bc|if uwsm check may-start; then&lt;br /&gt;
  exec uwsm start &#039;&#039;compositor&#039;&#039;.desktop&lt;br /&gt;
fi}}&lt;br /&gt;
&lt;br /&gt;
==== ディスプレイマネージャ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;UWSM&#039;&#039; を介してコンポジタを開始するカスタムしたセッションデスクトップエントリを作成できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/wayland-sessions/my-compositor-uwsm.desktop|[Desktop Entry]|2=&lt;br /&gt;
Name=My compositor (with UWSM)&lt;br /&gt;
Comment=My cool compositor, UWSM session&lt;br /&gt;
&lt;br /&gt;
# either full command line with metadata and executable&lt;br /&gt;
Exec=uwsm start -N &amp;quot;My compositor&amp;quot; -D mycompositor:mylib -C &amp;quot;My cool compositor&amp;quot; -- my-compositor&lt;br /&gt;
&lt;br /&gt;
# or a reference to another entry&lt;br /&gt;
Exec=uwsm start -- my-compositor.desktop&lt;br /&gt;
&lt;br /&gt;
DesktopNames=mycompositor;mylib&lt;br /&gt;
Type=Application}}&lt;br /&gt;
&lt;br /&gt;
=== セッション終了 ===&lt;br /&gt;
&lt;br /&gt;
現在の uwsm セッションを終了したい場合、次のいずれかを使用する必要があります:{{ic|loginctl terminate-user &amp;quot;&amp;quot;}}(ユーザーセッション全体を終了)または {{ic|uwsm stop}}({{ic|uwsm start}} 後にコードを実行するか、[[ログインシェル]]を置き換えた場合はユーザーセッションを終了)&lt;br /&gt;
&lt;br /&gt;
{{Warning|コンポジタのネイティブな終了メカニズムを使用したり、そのプロセスを直接終了させたりしないでください。これにより、コンポジタがすべてのクライアントから突然切り離され、順序付けられたユニットの非アクティブ化シーケンスに干渉することになります。}}&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Universal_Wayland_Session_Manager&amp;diff=40401</id>
		<title>Universal Wayland Session Manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Universal_Wayland_Session_Manager&amp;diff=40401"/>
		<updated>2025-06-13T10:17:34Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: 和訳の修正(システムd-&amp;gt;systemd)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィカルユーザーインターフェイス]]&lt;br /&gt;
[[en:Universal Wayland Session Manager]]&lt;br /&gt;
[https://github.com/Vladimir-csp/uwsm Universal Wayland Session Manager](&#039;&#039;&#039;uwsm&#039;&#039;&#039;)は、スタンドアロンの[[Wayland#コンポジタ|Wayland コンポジタ]] をオンザフライで [[systemd]] ユニットのセットにラップします。これにより、環境設定、[[XDG Autostart]] のサポート、ログインセッションとの双方向バインディング、クリーンシャットダウンを含む堅牢なセッション管理が提供されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[D-Bus#dbus-broker|dbus-broker]] を D-Bus デーモンの実装として使用することが強く推奨されます。その他の利点として、systemdのアクティベーション環境を再利用し、別の環境を持つことがないため、環境管理が簡素化され、適切なクリーンアップが可能になります。[[D-Bus#Reference_implementation|参照実装]] もサポートされていますが、変数の解除ができないため、代わりに空の文字列を設定して最善の努力でクリーンアップが行われます。D-Bus デーモンの別々の環境を適切にクリーンアップする唯一の方法は、{{ic|loginctl terminate-user &amp;quot;&amp;quot;}}を実行することです。}}&lt;br /&gt;
 &lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|uwsm}} パッケージを[[インストール]]します。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== コンポジタによって設定されたサービスの起動通知と変数 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|管理されているコンポジタがすでに {{ic|WAYLAND_DISPLAY}}(およびその他の有用な環境変数)を systemd アクティベーション環境に設定している場合、このセクションをスキップでき、{{ic|uwsm finalize}} を使用する必要はありません。}}&lt;br /&gt;
&lt;br /&gt;
現在のコンポジタを見つけるために、Wayland アプリケーションは {{ic|WAYLAND_DISPLAY}}(または、[[Wayland#Xwayland|Xwayland]] を通じて実行する場合は {{ic|DISPLAY}})変数が必要です。そのため、これらの環境変数およびその他の有用な環境変数は、コンポジタがその値を設定した後、systemd/dbus アクティベーション環境に設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
コマンド {{ic|uwsm finalize}} は、{{ic|WAYLAND_DISPLAY}}、{{ic|DISPLAY}} および {{ic|UWSM_FINALIZE_VARNAMES}} リストで空白区切りで指定されたその他の環境変数をアクティベーション環境に設定します。したがって、このコマンドはコンポジタが準備完了した後に実行する必要があります。&lt;br /&gt;
&lt;br /&gt;
コンポジタによって設定された他の変数がアクティベーション環境に必要な場合、それらも引数として渡すことができます:&lt;br /&gt;
&lt;br /&gt;
 exec uwsm finalize &#039;&#039;VAR1&#039;&#039; &#039;&#039;VAR2&#039;&#039; &#039;&#039;...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 環境変数 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|${XDG_CONFIG_HOME}/uwsm/env}} ファイルに設定されたすべての環境変数は、&#039;&#039;uwsm&#039;&#039; によってソースされ、管理されているコンポジタおよびそのセッション内で実行されるグラフィカルアプリケーションで利用可能になります。&lt;br /&gt;
&lt;br /&gt;
特定の&#039;&#039;コンポジタ&#039;&#039;(およびそのグラフィカルセッション内のグラフィカルアプリケーション)のみのために環境変数を設定する必要がある場合は、代わりに {{ic|${XDG_CONFIG_HOME}/uwsm/env-&#039;&#039;compositor&#039;&#039;}} に入れてください。&lt;br /&gt;
&lt;br /&gt;
これらのファイルでは、以下の形式で環境変数を設定する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=export &#039;&#039;KEY1&#039;&#039;=&#039;&#039;VAR1&#039;&#039;&lt;br /&gt;
export &#039;&#039;KEY2&#039;&#039;=&#039;&#039;VAR2&#039;&#039;&lt;br /&gt;
export &#039;&#039;KEY3&#039;&#039;=&#039;&#039;VAR3&#039;&#039;&lt;br /&gt;
&#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;
&#039;&#039;UWSM&#039;&#039; は、TTY と[[ディスプレイマネージャ]]によって開始できます。&lt;br /&gt;
&lt;br /&gt;
==== TTY ====&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.profile}} ファイルに追加してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|if uwsm check may-start &amp;amp;&amp;amp; uwsm select; then&lt;br /&gt;
  exec uwsm start default&lt;br /&gt;
fi}}&lt;br /&gt;
&lt;br /&gt;
同じ &#039;&#039;コンポジタ&#039;&#039; を常に起動したい場合は、代わりに {{ic|~/.profile}} ファイルに次のように記述できます:&lt;br /&gt;
&lt;br /&gt;
{{bc|if uwsm check may-start; then&lt;br /&gt;
  exec uwsm start &#039;&#039;compositor&#039;&#039;.desktop&lt;br /&gt;
fi}}&lt;br /&gt;
&lt;br /&gt;
==== ディスプレイマネージャ ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;UWSM&#039;&#039; を介してコンポジタを開始するカスタムしたセッションデスクトップエントリを作成できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/wayland-sessions/my-compositor-uwsm.desktop|[Desktop Entry]|2=&lt;br /&gt;
Name=My compositor (with UWSM)&lt;br /&gt;
Comment=My cool compositor, UWSM session&lt;br /&gt;
&lt;br /&gt;
# either full command line with metadata and executable&lt;br /&gt;
Exec=uwsm start -N &amp;quot;My compositor&amp;quot; -D mycompositor:mylib -C &amp;quot;My cool compositor&amp;quot; -- my-compositor&lt;br /&gt;
&lt;br /&gt;
# or a reference to another entry&lt;br /&gt;
Exec=uwsm start -- my-compositor.desktop&lt;br /&gt;
&lt;br /&gt;
DesktopNames=mycompositor;mylib&lt;br /&gt;
Type=Application}}&lt;br /&gt;
&lt;br /&gt;
=== セッション終了 ===&lt;br /&gt;
&lt;br /&gt;
現在の uwsm セッションを終了したい場合、次のいずれかを使用する必要があります:{{ic|loginctl terminate-user &amp;quot;&amp;quot;}}(ユーザーセッション全体を終了)または {{ic|uwsm stop}}({{ic|uwsm start}} 後にコードを実行するか、[[ログインシェル]]を置き換えた場合はユーザーセッションを終了)&lt;br /&gt;
&lt;br /&gt;
{{Warning|コンポジタのネイティブな終了メカニズムを使用したり、そのプロセスを直接終了させたりしないでください。これにより、コンポジタがすべてのクライアントから突然切り離され、順序付けられたユニットの非アクティブ化シーケンスに干渉することになります。}}&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Arch_%E3%83%96%E3%83%BC%E3%83%88%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9&amp;diff=40365</id>
		<title>Arch ブートプロセス</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Arch_%E3%83%96%E3%83%BC%E3%83%88%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9&amp;diff=40365"/>
		<updated>2025-06-06T23:31:32Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: /* initramfs */ initramfsなしの起動時におけるルートパーティションについて和訳&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ブートプロセス]]&lt;br /&gt;
[[Category:Arch について]]&lt;br /&gt;
[[bs:Arch boot process]]&lt;br /&gt;
[[en:Arch boot process]]&lt;br /&gt;
[[es:Arch boot process]]&lt;br /&gt;
[[fr:Arch boot process]]&lt;br /&gt;
[[pt:Arch boot process]]&lt;br /&gt;
[[ru:Arch boot process]]&lt;br /&gt;
[[zh-hans:Arch boot process]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Master Boot Record}}&lt;br /&gt;
{{Related|GUID Partition Table}}&lt;br /&gt;
{{Related|Unified Extensible Firmware Interface}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related|init}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related|fstab}}&lt;br /&gt;
{{Related|自動起動}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
Arch Linux を起動するためには、Linux 対応の[[#ブートローダー|ブートローダー]]をセットアップする必要があります。ブートローダは、ブートプロセスが始まる前にカーネルや[[#initramfs|初期 RAM ディスク]]をロードする仕事を行います。[[Wikipedia:ja:BIOS|BIOS]] と [[Unified Extensible Firmware Interface|UEFI]] で起動の流れはかなり異なっています。このページや関連するページに詳しい説明があります。&lt;br /&gt;
&lt;br /&gt;
== ファームウェアの種類 ==&lt;br /&gt;
&lt;br /&gt;
ファームウェアは、システムの電源を入れた時に一番最初に実行されるプログラムのことです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|BIOS や (U)EFI という語は、ファームウェアという語の代わりにしばしば用いられます。}}&lt;br /&gt;
&lt;br /&gt;
=== BIOS ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:BIOS|BIOS]] (Basic Input-Outout System) は、ほとんどの場合マザーボード内のフラッシュメモリに保存され、システムストレージとは独立しています。元々は [[Wikipedia:IBM PC|IBM PC]] がハードウェアの初期化やブートプロセスを処理するために作成されました。2010 年より、BIOS にあるような技術的な制約が存在しない [[#UEFI|UEFI]] に徐々に置き換えられています。&lt;br /&gt;
&lt;br /&gt;
=== UEFI ===&lt;br /&gt;
&lt;br /&gt;
[[Unified Extensible Firmware Interface]] は、パーティションテーブルとファイルシステムの両方の読み取りをサポートしています。UEFI は [[パーティショニング#Master Boot Record (bootstrap code)|Master Boot Record (MBR) 内のブートコード]]を起動しません (たとえ、それが有ろうと無かろうと)。代わりに、起動は [[Wikipedia:Non-volatile random-access memory|NVRAM]] 内のブートエントリに頼っています。&lt;br /&gt;
&lt;br /&gt;
UEFI 仕様では [[FAT|FAT12、FAT16、および FAT32]] ファイルシステム ([https://uefi.org/specs/UEFI/2.10/13_Protocols_Media_Access.html#file-system-format-1 UEFI 仕様バージョン2.8、セクション13.3.1.1] を参照) のサポートが義務付けられていますが、規格に準拠しているベンダーは任意でファイルシステムのサポートを追加できます。たとえば、Apple の一部のファームウェアでは [[Wikipedia:HFS+|HFS+]] か [[Wikipedia:APFS|APFS]] のサポートがあります。UEFI の実装では、光ディスク用の [[Wikipedia:ja:ISO 9660|ISO 9660]] もサポートされています。&lt;br /&gt;
&lt;br /&gt;
UEFIは、[[#ブートローダー|ブートローダー]] 、ブートマネージャ、 [[Unified_Extensible_Firmware_Interface#UEFI シェル |UEFI シェル]] などの EFI アプリケーションを起動します。これらのアプリケーションは通常、 [[EFI システムパーティション]] にファイルとして保存されます。各ベンダーは、EFI システムパーティションの {{ic|/EFI/&#039;&#039;vendor_name&#039;&#039;}} フォルダにファイルを格納できます。アプリケーションを起動するには、NVRAM に、または UEFI シェルからブートエントリを追加します。&lt;br /&gt;
&lt;br /&gt;
UEFI 仕様では、[[Wikipedia:ja:Unified_Extensible_Firmware_Interface|互換性サポートモジュール (CSM)]] によるレガシー [[#BIOS|BIOS]] ブートがサポートされています。UEFI で CSM が有効な場合、UEFI はすべてのドライブの CSM ブートエントリを生成します。CSM ブートエントリがブート元として選択された場合、UEFI の CSM はドライブの MBR ブートストラップコードからのブートを試みます。&lt;br /&gt;
&lt;br /&gt;
{{Note|Intel は CSM のサポートを徐々に終了しつつあります。将来的に、この機能に頼ることは不可能になるかもしれません。[https://www.intel.com/content/dam/support/us/en/documents/intel-nuc/Legacy-BIOS-Boot-Support-Removal-for-Intel-Platforms.pdf]}}&lt;br /&gt;
&lt;br /&gt;
== システムの初期化 ==&lt;br /&gt;
&lt;br /&gt;
=== BIOS ===&lt;br /&gt;
&lt;br /&gt;
# システムの電源が入れられ [[Wikipedia:ja:Power On Self Test|POST]] が実行される。&lt;br /&gt;
# BIOS が、ブートに必要なシステムハードウェア (ディスクやキーボードコントローラなど) を初期化する。&lt;br /&gt;
# BIOS のディスク順で最初のディスクの最初の440バイト ([[Master Boot Record|Master Boot Record]]) が BIOS によって実行される。&lt;br /&gt;
# MBR ブートコード内の、ブートローダの最初のステージが、2番めのステージコードを以下のどれかから実行する:&lt;br /&gt;
#* MBR の次のディスクセクタ。つまり、post-MBR gap と呼ばれる部分(MBR パーティションテーブルにしか存在しません)。&lt;br /&gt;
#* パーティション、あるいはパーティションレスディスクの [[Wikipedia:Volume boot record|ボリュームブートレコード (VBR)]]。&lt;br /&gt;
#* GPT でパーティショニングされたディスク上の [[GRUB]] の場合、GRUB 固有の [[BIOS ブートパーティション]] (GPT には存在しない MBR の後ろの隙間の代わりとして使用されます)。&lt;br /&gt;
# [[#ブートローダー|ブートローダー]]本体が起動される。&lt;br /&gt;
# ブートローダーがオペレーティングシステムのカーネルをチェインロード、または直接ロードして、オペレーティングシステムをロードする。&lt;br /&gt;
&lt;br /&gt;
=== UEFI ===&lt;br /&gt;
&lt;br /&gt;
# システムのスイッチが入り、[[Wikipedia:ja:Power On Self Test|power-on self-test (POST)]] が実行される。&lt;br /&gt;
# POST 後に、UEFI は起動に必要なハードウェア(ディスク、キーボード、コントローラなど)を初期化する。&lt;br /&gt;
# ファームウェアは NVRAM 内のブートエントリを読み込み、どの EFI アプリケーションを起動するかや、どこから(例えば、どのディスクやパーティションから)起動するかを判断する。&lt;br /&gt;
#* ブートエントリは単にディスクであることもあります。この場合、ファームウェアは [[EFI システムパーティション]]をそのディスク上から探し、フォールバックブートパス {{ic|\EFI\BOOT\BOOTx64.EFI}}([[Unified Extensible Firmware Interface#UEFI ファームウェアのビット数|IA32 (32-bit) UEFI のシステム]]では {{ic|BOOTIA32.EFI}})から EFI アプリケーションを見つけようとします。これは UEFI の起動可能リムーバブルメディアの動作です。&lt;br /&gt;
# ファームウェアが EFI アプリケーションを起動する。&lt;br /&gt;
#* そのアプリケーションは[[#ブートローダ|ブートローダ]]や、[[EFI ブートスタブ]]を使用する Arch [[カーネル]]自体であることもあります。&lt;br /&gt;
#* そのアプリケーションは他の EFI アプリケーション([[UEFI シェル]] や、[[systemd-boot]] や [[rEFInd]] などの [[#ブートローダ|ブートマネージャ]])であることもあります。&lt;br /&gt;
&lt;br /&gt;
[[セキュアブート]] が有効化されている場合、ブートプロセスでは EFI バイナリの正統性を署名によって検証します。&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の UEFI システムはフォールバックブートパスからしか起動できません。}}&lt;br /&gt;
&lt;br /&gt;
==== UEFI でのマルチブート ====&lt;br /&gt;
&lt;br /&gt;
それぞれの OS やベンダーは互いに影響を与えずに [[EFI システムパーティション]] 内に固有のファイルを保持することができるので、UEFI を用いたマルチブートは単に、特定のオペレーティングシステムのブートローダに対応する異なる EFI アプリケーションを起動する問題になります。ゆえに、他の OS をロードするためにブートローダの[[Wikipedia:Chain loading|チェインロード]]メカニズムに頼る必要がありません。&lt;br /&gt;
&lt;br /&gt;
[[Windows と Arch のデュアルブート]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== ブートローダー ==&lt;br /&gt;
&lt;br /&gt;
ブートローダーは、ファームウェア([[Wikipedia:BIOS|BIOS]] または [[UEFI]])によって起動されるソフトウェアの一部です。ブートローダーは、必要な[[カーネルパラメータ]]と任意の外部の初期 RAM ディスクイメージと共にカーネルをロードします。UEFI の場合、[[EFI ブートスタブ]]を使用して、UEFI からカーネル自体を直接起動できます。ブート前にカーネルパラメータを編集するために、別のブートローダやブートマネージャを使うこともできます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|Arch を正しくブートするには、ブートローダーが、たいてい {{ic|/boot}} ディレクトリ内にあるカーネル及び initramfs イメージへアクセスする必要があります。つまり、ブートローダーは、ブロックデバイスからスタックされたブロックデバイス (LVM、RAID、dm-crypt、LUKSなど) まで、カーネルや initramfs イメージが存在するファイルシステムまで、すべてをサポートしなければなりません。&lt;br /&gt;
&lt;br /&gt;
しかし、そのようなスタックされたブロックデバイスをサポートするブートローダーは稀ですし、ブートローダーによってまだサポートされていない機能がファイルシステムに追加されることもある (例: [https://gitlab.archlinux.org/archlinux/packaging/packages/grub/-/issues/7 archlinux/packaging/packages/grub#7]、{{Bug|79857}}、{{Bug|59047}}、{{Bug|58137}}、{{Bug|51879}}、{{Bug|46856}}、{{Bug|38750}}、{{Bug|21733}}、[[fscrypt]] によって暗号化されたディレクトリ) ので、広くサポートされているファイルシステム ([[FAT32]] など) でフォーマットされた個別の [[パーティショニング#/boot|/boot パーティション]]を使うほうがほとんどの場合、現実的です。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 機能比較 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* GPT は UEFI 仕様の一部であるため、すべての UEFI ブートローダーは GPT ディスクをサポートします。BIOS システム上の GPT は、[https://www.rodsbooks.com/gdisk/hybrid.html Hybrid MBR] で &amp;quot;hybrid booting&amp;quot; を使うか、新しい [https://repo.or.cz/syslinux.git/blob/HEAD:/doc/gpt.txt GPT-only] プロトコルを使うことで可能です。ただしこのプロトコルは特定の BIOS 実装で問題を引き起こす可能性があります。詳細については、[https://www.rodsbooks.com/gdisk/bios.html#bios rodsbooks] を参照してください。&lt;br /&gt;
* [[セキュアブート]]は UEFI 規格の一部なので、全ての UEFI ブートローダーはそれをサポートしています。ただし、いくつかの制限があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | 名前&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | ファームウェア&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | [[パーティショニング#パーティションテーブル|パーティションテーブル]]&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | マルチブート&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | [[ファイルシステム]]&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | 備考&lt;br /&gt;
|-&lt;br /&gt;
! BIOS !! [[UEFI]]&lt;br /&gt;
! [[MBR]] !! [[GPT]]&lt;br /&gt;
|-&lt;br /&gt;
! [[EFI ブートスタブ]]&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{Yes}}&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{G|ファームウェアから継承&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| カーネルイメージは、UEFI または他の UEFI ブートローダーから直接起動することのできる 有効な EFI 実行ファイルです。&lt;br /&gt;
|-&lt;br /&gt;
! [[Unified カーネルイメージ]]&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{Yes}}&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{G|ファームウェアから継承&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{man|7|systemd-stub}} やカーネル、initramfs、カーネルコマンドラインを EFI 実行ファイルにパックしたものです。UEFI ファームウェアや他のブートローダから直接読み込めます。&lt;br /&gt;
|-&lt;br /&gt;
! [[GRUB]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{G|[[GRUB#サポートされているファイルシステム|内蔵]]}}&lt;br /&gt;
| RAID、LUKS (ただし Argon2 PBKDF 以外)、LVM をサポートします (シンプロビジョニングボリュームはサポートしません)。環境固有の制限については [[GRUB]] を見てください。&lt;br /&gt;
|-&lt;br /&gt;
! [[Limine]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Y|[[Limine#サポートされているファイルシステム|制限有り]]}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
! [[rEFInd]]&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{Yes}}&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{G|[[rEFInd#サポートされているファイルシステム|拡張可能]]&amp;lt;sup&amp;gt;2,5&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| 明示的な構成なしでカーネルとパラメーターの自動検出をサポートします。そして、fastboot をサポートします[https://bbs.archlinux.org/viewtopic.php?id=258805]。&lt;br /&gt;
|-&lt;br /&gt;
! [[Syslinux]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Y|[[Syslinux#UEFI Syslinux の制限|部分的]]&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{Y|[[Syslinux#チェインロード|部分的]]}}&lt;br /&gt;
| {{Y|[[Syslinux#サポートされているファイルシステム|制限有り]]}}&lt;br /&gt;
| ファイルシステムの特定の機能はサポートされていません。&amp;lt;br/&amp;gt;Syslinux が[[Syslinux#チェインロード|インストールされている]]ファイルシステムにしかアクセスできません。&lt;br /&gt;
|-&lt;br /&gt;
! [[systemd-boot]]&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{Y|[https://github.com/systemd/systemd/issues/1125 手動]}} || {{Yes}}&lt;br /&gt;
| {{Yes}}&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{G|[[systemd-boot#サポートされているファイルシステム|拡張可能]]&amp;lt;sup&amp;gt;2,5&amp;lt;/sup&amp;gt;}}&lt;br /&gt;
| systemd-boot がインストールされている [[ESP]]、または、同じディスク上の Extended Boot Loader Partition (XBOOTLDR パーティション) 内のバイナリしか起動できません。&amp;lt;br/&amp;gt;{{ic|&#039;&#039;esp&#039;&#039;/EFI/Linux/}} 内の [[unified カーネルイメージ]] を自動的に検出します。&lt;br /&gt;
|-&lt;br /&gt;
! {{Grey|[[GRUB Legacy]]}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}} || {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Y|[[GRUB Legacy#サポートされているファイルシステム|制限有り]]}}  &lt;br /&gt;
| [https://www.gnu.org/software/grub/grub-legacy.html 開発停止]。[[GRUB]] に移行。&lt;br /&gt;
|-&lt;br /&gt;
! {{Grey|[[LILO]]}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}} || {{Y|[https://salsa.debian.org/joowie-guest/upstream_lilo/-/commit/29a64e6b92cac22d472f4b352de5b1535e4afc5f 部分的]}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Y|[[LILO#サポートされているファイルシステム|制限有り]]}}&lt;br /&gt;
| (Btrfs、GPT、RAID、暗号化などの) 制限により[https://web.archive.org/web/20180323163248/http://lilo.alioth.debian.org/ 開発停止]。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# バイナリは[[セキュアブート]]のために署名することはできますが、検証はされません。なので、信用の鎖はここで切れてしまいます。&lt;br /&gt;
# ファイルシステムのサポートはファームウェアから継承されます。UEFI 仕様では、FAT12、FAT16、および FAT32 ファイルシステムのサポートが義務付けられていますが [https://uefi.org/specs/UEFI/2.10/13_Protocols_Media_Access.html#file-system-format-1]、ベンダーはオプションで追加のファイルシステムのサポートを追加できます。たとえば、Apple [[Mac]] のファームウェアは HFS+ ファイルシステムをサポートしています。 ファームウェアが起動時に [[Unified Extensible Firmware Interface#UEFI ドライバ|UEFIドライバー]] をロードするためのインターフェースを提供する場合、ファイルシステムドライバーを(個別に取得して)ロードすることにより、追加のファイルシステムのサポートを追加できます。&lt;br /&gt;
# Mixed mode ブートをサポートしています。つまり、[[Unified Extensible Firmware Interface#UEFI ファームウェアのビット数|32 ビット IA32 UEFI]] 上で 64 ビット x86_64 Linux カーネルをブートできます。&lt;br /&gt;
# [https://www.rodsbooks.com/efi-bootloaders/principles.html ブートマネージャー]。他の EFI アプリケーション、たとえば {{ic | 1 = CONFIG_EFI_STUB = y}} フラグありでビルドされた Linux カーネルイメージおよび [https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/boot-and-uefi#understanding-the-windows-boot-manager Windows Boot Manager] ({{ic|bootmgfw.efi}}) のみを起動できます。&lt;br /&gt;
# [[Unified Extensible Firmware Interface#UEFI ドライバ|UEFI ファイルシステムドライバ]]の読み込みをサポートしています。&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Comparison of boot loaders]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== カーネル ==&lt;br /&gt;
&lt;br /&gt;
[[#ブートローダー|ブートローダー]] は、[[カーネル]]を含んでいる [[Wikipedia:ja:vmlinux|vmlinux イメージ]]を起動します。&lt;br /&gt;
&lt;br /&gt;
カーネルは、マシンのハードウェアとプログラムとの間を仲介する低いレベル(&#039;&#039;カーネル空間&#039;&#039;)で機能します。カーネルは、ユーザスペースに移行する前にまずハードウェアの列挙と初期化を行います。より詳細な説明は [[Wikipedia:ja:カーネル]] と [[Wikipedia:ja:Linuxカーネル]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== initramfs ==&lt;br /&gt;
&lt;br /&gt;
{{ic|/}} のルートファイルシステムは空の [https://www.kernel.org/doc/html/latest/filesystems/ramfs-rootfs-initramfs.html rootfs] として始まります。これは ramfs や tmpfs の特殊なインスタンスです。これは一時的なルートファイルシステムで、initramfs (&#039;&#039;init&#039;&#039;ial &#039;&#039;RAM&#039;&#039; &#039;&#039;f&#039;&#039;ile &#039;&#039;s&#039;&#039;ystem) イメージがここへ解凍されます。&lt;br /&gt;
&lt;br /&gt;
Initramfs の主な目的は root ファイルシステムにアクセスできる位置にシステムをブートストラップすることです (詳しくは [[FHS]] を見て下さい)。これには、[[dm-crypt]]、[[dm-verity]]、{{man|8|systemd-repart}} などを通してルートファイルシステムが存在しているであろうストレージスタックのセットアップなどが含まれます。また、[[udev]] を介して[[永続的なブロックデバイスの命名]]を実際のデバイスに解決することも行われます。これは NVMe、SATA、SAS、eMMC、USB (外部ハードウェアから起動する場合) などのデバイスのために必要なモジュールがカーネルに入っていない場合 initramfs からモジュールをロードできなくてはならないということを意味しています; (プログラムやスクリプトから明示的に指定されるか [[udev]] を通すかして) 正しいモジュールがロードされると、ブートプロセスが再開されます。従って、initramfs に含めなくてはならないのは root ファイルシステムにアクセスするために必要なモジュールだけで、使用する全てのモジュールを入れる必要はありません。ほとんどのモジュールは後の init プロセス中に、ルート ({{ic|/}}) を実際のルートファイルシステムに切り替えた後で [[udev]] によってロードされます。&lt;br /&gt;
&lt;br /&gt;
まず、カーネルは組み込みの initramfs を一時的なルートファイルシステムに解凍します。Arch Linux の[[カーネル#公式サポートカーネル|公式カーネル]]では組み込みの initramfs として空のアーカイブが用いられます(Linux のビルドの際のデフォルトです)。そして、カーネルは、[[#ブートローダー|ブートローダー]]から渡されたコマンドラインにより指定された外部の initramfs ファイルを解凍します。この際、組み込みの initramfs にあったファイルは上書きされます。このような外部の initramfs イメージは [[mkinitcpio]] や [[dracut]]、[[booster]] によって生成でき、Arch の&#039;&#039;初期ユーザ空間&#039;&#039;のセットアップの方法として推奨されています。&lt;br /&gt;
&lt;br /&gt;
Initramfs には、ルートファイルシステムをセットアップする以外の役割もあります。ルートファイルシステムがマウントされる前にしか行うことができないタスク ([[fsck]] や[[ハイバネート]]からの復帰など) が存在するのです。&lt;br /&gt;
&lt;br /&gt;
また、Linux [[カーネル]]は、カーネルが開始された最初のルートファイルシステムを[https://github.com/torvalds/linux/blob/1b907d0507354b74a4f2c286380cd6059af79248/fs/namespace.c#L4222 留めておきます]。Initramfs が使用されなかった場合、シャットダウン時に実際のルートファイルシステムが正しくアンマウントされない可能性があります。&lt;br /&gt;
&lt;br /&gt;
=== initramfs無しで起動 ===&lt;br /&gt;
&lt;br /&gt;
6.13.8から公式にサポートされたカーネルの[[Btrfs]]と[[Ext4]]のドライバはbuilt-inです。 [https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/commit/a7e2a17f9c0e55937ea3e18c4d5b905a8e4f8047]. &lt;br /&gt;
&lt;br /&gt;
これは、カーネルがそれらのファイルシステムのrootパーティションを、他のモジュールなしに直接使用できる事を意味しています。&lt;br /&gt;
それでも、いくつか癖があります:&lt;br /&gt;
&lt;br /&gt;
* [[Systemd#GPT パーティションの自動マウント]]は使えず、{{ic|root}} [[カーネルパラメータ]]が必要です。&lt;br /&gt;
* {{ic|root}}の続的なブロックデバイスの命名は{{ic|PARTUUID}}と{{ic|PARTLABEL}}だけ使えます [https://github.com/torvalds/linux/blob/v6.14/block/early-lookup.c#L216-L243].&lt;br /&gt;
* マウントオプションの{{ic|rootflags}}には制限があります,例えば{{ic|noatime}}は動きません。 [https://bugzilla.kernel.org/show_bug.cgi?id=61601]. 後で[[fstab]]等で再マントしてください。&lt;br /&gt;
* {{man|8|systemd-gpt-auto-generator}}はBtrfsを使っているとinitramfs無しでは使えません。 [https://github.com/systemd/systemd/issues/16953] {{ic|1=systemd.gpt_auto=no}}で無効化してください。&lt;br /&gt;
&lt;br /&gt;
現時点でSCSI/SATA/AHCIドライバがbuilt-inです。他のストレージデバイス(NVMe,USB,Device mapper等)は動きません。LVMや暗号化も使えません。&lt;br /&gt;
&lt;br /&gt;
[[マイクロコード#早期ロード]]もinitramfsが必要ですが、イメージ全体をビルドする必要はなく、[[マイクロコード#別個のマイクロコード initramfs ファイルを使う]]を使えます.&lt;br /&gt;
&lt;br /&gt;
initramfsなしで起動した場合、カーネルは空のイメージが最初のルートファイルシステムであると見做して保持します[https://docs.kernel.org/filesystems/ramfs-rootfs-initramfs.html#populating-initramfs]。なので、上記のようなルートパーティションの[https://github.com/torvalds/linux/blob/1b907d0507354b74a4f2c286380cd6059af79248/fs/namespace.c#L4222 保持に関わる問題] は発生しません。&lt;br /&gt;
&lt;br /&gt;
== 初期ユーザ空間 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;初期ユーザ空間&#039;&#039;の段階は一時的なルートファイルシステムがマウントされている状態で行われ、[[#initramfs|initramfs]] により提供されたファイルで動作します。&lt;br /&gt;
&lt;br /&gt;
初期ユーザ空間の機能は[[Mkinitcpio#HOOKS|設定可能]]ですが、一般的に以下のようなことを行います:&lt;br /&gt;
&lt;br /&gt;
* {{man|8|systemd-modules-load}} がカーネルモジュールを読み込みます。例えば、本物のルートファイルシステムをマウントするために必要なブロックデバイスモジュールなどです。&lt;br /&gt;
* 必要ならば、本物のルートファイルシステムの復号処理を行います。&lt;br /&gt;
* DRM モジュールをロードします。[[カーネルモード設定#KMS の早期開始|KMS の早期開始]]は、ツリー内のモジュールに対してはデフォルトで有効化されています。&lt;br /&gt;
&lt;br /&gt;
初期ユーザー空間の最終段階として、本物のルートファイルシステムが {{ic|/sysroot/}} ([[systemd]] ベースの initramfs の場合) または {{ic|/new_root/}} (busybox ベースの場合) にマウントされ、それに切り替わります。本物のルートファイルシステムから [[init]] プログラムを実行することにより、後期ユーザ空間が始まります。&lt;br /&gt;
&lt;br /&gt;
== 後期ユーザ空間 ==&lt;br /&gt;
&lt;br /&gt;
[[init]] プロセスにより後期ユーザ空間のスタートアップが実行されます。Arch では公式には、ユニットとサービスの概念の上に構築された [[systemd]] が用いられます。しかし、ここで言及している機能は他の init システムと重なります。&lt;br /&gt;
&lt;br /&gt;
=== getty ===&lt;br /&gt;
&lt;br /&gt;
init プロセスは [[Wikipedia:Virtual console|仮想コンソール]](典型的には6つ)ごとに [[getty]] を1回呼び出します。&#039;&#039;getty&#039;&#039; はそれぞれのターミナルを初期化して、認証されていないユーザからターミナルを保護します。ユーザ名とパスワードが与えられると、&#039;&#039;getty&#039;&#039; はそれらを {{ic|/etc/passwd}} と {{ic|/etc/shadow}} と照合し、{{man|1|login}} を呼び出します。&lt;br /&gt;
&lt;br /&gt;
==== ログイン ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ログイン&#039;&#039; プログラムは、環境変数を設定し、{{ic|/etc/passwd}} に基づいてユーザーのシェルを起動することによって、ユーザーのセッションを開始します。&#039;&#039;ログイン&#039;&#039; プログラムは、ログインに成功するとログインシェルを実行する直前に [[Wikipedia:motd (Unix) |/etc/motd]] (&#039;&#039;m&#039;&#039;essage &#039;&#039;o&#039;&#039;f &#039;&#039;t&#039;&#039;he &#039;&#039;d&#039;&#039;ay) の内容を表示します。利用規約を表示してユーザーに地域のポリシーや伝えたいことを思い出させるのに適した場所です。&lt;br /&gt;
&lt;br /&gt;
==== シェル ====&lt;br /&gt;
&lt;br /&gt;
ユーザーの[[シェル]]が起動されると、通常はユーザーにプロンプトを表示する前に [[bashrc]] などの実行時設定ファイルが実行されます。アカウントが[[ログイン時に X を起動]]するように設定されている場合、実行時設定ファイルは [[startx]] または [[xinit]] を呼び出します。最後については [[#グラフィカルセッション (Xorg)]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイマネージャ ===&lt;br /&gt;
&lt;br /&gt;
さらに、[[init]] は、指定した仮想コンソールで &#039;&#039;getty&#039;&#039; の代わりに[[ディスプレイマネージャ]]を起動するように設定できます。そうするには、該当する [[systemd#ユニットを使う|systemd service ファイル]]を手動で[[有効化]]する必要があります。そうしたら、ディスプレイマネージャーがグラフィカルセッションを起動します。&lt;br /&gt;
&lt;br /&gt;
==== グラフィカルセッション (Xorg) ====&lt;br /&gt;
&lt;br /&gt;
[[xinit]] はユーザの [[xinitrc]] ランタイム設定ファイルを実行し、通常、[[ウィンドウマネージャ]]や[[デスクトップ環境]]を開始します。ユーザが終了すると、&#039;&#039;xinit&#039;&#039;、 &#039;&#039;startx&#039;&#039;、 シェル、 ログインの順序で終了して [[#getty|getty]]、またはディスプレイマネージャに戻ります。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Booting process of Linux]]&lt;br /&gt;
* [https://web.archive.org/web/20230313210814/https://developer.ibm.com/articles/l-linuxboot/ Inside the Linux boot process]&lt;br /&gt;
* [https://www.rodsbooks.com/efi-bootloaders/ Rod Smith - Managing EFI Boot Loaders for Linux]&lt;br /&gt;
* [https://neosmart.net/wiki/mbr-boot-process/ NeoSmart: The BIOS/MBR Boot Process]&lt;br /&gt;
* [https://0pointer.net/blog/linux-boot-partitions.html Lennart Poettering - Linux Boot Partitions and How to Set Them Up]&lt;br /&gt;
* [[Wikipedia:initrd]]&lt;br /&gt;
* [https://web.archive.org/web/20150430223035/http://archlinux.me/brain0/2010/02/13/early-userspace-in-arch-linux/ Early Userspace in Arch Linux]&lt;br /&gt;
* [https://www.linux.com/learn/kernel-newbie-corner-initrd-and-initramfs-whats Kernel Newbie Corner: initrd and initramfs]&lt;br /&gt;
* {{man|7|bootup}} (Systemd initrd とユーザー空間に関する部分についてがほとんど)&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Arch boot process|2024-12-27|824035}}&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=VLAN&amp;diff=39669</id>
		<title>VLAN</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=VLAN&amp;diff=39669"/>
		<updated>2025-02-10T02:02:12Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: テンプレートのエスケープ修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ネットワーク]]&lt;br /&gt;
[[en:VLAN]]&lt;br /&gt;
[[ru:VLAN]]&lt;br /&gt;
[[zh-hans:VLAN]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ネットワーク設定}}&lt;br /&gt;
{{Related|systemd-networkd}}&lt;br /&gt;
{{Related|Netctl}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
仮想 LAN を使うことで LAN を細分化することができます。Linux は &#039;&#039;&#039;VLAN&#039;&#039;&#039; のタグが付属したトラフィックを扱うことができ、&#039;&#039;&#039;VLAN ID&#039;&#039;&#039; で異なるネットワークインターフェイスを表します (例: &#039;&#039;&#039;VLAN ID&#039;&#039;&#039; {{ic|100}} ならば {{ic|eth0.100}})。&lt;br /&gt;
&lt;br /&gt;
この記事では {{Pkg|iproute2}} と [[systemd-networkd]] あるいは [[netctl]] を使用して VLAN を設定する方法を説明します。&lt;br /&gt;
&lt;br /&gt;
==設定==&lt;br /&gt;
以前は VLAN を設定するときは Arch Linux では {{ic|vconfig}} コマンドが使われていました。今では {{ic|ip}} コマンドに置き換わっています。{{Pkg|iproute2}} がインストールされていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
以下の例では、&#039;&#039;&#039;インターフェイス&#039;&#039;&#039;を {{ic|eth0}}、割り当てる&#039;&#039;&#039;名前&#039;&#039;&#039;を {{ic|eth0.100}}、&#039;&#039;&#039;vlan id&#039;&#039;&#039; を {{ic|100}} とします。&lt;br /&gt;
===VLAN デバイスの作成===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドで VLAN を追加します:&lt;br /&gt;
&lt;br /&gt;
 # ip link add link eth0 name eth0.100 type vlan id 100&lt;br /&gt;
&lt;br /&gt;
{{ic|ip link}} を実行して VLAN が作成されたことを確認してください。&lt;br /&gt;
&lt;br /&gt;
作成したインターフェイスは通常のインターフェイスと同じように振る舞います。VLAN に転送されるトラフィックは全てマスターインターフェイス (上記の例では {{ic|eth0}}) を通りますが VLAN タグが付属します。VLAN に対応するように正しく設定されたデバイスだけがトラフィックを受け取ることができ、それ以外の場合はトラフィックはドロップされます。&lt;br /&gt;
&lt;br /&gt;
{{ic|eth0.100}} などの&#039;&#039;&#039;名前&#039;&#039;&#039;はあくまで慣習的な名前であり強制ではありません。{{ic|eth0_100}} などとしてもかまいませんし、あるいは分かりやすいように {{ic|IPTV}} のように名前をつけることもできます。慣習的な名前を使わなかったときに、インターフェイスの VLAN ID を確認したいときは:&lt;br /&gt;
&lt;br /&gt;
 # ip -d link show eth0.100&lt;br /&gt;
&lt;br /&gt;
{{ic|-d}} フラグを使うことでインターフェイスに関する詳しい情報が表示されます:&lt;br /&gt;
&lt;br /&gt;
 # ip -d addr show&lt;br /&gt;
 4: eno1.100@eno1: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc noqueue state UP group default &lt;br /&gt;
    link/ether 96:4a:9c:84:36:51 brd ff:ff:ff:ff:ff:ff promiscuity 0 &lt;br /&gt;
    &#039;&#039;&#039;vlan protocol 802.1Q id 100 &amp;lt;REORDER_HDR&amp;gt;&#039;&#039;&#039; &lt;br /&gt;
    inet6 fe80::944a:9cff:fe84:3651/64 scope link &lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
&lt;br /&gt;
===IP を追加===&lt;br /&gt;
作成した vlan リンクに IPv4 アドレスを追加して、リンクを有効化:&lt;br /&gt;
{{bc|&lt;br /&gt;
# ip addr add 192.168.100.1/24 brd 192.168.100.255 dev eth0.100&lt;br /&gt;
# ip link set dev eth0.100 up&lt;br /&gt;
}}&lt;br /&gt;
===デバイスを落とす===&lt;br /&gt;
リンクを削除する前に設定を安全にシャットダウンしたい場合、次を実行:&lt;br /&gt;
{{bc|# ip link set dev eth0.100 down}}&lt;br /&gt;
===デバイスを削除===&lt;br /&gt;
VLAN インターフェイスの削除は簡単です:&lt;br /&gt;
{{bc|# ip link delete eth0.100}}&lt;br /&gt;
&lt;br /&gt;
=== ブート時に起動 ===&lt;br /&gt;
&lt;br /&gt;
==== systemd-networkd ====&lt;br /&gt;
&lt;br /&gt;
以下の設定ファイルを使ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;eno1&#039;&#039;.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=eno1&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=v4&lt;br /&gt;
VLAN=eno1.100&lt;br /&gt;
VLAN=eno1.200&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;eno1.100&#039;&#039;.netdev|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[NetDev]&lt;br /&gt;
Name=eno1.100&lt;br /&gt;
Kind=vlan&lt;br /&gt;
&lt;br /&gt;
[VLAN]&lt;br /&gt;
Id=100&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;eno1.200&#039;&#039;.netdev|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[NetDev]&lt;br /&gt;
Name=eno1.200&lt;br /&gt;
Kind=vlan&lt;br /&gt;
&lt;br /&gt;
[VLAN]&lt;br /&gt;
Id=200&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
そして {{ic|systemd-networkd.service}} を[[有効化]]してください。詳しくは [[systemd-networkd]] を参照。&lt;br /&gt;
&lt;br /&gt;
==== netctl ====&lt;br /&gt;
&lt;br /&gt;
[[netctl]] を使うこともできます。サンプルプロファイルの {{ic|&amp;lt;nowiki&amp;gt;/etc/netctl/examples/vlan-{dhcp,static}&amp;lt;/nowiki&amp;gt; }} を見てください。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
===udev が仮想デバイスの名前を変更してしまう===&lt;br /&gt;
厄介なことに、仮想デバイスを追加すると、設定した&#039;&#039;&#039;名前&#039;&#039;&#039; (上記の例なら {{ic|eth0.100}}) を無視して [[udev]] が仮想デバイスの名前を変更しようとすることがあります。&lt;br /&gt;
&lt;br /&gt;
例えば、以下のコマンドを実行した場合:&lt;br /&gt;
{{bc|&lt;br /&gt;
# ip link add link eth0 name eth0.100 type vlan id 100&lt;br /&gt;
# ip link show &lt;br /&gt;
}}&lt;br /&gt;
以下のような出力がされることがあります:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
1: lo: &amp;lt;LOOPBACK,UP,LOWER_UP&amp;gt; mtu 16436 qdisc noqueue state UNKNOWN &lt;br /&gt;
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;br /&gt;
2: eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc mq state UP qlen 1000&lt;br /&gt;
    link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
3: rename1@eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc noqueue state DOWN &lt;br /&gt;
    link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
上記の場合 &#039;&#039;&#039;udev&#039;&#039;&#039; は設定された仮想インターフェイス名 {{ic|eth0.100}} を無視して自動的に &#039;&#039;&#039;rename1&#039;&#039;&#039; に名前を変更しています。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/udev/rules.d/network_persistent.rules}} を編集して物理インターフェイスの設定行の一番後ろに {{ic|1=DRIVERS==&amp;quot;?*&amp;quot;}} を追加することで問題は解決します。&lt;br /&gt;
&lt;br /&gt;
例えば、インターフェイスが &#039;&#039;&#039;aa:bb:cc:dd:ee:ff&#039;&#039;&#039; (eth0) の場合:&lt;br /&gt;
{{hc|/etc/udev/rules.d/network_persistent.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;net&amp;quot;, ATTR{address}==&amp;quot;aa:bb:cc:dd:ee:ff&amp;quot;, NAME=&amp;quot;eth0&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
再起動すれば VLAN が設定した名前に正しくなっているはずです。&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Systemd&amp;diff=39148</id>
		<title>Systemd</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Systemd&amp;diff=39148"/>
		<updated>2024-10-12T02:18:31Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: /* systemctl の基本的な使い方 */ 表現の修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:Init]]&lt;br /&gt;
[[de:Systemd]]&lt;br /&gt;
[[en:Systemd]]&lt;br /&gt;
[[es:Systemd]]&lt;br /&gt;
[[fa:Systemd]]&lt;br /&gt;
[[fi:Systemd]]&lt;br /&gt;
[[fr:Systemd]]&lt;br /&gt;
[[pt:Systemd]]&lt;br /&gt;
[[ru:Systemd]]&lt;br /&gt;
[[zh-hans:Systemd]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|systemd/ユーザー}}&lt;br /&gt;
{{Related|systemd/タイマー}}&lt;br /&gt;
{{Related|systemd/ジャーナル}}&lt;br /&gt;
{{Related|systemd FAQ}}&lt;br /&gt;
{{Related|init}}&lt;br /&gt;
{{Related|デーモン#デーモン一覧}}&lt;br /&gt;
{{Related|udev}}&lt;br /&gt;
{{Related|パフォーマンスの向上/ブートプロセス}}&lt;br /&gt;
{{Related|ユーザーにシャットダウンを許可}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/systemd プロジェクトウェブページ] より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;systemd&#039;&#039;&#039; は Linux 環境の基本構成スイートであり、SysV や LSB init スクリプトと互換性のある、Linux 用のシステム・サービスマネージャです。&#039;&#039;&#039;systemd&#039;&#039;&#039; はサービスの起動を積極的に並行化します。また、ソケットや [[D-Bus]] のアクティベーションを使用してサービスを起動し、必要なデーモンの開始を行うことができ、Linux の [[cgroups]] によるプロセス管理ができます。システム状態のスナップショット作成と復元、(自動) マウントポイントの管理、煩雑な依存関係に基づいたサービスのコントロールを処理します。&#039;&#039;systemd&#039;&#039; は sysvinit の代替として SysV や LSB init スクリプトをサポートしています。init としての機能以外にも、ログデーモンやホストネーム・時刻・ロケールなどシステムの基本設定を制御するユーティリティ、ログイン中のユーザーから実行中のコンテナや仮想マシン、システムアカウントまで管理する機能、ネットワーク設定や時刻同期あるいは名前解決などを管理するシンプルなデーモンも含まれています。&lt;br /&gt;
&lt;br /&gt;
歴史的には、systemd が &amp;quot;サービス&amp;quot; と呼ぶものは [[Wikipedia:ja:デーモン (ソフトウェア)|デーモン]] と呼ばれていました:&amp;quot;バックグラウンド&amp;quot; プロセスとして (ターミナルやユーザーインターフェイスなしで) 実行され、一般的にイベントの発生を待ち、サービスを提供するプログラムです。ウェブサーバーがページを配信するリクエストを待ったり、ssh サーバーがログインしようとする人を待ったりするのが良い例です。これらは完全な機能を持つアプリケーションですが、デーモンも存在します。デーモンは、ログファイルにメッセージを書き込んだり (例:{{ic|syslog}}、{{ic|metalog}})、システムの時刻を正確に保つ (例:[[Network Time Protocol daemon|ntpd]]) といったタスクを実行します。詳しくは {{man|7|daemon}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=systemd が Arch に採用された理由については、[https://bbs.archlinux.org/viewtopic.php?pid&amp;amp;#61;1149530#p1149530 フォーラムへのこの投稿]をご覧ください。}}&lt;br /&gt;
&lt;br /&gt;
== systemctl の基本的な使い方 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; を管理したり内部情報を見るために使うメインのコマンドが &#039;&#039;systemctl&#039;&#039; です。システムの状態を確かめたりシステムやサービスを管理するために使うのは使い方の一部です。詳しくは {{man|1|systemctl}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* &#039;&#039;systemctl&#039;&#039; コマンドに {{ic|-H &#039;&#039;user&#039;&#039;@&#039;&#039;host&#039;&#039;}} を渡すと、リモートの &#039;&#039;systemd&#039;&#039; と対話できます。これは [[Secure Shell|SSH]] を利用してリモートの &#039;&#039;systemd&#039;&#039; インスタンスに接続します。&lt;br /&gt;
* [[Plasma]] を使っている場合 {{Pkg|systemdgenie}} をインストールすることで &#039;&#039;systemctl&#039;&#039; のグラフィカルフロントエンドを使えます。モジュールをインストールすると &#039;&#039;System&#039;&#039; の下に設定が追加されます。}}&lt;br /&gt;
&lt;br /&gt;
=== ユニットを使う ===&lt;br /&gt;
&lt;br /&gt;
ユニットには、例えば、サービス (&#039;&#039;.service&#039;&#039;) やマウントポイント (&#039;&#039;.mount&#039;&#039;)、デバイス (&#039;&#039;.device&#039;&#039;)、ソケット (&#039;&#039;.socket&#039;&#039;) などがあります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemctl&#039;&#039; を使うとき、例えば {{ic|sshd.socket}} のように、一般的には拡張子 (suffix) を含むユニットファイルの完全な名前を指定する必要があります。しかし、以下のような場合には省略形が存在します:&lt;br /&gt;
&lt;br /&gt;
* 拡張子が指定されない場合、systemctl は &#039;&#039;.service&#039;&#039; とみなします。例えば {{ic|netctl}} と {{ic|netctl.service}} は同じように扱われます。&lt;br /&gt;
* マウントポイントは自動的に対応する &#039;&#039;.mount&#039;&#039; ユニットとして扱われます。例えば、{{ic|/home}} を指定することは {{ic|home.mount}} の指定と同じです。&lt;br /&gt;
* マウントポイントと同じく、デバイスも自動的に対応する &#039;&#039;.device&#039;&#039; ユニットとして扱われます。従って、{{ic|/dev/sda2}} の指定は {{ic|dev-sda2.device}} と同じです。&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|5|systemd.unit}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|ユニットによっては名前に {{ic|@}} 記号が含まれていることがあります (例: {{ic|name@&#039;&#039;string&#039;&#039;.service}}): これは、そのサービスが&#039;&#039;テンプレート&#039;&#039;ユニットの [http://0pointer.de/blog/projects/instances.html インスタンス] であることを意味しており、テンプレートユニットのファイル名には {{ic|&#039;&#039;string&#039;&#039;}} の部分が含まれていません (例: {{ic|name@.service}})。{{ic|&#039;&#039;string&#039;&#039;}} は &#039;&#039;instance identifier&#039;&#039; と呼ばれ、&#039;&#039;systemctl&#039;&#039; コマンドでテンプレートユニットを実行するときに指定する引数と似ています: ユニットファイルの中の {{ic|%i}} が置き換えられます。&lt;br /&gt;
&lt;br /&gt;
正確に言うと、{{ic|name@.suffix}} テンプレートユニットのインスタンスを作成する&#039;&#039;前に&#039;&#039;、&#039;&#039;systemd&#039;&#039; は {{ic|name@string.suffix}} というファイル名のユニットが存在しないか確認します。ただし名前の&amp;quot;衝突&amp;quot;が発生するのは極めて稀で、{{ic|@}} 記号を含むユニットファイルは大抵テンプレートです。そういう決まりです。また、テンプレートユニットが instance identifier を付けられずに呼ばれたときは、{{ic|%i}} が置き換えられないため実行失敗になります ({{ic|cat}} のような特定の &#039;&#039;systemctl&#039;&#039; コマンドを除く)。}}&lt;br /&gt;
&lt;br /&gt;
以下の表のコマンドは、&#039;&#039;systemctl&#039;&#039; の暗黙のデフォルトである {{ic|--system}} から、&#039;&#039;&#039;system unit&#039;&#039;&#039; を操作するものです。代わりに、&#039;&#039;&#039;ユーザー単位&#039;&#039;&#039; で操作するには、root 権限なしで [[systemctl --user]] を使ってください。全てのユーザーに対してユーザーユニットを有効・無効にするには [[systemd/ユーザー#基本設定]] も見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* 以下のコマンドのほとんどは複数のユニットを指定することが可能です、詳しくは {{man|1|systemctl}} を参照。&lt;br /&gt;
* {{ic|--now}} スイッチは {{ic|enable}}, {{ic|disable}}, {{ic|mask}} と一緒に使うことで、それぞれ起動、停止、マスクをリブート後ではなく即座に行うことができます。&lt;br /&gt;
* パッケージには様々な目的のユニットが入っています。パッケージをインストールしたら、{{ic|pacman -Qql &#039;&#039;package&#039;&#039; &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; grep -Fe .service -e .socket}} でサービスを確認することができます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! アクション || コマンド || 注意&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | システム状態の分析&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;システムステータスを表示する&#039;&#039;&#039; || {{ic|systemctl status}} ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;実行中のユニット&#039;&#039;&#039; リスト || {{ic|systemctl}} or&amp;lt;br&amp;gt;{{ic|systemctl list-units}} ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;失敗したユニット&#039;&#039;&#039; 一覧 || {{ic|systemctl --failed}} ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;インストールされているユニット&#039;&#039;&#039; 一覧&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; || {{ic|systemctl list-unit-files}} ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PID のプロセスステータス&#039;&#039;&#039; を表示 || {{ic|systemctl status &#039;&#039;pid&#039;&#039;}} || [[cgroups|cgroup slice]], メモリ と 上位プロセス&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | ユニットの状態を確認する&lt;br /&gt;
|-&lt;br /&gt;
| ユニットに関連付けられている &#039;&#039;&#039;マニュアルページを表示する&#039;&#039;&#039; || {{ic|systemctl help &#039;&#039;unit&#039;&#039;}} || ユニットでサポートされています&lt;br /&gt;
|-&lt;br /&gt;
| ユニットの &#039;&#039;&#039;ステータス&#039;&#039;&#039; || {{ic|systemctl status &#039;&#039;unit&#039;&#039;}} || 実行されているかどうかを含む&lt;br /&gt;
|-&lt;br /&gt;
| ユニットが有効かどうかを &#039;&#039;&#039;チェック&#039;&#039;&#039; する || {{ic|systemctl is-enabled &#039;&#039;unit&#039;&#039;}} ||&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | 本体の起動、再起動、再読み込み&lt;br /&gt;
|-&lt;br /&gt;
| ユニットを即座に &#039;&#039;&#039;スタート&#039;&#039;&#039; する || {{ic|systemctl start &#039;&#039;unit&#039;&#039;}} as root ||&lt;br /&gt;
|-&lt;br /&gt;
| ユニットを即座に &#039;&#039;&#039;ストップ&#039;&#039;&#039;  する || {{ic|systemctl stop &#039;&#039;unit&#039;&#039;}} as root ||&lt;br /&gt;
|-&lt;br /&gt;
| ユニットを &#039;&#039;&#039;再起動&#039;&#039;&#039; する || {{ic|systemctl restart &#039;&#039;unit&#039;&#039;}} as root ||&lt;br /&gt;
|-&lt;br /&gt;
| ユニットとその設定を &#039;&#039;&#039;再読み込み&#039;&#039;&#039;  する || {{ic|systemctl reload &#039;&#039;unit&#039;&#039;}} as root ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;systemd マネージャーの再読み込み&#039;&#039;&#039; 設定&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; || {{ic|systemctl daemon-reload}} as root || ユニットスキャン&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | ユニットの有効化&lt;br /&gt;
|-&lt;br /&gt;
| ブート時に自動的に起動するユニットを &#039;&#039;&#039;有効&#039;&#039;&#039; にする || {{ic|systemctl enable &#039;&#039;unit&#039;&#039;}} as root ||&lt;br /&gt;
|-&lt;br /&gt;
| 起動時に自動起動するユニットを &#039;&#039;&#039;有効&#039;&#039;&#039; にして、すぐに &#039;&#039;&#039;起動&#039;&#039;&#039; する || {{ic|systemctl enable --now &#039;&#039;unit&#039;&#039;}} as root ||&lt;br /&gt;
|-&lt;br /&gt;
|ユニットの自動起動を &#039;&#039;&#039;無効&#039;&#039;&#039;にする  || {{ic|systemctl disable &#039;&#039;unit&#039;&#039;}} as root ||&lt;br /&gt;
|-&lt;br /&gt;
| ユニット&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;を &#039;&#039;再有効化&#039;&#039; する || {{ic|systemctl reenable &#039;&#039;unit&#039;&#039;}} as root || つまり、無効化して新たに有効化する&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | ユニットのマスキング&lt;br /&gt;
|-&lt;br /&gt;
|ユニットを &#039;&#039;&#039;マスク&#039;&#039;&#039; して起動を禁止する&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt; || {{ic|systemctl mask &#039;&#039;unit&#039;&#039;}} as root ||&lt;br /&gt;
|-&lt;br /&gt;
|  ユニットの &#039;&#039;&#039;マスクを解除&#039;&#039;&#039; する || {{ic|systemctl unmask &#039;&#039;unit&#039;&#039;}} as root ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# 利用可能なユニットファイルがあるディレクトリは {{man|5|systemd.unit|UNIT FILE LOAD PATH}} を参照してください。&lt;br /&gt;
# これは変更されたユニットに設定の再読み込みを要求しません (アクション &#039;&#039;&#039;Reload&#039;&#039;&#039; を参照して下さい)。&lt;br /&gt;
# 例えば、最後に有効化してからその {{ic|[Install]}} セクションが変更された場合。&lt;br /&gt;
# 手動でも依存関係としても、マスクは危険です。既存のマスクされたユニットをチェックします。{{bc|1=$ systemctl list-unit-files --state=masked}}&lt;br /&gt;
&lt;br /&gt;
=== 電源管理 ===&lt;br /&gt;
&lt;br /&gt;
非特権ユーザーでの電源管理には、[[polkit]] が必要です。ローカルの &#039;&#039;systemd-logind&#039;&#039; ユーザーセッションで、他のセッションがアクティブでない場合、以下のコマンドは root 権限がなくても動作します。そうでない場合(例えば、他のユーザーが tty にログインしているなど)、&#039;&#039;systemd&#039;&#039; は自動的に root パスワードを要求します。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! アクション || コマンド&lt;br /&gt;
|-&lt;br /&gt;
| システムをシャットダウンして再起動する || {{ic|systemctl reboot}}&lt;br /&gt;
|-&lt;br /&gt;
| システムをシャットダウンして電源を切る || {{ic|systemctl poweroff}}&lt;br /&gt;
|-&lt;br /&gt;
| システムを一時停止する || {{ic|systemctl suspend}}&lt;br /&gt;
|-&lt;br /&gt;
| システムをハイバネーションにする || {{ic|systemctl hibernate}}&lt;br /&gt;
|-&lt;br /&gt;
| システムをハイブリッドスリープ状態にする (または suspend-to-both) にする || {{ic|systemctl hybrid-sleep}}&lt;br /&gt;
|-&lt;br /&gt;
| まずシステムをサスペンドし、設定された時間の経過後にウェイクアップしてシステムを休止状態にする || {{ic|systemctl suspend-then-hibernate}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ソフトリブート ====&lt;br /&gt;
&lt;br /&gt;
ソフトリブートは、カーネルを介さないユーザ空間のみの特別なリブート操作です。{{man|8|systemd-soft-reboot.service}} によって実装されており、{{ic|systemctl Soft-reboot}} によって呼び出すことができます。[[kexec]] と同様、ファームウェアの再初期化をスキップしますが、さらにシステムはカーネルの初期化と [[initramfs]] を通過せず、ロックされていない [[dm-crypt]] デバイスは接続されたままになりす。&lt;br /&gt;
&lt;br /&gt;
{{ic|/run/nextroot/}} に有効なルートファイルシステム階層が含まれている場合 (例: 別のディストリビューションまたは別のスナップショットのルートマウント)、&#039;&#039;ソフトリブート&#039;&#039; によりシステムルートがそこに切り替わり、カーネルによって管理される状態 ([[ネットワーク設定]] など) を失うことなく、別のインストールに切り替えることが出来ます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|/run/nextroot/}} は、必ずしもマウント ポイントである必要はなく、物理デバイスによってバックアップされているわけでもありません。たとえば、{{ic|/run/}} tmpfs に常駐できます。&#039;&#039;systemd&#039;&#039; は、&#039;&#039;ソフトリブート&#039;&#039; 時に {{ic|/run/nextroot/}} を自動的にマウント ポイントに変更します。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|カーネルと initramfs を含むパッケージの更新後は、{{ic|systemctl Soft-reboot}} を呼び出さないでください。}}&lt;br /&gt;
&lt;br /&gt;
== ユニットファイル ==&lt;br /&gt;
&lt;br /&gt;
systemd のユニットファイル ({{man|5|systemd.unit}}) の構文は [[デスクトップエントリ|XDG の Desktop Entry Specification である .desktop ファイル]] から影響を受けています。そして &#039;&#039;.desktop&#039;&#039; は [[Wikipedia:ja:INIファイル|Microsoft Windows の .ini ファイル]] からインスパイアされています。ユニットファイルは複数の場所に配置されます (配置場所のリストを確認するには {{ic|1=systemctl show --property=UnitPath}} を実行してください)が、主な場所は (優先度が低い方から説明すると):&lt;br /&gt;
&lt;br /&gt;
* {{ic|/usr/lib/systemd/system/}}: インストールしたパッケージに含まれているユニット&lt;br /&gt;
* {{ic|/etc/systemd/system/}}: システムの管理者がインストールしたユニット&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
*[[systemd/ユーザー|ユーザーモード]]で &#039;&#039;systemd&#039;&#039; を動作させたときにロードされるパスは完全に異なります。&lt;br /&gt;
*systemd ユニットの名前に使うことができるのは ASCII 英数字とアンダーバー、ピリオドだけです。他の文字列は C スタイルの &amp;quot;\x2d&amp;quot; エスケープに置き換えるか、事前に定義された方法 (&#039;@&#039; や &#039;-&#039;) を使う必要があります。詳しくは {{man|5|systemd.unit}} や {{man|1|systemd-escape}} を見て下さい。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
例としてパッケージによりインストールされたユニットや {{man|5|systemd.service|EXAMPLES}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|#}} で始まるコメントはユニットファイルでも使うことができますが、行頭でのみ有効です。&#039;&#039;systemd&#039;&#039; のパラメータの後で行末のコメントを使わないでください。ユニットの有効化が失敗する原因となります。}}&lt;br /&gt;
&lt;br /&gt;
=== 依存関係を解決する ===&lt;br /&gt;
&lt;br /&gt;
systemd ではユニットファイルを適切に書くことで依存関係を解決します。一番典型的なケースは、ユニット {{ic|A}} が走る前に、ユニット {{ic|A}} がユニット {{ic|B}} を必要としている場合です。この場合、{{ic|A}} の {{ic|[Unit]}} セクションに {{ic|1=Requires=B}} と {{ic|1=After=B}} を加えます。依存が必然ではない場合、代わりに {{ic|1=Wants=B}} と {{ic|1=After=B}} を加えます。{{ic|1=Wants=}} と {{ic|1=Requires=}} は {{ic|1=After=}} を含まないことに注意してください、もし {{ic|1=After=}} を明記しなかったときは、2つのユニットは並行して実行されます。&lt;br /&gt;
&lt;br /&gt;
基本的に、依存関係は[[#ターゲット|ターゲット]]ではなくサービスに記述します。例えば、{{ic|network.target}} はネットワークインターフェースを設定する全てのサービスによって使われるので、カスタムユニットを起動させる順番は {{ic|network.target}} が起動し終わってからにする必要があります。&lt;br /&gt;
&lt;br /&gt;
=== サービスタイプ ===&lt;br /&gt;
&lt;br /&gt;
カスタムサービスファイルを書くときにどのスタートアップタイプを使うべきか考える必要があります。タイプは {{ic|[Service]}} セクションの {{ic|1=Type=}} パラメータで設定します。&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=Type=simple}} (デフォルト): &#039;&#039;systemd&#039;&#039; はプロセスを起動した時点でサービスが立ち上がったとみなします。プロセスをフォークすることはできません。ソケットアクティベーション以外で他のサービスが必要な場合に、このタイプを使ってはいけません。&lt;br /&gt;
* {{ic|1=Type=forking}}: 起動したプロセスが一旦フォークし、親プロセス側が終了したときに、 &#039;&#039;systemd&#039;&#039; はサービスが立ち上がったとみなします。このタイプでなくてもかまわないとき以外は、古典的なデーモンにはこのタイプを使って下さい。また {{ic|1=PIDFile=}} を指定することで &#039;&#039;systemd&#039;&#039; はメインプロセスの情報を追い続けます。&lt;br /&gt;
* {{ic|1=Type=oneshot}}: シングルジョブを行い終了するスクリプト用のタイプです。また {{ic|1=RemainAfterExit=yes}} を設定することで &#039;&#039;systemd&#039;&#039; はプロセスが終了した後もサービスがアクティブだとみなします。&lt;br /&gt;
* {{ic|1=Type=notify}}: {{ic|1=Type=simple}} と同じですが、利用可能になったときにデーモンが &#039;&#039;systemd&#039;&#039; に信号を送るように条件がつけられます。この通知のリファレンス実装は &#039;&#039;libsystemd-daemon.so&#039;&#039; によって提供されています。&lt;br /&gt;
* {{ic|1=Type=dbus}}: 指定の {{ic|BusName}} が DBus のシステムバスに乗ったときに使うことができるサービス。&lt;br /&gt;
* {{ic|1=Type=idle}}: ただし、サービスバイナリの実行は全てのジョブが処理されるまで待たされます。それ以外の挙動は {{ic|1=Type=simple}} と非常に似ています。&lt;br /&gt;
&lt;br /&gt;
{{ic|Type}} の値のより詳しい説明は {{man|5|systemd.service|OPTIONS}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== ユニットファイルの編集 ===&lt;br /&gt;
&lt;br /&gt;
pacman との競合を避けるために、パッケージに含まれるユニットファイルは直接編集しないでください。パッケージに入っているユニットファイルを元のファイルに触れずに編集する安全な方法は2つあります: 新しいユニットファイルで[[#ユニットファイルを置換する|完全に置き換える]]か、[[#ドロップインファイル|ドロップインファイル]]を作成して既存のユニットファイルに上書きして適用させるかです。どちらの方法でも、変更を加えた後はユニットをリロードする必要があります。{{ic|systemctl edit}} でユニットを編集するか (自動でユニットがリロードされます) または次のコマンドで全てのユニットをリロードしてください:&lt;br /&gt;
&lt;br /&gt;
 # systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* {{ic|systemd-delta}} を使うことでどのファイルが上書きされ、どこが変更されたのか調べることができます。&lt;br /&gt;
* ユニットファイルや関連するドロップインファイルの中身を見るには {{ic|systemctl cat &#039;&#039;unit&#039;&#039;}} を使います。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== ユニットファイルを置換する ====&lt;br /&gt;
&lt;br /&gt;
ユニットファイル {{ic|/usr/lib/systemd/system/&#039;&#039;unit&#039;&#039;}} を置き換えたいときは、{{ic|/etc/systemd/system/&#039;&#039;unit&#039;&#039;}} ファイルを作成してユニットを [[#ユニットを使う|再有効化]] することでシンボリックリンクをアップデートします。&lt;br /&gt;
&lt;br /&gt;
もしくは、次を実行:&lt;br /&gt;
&lt;br /&gt;
 # systemctl edit --full &#039;&#039;unit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
このコマンドはテキストエディタで {{ic|/etc/systemd/system/&#039;&#039;unit&#039;&#039;}} を開いて (ファイルが存在しない場合はインストールされているユニットがコピーされます)、編集を終えた時に自動的にユニットをリロードします。&lt;br /&gt;
&lt;br /&gt;
{{Note|Pacman は元のユニットファイルが更新されても置き換えられたユニットファイルをアップデートしません。そのため、この方法ではシステムメンテナンスが多少厄介になります。この理由があるために、次のセクションで説明する方法の方が推奨されます。}}&lt;br /&gt;
&lt;br /&gt;
==== ドロップインファイル ====&lt;br /&gt;
&lt;br /&gt;
ユニットファイル {{ic|/usr/lib/systemd/system/&#039;&#039;unit&#039;&#039;}} のドロップインファイルを作成するには、{{ic|/etc/systemd/system/&#039;&#039;unit&#039;&#039;.d/}} という名のディレクトリ (例: {{ic|/etc/systemd/system/httpd.service.d/}}) を作成してその中に {{ic|*.conf}} を配置します。このファイルを使ってオプションを上書きしたり追加してください。&#039;&#039;systemd&#039;&#039; が {{ic|*.conf}} ファイルをパースして元のユニットファイルの一番上に設定を適用します。&lt;br /&gt;
&lt;br /&gt;
ドロップインファイルを作成する一番簡単な方法は次のコマンドを実行することです:&lt;br /&gt;
&lt;br /&gt;
 # systemctl edit &#039;&#039;unit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
テキストエディタで {{ic|/etc/systemd/system/&#039;&#039;unit&#039;&#039;.d/override.conf}} ファイルが開かれ (必要であればファイルが作成されます)、編集を終えた時に自動でユニットがリロードされます。&lt;br /&gt;
&lt;br /&gt;
==== 初期状態にリバート ====&lt;br /&gt;
&lt;br /&gt;
{{ic|systemctl edit}} を使って変更したユニットを元に戻したい場合、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # systemctl revert &#039;&#039;unit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== サンプル ====&lt;br /&gt;
&lt;br /&gt;
例えば、ユニットに依存するデーモンを追加したい場合、以下のファイルを作成することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/&#039;&#039;unit&#039;&#039;.d/customdependency.conf|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Requires=&#039;&#039;new dependency&#039;&#039;&lt;br /&gt;
After=&#039;&#039;new dependency&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|oneshot}} タイプでないユニットの {{ic|ExecStart}} ディレクティブを置き換えるには、以下のファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/&#039;&#039;unit&#039;&#039;.d/customexec.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=&#039;&#039;new command&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{ic|ExecStart}} は置き換える前に空白にする必要があるので注意してください ([https://bugzilla.redhat.com/show_bug.cgi?id=756787#c9])。タイマーの {{ic|OnCalendar}} など複数回指定できるアイテムも同じです。}}&lt;br /&gt;
&lt;br /&gt;
サービスが自動的に再起動されるようにするには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/&#039;&#039;unit&#039;&#039;.d/restart.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
Restart=always&lt;br /&gt;
RestartSec=30}}&lt;br /&gt;
&lt;br /&gt;
== ターゲット ==&lt;br /&gt;
&lt;br /&gt;
Systemd では [[Wikipedia:ja:ランレベル|ランレベル]] に似たものとして&#039;&#039;ターゲット&#039;&#039;を使っています。ただしその挙動には少し違いがあります。それぞれの&#039;&#039;ターゲット&#039;&#039;はナンバリングされる代わりに名前がつけられ、ある特定の目的のために作られ、複数のターゲットを同時に有効にできるようになっています。&#039;&#039;ターゲット&#039;&#039;によっては、他の&#039;&#039;ターゲット&#039;&#039;のサービスを全て引継ぎ、そこにサービスを追加するよう実装されています。一般的な SystemVinit ランレベルに擬態する systemd &#039;&#039;ターゲット&#039;&#039;もあり、親しみのある {{ic|telinit RUNLEVEL}} コマンドを使って使用する&#039;&#039;ターゲット&#039;&#039;を切り替えることが可能です。&lt;br /&gt;
&lt;br /&gt;
=== 現在のターゲットを取得 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; では {{ic|runlevel}} の代わりに次のコマンドが使われます:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl list-units --type=target&lt;br /&gt;
&lt;br /&gt;
=== カスタムターゲットを作る ===&lt;br /&gt;
&lt;br /&gt;
sysvinit ではランレベルごとに特定の目的が設定されています; 0, 1, 3, 5, 6 のランレベルには特定の sytemd &#039;&#039;ターゲット&#039;&#039;と一対一の対応関係が存在します。残念ながら、ユーザー定義のランレベル (2 や 4 など) で同じことをする良い方法はありません。もしあなたがそうしたいならば、既に存在しているランレベルをベースに新しい systemd &#039;&#039;ターゲット&#039;&#039;を {{ic|/etc/systemd/system/&#039;&#039;your target&#039;&#039;}} として作り ({{ic|/usr/lib/systemd/system/graphical.target}} がサンプルになるかもしれません)、{{ic|/etc/systemd/system/&#039;&#039;your target&#039;&#039;.wants}} ディレクトリを作って、有効にしたいサービスに {{ic|/usr/lib/systemd/system/}} からシンボリックリンクを貼ることが示唆されています。&lt;br /&gt;
&lt;br /&gt;
=== SysV ランレベルと systemd ターゲットの対応表 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! SysV ランレベル !! systemd ターゲット !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| 0 || runlevel0.target, poweroff.target || システムを停止。&lt;br /&gt;
|-&lt;br /&gt;
| 1, s, single || runlevel1.target, rescue.target || シングルユーザーモード。&lt;br /&gt;
|-&lt;br /&gt;
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || ユーザー定義・サイト指定ランレベル。デフォルトでは、3 と同一。&lt;br /&gt;
|-&lt;br /&gt;
| 3 || runlevel3.target, multi-user.target || マルチユーザー、非グラフィカル。一般的にマルチコンソールやネットワークを介してログインするのに使われます。&lt;br /&gt;
|-&lt;br /&gt;
| 5 || runlevel5.target, graphical.target || マルチユーザー、グラフィカル。通常、ランレベル 3 の全てのサービスにグラフィカルログインを付加。&lt;br /&gt;
|-&lt;br /&gt;
| 6 || runlevel6.target, reboot.target || 再起動&lt;br /&gt;
|-&lt;br /&gt;
| emergency || emergency.target || 緊急シェル&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 現在のターゲットを変更する ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; ではターゲットは &#039;&#039;ターゲットユニット&#039;&#039; を通して扱うことができます。ターゲットを変えるには次のようにします:&lt;br /&gt;
&lt;br /&gt;
 # systemctl isolate graphical.target&lt;br /&gt;
&lt;br /&gt;
これは現在のターゲットを変えるだけで、次の起動時には影響がありません。SysVinit での、{{ic|telinit 3}} や {{ic|telinit 5}} のようなコマンドと同じです。&lt;br /&gt;
&lt;br /&gt;
=== 起動するデフォルトターゲットを変更 ===&lt;br /&gt;
&lt;br /&gt;
標準のターゲットは {{ic|default.target}} で、これは {{ic|graphical.target}} へのシンボリックリンクです。これは、古いランレベル5にほぼ対応します。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemctl&#039;&#039; を使用して現在のターゲットを確認するには、次の手順に従います。&lt;br /&gt;
&lt;br /&gt;
 $ systemctl get-default&lt;br /&gt;
&lt;br /&gt;
ブート先のデフォルトターゲットを変更するには、{{ic|default.target}} シンボリックリンクを変更します。&#039;&#039;systemctl&#039;&#039; の場合&lt;br /&gt;
&lt;br /&gt;
{{hc|1=# systemctl set-default multi-user.target|2=&lt;br /&gt;
Removed /etc/systemd/system/default.target.&lt;br /&gt;
Created symlink /etc/systemd/system/default.target -&amp;gt; /usr/lib/systemd/system/multi-user.target.}}&lt;br /&gt;
&lt;br /&gt;
または、次の [[カーネルパラメータ]] のいずれかをブートローダに追加します。&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=systemd.unit=multi-user.target}} (これは、古いランレベル3にほぼ対応しています)&lt;br /&gt;
* {{ic|1=systemd.unit=rescue.target}} (これは、古いランレベル1にほぼ対応しています)&lt;br /&gt;
&lt;br /&gt;
=== デフォルトのターゲット順序 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; は、次の順序に従って {{ic|default.target}} を選択します。&lt;br /&gt;
&lt;br /&gt;
# 上記のカーネルパラメータ&lt;br /&gt;
# {{ic|/etc/systemd/system/default.target}} への Symlink&lt;br /&gt;
# {{ic|/usr/lib/systemd/system/default.target}} への Symlink&lt;br /&gt;
&lt;br /&gt;
== systemd の構成要素 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; のコンポーネントをいくつか(網羅的ではない)紹介します。&lt;br /&gt;
&lt;br /&gt;
* [[systemd-boot]] — シンプルな UEFI [[Arch ブートプロセス|ブートマネージャー]] です。&lt;br /&gt;
* {{man|1|systemd-cryptenroll}} — LUKS2 で暗号化されたボリュームに PKCS#11、FIDO2、TPM2 トークン/デバイスを登録します。&lt;br /&gt;
* [[systemd-firstboot]] — 最初のブートの前に基本的なシステム設定を初期化します。&lt;br /&gt;
* [[systemd-homed]] — ポータブルな人間のユーザー [[ユーザーとグループ|アカウント]] です。&lt;br /&gt;
* {{man|8|systemd-logind}} — [https://dvdhrm.wordpress.com/2013/08/24/session-management-on-linux/ セッション管理]&lt;br /&gt;
* [[systemd-networkd]] — [[ネットワーク設定]] 管理。&lt;br /&gt;
* [[systemd-nspawn]] — 軽量なネームスペースコンテナ。&lt;br /&gt;
* [[systemd-resolved]] — ネットワークの [[ドメイン名前解決|名前解決]]&lt;br /&gt;
* {{man|8|systemd-sysusers}} — パッケージのインストール時または起動時に、システムユーザーとグループを作成し、ユーザーをグループに追加します。&lt;br /&gt;
* [[systemd-timesyncd]] — ネットワーク上で [[時刻|システム時刻]] を同期します。&lt;br /&gt;
* [[systemd/ジャーナル]] — システムのログを記録します。&lt;br /&gt;
* [[systemd/タイマー]] — ファイルやイベントを制御するための単調またはリアルタイムのタイマー &#039;&#039;.service&#039;&#039; [[cron]] の代替。&lt;br /&gt;
* {{man|7|systemd-stub}} — [https://wiki.archlinux.org/title/Unified_kernel_image ユニファイドカーネルイメージ] を作成するために使用される UEFI ブートスタブです。&lt;br /&gt;
&lt;br /&gt;
=== systemd.mount - マウント ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; は {{ic|/etc/fstab}} で指定されたパーティションとファイルシステムのマウントを担当します。{{man|8|systemd-fstab-generator}} は {{ic|/etc/fstab}} の全てのエントリを &#039;&#039;systemd&#039;&#039; ユニットに変換します; これは起動時とシステムマネージャの設定が再ロードされた時に実行されます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; は通常の [[fstab]] 機能を拡張し、追加のマウントオプションを提供します。これらのオプションはマウントユニットの依存関係に影響を与えます。例えば、ネットワークが立ち上がった時だけマウントするようにしたり、他のパーティションがマウントされた時だけマウントするようにすることができます。特定の &#039;&#039;systemd&#039;&#039; マウントオプションの完全なリストは、通常 {{ic|x-systemd.}} で始まり、 {{man|5|systemd.mount|FSTAB}} で詳細に説明されています。&lt;br /&gt;
&lt;br /&gt;
これらのマウントオプションの例として、&#039;&#039;自動マウント&#039;&#039;があります。これは、ブート時に自動的にマウントするのではなく、リソースが必要な時にだけマウントすることを意味します。これは [[fstab#systemd による自動マウント]] で提供されています。&lt;br /&gt;
&lt;br /&gt;
==== GPT パーティションの自動マウント ====&lt;br /&gt;
&lt;br /&gt;
UEFI で起動したシステムでは、特定の条件が満たされると {{man|8|systemd-gpt-auto-generator}} は [https://systemd.io/DISCOVERABLE_PARTITIONS/ Discoverable Partitions Specification] に従って GPT パーティションを自動マウントし、[[fstab]] から省略することができるようになります。&lt;br /&gt;
&lt;br /&gt;
前提条件は以下の通りです。&lt;br /&gt;
&lt;br /&gt;
* ブートローダは [https://systemd.io/BOOT_LOADER_INTERFACE/ LoaderDevicePartUUID] EFI 変数を設定し、使用する EFI システムパーティションが特定できるようにする必要があります。これは [[systemd-boot]], {{man|7|systemd-stub}} と [[rEFInd#LoaderDevicePartUUID|rEFInd (not enabled by default)]] でサポートされています。これは {{ic|bootctl}} を実行して {{ic|Boot loader sets ESP information}} の状態をチェックすることによって確認できます。&lt;br /&gt;
* ルートパーティションは、使用する EFI システムパーティションと同じ物理ディスク上になければなりません。自動マウントされる他のパーティションは、ルートパーティションと同じ物理ディスク上になければなりません。これは基本的に、オートマウントされる全てのパーティションは ESP と同じ物理ディスクを共有していなければならないことを意味します。&lt;br /&gt;
* (必要であれば) {{ic|/efi}} マウントポイントは手動で作成する必要があります。存在しない場合、{{ic|systemd-gpt-auto-generator}} は {{ic|/boot}} を使用します。&lt;br /&gt;
&lt;br /&gt;
{{Warning|GPT 自動マウントを使用している既存のシステムに {{ic|/efi}} を作成するときは、十分に注意してください。次回の起動時には {{ic|/efi}} がデフォルトのマウントポイントとして使用され、{{ic|/boot}} ディレクトリが空になってシステムが不整合状態になる可能性があります。恐らくカーネルとマイクロコードを再インストールしたり、initramfs を再生成したりする必要があるでしょう。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|パーティションのオートマウントを無効にするには、パーティションの [[Wikipedia:GUID Partition Table#Partition type GUIDs|type GUID]] を変更するか、パーティション属性ビットを 63 &amp;quot;do not automount&amp;quot; に設定します、詳しくは [[gdisk#GPT パーティションの自動マウントを防ぐ]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
===== /var =====&lt;br /&gt;
&lt;br /&gt;
{{ic|/var}} の自動マウントが動作するためには、PARTUUID がパーティションタイプの UUID ({{ic|4d21b016-b534-45c2-a9fb-5c16e091fd2d}}) の SHA256 HMAC ハッシュにマシン ID でキーを付けたものと一致している必要があります。必要な PARTUUID は、以下の方法で取得できます。&lt;br /&gt;
&lt;br /&gt;
 $ systemd-id128 -u --app-specific=4d21b016-b534-45c2-a9fb-5c16e091fd2d machine-id&lt;br /&gt;
&lt;br /&gt;
{{Note|{{man|1|systemd-id128}}はマシンIDを{{ic|/etc/machine-id}} から読み取るので、システムをインストールする前に必要な PARTUUID を知ることは不可能です。}}&lt;br /&gt;
&lt;br /&gt;
=== systemd-sysvcompat ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|systemd-sysvcompat}} ({{Pkg|base}} の依存) の主な役割は、伝統的な linux [[init]] バイナリを提供することです。&#039;&#039;systemd&#039;&#039; により制御されているシステムでは、{{ic|init}} はその {{ic|systemd}} 実行ファイルへのシンボリックリンクに過ぎません。&lt;br /&gt;
&lt;br /&gt;
さらに、[[SysVinit]] のユーザーが慣れ親しんでいるであろう4つの便利なショートカットも提供されています。便利なショートカットは {{man|8|halt}}, {{man|8|poweroff}}, {{man|8|reboot}}, {{man|8|shutdown}} です。これら4つのコマンドはそれぞれ {{ic|systemctl}} へのシンボリックリンクであり、&#039;&#039;systemd&#039;&#039; の動作に支配されます。そのため、[[#電源管理]] での議論が適用されます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; ベースのシステムは {{ic|1= init=}} [[カーネルパラメータ#パラメータ一覧|ブートパラメータ]] (例えば、[https://bbs.archlinux.org/viewtopic.php?id=233387 /bin/init is in systemd-sysvcompat ?]) と &#039;&#039;systemd&#039;&#039; ネイティブ {{ic|systemctl}} コマンド引数を使うことで、これらの System V 互換の方法を諦めることができます。&lt;br /&gt;
&lt;br /&gt;
=== systemd-tmpfiles - 一時ファイル ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd-tmpfiles&#039;&#039; は揮発性ファイルや一時ファイル、ディレクトリの作成、削除、クリーンアップを行います。systemd-tmpfiles は {{ic|/etc/tmpfiles.d/}} と {{ic|/usr/lib/tmpfiles.d/}} にある設定ファイルを読んで、実行するアクションを決めます。前者のディレクトリにある設定ファイルは後者のディレクトリにある設定ファイルより優先されます。&lt;br /&gt;
&lt;br /&gt;
設定ファイルは通常サービスファイルと一緒に提供され、{{ic|/usr/lib/tmpfiles.d/&#039;&#039;program&#039;&#039;.conf}} というスタイルで命名されます。例えば、[[Samba]] デーモンはディレクトリ {{ic|/run/samba}} が存在し、正しいパーミッションを持っていることを期待します。そのため、{{Pkg|samba}} パッケージはこの設定で出荷されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/tmpfiles.d/samba.conf|&lt;br /&gt;
D /run/samba 0755 root root&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定ファイルは、起動時に特定のファイルに値を書き込むために使用することもできます。例えば、{{ic|/etc/rc.local}} で USB デバイスからの wakeup を無効にするために {{ic|echo USBE &amp;gt; /proc/acpi/wakeup}} を使った場合、代わりに以下の tmpfile を使用することができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|&lt;br /&gt;
#    Path                  Mode UID  GID  Age Argument&lt;br /&gt;
w    /proc/acpi/wakeup     -    -    -    -   USBE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|8|systemd-tmpfiles}} および {{man|5|tmpfiles.d}} のマニュアルページを参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|適切なモジュールのロードが完了するまでに systemd-tmpfiles-setup サービスが起動することがあるため、この方法は {{ic|/sys}} のオプションを設定するのには使えないかもしれません。この場合、{{ic|modinfo &#039;&#039;module&#039;&#039;}} で設定したいオプションのパラメータがモジュールにあるかどうかを調べ、 [[カーネルモジュール#モジュールオプションを設定する|/etc/modprobe.d にある設定ファイル]] でそのオプションを設定することができます。そうでない場合は、デバイスが現れたらすぐに適切な属性を設定するように [[udev#udev ルールについて|udevルール]] を書く必要があります。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ソケットアクティベーション ===&lt;br /&gt;
&lt;br /&gt;
一部のパッケージには &#039;&#039;.socket&#039;&#039; ユニットが含まれています。例としては、{{Pkg|cups}} パッケージの {{ic|cups.socket}} ユニットがあります[https://0pointer.de/blog/projects/socket-activation2.html]。{{ic|cups.socket}} が[[有効化]]されると (なおかつ {{ic|cups.service}} を無効化しておくと)、&#039;&#039;systemd&#039;&#039; は CUPS を即座には起動せず、適切なソケットをリッスンします。何らかのプログラムがそのソケットに接続しようとした際に初めて &#039;&#039;systemd&#039;&#039; が {{ic|cups.service}} を起動し、CUPS プロセスへのポートの制御を透過的に橋渡しします。&lt;br /&gt;
&lt;br /&gt;
=== GUI 設定ツール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|systemadm|&#039;&#039;systemd&#039;&#039; ユニット用のグラフィカルブラウザ。ユニットのリストを表示することができ、タイプでフィルタリングすることもできます。|https://cgit.freedesktop.org/systemd/systemd-ui/|{{Pkg|systemd-ui}}}}&lt;br /&gt;
* {{App|SystemdGenie|&#039;&#039;systemd&#039;&#039; KDE 技術に基づく管理ユーティリティ。|https://invent.kde.org/system/systemdgenie|{{Pkg|systemdgenie}}}}&lt;br /&gt;
&lt;br /&gt;
=== ネットワークが稼働した後にサービスを実行する ===&lt;br /&gt;
&lt;br /&gt;
ネットワークが立ち上がった後までサービスを遅らせるには、以下の依存関係を &#039;&#039;.service&#039;&#039; ファイルに含めます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/&#039;&#039;foo&#039;&#039;.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
...&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
After=network-online.target&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ネットワークを管理する特定のアプリケーションのネットワーク待ち受けサービスも有効にして、{{ic|network-online.target}} がネットワークの状態を適切に反映するようにする必要があります。&lt;br /&gt;
&lt;br /&gt;
* [[NetworkManager]] を利用している場合、{{ic|NetworkManager-wait-online.service}} は {{ic|NetworkManager.service}} と一緒に有効になっています。{{ic|systemctl is-enabled NetworkManager-wait-online.service}} で確認してください。有効になっていない場合は、{{ic|NetworkManager.service}} を [[systemd#ユニットを使う|再有効化]] してください。&lt;br /&gt;
* [[netctl]] の場合、{{ic|netctl-wait-online.service}} を [[systemd#ユニットを使う|有効化]] して下さい (&#039;&#039;netctl-auto&#039;&#039; を使っていない場合。{{Bug|75836}} を参照してください)。&lt;br /&gt;
* [[systemd-networkd]] を利用している場合、{{ic|systemd-networkd-wait-online.service}} は {{ic|systemd-networkd.service}} と一緒に有効になっています。{{ic|systemctl is-enabled systemd-networkd-wait-online.service}} でこの状態にあるかどうか確認してください。有効になっていない場合は、{{ic|systemd-networkd.service}} を [[systemd#ユニットを使う|再有効化]] してください。&lt;br /&gt;
&lt;br /&gt;
より詳しい説明は [https://systemd.io/NETWORK_ONLINE/#discussion ネットワーク設定の同期のポイント] の議論をご覧ください。&lt;br /&gt;
&lt;br /&gt;
サービスが DNS クエリを実行する必要がある場合、追加で {{ic|nss-lookup.target}} の後に命令する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/&#039;&#039;foo&#039;&#039;.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
...&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
After=network-online.target nss-lookup.target&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{man|7|systemd.special|Special Passive System Units}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|nss-lookup.target}} が効果を発揮するためには、{{ic|1=Wants=nss-lookup.target}} で実行を要求して、{{ic|1=Before=nss-lookup.target}} で事前に実行されているように指定してあるサービスが必要です。通常、これはローカルの [[ドメイン名前解決|DNSリゾルバ]] によって行われます。&lt;br /&gt;
&lt;br /&gt;
どのアクティブなサービスが {{ic|nss-lookup.target}} で実行を要求しているのかを確認してください。&lt;br /&gt;
&lt;br /&gt;
 $ systemctl list-dependencies --reverse nss-lookup.target&lt;br /&gt;
&lt;br /&gt;
=== インストールされたユニットをデフォルトで有効にする ===&lt;br /&gt;
&lt;br /&gt;
Arch Linux の {{ic|/usr/lib/systemd/system-preset/99-default.preset}} には {{ic|disable *}} と記述されています。systemctl プリセットがデフォルトで全てのユニットを無効化するようになり、新しいパッケージがインストールされたときも、ユーザーが手動でユニットを有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
自動的に有効化させたい場合、{{ic|/etc/systemd/system-preset/99-default.preset}} から {{ic|/dev/null}} にシンボリックリンクを作成して設定ファイルを上書きしてください。systemctl プリセットの設定ディレクトリで指定しないかぎり、インストールされた全てのユニットが、ユニットのタイプに関わらず有効化されるようになります。詳しくは {{man|5|systemd.preset}} の man ページを参照。&lt;br /&gt;
&lt;br /&gt;
{{Note|デフォルトで全てのユニットを有効化すると、パッケージに(互いに両立しない)複数のユニットが含まれている場合に問題が生じます。systemctl プリセットはディストリビューションやシステム管理者によって使われることを意図されて作られています。衝突するユニットが有効化されてしまう場合、{{ic|systemd.preset}} の man ページに書かれているように、プリセットの設定ファイルを使ってどちらか片方を明示的に無効化させる必要があります。}}&lt;br /&gt;
&lt;br /&gt;
=== アプリケーション環境のサンドボックス化 ===&lt;br /&gt;
ユニットファイルをサンドボックスとして作成して堅牢な仮想環境にアプリケーションやプロセスを分離させることが可能です。systemd は[[wikipedia:Linux_namespaces|名前空間]]や、許可・拒否された [[ケイパビリティ]] のリスト、[[Cgroups]] を活用して実行環境を設定しプロセスをコンテナ化します—{{man|5|systemd.exec}}。&lt;br /&gt;
&lt;br /&gt;
既存の systemd ユニットファイルを使ってアプリケーションをサンドボックス化するには {{Pkg|strace}}, [[wikipedia:ja:標準ストリーム#標準エラー出力 (stderr)|stderr]], [https://www.freedesktop.org/software/systemd/man/journalctl.html journalctl] などでエラーや出力を確認しながら試行錯誤が必要です。まずは上流のドキュメントを検索して先例がないか確認すると良いでしょう。堅牢にし得る選択肢の出発点を探すには、以下のコマンドを実行します。&lt;br /&gt;
&lt;br /&gt;
 $ systemd-analyze security &#039;&#039;unit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; をサンドボックス化するいくつかの例は以下にあります。&lt;br /&gt;
&lt;br /&gt;
* {{ic|CapabilityBoundingSet}} は、ユニットに許可または拒否された {{man|7|capabilities}} のリストを定義します。{{man|5|systemd.exec|CAPABILITIES}} を参照してください。&lt;br /&gt;
** 例えば、[https://lwn.net/Articles/486306/ 安全なサンドボックスのゴール] の1つである {{Ic|CAP_SYS_ADM}} ケイパビリティ: {{ic|1=CapabilityBoundingSet=~ CAP_SYS_ADM}}&lt;br /&gt;
&lt;br /&gt;
=== サービスの失敗を通知する ===&lt;br /&gt;
&lt;br /&gt;
サービス障害を通知するためには、{{ic|1=OnFailure=}} ディレクティブを、例えば [[systemd# ドロップインファイル|ドロップイン設定ファイル]] を使用して、該当するサービスファイルに追加する必要があります。このディレクティブを各サービスユニットに追加するには、トップレベルのドロップイン設定ファイルを使用します。トップレベルのドロップインについて詳しくは {{man|5|systemd.unit}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
サービス用のトップレベルのドロップインを作成します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/service.d/toplevel-override.conf|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
OnFailure=failure-notification@%n&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これにより、すべてのサービスファイルに {{ic|1=OnFailure=failure-notification@%n}} が追加されます。&#039;&#039;some_service_unit&#039;&#039; が失敗すると、{{ic|failure-notification@&#039;&#039;some_service_unit&#039;&#039;}}が開始されて通知(または実行するよう設定された任意のタスク)を処理するようになります。&lt;br /&gt;
&lt;br /&gt;
テンプレートユニット {{ic|failure-notification@}} を作成します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/failure-notification@.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Send a notification about a failed systemd unit&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/&#039;&#039;path&#039;&#039;/&#039;&#039;to&#039;&#039;/failure-notification.sh %i&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|failure-notification.sh}} スクリプトを作成し、何をするか、どのように通知するか(メール、gotify、xmpp など)を定義します。{{ic|%i}} は失敗したサービスユニットの名前で、スクリプトの引数として渡されます。&lt;br /&gt;
&lt;br /&gt;
起動に失敗した場合に、何度も {{ic|failure-notification@.service}} のインスタンスを起動する再帰を防ぐために、トップレベルのドロップインと同じ名前の空のドロップイン設定ファイルを作成します(空のサービスレベルのドロップイン設定ファイルはトップレベルのドロップインより優先され、後者をオーバーライドします。)&lt;br /&gt;
&lt;br /&gt;
 # mkdir -p /etc/systemd/system/failure-notification@.service.d&lt;br /&gt;
 # touch /etc/systemd/system/failure-notification@.service.d/toplevel-override.conf&lt;br /&gt;
&lt;br /&gt;
=== シャットダウン時に自動で外部HDDの電源を切る ===&lt;br /&gt;
&lt;br /&gt;
もしシステムのシャットダウン時に外部 HDD の電源が正常に切れない場合は、その問題を修正することが望ましいでしょう。電源を切る最も便利な方法は [[udisks]] を使用することです。&lt;br /&gt;
&lt;br /&gt;
{{ic|udisks2.service}} を [[有効化]] します。&lt;br /&gt;
&lt;br /&gt;
スクリプトを実行するサービスは以下のようになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/handle_external_hdds.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Requires=udisks2.service&lt;br /&gt;
Requires=graphical.target&lt;br /&gt;
After=graphical.target&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
ExecStop=/usr/local/bin/handle_external_hdds.sh&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=graphical.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|handle_external_hdds.service}} を [[有効化]] します。&lt;br /&gt;
&lt;br /&gt;
systemd の [[daemon-reload]] を実行して、新しい設定を適用します。&lt;br /&gt;
&lt;br /&gt;
再起動するか {{ic|graphical.target}} をリスタートして、正常に動作するか確認します。&lt;br /&gt;
&lt;br /&gt;
1つのディスクの任意の量のパーティションを扱うスクリプトの例は以下のようになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/local/bin/handle_external_hdds.sh|2=&lt;br /&gt;
#!/bin/bash -u&lt;br /&gt;
&lt;br /&gt;
declare -a uuids=(&#039;&#039;uuid_list&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
# Only proceed if the drive is present.&lt;br /&gt;
if &amp;lt;nowiki&amp;gt;[[ ! -L &amp;quot;/dev/disk/by-uuid/${uuids[0]}&amp;quot; ]]&amp;lt;/nowiki&amp;gt;; then&lt;br /&gt;
  exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
for uuid in &amp;quot;${uuids[@]}&amp;quot;; do&lt;br /&gt;
  if findmnt &amp;quot;/dev/disk/by-uuid/$uuid&amp;quot;; then&lt;br /&gt;
    umount &amp;quot;/dev/disk/by-uuid/$uuid&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# udisksctl powers off proper drive even if its partition is supplied&lt;br /&gt;
udisksctl power-off -b &amp;quot;/dev/disk/by-uuid/${uuids[0]}&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;uuid_list&#039;&#039; はスペース区切りの UUID リストで、例えば {{ic|&amp;quot;&#039;&#039;uuid_1&#039;&#039;&amp;quot; &amp;quot;&#039;&#039;uuid_2&#039;&#039;&amp;quot;}} のように、チェックするデバイスのパーティションに対応します。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== systemd のエラーを調査する ===&lt;br /&gt;
&lt;br /&gt;
起動に失敗している systemd サービスを探すには以下のコマンドを実行します。&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --state=failed&lt;br /&gt;
&lt;br /&gt;
失敗している理由を探すには、ログ出力を調べてください。詳細は [[systemd/ジャーナル#フィルタリング]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ブート問題の診断 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; は、ブートプロセスの問題を診断するためのいくつかのオプションを提供しています。一般的な手順や、&#039;&#039;systemd&#039;&#039; が [[ブートプロセス]] を引き継ぐ前のブートメッセージを残す方法については [[ブートデバッグ]] を参照してください。freedesktop.org の [https://freedesktop.org/wiki/Software/systemd/Debugging/ systemd デバッグドキュメント] も参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 特定のサービスの問題を診断 ===&lt;br /&gt;
&lt;br /&gt;
ある systemd サービスが上手く動作せず、どうなっているのか詳しい情報が欲しい場合、環境変数 {{ic|SYSTEMD_LOG_LEVEL}} を {{ic|debug}} に設定してください。以下は systemd-networkd デーモンをデバッグモードで動かす例です:&lt;br /&gt;
&lt;br /&gt;
サービスに [[#ドロップインファイル|ドロップインファイル]] を追加して、次の2行を追記してください。&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 Environment=SYSTEMD_LOG_LEVEL=debug&lt;br /&gt;
&lt;br /&gt;
あるいは、環境変数を手動でセットしても同じです。&lt;br /&gt;
&lt;br /&gt;
 # SYSTEMD_LOG_LEVEL=debug /lib/systemd/systemd-networkd&lt;br /&gt;
&lt;br /&gt;
その後 &#039;&#039;systemd-networkd&#039;&#039; を [[リスタート]] して、サービスのジャーナルを {{ic|-f}}/{{ic|--follow}} オプションで監視してください。&lt;br /&gt;
&lt;br /&gt;
=== シャットダウン/再起動にものすごく時間がかかる ===&lt;br /&gt;
&lt;br /&gt;
シャットダウンに非常に長い時間がかかる(もしくはフリーズする)場合、サービスが存在していないことが問題かもしれません。Systemd はサービスを kill する前に終了するのを待ちます。該当しているか確認するには、&#039;&#039;systemd&#039;&#039; wiki の [https://freedesktop.org/wiki/Software/systemd/Debugging/#shutdowncompleteseventually Shutdown completes eventually] を参照してください。&lt;br /&gt;
&lt;br /&gt;
一般的な問題は、シャットダウンやサスペントのプロセスが停止することです。該当するかどうか確かめるには、以下のどちらかのコマンドを実行して、出力を確認してください。&lt;br /&gt;
&lt;br /&gt;
{{hc&lt;br /&gt;
|1=# systemctl poweroff&lt;br /&gt;
|2=Failed to power off system via logind: There&#039;s already a shutdown or sleep operation in progress&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc&lt;br /&gt;
|1=# systemctl list-jobs&lt;br /&gt;
|2=  JOB UNIT                    TYPE  STATE  &lt;br /&gt;
...&lt;br /&gt;
21593 systemd-suspend.service start running&lt;br /&gt;
21592 suspend.target          start waiting&lt;br /&gt;
..&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これの [https://unix.stackexchange.com/a/579531 解決策] は、以下を実行してそれらのジョブをキャンセルすることです。&lt;br /&gt;
&lt;br /&gt;
 # systemctl cancel&lt;br /&gt;
 # systemctl stop systemd-suspend.service&lt;br /&gt;
&lt;br /&gt;
すると、シャットダウンやリブートをまた再開します。&lt;br /&gt;
&lt;br /&gt;
=== 短いプロセスがログを出力しない ===&lt;br /&gt;
&lt;br /&gt;
{{ic|journalctl -u foounit}} が短いプロセスについてなにも表示しない場合、かわりに PID を見て下さい。例えば、{{ic|systemd-modules-load.service}} が失敗したとき、{{ic|systemctl status systemd-modules-load}} によってそれが PID 123 として動いているとわかったら、その PID の journal の出力を見ることができます、{{ic|journalctl -b _PID&amp;amp;#61;123}}。journal の {{ic|_SYSTEMD_UNIT}} や {{ic|_COMM}} などのメタデータは非同期に収集され {{ic|/proc}} ディレクトリにプロセスが存在している時だけ表示されます。これを修正するには、{{ic|SCM_CREDENTIALS}} のように、ソケット接続を使ってデータを流すようカーネルを変更する必要があります。簡単に言うと、これは [https://github.com/systemd/systemd/issues/2913 バグ] です。&#039;&#039;systemd&#039;&#039; の設計によって、即座に失敗するサービスはジャーナルに何も出力しない場合があることを覚えておいてください。&lt;br /&gt;
&lt;br /&gt;
===少しづつ起動時間が長くなっている===&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd-analyze}} を使用して、以前と比べて起動時間が明らかに伸びていると複数のユーザーが報告しています。{{ic|systemd-analyze blame}} を使って [[NetworkManager]] が起動するのに異常に長い時間かかるようになったという報告もあります。&lt;br /&gt;
&lt;br /&gt;
問題の原因として {{ic|/var/log/journal}} が巨大になりすぎている可能性があります。そのような場合、フォルダ内のファイルを全て削除して journal のファイルサイズを[[systemd/ジャーナル#journal のサイズ制限|ここ]]に書かれているように制限するよう設定すれば解決します(できればファイルを削除する前に、どこかに一時的にバックアップしてください)。&lt;br /&gt;
&lt;br /&gt;
=== 起動時に systemd-tmpfiles-setup.service の実行に失敗する ===&lt;br /&gt;
&lt;br /&gt;
systemd 219 から、{{ic|/usr/lib/tmpfiles.d/systemd.conf}} は {{ic|/var/log/journal}} 下のディレクトリに対して ACL 属性を指定しており、それによって、ジャーナルが存在するファイルシステムで ACL のサポートを有効にしなくてはならなくなっています。&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/log/journal}} が存在するファイルシステムで ACL を有効化する方法は[[アクセス制御リスト#ACL の有効化]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== リモートマシンで緊急モードを無効化 ===&lt;br /&gt;
&lt;br /&gt;
リモートマシン (例えば Azure や Google Cloud でホストしている仮想マシン) の緊急モードは無効化すると良いでしょう。緊急モードが起動すると、ネットワークからマシンに接続できなくなってしまうからです。無効化するには以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # systemctl mask emergency.service&lt;br /&gt;
 # systemctl mask emergency.target&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:systemd]]&lt;br /&gt;
* [https://systemd.io/ 公式ウェブサイト]&lt;br /&gt;
** [https://www.freedesktop.org/wiki/Software/systemd/Optimizations systemd の最適化]&lt;br /&gt;
** [https://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions systemd FAQ]&lt;br /&gt;
** [https://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks systemd のヒントとテクニック]&lt;br /&gt;
* {{man|1|systemd}}&lt;br /&gt;
* その他のディストリビューション&lt;br /&gt;
** [[Gentoo:Systemd]]&lt;br /&gt;
** [[Fedora:Systemd]]&lt;br /&gt;
** [[Fedora:How to debug Systemd problems]]&lt;br /&gt;
** [[Fedora:SysVinit to Systemd Cheatsheet]]&lt;br /&gt;
** [[Debian:systemd]]&lt;br /&gt;
* [http://0pointer.de/blog/projects/systemd.html Lennart&#039;s blog story], [http://0pointer.de/blog/projects/systemd-update.html update 1], [http://0pointer.de/blog/projects/systemd-update-2.html update 2], [http://0pointer.de/blog/projects/systemd-update-3.html update 3], [http://0pointer.de/blog/projects/why.html summary]&lt;br /&gt;
* [https://containersolutions.github.io/runbooks/posts/linux/debug-systemd-service-units Systemd サービスのデバッグ]&lt;br /&gt;
* [http://0pointer.de/public/systemd-ebook-psankar.pdf 管理者向け systemd (PDF)]&lt;br /&gt;
* [https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units Systemctl を使用して Systemd サービスとユニットを管理する方法]&lt;br /&gt;
* [https://dvdhrm.wordpress.com/2013/08/24/session-management-on-linux/ systemd-logind によるセッション管理]&lt;br /&gt;
* [[Emacs#Syntax highlighting for systemd Files|Emacs Systemd ファイルの構文強調表示]]&lt;br /&gt;
* [http://www.h-online.com/open/features/Control-Centre-The-systemd-Linux-init-system-1565543.html Two] [http://www.h-online.com/open/features/Booting-up-Tools-and-tips-for-systemd-1570630.html part] &#039;&#039;The H Open&#039;&#039; 誌の紹介記事。&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Systemd|2022-10-27|753672}}&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Fdisk&amp;diff=39017</id>
		<title>Fdisk</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Fdisk&amp;diff=39017"/>
		<updated>2024-09-10T11:24:44Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: /* パーティションテーブルとパーティションの作成 */ 誤字(とそれに伴うリンクの)修正 SSH -&amp;gt; SSD&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:ファイルシステム]]&lt;br /&gt;
[[Category:システムリカバリ]]&lt;br /&gt;
[[Category:コマンド]]&lt;br /&gt;
[[de:fdisk]]&lt;br /&gt;
[[en:Fdisk]]&lt;br /&gt;
[[es:Fdisk]]&lt;br /&gt;
[[ru:Fdisk]]&lt;br /&gt;
[[tr:Fdisk]]&lt;br /&gt;
[[zh-hans:Fdisk]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ファイルシステム}}&lt;br /&gt;
{{Related|gdisk}}&lt;br /&gt;
{{Related|GNU Parted}}&lt;br /&gt;
{{Related|パーティショニング}}&lt;br /&gt;
{{Related|dd}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://git.kernel.org/cgit/utils/util-linux/util-linux.git/ util-linux fdisk] はダイアログで操作するコマンドラインユーティリティで、ハードディスク上のパーティションテーブルやパーティションを作成・編集することができます。ハードディスクはパーティションに分割され、その分割情報はパーティションテーブルに記述されます。&lt;br /&gt;
&lt;br /&gt;
この記事では {{man|8|fdisk}} とその派生である {{man|8|sfdisk}} ユーティリティについて解説します。&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{Pkg|util-linux}} 2.23 以降、&#039;&#039;fdisk&#039;&#039; は [[GPT]] をサポートしています。[https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/?id=766d5156c43b784700d28d1c1141008b2bf35ed7] [[GPT]] に対しては {{Pkg|gptfdisk}} を使うこともできます。詳細は [[gdisk]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[Wikipedia:ja:Curses|Curses]] ベースのユーザインターフェイスで基本的なパーティショニング機能を使いたい場合は、{{man|8|cfdisk}} を使うことができます。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;fdisk&#039;&#039; とその派生ユーティリティは、{{Pkg|util-linux}} パッケージにより提供されています。このパッケージは {{Pkg|base}} [[メタパッケージ]]の依存パッケージです。&lt;br /&gt;
&lt;br /&gt;
== パーティション一覧 ==&lt;br /&gt;
&lt;br /&gt;
[[ブロックデバイス]]上のパーティションテーブルとパーティションを一覧表示するには、以下を実行します (デバイスの名前 {{ic|/dev/sda}}、{{ic|/dev/nvme0n1}}、{{ic|/dev/mmcblk0}} は適当に置き換えてください):&lt;br /&gt;
&lt;br /&gt;
 # fdisk -l /dev/sda&lt;br /&gt;
&lt;br /&gt;
{{Note|デバイスを指定しなかった場合、&#039;&#039;fdisk&#039;&#039; は {{ic|/proc/partitions}} の全てのパーティションを表示します。}}&lt;br /&gt;
&lt;br /&gt;
== パーティションテーブルのバックアップとリストア ==&lt;br /&gt;
&lt;br /&gt;
ハードディスクに変更を加える前に、ドライブのパーティションテーブルとパーティションスキームをバックアップしておくと良いでしょう。また、バックアップを利用して、同じパーティションレイアウトを多数のドライブにコピーすることもできます。&lt;br /&gt;
&lt;br /&gt;
GPT と MBR のどちらでも &#039;&#039;sfdisk&#039;&#039; の {{ic|-d}}/{{ic|--dump}} オプションを使ってデバイスのパーティションレイアウトをファイルに保存できます。{{ic|/dev/sda}} デバイスを保存するには以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # sfdisk -d /dev/sda &amp;gt; sda.dump&lt;br /&gt;
&lt;br /&gt;
1 GiB の ext4 パーティションが存在する場合、ファイルは以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|sda.dump|2=&lt;br /&gt;
label: gpt&lt;br /&gt;
label-id: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE&lt;br /&gt;
device: /dev/sda&lt;br /&gt;
unit: sectors&lt;br /&gt;
first-lba: 34&lt;br /&gt;
last-lba: 1048576&lt;br /&gt;
sector-size: 512&lt;br /&gt;
&lt;br /&gt;
/dev/sda1 : start=2048, size=1048576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=BBF1CD36-9262-463E-A4FB-81E32C12BDE7&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
レイアウトを復元するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 # sfdisk /dev/sda &amp;lt; sda.dump&lt;br /&gt;
&lt;br /&gt;
== パーティションテーブルとパーティションの作成 ==&lt;br /&gt;
&lt;br /&gt;
[[パーティショニング]]するときはまずパーティションテーブルを作成します。その後、望ましい[[パーティショニング#パーティションスキーム|パーティションスキーム]]にあわせてパーティションを作成します。[[Master Boot Record|MBR]] と [[GPT]] のどちらを使用するかについては[[パーティショニング#パーティションテーブル|パーティションテーブル]]を見てください。&lt;br /&gt;
&lt;br /&gt;
最初に、パーティションテーブルとレイアウトを[[#パーティションテーブルのバックアップとリストア|バックアップ]]することを推奨します。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;fdisk&#039;&#039; は自動的に全てのパーティションを2048セクタ (1024 KiB、1セクタあたり 512 B) にアライメントします。なので、すべての [[Advanced Format]] HDD と、全てではないにしても大半の [[SSD]] と互換性があるはずです。つまりデフォルト設定で正しいアライメントが行われます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;fdisk&#039;&#039; を使うには、変更/編集したい[[ブロックデバイス]]の名前を指定してプログラムを実行してください。以下の例では {{ic|/dev/sda}} を使います:&lt;br /&gt;
&lt;br /&gt;
 # fdisk /dev/sda&lt;br /&gt;
&lt;br /&gt;
これで、&#039;&#039;fdisk&#039;&#039; の対話が開始され、コマンドを実行してパーティショニングを行うことができます。&lt;br /&gt;
&lt;br /&gt;
=== 新しいテーブルの作成 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|データが含まれているディスクに新しいパーティションテーブルを作成すると、ディスク上の全てのデータが消去されます。注意して実行してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* NVMe ドライブや Advanced Format ハードディスクドライブが、パーティショニングする前に[[Advanced Format|最適な論理セクターサイズ]]を使用していることを確認してください。&lt;br /&gt;
* SSDをパーティショニングする前に、[[ソリッドステートドライブ/メモリセルの消去]]を実行することを検討してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
新しいパーティションテーブルを作成して既存のパーティションデータを全て消去するには、MBR パーティションを作成する場合はプロンプトに {{ic|o}} と、GUID パーティションテーブル(GPT)を作成する場合は {{ic|g}} 入力します。既存のテーブルを使用する場合は、何もせず次に進んで下さい。&lt;br /&gt;
&lt;br /&gt;
=== パーティションの作成 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|n}} コマンドで新しいパーティションを作成します。MBR パーティションタイプ、パーティション番号、開始セクタ、終わりのセクタを入力します。&lt;br /&gt;
&lt;br /&gt;
{{Note|パーティションのサイズや場所に関する考慮事項は [[パーティショニング#パーティションスキーム]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
==== パーティションタイプ ====&lt;br /&gt;
&lt;br /&gt;
MBR を使用している場合、&#039;&#039;fdisk&#039;&#039; は MBR パーティションタイプを尋ねてきます。プライマリパーティションを作成したい場合は {{ic|p}} と、拡張パーティションを作成したい場合は {{ic|e}} と入力してください。プライマリパーティションは4つまで作成できます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;fdisk&#039;&#039; はパーティションタイプ ID を尋ねずに、デフォルトで &#039;Linux filesystem&#039; を使用します。[[#パーティションタイプの変更]]できます。&lt;br /&gt;
&lt;br /&gt;
==== パーティション番号 ====&lt;br /&gt;
&lt;br /&gt;
パーティション番号とは、パーティションに割り当てられた番号であり、例えば、ディスク {{ic|/dev/sda}} 上の番号 {{ic|1}} のパーティションは {{ic|/dev/sda1}}、{{ic|/dev/nvme0n1}} 上では {{ic|/dev/nvme0n1p1}}、{{ic|/dev/mmcblk0}} 上では {{ic|/dev/mmcblk0p1}} となります。命名規則の詳細については[[デバイスファイル#パーティション]]を参照してください。パーティション番号はディスク上のパーティションの順序と一致しない場合があり、その場合には[[#パーティションのソート|ソート]]できます。&lt;br /&gt;
&lt;br /&gt;
パーティション番号は、&#039;&#039;fdisk&#039;&#039; によって提案されたデフォルトの番号を使うことをおすすめします。&lt;br /&gt;
&lt;br /&gt;
==== 先頭と末尾のセクタ ====&lt;br /&gt;
&lt;br /&gt;
パーティションの先頭のセクタは、セクタ番号を使って絶対値で指定しなければなりません。パーティションの末尾のセクタは、セクタ番号で絶対値で指定するか、あるいはキビバイト({{ic|K}})、メビバイト({{ic|M}})、ギビバイト({{ic|G}})、テビバイト({{ic|T}})、ペビバイト({{ic|P}})単位で指定することができます。&lt;br /&gt;
&lt;br /&gt;
パーティションの末尾のセクタの位置の指定方法は以下の2通りあります:&lt;br /&gt;
&lt;br /&gt;
* ディスクの先頭からの絶対値。例えば、先頭のセクタとして {{ic|40M}} を指定すると、ディスクの先頭から 40 MiB の位置となります。&lt;br /&gt;
* {{ic|&#039;&#039;&#039;+&#039;&#039;&#039;&#039;&#039;size&#039;&#039;}} や {{ic|&#039;&#039;&#039;-&#039;&#039;&#039;&#039;&#039;size&#039;&#039;}} のように、サイズの前に +/- を付けると相対値を指定できます。例えば、デフォルトの先頭セクタから 2 GiB の点を指定するには {{ic|+2G}}、利用可能な末尾のセクタから 200 MiB の点を指定するには {{ic|-200M}}。&lt;br /&gt;
&lt;br /&gt;
何も入力しないで {{ic|Enter}} キーを押すと、先頭セクタの一番広いブロックから末尾セクタと同じブロックの終末までが指定されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* パーティショニング時に {{ic|+&#039;&#039;size{M,G,T,P}&#039;&#039;}} 記法による相対値を使ってパーティションサイズを指定し、常に 1 MiB 以上のサイズを使うと良いでしょう。このようにサイズを指定すれば、パーティションは常にデバイスの特性に従ってアライメントされます。&lt;br /&gt;
* [[EFI システムパーティション]]には、タイプ {{ic|EFI System}} を指定する必要があります。&lt;br /&gt;
* [[GRUB]] を GPT のディスクにインストールする際は、タイプ {{ic|BIOS boot}} の [[BIOS ブートパーティション]]が必要です。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* MBR パーティションテーブルのディスクでは、ディスクの末尾に512バイトのセクタ33個分(16.5 KiB)のパーティショニングされていない空き領域を作っておくことで、[[gdisk#MBR と GPT の変換|MBR と GPT の変換]]ができるようになります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
必要なパーティションが揃うまで、この手順を繰り返してください。&lt;br /&gt;
&lt;br /&gt;
=== パーティションタイプの変更 ===&lt;br /&gt;
&lt;br /&gt;
それぞれのパーティションには、1つのタイプが割り当てられます。MBR では、[[Wikipedia:Partition type|パーティション ID]] を使います。GPT では、[[Wikipedia:GUID Partition Table#Partition type GUIDs|パーティションタイプ GUID]] を使います。&lt;br /&gt;
&lt;br /&gt;
パーティションのタイプを変更するには、{{ic|t}} を入力してください。デフォルトでは {{ic|Linux filesystem}} が使用され、ほとんどのユースケースで問題ないはずです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* fdisk の内部コードを一覧表示するには {{ic|L}} を入力してください。&lt;br /&gt;
* {{man|8|systemd-gpt-auto-generator}} がパーティションを自動マウントするので、[https://systemd.io/DISCOVERABLE_PARTITIONS/ Discoverable Partitions Specification] に従うことをおすすめします。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== パーティションを起動可能にする ===&lt;br /&gt;
&lt;br /&gt;
{{ic|a}} を入力することで、MBR パーティションを起動可能にすることができます。&lt;br /&gt;
&lt;br /&gt;
=== パーティションテーブルの変更を確認 ===&lt;br /&gt;
&lt;br /&gt;
* {{ic|p}} コマンドで変更を表示します。&lt;br /&gt;
* {{ic|q}} コマンドで変更を中止します。&lt;br /&gt;
* {{ic|w}} コマンドで変更をディスクに書き込み、終了します。&lt;br /&gt;
&lt;br /&gt;
== パーティションの移動 ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|パーティションはオフラインでのみ移動できます。パーティションを移動するには、パーティション全体をディスクに書き直す必要があるため、時間がかかり、潜在的に危険な操作になります。バックアップを強くお勧めします! {{man|8|sfdisk|OPTIONS}} によると、 &#039;この操作は危険を伴います&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
パーティションを移動するには、パーティションを移動する場所に空き領域が必要です。必要に応じて、パーティションとその上のファイルシステムを縮小することでスペースを空けることができます。 [[Parted#パーティションの縮小]] を参照してください。パーティションを再配置するには:&lt;br /&gt;
&lt;br /&gt;
 # echo &#039;+&#039;&#039;sectors&#039;&#039;,&#039; | sfdisk --move-data &#039;&#039;device&#039;&#039; -N &#039;&#039;number&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|&#039;&#039;sectors&#039;&#039;}} はパーティションを移動するセクターの数です({{ic|&#039;&#039;+&#039;&#039;}} はパーティションを前方に移動することを示します)、{{ic|&#039;&#039;device&#039;&#039;}} はパーティションを保持するデバイスであり、{{ic|&#039;&#039;number&#039;&#039;}} はパーティション番号です。ディスクの中央または先頭に新しいパーティションを追加する場合は、パーティションの番号を付け直す必要があることに注意してください。 [[#パーティションのソート]] または &#039;&#039;fdisk&#039;&#039; の &amp;quot;extrafunctionality&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;
 # sfdisk -r &#039;&#039;/dev/sda&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[永続的なブロックデバイスの命名]]を使っていない場合、パーティションを並び替えたら {{ic|/etc/fstab}} や {{ic|/etc/crypttab}} ファイルを修正する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
{{Note|パーティション(例えば {{ic|/dev/sda1}})を利用可能にするために、カーネルは新しいパーティションテーブルを読み込む必要があります。システムを再起動するか、カーネルに[https://serverfault.com/questions/36038/reread-partition-table-without-rebooting パーティションテーブルを再読込み]させてください (つまり {{ic|partprobe /dev/sda}})。}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.redhat.com/sysadmin/partitions-fdisk Managing partitions in Linux with fdisk]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|fdisk|2024-06-15|803424}}&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Linux_%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A&amp;diff=38803</id>
		<title>Linux コンテナ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Linux_%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A&amp;diff=38803"/>
		<updated>2024-09-01T12:55:55Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: /* NAT ブリッジの使用 */  不自然な読点の削除&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[Category:サンドボックス]]&lt;br /&gt;
[[en:Linux Containers]]&lt;br /&gt;
[[pt:Linux Containers]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Cgroups}}&lt;br /&gt;
{{Related|Docker}}&lt;br /&gt;
{{Related|Incus}}&lt;br /&gt;
{{Related|Linux コンテナ/VPN の使用}}&lt;br /&gt;
{{Related|LXD}}&lt;br /&gt;
{{Related|podman}}&lt;br /&gt;
{{Related|systemd-nspawn}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LinuX Containers&#039;&#039;&#039; (&#039;&#039;&#039;LXC&#039;&#039;&#039;) はオペレーティングシステムレベルの仮想化手法であり、一つのコントロールホスト (LXC ホスト) で独立した Linux システム (コンテナ) を複数動作させることができます。仮想マシンではありませんが、CPU やメモリ、ブロック I/O、ネットワークなどが個別に用意された仮想環境として使えます。LXC は LXC ホストの Linux カーネルによる [[cgroups]] 機能によって賄われています。chroot に似ていますが、より強力な分離を実現します。&lt;br /&gt;
&lt;br /&gt;
[[Incus]] や [[LXD]] は LXC のマネージャーとして使用できます。このページでは、LXC を直接使用する方法について説明します&lt;br /&gt;
&lt;br /&gt;
コンテナを使用する代替手段としては [[systemd-nspawn]]、[[docker]]、[[podman]] があります。&lt;br /&gt;
&lt;br /&gt;
== 特権コンテナと非特権コンテナ ==&lt;br /&gt;
&lt;br /&gt;
LXC は特権または非特権で動作するように設定することができます。&lt;br /&gt;
&lt;br /&gt;
一般的に、非特権コンテナは特権コンテナよりも安全だとされています [https://www.stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers]。非特権コンテナでは分離の程度が原理上増すからです。非特権コンテナではコンテナの root の UID をホストの root 以外の UID にマッピングすることで、コンテナの中からホスト環境に影響を及ぼすことを難しくします。たとえ攻撃者がコンテナから脱獄しても、ホスト側では攻撃者に権限がありません。&lt;br /&gt;
&lt;br /&gt;
現在 Arch のパッケージでは特権コンテナは最初からサポートしています。非特権コンテナはカーネル設定を行わないと利用できません。Arch の {{pkg|linux}} カーネルでは通常ユーザーでユーザー名前空間が無効になっているためです。この記事では特権・非特権両方のコンテナの情報を載せていますが、非特権を使うには設定が必要です。&lt;br /&gt;
&lt;br /&gt;
=== 非特権コンテナの例 ===&lt;br /&gt;
&lt;br /&gt;
UID マッピングの能力を説明するために、非特権コンテナで以下のコマンドを実行したときの出力を考えてみましょう。{{ic|ps}} の出力でコンテナ化されたプロセスの所有者が同じくコンテナ化された root ユーザーとなっていることが確認できます:&lt;br /&gt;
&lt;br /&gt;
 [root@unprivileged_container /]# ps -ef | head -n 5&lt;br /&gt;
 UID        PID  PPID  C STIME TTY          TIME CMD&lt;br /&gt;
 root         1     0  0 17:49 ?        00:00:00 /sbin/init&lt;br /&gt;
 root        14     1  0 17:49 ?        00:00:00 /usr/lib/systemd/systemd-journald&lt;br /&gt;
 dbus        25     1  0 17:49 ?        00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation&lt;br /&gt;
 systemd+    26     1  0 17:49 ?        00:00:00 /usr/lib/systemd/systemd-networkd&lt;br /&gt;
&lt;br /&gt;
ホスト側では、コンテナ化された root プロセスはマッピングされたユーザー (ID&amp;gt;100000) で動作します。ホストの root ユーザーではありません:&lt;br /&gt;
 [root@host /]# lxc-info -Ssip --name sandbox&lt;br /&gt;
 State:          RUNNING&lt;br /&gt;
 PID:            26204&lt;br /&gt;
 CPU use:        10.51 seconds&lt;br /&gt;
 BlkIO use:      244.00 KiB&lt;br /&gt;
 Memory use:     13.09 MiB&lt;br /&gt;
 KMem use:       7.21 MiB&lt;br /&gt;
&lt;br /&gt;
 [root@host /]# ps -ef | grep 26204 | head -n 5&lt;br /&gt;
 UID        PID  PPID  C STIME TTY          TIME CMD&lt;br /&gt;
 100000   26204 26200  0 12:49 ?        00:00:00 /sbin/init&lt;br /&gt;
 100000   26256 26204  0 12:49 ?        00:00:00 /usr/lib/systemd/systemd-journald&lt;br /&gt;
 100081   26282 26204  0 12:49 ?        00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation&lt;br /&gt;
 100000   26284 26204  0 12:49 ?        00:00:00 /usr/lib/systemd/systemd-logind&lt;br /&gt;
&lt;br /&gt;
== セットアップ ==&lt;br /&gt;
=== 必要なソフトウェア ===&lt;br /&gt;
{{Pkg|lxc}} と {{Pkg|arch-install-scripts}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
==== 非特権コンテナのサポートを有効化 (任意) ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lxc/default.conf}} を変更して次の行を含めます:&lt;br /&gt;
&lt;br /&gt;
 lxc.idmap = u 0 100000 65536&lt;br /&gt;
 lxc.idmap = g 0 100000 65536&lt;br /&gt;
&lt;br /&gt;
言い換えると、65536 個の連続した uid の範囲をマップします。コンテナ側の uid 0 (ホストの観点からは uid 100000 になります) から、ホストが uid 165535 として認識するコンテナ側の uid 65535 までです。同じマッピングを gid に適用します。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/subuid}} と {{ic|/etc/subgid}} の両方を作成して、コンテナを実行できる各ユーザーのコンテナ化された uid/gid ペアへのマッピングを含めます。以下の例は、単純に root ユーザー (および [[systemd]] システムユニット) を対象としています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/subuid|&lt;br /&gt;
root:100000:65536&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/subgid|&lt;br /&gt;
root:100000:65536&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
さらに、非特権ユーザーとして非特権コンテナを実行することは、事前に [[cgroup]] を委任した場合にのみ機能します (この制限は、liblxc ではなく cgroup2 委任モデルによって強制されます) 次の &#039;&#039;systemd&#039;&#039; コマンドを使用して cgroup を委任します ([https://linuxcontainers.org/lxc/getting-started/#creating-unprivileged-containers-as-a-user LXC - Getting started: Creating unprivileged containers as a user]):&lt;br /&gt;
&lt;br /&gt;
 $ systemd-run --unit=&#039;&#039;myshell&#039;&#039; --user --scope -p &amp;quot;Delegate=yes&amp;quot; lxc-start &#039;&#039;container_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これは他の lxc コマンドでも同様に機能します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/user@.service.d/delegate.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
Delegate=cpu cpuset io memory pids&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== linux-hardened などカスタムカーネル上の特権のないコンテナ =====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|linux-hardened}} またはカスタム カーネル上で &#039;&#039;非特権&#039;&#039; コンテナを実行したいユーザーは、いくつかの追加のセットアップ手順を完了する必要があります。&lt;br /&gt;
&lt;br /&gt;
まず、ユーザー名前空間をサポートするカーネル ({{ic|CONFIG_USER_NS}} を備えたカーネル) が必要です。すべての Arch Linux カーネルは {{ic|CONFIG_USER_NS}} をサポートしています。ただし、より一般的なセキュリティ上の懸念により、{{Pkg|linux-hardened}} カーネルは、&#039;&#039;root&#039;&#039; ユーザーに対してのみ有効になったユーザー名前空間とともに出荷されます。そこに &#039;&#039;非特権&#039;&#039; コンテナを作成するには 2 つのオプションがあります:&lt;br /&gt;
&lt;br /&gt;
*特権のないコンテナは &#039;&#039;root&#039;&#039; としてのみ起動してください。また、現在の値が {{ic|0}} の場合、[[sysctl]] 設定 {{ic|user.max_user_namespaces}} に環境に合わせて正の値を指定します (これにより、{{ic|lxc info --show-log &#039;&#039;container_name&#039;&#039;}} で見られる {{ic|Failed to clone process in new user namespace}} というエラーが修正されます)&lt;br /&gt;
*{{Pkg|linux-hardened}} および {{ic|lxd 5.0.0}} では、{{ic|root:1000000:65536}} の範囲を使用するように {{ic|/etc/subuid}} および {{ic|/etc/subgid}} を設定する必要がある場合があります。&#039;&#039;&#039;最初&#039;&#039;&#039; のコンテナを特権付きで起動する必要がある場合もあります。これにより、{{ic|newuidmap failed to write mapping &amp;quot;newuidmap: uid range [0-1000000000) -&amp;gt; [1000000-1001000000) not allowed&amp;quot; エラーが修正されます。}}&lt;br /&gt;
* &#039;&#039;sysctl&#039;&#039; 設定 {{ic|kernel.unprivileged_userns_clone}} を有効にして、通常のユーザーが特権のないコンテナを実行できるようにします。これは、root として {{ic|1=sysctl kernel.unprivileged_userns_clone=1}} を実行することで現在のセッションに対して行うことができ、また、{{man|5|sysctl.d}} を使用して永続化することもできます。&lt;br /&gt;
&lt;br /&gt;
=== ホストネットワーク設定 ===&lt;br /&gt;
&lt;br /&gt;
LXC は、さまざまな仮想ネットワークタイプとデバイスをサポートします ({{man|5|lxc.container.conf}} を参照) ホスト上のブリッジデバイスは、このセクションで説明するほとんどのタイプの仮想ネットワークに必要です。&lt;br /&gt;
&lt;br /&gt;
考慮すべき主な設定がいくつかあります。&lt;br /&gt;
# ホストブリッジ&lt;br /&gt;
# NAT ブリッジ&lt;br /&gt;
&lt;br /&gt;
ホストブリッジでは、ホストのネットワークマネージャーが共有ブリッジインターフェイスを管理する必要があります。ホストとすべての lxc には、同じネットワーク内の IP アドレスが割り当てられます (たとえば、192.168.1.x) Web サーバーや VPN サーバーなど、ネットワークに公開されたサービスをコンテナ化することが目的の場合、これはより単純になる可能性があります。ユーザーは、lxc を物理 LAN 上の単なる別の PC と考えることができ、それに応じてルーター内の必要なポートを転送できます。追加されたシンプルさは、追加の脅威ベクトルと考えることもできます。WAN トラフィックが lxc に転送される場合、別の範囲で lxc を実行すると、脅威の表面が小さくなります。&lt;br /&gt;
&lt;br /&gt;
NAT ブリッジでは、ホストのネットワークマネージャーがブリッジを管理する必要はありません。{{pkg|lxc}} には、{{ic|lxcbr0}} という NAT ブリッジを作成する {{ic|lxc-net}} が同梱されています。NAT ブリッジは、ホストのイーサネット デバイスや物理ネットワークにブリッジされていないプライベート ネットワークを備えたスタンドアロンブリッジです。ホスト内にプライベートサブネットとして存在します。&lt;br /&gt;
&lt;br /&gt;
==== ホストブリッジの使用 ====&lt;br /&gt;
&lt;br /&gt;
[[ネットワークブリッジ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== NAT ブリッジの使用 ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|dnsmasq}} を [[インストール]] して下さい、これは {{ic|lxc-net}} の依存関係です。ブリッジを開始する前に、まずブリッジの設定ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/default/lxc-net|&lt;br /&gt;
2=# Leave USE_LXC_BRIDGE as &amp;quot;true&amp;quot; if you want to use lxcbr0 for your&lt;br /&gt;
# containers.  Set to &amp;quot;false&amp;quot; if you&#039;ll use virbr0 or another existing&lt;br /&gt;
# bridge, or mavlan to your host&#039;s NIC.&lt;br /&gt;
USE_LXC_BRIDGE=&amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# If you change the LXC_BRIDGE to something other than lxcbr0, then&lt;br /&gt;
# you will also need to update your /etc/lxc/default.conf as well as the&lt;br /&gt;
# configuration (/var/lib/lxc/&amp;lt;container&amp;gt;/config) for any containers&lt;br /&gt;
# already created using the default config to reflect the new bridge&lt;br /&gt;
# name.&lt;br /&gt;
# If you have the dnsmasq daemon installed, you&#039;ll also have to update&lt;br /&gt;
# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon.&lt;br /&gt;
LXC_BRIDGE=&amp;quot;lxcbr0&amp;quot;&lt;br /&gt;
LXC_ADDR=&amp;quot;10.0.3.1&amp;quot;&lt;br /&gt;
LXC_NETMASK=&amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
LXC_NETWORK=&amp;quot;10.0.3.0/24&amp;quot;&lt;br /&gt;
LXC_DHCP_RANGE=&amp;quot;10.0.3.2,10.0.3.254&amp;quot;&lt;br /&gt;
LXC_DHCP_MAX=&amp;quot;253&amp;quot;&lt;br /&gt;
# Uncomment the next line if you&#039;d like to use a conf-file for the lxcbr0&lt;br /&gt;
# dnsmasq.  For instance, you can use &#039;dhcp-host=mail1,10.0.3.100&#039; to have&lt;br /&gt;
# container &#039;mail1&#039; always get ip address 10.0.3.100.&lt;br /&gt;
#LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf&lt;br /&gt;
&lt;br /&gt;
# Uncomment the next line if you want lxcbr0&#039;s dnsmasq to resolve the .lxc&lt;br /&gt;
# domain.  You can then add &amp;quot;server=/lxc/10.0.3.1&#039; (or your actual $LXC_ADDR)&lt;br /&gt;
# to your system dnsmasq configuration file (normally /etc/dnsmasq.conf,&lt;br /&gt;
# or /etc/NetworkManager/dnsmasq.d/lxc.conf on systems that use NetworkManager).&lt;br /&gt;
# Once these changes are made, restart the lxc-net and network-manager services.&lt;br /&gt;
# &#039;container1.lxc&#039; will then resolve on your host.&lt;br /&gt;
#LXC_DOMAIN=&amp;quot;lxc&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|ブリッジの IP 範囲がローカルネットワークに干渉しないことを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
次に、コンテナがブリッジを使用するように LXC コンテナテンプレートを変更する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lxc/default.conf|&lt;br /&gt;
2=lxc.net.0.type = veth&lt;br /&gt;
lxc.net.0.link = lxcbr0&lt;br /&gt;
lxc.net.0.flags = up&lt;br /&gt;
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Optionally create a configuration file to manually define the IP address of any containers:&lt;br /&gt;
{{hc|/etc/lxc/dnsmasq.conf|&lt;br /&gt;
2=dhcp-host=playtime,10.0.3.100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|lxc-net.service}} を [[起動]]/[[有効化]] してブリッジ インターフェイスを作成します。&lt;br /&gt;
&lt;br /&gt;
===== ファイアウォールの考慮事項 =====&lt;br /&gt;
&lt;br /&gt;
ホストマシンが実行しているファイアウォールによっては、{{ic|lxcbr0}} からホストへの受信パケットと、{{ic|lxcbr0}} からの送信パケットがホストを経由して他のネットワークに到達することを許可する必要がある場合があります。これをテストするには、IP 割り当てに DHCP を使用するように設定されたコンテナを起動して、{{ic|lxc-net}} がコンテナに IP アドレスを割り当てることができるかどうかを確認してください ({{ic|lxc-ls -f}} IP が割り当てられていない場合は、ホストのポリシーを調整する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{pkg|ufw}} のユーザーは、次の [https://discuss.linuxcontainers.org/t/lxd-bridge-doesnt-work-with-ipv4-and-ufw-with-nftables/10034/17 2 行] を実行するだけです。これを有効にするには:&lt;br /&gt;
 # ufw allow in on lxcbr0&lt;br /&gt;
 # ufw route allow in on lxcbr0&lt;br /&gt;
&lt;br /&gt;
あるいは、{{pkg|nftables}} のユーザーは、{{ic|/etc/nftables.conf}} を変更できます (そして、{{ic|nft -f /etc/nftables.conf}} で再ロードします。設定が正しいかどうかを確認してください) {{ic|nft -cf /etc/nftables.conf}} これでコンテナがインターネットにアクセスできるようになります ({{ic|&amp;quot;eth0&amp;quot;}} を、インターネットにアクセスできるシステム上のデバイスに置き換えます。 {{ic|ip link}} を使用して既存のデバイスをリストします):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/nftables.conf|&lt;br /&gt;
table inet filter {&lt;br /&gt;
  chain input {&lt;br /&gt;
    ...&lt;br /&gt;
    iifname &amp;quot;lxcbr0&amp;quot; accept comment &amp;quot;Allow lxc containers&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    pkttype host limit rate 5/second counter reject with icmpx type admin-prohibited&lt;br /&gt;
    counter&lt;br /&gt;
  }&lt;br /&gt;
  chain forward {&lt;br /&gt;
    ...&lt;br /&gt;
    iifname &amp;quot;lxcbr0&amp;quot; oifname &amp;quot;eth0&amp;quot; accept comment &amp;quot;Allow forwarding from lxcbr0 to eth0&amp;quot;&lt;br /&gt;
    iifname &amp;quot;eth0&amp;quot; oifname &amp;quot;lxcbr0&amp;quot; accept comment &amp;quot;Allow forwarding from eth0 to lxcbr0&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
さらに、コンテナーは 10.0.3.x サブネット上で実行されているため、ssh、httpd などのサービスへの外部アクセスは lxc にアクティブに転送される必要があります。原則として、ホスト上のファイアウォールは、コンテナ上の予期されるポートで受信トラフィックを転送する必要があります。&lt;br /&gt;
&lt;br /&gt;
====== iptables ルールの例 ======&lt;br /&gt;
&lt;br /&gt;
このルールの目的は、lxc への ssh トラフィックを許可することです:&lt;br /&gt;
 # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2221 -j DNAT --to-destination 10.0.3.100:22&lt;br /&gt;
&lt;br /&gt;
このルールは、ポート 2221 から発信される tcp トラフィックをポート 22 の lxc の IP アドレスに転送します。&lt;br /&gt;
{{Note|ホスト上で 2221/tcp のトラフィックを許可し、lxc 上で 22/tcp のトラフィックを許可するようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
LAN 上の別の PC からコンテナーに ssh 接続するには、ポート 2221 でホストに ssh 接続する必要があります。その後、ホストはそのトラフィックをコンテナに転送します。&lt;br /&gt;
&lt;br /&gt;
 $ ssh -p 2221 host.lan&lt;br /&gt;
&lt;br /&gt;
====== ufw ルールの例 ======&lt;br /&gt;
&lt;br /&gt;
{{pkg|ufw}} を使用する場合は、これを永続化するために、{{ic|/etc/ufw/before.rules}} の最後に次の行を追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ufw/before.rules|&lt;br /&gt;
&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
-A PREROUTING -i eth0 -p tcp --dport 2221 -j DNAT --to-destination 10.0.3.100:22&lt;br /&gt;
COMMIT&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== 非 root ユーザーとしてコンテナを実行する =====&lt;br /&gt;
&lt;br /&gt;
非 root ユーザーとしてコンテナーを作成して起動するには、追加の構成を適用する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lxc/lxc-usernet}} にユーザーネットファイルを作成します。{{man|5|lxc-usernet}} によると、1 行あたりのエントリは次のとおりです。&lt;br /&gt;
&lt;br /&gt;
 user type bridge number&lt;br /&gt;
&lt;br /&gt;
コンテナを作成する必要があるユーザーを使用してファイルを設定します。ブリッジは、{{ic|/etc/default/lxc-net}} で定義されているものと同じになります。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lxc/default.conf}} のコピーが、非 root ユーザーのホームディレクトリに必要です。例: {{ic|~/.config/lxc/default.conf}} (ディレクトリを作成します) 必要に応じて)&lt;br /&gt;
&lt;br /&gt;
非 root ユーザーとしてコンテナを実行するには、{{ic|~/.local/share/}} に対する {{ic|+x}} 権限が必要です。コンテナを起動する前に、[[chmod]] を使用して変更を加えます。&lt;br /&gt;
&lt;br /&gt;
=== コンテナの作成 ===&lt;br /&gt;
特権コンテナの場合、{{ic|/usr/share/lxc/templates}} からコンテナ化するディストロに合わせてテンプレートを選択してください。Arch 以外のディストロをコンテナに入れたい場合、ディストロによってホストにパッケージを追加でインストールする必要があります:&lt;br /&gt;
* Debian ベース: {{Pkg|debootstrap}}。&lt;br /&gt;
* Fedora ベース: {{AUR|yum}}。&lt;br /&gt;
&lt;br /&gt;
{{ic|lxc-create}} を実行してコンテナを作成します。デフォルトでは LXC の root ファイルシステムは {{ic|/var/lib/lxc/CONTAINER_NAME/rootfs}} にインストールされます。例えば &amp;quot;playtime&amp;quot; という名前の Arch Linux LXC を作成:&lt;br /&gt;
 # lxc-create -n playtime -t /usr/share/lxc/templates/lxc-archlinux&lt;br /&gt;
&lt;br /&gt;
非特権コンテナを使いたい場合は {{ic|-t download}} を使用してイメージを選択してください。例:&lt;br /&gt;
 # lxc-create -n playtime -t download&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* [[haveged]] をインストールして {{ic|haveged.service}} を[[起動]]することで、セットアップ中にシステムエントロピーが作成されるまでシステムが停止するのを回避することができます。haveged を使用しない場合、GPG 鍵を作成するのにしばらく時間がかかるかもしれません。&lt;br /&gt;
* [[Btrfs]] を使っている場合 {{ic|-B btrfs}} を追加することでコンテナ化した rootfs を保存するための Btrfs サブボリュームを作成することができます。{{ic|lxc-clone}} コマンドを使ってコンテナを複製するときに便利です。[[ZFS]] ユーザーは {{ic|-B zfs}} が使えます。}}&lt;br /&gt;
&lt;br /&gt;
=== コンテナの設定 ===&lt;br /&gt;
&lt;br /&gt;
以下の例は特権コンテナと非特権コンテナどちらでも同じように使えます非特権コンテナの場合、{{ic|1=lxc.idmap = u 0 100000 65536}} and the {{ic|1=lxc.idmap = g 0 100000 65536}} values optionally defined in the [[#非特権コンテナのサポートを有効化 (任意)]]セクションで定義した {{ic|1=lxc.idmap = u 0 100000 65536}} や {{ic|1=lxc.idmap = g 0 100000 65536}} などの値がデフォルトで存在するはずです。&lt;br /&gt;
&lt;br /&gt;
==== ネットワークの基本設定 ====&lt;br /&gt;
&lt;br /&gt;
{{Note|lxc-1:2.1.0-1 から、設定オプションの多くが変わりました。既存のコンテナはアップデートする必要があります。変更については [https://discuss.linuxcontainers.org/t/lxc-2-1-has-been-released/487 v2.1 リリースノート] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
プロセスが {{ic|/var/lib/lxc/CONTAINER_NAME/config}} に定義されたコンテナを使う場合、システムリソースは仮想化され分離されます。デフォルトでは、作成プロセスはネットワークサポートを省いた最小限のセットアップを作成します。以下はネットワークを設定する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/var/lib/lxc/playtime/config|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Template used to create this container: /usr/share/lxc/templates/lxc-archlinux&lt;br /&gt;
# Parameters passed to the template:&lt;br /&gt;
# For additional config options, please look at lxc.container.conf(5)&lt;br /&gt;
&lt;br /&gt;
## default values&lt;br /&gt;
lxc.rootfs.path = /var/lib/lxc/playtime/rootfs&lt;br /&gt;
lxc.uts.name = playtime&lt;br /&gt;
lxc.arch = x86_64&lt;br /&gt;
lxc.include = /usr/share/lxc/config/archlinux.common.conf&lt;br /&gt;
&lt;br /&gt;
## network&lt;br /&gt;
lxc.net.0.type = veth&lt;br /&gt;
lxc.net.0.link = br0&lt;br /&gt;
lxc.net.0.flags = up&lt;br /&gt;
lxc.net.0.name = eth0&lt;br /&gt;
lxc.net.0.hwaddr = ee:ec:fa:e9:56:7d&lt;br /&gt;
# uncomment the next two lines if static IP addresses are needed&lt;br /&gt;
# leaving these commented will imply DHCP networking&lt;br /&gt;
#&lt;br /&gt;
#lxc.net.0.ipv4.address = 192.168.0.3/24&lt;br /&gt;
#lxc.net.0.ipv4.gateway = 192.168.0.1&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|lxc.network.hwaddr エントリは任意です。省略した場合、自動的にランダムな MAC アドレスが作成されます。コンテナの MAC アドレスを定義することで DHCP サーバーからコンテナの NIC に常に同じ IP を割り当てることが可能になります。}}&lt;br /&gt;
&lt;br /&gt;
==== コンテナの中でマウント ====&lt;br /&gt;
特権コンテナの場合、ホストでディレクトリを選択してコンテナにバインドマウントすることができます。同一アーキテクチャをコンテナ化している場合にホストとコンテナで pacman のパッケージを共有するなどの使用方法が考えられます。また、共有ディレクトリとして使用することもできます。構文は以下の通りです:&lt;br /&gt;
&lt;br /&gt;
 lxc.mount.entry = /var/cache/pacman/pkg var/cache/pacman/pkg none bind 0 0&lt;br /&gt;
&lt;br /&gt;
{{Note|非特権コンテナを使っている場合、ホスト側でファイルシステムのパーミッションを修正しないと上記の設定は機能しません。}}&lt;br /&gt;
&lt;br /&gt;
==== Xorg プログラムの設定 (任意) ====&lt;br /&gt;
ホストのディスプレイでプログラムを動かしたい場合、コンテナ化されたプログラムがホストのリソースにアクセスできるようにバインドマウントを定義する必要があります。{{ic|/var/lib/lxc/playtime/config}} に以下のセクションを追加してください:&lt;br /&gt;
 ## for xorg&lt;br /&gt;
 lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir&lt;br /&gt;
 lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir&lt;br /&gt;
 lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,optional,create=dir,ro&lt;br /&gt;
 lxc.mount.entry = /dev/video0 dev/video0 none bind,optional,create=file&lt;br /&gt;
&lt;br /&gt;
LXC のゲスト側に permission denied エラーが表示される場合、ホスト側で {{ic|xhost +}} を実行してゲストからホストのディスプレイサーバーに接続できるようにする必要があります。このようにディスプレイサーバーを開くことはセキュリティ上問題があるので注意してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|上記の設定は非特権コンテナでは機能しません。}}&lt;br /&gt;
&lt;br /&gt;
==== OpenVPN の設定 ====&lt;br /&gt;
&lt;br /&gt;
コンテナで [[OpenVPN]] を実行したい場合は [[Linux コンテナ/VPN の使用]]の記事を読んで下さい。&lt;br /&gt;
&lt;br /&gt;
== コンテナの管理 ==&lt;br /&gt;
=== 基本的な使用方法 ===&lt;br /&gt;
インストール済みの LXC コンテナを確認するには:&lt;br /&gt;
 # lxc-ls -f&lt;br /&gt;
&lt;br /&gt;
Systemd で {{ic|lxc@CONTAINER_NAME.service}} を使うことで LXC を[[起動]]したり[[systemd#ユニットを使う|停止]]することができます。{{ic|lxc@CONTAINER_NAME.service}} を[[有効化]]するとホストシステムの起動時に LXC が立ち上がるようになります。&lt;br /&gt;
&lt;br /&gt;
systemd を使わずに LXC を起動・停止することも可能です。コンテナを起動:&lt;br /&gt;
 # lxc-start -n CONTAINER_NAME&lt;br /&gt;
&lt;br /&gt;
コンテナを停止:&lt;br /&gt;
 # lxc-stop -n CONTAINER_NAME&lt;br /&gt;
&lt;br /&gt;
コンテナにログインするには:&lt;br /&gt;
 # lxc-console -n CONTAINER_NAME&lt;br /&gt;
&lt;br /&gt;
ログイン時に pts/0 と lxc/tty1 が表示される場合:&lt;br /&gt;
 # lxc-console -n CONTAINER_NAME -t 0&lt;br /&gt;
&lt;br /&gt;
ログインしたら、他の linux システムと同じようにコンテナを扱って、root パスワードを設定し、ユーザーを作成、パッケージのインストールなどを行って下さい。&lt;br /&gt;
&lt;br /&gt;
コンテナにアタッチ:&lt;br /&gt;
 # lxc-attach -n CONTAINER_NAME --clear-env&lt;br /&gt;
&lt;br /&gt;
lxc-console とほぼ同じですが、自動的にログインを通り越してコンテナの中の root プロンプトにアクセスします。{{ic| --clear-env}} フラグを指定しなかった場合、ホストは環境変数をコンテナに渡します ({{ic|$PATH}} など、コンテナが他のディストリビューションの場合、一部のコマンドが機能しなくなる可能性があります)。&lt;br /&gt;
&lt;br /&gt;
=== 高度な使用方法 ===&lt;br /&gt;
&lt;br /&gt;
==== LXC の複製 ====&lt;br /&gt;
同じコンテナを複数実行する必要があるときはスナップショットを使うことで管理を簡単にできます。最新状態にしておくベースコンテナをひとつだけセットアップして、それを必要に応じて複製 (スナップショットを作成) するという方法です。スナップショットは overlayfs を使用してデータの差異部分だけをディスクに書き込むためディスク容量を節約してオーバーヘッドをなくすことができます。ベースシステムは読み取り専用にしてスナップショットにのみ overlayfs で変更を加えられるようにします。&lt;br /&gt;
&lt;br /&gt;
欠点としてスナップショットを作成しているときにベースの lxc を実行することはできません。&lt;br /&gt;
&lt;br /&gt;
上に書いているようにコンテナをセットアップしたら &amp;quot;base&amp;quot; と名前を付けます。以下のコマンドで &amp;quot;base&amp;quot; コンテナのスナップショット (&amp;quot;snap1&amp;quot; と &amp;quot;snap2&amp;quot;) を作成します:&lt;br /&gt;
 # lxc-copy -n base -N snap1 -B overlayfs -s&lt;br /&gt;
 # lxc-copy -n base -N snap2 -B overlayfs -s&lt;br /&gt;
&lt;br /&gt;
{{Note|ベースの lxc で固定 IP を使っている場合、&amp;quot;snap1&amp;quot; や &amp;quot;snap2&amp;quot; を起動する前にネットワーク設定を手動で変更する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
スナップショットは他のコンテナと同じように起動・停止できます。以下のコマンドでスナップショットを削除できます (ベースの lxc に変更は加えられません):&lt;br /&gt;
 # lxc-destroy -n snap1 -f&lt;br /&gt;
&lt;br /&gt;
[[pi-hole]] と [[OpenVPN]] のスナップショットを管理する systemd ユニットとラッパースクリプトが {{AUR|lxc-snapshots}}{{Broken package link|パッケージが存在しません}} パッケージでインストールできます。&lt;br /&gt;
&lt;br /&gt;
=== 特権コンテナを非特権コンテナに変換 ===&lt;br /&gt;
非特権コンテナを使うようにシステムを設定したら ([[#非特権コンテナのサポートを有効化 (任意)]] を参照), {{AUR|nsexec-bzr}} に含まれている {{ic|uidmapshift}} という名前のユーティリティで既存の特権コンテナを非特権コンテナに変換できます。イメージの再ビルドは不要です。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* ユーティリティを使用する前に既存のイメージをバックアップすることを推奨します。&lt;br /&gt;
* ユーティリティは [[ACL]] の UID と GID をシフトしません。手動でシフトする必要があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
以下のようにコマンドを実行することで変換できます:&lt;br /&gt;
 # uidmapshift -b /var/lib/lxc/foo 0 100000 65536&lt;br /&gt;
&lt;br /&gt;
利用可能なオプションは引数を付けずに {{ic|uidmapshift}} を実行することで確認可能です。&lt;br /&gt;
&lt;br /&gt;
== Xorg プログラムの実行 ==&lt;br /&gt;
対象のコンテナにアタッチまたは [[SSH]] でログインしてホストの X セッションの DISPLAY ID をプログラムを呼び出すときに指定します。ほとんどの場合、ディスプレイは常時 0 です。&lt;br /&gt;
&lt;br /&gt;
ホストのディスプレイでコンテナから Firefox を起動する例:&lt;br /&gt;
 $ DISPLAY=:0 firefox&lt;br /&gt;
&lt;br /&gt;
もしくは、直接コンテナにアタッチしたり接続する代わりに、以下のコマンドを使って自動的にホストにディスプレイを設定することもできます:&lt;br /&gt;
 # lxc-attach -n playtime --clear-env -- sudo -u YOURUSER env DISPLAY=:0 firefox&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== root ログインが失敗する ===&lt;br /&gt;
&lt;br /&gt;
lxc-console を使ってログインしようとすると以下のエラーが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 login: root&lt;br /&gt;
 Login incorrect&lt;br /&gt;
&lt;br /&gt;
そしてコンテナの {{ic|journalctl}} で以下のように表示される場合:&lt;br /&gt;
&lt;br /&gt;
 pam_securetty(login:auth): access denied: tty &#039;pts/0&#039; is not secure !&lt;br /&gt;
&lt;br /&gt;
コンテナのファイルシステムにある {{ic|/etc/securetty}} のターミナル名のリストに {{ic|pts/0}} を追加してください。[https://unix.stackexchange.com/questions/41840/effect-of-entries-in-etc-securetty/41939#41939] を参照。コンテナの {{ic|/etc/securetty}} を削除することで常時 root ログインを許可することもできます。[https://github.com/systemd/systemd/issues/852] を参照。&lt;br /&gt;
&lt;br /&gt;
もしくは、lxc-attach に新しいユーザーを作成してシステムにログインするときに使うようにして、それから root に切り替えて下さい。&lt;br /&gt;
&lt;br /&gt;
 # lxc-attach -n playtime&lt;br /&gt;
 [root@playtime]# useradd -m -Gwheel newuser&lt;br /&gt;
 [root@playtime]# passwd newuser&lt;br /&gt;
 [root@playtime]# passwd root&lt;br /&gt;
 [root@playtime]# exit&lt;br /&gt;
 # lxc-console -n playtime&lt;br /&gt;
 [newuser@playtime]$ su&lt;br /&gt;
&lt;br /&gt;
===コンテナ設定の veth でネットワークに接続できない===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lxc/&#039;&#039;containername&#039;&#039;/config}} で設定した &#039;&#039;&#039;veth&#039;&#039;&#039; ネットワークインターフェイスで LAN や WAN に接続できないことがあります。仮想インターフェイスには IP が割り当てられてネットワークに接続できるようになっている場合:&lt;br /&gt;
 ip addr show veth0 &lt;br /&gt;
 inet 192.168.1.111/24&lt;br /&gt;
固定 IP の設定を全て無効化して、起動したコンテナ OS の中から普通の方法で IP を設定してみてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;container&#039;&#039;/config}} の例:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 lxc.net.0.type = veth&lt;br /&gt;
 lxc.net.0.name = veth0&lt;br /&gt;
 lxc.net.0.flags = up&lt;br /&gt;
 lxc.net.0.link = {{ic|bridge}}&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
コンテナの中から IP を割り当てる方法は[[ネットワーク設定#IP アドレスの設定]]を参照。&lt;br /&gt;
&lt;br /&gt;
=== Error: unknown command ===&lt;br /&gt;
&lt;br /&gt;
ホスト環境とは異なる Linux ディストリビューションのコンテナ (例えば Arch Linux ホスト環境の Debian コンテナ) に接続して基本的なコマンド (&#039;&#039;ls&#039;&#039;, &#039;&#039;cat&#039;&#039; など) を入力する発生することがあるエラーです。接続時に {{ic|--clear-env}} 引数を使ってください:&lt;br /&gt;
&lt;br /&gt;
 # lxc-attach -n &#039;&#039;container_name&#039;&#039; --clear-env&lt;br /&gt;
&lt;br /&gt;
=== Error: Failed at step KEYRING spawning... ===&lt;br /&gt;
&lt;br /&gt;
特権のないコンテナ内のサービスが失敗し、次のメッセージが表示される場合がある&lt;br /&gt;
&lt;br /&gt;
 some.service: Failed to change ownership of session keyring: Permission denied&lt;br /&gt;
 some.service: Failed to set up kernel keyring: Permission denied&lt;br /&gt;
 some.service: Failed at step KEYRING spawning ....: Permission denied&lt;br /&gt;
&lt;br /&gt;
次の内容を含むファイル {{ic|/etc/lxc/unpriv.seccomp}} を作成します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lxc/unpriv.seccomp|&lt;br /&gt;
2&lt;br /&gt;
blacklist&lt;br /&gt;
[all]&lt;br /&gt;
keyctl errno 38}}&lt;br /&gt;
&lt;br /&gt;
次に、次の行をコンテナ設定 lxc.idmap &#039;&#039;&#039;の後&#039;&#039;&#039; に追加します。&lt;br /&gt;
&lt;br /&gt;
 lxc.seccomp.profile = /etc/lxc/unpriv.seccomp&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
&lt;br /&gt;
=== lxc.init.static が欠落しているため lxc-execute が失敗する ===&lt;br /&gt;
&lt;br /&gt;
{{ic|lxc-execute}} はエラーメッセージ {{ic|lxc.init.static}} を表示して失敗する場合。{{Bug|63814}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|lxc-start}} を使用してコンテナを起動すると、正常に動作します。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.stgraber.org/2013/12/20/lxc-1-0-blog-post-series/ LXC 1.0 Blog Post Series]&lt;br /&gt;
* [https://www.ibm.com/developerworks/linux/library/l-lxc-containers/ LXC@developerWorks]&lt;br /&gt;
* [http://docs.docker.io/en/latest/installation/archlinux/ Docker Installation on ArchLinux]&lt;br /&gt;
* [http://l3net.wordpress.com/tag/lxc/ LXC articles on l3net]&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Docker&amp;diff=38621</id>
		<title>Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Docker&amp;diff=38621"/>
		<updated>2024-08-20T10:43:17Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: /* Rootless Docker デーモン */  誤字脱字修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[Category:サンドボックス]]&lt;br /&gt;
[[en:Docker]]&lt;br /&gt;
[[ru:Docker]]&lt;br /&gt;
[[zh-hans:Docker]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|systemd-nspawn}}&lt;br /&gt;
{{Related|Linux Containers}}&lt;br /&gt;
{{Related|Vagrant}}&lt;br /&gt;
{{Related|Podman}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[[Wikipedia:ja:Docker|Docker]] は軽量コンテナとしてあらゆるアプリケーションを詰めて運んで実行できるユーティリティです。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Docker イメージを pull し Docker コンテナを実行するには、Docker Engine が必要です。Docker Engine には、コンテナを管理するデーモンや {{ic|docker}} CLI フロントエンドが含まれています。{{Pkg|docker}} パッケージを[[インストール]]してください。開発版は {{Aur|docker-git}} パッケージを[[インストール]]してください。次に、{{ic|docker.service}} を[[起動/有効化]]して、動作することを確認してください:&lt;br /&gt;
&lt;br /&gt;
 # docker info&lt;br /&gt;
&lt;br /&gt;
アクティブな vpn 接続がある場合、docker サービスの起動に失敗することがあることに注意してください。VPN と Docker のブリッジネットワークやオーバーレイネットワークの間で IP が競合するからです。このような場合、docker サービスの起動前に vpn を切断してみてください。その後すぐに vpn に再接続できます。ネットワークの衝突解除を試してみることも可能です (解決策については、 [https://stackoverflow.com/questions/45692255/how-make-openvpn-work-with-docker] や [https://github.com/docker/compose/issues/4336#issuecomment-457326123] をご覧ください)。&lt;br /&gt;
&lt;br /&gt;
次に、コンテナが動作することを検証します。次のコマンドは、最新の [[#Arch Linux|Arch Linux イメージ]]をダウンロードし、そのイメージを使ってコンテナの中で Hello World プログラムを実行します:&lt;br /&gt;
&lt;br /&gt;
 # docker run -it --rm archlinux bash -c &amp;quot;echo hello world&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|docker}} CLI コマンドを非 root ユーザとして実行できるようにしたい場合は、ユーザーを {{ic|docker}} [[グループ]]に追加して、ログインし直し、{{ic|docker.service}} を再起動してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|ユーザーを {{ic|docker}} グループに追加することは、そのユーザーを root にするのと等価です。なぜなら、そのグループに属するユーザーは {{ic|docker run --privileged}} コマンドを実行して、コンテナを root 権限で開始することができるからです。詳しくは [https://github.com/docker/docker/issues/9976 こちら] や [https://docs.docker.com/engine/security/security/ こちら] ([https://docs.docker.jp/engine/security/security.html 日本語訳ページ]) を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== Docker Compose ===&lt;br /&gt;
&lt;br /&gt;
[https://docs.docker.com/compose/ Docker Compose] ([https://docs.docker.jp/compose/ 日本語訳ページ]) は Docker Engine の代替 CLI フロントエンドです。(例として) {{ic|docker run}} のオプションを使うスクリプトではなく、{{ic|docker-compose.yml}} [[Wikipedia:ja:YAML|YAML]] ファイルを使ってコンテナのプロパティを指定します。これは、しばしば使用されたり複雑な設定を持っていたりするサービスを何度も設定する際に便利です。Docker Compose を使うには、{{Pkg|docker-compose}} を[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
=== Docker Desktop ===&lt;br /&gt;
&lt;br /&gt;
[https://www.docker.com/products/docker-desktop/ Docker Desktop] は、Linux 仮想マシン内で Docker Engine を実行するプロプライエタリなデスクトップアプリケーションです。Kubernetes クラスタや脆弱性スキャナなどの追加の機能が含まれています。このアプリケーションは、macOS や Windows を使って Docker コンテナを開発するソフトウェア開発チームにとって便利です。このアプリケーションの Linux 移植は比較的新しく、Docker の CLI フロントエンドを補完します [https://www.docker.com/blog/the-magic-of-docker-desktop-is-now-available-on-linux/]。Arch 向けの実験的なパッケージは Docker によって直接提供されています; 詳細は [https://docs.docker.com/desktop/linux/install/archlinux/ マニュアル] ([https://docs.docker.jp/desktop/install/archlinux.html 日本語訳ページ]) を見てください。残念ながら、そのパッケージには {{Pkg|docker-compose}} パッケージと衝突するファイルが含まれているため、{{Pkg|docker-compose}} がインストールされている場合はまずそれを削除する必要があります。&lt;br /&gt;
&lt;br /&gt;
また、[https://www.docker.com/products/docker-desktop/ Docker Desktop] を実行するには、[https://docs.docker.com/desktop/install/linux-install/ Linux システム要件] ([https://docs.docker.jp/desktop/install/linux-install.html 日本語訳ページ]) を満たしている必要があります (要件には [[KVM]] による仮想化サポートが含まれています)。Gnome でのトレイアイコンを有効化するには、{{Pkg|gnome-shell-extension-appindicator}} が必要です。&lt;br /&gt;
&lt;br /&gt;
最後に、ファイル共有サポートは、ユーザとグループの id を {{ic|/etc/subuid}} と {{ic|/etc/subgid}} を通してマッピングする必要があります。詳細は [https://docs.docker.com/desktop/faqs/linuxfaqs/#how-do-i-enable-file-sharing Docker Desktop For Linux のファイル共有に関する指示書] ([https://docs.docker.jp/desktop/install/linux-install.html#linux-install-file-sharing 日本語訳ページ]) を見てください。&lt;br /&gt;
&lt;br /&gt;
== 使用法 ==&lt;br /&gt;
&lt;br /&gt;
Docker は複数のパーツから成ります:&lt;br /&gt;
&lt;br /&gt;
* Docker デーモン (Docker Engine とも呼ばれています)。{{ic|docker.service}} として実行されるプロセスです。Docker API を提供し、Docker コンテナを管理します。&lt;br /&gt;
* {{ic|docker}} CLI コマンド。ユーザがコマンドラインを通して Docker API と対話し、Docker デーモンを管理できるようにします。&lt;br /&gt;
* Docker コンテナ。Docker API を通して要求された通りに Docker デーモンが起動・管理する、名前空間で隔離されたプロセスです。&lt;br /&gt;
&lt;br /&gt;
通常、ユーザは {{ic|docker}} CLI コマンドを実行することで Docker を使用します。コマンドは Docker デーモンにアクションの実行を要求し、Docker コンテナを管理します。クライアント ({{ic|docker}})、サーバ ({{ic|docker.service}})、コンテナ間の関係を理解することは、Docker を正しく管理するために重要です。&lt;br /&gt;
&lt;br /&gt;
Docker デーモンが停止/再起動した場合、現在実行中の Docker コンテナもすべて停止/再起動されることに注意してください。&lt;br /&gt;
&lt;br /&gt;
Docker API にリクエストを送信して、{{ic|docker}} CLI コマンドを使わずに Docker デーモンを制御することも可能です。詳細は [https://docs.docker.com/engine/api/ Docker API 開発ドキュメント]を見てください。&lt;br /&gt;
&lt;br /&gt;
使用法に関するドキュメントは [https://docs.docker.com/get-started/ the Docker Getting Started guide] ([https://docs.docker.jp/get-started/index.html 日本語訳ページ]) を見てください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
設定ファイル {{ic|/etc/docker/daemon.json}} を使うか、{{ic|docker.service}} systemd ユニットにコマンドラインフラグを追加することで、Docker デーモンを設定することができます。[https://docs.docker.com/config/daemon/#configure-the-docker-daemon Docker 公式ドキュメント] ([https://docs.docker.jp/config/daemon/daemon.html#configure-the-docker-daemon 日本語訳ページ]) によると、設定ファイルによる方法が推奨されています。コマンドラインフラグの方を使いたい場合は、[[ドロップインファイル|systemd のドロップインファイル]] を使って、{{ic|docker.service}} の {{ic|ExecStart}} ディレクティブを上書きしてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|daemon.json}} のオプションに関する詳細は、[https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file dockerd のドキュメント] ([https://docs.docker.jp/engine/reference/commandline/dockerd.html#daemon-configuration-file 日本語訳ページ]) を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ストレージドライバー ===&lt;br /&gt;
&lt;br /&gt;
[https://docs.docker.com/storage/storagedriver/select-storage-driver/ ストレージドライバー] ([https://docs.docker.jp/storage/storagedriver/select-storage-driver.html 日本語訳ページ]) は、Docker ホスト上でイメージとコンテナをどのように格納し管理するかを制御します。デフォルトの {{ic|overlay2}} ドライバはパフォーマンスが良く、最近の Linux カーネルとファイルシステムすべてで良い選択肢です。古い Linux カーネルとの互換性のために {{ic|devicemapper}} や {{ic|aufs}} などのレガシーなドライバがありますが、Arch Linux の {{ic|overlay2}} ではなくこれらを使う利点はありません。&lt;br /&gt;
&lt;br /&gt;
[[btrfs]] や [[ZFS]] のユーザは {{ic|btrfs}} や {{ic|zfs}} のドライバを使用できます。それぞれのドライバは、これらのファイルシステムのユニークな機能を活用します。詳細とステップ・バイ・ステップの説明は [https://docs.docker.com/storage/storagedriver/btrfs-driver/ btrfs ドライバ] ([https://docs.docker.jp/storage/storagedriver/btrfs-driver.html 日本語訳ページ]) と [https://docs.docker.com/storage/storagedriver/zfs-driver/ zfs ドライバ] ([https://docs.docker.jp/storage/storagedriver/zfs-driver.html 日本語訳ページ]) のドキュメントを見てください。&lt;br /&gt;
&lt;br /&gt;
=== デーモンのソケット ===&lt;br /&gt;
&lt;br /&gt;
デフォルトで、Docker デーモンは [[Wikipedia:ja:UNIXドメインソケット|Unix ソケット]] {{ic|/var/run/docker.sock}} を用いて Docker API を提供します。ほとんどの場合、この方法は適切です。&lt;br /&gt;
&lt;br /&gt;
さらに TCP ソケットをリッスンするようにデーモンを設定できます。これにより、他のコンピュータからリモートで Docker API にアクセスできるようになります [https://docs.docker.com/engine/install/linux-postinstall/#allow-access-to-the-remote-api-through-a-firewall]。そうすることで、ホストマシン上の {{ic|docker}} コマンドから Linux 仮想マシン (Windows や macOS システム上の Arch 仮想マシン) 上の Docker デーモンにアクセスできるようになり、便利です。&lt;br /&gt;
&lt;br /&gt;
{{Warning|デフォルトで Docker API は暗号化も認証もされません。TLS 暗号化や認証が有効化されていなかったり、認証 HTTP リバースプロキシや適切な[https://docs.docker.com/engine/security/https/ Docker の追加設定] ([https://docs.docker.jp/engine/security/https.html 日本語訳ページ]) がなされていなかったりした場合、Docker デーモンへのリモート TCP アクセスは安全でない root アクセスと等価です。一般に、Docker API の TCP ソケットを有効化することは、セキュリティ上、高リスクであるとみなすべきです。}}&lt;br /&gt;
&lt;br /&gt;
デフォルトの {{ic|docker.service}} ファイルは {{ic|-H}} フラグをデフォルトでセットします。そして、フラグと {{ic|/etc/docker/daemon.json}} ファイルの両方にオプションが存在する場合、Docker は起動しません。なので、ソケットの設定を変更する最も単純な方法は、[[ドロップインファイル]]を使うことです。以下は、ポート 2376 上に TCP ソケットを追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/docker.service.d/docker.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376 &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
systemd デーモンを[[リロード]]し、{{ic|docker.service}} を[[再起動]]して変更を適用してください。&lt;br /&gt;
&lt;br /&gt;
=== HTTP プロキシ ===&lt;br /&gt;
&lt;br /&gt;
HTTP プロキシを使うために設定すべきなのは、Docker デーモンと Docker コンテナです。&lt;br /&gt;
&lt;br /&gt;
==== Docker デーモンのプロキシ設定 ====&lt;br /&gt;
&lt;br /&gt;
[https://docs.docker.com/config/daemon/systemd/#httphttps-proxy HTTP プロキシを設定するための systemd ドロップインユニットの設定に関する Docker ドキュメント] ([https://docs.docker.jp/config/daemon/systemd.html#http-https 日本語訳ページ]) を見てください。&lt;br /&gt;
&lt;br /&gt;
==== Docker コンテナのプロキシ設定 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|docker}} CLI を使用して作成されたすべてのコンテナに対してプロキシを自動で設定する方法は [https://docs.docker.com/network/proxy/#configure-the-docker-client プロキシ設定に関する Docker ドキュメント] ([https://docs.docker.jp/network/proxy.html#id2 日本語訳ページ]) を見てください。&lt;br /&gt;
&lt;br /&gt;
=== DNS の設定 ===&lt;br /&gt;
&lt;br /&gt;
Docker コンテナ内での DNS の動作に関するドキュメントや、DNS の設定のカスタマイズに関する情報は [https://docs.docker.com/config/containers/container-networking/#dns-services Docker の DNS に関するドキュメント] ([https://docs.docker.jp/config/containers/container-networking.html#dns 日本語訳ページ]) を見てください。ほとんどの場合、ホストで設定されているリゾルバは、コンテナ内でも設定されています。&lt;br /&gt;
&lt;br /&gt;
{{ic|127.0.0.0/8}} でホストされている DNS リゾルバのほとんどは、コンテナとホストのネットワーク名前空間の衝突により、[https://github.com/moby/moby/issues/6388#issuecomment-76124221 サポートされていません]。そのようなリゾルバは、[https://github.com/moby/libnetwork/blob/master/resolvconf/resolvconf.go コンテナの /etc/resolv.conf から削除されます]。このせいで {{ic|/etc/resolv.conf}} が空になる場合は、Google DNS が代わりに使用されます。&lt;br /&gt;
&lt;br /&gt;
さらに、{{ic|127.0.0.53}} が、設定されている唯一のネームサーバである場合は、特殊なケースとして処理されます。この場合、Docker はリゾルバが [[systemd-resolved]] であると仮定し、{{ic|/run/systemd/resolve/resolv.conf}} にある 上流の DNS リゾルバを使用します。&lt;br /&gt;
&lt;br /&gt;
If you are using a service such as [[dnsmasq]] to provide a local resolver, consider adding a virtual interface with a link local IP address in the {{ic|169.254.0.0/16}} block for dnsmasq to bind to instead of {{ic|127.0.0.1}} to avoid the network namespace conflict.&lt;br /&gt;
&lt;br /&gt;
=== イメージの置き場所 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、docker のイメージは {{ic|/var/lib/docker}} に保存されます。置き場所は別のパーティションに移動することが可能です (例えば、イメージ用の専用のパーティションかディスクを使いたい場合)。ここでは、例として {{ic|/mnt/docker}} にイメージを移動することにします。&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|docker.service}} を[[停止]]してください。すると、現在実行中のコンテナがすべて停止され、実行中のイメージはすべてアンマウントされます。これで、イメージを {{ic|/var/lib/docker}} から目的の場所へ移動できるようになります (例: {{ic|cp -r /var/lib/docker /mnt/docker}})。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/docker/daemon.json}} 内の {{ic|data-root}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/docker/daemon.json|2=&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;data-root&amp;quot;: &amp;quot;/mnt/docker&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するために、{{ic|docker.service}} を再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== 安全ではないレジストリ ===&lt;br /&gt;
&lt;br /&gt;
プライベートレジストリに自己署名証明書を使うことにした場合、あなたが信頼すると宣言するまで Docker はその使用を拒否します。例えば、{{ic|myregistry.example.com:8443}} でホストされているレジストリのイメージを許可するには、{{ic|/etc/docker/daemon.json}} ファイル内の {{ic|insecure-registries}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/docker/daemon.json|2=&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;insecure-registries&amp;quot;: [&lt;br /&gt;
    &amp;quot;my.registry.example.com:8443&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するために {{ic|docker.service}} を再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== IPv6 ===&lt;br /&gt;
&lt;br /&gt;
Docker で IPv6 のサポートを有効化するには、いくつかやるべきことがあります。詳細は [https://github.com/docker/docker.github.io/blob/c0eb65aabe4de94d56bbc20249179f626df5e8c3/engine/userguide/networking/default_network/ipv6.md] と [https://github.com/moby/moby/issues/36954] を見てください。&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|/etc/docker/daemon.json}} で {{ic|ipv6}} の設定を有効化し、特定の IPv6 サブネットを設定してください。ここでは、プライベート {{ic|fd00::/80}} サブネットを使用します。少なくとも 80 ビット以上のサブネットを使用してください。そうすることで、コンテナの IPv6 がコンテナの MAC アドレスで終わり、NDP ネイバーキャッシュの無効化問題を軽減できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/docker/daemon.json|&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;ipv6&amp;quot;: true,&lt;br /&gt;
  &amp;quot;fixed-cidr-v6&amp;quot;: &amp;quot;fd00::/80&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するために {{ic|docker.service}} を[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
最後に、コンテナがホストネットワークにアクセスできるようにするために、プライベート IPv6 サブネットの使用に起因するルーティングの問題を解決する必要があります。実際にトラフィックを取得するために、IPv6 NAT を追加してください:&lt;br /&gt;
&lt;br /&gt;
 # ip6tables -t nat -A POSTROUTING -s fd00::/80 ! -o docker0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
これで、Docker で IPv6 が適切に有効化されているはずです。テストするには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # docker run curlimages/curl curl -v -6 archlinux.org&lt;br /&gt;
&lt;br /&gt;
以下のようなルールを追加することで、[[firewalld]] を使用できます:&lt;br /&gt;
&lt;br /&gt;
 # firewall-cmd --zone=public --add-rich-rule=&#039;rule family=&amp;quot;ipv6&amp;quot; destination not address=&amp;quot;fd00::1/80&amp;quot; source address=&amp;quot;fd00::/80&amp;quot; masquerade&#039;&lt;br /&gt;
&lt;br /&gt;
[[ufw]] を使用する場合、まず [[Uncomplicated Firewall#Forward ポリシー]] に従って ipv6 フォワーディングを有効化する必要があります。次に、{{ic|/etc/default/ufw}} を編集して、以下の行をアンコメントする必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|head=/etc/ufw/sysctl.conf|output=&lt;br /&gt;
net/ipv6/conf/default/forwarding=1&lt;br /&gt;
net/ipv6/conf/all/forwarding=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、iptables のルールを追加できます:&lt;br /&gt;
&lt;br /&gt;
 # ip6tables -t nat -A POSTROUTING -s fd00::/80 ! -o docker0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;docker-compose&#039;&#039; を使用して作成された Docker コンテナには、対応するネットワークに対して {{ic|networks}} 部で {{ic|enable_ipv6: true}} を設定する必要がある場合があります。さらに、IPv6 サブネットの設定も必要になる場合があります。詳細は [https://docs.docker.com/compose/compose-file/compose-file-v2/#ipv4_address-ipv6_address] ([https://docs.docker.jp/compose/compose-file/compose-file-v2.html#ipv4-address-ipv6-address 日本語訳ページ]) を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ユーザ名前空間の隔離 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Docker コンテナ内のプロセスはメインの {{ic|dockerd}} デーモンと同じユーザ名前空間内で実行されます。つまり、コンテナは {{man|7|user_namespaces}} の機能によって隔離されていません。これにより、[[ユーザーとグループ#パーミッションと所有権]] に従って、コンテナ内のプロセスはホスト上に構成されたリソースにアクセスできます。これは互換性を最大化しますが、ホスト上のリソースに意図せずアクセスできてしまう特権昇格や情報漏えいの脆弱性が発見された場合は、セキュリティリスクが発生してしまいます (そのような脆弱性が[https://seclists.org/oss-sec/2019/q1/119 2019年2月に公開され、パッチが適用されました])。&lt;br /&gt;
&lt;br /&gt;
そのような脆弱性による影響は、[https://docs.docker.com/engine/security/userns-remap/ ユーザ名前空間の隔離] ([https://docs.docker.jp/engine/security/userns-remap.html 日本語訳ページ]) を有効化することで軽減できます。これは、それぞれのコンテナを別のユーザ名前空間内で実行し、ユーザ名前空間内の UID と GID をホスト上の (通常は非特権の) 異なる UID/GID 範囲に割り当てます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* メインの {{ic|dockerd}} デーモンは依然としてホスト上で {{ic|root}} として実行されます。Docker を [https://docs.docker.com/engine/security/rootless/ rootless モード] ([https://docs.docker.jp/engine/security/rootless.html 日本語訳ページ]) で実行するのは、これとは別の機能です。&lt;br /&gt;
* コンテナ内のプロセスは、コンテナのイメージをビルドするために使用された Dockerfile 内の [https://docs.docker.com/engine/reference/builder/#user USER] ([https://docs.docker.jp/engine/reference/builder.html#user 日本語訳ページ]) ディレクティブで定義されているユーザとして起動されます。&lt;br /&gt;
* すべてのコンテナは、同じ UID/GID 範囲に割り当てられます。これにより、コンテナ間でボリュームを共有できることが保証されます。&lt;br /&gt;
* ユーザ名前空間の隔離の有効化には、[https://docs.docker.com/engine/security/userns-remap/#user-namespace-known-limitations いくつかの制限] ([https://docs.docker.jp/engine/security/userns-remap.html#user-namespace-known-limitations 日本語訳ページ]) があります。&lt;br /&gt;
* ユーザ名前空間の隔離を有効化すると、{{ic|/var/lib/docker/}} にある他の Docker オブジェクトだけでなく、既存のイメージやコンテナのレイヤーも効果的にマスクします。Docker はこれらのリソースの所有権を調整する必要があるからです。上流のドキュメントでは、既存の Docker 環境ではなく、新しい Docker 環境でこの機能を有効化することが推奨されています。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/docker/daemon.json}} 内の {{ic|userns-remap}} を設定してください。{{ic|default}} は特殊な値で、再割当てによって {{ic|dockremap}} という名前のユーザとグループを自動的に作成します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/docker/daemon.json|2=&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;userns-remap&amp;quot;: &amp;quot;default&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/subuid}} と {{ic|/etc/subgid}} で、ユーザ名/グループ名、再割当てユーザとグループに割り当てる開始 UID/GID と UID/GID 範囲サイズを設定してください。以下の例では、165536 から始まる、範囲 65536 の UID と GID を {{ic|dockremap}} ユーザ・グループに割り当てます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/subuid|dockremap:165536:65536}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/subgid|dockremap:165536:65536}}&lt;br /&gt;
&lt;br /&gt;
設定を適用するために {{ic|docker.service}} を[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
この変更を適用したあと、デフォルトですべてのコンテナは隔離されたユーザ名前空間内で実行されます。{{ic|docker}} コマンドに {{ic|1=--userns=host}} フラグを渡すことで、特定のコンテナ上で再割当てを部分的に無効化できます。詳細は [https://docs.docker.com/engine/security/userns-remap/#disable-namespace-remapping-for-a-container] ([https://docs.docker.jp/engine/security/userns-remap.html#disable-namespace-remapping-for-a-container 日本語訳ページ]) を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Rootless Docker デーモン ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Docker rootless は、非特権ユーザの名前空間 ({{ic|CONFIG_USER_NS_UNPRIVILEGED}}) に依存しています。これは、{{Pkg|linux}}、{{Pkg|linux-lts}}、そして {{Pkg|linux-zen}} でデフォルトで有効化されています。他のカーネルのユーザはこれを有効化する必要があるかもしれません。これはセキュリティ上、重要な意味を持ちます。詳細については、[[セキュリティ#アプリケーションのサンドボックス化]] をご覧ください。}}&lt;br /&gt;
&lt;br /&gt;
Docker デーモン自体を通常ユーザとして実行するには、{{aur|docker-rootless-extras}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/subuid}} と {{ic|/etc/subgid}} に ユーザ名/グループ名、開始 UID/GID、そして UID/GID 範囲を設定し、再割り当てユーザ/グループに割り当てます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/subuid|your_username:165536:65536}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/subgid|your_username:165536:65536}}&lt;br /&gt;
&lt;br /&gt;
{{ic|docker.socket}} [[Systemd/ユーザー|ユーザユニット]] を [[有効化]]します。これにより、docker は systemd の socket activation を利用して開始されます。&lt;br /&gt;
&lt;br /&gt;
最後に docker ソケットの[[環境変数]]を設定します:&lt;br /&gt;
&lt;br /&gt;
 $ export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock&lt;br /&gt;
&lt;br /&gt;
=== ネイティブ overlay diff エンジンを有効化する ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|これはあなたのシステムでは必要ないかもしれません。{{ic|1=metacopy=on redirect_dir=on}} は Arch Linux カーネルでデフォルトとなっていますが、これらの設定は実行時に無効化されると一部のユーザが報告しています。}}&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Docker は Arch Linux 上でネイティブの overlay diff エンジンを使用できません。これにより、Docker イメージのビルドが遅くなります。頻繁にイメージをビルドする場合は、[https://mikeshade.com/posts/docker-native-overlay-diff/] で説明されているようにネイティブの diff エンジンを設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/disable-overlay-redirect-dir.conf|2=&lt;br /&gt;
options overlay metacopy=off redirect_dir=off&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|docker.service}} を[[停止]]し、以下のように {{ic|overlay}} モジュールを再読込してください:&lt;br /&gt;
&lt;br /&gt;
 # modprobe -r overlay&lt;br /&gt;
 # modprobe overlay&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|docker.service}} を再[[起動]]してください。 &lt;br /&gt;
&lt;br /&gt;
確認するには、{{ic|docker info}} を実行して、{{ic|Native Overlay Diff}} が {{ic|true}} になっているかどうか見てください。&lt;br /&gt;
&lt;br /&gt;
== イメージ ==&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドは [https://hub.docker.com/_/archlinux/ archlinux] x86_64 イメージを pull します。これはネットワークなどを落とした Arch コア環境です:&lt;br /&gt;
&lt;br /&gt;
 # docker pull archlinux&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.archlinux.org/archlinux/archlinux-docker/blob/master/README.md README.md] も見てください。&lt;br /&gt;
&lt;br /&gt;
完全な Arch ベースは、上記からリポジトリを clone し、独自のイメージをビルドしてください。&lt;br /&gt;
&lt;br /&gt;
 $ git clone https://gitlab.archlinux.org/archlinux/archlinux-docker.git&lt;br /&gt;
&lt;br /&gt;
パッケージ {{Pkg|devtools}}、{{Pkg|fakechroot}}、{{Pkg|fakeroot}} はインストールされていることに注意してください。&lt;br /&gt;
&lt;br /&gt;
ベースイメージをビルドするには:&lt;br /&gt;
&lt;br /&gt;
 $ make image-base&lt;br /&gt;
&lt;br /&gt;
=== Alpine Linux ===&lt;br /&gt;
&lt;br /&gt;
[https://www.alpinelinux.org/ Alpine Linux] は、(特に静的バイナリとしてコンパイルされたソフトウェアための) 小さなコンテナイメージとして人気の選択肢です。以下のコマンドは最新の Alpine Linux イメージを pull します:&lt;br /&gt;
&lt;br /&gt;
 # docker pull alpine&lt;br /&gt;
&lt;br /&gt;
Alpine Linux は、ほとんどの Linux ディストリビューションで使用されている [https://www.gnu.org/software/libc/ glibc] libc 実装ではなく、[https://musl.libc.org/ musl] libc 実装を使用します。Arch Linux は glibc を使用するので、Arch Linux ホストと Alpine Linux コンテナの間には機能的な違いが一定数存在し、ソフトウェアのパフォーマンスと正確性に影響を与えます。これらの違いのリストは、[https://wiki.musl-libc.org/functional-differences-from-glibc.html ここ]でドキュメント化されています。&lt;br /&gt;
&lt;br /&gt;
Arch Linux (または glibc を使用する他のシステム) でビルドされた動的リンクのソフトウェアは、Alpine Linux (または異なる libc を使用する他のシステム) 上で実行すると、バグとパフォーマンス上の問題を生じる場合があります。例は、[https://bugs.python.org/issue32307]、[https://superuser.com/questions/1219609/why-is-the-alpine-docker-image-over-50-slower-than-the-ubuntu-image]、[https://pythonspeed.com/articles/alpine-docker-python] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Debian ===&lt;br /&gt;
&lt;br /&gt;
次のコマンドは最新の [https://hub.docker.com/_/debian debian] イメージを pull します:&lt;br /&gt;
&lt;br /&gt;
 # docker pull debian&lt;br /&gt;
&lt;br /&gt;
(各 Debian リリースの標準バージョンとスリムバージョンの療法を含む) 利用可能なタグの完全なリストは Docker Hub ページを見てください。&lt;br /&gt;
&lt;br /&gt;
=== Distroless ===&lt;br /&gt;
&lt;br /&gt;
Google は、パッケージマネージャやシェルなどの OS コンポーネントの無い最小イメージである [https://github.com/GoogleContainerTools/distroless distroless イメージ]をメンテナンスしています。これにより、ソフトウェアをパッケージングするためにイメージのサイズを非常に小さくできます。&lt;br /&gt;
&lt;br /&gt;
イメージのリストと様々なプログラミング言語での使用法に関する指示は GitHub README を見てください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 実行中のコンテナの IP アドレスを取得する ===&lt;br /&gt;
&lt;br /&gt;
実行中のコンテナの IP アドレスを取得するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;$ docker inspect --format=&#039;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&#039; &amp;lt;container-name OR id&amp;gt; &amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
172.17.0.37}}&lt;br /&gt;
&lt;br /&gt;
それぞれの実行中のコンテナについて、{{ic|/etc/hosts}} で使用するために、名前とそれに対応する IP アドレスを出力:&lt;br /&gt;
&lt;br /&gt;
{{bc|#!/usr/bin/env sh&lt;br /&gt;
&amp;lt;nowiki&amp;gt;for ID in $(docker ps -q | awk &#039;{print $1}&#039;); do&lt;br /&gt;
    IP=$(docker inspect --format=&amp;quot;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&amp;quot; &amp;quot;$ID&amp;quot;)&lt;br /&gt;
    NAME=$(docker ps | grep &amp;quot;$ID&amp;quot; | awk &#039;{print $NF}&#039;)&lt;br /&gt;
    printf &amp;quot;%s %s\n&amp;quot; &amp;quot;$IP&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
done&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== コンテナ内でグラフィカルなプログラムを実行する ===&lt;br /&gt;
&lt;br /&gt;
このセクションでは、グラフィカルなプログラム (OpenGL や Vulkan に依存しているものを含む) をホストの X サーバ上で実行できるようにする手順を説明します。&lt;br /&gt;
&lt;br /&gt;
まず、(&#039;&#039;&#039;ホストの&#039;&#039;&#039;グラフィックハードウェアと互換性のある) 適切なドライバがコンテナ内にインストールされている必要があります。インストール手順はコンテナの種類に依存しますが、Arch Linux イメージベースのコンテナでは、[[OpenGL#インストール]] と [[Vulkan#インストール]] を参照してあなたのハードウェア固有のパッケージを調べてください。&lt;br /&gt;
&lt;br /&gt;
次に、コンテナがホストの X サーバにアクセスできるようにしなくてはなりません。シングルユーザな環境では、ホスト上で [[Xhost]] を実行すれば簡単に行なえます。Xhost は、非ネットワークなローカル接続をアクセス制御リストに追加します:&lt;br /&gt;
&lt;br /&gt;
 $ xhost +local:&lt;br /&gt;
&lt;br /&gt;
最後に、以下のパラメータを {{ic|docker run}} に渡す必要があります:&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=-e &amp;quot;DISPLAY=$DISPLAY&amp;quot;}}: ホストのディスプレイを示す環境変数 {{ic|DISPLAY}} をコンテナ内で設定します。&lt;br /&gt;
* {{ic|1=--mount type=bind,src=/tmp/.X11-unix,dst=/tmp/.X11-unix}}: ホストの X サーバソケットをコンテナ内部に同じパスでマウントします。&lt;br /&gt;
* {{ic|1=--device=/dev/dri:/dev/dri}}: コンテナにホストの [[wikipedia:Direct Rendering Infrastructure|Direct Rendering Infrastructure]] デバイスへのアクセス権を与えます。&lt;br /&gt;
&lt;br /&gt;
すべて正しくセットアップできたことを確認するには、コンテナ内で {{Pkg|mesa-utils}} パッケージの {{ic|glxgears}} や、{{Pkg|vulkan-tools}} パッケージの {{ic|vkcube}} を実行してみてください。&lt;br /&gt;
&lt;br /&gt;
=== ブート時に Docker Compose プロジェクトを開始する ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|これは、{{ic|compose.yml}} 内に {{ic|restart: always}} がある場合は必須ではありません。[https://docs.docker.com/compose/compose-file/compose-file-v3/#restart] [[:en:Talk:Docker#&amp;quot;Start Docker Compose projects on boot&amp;quot; Spurious?]]}}&lt;br /&gt;
&lt;br /&gt;
まず、サービスの名前でパラメータ化された Docker Compose のテンプレート[[Systemd#ユニットファイル|ユニット]]を作成してください ({{man|5|systemd.service|SERVICE TEMPLATES}} を参照):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/docker-compose@.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=%i service with docker compose&lt;br /&gt;
Requires=docker.service&lt;br /&gt;
After=docker.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
WorkingDirectory=/opt/%i&lt;br /&gt;
ExecStartPre=-/usr/bin/docker compose pull&lt;br /&gt;
ExecStart=/usr/bin/docker compose up --remove-orphans&lt;br /&gt;
ExecStop=/usr/bin/docker compose down&lt;br /&gt;
ExecReload=/usr/bin/docker compose pull&lt;br /&gt;
ExecReload=/usr/bin/docker compose up --remove-orphans&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、実行したい各サービスに対して、Compose ファイルとその他必須のファイル ({{ic|.env}} など) が入っているディレクトリを {{ic|/opt/&#039;&#039;project_name&#039;&#039;}} に作成してください。[https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s13.html]&lt;br /&gt;
&lt;br /&gt;
最後に、{{ic|docker-compose@&#039;&#039;project_name&#039;&#039;.service}} を[[起動/有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
=== クロスコンパイルに buildx を使う ===&lt;br /&gt;
&lt;br /&gt;
[https://docs.docker.com/buildx/working-with-buildx/ buildx CLI プラグイン] は新しい [https://docs.docker.com/develop/develop-images/build_enhancements/ BuildKit building toolkit] ([https://docs.docker.jp/develop/develop-images/build_enhancements.html 日本語訳ページ]) を使用します。buildx インターフェイスはマルチプラットフォームなイメージのビルドをサポートしています (ホストのアーキテクチャ以外も)。&lt;br /&gt;
&lt;br /&gt;
イメージのクロスコンパイルには QEMU が必要です。Docker 内で QEMU の静的ビルドをセットアップする方法については、[https://github.com/multiarch/qemu-user-static multiarch/qemu-user-static] イメージの情報を見てください。あるいは、QEMU をホストのシステム上でセットアップして、Docker と一緒に使う方法については、[[QEMU#x86_64 から arm/arm64 環境への chrooting]] を見てください。どちらの場合にせよ、あなたのシステムはゲストアーキテクチャのユーザモードエミュレート用に設定されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ docker buildx ls|&lt;br /&gt;
NAME/NODE DRIVER/ENDPOINT STATUS  PLATFORMS&lt;br /&gt;
default * docker                  &lt;br /&gt;
  default default         running linux/amd64, linux/386, linux/arm64, linux/riscv64, linux/s390x, linux/arm/v7, linux/arm/v6&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA GPU で GPU アクセラレートされた Docker コンテナを動かす ===&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Container Toolkit を使う (推奨) ====&lt;br /&gt;
&lt;br /&gt;
Docker バージョン 19.03 より、NVIDIA GPU が Docker デバイスとしてネイティブにサポートされています。NVIDIA GPU を活用するコンテナの実行方法として [https://github.com/NVIDIA/nvidia-docker NVIDIA Container Toolkit] が推奨されています。&lt;br /&gt;
&lt;br /&gt;
{{aur|nvidia-container-toolkit}} パッケージをインストールしてください。次に、docker を[[再起動]]してください。これで、{{ic|--gpus}} オプションを使うことで、NVIDIA GPU を使用するコンテナを実行できるようになります:&lt;br /&gt;
&lt;br /&gt;
 # docker run --gpus all nvidia/cuda:12.1.1-runtime-ubuntu22.04 nvidia-smi&lt;br /&gt;
&lt;br /&gt;
コンテナ内でいくつの GPU を有効化するかを指定するには:&lt;br /&gt;
&lt;br /&gt;
 # docker run --gpus 2 nvidia/cuda:12.1.1-runtime-ubuntu22.04 nvidia-smi&lt;br /&gt;
&lt;br /&gt;
どの GPU を使用するかを指定するには:&lt;br /&gt;
&lt;br /&gt;
 # docker run --gpus &#039;&amp;quot;device=1,2&amp;quot;&#039; nvidia/cuda:12.1.1-runtime-ubuntu22.04 nvidia-smi&lt;br /&gt;
&lt;br /&gt;
あるいは&lt;br /&gt;
&lt;br /&gt;
 # docker run --gpus &#039;&amp;quot;device=UUID-ABCDEF,1&amp;quot;&#039; nvidia/cuda:12.1.1-runtime-ubuntu22.04 nvidia-smi&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|1=以下のエラーが発生する場合のより詳細な情報が必要です。これは機能するはずです。[https://aur.archlinux.org/cgit/aur.git/tree/nvidia-container-toolkit.install?h=nvidia-container-toolkit]{{Dead link|2023|04|23|status=404}} を参照してください。[[:en:Talk:Docker#GPU accelerated Docker Nvidia]]}}&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを使っていて、{{ic|Failed to initialize NVML: Unknown Error}} のようなエラーが発生する場合、GPU をより具体的に指定してみてください:&lt;br /&gt;
&lt;br /&gt;
 # docker run --gpus all --device /dev/nvidiactl:/dev/nvidiactl --device /dev/nvidia-uvm:/dev/nvidia-uvm --device /dev/nvidia0:/dev/nvidia0 nvidia/cuda:12.1.1-runtime-ubuntu22.04 nvidia-smi&lt;br /&gt;
&lt;br /&gt;
コンテナで使用する機能 (グラフィックス、計算、...) を指定するには (とはいえ、この方法が使用されるのは稀です):&lt;br /&gt;
&lt;br /&gt;
 # docker run --gpus all,capabilities=utility nvidia/cuda:12.1.1-runtime-ubuntu22.04 nvidia-smi&lt;br /&gt;
&lt;br /&gt;
詳細は [https://github.com/NVIDIA/nvidia-docker/blob/master/README.md README.md] と [https://github.com/NVIDIA/nvidia-docker/wiki Wiki] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== NVIDIA Container Runtime を使う ====&lt;br /&gt;
&lt;br /&gt;
{{aur|nvidia-container-runtime}} パッケージをインストールしてください。次に、{{ic|/etc/docker/daemon.json}} を編集して NVIDIA ランタイムを登録してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/docker/daemon.json|2=&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;runtimes&amp;quot;: {&lt;br /&gt;
    &amp;quot;nvidia&amp;quot;: {&lt;br /&gt;
      &amp;quot;path&amp;quot;: &amp;quot;/usr/bin/nvidia-container-runtime&amp;quot;,&lt;br /&gt;
      &amp;quot;runtimeArgs&amp;quot;: []&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、docker を[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
ランタイムは、&#039;&#039;dockerd&#039;&#039; にコマンドラインオプションを渡すことでも登録できます:&lt;br /&gt;
&lt;br /&gt;
 # /usr/bin/dockerd --add-runtime=nvidia=/usr/bin/nvidia-container-runtime&lt;br /&gt;
&lt;br /&gt;
その後、GPU アクセラレートされたコンテナを実行するには:&lt;br /&gt;
&lt;br /&gt;
 # docker run --runtime=nvidia nvidia/cuda:9.0-base nvidia-smi&lt;br /&gt;
&lt;br /&gt;
あるいは (以下の方法は Docker バージョン 19.03 およびそれ以降が必要です):&lt;br /&gt;
&lt;br /&gt;
 # docker run --gpus all nvidia/cuda:9.0-base nvidia-smi&lt;br /&gt;
&lt;br /&gt;
[https://github.com/NVIDIA/nvidia-container-runtime/blob/master/README.md README.md] も見てください。&lt;br /&gt;
&lt;br /&gt;
==== CUDA 付き Arch Linux イメージ ====&lt;br /&gt;
&lt;br /&gt;
以下の {{ic|Dockerfile}} を使うことで、CUDA 付きのカスタム Arch Linux イメージをビルドできます。ホスト上で pacman パッケージをキャッシュするために [https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/syntax.md Dockerfile frontend syntax 1.2] を使用します。Docker イメージをビルドする前に、クライアント上で {{ic|1=DOCKER_BUILDKIT=1}} [[環境変数]]を設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|Dockerfile|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# syntax = docker/dockerfile:1.2&lt;br /&gt;
&lt;br /&gt;
FROM archlinux&lt;br /&gt;
&lt;br /&gt;
# install packages&lt;br /&gt;
RUN --mount=type=cache,sharing=locked,target=/var/cache/pacman \&lt;br /&gt;
    pacman -Syu --noconfirm --needed base base-devel cuda&lt;br /&gt;
&lt;br /&gt;
# configure nvidia container runtime&lt;br /&gt;
# https://github.com/NVIDIA/nvidia-container-runtime#environment-variables-oci-spec&lt;br /&gt;
ENV NVIDIA_VISIBLE_DEVICES all&lt;br /&gt;
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Docker とイメージの削除 ==&lt;br /&gt;
&lt;br /&gt;
Docker を完全に削除したい場合は以下の手順に従ってください。&lt;br /&gt;
&lt;br /&gt;
{{Note|コマンドを実行する前にどういう意味なのか考えてください。何も考えずにコピーアンドペーストしてはいけません。}}&lt;br /&gt;
&lt;br /&gt;
実行中のコンテナをチェックする:&lt;br /&gt;
&lt;br /&gt;
 # docker ps&lt;br /&gt;
&lt;br /&gt;
削除するために、ホスト上で実行中のコンテナをすべて表示する:&lt;br /&gt;
&lt;br /&gt;
 # docker ps -a&lt;br /&gt;
&lt;br /&gt;
実行中のコンテナを停止する:&lt;br /&gt;
&lt;br /&gt;
 # docker stop &amp;lt;CONTAINER ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依然として実行中のコンテナを kill する:&lt;br /&gt;
&lt;br /&gt;
 # docker kill &amp;lt;CONTAINER ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ID でリストされたコンテナを削除する:&lt;br /&gt;
&lt;br /&gt;
 # docker rm &amp;lt;CONTAINER ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Docker イメージをすべて表示する:&lt;br /&gt;
&lt;br /&gt;
 # docker images&lt;br /&gt;
&lt;br /&gt;
ID でイメージを削除する:&lt;br /&gt;
&lt;br /&gt;
 # docker rmi &amp;lt;IMAGE ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
コンテナに関連付けられていない (ダングリング) すべてのイメージ、コンテナ、ボリューム、ネットワークを削除する:&lt;br /&gt;
&lt;br /&gt;
 # docker system prune&lt;br /&gt;
&lt;br /&gt;
停止中のコンテナと未使用のイメージ (ダングリングイメージでないもの) を追加で削除するには、-a フラグをコマンドに追加してください:&lt;br /&gt;
&lt;br /&gt;
 # docker system prune -a&lt;br /&gt;
&lt;br /&gt;
すべての Docker データを削除する (ディレクトリを削除する):&lt;br /&gt;
&lt;br /&gt;
 # rm -R /var/lib/docker&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== systemd-networkd を使用していると、docker0 ブリッジが IP を取得できない / コンテナからインターネットにアクセスできない ===&lt;br /&gt;
&lt;br /&gt;
Docker はグローバルに IP フォワーディングを有効化しようと試みますが、デフォルトでは、定義されているネットワークプロファイルのグローバルな sysctl 設定を [[systemd-networkd]] が上書きしてしまいます。ネットワークプロファイルに {{ic|1=IPForward=yes}} を設定してください。詳しくは [[インターネット共有#パケット転送の有効化]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
[[systemd-networkd]] が Docker によって作成されたネットワークインターフェイスを管理しようとする場合 (例えば、Match セクションに {{ic|1=Name=*}} を設定した場合)、接続の問題が発生する可能性があります。それらのインターフェイスの管理を無効化してみてください。例えば、{{ic|networkctl list}} を実行すると、SETUP 列ですべての Docker によって作成されたネットワークは {{ic|unmanaged}} と表示される必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{ic|systemd-networkd.service}} や {{ic|iptables.service}} を[[再起動]]したときは {{ic|docker.service}} を[[再起動]]する必要があります。&lt;br /&gt;
* また、デフォルトで [[nftables]] が docker の接続をブロックする可能性も考慮してください。{{ic|nft list ruleset}} を使ってブロックしているルールを確認してください。{{ic|nft flush chain inet filter forward}} で一時的に全ての転送ルールを削除できます。変更を永続化するには {{ic|/etc/nftables.conf}} を編集してください。設定ファイルからルールをリロードするために {{ic|nftables.service}} を[[再起動]]することを忘れないでください。Docker での nftables サポートに関する詳細は [https://github.com/moby/moby/issues/26824] を見てください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== デフォルトで使用できるプロセスやスレッドの数が少なすぎる ===&lt;br /&gt;
&lt;br /&gt;
以下のようなエラーメッセージが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 # Java の場合&lt;br /&gt;
 java.lang.OutOfMemoryError: unable to create new native thread&lt;br /&gt;
 # C、bash などの場合&lt;br /&gt;
 fork failed: Resource temporarily unavailable&lt;br /&gt;
&lt;br /&gt;
systemd によって許可されるプロセスの数を調整する必要があります。以下のように {{ic|docker.service}} を[[編集]]してください:&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 TasksMax=infinity&lt;br /&gt;
&lt;br /&gt;
より詳細な背景情報は、{{man|5|systemd-system.conf|OPTIONS}} の {{ic|DefaultLimitNPROC}} を見てください。また、{{man|5|systemd.resource-control|OPTIONS}} の {{ic|TasksMax}} も見てください。&lt;br /&gt;
&lt;br /&gt;
=== Error initializing graphdriver: devmapper ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemctl&#039;&#039; で docker の起動に失敗して以下のエラーが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 Error starting daemon: error initializing graphdriver: devmapper: Device docker-8:2-915035-pool is not a thin pool&lt;br /&gt;
&lt;br /&gt;
エラーを解消するには、サービスを停止して、{{ic|/var/lib/docker/}} を (必要に応じて) バックアップし、{{ic|/var/lib/docker/}} の中身を消してから、サービスを起動してみてください。詳しくは [https://github.com/docker/docker/issues/21304 GitHub issue] を参照。&lt;br /&gt;
&lt;br /&gt;
=== Failed to create some/path/to/file: No space left on device ===&lt;br /&gt;
&lt;br /&gt;
以下のようにエラーメッセージが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 ERROR: Failed to create some/path/to/file: No space left on device&lt;br /&gt;
&lt;br /&gt;
Docker イメージの作成・実行時、ディスク容量が十分に存在するにもかかわらず、上記のメッセージが表示されるときは以下を確認してください:&lt;br /&gt;
&lt;br /&gt;
* [[Tmpfs]] が無効になっているか。十分なメモリが割り当てられているか。Docker が {{ic|/tmp}} にファイルを書き出そうとしていて、ディスク容量ではなくメモリ使用量が制限となっている可能性があります。&lt;br /&gt;
* [[XFS]] を使っている場合、{{ic|/etc/fstab}} の ({{ic|/tmp}} や {{ic|/var/lib/docker}} がある) エントリから {{ic|noquota}} マウントオプションを削除するべきかもしれません。詳しくは[[ディスククォータ]]を参照してください。Docker ストレージドライバーの {{ic|overlay2}} を使用するときは特に注意してください。&lt;br /&gt;
* XFS クォータのマウントオプション ({{ic|uquota}}, {{ic|gquota}}, {{ic|prjquota}} など) がファイルシステムの再マウント時に失敗している。ルートファイルシステムでクォータを使うには、マウントオプションを {{ic|1=rootflags=}} [[カーネルパラメータ]]で initramfs に渡す必要があります。その場合、root ({{ic|/}}) ファイルシステムのマウントオプションとして {{ic|/etc/fstab}} に指定してはいけません。&lt;br /&gt;
&lt;br /&gt;
{{Note|XFS のクォータと Linux 標準の[[ディスククォータ]]には違いが存在します。[https://inai.de/linux/adm_quota] は読む価値があるかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
=== virtualbox ドライバーを使用したときに Docker-machine が仮想マシンの作成に失敗する ===&lt;br /&gt;
&lt;br /&gt;
以下のように virtualbox ドライバーで docker-machine が仮想マシンの作成に失敗する場合:&lt;br /&gt;
&lt;br /&gt;
 VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory&lt;br /&gt;
&lt;br /&gt;
{{ic|vboxreload}} で CLI から virtualbox をリロードしてください。&lt;br /&gt;
&lt;br /&gt;
=== Docker を起動すると KVM のブリッジネットワークが壊れる ===&lt;br /&gt;
&lt;br /&gt;
この問題は、Docker のスクリプトがいくつかの iptables ルールを追加し、それ自体のインターフェイス以外のインターフェイスのフォワーディングをブロックしてしまうというものです。これは[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=865975 既知の問題]です。&lt;br /&gt;
&lt;br /&gt;
以下の解決策では、br0 をあなたのブリッジ名に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
最も速い解決策は (しかし、これは Docker の iptabkes 自己追加調整機能をすべて無効化してしまいます。これは望ましくない場合があります。):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/docker/daemon.json|2=&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;iptables&amp;quot;: false&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
KVM 用に設定されたネットワークブリッジがすでに存在する場合、Docker にそのことを伝えることで解決できる場合があります。[https://muthii.com/blog/?p=540] を見て、以下のように docker の設定を変更してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/docker/daemon.json|2=&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;bridge&amp;quot;: &amp;quot;br0&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の設定がうまく行かない場合や、UFW のようなマネージャ、あるいは iptables を通して直接この問題を解決したい場合、以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|iptables -I FORWARD -i br0 -o br0 -j ACCEPT}}&lt;br /&gt;
&lt;br /&gt;
更に詳しい解決策は [https://serverfault.com/questions/963759/docker-breaks-libvirt-bridge-network ここ] にあります。&lt;br /&gt;
&lt;br /&gt;
=== Docker Hub からのイメージ取得に速度制限が掛かる ===&lt;br /&gt;
&lt;br /&gt;
2020年11月1日より、無名アカウントや無料アカウントによる Docker Hub からのダウンロードには速度制限がかかるようになりました。詳細は [https://docs.docker.com/docker-hub/download-rate-limit/ 速度制限に関するドキュメント] を見てください。&lt;br /&gt;
&lt;br /&gt;
認証されていない速度制限はソースの IP によって追跡され、認証済みの速度制限はアカウントによって追跡されます。&lt;br /&gt;
&lt;br /&gt;
速度制限を超過する必要がある場合、[https://www.docker.com/pricing 有料プランに登録]するか、必要なイメージを別のイメージレジストリでミラーすることで可能です。[https://docs.docker.com/registry/ 自分自身のレジストリをホストする] ([https://docs.docker.jp/registry/ 日本語訳ページ]) こともできますし、[https://aws.amazon.com/ecr/ Amazon ECR]、[https://cloud.google.com/container-registry/ Google Container Registry]、[https://azure.microsoft.com/en-us/services/container-registry/ Azure Container Registry]、[https://quay.io/ Quay Container Registry] などのクラウドでホストされているレジストリを使うこともできます。&lt;br /&gt;
&lt;br /&gt;
イメージをミラーするには、Docker CLI のサブコマンド {{ic|pull}}、{{ic|tag}}、{{ic|push}} を使ってください。例えば、[[Nginx]] イメージの {{ic|1.19.3}} タグを、{{ic|cr.example.com}} でホストされているレジストリでミラーするには:&lt;br /&gt;
&lt;br /&gt;
 $ docker pull nginx:1.19.3&lt;br /&gt;
 $ docker tag nginx:1.19.3 cr.example.com/nginx:1.19.3&lt;br /&gt;
 $ docker push cr.example.com/nginx:1.19.3&lt;br /&gt;
&lt;br /&gt;
その後に、そのミラーからイメージを pull または実行することができます:&lt;br /&gt;
&lt;br /&gt;
 $ docker pull cr.example.com/nginx:1.19.3&lt;br /&gt;
 $ docker run cr.example.com/nginx:1.19.3&lt;br /&gt;
&lt;br /&gt;
=== iptables (legacy): unknown option &amp;quot;--dport&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|[[Nftables#Docker と共に使う]] では、{{Pkg|iptables-nft}} を使用しないことが推奨されています。}}&lt;br /&gt;
&lt;br /&gt;
コンテナの実行中にこのエラーが発生する場合は、{{Pkg|iptables}} (legacy) の代わりに {{Pkg|iptables-nft}} をインストールして、再起動してください [https://bbs.archlinux.org/viewtopic.php?id=256709]。&lt;br /&gt;
&lt;br /&gt;
=== docker ログイン時に &amp;quot;Your password will be stored unencrypted&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
[https://docs.docker.com/engine/reference/commandline/login/#credentials-store デフォルトでは]、Docker はレジストリパスワードを保存するために {{ic|pass}} や {{ic|secretservice}} バイナリの使用を試みます。これらのバイナリが見つからない場合、Docker はパスワードを平文 (base64 エンコード) で {{ic|$HOME/.docker/config.json}} に保存し、ログイン成功後に以下のメッセージを出力します:&lt;br /&gt;
&lt;br /&gt;
 $ WARNING! Your password will be stored unencrypted in /home/&#039;&#039;username&#039;&#039;/.docker/config.json.&lt;br /&gt;
&lt;br /&gt;
[https://specifications.freedesktop.org/secret-service/latest/ Secret Service Freedesktop DBUS API] を実装しているパスワードマネージャ (KDE の {{Pkg|KWallet}} や GNOME の {{Pkg|gnome-keyring}} など) を使用している場合、パスワードをパスワードマネージャに保存するための {{Aur|docker-credentials-secretservice}} パッケージをインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Sometimes if you use a lot of Docker projects (ex. using docker-compose) it can happens that you run out of available IPs for Docker containers triggering the error:&lt;br /&gt;
&lt;br /&gt;
 Could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network&lt;br /&gt;
&lt;br /&gt;
As found on [https://github.com/docker/docs/issues/8663 this Docker issue], the defaults are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Default Size !! Default Pool&lt;br /&gt;
|-&lt;br /&gt;
| local || /16 || 172.17.0.0/12&lt;br /&gt;
|-&lt;br /&gt;
| local* || /20 || 192.168.0.0/16&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This can be easily fixed increasing the Docker IP space by configuring {{ic|default-address-pools}} in {{ic|/etc/docker/daemon.json}} increasing the size value from 16 to 24 on the first IP range, keeping the second one unaltered to avoid ip collision on the local network:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/docker/daemon.json|2=&lt;br /&gt;
{&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;quot;default-address-pools&amp;quot; : [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;base&amp;quot; : &amp;quot;172.17.0.0/12&amp;quot;,&lt;br /&gt;
      &amp;quot;size&amp;quot; : 24&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;base&amp;quot; : &amp;quot;192.168.0.0/16&amp;quot;,&lt;br /&gt;
      &amp;quot;size&amp;quot; : 24&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Restart {{ic|docker.service}} to apply changes.&lt;br /&gt;
&lt;br /&gt;
More details and technical explanations can be found on the following excellent article: [https://straz.to/2021-09-08-docker-address-pools/ The definitive guide to docker&#039;s default-address-pools option].&lt;br /&gt;
&lt;br /&gt;
=== Slow golang compilation ===&lt;br /&gt;
&lt;br /&gt;
Due to a ulimit configuration, building a docker image and its dependances with makepkg is very slow (stuck at &amp;quot;Entering fakeroot environment...&amp;quot; step).&lt;br /&gt;
&lt;br /&gt;
It is related to [https://github.com/moby/moby/issues/45436] and [https://github.com/containerd/containerd/pull/7566].&lt;br /&gt;
&lt;br /&gt;
You can add {{ic|1=--ulimit &amp;quot;nofile=1024:524288&amp;quot;}} to your docker build option or create/edit:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/docker/daemon.json|&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;default-ulimits&amp;quot;: {&lt;br /&gt;
    &amp;quot;nofile&amp;quot;: {&lt;br /&gt;
      &amp;quot;Name&amp;quot;: &amp;quot;nofile&amp;quot;,&lt;br /&gt;
      &amp;quot;Soft&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;Hard&amp;quot;: 524288&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://www.docker.com 公式ウェブサイト]&lt;br /&gt;
* [https://docs.docker.com/engine/installation/linux/archlinux/ docs.docker.com の Arch Linux] ([https://docs.docker.jp/engine/installation/linux/archlinux.html 日本語訳])&lt;br /&gt;
* [https://opensource.com/business/14/7/docker-security-selinux Are Docker containers really secure?] — opensource.com&lt;br /&gt;
* [https://awesome-docker.netlify.com/ Awesome Docker]&lt;br /&gt;
* [https://www.trendmicro.com/en_us/research/19/l/why-running-a-privileged-container-in-docker-is-a-bad-idea.html Why A Privileged Container in Docker Is a Bad Idea]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Docker|2023-05-12|777552}}&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%B8%80%E8%A6%A7/%E3%83%A6%E3%83%BC%E3%83%86%E3%82%A3%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=38267</id>
		<title>アプリケーション一覧/ユーティリティ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%B8%80%E8%A6%A7/%E3%83%A6%E3%83%BC%E3%83%86%E3%82%A3%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=38267"/>
		<updated>2024-07-31T23:14:01Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: /* udevilのリンク先を更新(公式-&amp;gt;aur) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:アプリケーション]]&lt;br /&gt;
[[Category:ソフトウェア一覧]]&lt;br /&gt;
[[en:List of applications/Utilities]]&lt;br /&gt;
[[es:List of applications/Utilities]]&lt;br /&gt;
[[it:List of applications/Utilities]]&lt;br /&gt;
[[ru:List of applications/Utilities]]&lt;br /&gt;
[[uk:List of applications/Utilities]]&lt;br /&gt;
[[zh-hans:List of applications/Utilities]]&lt;br /&gt;
[[zh-hant:List of applications/Utilities]]&lt;br /&gt;
{{List of Applications navigation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== ユーティリティ ==&lt;br /&gt;
&lt;br /&gt;
=== Terminal ===&lt;br /&gt;
&lt;br /&gt;
==== コマンドシェル ====&lt;br /&gt;
次の記事を参照: [[コマンドラインシェル]]&lt;br /&gt;
&lt;br /&gt;
次も参照: [[Wikipedia:Comparison of command shells]]&lt;br /&gt;
&lt;br /&gt;
==== ターミナルエミュレータ ====&lt;br /&gt;
ターミナルエミュレータとはターミナルを含むGUIウィンドウを表示する機能を有します。&lt;br /&gt;
それらエミュレータのほとんどは Xterm をエミュレートしていて、その Xterm は VT102 をエミュレートしていて、VT102 はタイプライターをエミュレートしています。For further background information, see [[Wikipedia:Terminal emulator]].&lt;br /&gt;
&lt;br /&gt;
For a comprehensive list, see [[Wikipedia:List of terminal emulators]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Alacritty]]|クロスプラットフォームの GPU アクセラレーションターミナルエミュレータ。|https://github.com/jwilm/alacritty|{{Pkg|alacritty}}}}&lt;br /&gt;
* {{App|aterm|透過をサポートした xterm 代替。2008年から urxvt に取って代わられています。|http://www.afterstep.org/aterm.php|{{AUR|aterm}}}}&lt;br /&gt;
* {{App|[[cool-retro-term]]|昔のブラウン管ディスプレイを模した見た目が良いターミナルエミュレータ。|https://github.com/Swordfish90/cool-retro-term|{{Pkg|cool-retro-term}}}}&lt;br /&gt;
* {{App|CoreTerminal|Terminal emulator based on qtermwidget. Part of C-Suite.|https://cubocore.org/|{{AUR|coreterminal}}}}&lt;br /&gt;
* {{App|CuteCom|A graphical serial terminal.|https://gitlab.com/cutecom/cutecom|{{AUR|cutecom}}}}&lt;br /&gt;
* {{App|Deepin Terminal|Terminal emulation application for Deepin desktop.|https://www.deepin.org/en/original/deepin-terminal/|{{Pkg|deepin-terminal}}}}&lt;br /&gt;
* {{App|Eterm|[[Enlightenment]] デスクトップ向けに作られた xterm を代替するターミナルエミュレータ。|https://github.com/mej/Eterm|{{AUR|eterm}}}}&lt;br /&gt;
* {{App|foot|Lightweight terminal emulator for Wayland with [[w:sixel|sixel]] support|https://codeberg.org/dnkl/foot|{{AUR|foot}}, {{AUR|foot-git}}}}&lt;br /&gt;
* {{App|Hyper|A terminal with JS/CSS support. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/zeit/hyper|{{AUR|hyper}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Konsole|Konsole]]|[[KDE]] デスクトップのターミナルエミュレータ。|https://konsole.kde.org/|{{Pkg|konsole}}}}&lt;br /&gt;
* {{App|[[kitty]]|モダンで柔軟な設定が可能な OpenGL ベースのターミナルエミュレータ|https://github.com/kovidgoyal/kitty|{{Pkg|kitty}}}}&lt;br /&gt;
* {{App|Liri Terminal|Material Design terminal for Liri.|https://github.com/lirios/terminal|{{Pkg|liri-terminal}}}}&lt;br /&gt;
* {{App|mlterm|世界中の様々な文字セットやエンコーディングが使える多言語対応のターミナルエミュレータ。|https://sourceforge.net/projects/mlterm/|{{AUR|mlterm}}}}&lt;br /&gt;
* {{App|moserial|GTK-based serial terminal for the GNOME desktop.|https://wiki.gnome.org/Apps/Moserial|{{Pkg|moserial}}}}&lt;br /&gt;
* {{App|[[PuTTY]]|Highly configurable ssh/telnet/serial console program.|https://www.chiark.greenend.org.uk/~sgtatham/putty/|{{Pkg|putty}}}}&lt;br /&gt;
* {{App|QTerminal|軽量な Qt ベースのターミナルエミュレータ。|https://github.com/qterminal/qterminal|{{Pkg|qterminal}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Rxvt|rxvt]]|xterm の人気代替。|http://rxvt.sourceforge.net/|{{AUR|rxvt}}}}&lt;br /&gt;
* {{App|shellinabox|ウェブベースの SSH ターミナル。|https://github.com/shellinabox/shellinabox|{{AUR|shellinabox-git}}}}&lt;br /&gt;
* {{App|[[st]]|X 向けのシンプルなターミナル実装。|https://st.suckless.org|{{AUR|st}}}}&lt;br /&gt;
* {{App|Station|Terminal emulation features different view modes such as split vertically and horizontally, a tabbed interface, and copy and paste commands.|https://mauikit.org/|{{Pkg|maui-station}}}}&lt;br /&gt;
* {{App|Terminology|革新的な機能を備えた Enlightenment プロジェクトチームによるターミナルエミュレータ:ファイルのサムネイルとメディアは、メディアプレーヤーのように再生されます。|https://www.enlightenment.org/about-terminology|{{Pkg|terminology}}}}&lt;br /&gt;
* {{App|[[urxvt]]|(Perl によって) 高い拡張性を持ちユニコードが使える rxvt クローンターミナルエミュレータ。タブ、URL 起動、Quake スタイルのドロップダウンモード、擬似透過をサポート。|http://software.schmorp.de/pkg/rxvt-unicode.html|{{Pkg|rxvt-unicode}}}}&lt;br /&gt;
* {{App|wayst|Simple terminal emulator for Wayland and X11 with OpenGL rendering and minimal dependencies.|https://github.com/91861/wayst|{{AUR|wayst-git}}}}&lt;br /&gt;
* {{App|[[xterm]]|X Window System 用のシンプルなターミナルエミュレータ。ウィンドウシステムを直接使えないプログラム用に DEC VT102 や Tektronix 4014 互換のターミナルを提供します。|https://invisible-island.net/xterm/|{{Pkg|xterm}}}}&lt;br /&gt;
* {{App|[[Yakuake]]|Konsole ベースのドロップダウンターミナル (Quake スタイル) エミュレータ。|https://apps.kde.org/yakuake/|{{Pkg|yakuake}}}}&lt;br /&gt;
* {{App|zutty|A high-end terminal for low-end systems.|https://tomscii.sig7.se/zutty/|{{Pkg|zutty}}}}&lt;br /&gt;
&lt;br /&gt;
===== VTE ベース =====&lt;br /&gt;
&lt;br /&gt;
[https://wiki.gnome.org/Apps/Terminal/VTE VTE] (Virtual Terminal Emulator) は初期の GNOME で GNOME Terminal で使うために開発されたウィジェットです。VTE ができてから、似た機能を持つ数多くのターミナルが生まれました。&lt;br /&gt;
&lt;br /&gt;
* {{App|Deepin Terminal (GTK version)|Old terminal emulation application for Deepin desktop.|https://github.com/linuxdeepin/deepin-terminal-gtk|{{Pkg|deepin-terminal-gtk}}}}&lt;br /&gt;
* {{App|EasySSH|SSH Connection Manager.|https://github.com/muriloventuroso/easyssh|{{AUR|easyssh}}}}&lt;br /&gt;
* {{App|Germinal|ボーダーレスな最大化されたターミナルを表示する、最小主義のターミナルエミュレータ。デフォルトで tmux セッションにアタッチするので、タブやパネルが使えます。|https://www.imagination-land.org/tags/germinal.html|{{AUR|germinal}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GNOME Terminal|GNOME Terminal]]|[[GNOME]] デスクトップのターミナルエミュレータ。ユニコードをサポート。|https://wiki.gnome.org/Apps/Terminal|{{Pkg|gnome-terminal}}}}&lt;br /&gt;
* {{App|[[Guake]]|GNOME デスクトップ向けドロップダウンターミナル。|http://guake-project.org/|{{Pkg|guake}}}}&lt;br /&gt;
* {{App|kermit|A VTE-based terminal emulator that aims to be simple, fast and effective.|https://github.com/orhun/kermit|{{AUR|kermit}}}}&lt;br /&gt;
* {{App|King’s Cross|Simple user-friendly terminal emulator for the GNOME desktop.|https://gitlab.gnome.org/ZanderBrown/kgx|{{AUR|kgx}}}}&lt;br /&gt;
* {{App|LXTerminal|[[LXDE]] 向けのデスクトップ非依存のターミナルエミュレータ。|https://wiki.lxde.org/en/LXTerminal|{{Pkg|lxterminal}}}}&lt;br /&gt;
* {{App|MATE terminal|[[MATE]] デスクトップの [[Wikipedia:GNOME terminal|GNOME ターミナル]] のフォーク。|https://www.mate-desktop.org/|{{Pkg|mate-terminal}}}}&lt;br /&gt;
* {{App|Pantheon Terminal|超軽量・美麗・シンプルなターミナルエミュレータ。デフォルト設定で使うように作られているので設定がほとんどありません。|https://github.com/elementary/terminal|{{Pkg|pantheon-terminal}}}}&lt;br /&gt;
* {{App|ROXTerm|場所をとらないタブ式ターミナルエミュレータ。|http://roxterm.sourceforge.net/|{{AUR|roxterm}}}}&lt;br /&gt;
* {{App|sakura|GTK と VTE ベースのターミナルエミュレータ。|https://www.pleyades.net/david/projects/sakura|{{Pkg|sakura}}}}&lt;br /&gt;
* {{App|[[Terminator]]|マルチプルでリサイズ可能な端末パネルをサポートしたターミナルエミュレータ。|https://gnome-terminator.org/|{{Pkg|terminator}}}}&lt;br /&gt;
* {{App|[[Termite]]|キーボード中心の VTE ベースのターミナル。タイル型またはタブをサポートしているウィンドウマネージャで使われるように作られています。 Unmaintained - the developers recommend switching to Alacritty.|https://github.com/thestinger/termite|{{AUR|termite}}}}&lt;br /&gt;
* {{App|Tilda|設定可能なドロップダウンターミナルエミュレータ。|https://github.com/lanoxx/tilda/|{{Pkg|tilda}}}}&lt;br /&gt;
* {{App|Tilix|タイル型ターミナルエミュレータ for GNOME.|https://gnunn1.github.io/tilix-web/|{{Pkg|tilix}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Terminal (Xfce)|Xfce Terminal]]|[[Xfce]] デスクトップに含まれているターミナルエミュレータ。カラープロンプト、タブをサポート。|https://docs.xfce.org/apps/terminal/start|{{Pkg|xfce4-terminal}}}}&lt;br /&gt;
&lt;br /&gt;
===== KMS ベース =====&lt;br /&gt;
&lt;br /&gt;
以下のターミナルエミュレータは [[カーネルモード設定]]を使っており X がなくても起動できます。&lt;br /&gt;
* {{App|[[KMSCON]]|Linux オペレーティングシステム用のターミナルエミュレータを統合した KMS/DRM ベースのシステムコンソール（getty）です。|https://github.com/dvdhrm/kmscon|{{AUR|kmscon}}}}&lt;br /&gt;
&lt;br /&gt;
===== フレームバッファベース =====&lt;br /&gt;
&lt;br /&gt;
GNU/Linux では、Linux カーネルの仮想デバイス (&#039;&#039;&#039;fbdev&#039;&#039;&#039;) や X の仮想フレームバッファシステム (&#039;&#039;&#039;xvfb&#039;&#039;&#039;) のことを[[Wikipedia:Framebuffer|フレームバッファ]]と呼ぶことがあります。このセクションでは主としてカーネルの仮想デバイス &#039;&#039;&#039;fbdev&#039;&#039;&#039; をベースにするターミナルエミュレータをリストアップしています。&lt;br /&gt;
&lt;br /&gt;
* {{App|yaft|X をなくても動かせるシンプルなターミナルエミュレータ。UCS2 文字、壁紙、256color をサポート。|https://github.com/uobikiemukot/yaft|{{aur|yaft}}}}&lt;br /&gt;
* {{App|[[Fbterm]]|a fast FrameBuffer based TERMinal emulator for linux|https://salsa.debian.org/debian/fbterm|{{AUR|fbterm}}}}&lt;br /&gt;
&lt;br /&gt;
==== ターミナルページャ ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Terminal pager]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:More_(command)|more]]|シンプルで機能の少ないページャです。util-linuxの一部です。|https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/about/|{{Pkg|util-linux}}}}&lt;br /&gt;
* {{App|[[Core_utilities#Essentials|less]]|more に似たプログラムだが、前方・後方両方のスクロールをサポートし、ファイルの部分読み込みもできる。|https://www.gnu.org/software/less/|{{Pkg|less}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Most_(Unix)|most]]|マルチウィンドウ、左右スクロール、内蔵カラーをサポートしたページャ|http://www.jedsoft.org/most/|{{Pkg|most}}}}&lt;br /&gt;
* {{App|mcview|マウスとカラーに対応したページャ。midnight commander にバンドルされている。|https://midnight-commander.org/|{{Pkg|mc}}}}&lt;br /&gt;
* また、[[Vim]] は[[Vim#Vim をページャとして使う|ページャとして使う]]ことができます。&lt;br /&gt;
&lt;br /&gt;
==== ターミナルマルチプレクサ ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Terminal multiplexer]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
* {{App|abduco|プロセスを制御端末とは別に実行させる、セッションのアタッチとデタッチをサポートするツール。|https://www.brain-dump.org/projects/abduco/|{{Pkg|abduco}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Byobu (software)|byobu]]|An GPLv3 licensed addon for tmux or screen. It requires a terminal multiplexer installed.|https://byobu.org/|{{Pkg|byobu}}}}&lt;br /&gt;
* {{App|[[dtach]]|Program that emulates the detach feature of [[GNU Screen]].|http://dtach.sourceforge.net/|{{AUR|dtach}}}}&lt;br /&gt;
* {{App|dvtm|[[dwm]]-style window manager in the console.|https://www.brain-dump.org/projects/dvtm/|{{Pkg|dvtm}}}}&lt;br /&gt;
* {{App|[[GNU Screen]]|物理端末を多重化するフルスクリーンウィンドウマネージャ。|https://www.gnu.org/software/screen/|{{Pkg|screen}}}}&lt;br /&gt;
* {{App|mtm|Simple terminal multiplexer with just four commands: change focus, split, close, and screen redraw.|https://github.com/deadpixi/mtm|{{AUR|mtm-git}}}}&lt;br /&gt;
* {{App|[[tmux]]|BSDライセンスのターミナル・マルチプレクサ。|https://tmux.github.io/|{{Pkg|tmux}}}}&lt;br /&gt;
* {{App|zellij|Rust で書かれた強化されたターミナル・マルチプレクサ|https://zellij.dev/|{{Pkg|zellij}}}}&lt;br /&gt;
* {{App|wezterm|[[Rust]] で実装された GPU アクセラレーションによるクロスプラットフォームなターミナルエミュレータおよびマルチプレクサ。|https://wezfurlong.org/wezterm/|{{Pkg|wezterm}}}}&lt;br /&gt;
{{Tip|端末エミュレーターの [[Kitty]] も同様の機能を備えています。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイル ===&lt;br /&gt;
&lt;br /&gt;
==== ファイルマネージャ ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of file managers]].&lt;br /&gt;
&lt;br /&gt;
===== コンソール =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Clex|フルスクリーンのユーザーインターフェイスを持つファイルマネージャ。|http://www.clex.sk/|{{Aur|clex}}}}&lt;br /&gt;
* {{App|CliFM|The command line file manager: full-featured, fast, extensible, and lightweight as hell.|https://github.com/leo-arch/clifm|{{AUR|clifm}}}}&lt;br /&gt;
* {{App|ded|directory editor, file manager similar to Emacs dired|https://invisible-island.net/ded/ded.html|{{AUR|ded}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Dired|Dired]]|[[Emacs]] と統合されたディレクトリエディタ。|https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html|{{pkg|emacs}}}}&lt;br /&gt;
* {{App|joshuto|ranger-like terminal file manager written in Rust.|https://github.com/kamiyaa/joshuto|{{AUR|joshuto-git}}}}&lt;br /&gt;
* {{App|Last File Manager|curses インターフェイスを備えた Python 3 で書かれた強力なファイルマネージャ。|https://inigo.katxi.org/devel/lfm/|{{AUR|lfm}}}}&lt;br /&gt;
* {{App|lf|Terminal file manager written in Go using server/client architecture.|https://github.com/gokcehan/lf|{{aur|lf}}}}&lt;br /&gt;
* {{App|[[Midnight Commander]]|コンソールベース、デュアルパネルのファイルマネージャー。|https://midnight-commander.org|{{Pkg|mc}}}}&lt;br /&gt;
* {{App|nffm|&amp;quot;Nothing Fancy File Manager&amp;quot;、C で書かれたマウスを使わない ncurses ファイルマネージャ。|https://github.com/mariostg/nffm|{{AUR|nffm-git}}}}&lt;br /&gt;
* {{App|[[nnn]]|Tiny, lightning fast, feature-packed file manager.|https://github.com/jarun/nnn|{{Pkg|nnn}}}}&lt;br /&gt;
* {{App|fff|A simple file manager written in Bash.|https://github.com/dylanaraps/fff|{{Pkg|fff}}}}&lt;br /&gt;
* {{App|Pilot|[[Alpine]] メールクライアントについてくるファイルマネージャー。|https://alpine.x10host.com/|{{AUR|alpine-git}}}}&lt;br /&gt;
* {{App|[[Ranger]]|vi バインディング、カスタマイズ性、多機能をもったコンソールベースのファイルマネージャー。|https://ranger.github.io/|{{Pkg|ranger}}}}&lt;br /&gt;
* {{App|[[Vifm]]|ncurses ベースの 2 パネルファイルマネージャー、vi ライクなキーバインド。|https://vifm.info|{{Pkg|vifm}}}}&lt;br /&gt;
* {{App|xplr|A hackable, minimal, fast TUI file explorer.|https://xplr.dev|{{Pkg|xplr}}}}&lt;br /&gt;
&lt;br /&gt;
===== グラフィカル =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Caja|MATE デスクトップのファイルマネージャ。|https://github.com/mate-desktop/caja|{{Pkg|caja}}}}&lt;br /&gt;
* {{App|CoreFM|Simple lightweight easy to use file manager with many features like image previews, mime-icon support, split view, auto-mounting of removable media, drag-n-drop support etc. Part of C-Suite.|https://cubocore.org/|{{AUR|corefm}}}}&lt;br /&gt;
* {{App|Deepin File Manager|[[Deepin]] 用に開発されたファイルマネージャ。|https://www.deepin.org/en/original/dde-file-manager/|{{Pkg|deepin-file-manager}}}}&lt;br /&gt;
* {{App|[[Dolphin]]|KDE デスクトップのファイルマネージャー。|https://apps.kde.org/dolphin/|{{Pkg|dolphin}}}}&lt;br /&gt;
* {{App|Gentoo|GTK の軽量ファイルマネージャ。|https://sourceforge.net/projects/gentoo/|{{AUR|gentoo}}}}&lt;br /&gt;
* {{App|[[GNOME Files]]|拡張性のある、カスタムスクリプトをサポートしているヘビー級のファイルマネージャー。GNOME のデフォルト。|https://wiki.gnome.org/Apps/Files|{{Pkg|nautilus}}}}&lt;br /&gt;
* {{App|Index|File manager that lets you browse your system files and applications and preview your music, text, image and video files and share them with external applications.|https://apps.kde.org/index-fm/|{{Pkg|index-fm}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Konqueror|Konqueror]]|KDE デスクトップ用ファイルマネージャー。|https://apps.kde.org/konqueror/|{{Pkg|konqueror}}}}&lt;br /&gt;
* {{App|Liri Files|The file manager for Liri.|https://github.com/lirios/files|{{Pkg|liri-files}}}}&lt;br /&gt;
* {{App|[[Nemo]]|Nemo は Cinnamon デスクトップのファイルマネージャです。A fork of Nautilus.|https://cinnamon.linuxmint.com/{{Dead link|2021|05|17|status=SSL error}}|{{Pkg|nemo}}}}&lt;br /&gt;
* {{App|Pantheon Files|File browser designed for elementary OS.|https://github.com/elementary/files|{{Pkg|pantheon-files}}}}&lt;br /&gt;
* {{App|PathFinder|[[Wikipedia:Fox_toolkit|FOX ツールキット]] によるファイルブラウザ。|http://fox-toolkit.org/|{{Pkg|fox}}}}&lt;br /&gt;
* {{App|[[PCManFM]]|desktop icon や壁紙の管理などの機能をもっている very fast and 軽量ファイルマネージャー。|https://wiki.lxde.org/en/PCManFM|{{Pkg|pcmanfm}}}}&lt;br /&gt;
* {{App|[[PCManFM]]-Qt|Qt port of PCManFM file manager.|https://github.com/lxqt/pcmanfm-qt|{{Pkg|pcmanfm-qt}}}}&lt;br /&gt;
* {{App|Peony|File manager for the UKUI desktop.|https://github.com/ukui/peony|{{Pkg|peony}}}}&lt;br /&gt;
* {{App|qtFM|小さく軽量な、純粋に Qt ベースの Linux デスクトップ用ファイルマネージャー。|https://qtfm.eu/|{{AUR|qtfm}}}}&lt;br /&gt;
* {{App|ROX Filer|小さく高速なファイルマネージャー。壁紙やパネルの管理なども可能。|http://rox.sourceforge.net/|{{Pkg|rox}}}}&lt;br /&gt;
* {{App|[[Thunar]]|高速に起動し素早くディレクトリを読み込むようにデーモンとして実行できるファイルマネージャー。|https://docs.xfce.org/xfce/thunar/start|{{Pkg|thunar}}}}&lt;br /&gt;
&lt;br /&gt;
====== Twin-panel ======&lt;br /&gt;
&lt;br /&gt;
Note that some of these twin-panel file managers can also be set to have only one pane.&lt;br /&gt;
&lt;br /&gt;
* {{App|Double Commander|2つのパネルが並ぶファイルマネージャ。Total Commander にインスパイアされており新しいアイデアが実装されています。|https://doublecmd.sourceforge.io/|GTK: {{Pkg|doublecmd-gtk2}}, Qt5: {{Pkg|doublecmd-qt5}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GNOME Commander|GNOME Commander]]|GNOME デスクトップのデュアルパネルファイルマネージャ。|https://gcmd.github.io/|{{AUR|gnome-commander}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Krusader|Krusader]]|KDE デスクトップ用の先進的なツインパネル (Midnight Commander スタイル) ファイルマネージャー。|https://krusader.org/|{{Pkg|krusader}}}}&lt;br /&gt;
* {{App|muCommander|軽量でクロスプラットフォームのファイルマネージャ。デュアルパネルのインターフェイスを持ち、Java で書かれています。|https://www.mucommander.com/|{{AUR|mucommander}}}}&lt;br /&gt;
* {{App|[[SpaceFM]]|GTK マルチパネルタブ式ファイルマネージャー。|https://ignorantguru.github.io/spacefm/|{{AUR|spacefm}}}}&lt;br /&gt;
* {{App|Sunflower|小さく細かく設定可能でプラグインをサポートしたツインパネルの Linux ファイルマネージャー。|https://sunflower-fm.org/|{{AUR|sunflower}}}}&lt;br /&gt;
* {{App|trolCommander|Lightweight, dual-pane file manager written in Java. Fork of muCommander.|https://github.com/trol73/mucommander|{{AUR|trolcommander}}}}&lt;br /&gt;
* {{App|Tux Commander|人気の Total Commander や Midnight Commander ファイルマネージャーに似た２つのパネルをもったウィンドウ型ファイルマネージャー。|http://tuxcmd.sourceforge.net/description.php|{{Pkg|tuxcmd}}}}&lt;br /&gt;
* {{App|Worker|高速、軽量、機能豊富な X Window System 向けファイルマネージャー。|http://www.boomerangsworld.de/cms/worker/|{{AUR|worker}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Xfe|Xfe]]|Microsoft Explorer ライクの X 用ファイルマネージャー (X File Explorer)。|http://roland65.free.fr/xfe/|{{AUR|xfe}}}}&lt;br /&gt;
&lt;br /&gt;
==== ゴミ箱管理 ====&lt;br /&gt;
&lt;br /&gt;
* {{App|trash-cli|[https://specifications.freedesktop.org/trash-spec/trashspec-latest.html FreeDesktop.org の Trash 規格] を実装するコマンドラインインターフェイス。|https://github.com/andreafrancia/trash-cli|{{Pkg|trash-cli}}}}&lt;br /&gt;
&lt;br /&gt;
==== ファイル同期とバックアップ ====&lt;br /&gt;
&lt;br /&gt;
[[バックアッププログラム]]、[[Wikipedia:Comparison of file synchronization software]] と [[Wikipedia:Comparison of backup software]] も見てください。&lt;br /&gt;
&lt;br /&gt;
* {{App|borg|Deduplicating backup program with compression and authenticated encryption that supports backing up over ssh|https://www.borgbackup.org|{{Pkg|borg}}}}&lt;br /&gt;
* {{App|Déjà Dup|Simple GTK backup program. It hides the complexity of doing backups the &#039;right way&#039; (encrypted, off-site, and regular) and uses [[duplicity]] as the backend.|https://launchpad.net/deja-dup|{{Pkg|deja-dup}}}}&lt;br /&gt;
* {{App|[[Wikipedia:DirSync Pro|DirSync Pro]]|Small, but powerful utility for file and folder synchronization.|https://dirsyncpro.org/|{{AUR|dirsyncpro}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Duplicati|Duplicati]]|Backup client that securely stores encrypted, incremental, compressed backups on cloud storage services and remote file servers.|https://www.duplicati.com/|{{AUR|duplicati-latest}}}}&lt;br /&gt;
* {{App|[[duplicity]]|Simple command-line utility which allows encrypted compressed incremental backup to nearly any storage.|https://www.nongnu.org/duplicity/|{{Pkg|duplicity}}}}&lt;br /&gt;
* {{App|[[Duply]]|Command-line front-end for [[duplicity]] which simplifies running it. It manages backup job settings in profiles and allows to batch execute commands.|https://www.duply.net/|{{AUR|duply}}}}&lt;br /&gt;
* {{App|[[Wikipedia:FreeFileSync|FreeFileSync]]|Folder comparison and synchronization software that creates and manages backup copies of all your important files.|https://www.freefilesync.org/|{{AUR|freefilesync}}}}&lt;br /&gt;
* {{App|[[Wikipedia:git-annex|git-annex]]|Manage files with git, without checking the file contents into git.|https://git-annex.branchable.com/|{{Pkg|git-annex}}}}&lt;br /&gt;
* {{App|[[Wikipedia:grsync|grsync]]|GTK+ GUI for rsync to synchronize folders, files and make backups|https://www.opbyte.it/grsync/|{{Pkg|grsync}}}}&lt;br /&gt;
* {{App|hsync|Command line program to sync only those files that have been renamed/moved but otherwise unchanged. It works by issuing simple move operations at the destination without actually transferring the files, and is meant to be used in conjunction with other synchronization programs that lack this capability.|https://ambrevar.bitbucket.io/hsync/|{{AUR|hsync}}}}&lt;br /&gt;
* {{App|rclone|Command line program to sync files and directories to and from Amazon S3, Dropbox, Google Drive, Microsoft OneDrive, Yandex Disk and many other cloud storage services as well as between local paths.|https://rclone.org/|{{Pkg|rclone}}}}&lt;br /&gt;
* {{App|restic|Fast, secure, efficient backup program that supports backing up to many cloud services.|https://restic.net/|{{Pkg|restic}}}}&lt;br /&gt;
* {{App|[[rsync]]|File transfer program that uses the &amp;quot;rsync algorithm&amp;quot; which provides a very fast method for bringing remote files into sync. It does this by sending just the differences in the files across the link, without requiring that both sets of files are present at one of the ends of the link beforehand. Has [[Rsync#Front-ends|multiple frontends available]].|https://rsync.samba.org/|{{Pkg|rsync}}}}&lt;br /&gt;
* {{App|[[Wikipedia:SparkleShare|SparkleShare]]|File sharing and collaboration application written in C#. It can sync with any Git server over SSH.|https://www.sparkleshare.org/|{{Pkg|sparkleshare}}}}&lt;br /&gt;
* {{App|[[Syncthing]]|Continuous file synchronization program. It synchronizes files between two or more computers in a simple way without advanced configuration.|https://syncthing.net/|{{Pkg|syncthing}}}}&lt;br /&gt;
* {{App|Syncany|Cloud storage and filesharing application with a focus on security and abstraction of storage.|https://www.syncany.org/|{{AUR|syncany}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Synkron|Synkron]]|Application that helps you keep your files and folders always updated. You can easily sync your documents, music or pictures to have their latest versions everywhere.|http://synkron.sourceforge.net/|{{AUR|synkron}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Tarsnap|Tarsnap]]|Secure, efficient proprietary online backup service.|https://www.tarsnap.com/|{{Pkg|tarsnap}}}}&lt;br /&gt;
* {{App|Timeshift|A system restore tool for Linux.|https://github.com/teejee2008/timeshift|{{AUR|timeshift}}}}&lt;br /&gt;
* {{App|[[Unison]]|File synchronization tool that allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other.|https://www.cis.upenn.edu/~bcpierce/unison/|{{Pkg|unison}}}}&lt;br /&gt;
&lt;br /&gt;
==== Archiving and compression tools ====&lt;br /&gt;
&lt;br /&gt;
For archiving and compression command-line tools, see [[アーカイブと圧縮]].&lt;br /&gt;
&lt;br /&gt;
===== Archive managers =====&lt;br /&gt;
&lt;br /&gt;
* {{App|360zip|A proprietary archiving tool.|https://yasuo.360.cn/|{{AUR|360zip}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Ark (software)|Ark]]|KDE デスクトップのアーカイブツール。|https://apps.kde.org/ark/|{{Pkg|ark}}}}&lt;br /&gt;
* {{App|Arqiver|Simple Qt archive manager based on libarchive.|https://github.com/tsujan/Arqiver|{{AUR|arqiver-git}}}}&lt;br /&gt;
* {{App|CoreArchiver|Simple file compressing/extracting utility based on Qt and libarchive-qt. Part of C-Suite.|https://cubocore.org/|{{AUR|corearchiver}}}}&lt;br /&gt;
* {{App|Deepin Archive Manager|Fast and lightweight application for creating and extracting archives.|https://github.com/linuxdeepin/deepin-compressor|{{Pkg|deepin-compressor}}}}&lt;br /&gt;
* {{App|Engrampa|[[MATE]] のアーカイブマネージャ。|https://github.com/mate-desktop/engrampa|{{Pkg|engrampa}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GNOME Archive Manager|GNOME Archive Manager]]|GNOME のデフォルト圧縮ファイルマネージャ (previously File Roller).|https://wiki.gnome.org/Apps/FileRoller|{{Pkg|file-roller}}}}&lt;br /&gt;
* {{App|LXQt File Archiver|Simple and lightweight desktop-agnostic Qt file archiver.|https://github.com/lxqt/lxqt-archiver|{{Pkg|lxqt-archiver}}}}&lt;br /&gt;
* {{App|p7zip-gui|The GUI belonging to the p7zip software.|http://p7zip.sourceforge.net/|{{AUR|p7zip-gui}}}}&lt;br /&gt;
* {{App|[[Wikipedia:PeaZip|PeaZip]]|オープンソースのファイル・アーカイブマネージャ。|https://www.peazip.org/peazip-linux.html|GTK: {{AUR|peazip-gtk2-bin}}, Qt: {{AUR|peazip-qt-bin}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Xarchiver|Xarchiver]]|GTK で作られた軽量なデスクトップ非依存のアーカイブマネージャ。|https://github.com/ib/xarchiver|GTK 3: {{Pkg|xarchiver}}, GTK 2: {{Pkg|xarchiver-gtk2}}}}&lt;br /&gt;
&lt;br /&gt;
==== Comparison, diff, merge ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of file comparison tools]].&lt;br /&gt;
&lt;br /&gt;
For managing &#039;&#039;pacnew&#039;&#039;/&#039;&#039;pacsave&#039;&#039; files, specialised tools exist. See [[Pacnew と Pacsave ファイル#.pac* ファイルの管理]].&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
See {{man|1|diff}} from {{Pkg|diffutils}} and [[Core utilities#diff alternatives|its alternatives]].&lt;br /&gt;
&lt;br /&gt;
* {{App|colordiff|&#039;diff&#039; の Perl スクリプトラッパー。同じ出力にシンタックスハイライトを追加。|https://www.colordiff.org/|{{Pkg|colordiff}}}}&lt;br /&gt;
* {{App|diffr|A Rust utility to pretty-print diff with highlighting at word-level for ease of review.|https://github.com/mookid/diffr|{{aur|diffr}}}}&lt;br /&gt;
* {{App|ydiff|A Python wrapper to get highlighted diff output from stdin or VCS-tracked file/dirs, in either unfied or side-by-side view.|https://github.com/ymattw/ydiff|{{AUR|ydiff}}}}&lt;br /&gt;
* {{App|delta|A diff viewer written in Rust with syntax highlighting.|https://github.com/dandavison/delta|{{Pkg|git-delta}}}}&lt;br /&gt;
* {{App|diff-so-fancy|A diff output decorator. It does not calculate the diff, it only decorates it.|https://github.com/so-fancy/diff-so-fancy|{{Pkg|diff-so-fancy}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
&lt;br /&gt;
* {{App|DiffPDF|Compare the text or the visual appearance of each page in two PDF files.|https://gitlab.com/eang/diffpdf|{{Pkg|diffpdf}}}}&lt;br /&gt;
* {{App|Diffuse|Python で書かれた小さくてシンプルなテキストマージツール。|http://diffuse.sourceforge.net/|{{Pkg|diffuse}}}}&lt;br /&gt;
* {{App|KDiff3|KDE デスクトップのファイルとディレクトリの比較・マージツール。|https://apps.kde.org/kdiff3/|{{Pkg|kdiff3}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Kompare|Kompare]]|ソースファイルの差を回覧・マージするための GUI フロントエンドプログラム。様々な diff フォーマットをサポートし、表示する情報レベルをカスタマイズするための多くのオプションがある。|https://apps.kde.org/kompare/|{{Pkg|kompare}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Meld (software)|Meld]]|ビジュアル比較・マージツール。ファイル・ディレクトリ・プロジェクトのバージョンの比較が可能。|https://meldmerge.org/|{{Pkg|meld}}}}&lt;br /&gt;
* {{App|xxdiff|ファイルやディレクトリの差異を表示するグラフィカルブラウザ。|https://furius.ca/xxdiff/|{{AUR|xxdiff}}}}&lt;br /&gt;
&lt;br /&gt;
[[Vim]] と [[Emacs]] にはそれぞれ [[Vim#ファイルのマージ (vimdiff)|vimdiff]] と {{ic|ediff}} というマージ機能があります。&lt;br /&gt;
&lt;br /&gt;
==== バッチ処理リネームプログラム ====&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
See {{man|1|rename}} from {{Pkg|util-linux}}.&lt;br /&gt;
&lt;br /&gt;
* {{App|edir|Rename, delete, and copy files and directories using your editor (enhanced vidir).|https://github.com/bulletmark/edir|{{AUR|edir}}}}&lt;br /&gt;
* {{App|f2|Cross-platform command-line tool for batch renaming files and directories quickly and safely, can also rename files based on audio tags.|https://github.com/ayoisaiah/f2|{{AUR|f2}}}}&lt;br /&gt;
* {{App|rename.pl|perl regex ベースのバッチリネーマー。|https://search.cpan.org/~pederst/rename/|{{Pkg|perl-rename}}}}&lt;br /&gt;
* {{App|vidir|Rename and delete files and directories using your editor.|https://linux.die.net/man/1/vidir|{{AUR|vidir}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
* {{App|Caja-Rename|Batch renaming extension for Caja.|https://tari.in/www/software/caja-rename|{{AUR|caja-rename}}}}&lt;br /&gt;
* {{App|CoreRenamer|Simple lightweight batch file renamer application. Part of C-Suite.|https://cubocore.org/|{{AUR|corerenamer}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GPRename|GPRename]]|ファイルとディレクトリの名前を変える GTK バッチ処理プログラム。|http://gprename.sourceforge.net|{{Pkg|gprename}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KRename|KRename]]|KDE デスクトップ向けのとてもパワフルなバッチ処理リネームプログラム。|https://apps.kde.org/krename/|{{Pkg|krename}}}}&lt;br /&gt;
* {{App|metamorphose2|wxPython ベースのバッチリネーマーで、正規表現や、メタデータによるマルチメディアファイルの名前変更などをサポートしています。|http://file-folder-ren.sourceforge.net|{{AUR|metamorphose2}}}}&lt;br /&gt;
* {{App|[[Thunar]] Bulk Rename|Change the name of multiple files at once using some criterion that applies to at least one of the files. Run with {{ic|thunar -B}}.|https://docs.xfce.org/xfce/thunar/bulk-renamer/start|{{Pkg|thunar}}}}&lt;br /&gt;
&lt;br /&gt;
==== ファイル検索 ====&lt;br /&gt;
&lt;br /&gt;
This section lists utilities for file searching based on filename, file path or metadata. For full-text searching, see the next section.&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of search engines#Desktop search engines]].&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
See {{man|1|find}} from {{Pkg|findutils}} and [[Core utilities#find alternatives|its alternatives]].&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Catfish|多目的のファイル検索ツール by Xfce, can be powered by find, locate and Zeitgeist.|https://launchpad.net/catfish-search|{{Pkg|catfish}}}}&lt;br /&gt;
* {{App|CoreHunt|Easy to use fast file searching tool with categorized search and search history. Part of C-Suite.|https://cubocore.org/|{{AUR|corehunt}}}}&lt;br /&gt;
* {{App|GNOME Search Tool|ファイルを検索する Gnome ユーティリティ, depends on [[GNOME Files]].|https://gitlab.gnome.org/GNOME/gnome-search-tool|{{Pkg|gnome-search-tool}}}}&lt;br /&gt;
* {{App|KFind|Search tool for KDE to find files by name, type or content. Has internal search and supports locate.|https://apps.kde.org/kfind/|{{Pkg|kfind}}}}&lt;br /&gt;
* {{App|MATE Search Tool|MATE utility to search for files.|https://github.com/mate-desktop/mate-utils|{{Pkg|mate-utils}}}}&lt;br /&gt;
* {{App|regexxer|Interactive search and replace tool featuring Perl-style regular expressions.|http://regexxer.sourceforge.net/|{{Pkg|regexxer}}}}&lt;br /&gt;
* {{App|Searchmonkey|正規表現が使えるパワフルな GUI 検索ユーティリティ。|https://sourceforge.net/projects/searchmonkey/|{{AUR|searchmonkey}}{{Broken package link|package not found}}}}&lt;br /&gt;
&lt;br /&gt;
====== File indexers ======&lt;br /&gt;
&lt;br /&gt;
These programs index your files to allow for quick searching.&lt;br /&gt;
&lt;br /&gt;
* {{App|Basenji|Volume indexing tool designed for easy and fast indexing of CD/DVD and other type of volume collections.|https://github.com/pulb/basenji|{{AUR|basenji}}}}&lt;br /&gt;
* {{App|fsearch|A fast file search utility for Unix-like systems based on GTK 3.|https://github.com/cboxdoerfer/fsearch|{{AUR|fsearch-git}}}}&lt;br /&gt;
&lt;br /&gt;
==== Full-text searching ====&lt;br /&gt;
&lt;br /&gt;
See {{man|1|grep}} from {{Pkg|grep}} and [[Core utilities#grep alternatives|its alternatives]], which provide non-indexed [[Wikipedia:Full-text search|full-text search]].&lt;br /&gt;
&lt;br /&gt;
===== Full-text indexers =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Baloo]]|KDE のファイルインデックス作成・検索ソリューション, has a CLI and is used by [[KRunner]].|https://community.kde.org/Baloo|{{Pkg|baloo}}}}&lt;br /&gt;
* {{App|[[Wikipedia:DocFetcher|DocFetcher]]|Graphical Java デスクトップ検索アプリケーション。|http://docfetcher.sourceforge.net|{{AUR|docfetcher}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Recoll|Recoll]]|Xapian がバックエンドのフルテキスト検索ツール, has CLI and GUI.|https://lesbonscomptes.com/recoll/|{{Pkg|recoll}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Tracker (search software)|Tracker]]|オールインワンのインデックス作成・検索ツールとメタデータのデータベース, used by [[GNOME]] Documents, Music, Photos and Videos.|https://gnome.pages.gitlab.gnome.org/tracker/|{{Pkg|tracker}}, {{Pkg|tracker3}}}}&lt;br /&gt;
* {{App|[[Zeitgeist]]|Event aggregation framework for the user&#039;s activities and notifications (files opened, websites visited, conversations had, etc.), has several third-party front-ends.|https://launchpad.net/zeitgeist-project|{{Pkg|zeitgeist}}}}&lt;br /&gt;
&lt;br /&gt;
=== Development ===&lt;br /&gt;
&lt;br /&gt;
==== Code forges ====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[GitLab]]|Project management and code hosting application.|https://gitlab.com/gitlab-org/gitlab-foss|{{Pkg|gitlab}}}}&lt;br /&gt;
* {{App|[[Gitea]]|Painless self-hosted Git service. Community managed fork of Gogs.|https://gitea.io|{{Pkg|gitea}}}}&lt;br /&gt;
&lt;br /&gt;
===== Code forge clients =====&lt;br /&gt;
&lt;br /&gt;
* {{App|git-open|Open a repo website (GitHub, GitLab, Bitbucket) in your browser|https://github.com/paulirish/git-open|{{AUR|git-open}}}}&lt;br /&gt;
* {{App|github-cli|GitHub&#039;s official command line tool|https://github.com/cli/cli|{{Pkg|github-cli}}}}&lt;br /&gt;
* {{App|hub|Command line interface for GitHub|https://hub.github.com|{{Pkg|hub}}}}&lt;br /&gt;
* {{App|lab|A hub-like tool for GitLab|https://zaquestion.github.io/lab/|{{AUR|lab-bin}}}}&lt;br /&gt;
* {{App|snippet|A terminal based interface to create a new GitLab snippet|https://gitlab.com/zj/snippet|{{AUR|snippet}}}}&lt;br /&gt;
&lt;br /&gt;
==== バージョン管理システム ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Comparison of revision control software]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Bazaar]]|Distributed version control system that helps you track project history over time and to collaborate easily with others.|https://bazaar.canonical.com/|{{AUR|bzr}}}}&lt;br /&gt;
* {{App|[[CVS]]|Concurrent Versions System, a client-server revision control system.|http://cvs.nongnu.org/|{{Pkg|cvs}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Darcs|Darcs]]|Distributed revision control system that was designed to replace traditional, centralized source control systems such as CVS and Subversion.|http://darcs.net/|{{Pkg|darcs}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Fossil (software)|Fossil]]|Distributed VCS with bug tracking, wiki, forum, and technotes.|https://www.fossil-scm.org/|{{Pkg|fossil}}}}&lt;br /&gt;
* {{App|[[Git]]|Distributed revision control and source code management system with an emphasis on speed.|https://git-scm.com/|{{Pkg|git}}}}&lt;br /&gt;
* {{App|[[Mercurial]]|Distributed version control system written in Python and similar in many ways to Git.|https://www.mercurial-scm.org/|{{Pkg|mercurial}}}}&lt;br /&gt;
* {{App|[[Subversion]]|Full-featured centralized version control system originally designed to be a better CVS.|https://subversion.apache.org/|{{Pkg|subversion}}}}&lt;br /&gt;
&lt;br /&gt;
==== ビルド自動化 ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of build automation software]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Apache Ant|Apache Ant]]|Java ライブラリとコマンドラインツール。相互に依存するターゲットや拡張ポイントにあわせてビルドファイルに書かれている手順を実行します。|https://ant.apache.org/|{{Pkg|ant}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Apache Maven|Apache Maven]]|Build automation tool used primarily for Java.|https://maven.apache.org/|{{Pkg|maven}}}}&lt;br /&gt;
* {{App|[[Wikipedia:CMake|CMake]]|ソフトウェアをビルド、テスト、パッケージ化するためのツール群。|https://cmake.org/|{{Pkg|cmake}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Make (software)|GNU make]]|プログラムのグループを管理するための、GNU make ユーティリティ。|https://www.gnu.org/software/make/|{{Pkg|make}} ({{Grp|base-devel}} の一部)}}&lt;br /&gt;
* {{App|[[Wikipedia:Meson (software)|Meson]]|Extremely fast and user friendly build system.|https://mesonbuild.com/|{{Pkg|meson}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Gradle|Gradle]]|JVM の強力なビルドシステム。|https://gradle.org/|{{Pkg|gradle}}}}&lt;br /&gt;
* {{App|Phing|あらゆる作業を自動化する PHP プログラム。|https://www.phing.info/|{{AUR|phing}}}}&lt;br /&gt;
&lt;br /&gt;
==== 統合開発環境 ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of integrated development environments]].&lt;br /&gt;
&lt;br /&gt;
For PHP specific list, see [[PHP#Development tools]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Android Studio]]|The official Android development environment based on IntelliJ IDEA.|https://developer.android.com/studio/index.html|{{AUR|android-studio}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Anjuta|Anjuta]]|プロジェクト管理、アプリケーションウィザード、インタラクティブデバッガ、ソースエディタ、バージョンコントロールなど多数のツールを備えた多目的 IDE。|http://anjuta.org/|{{Pkg|anjuta}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Aptana#Aptana_Studio|Aptana Studio]]|ウェブ開発を対象にしている Eclipse ベースの IDE。HTML, CSS, Javascript, Ruby on Rails, PHP, Adobe AIR などをサポート。|http://www.aptana.com/|{{AUR|aptana-studio}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Bluefish (software)|Bluefish]]|Powerful editor targeted towards programmers and webdevelopers, with many options to write websites, scripts and programming code. It supports many programming and markup languages.|http://bluefish.openoffice.nl/|{{Pkg|bluefish}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Code::Blocks|Code::Blocks]]|C, C++ and Fortran IDE built to meet the most demanding needs of its users. It is designed to be very extensible and fully configurable.|https://codeblocks.org/|{{Pkg|codeblocks}}}}&lt;br /&gt;
* {{App|[[Wikipedia:JetBrains#CLion|CLion]]|A cross-platform IDE for C and C++.|https://www.jetbrains.com/clion/|{{AUR|clion}}}}&lt;br /&gt;
* {{App|[[Wikipedia:CodeLite|CodeLite]]|C++ で書かれた C/C++/PHP/Node.js のオープンソースなクロスプラットフォーム IDE。|https://codelite.org/|{{AUR|codelite}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Cloud9 IDE|Cloud9]]|ブラウザやクラウドで動く最新の IDE、どこでも・いつでもアプリケーションを実行・デバッグ・開発できます。|https://c9.io/|{{AUR|c9.core}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|[[Eclipse]]|IDE for Java, C/C++, PHP, Perl and Python with subversion support and task management.|https://www.eclipse.org/|Java EE: {{AUR|eclipse-jee}}, Java: {{AUR|eclipse-java}}, C/C++: {{AUR|eclipse-cpp}}, PHP: {{AUR|eclipse-php}}, JavaScript and Web: {{AUR|eclipse-javascript}}{{Broken package link|package not found}}, Rust: {{AUR|eclipse-rust}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Eric (software)|Eric]]|PyQt5 によるフル機能の Python / Ruby IDE。|https://eric-ide.python-projects.org/|{{AUR|eric}}}}&lt;br /&gt;
* {{App|[[Gambas]]|Basic インタプリタをベースにオブジェクト指向の拡張を加えたフリーの開発環境。|http://gambas.sourceforge.net/en/main.html|{{Pkg|gambas3-ide}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Geany|Geany]]|Small and lightweight IDE with many supported many programming and markup languages including C, Java, PHP, HTML, Python, Perl, Pascal.|https://geany.org/|{{Pkg|geany}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GNOME Builder|GNOME Builder]]|Tool to write and contribute to great GNOME-based applications.|https://wiki.gnome.org/Apps/Builder|{{Pkg|gnome-builder}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KDevelop|KDevelop]]|機能豊富なプラグインを使うことができる C/C++ などのプログラミング言語の IDE。|https://www.kdevelop.org/|{{Pkg|kdevelop}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Komodo_Edit|Komodo Edit]]|フリーの、多言語エディタ。|https://www.activestate.com/products/komodo-edit/|{{AUR|komodo-edit}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Lazarus (IDE)|Lazarus]]|Delphi (Object Pascal) compatible IDE for Rapid Application Development. It has variety of components ready for use and a graphical form designer to easily create complex graphical user interfaces.|https://www.lazarus-ide.org/|{{Pkg|lazarus}}}}&lt;br /&gt;
* {{App|LiteIDE|シンプルな Go の IDE。|https://github.com/visualfc/liteide|{{Pkg|liteide}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MPLAB|MPLAB]]|Microchip PIC と dsPIC 開発のための IDE。|https://www.microchip.com/mplabx|{{AUR|microchip-mplabx-bin}}}}&lt;br /&gt;
* {{App|[[Netbeans]]|Java, JavaScript, PHP, Python, Ruby, Groovy, C, C++, Scala, Clojure などの言語で開発するための統合開発環境 (IDE)。|https://netbeans.org/|{{Pkg|netbeans}}}}&lt;br /&gt;
* {{App|[[Wikipedia:PhpStorm|PhpStorm]]|JetBrains PhpStorm は PHP 向けの商用のクロスプラットフォーム IDE です。JetBrains の IntelliJ IDEA プラットフォームの上で動作し、providing an editor for PHP, HTML and JavaScript with PHP や JavaScript コードをオンザフライでコード解析したり、エラー補正や自動リファクタリングが行えるエディタを提供します。|https://www.jetbrains.com/phpstorm/|{{Aur|phpstorm}} {{Aur|phpstorm-eap}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Qt Creator|Qt Creator]]|Qt での開発に焦点をおいた軽量なクロスプラットフォームの C++ 統合開発環境。|https://www.qt.io/ide/|{{Pkg|qtcreator}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Eclipse_Theia|Theia]]|Eclipse Theia is a free and open-source IDE for desktop and web applications. It is implemented in TypeScript, is based on Visual Studio Code, and emphasizes extensibility. It can be run as a web or a desktop application.|https://theia-ide.org/|{{AUR|theia-electron}}}}&lt;br /&gt;
* {{App|[[Visual Studio Code]]|Visual Studio Code is a cross-platform, free and open-source text editor developed by Microsoft, written in JavaScript and TypeScript. It supports a variety of languages thanks to its extensions.|https://code.visualstudio.com/|{{Pkg|code}} {{AUR|visual-studio-code-bin}}}}&lt;br /&gt;
* {{App|VSCodium|Free/Libre Open Source Software Binaries of VSCode.|https://vscodium.com/|{{AUR|vscodium-bin}}}}&lt;br /&gt;
&lt;br /&gt;
===== Java IDEs =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:BlueJ|BlueJ]]|教育や初心者が主に使うことを目的とした完全な機能を備えた Java IDE。|https://bluej.org/|{{AUR|bluej}}}}&lt;br /&gt;
* {{App|[[Wikipedia:IntelliJ IDEA|IntelliJ IDEA]]|高度なリファクタリング機能を持つ Java, Groovy などのプログラミング言語向けの IDE。|https://www.jetbrains.com/idea/|{{Pkg|intellij-idea-community-edition}}}}&lt;br /&gt;
&lt;br /&gt;
===== Python IDEs =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Ninja-IDE|Ninja-IDE]]|IDE for Python development.|http://ninja-ide.org/|{{AUR|ninja-ide}}}}&lt;br /&gt;
* {{App|[[Wikipedia:PyCharm|PyCharm]]|Python でのプログラミングに使われる IDE。コード解析、デバッグ、ユニットテスト、バージョンコントロール、Django によるウェブ開発をサポート。|https://www.jetbrains.com/pycharm/|community edition: {{Pkg|pycharm-community-edition}}, professional edition: {{AUR|pycharm-professional}}, edu edition: {{AUR|pycharm-edu}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Spyder (software)|Spyder]]|MATLAB のような機能を提供する科学用 Python 開発環境。|https://github.com/spyder-ide/spyder|{{Pkg|spyder}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Thonny|Thonny]]|初心者向けの Python IDE。|https://thonny.org/|{{AUR|thonny}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Wing IDE|WingIDE]]|Proprietary Python development environment. It is fully featured and meant for professional use.|https://wingware.com/|{{Aur|wingide}}}}&lt;br /&gt;
&lt;br /&gt;
===== Rust IDEs =====&lt;br /&gt;
&lt;br /&gt;
See also: [https://www.rust-lang.org/tools]&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:IntelliJ IDEA|IntelliJ IDEA]]|IDE for Java, Groovy and other programming languages with advanced refactoring features.|https://www.jetbrains.com/idea/|{{Pkg|intellij-idea-community-edition}}}} Install the [https://plugins.jetbrains.com/plugin/8182-rust rust plugin].&lt;br /&gt;
* {{App|[[Visual Studio Code]]|Visual Studio Code is a cross-platform, free and open-source text editor developed by Microsoft, written in JavaScript and TypeScript. It supports a variety of languages thanks to its extensions.|https://code.visualstudio.com/|{{Pkg|code}} {{AUR|visual-studio-code-bin}}}} Install the [https://marketplace.visualstudio.com/items?itemName=rust-lang.rust rust extension].&lt;br /&gt;
* {{App|VSCodium|Free/Libre Open Source Software Binaries of VSCode.|https://vscodium.com/|{{AUR|vscodium-bin}}}}&lt;br /&gt;
&lt;br /&gt;
===== Educational IDEs =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Etoys (programming language)|Etoys]]|Educational tool and media-rich authoring environment for teaching children.|http://squeakland.org/|{{AUR|etoys}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KTurtle|KTurtle]]|Educational programming environment that aims to make learning how to program as easily as possible. Part of {{Grp|kde-education}}.|https://apps.kde.org/kturtle/|{{Pkg|kturtle}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Processing (programming language)|Processing]]|Playground for teaching non-programmers the fundamentals of computer programming in a visual context.|https://processing.org/|{{AUR|processing}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Scratch (programming language)|Scratch]]|インタラクティブなプロジェクトやシンプルなスプライトベースのゲームを作成できる、教育とエンターテイメント用の programming system and content development tool。[[Wikipedia:ja:イベント駆動型プログラミング|イベント駆動型プログラミング]]のエントリのように初心者 (子供など) を主に対象としています。|https://scratch.mit.edu/|{{Pkg|scratch}}}}&lt;br /&gt;
&lt;br /&gt;
==== Debuggers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Accerciser|Interactive Python accessibility explorer. It uses the AT-SPI library to inspect, examine, and interact with widgets, allowing you to check if an application is providing correct information to assistive technologies and automated testing frameworks.|https://wiki.gnome.org/Apps/Accerciser|{{Pkg|accerciser}}}}&lt;br /&gt;
* {{App|Bustle|Draws sequence diagrams of D-Bus activity. It shows signal emissions, method calls and their corresponding returns, with time stamps for each individual event and the duration of each method call.|https://www.freedesktop.org/wiki/Software/Bustle/|{{AUR|bustle-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Data Display Debugger|Data Display Debugger]]|Graphical front-end for command-line debuggers such as GDB.|https://www.gnu.org/software/ddd/|{{AUR|ddd}}}}&lt;br /&gt;
* {{App|Desed|TUI-based debugger for sed. Features variable and regex preview, setting breakpoints and stepping back and forth.|https://github.com/SoptikHa2/desed|{{AUR|desed}}}}&lt;br /&gt;
* {{App|D-Feet|Easy to use D-Bus debugger to inspect D-Bus interfaces of running programs and invoke methods on those interfaces.|https://wiki.gnome.org/Apps/DFeet|{{Pkg|d-feet}}}}&lt;br /&gt;
* {{App|GammaRay|Qt-application inspection and manipulation tool.|https://www.kdab.com/development-resources/qt-tools/gammaray/|{{Pkg|gammaray}}}}&lt;br /&gt;
* {{App|KCachegrind|Profile data visualization tool, used to determine the most time consuming execution parts of program.|https://apps.kde.org/kcachegrind/|KDE: {{Pkg|kcachegrind}}, Qt: {{Pkg|qcachegrind}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KDbg|KDbg]]|Graphical user interface to GDB, the GNU debugger. It provides an intuitive interface for setting breakpoints, inspecting variables, and stepping through code.|http://kdbg.org/|{{Pkg|kdbg}}}}&lt;br /&gt;
* {{App|Massif-Visualizer|Visualizer for Valgrind Massif data files.|https://apps.kde.org/massif-visualizer/|{{Pkg|massif-visualizer}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Nemiver|Nemiver]]|Easy to use standalone C/C++ debugger (GDB front-end) that integrates well in the GNOME environment.|https://wiki.gnome.org/Apps/Nemiver|{{Pkg|nemiver}}}}&lt;br /&gt;
* {{App|Qt QDbusViewer|Tool to introspect D-Bus objects and messages.|https://doc.qt.io/qt-5/qdbusviewer.html|{{Pkg|qt5-tools}}}}&lt;br /&gt;
* {{App|scanmem|Debugging utility designed to isolate the address of an arbitrary variable in an executing process.|https://github.com/scanmem/scanmem|CLI: {{Pkg|scanmem}}, GUI: {{Pkg|gameconqueror}}}}&lt;br /&gt;
* {{App|Sysprof|Profiling tool that helps in finding the functions in which a program uses most of its time.|https://wiki.gnome.org/Apps/Sysprof|{{Pkg|sysprof}}}}&lt;br /&gt;
&lt;br /&gt;
==== Lexing and parsing ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Lex (software)|Lex]] and [[Wikipedia:Yacc|Yacc]] are part of POSIX.&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Flex (lexical analyser generator)|flex]]|A tool for generating text-scanning programs, alternative to Lex.|https://github.com/westes/flex|{{Pkg|flex}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Berkeley Yacc|Berkeley Yacc]]|Berkeley reimplementation of the Unix parser generator Yacc.|https://invisible-island.net/byacc/|{{Pkg|byacc}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GNU bison|GNU Bison]]|The GNU general-purpose parser generator, alternative to &#039;&#039;byacc&#039;&#039;.|https://www.gnu.org/software/bison/|{{Pkg|bison}}}}&lt;br /&gt;
&lt;br /&gt;
And then there are also:&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:ANTLR|ANTLR]]|Parser generator, written in Java, for parsing structured text or binary files.|https://www.antlr.org/|{{Pkg|antlr4}}}}&lt;br /&gt;
* {{App|LPeg|Pattern-matching library, based on PEGs, for Lua.|http://www.inf.puc-rio.br/~roberto/lpeg/|{{Pkg|lua-lpeg}}, {{Pkg|lua52-lpeg}}, {{Pkg|lua51-lpeg}}}}&lt;br /&gt;
* {{App|peg/leg|Recursive-descent parser generators for C.|https://www.piumarta.com/software/peg/|{{Pkg|peg}}}}&lt;br /&gt;
* {{App|Ragel|Compiles finite state machines from regular languages into executable C, C++, Objective-C, or D code.|https://www.colm.net/open-source/ragel/|{{Pkg|ragel}}}}&lt;br /&gt;
&lt;br /&gt;
==== GUI builders ====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:FLUID|FLUID]]|FLTK GUI designer.|https://www.fltk.org/|{{Pkg|fltk}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Glade Interface Designer|Glade]]|Create or open user interface designs for GTK applications.|https://glade.gnome.org/|{{Pkg|glade}}}}&lt;br /&gt;
* {{App|KUIViewer|Quick viewer for Qt Designer UI File.|https://apps.kde.org/kuiviewer/|{{Pkg|kde-dev-utils}}}}&lt;br /&gt;
* {{App|Qt Designer|Tool for designing and building graphical user interfaces (GUIs) with Qt Widgets.|https://doc.qt.io/qt-5/qtdesigner-manual.html|{{Pkg|qt5-tools}}}}&lt;br /&gt;
&lt;br /&gt;
==== Hex editors ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of hex editors]].&lt;br /&gt;
&lt;br /&gt;
* {{App|Bless|High quality, full featured hex editor.|https://web.archive.org/web/20170503150524/http://home.gna.org/bless/|{{Pkg|bless}}}}&lt;br /&gt;
* {{App|GHex|Hex editor for GNOME, which allows the user to load data from any file, view and edit it in either hex or ascii.|https://wiki.gnome.org/Apps/Ghex|{{Pkg|ghex}}}}&lt;br /&gt;
* {{App|hyx|Minimalistic but powerful console hex editor.|https://yx7.cc/code/|{{AUR|hyx}}}}&lt;br /&gt;
* {{App|Reverse Engineer&#039;s Hex Editor|Hex editor with features for analyzing and annotating binary file formats|https://github.com/solemnwarning/rehex|{{AUR|rehex}}}}&lt;br /&gt;
* {{App|Okteta|KDE hex editor for viewing and editing the raw data of files.|https://apps.kde.org/okteta/|{{Pkg|okteta}}}}&lt;br /&gt;
&lt;br /&gt;
==== JSON tools ====&lt;br /&gt;
&lt;br /&gt;
* {{App|gron|gron transforms JSON into discrete assignments to make it easier to grep.|https://github.com/tomnomnom/gron|{{AUR|gron-bin}}}}&lt;br /&gt;
* {{App|jid|JSON incremental digger|https://github.com/simeji/jid|{{AUR|jid}}}}&lt;br /&gt;
* {{App|jo|A command to create JSON.|https://github.com/jpmens/jo|{{AUR|jo-git}}}}&lt;br /&gt;
* {{App|jq|Command-line JSON processor|https://stedolan.github.io/jq/|{{Pkg|jq}}}}&lt;br /&gt;
* {{App|jshon|A JSON parser for the shell.|http://kmkeen.com/jshon/|{{Pkg|jshon}}}}&lt;br /&gt;
* the [[Elvish]] shell has built-in support for JSON&lt;br /&gt;
&lt;br /&gt;
==== Literate programming ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Literate programming]].&lt;br /&gt;
&lt;br /&gt;
* {{App|Noweb|A Simple, Extensible Tool for Literate Programming build against ICON libs and texlive|https://www.cs.tufts.edu/~nr/noweb/|{{AUR|noweb}}}}&lt;br /&gt;
* {{App|nuweb|A Simple Literate Programming Tool|http://nuweb.sourceforge.net/|{{AUR|nuweb}}}}&lt;br /&gt;
&lt;br /&gt;
==== UML modelers ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of Unified Modeling Language tools]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:ArgoUML|ArgoUML]]|UML modeling tool with support for all standard UML 1.4 diagrams.|http://argouml.tigris.org/|{{AUR|argouml}}}}&lt;br /&gt;
* {{App|[[Eclipse]] Modeling Tools|Tools and runtimes for building model-based applications.|https://www.eclipse.org/|{{AUR|eclipse-modeling-tools}}}}&lt;br /&gt;
* {{App|Gaphor|Simple modeling tool for UML.|https://github.com/gaphor/gaphor|{{AUR|python-gaphor}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Modelio|Modelio]]|Modeling environment supporting the main standards: UML, BPMN, MDA, SysML.|https://www.modelio.org/|{{AUR|modelio-bin}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Papyrus (software)|Papyrus]]|Model-based engineering tool based on Eclipse.|https://www.eclipse.org/papyrus/|{{AUR|papyrus}}}}&lt;br /&gt;
* {{App|[[Wikipedia:PlantUML|PlantUML]]|Tool to create UML diagrams from a plain text language.|https://plantuml.com|{{Pkg|plantuml}}}}&lt;br /&gt;
* {{App|PlantUML QEditor|PlantUML editor written in Qt.|https://github.com/borco/plantumlqeditor|{{AUR|plantumlqeditor-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Umbrello UML Modeller|Umbrello]]|Unified Modelling Language (UML) diagram program based on KDE Technology.|https://umbrello.kde.org/|{{Pkg|umbrello}}}}&lt;br /&gt;
* {{App|[[Wikipedia:UML Designer|UML Designer]]|Graphical tool based on Eclipse to edit and visualize UML models.|https://www.umldesigner.org/|{{AUR|umldesigner}}}}&lt;br /&gt;
* {{App|[[Wikipedia:UMLet|UMLet]]|UML tool with a simple user interface: draw UML diagrams fast, build sequence and activity diagrams from plain text, export diagrams to eps, pdf, jpg, svg, and clipboard, share diagrams using Eclipse, and create new, custom UML elements.|https://umlet.com/|{{AUR|umlet}}}}&lt;br /&gt;
* {{App|UML/INTERLIS-editor|Facilitate the application of the model driven approach to a greater number of users.|http://www.umleditor.org/|{{AUR|umleditor}}}}&lt;br /&gt;
* {{App|Violet|Very easy to learn and use UML editor that draws nice-looking diagrams.|https://sourceforge.net/projects/violet/|{{AUR|violetumleditor}}}}&lt;br /&gt;
&lt;br /&gt;
==== API documentation browsers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:GNOME Devhelp|Devhelp]]|Developer tool for browsing and searching API documentation.|https://wiki.gnome.org/Apps/Devhelp|{{Pkg|devhelp}}}}&lt;br /&gt;
* {{App|Doc Browser|API documentation browser with support for DevDocs and Hoogle.|https://github.com/qwfy/doc-browser|{{AUR|doc-browser-git}}}}&lt;br /&gt;
* {{App|Qt Assistant|Tool for viewing on-line documentation in Qt help file format.|https://doc.qt.io/qt-5/qtassistant-index.html|{{Pkg|qt5-tools}}}}&lt;br /&gt;
* {{App|quickDocs|Fast developer docs reader for reading Valadoc and DevDocs.|https://github.com/mdh34/quickDocs|{{AUR|quickdocs}}}}&lt;br /&gt;
* {{App|Zeal|Offline API documentation browser for software developers.|https://zealdocs.org/|{{AUR|zeal}}}}&lt;br /&gt;
&lt;br /&gt;
==== 課題追跡システム ====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Bugzilla]]|Bug tracker from Mozilla.|https://www.bugzilla.org|{{Pkg|bugzilla}}}}&lt;br /&gt;
* {{App|[[Flyspray]]|Lightweight, web-based bug tracking system written in PHP|https://www.flyspray.org/|{{Pkg|flyspray}}}}&lt;br /&gt;
* {{App|[[MantisBT]]|Web-based issue tracking system|https://www.mantisbt.org/|{{AUR|mantisbt}}}}&lt;br /&gt;
* {{App|[[Redmine]]|A flexible project management web application. Written using the Ruby on Rails, it is cross-platform and cross-database.|https://www.redmine.org|{{Pkg|redmine}}}}&lt;br /&gt;
* {{App|[[Request Tracker]] (RT)|The leading open-source issue tracking system.|https://bestpractical.com/rt/|{{AUR|rt}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|[[Trac]]|Trac Integrated SCM &amp;amp; Project Management using Apache &amp;amp; Subversion.|https://trac.edgewall.org/|{{AUR|trac}}}}&lt;br /&gt;
&lt;br /&gt;
[[:en:Git server#Advanced web applications]] を参照。&lt;br /&gt;
&lt;br /&gt;
==== Code review ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Gerrit|A web-based code review tool built on top of the Git version control system|https://www.gerritcodereview.com/|{{AUR|gerrit}}}}&lt;br /&gt;
* [[GitLab]] also supports code reviews.&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of tools for code review]].&lt;br /&gt;
&lt;br /&gt;
==== Game development ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of game engines]].&lt;br /&gt;
&lt;br /&gt;
* {{App|GDevelop|Game creator designed to be used by everyone - no programming skills required.|https://gdevelop-app.com/|{{AUR|gdevelop}}}}&lt;br /&gt;
* {{App|[[:en:Godot]]|Advanced, feature-packed, multi-platform 2D and 3D game engine. Create games with ease, using Godot&#039;s unique approach to game development.|https://godotengine.org/|{{Pkg|godot}}}}&lt;br /&gt;
* {{App|LibreSprite|Animated sprite editor and pixel art tool lets you create 2D animations for videogames.|https://github.com/LibreSprite/LibreSprite|{{AUR|libresprite}}}}&lt;br /&gt;
* {{App|Pixelorama|2D sprite editor with animation support, made by Orama Interactive in the Godot Engine using GDScript.|https://www.orama-interactive.com/pixelorama{{Dead link|2021|05|17|status=404}}|{{AUR|pixelorama-bin}}}}&lt;br /&gt;
* {{App|Tiled|General purpose 2D level editor with powerful tile map editing features. It is built to be easy to use and is suitable for many type of games.|https://www.mapeditor.org/|{{Pkg|tiled}}}}&lt;br /&gt;
* {{App|[[Unity3D|Unity]]|Unity is a flexible and powerful development platform for creating multi-platform 3D and 2D games. Proprietary, but a free version is available for certain use-cases (see [https://store.unity.com/compare-plans here] for more details).|https://unity3d.com/unity|{{AUR|unity-editor}}}}&lt;br /&gt;
&lt;br /&gt;
==== Repository managers ====&lt;br /&gt;
&lt;br /&gt;
{{Style|Redirects to company blogs should not be here.}}&lt;br /&gt;
&lt;br /&gt;
* {{App|Nexus 2|Nexus 2 Repository Manager (OSS)|https://www.sonatype.com/nexus-repository-oss|{{AUR|nexus}}}}&lt;br /&gt;
* {{App|Nexus 3|Nexus 3 Repository OSS|https://www.sonatype.com/nexus-repository-oss|{{AUR|nexus-oss}}}}&lt;br /&gt;
* {{App|Artifactory|Artifactory is an advanced Binary Repository Manager for use by build tools, dependency management tools and build servers|https://bintray.com/jfrog/product/JFrog-Artifactory-Oss/view|{{AUR|artifactory-oss}}}}&lt;br /&gt;
&lt;br /&gt;
=== Text input ===&lt;br /&gt;
&lt;br /&gt;
==== Character selectors ====&lt;br /&gt;
&lt;br /&gt;
* {{App|GNOME Characters|Character map application for GNOME.|https://gitlab.gnome.org/GNOME/gnome-characters|{{Pkg|gnome-characters}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GNOME Character Map|gucharmap]]|GTK 3 character selector for GNOME.|https://wiki.gnome.org/Apps/Gucharmap|{{pkg|gucharmap}}}}&lt;br /&gt;
* {{App|KCharSelect|Tool to select special characters from all installed fonts and copy them into the clipboard. Part of {{Grp|kde-utilities}}.|https://apps.kde.org/kcharselect/|{{Pkg|kcharselect}}}}&lt;br /&gt;
&lt;br /&gt;
==== スクリーンキーボード ====&lt;br /&gt;
&lt;br /&gt;
* {{App|CellWriter|Grid-entry handwriting recognition input panel.|https://github.com/risujin/cellwriter|{{AUR|cellwriter}}}}&lt;br /&gt;
* {{App|CoreKeyboard|Simple X11 based Qt virtual keyboard with word suggestions. Part of C-Suite.|https://cubocore.org/|{{AUR|corekeyboard}}}}&lt;br /&gt;
* {{App|eekboard|Easy to use virtual keyboard toolkit.|https://github.com/ueno/eekboard|{{AUR|eekboard}}}}&lt;br /&gt;
* {{App|Florence|Extensible scalable on-screen virtual keyboard for GNOME that stays out of your way when not needed.|https://sourceforge.net/projects/florence/|{{AUR|florence}}}}&lt;br /&gt;
* {{App|Onboard|Onscreen keyboard useful for tablet PC users and for mobility impaired users.|https://launchpad.net/onboard|{{Pkg|onboard}}}}&lt;br /&gt;
* {{App|qtvkbd|Virtual keyboard written in Qt, a fork of kvkbd.|https://github.com/Alexander-r/qtvkbd|{{AUR|qtvkbd}}}}&lt;br /&gt;
* {{App|QVKbd|Virtual keyboard written in Qt.|https://github.com/KivApple/qvkbd|{{Pkg|qvkbd}}}}&lt;br /&gt;
* {{App|Squeekboard|GTK 3 virtual keyboard for [[Wayland]], written in Rust/C.|https://source.puri.sm/Librem5/squeekboard|{{AUR|squeekboard}}}}&lt;br /&gt;
* {{App|theShell On Screen Keyboard|Touchscreen keyboard for theShell.|https://github.com/vicr123/ts-kbd|{{AUR|ts-kbd}}}}&lt;br /&gt;
* {{App|xvkbd|Virtual keyboard for X window system.|http://t-sato.in.coocan.jp/xvkbd/|{{AUR|xvkbd}}}}&lt;br /&gt;
&lt;br /&gt;
==== キーボードレイアウトの切り替え ====&lt;br /&gt;
&lt;br /&gt;
* {{App|fbxkb|NETWM 互換のキーボードインジケータ・スイッチャー。システム領域にある現在のキーボードのフラグを表示し、他のキーボードに切り替えることが可能です。|http://fbxkb.sourceforge.net/|{{AUR|fbxkb}}}}&lt;br /&gt;
* {{App|xxkb|軽量なキーボードレイアウトインジケータ・スイッチャー。|https://sourceforge.net/projects/xxkb/|{{Pkg|xxkb}}}}&lt;br /&gt;
* {{App|gxkb|X11 keyboard layout indicator and switcher.|https://github.com/zen-tools/gxkb|{{Pkg|gxkb}}}}&lt;br /&gt;
* {{App|qxkb|Qt で書かれているキーボード切り替えアプリケーション。|https://github.com/disels/qxkb|{{AUR|qxkb}}}}&lt;br /&gt;
* {{App|[[Wikipedia:X Neural Switcher|X Neural Switcher]]|テキストアナライザ。入力の言語を検出して必要に応じてキーボードレイアウトを修正します。|https://xneur.ru/|{{AUR|gxneur}} (GUI)}}&lt;br /&gt;
&lt;br /&gt;
==== Keybinding managers ====&lt;br /&gt;
&lt;br /&gt;
See [[キーボードショートカット#Xorg]].&lt;br /&gt;
&lt;br /&gt;
==== インプットメソッド ====&lt;br /&gt;
&lt;br /&gt;
See the main article: [[インプットメソッド]].&lt;br /&gt;
&lt;br /&gt;
=== Disks ===&lt;br /&gt;
&lt;br /&gt;
==== パーティション分割ツール ====&lt;br /&gt;
&lt;br /&gt;
See [[パーティショニング#パーティショニングツール]].&lt;br /&gt;
&lt;br /&gt;
==== Formatting tools ====&lt;br /&gt;
&lt;br /&gt;
See [[ファイルシステム#ファイルシステムのタイプ]].&lt;br /&gt;
&lt;br /&gt;
==== Cloning tools ====&lt;br /&gt;
&lt;br /&gt;
See [[ディスクのクローン#ディスククローンソフトウェア]].&lt;br /&gt;
&lt;br /&gt;
==== マウントツール ====&lt;br /&gt;
&lt;br /&gt;
See also [[udisks#Mount helpers]].&lt;br /&gt;
&lt;br /&gt;
* {{App|9mount|9p ファイルシステムをマウント。|http://sqweek.net/code/9mount/|{{AUR|9mount}}}}&lt;br /&gt;
* {{App|cryptmount|暗号化されたファイルシステムを通常ユーザーでマウント。|https://sourceforge.net/projects/cryptmount/|{{AUR|cryptmount}}}}&lt;br /&gt;
* {{App|KDiskFree|Displays information about hard disks and other storage devices. It also allows to mount and unmount drives and view them in a file manager.|https://apps.kde.org/kdf/|{{Pkg|kdf}}}}&lt;br /&gt;
* {{App|ldm|&#039;&#039;udev&#039;&#039; を使ってドライブを自動的にマウントする軽量なデーモン。|https://github.com/LemonBoy/ldm|{{AUR|ldm}}}}&lt;br /&gt;
* {{App|pmount|通常ユーザーで&#039;&#039;ソース&#039;&#039;を自動的に作成する {{ic|/media/&#039;&#039;source_name&#039;&#039;}} にマウント。|[[Debian:pmount]]|{{AUR|pmount}}}}&lt;br /&gt;
* {{App|pmount-safe-removal|安全に取り除けるように通常ユーザーでリムーバブルデバイスをマウント。|https://mywaytoarch.tumblr.com/post/13111098534/pmount-safe-removal-of-usb-device|{{AUR|pmount-safe-removal}}}}&lt;br /&gt;
* {{App|udevil|通常ユーザーでリムーバブルデバイスをマウント。デバイス情報を表示して、デバイスの変更を監視。&#039;&#039;udev&#039;&#039; と glib にだけ依存。|https://ignorantguru.github.io/udevil|{{AUR|udevil}}}}&lt;br /&gt;
* {{App|ws|Windows ネットワーク共有をマウント ([[Wikipedia:Server Message Block|CIFS]] と [[Wikipedia:Virtual file system|VFS]])。|https://sourceforge.net/projects/winshares/|{{AUR|ws}}}}&lt;br /&gt;
* {{App|zulucrypt|暗号化ボリュームを作成・管理・マウントする cryptsetup の GUI フロントエンド。[[EncFS]] もサポート。|https://mhogomchungu.github.io/zuluCrypt/|{{AUR|zulucrypt}}}}&lt;br /&gt;
&lt;br /&gt;
==== ディスク使用量表示プログラム ====&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
* {{App|duc|ディスク使用量を調査するためのライブラリとツールスイート。|https://duc.zevv.nl/|{{AUR|duc}}}}&lt;br /&gt;
* {{App|gdu|Disk usage analyzer with console interface written in Go.|https://github.com/Dundee/gdu|{{AUR|gdu}}}}&lt;br /&gt;
* {{App|gt5|差分が表示できる &amp;quot;du-browser&amp;quot;。|http://gt5.sourceforge.net|{{AUR|gt5}}}}&lt;br /&gt;
* {{App|ncdu|シンプルな ncurses ディスク使用量アナライザ。|https://dev.yorhel.nl/ncdu|{{Pkg|ncdu}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
* {{App|[[Wikipedia:Filelight|Filelight]]|コンピュータのディスク使用量を、リング状のマップに視覚化するディスク使用量アナライザ。|https://apps.kde.org/filelight/|{{Pkg|filelight}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Disk Usage Analyzer|GNOME Disk Usage Analyzer]]|[[GNOME]] デスクトップ用のディスク使用量アナライザ to check folder sizes and available disk space.|https://wiki.gnome.org/Apps/DiskUsageAnalyzer|{{Pkg|baobab}}}}&lt;br /&gt;
* {{App|Graphical Disk Map|ファイルやディレクトリサイズにあわせて長方形を表示するディスク使用量アナライザ。|http://gdmap.sourceforge.net/|{{Pkg|gdmap}}}}&lt;br /&gt;
* {{App|fsview (part of Konqueror)|KDE based disk usage analyzer that draws a map of rectangles sized according to file or dir sizes.|https://docs.kde.org/trunk5/en/konqueror/konqueror/view-extensions.html|{{Pkg|konqueror}}}}&lt;br /&gt;
* {{App|MATE Disk Usage Analyzer|Disk usage analyzing tool for MATE Desktop.|https://github.com/mate-desktop/mate-utils|{{Pkg|mate-utils}}}}&lt;br /&gt;
* {{App|qdirstat|Qt-based directory statistics (KDirStat/K4DirStat without any KDE - from the original KDirStat author).|https://github.com/shundhammer/qdirstat|{{AUR|qdirstat}}}}&lt;br /&gt;
&lt;br /&gt;
==== Disk health status ====&lt;br /&gt;
&lt;br /&gt;
See [[S.M.A.R.T.#GUI applications]].&lt;br /&gt;
&lt;br /&gt;
==== File recovery tools ====&lt;br /&gt;
&lt;br /&gt;
See [[ファイルリカバリ#List of utilities]].&lt;br /&gt;
&lt;br /&gt;
==== Disk cleaning ====&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
* {{App|duff|A command-line utility for quickly finding duplicates in a given set of files.|https://github.com/elmindreda/duff|{{AUR|duff}}}}&lt;br /&gt;
* {{App|fclones|Very fast duplicate file Finder written in rust.|https://github.com/pkolaczk/fclones|{{AUR|fclones}}}}, {{AUR|fclones-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:fdupes|fdupes]]|Program for identifying or deleting duplicate files residing within specified directories.|https://github.com/adrianlopezroche/fdupes|{{Pkg|fdupes}}}}&lt;br /&gt;
* {{App|jdupes|Identify and take actions upon duplicate files.|https://github.com/jbruchon/jdupes|{{AUR|jdupes}}}}&lt;br /&gt;
* {{App|rdfind|Command line tool that finds duplicate files. It compares files based on their content.|https://github.com/pauldreik/rdfind|{{AUR|rdfind}}}}&lt;br /&gt;
* {{App|rmlint|重複するファイルを素早く見つけ出すツール (任意で削除も可能)。|https://github.com/sahib/rmlint|{{Pkg|rmlint}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:BleachBit|BleachBit]]|ディスク容量を開けてプライバシーを守ります。キャッシュやクッキー、インターネット履歴、一時ファイル、ログなどを消去。|https://www.bleachbit.org/|{{Pkg|bleachbit}}}}&lt;br /&gt;
* {{App|dupeGuru|GUI tool to find duplicate files in a system.|https://dupeguru.voltaicideas.net/|{{AUR|dupeguru}}}}&lt;br /&gt;
* {{App|FSlint|A utility to find and clean various forms of lint on a filesystem.|https://www.pixelbeat.org/fslint/|{{AUR|fslint}}}}&lt;br /&gt;
* {{App|GConf Cleaner|gconf データベースに居座っている不必要な gconf キーを消去。|https://code.google.com/archive/p/gconf-cleaner/|{{AUR|gconf-cleaner}}}}&lt;br /&gt;
* {{App|Shredder|Graphical user interface for rmlint.|https://github.com/sahib/rmlint|{{Pkg|rmlint-shredder}}}}&lt;br /&gt;
* {{App|Sweeper|System cleaning utility for KDE.|https://apps.kde.org/sweeper/|{{Pkg|sweeper}}}}&lt;br /&gt;
&lt;br /&gt;
==== Disk image writing ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of tools to create Live USB systems]].&lt;br /&gt;
&lt;br /&gt;
{{Warning|Some disk image writing tools are known to be [[Wikipedia:adware|adware]], for example [[:en:USB flash installation medium#Using etcher|etcher]].}}&lt;br /&gt;
&lt;br /&gt;
* {{App|Deepin Boot Maker|Tool to make boot disk for Deepin OS.|https://www.deepin.org/en/original/deepin-boot-maker/|{{Pkg|deepin-boot-maker}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Fedora Media Writer|Fedora Media Writer]]|Tool that helps users put Fedora images on their portable drives such as flash disks.|https://github.com/FedoraQt/MediaWriter|{{AUR|mediawriter}}}}&lt;br /&gt;
* {{App|GNOME MultiWriter|Write an ISO file to multiple USB devices at once.|https://wiki.gnome.org/Apps/MultiWriter|{{Pkg|gnome-multi-writer}}}}&lt;br /&gt;
* {{App|Image Burner|Simple imageburner designed for elementary OS.|https://github.com/artemanufrij/imageburner|{{AUR|imageburner}}}}&lt;br /&gt;
* {{App|ISOImageWriter|Tool to write a .iso file to a USB disk.|https://community.kde.org/ISOImageWriter|{{AUR|isoimagewriter}}}}&lt;br /&gt;
* {{App|LiveUSB Install|Install various Linux distributions and operating systems on removable flash drive or external disk drive.|http://live.learnfree.eu/|{{AUR|live-usb-install}}}}&lt;br /&gt;
* {{App|MultiBootUSB|Install multiple live distributions on a USB disk non-destructively and has an option to uninstall them.|https://github.com/mbusb/multibootusb/|{{AUR|multibootusb}}}}&lt;br /&gt;
* {{App|MultiSystem|GUI tool to create a USB system that can boot multiple distributions.|http://liveusb.info/|{{AUR|multisystem}}}}&lt;br /&gt;
* {{App|Popsicle|Utility for flashing multiple USB devices in parallel, written in Rust.|https://github.com/pop-os/popsicle|{{AUR|popsicle-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:SUSE Studio ImageWriter|SUSE Studio ImageWriter]]|Utility for writing raw disk images &amp;amp; hybrid isos to USB keys.|https://github.com/openSUSE/imagewriter|{{AUR|imagewriter}}}}&lt;br /&gt;
* {{App|[[Wikipedia:UNetbootin|UNetbootin]]|Installs Linux/BSD distributions to a partition or USB drive.|https://unetbootin.github.io/|{{AUR|unetbootin}}}}&lt;br /&gt;
* {{App|Usbimager|Minimal GUI application to write compressed disk images to USB drives.|https://gitlab.com/bztsrc/usbimager|{{AUR|usbimager}}}}&lt;br /&gt;
* {{App|WoeUSB|Simple tool to create USB stick windows installer from an ISO image or a real DVD. (Fork of WinUSB).|https://github.com/WoeUSB/WoeUSB-frontend-wxgtk| {{AUR|woeusb}}}}&lt;br /&gt;
* {{App|windows2usb|Windows 7/8/8.1/10 ISO to Flash Drive burning utility for Linux with MBR/GPT, BIOS/UEFI, FAT32/NTFS support|https://github.com/ValdikSS/windows2usb|{{AUR|windows2usb-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== System ===&lt;br /&gt;
&lt;br /&gt;
==== タスクマネージャ ====&lt;br /&gt;
&lt;br /&gt;
* {{App|CoreStats|Simple lightweight system resource viewer to monitor the CPU, RAM, Network and Disk IO statistics. Part of C-Suite.|https://cubocore.org/|{{AUR|corestats}}}}&lt;br /&gt;
* {{App|Deepin System Monitor|Monitor system process status for Deepin desktop.|https://www.deepin.org/en/original/deepin-system-monitor/|{{Pkg|deepin-system-monitor}}}}&lt;br /&gt;
* {{App|GNOME System Monitor|[[GNOME]] のシステムモニタ to view and manage system resources.|https://wiki.gnome.org/Apps/SystemMonitor|{{Pkg|gnome-system-monitor}}}}&lt;br /&gt;
* {{App|GNOME Usage|View information about use of system resources, like memory and disk space.|https://wiki.gnome.org/Apps/Usage|{{Pkg|gnome-usage}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Htop|htop]]|シンプルな、ncurses 対話式プロセスビューア。|http://htop.sourceforge.net/|{{Pkg|htop}}}}&lt;br /&gt;
* {{App|bpytop|Htop but more lightweight with more features.|https://github.com/aristocratos/bpytop|{{Pkg|bpytop}}}}&lt;br /&gt;
* {{App|btop|Rewrite of bpytop in C++|https://github.com/aristocratos/btop|{{Pkg|btop}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KDE System Guard|KSysGuard]]|[[KDE]] のタスクマネージャ・パフォーマンスモニタ。|https://apps.kde.org/ksysguard/|{{Pkg|ksysguard}}}}&lt;br /&gt;
* {{App|Linux Process Explorer|Linux 向けのグラフィカルプロセスエクスプローラー。|https://sourceforge.net/projects/procexp/|{{AUR|procexp}}}}&lt;br /&gt;
* {{App|LXTask|[[LXDE]] の軽量なタスクマネージャー。|https://wiki.lxde.org/en/LXTask|{{Pkg|lxtask}}}}&lt;br /&gt;
* {{App|qps|Lightweight task manager for [[LXQt]].|https://github.com/lxqt/qps|{{AUR|qps}}}}&lt;br /&gt;
* {{App|MATE System Monitor|[[MATE]] のシステムモニター。|https://github.com/mate-desktop/mate-system-monitor|{{Pkg|mate-system-monitor}}}}&lt;br /&gt;
* {{App|Stacer|System optimizer and application monitor that helps users to manage entire system with different aspects, its an all in one system utility.|https://oguzhaninan.github.io/Stacer-Web/|{{AUR|stacer}}}}&lt;br /&gt;
* {{App|Task Manager|[[Xfce]] の GTK2/GTK3 プロセス管理アプリケーション with basic system resource monitor|https://goodies.xfce.org/projects/applications/xfce4-taskmanager|{{Pkg|xfce4-taskmanager}}}}&lt;br /&gt;
&lt;br /&gt;
==== システム監視 ====&lt;br /&gt;
&lt;br /&gt;
[[:カテゴリ:状態監視と通知]]も参照してください。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Conky]]|軽量でスクリプト式のシステムモニタ。|https://github.com/brndnmtthws/conky|{{Pkg|conky}}}}&lt;br /&gt;
* {{App|Collectd|[https://oss.oetiker.ch/rrdtool/ rrdtool] ベースのシンプルで拡張性のあるシステム監視デーモン。消費リソースが少なくて、スタンドアロンに、またはサーバー・クライアントアプリケーションとして設定できます。|https://collectd.org/|{{Pkg|collectd}}}}&lt;br /&gt;
* {{App|collectl|軽量なパフォーマンス監視ツール。対話式にレポートを作成したりディスクにログを出力できます。CPU やディスク、[[InfiniBand]]、Lustre、メモリ、ネットワーク、[[NFS]]、プロセス, quadrics, slabs などの統計情報を読みやすいフォーマットでまとめます。|http://collectl.sourceforge.net/|{{AUR|collectl}}}}&lt;br /&gt;
* {{App|dstat|多目的リソース統計ツール。|http://dag.wiee.rs/home-made/dstat/|{{Pkg|dstat}}}}&lt;br /&gt;
* {{App|Fsniper|Daemon to run scripts based on changes in files monitored by inotify.|https://github.com/l3ib/fsniper|{{AUR|fsniper}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GKrellM|GKrellM]]|シンプルで柔軟性のある [[GTK]] 向けシステムモニタパッケージ。多くのプラグインが含まれている。|https://billw2.github.io/gkrellm/gkrellm.html|{{Pkg|gkrellm}}}}&lt;br /&gt;
* {{App|glances|Python 製の CLI curses ベース監視ツール。|https://nicolargo.github.io/glances/|{{Pkg|glances}}}}&lt;br /&gt;
* {{App|kmon|Linux kernel manager and activity monitor.|https://github.com/orhun/kmon|{{Pkg|kmon}}}}&lt;br /&gt;
* {{App|Nagstamon|Status monitor that connects to multiple Nagios, Icinga, Opsview, Centreon, Op5 Monitor/Ninja, Checkmk and Thruk monitoring servers.|https://github.com/orhun/kmon|{{AUR|nagstamon}}}}&lt;br /&gt;
* {{App|netdata|ウェブベースのリアルタイムパフォーマンスモニター。|https://github.com/firehol/netdata/wiki|{{Pkg|netdata}}}}&lt;br /&gt;
* {{App|[[Telegraf]]|Agent written in Go for collecting, processing, aggregating, and writing metrics.|https://docs.influxdata.com/telegraf/latest/|{{AUR|telegraf}}}}&lt;br /&gt;
* {{App|[[Paramano]]|軽量なバッテリモニター、CPU 周波数スケーラ。[http://trayfreq.sourceforge.net/ trayfreq] のフォーク。|https://github.com/phillid/paramano|{{AUR|paramano}}}}&lt;br /&gt;
* {{app|Sysstat|リソース管理ツールのコレクション: iostat, isag, mpstat, pidstat, sadf, sar。|http://sebastien.godard.pagesperso-orange.fr/|{{Pkg|sysstat}}}}&lt;br /&gt;
* {{App|xosview|SGI IRIX の gr_osview に似ているシステムモニター。|https://www.pogo.org.uk/~mark/xosview/|{{AUR|xosview}}}}&lt;br /&gt;
* {{App|zps|A small utility for listing and reaping zombie processes on GNU/Linux.|https://github.com/orhun/zps|{{Pkg|zps}}}}&lt;br /&gt;
&lt;br /&gt;
==== Hardware sensor monitoring ====&lt;br /&gt;
&lt;br /&gt;
See [[lm_sensors#Graphical front-ends]].&lt;br /&gt;
&lt;br /&gt;
==== システム情報ビューア ====&lt;br /&gt;
&lt;br /&gt;
===== コンソール =====&lt;br /&gt;
&lt;br /&gt;
* {{App|alsi|Arch Linux のシステム情報ツール。スクリプトのソースコードを修正しなくても他のシステム用に設定することが可能です。|https://trizenx.blogspot.com/2012/08/alsi.html|{{AUR|alsi}}}}&lt;br /&gt;
* {{App|[[archey3]]|Arch Linux のロゴとシステム情報を表示する Python スクリプト。|https://lclarkmichalek.github.io/archey3|{{Pkg|archey3}}}}&lt;br /&gt;
* {{App|dmidecode|SMBIOS/DMI の仕様による BIOS に書かれているシステムのハードウェア情報を表示します。|https://www.nongnu.org/dmidecode/|{{Pkg|dmidecode}}}}&lt;br /&gt;
* {{App|hwdetect|{{ic|/sys}} によってエクスポートされたモジュールを表示するシンプルなスクリプト。|https://github.com/archlinux/svntogit-packages/blob/packages/hwdetect/trunk/hwdetect|{{Pkg|hwdetect}}}}&lt;br /&gt;
* {{App|hwinfo|openSUSE 由来のパワフルなハードウェア検出ツール。|https://github.com/openSUSE/hwinfo|{{Pkg|hwinfo}}}}&lt;br /&gt;
* {{App|hw-probe|Tool to probe for hardware, check operability and find drivers with the help of [https://linux-hardware.org/ Linux Hardware Database].|https://github.com/linuxhw/hw-probe|{{AUR|hw-probe}}}}&lt;br /&gt;
* {{App|inxi|システム情報を取得するためのスクリプト。|https://github.com/smxi/inxi|{{AUR|inxi}}}}&lt;br /&gt;
* {{App|neofetch|w3m で画像を表示することができる高速・カスタマイズ可能なシステム情報スクリプト。|https://github.com/dylanaraps/neofetch|{{Pkg|neofetch}}}}&lt;br /&gt;
* {{App|nmon|Console based application for monitoring various system components.|http://nmon.sourceforge.net/|{{Pkg|nmon}}}}&lt;br /&gt;
* {{App|pfetch|A pretty system information tool written in POSIX sh.|https://github.com/dylanaraps/pfetch|{{AUR|pfetch}}}}&lt;br /&gt;
* {{App|screenfetch|archey と似ていますがスクリーンショットを取得することができます。bash で書かれています。|https://github.com/KittyKatt/screenFetch|{{Pkg|screenfetch}}}}&lt;br /&gt;
&lt;br /&gt;
===== グラフィカル =====&lt;br /&gt;
&lt;br /&gt;
* {{App|GPU-Viewer|GUI to glxinfo, vulkaninfo, clinfo and es2_info; written in Python with GTK.|https://github.com/arunsivaramanneo/GPU-Viewer|{{AUR|gpu-viewer}}}}&lt;br /&gt;
* {{App|hardinfo|ハードウェアとオペレーティングシステムに関する情報を表示する小さなアプリケーション。Windows のデバイスマネージャに似ています。|https://www.berlios.de/software/hardinfo/|{{Pkg|hardinfo}}}}&lt;br /&gt;
* {{App|i-Nex|システムで利用できるハードウェアコンポーネントの情報を収集して Windows の人気ツール CPU-Z に似ているユーザーインターフェースで情報を表示するアプリケーション。|http://i-nex.linux.pl/|{{AUR|i-nex-git}}}}&lt;br /&gt;
* {{App|lshw|マシンのハードウェア設定に関する情報を詳しく表示する小さなツール。CLI と GTK のインターフェイス。|https://ezix.org/project/wiki/HardwareLiSter|{{Pkg|lshw}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KInfoCenter|KInfoCenter]]|Centralized and convenient overview of system information for KDE.|https://userbase.kde.org/KInfoCenter|{{Pkg|kinfocenter}}}}&lt;br /&gt;
* {{App|USBView|Display the topology of devices on the USB bus.|http://www.kroah.com/linux/usb/|{{Pkg|usbview}}}}&lt;br /&gt;
&lt;br /&gt;
==== System log viewers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|GNOME Logs|Viewer for the systemd journal. Part of {{Grp|gnome}}.|https://wiki.gnome.org/Apps/Logs|{{Pkg|gnome-logs}}}}&lt;br /&gt;
* {{App|GNOME System Log|System log viewer for GNOME.|https://gitlab.gnome.org/GNOME/gnome-system-log|{{Pkg|gnome-system-log}}}}&lt;br /&gt;
* {{App|KSystemLog|System log viewer tool for KDE.|https://apps.kde.org/ksystemlog/|{{Pkg|ksystemlog}}}}&lt;br /&gt;
* {{App|MATE System Log|System log viewer for MATE.|https://github.com/mate-desktop/mate-utils|{{Pkg|mate-utils}}}}&lt;br /&gt;
* {{App|Pacman Log Viewer|Tool used to inspect pacman log file, in particular it lists installed, removed and upgraded packages letting you to filter by package&#039;s name and/or date.|https://www.opendesktop.org/content/show.php?content&amp;amp;#61;150484|{{Pkg|pacmanlogviewer}}}}&lt;br /&gt;
* {{App|QJournalctl|Qt-based graphical user interface for systemd&#039;s &#039;&#039;journalctl&#039;&#039; command.|https://github.com/pentix/qjournalctl|{{Pkg|qjournalctl}}}}&lt;br /&gt;
&lt;br /&gt;
==== Font viewers ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Font management software]].&lt;br /&gt;
* {{App|Deepin Font Manager|A font management tool for Deepin desktop.|https://www.deepin.org/en/original/deepin-font-manager/|{{Pkg|deepin-font-manager}}}}&lt;br /&gt;
* {{App|Font Manager|Simple font management for GTK desktop environments.|https://fontmanager.github.io/|{{AUR|font-manager}}}}&lt;br /&gt;
* {{App|Fonty Python|Manage, view and find your fonts.|https://savannah.nongnu.org/projects/fontypython|{{AUR|fontypython}}}}&lt;br /&gt;
* {{App|GNOME Fonts|Font viewer for GNOME.|https://gitlab.gnome.org/GNOME/gnome-font-viewer|{{Pkg|gnome-font-viewer}}}}&lt;br /&gt;
* {{App|KFontview|KDE application to view and install different types of fonts.|https://kde.org/|{{Pkg|plasma-desktop}}}}&lt;br /&gt;
* {{App|MATE Font Viewer|Font viewer for MATE.|https://github.com/mate-desktop/mate-control-center|{{Pkg|mate-utils}}}}&lt;br /&gt;
&lt;br /&gt;
==== Help viewers ====&lt;br /&gt;
&lt;br /&gt;
See [[man ページ#インストール]].&lt;br /&gt;
&lt;br /&gt;
==== Command schedulers ====&lt;br /&gt;
&lt;br /&gt;
See also [[Cron]].&lt;br /&gt;
&lt;br /&gt;
* {{App|FcronQ|Fcron GUI, an advanced periodic command scheduler.|http://fcronq.xavion.name/|{{AUR|fcronq}}}}&lt;br /&gt;
* {{App|GNOME Schedule|Graphical interface to crontab and at for GNOME.|http://gnome-schedule.sourceforge.net/|{{AUR|gnome-schedule}}}}&lt;br /&gt;
* {{App|KCron|Tool for KDE to run applications in the background at regular intervals. It is a graphical interface to the Cron command.|https://apps.kde.org/kcron/|{{Pkg|kcron}}}}&lt;br /&gt;
* {{App|KTimer|Little tool for KDE to execute programs after some time. It allows you to enter several tasks and to set a timer for each of them. The timers for each task can be started, stopped, changed, or looped.|https://apps.kde.org/ktimer/|{{Pkg|ktimer}}}}&lt;br /&gt;
&lt;br /&gt;
==== Shutdown timers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|GShutdown|Advanced shutdown utility which allows you to schedule the shutdown or the restart of your computer, or logout your actual session.|https://gshutdown.tuxfamily.org/|{{AUR|gshutdown}}}}&lt;br /&gt;
* {{App|Hsiu-Ming&#039;s Timer|Graphical shutdown timer, which enables you to shutdown, turn off monitor, reboot or play sound after a period of time.|https://cges30901.github.io/hmtimer-website/|{{AUR|hmtimer}}}}&lt;br /&gt;
* {{App|KShutdown|Graphical shutdown utility, which allows you to turn off or suspend a computer at a specified time. It features various time and delay options, command-line support, and notifications.|https://kshutdown.sourceforge.io/|{{Pkg|kshutdown}}}}&lt;br /&gt;
&lt;br /&gt;
==== 時刻同期 ====&lt;br /&gt;
&lt;br /&gt;
See [[時刻同期]].&lt;br /&gt;
&lt;br /&gt;
==== Screen management ====&lt;br /&gt;
&lt;br /&gt;
See [[Xrandr#Graphical front-ends]].&lt;br /&gt;
&lt;br /&gt;
==== Backlight management ====&lt;br /&gt;
&lt;br /&gt;
See [[バックライト#バックライトユーティリティ]].&lt;br /&gt;
&lt;br /&gt;
==== Color management ====&lt;br /&gt;
&lt;br /&gt;
See [[:en:ICC profiles#Utilities]] and [[バックライト#色補正]].&lt;br /&gt;
&lt;br /&gt;
==== Printer management ====&lt;br /&gt;
&lt;br /&gt;
See [[CUPS#GUI applications]].&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth management ====&lt;br /&gt;
&lt;br /&gt;
See [[Bluetooth#Front-ends]].&lt;br /&gt;
&lt;br /&gt;
==== 電源管理 ====&lt;br /&gt;
&lt;br /&gt;
See [[電源管理#ユーザースペースツール]].&lt;br /&gt;
&lt;br /&gt;
==== System management ====&lt;br /&gt;
&lt;br /&gt;
See [[Systemd#GUI configuration tools]].&lt;br /&gt;
&lt;br /&gt;
==== Boot management ====&lt;br /&gt;
&lt;br /&gt;
See [[GRUB/Tips and tricks#GUI configuration tools]].&lt;br /&gt;
&lt;br /&gt;
==== パッケージ管理 ====&lt;br /&gt;
&lt;br /&gt;
See [[pacman ヒント#ユーティリティ]].&lt;br /&gt;
&lt;br /&gt;
==== Virtualization ====&lt;br /&gt;
&lt;br /&gt;
See [[Libvirt#Client]] and [[VirtualBox]].&lt;br /&gt;
&lt;br /&gt;
==== Compatibility layers ====&lt;br /&gt;
&lt;br /&gt;
See [[Wine]] (Windows) and [https://www.darlinghq.org/ Darling] (MacOS).&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TranslationStatus|List of applications/Utilities|2021-12-25|707362}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Fscrypt&amp;diff=38227</id>
		<title>Fscrypt</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Fscrypt&amp;diff=38227"/>
		<updated>2024-07-26T10:04:27Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: /* パッケージへのリンクをaurの-gitからextraに変更 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:保存データ暗号化]]&lt;br /&gt;
[[en:Fscrypt]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|保存データ暗号化}}&lt;br /&gt;
{{Related|Ext4}}&lt;br /&gt;
{{Related|F2FS}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fscrypt&#039;&#039;&#039; は [[ext4]]、[[F2FS]]、[[Wikipedia:UBIFS|UBIFS]] [[ファイルシステム]] のネイティブファイル暗号化サポートを管理するツールです。&lt;br /&gt;
&lt;br /&gt;
上記のファイルシステムに統合されている [https://docs.kernel.org/filesystems/fscrypt.html カーネル内の基本的な暗号化メカニズム] は、&#039;&#039;fscrypt&#039;&#039; と呼ばれることもあります。曖昧さを避けるため、この記事ではカーネルの機能を &#039;&#039;Linux ネイティブファイル暗号化&#039;&#039; と呼びます。Linux ネイティブファイル暗号化では、異なるディレクトリで異なる暗号化キーを使用することができます。暗号化されたディレクトリでは、すべてのファイルの内容、ファイル名、シンボリックリンクが暗号化され。すべてのサブディレクトリも暗号化されます。タイムスタンプ、ファイルのサイズや数、拡張属性など、ファイル名以外のメタデータは暗号化されません。&lt;br /&gt;
&lt;br /&gt;
この記事は &#039;&#039;fscrypt&#039;&#039; ツール (およびオプションで &#039;&#039;fscrypt&#039;&#039; に付随する &#039;&#039;pam_fscrypt&#039;&#039;) の使用を前提としているため、Linux ネイティブのファイル暗号化を設定できる他のユーザ空間ツール、例えば [[systemd-homed]] には適用できない部分がほとんどです。&lt;br /&gt;
&lt;br /&gt;
== 検討すべき代替案 ==&lt;br /&gt;
&lt;br /&gt;
ファイルシステム全体をひとつのパスワードで保護したい場合、[[dm-crypt]] でブロックデバイス暗号化するほうが良いでしょう。その場合、ファイルシステムのメタデータも全て暗号化されます。特定のディレクトリだけを暗号化したい場合や、それぞれのディレクトリのロックを別個に解除したい場合 (ユーザーごとにホームディレクトリを暗号化するなど) は fscrypt が相応しいと思われます。&lt;br /&gt;
&lt;br /&gt;
[[eCryptfs]] とは異なり、fscrypt はスタックファイルシステムではありません。ファイルシステムによってネイティブでサポートされています。そのため fscrypt はメモリの使用量が低くなっています。また、fscrypt は最新の暗号技術を使用し、setuid バイナリを必要としません。さらに、eCryptfs は開発が止まっているため、主要なユーザーは dm-crypt (Ubuntu) や fscrypt (Android と Chrome OS) に移っています。&lt;br /&gt;
&lt;br /&gt;
他の暗号化手段に関する詳細については[[ディスク暗号化]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* &#039;&#039;fscrypt&#039;&#039; を [[dm-crypt]] と組み合わせて使用​​することが可能で、各暗号化層が異なる目的を果たします。たとえば、ファイルシステム自体は、&#039;&#039;セキュア ブート&#039;&#039; に関連付けられた TPM やシステムのすべてのユーザーに知られているパスワードなど、安全性の低い方法を使用して dm-crypt によって保護できますが、各ユーザーのホームディレクトリもそのユーザーのみが知っているパスワードを使用して &#039;&#039;fscrypt&#039;&#039; を実行します。&lt;br /&gt;
* {{Pkg|e2fsprogs}} の &#039;&#039;e4crypt&#039;&#039; ツールは、&#039;&#039;fscrypt&#039;&#039; ツールの代わりに使用できます。ただし、&#039;&#039;e4crypt&#039;&#039; には多くの基本機能が欠けており、現在は積極的に開発されていないため、これはお勧めできません。&lt;br /&gt;
* {{Pkg|f2fs-tools}} の &#039;&#039;f2fscrypt&#039;&#039; は &#039;&#039;e4crypt&#039;&#039; の単なるコピーであり、同様に推奨されません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 準備 ==&lt;br /&gt;
&lt;br /&gt;
=== カーネル ===&lt;br /&gt;
&lt;br /&gt;
[[カーネル#公式パッケージ|公式サポートされているカーネル]]では ext4, F2FS, UBIFS で fscrypt に対応しています。&lt;br /&gt;
&lt;br /&gt;
カスタムカーネルのバージョン 5.1 以上を使っている場合、{{ic|1=CONFIG_FS_ENCRYPTION=y}} を設定してください。古いカーネルの場合は [https://github.com/google/fscrypt#runtime-dependencies ドキュメント] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステム ===&lt;br /&gt;
&lt;br /&gt;
==== ext4 ====&lt;br /&gt;
&lt;br /&gt;
[[ext4]] の場合、暗号化が使用されるファイルシステムでは、{{ic|encrypt}} 機能フラグが有効になっている必要があります。有効にするには、次を実行します。&lt;br /&gt;
&lt;br /&gt;
 # tune2fs -O encrypt &#039;&#039;/dev/device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|新しいファイルシステムを作成する際に {{ic|mkfs.ext4 -O encrypt}} とすることで {{ic|encrypt}} 機能をすぐに有効化できます。}}&lt;br /&gt;
&lt;br /&gt;
==== F2FS ====&lt;br /&gt;
&lt;br /&gt;
[[F2FS]] の場合、{{ic|fsck.f2fs -O encrypt}} または {{ic|mkfs.f2fs -O encrypt}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
=== ユーザースペースツール ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|fscrypt}} を[[インストール]]してください。または、以前インストールしていた場合は最新版にアップグレードしてください。それから以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # fscrypt setup&lt;br /&gt;
&lt;br /&gt;
上記のコマンドで {{ic|/etc/fscrypt.conf}} ファイルと {{ic|/.fscrypt}} ディレクトリが作成されます。&lt;br /&gt;
&lt;br /&gt;
そして、暗号化したいファイルシステムがルートファイルシステムではない場合、以下のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 # fscrypt setup &#039;&#039;mountpoint&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;mountpoint&#039;&#039;}} はファイルシステムがマウントされているディレクトリに置き換えてください (例: {{ic|/home}})。&lt;br /&gt;
&lt;br /&gt;
上記のコマンドで fscrypt のポリシーとプロテクターを保存するための {{ic|&#039;&#039;mountpoint&#039;&#039;/.fscrypt}} ディレクトリが作成されます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|.fscrypt}} ディレクトリを削除してはいけません。そうすると暗号化されたファイルにアクセスできなくなります。}}&lt;br /&gt;
&lt;br /&gt;
=== PAM モジュール ===&lt;br /&gt;
&lt;br /&gt;
ログイン時にログインパスフレーズで保護されたディレクトリのロックを自動的に解除し、ログインパスフレーズで保護されたディレクトリをログインパスフレーズの変更と同期させておくには、システム [[PAM]] 構成を調整して &#039;&#039;pam_fscrypt&#039;&#039; を有効にします。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/pam.d/system-login}} の &#039;&#039;auth&#039;&#039; セクションに次の行を [[ヘルプ:読み方#追加, 追記, 作成, 編集|追加]] します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pam.d/system-login|&lt;br /&gt;
auth       optional   pam_fscrypt.so&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;session&#039;&#039; セクションの {{ic|session include system-auth}} の &#039;&#039;&#039;前&#039;&#039;&#039; に次の行を挿入します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pam.d/system-login|2=&lt;br /&gt;
session    [success=1 default=ignore]  pam_succeed_if.so  service = systemd-user quiet &lt;br /&gt;
session    optional                    pam_fscrypt.so&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[https://github.com/google/fscrypt/issues/95#issuecomment-377389231 https://github.com/google/fscrypt/issues/95] から取得した最初の行は、{{ ic|systemd --user}} セッションのバイパスであり [https://github.com/systemd/systemd/issues/8598 は PAM セッションを適切に閉じず] ログアウト時のロックがブロックされます。}}&lt;br /&gt;
&lt;br /&gt;
最後に、次の行を {{ic|/etc/pam.d/passwd}} に [[ヘルプ:読み方#追加, 追記, 作成, 編集|追加]] します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pam.d/passwd|&lt;br /&gt;
password    optional    pam_fscrypt.so&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== ディレクトリの暗号化 ==&lt;br /&gt;
&lt;br /&gt;
空のディレクトリを暗号化したい場合、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ fscrypt encrypt &#039;&#039;dir&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
プロンプトに従って「プロテクター」を作成あるいは選択してください。プロテクターはディレクトリの暗号鍵を保護する秘密鍵です。プロテクターの種類:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;custom_passphrase&amp;quot; - 名前の通り、あなたが設定するパスフレーズです。&lt;br /&gt;
* &amp;quot;pam_passphrase&amp;quot; - 特定のユーザーのログインパスフレーズです。このタイプのプロテクターを使用するディレクトリはユーザーのログイン時に自動的に {{ic|pam_fscrypt}} によって解錠されます (有効化されている場合)。&lt;br /&gt;
&lt;br /&gt;
どちらの場合でも、パスフレーズは後から変更が可能で、他の方法でディレクトリを再保護することもできます。&lt;br /&gt;
&lt;br /&gt;
カスタムパスフレーズの例:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ fscrypt encrypt private/|&lt;br /&gt;
Should we create a new protector? [y/N] y&lt;br /&gt;
Your data can be protected with one of the following sources:&lt;br /&gt;
1 - Your login passphrase (pam_passphrase)&lt;br /&gt;
2 - A custom passphrase (custom_passphrase)&lt;br /&gt;
3 - A raw 256-bit key (raw_key)&lt;br /&gt;
Enter the source number for the new protector [2 - custom_passphrase]: 2&lt;br /&gt;
Enter a name for the new protector: Super Secret&lt;br /&gt;
Enter custom passphrase for protector &amp;quot;Super Secret&amp;quot;:&lt;br /&gt;
Confirm passphrase:&lt;br /&gt;
&amp;quot;private/&amp;quot; is now encrypted, unlocked, and ready for use.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
PAM パスフレーズの例:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ fscrypt encrypt private/|&lt;br /&gt;
Should we create a new protector? [y/N] y&lt;br /&gt;
Your data can be protected with one of the following sources:&lt;br /&gt;
1 - Your login passphrase (pam_passphrase)&lt;br /&gt;
2 - A custom passphrase (custom_passphrase)&lt;br /&gt;
3 - A raw 256-bit key (raw_key)&lt;br /&gt;
Enter the source number for the new protector [2 - custom_passphrase]: 1&lt;br /&gt;
Enter login passphrase for testuser:&lt;br /&gt;
&amp;quot;private/&amp;quot; is now encrypted, unlocked, and ready for use.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|1=暗号化は空のディレクトリでのみ有効化できます。既存のディレクトリを暗号化したい場合、ファイルをコピーしてから元のファイルを削除してください。例:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir &#039;&#039;new_dir&#039;&#039;&lt;br /&gt;
 $ fscrypt encrypt &#039;&#039;new_dir&#039;&#039;&lt;br /&gt;
 $ cp -a -T &#039;&#039;old_dir&#039;&#039; &#039;&#039;new_dir&#039;&#039;&lt;br /&gt;
 $ find &#039;&#039;old_dir&#039;&#039; -type f -print0 {{!}} xargs -0 shred -n1 --remove=unlink&lt;br /&gt;
 $ rm -rf &#039;&#039;old_dir&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
元のファイルを削除してもディスクからフォレンジックによって復元できる可能性があります (特に SSD を使用している場合)。データは最初から暗号化された状態にすることを推奨します。}}&lt;br /&gt;
&lt;br /&gt;
== ディレクトリのロック/ロック解除 ==&lt;br /&gt;
&lt;br /&gt;
暗号化されたディレクトリのロックを解除するには、次を実行します。&lt;br /&gt;
&lt;br /&gt;
 $ fscrypt unlock &#039;&#039;dir&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;fscrypt&#039;&#039; はパスフレーズの入力を求めます。&lt;br /&gt;
&lt;br /&gt;
暗号化されたディレクトリをロックするには、次を実行します。&lt;br /&gt;
&lt;br /&gt;
 $ fscrypt lock &#039;&#039;dir&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ホームディレクトリの暗号化 ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* ログインプロテクターは、{{ic|/etc/shadow}} でのシステムのパスフレーズハッシュと同等の安全性しかありません。ログインプロテクターを使用する前に、必ず [https://github.com/google/fscrypt#securing-your-login-passphrase セキュリティに関する推奨事項] に従ってください。&lt;br /&gt;
* ユーザーのホームディレクトリが暗号化されている場合、ホームディレクトリの暗号化が解除されるまでそのユーザーに ssh でログインできなくなります。}}&lt;br /&gt;
&lt;br /&gt;
ユーザーのホームディレクトリを暗号化するには、最初に {{ic|pam_fscrypt}} の有効化などの[[#準備|準備]]を行ってください。&lt;br /&gt;
&lt;br /&gt;
それから、新しい暗号化ディレクトリを作成:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /home/newhome&lt;br /&gt;
 # chown &#039;&#039;user&#039;&#039;:&#039;&#039;user&#039;&#039; /home/newhome &lt;br /&gt;
 # fscrypt encrypt /home/newhome --user=&#039;&#039;user&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ユーザーのログインパスフレーズを使ってディレクトリを保護するオプションを選択してください。&lt;br /&gt;
&lt;br /&gt;
それからユーザーのホームディレクトリの中身を暗号化ディレクトリにコピーしてください:&lt;br /&gt;
&lt;br /&gt;
 # cp -a -T /home/&#039;&#039;user&#039;&#039; /home/newhome&lt;br /&gt;
&lt;br /&gt;
{{Tip|ホームディレクトリのコピーのための容量がディスクに存在しない場合、{{ic|mv -T /home/&#039;&#039;user&#039;&#039; /home/newhome}} とすることもできます。ただし、これは危険です。先にバックアップを作成することを強く推奨します。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|cp}} を使用した場合、実用前にログインでディレクトリが自動的に解除されるか確認できます。一番簡単な方法は再起動してそのユーザーでログインすることです。その後、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ fscrypt status /home/newhome|2=&lt;br /&gt;
&amp;quot;/home/newhome&amp;quot; is encrypted with fscrypt.&lt;br /&gt;
&lt;br /&gt;
Policy:   d80f252996aae181&lt;br /&gt;
Options:  padding:32 contents:AES_256_XTS filenames:AES_256_CTS&lt;br /&gt;
Unlocked: Yes&lt;br /&gt;
&lt;br /&gt;
Protected with 1 protector:&lt;br /&gt;
PROTECTOR         LINKED  DESCRIPTION&lt;br /&gt;
5952c84ebaf0f98d  No      login protector for testuser&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|Unlocked: No}} と表示される場合、PAM の設定に問題があるか、あるいは適切なタイプのプロテクターを選択していなかったことになります。&lt;br /&gt;
&lt;br /&gt;
そうでない場合、ホームディレクトリを置き換えてください:&lt;br /&gt;
&lt;br /&gt;
 # mv /home/&#039;&#039;user&#039;&#039; /home/oldhome&lt;br /&gt;
 # mv /home/newhome /home/&#039;&#039;user&#039;&#039;&lt;br /&gt;
 # reboot&lt;br /&gt;
&lt;br /&gt;
問題なく動いたら、古いホームディレクトリを削除できます:&lt;br /&gt;
&lt;br /&gt;
 # find /home/oldhome -type f -print0 | xargs -0 shred -n1 --remove=unlink&lt;br /&gt;
 # rm -rf /home/oldhome&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[shred]] の実行は任意ですが、強く推奨します。}}&lt;br /&gt;
&lt;br /&gt;
== Linux コンテナ内の暗号化 (lxc) ==&lt;br /&gt;
&lt;br /&gt;
[[Linux Containers]](lxc)内、またはより一般的にはファイルシステムのルートディレクトリが表示されない {{man|7|mount_namespaces}} での fscrypt の使用のサポートが v0.2.8 で追加されました。&lt;br /&gt;
&lt;br /&gt;
=== コンテナ停止時にディレクトリをロック ===&lt;br /&gt;
&lt;br /&gt;
コンテナ内の [[systemd/ユーザー]] ユニットは、コンテナの停止時に暗号化されたディレクトリをロックすることができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/lock-directory.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=lock encrypted directory on shutdown&lt;br /&gt;
DefaultDependencies=no&lt;br /&gt;
Before=shutdown.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/bin/sh -c &amp;quot;/usr/bin/fscrypt lock /home/facade/target&amp;quot;&lt;br /&gt;
TimeoutStartSec=0&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=shutdown.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
基本的な問題に対する解決方法は https://github.com/google/fscrypt/blob/master/README.md#troubleshooting や [https://github.com/google/fscrypt/issues open issues on Github] を見てください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/google/fscrypt/blob/master/README.md fscrypt ツールドキュメント]&lt;br /&gt;
* [https://www.kernel.org/doc/html/latest/filesystems/fscrypt.html fscrypt カーネルドキュメント]&lt;br /&gt;
* [https://goo.gl/55cCrI fscrypt ツールの設計文書]&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Sway&amp;diff=38225</id>
		<title>Sway</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Sway&amp;diff=38225"/>
		<updated>2024-07-26T02:21:36Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: /* kanshiのパッケージ名を修正 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wayland コンポジタ]]&lt;br /&gt;
[[es:Sway]]&lt;br /&gt;
[[en:Sway]]&lt;br /&gt;
[[it:Sway]]&lt;br /&gt;
[[pt:Sway]]&lt;br /&gt;
[[zh-hans:Sway]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ウィンドウマネージャ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
sway (&#039;&#039;&#039;S&#039;&#039;&#039;irCmpwn&#039;s &#039;&#039;&#039;Way&#039;&#039;&#039;land compositor [https://github.com/swaywm/sway/blob/f0ddf6d74c98ba6c502783b8f41be859c56712c9/README.md] から派生) は [[i3]] と互換性を持つように設計された [[Wayland]] コンポジタです。[http://swaywm.org 公式ウェブサイト] より:&lt;br /&gt;
:Sway はタイリング Wayland コンポジタであり、X11 の i3 ウィンドウマネージャの代替品です。既存の i3 設定で動作し、i3 の機能に加えて、いくつかの追加機能をサポートしています。&lt;br /&gt;
&lt;br /&gt;
見た目に興味がある場合は、Sway のフォークとして {{AUR|swayfx}} が存在します。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
sway は {{Pkg|sway}} パッケージで[[インストール]]できます。最新の開発版は {{AUR|sway-git}} でインストールできます。&#039;&#039;sway&#039;&#039; は &#039;&#039;wlroots&#039;&#039; に緻密に依存しているので、&#039;&#039;sway&#039;&#039; 更新時には &#039;&#039;wlroots&#039;&#039; も更新するのが望ましいです。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[NVIDIA]] を含む、すべてのプロプライエタリなグラフィックスドライバは [https://github.com/swaywm/sway/wiki#nvidia-users サポートされていません]。NVIDIA ドライババージョン 495 以降より、[[NVIDIA#DRM カーネルモード設定|カーネルモード設定]] を有効化して sway を {{ic|1=--unsupported-gpu}} 付きで実行すれば、sway は機能します。}}&lt;br /&gt;
&lt;br /&gt;
また、画面をロックする {{Pkg|swaylock}} や、アイドル時間管理デーモンの {{Pkg|swayidle}} もインストールできます。&lt;br /&gt;
&lt;br /&gt;
デフォルトのアプリケーションランチャーは {{AUR|wmenu}} です。(ただし、デフォルトの設定はまだ {{Pkg|dmenu}} が提供する &#039;&#039;dmenu_path&#039;&#039; に依存しています)、デフォルトの[[ターミナルエミュレータ]] は {{Pkg|foot}} です。インストールするか、あるいは設定ファイルで別のアプリケーションに変更するかを、初回起動の前に行なうことが望ましいです。i3 パッケージの Wayland 対応版については、sway wiki の [https://github.com/swaywm/sway/wiki/i3-Migration-Guide migration guide] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== sway の起動 ==&lt;br /&gt;
&lt;br /&gt;
Sway を起動する前に、キーボード、マウス、グラフィックカードなどのハードウェアデバイスにアクセスする必要があります。 {{man|3|sd-login}} で説明されているように、これらのハードウェアデバイスのコレクションはシートと呼ばれます。&lt;br /&gt;
&lt;br /&gt;
Arch Linux では、Sway は次のどちらかを使ってシートにアクセスすることができます。&lt;br /&gt;
&lt;br /&gt;
* {{man|8|systemd-logind}} と {{Pkg|polkit}} または&lt;br /&gt;
* {{Pkg|seatd}} これは、{{Pkg|wlroots}} の依存関係として Sway と一緒にインストールされます。&lt;br /&gt;
&lt;br /&gt;
{{ic|polkit}} がすでにシステムにインストールされている場合、Sway は自動的にあなたのシートにアクセスできるはずです。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|polkit}} がシステムにインストールされておらず、代わりに seatd を使用したい場合は、seat ユーザーグループに自分を追加し、{{ic|seatd.service}} を [[起動/有効化]]し、再ログインして、以下の方法のいずれかを選択して Sway を起動することができます。&lt;br /&gt;
&lt;br /&gt;
=== 手動 ===&lt;br /&gt;
&lt;br /&gt;
Linux コンソールで {{ic|sway}} と入力すれば sway が起動します。&lt;br /&gt;
&lt;br /&gt;
=== TTY ログイン時に自動起動 ===&lt;br /&gt;
&lt;br /&gt;
X と同様に、Sway はシェル初期化ファイルに以下を追加することで開始できます。([[コマンドシェル#ログインシェル]]を参照):&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
if [ -z &amp;quot;${WAYLAND_DISPLAY}&amp;quot; ] &amp;amp;&amp;amp; [ &amp;quot;${XDG_VTNR}&amp;quot; -eq 1 ]; then&lt;br /&gt;
  exec sway&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
詳細については、[[xinitrc#ログイン時に X を自動起動]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイマネージャを使う ===&lt;br /&gt;
{{Note|Sway は公式にはディスプレイマネージャをサポートしていません。}}&lt;br /&gt;
sway のセッションは {{ic|/usr/share/wayland-sessions/sway.desktop}} にあります。[[GDM]] や [[SDDM]] などのディスプレイマネージャは自動的にセッションを認識します。&lt;br /&gt;
&lt;br /&gt;
ディスプレイマネージャを通して、[https://github.com/swaywm/sway/wiki/Systemd-integration#running-sway-itself-as-a---user-service systemd ユーザーサービス] として sway を開始することも可能です。&lt;br /&gt;
&lt;br /&gt;
あるいは、テキストベースのセッションマネージャを使うこともできます。[[ディスプレイマネージャ#コンソール]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
i3 を既に使っている場合、i3 の設定を {{ic|~/.config/sway/config}} にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを {{ic|~/.config/sway/config}} にコピーしてください。サンプル設定ファイルは {{ic|/etc/sway/config}} にあります。ただし {{ic|DFALLBACK_CONFIG_DIR}} フラグが設定されている場合は存在しません。設定方法は {{man|5|sway}} を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|ドロップインファイルの設定スニペットを適用するために、ユーザの設定には {{ic|include /etc/sway/config.d/*}} が含まれていることが期待されます。{{Pkg|sway}} パッケージは、いくつかの環境変数を systemd ユーザセッションと dbus にインポートする {{ic|50-systemd-user.conf}} ドロップインファイルを提供しています。このドロップインファイルは、{{Pkg|xdg-desktop-portal-wlr}} などのいくつかのアプリケーションで必要です。}}&lt;br /&gt;
&lt;br /&gt;
=== キーマップ ===&lt;br /&gt;
デフォルトでは、sway は US QWERTY キーマップで起動します。キーマップを書き換えるには:&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
input * {&lt;br /&gt;
    xkb_layout &amp;quot;us,de,ru&amp;quot;&lt;br /&gt;
    xkb_variant &amp;quot;colemak,,typewriter&amp;quot;&lt;br /&gt;
    xkb_options &amp;quot;grp:win_space_toggle&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
input &amp;lt;identifier&amp;gt; xkb_model &amp;quot;pc101&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳細は {{man|5|sway-input}} および {{man|7|xkeyboard-config}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
なお、Sway は起動時に {{ic|XKB_DEFAULT_LAYOUT}} や {{ic|XKB_DEFAULT_VARIANT}} などの[[環境変数]]を読み込みますが、環境変数よりも設定ファイルの内容が優先されます。&lt;br /&gt;
&lt;br /&gt;
=== キーのオートリピート設定 ===&lt;br /&gt;
Typematic Delay (オートリピート開始までの時間) と Typematic Rate (1秒間のリピート回数) は、{{ic|input}} セクションに以下の行を加えると変更できます。設定項目について詳しくは[[コンソールでのキーボード設定#typematic delay と rate の調整]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
input &amp;lt;identifier&amp;gt; repeat_delay 300&lt;br /&gt;
input &amp;lt;identifier&amp;gt; repeat_rate 30&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ステータスバー ===&lt;br /&gt;
&lt;br /&gt;
sway には pure Wayland 環境で動作する &#039;&#039;swaybar&#039;&#039; がデフォルトのステータスバーとして同梱されています。&#039;&#039;swaybar&#039;&#039; はシェルスクリプトや他のプログラムを呼び出して、ステータスバーに情報を表示することができます。詳細については、{{man|5|sway-bar}} や {{man|7|swaybar-protocol}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{Pkg|waybar}} は sway に含まれているバー (swaybar) の代替になります。}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|i3status}} のインストールは、 Wayland で実用的なデフォルトのステータスバーを取得するためのオプションです。sway の設定の末尾に以下のスニペットを追加するだけで表示できます:&lt;br /&gt;
{{hc|~/.config/sway/config|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
bar {&lt;br /&gt;
  status_command i3status&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
i3status をカラー出力させたい場合、i3status の設定の以下の部分を調整してください:&lt;br /&gt;
{{hc|~/.config/i3status/config|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
general {&lt;br /&gt;
        colors = true&lt;br /&gt;
        interval = 5&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
どちらの例でも、システム全体にインストールされた設定ファイルはユーザーディレクトリにコピーされるので、それを修正してください。&lt;br /&gt;
&lt;br /&gt;
=== 壁紙 ===&lt;br /&gt;
Sway 1.1 以降、壁紙機能は {{Pkg|swaybg}} に分割され、{{ic|output}} コマンドを動作させるのに必要です。&lt;br /&gt;
&lt;br /&gt;
以下の行を sway の設定の最後に追加することで、全ての画面 ({{ic|&amp;quot;*&amp;quot;}} という名前にマッチする画面) で背景画像を設定できます:&lt;br /&gt;
{{hc|~/.config/sway/config|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
output &amp;quot;*&amp;quot; background /path/to/image.jpg fill&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
ファイルの名前やパスは適当に置き換えて下さい。&lt;br /&gt;
&lt;br /&gt;
また、背景は単一色にもできます:&lt;br /&gt;
{{bc|output * bg #000000 solid_color}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|swaybg}} コマンドの GTK3 フロントエンドとして {{AUR|azote}} を使うことができます。&lt;br /&gt;
&lt;br /&gt;
=== 入力デバイス ===&lt;br /&gt;
特定の入力デバイスの設定を調整することができます。例えば、タッチパッドの tap-to-click とナチュナルスクロールを有効にするには、以下の input ブロックを追加:&lt;br /&gt;
{{hc|~/.config/sway/config|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
input type:touchpad {&lt;br /&gt;
    tap enabled&lt;br /&gt;
    natural_scroll enabled&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
特定のタッチパッドの設定をセットするには、{{ic|swaymsg -t get_inputs}} を使用して、デバイスの Identifier を取得し、{{ic|type:touchpad}} の代わりにそれを使用します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
上記のコマンドの出力には、&amp;quot;/&amp;quot; などの記号をエスケープするために &amp;quot;\&amp;quot; が付いていることがあります (例: {{ic|&amp;quot;2:14:ETPS\/2_Elantech_Touchpad&amp;quot;}})。設定に追加するときはエスケープを取り除いてください。}}&lt;br /&gt;
&lt;br /&gt;
アクセラレーションなど他のオプションについては {{man|5|sway-input}} で詳細を確認できます。&lt;br /&gt;
&lt;br /&gt;
グラフィックタブレットをお使いの方は、[[ペンタブレット#Sway]]をご覧ください。&lt;br /&gt;
&lt;br /&gt;
==== タッチディスプレイのマッピング ====&lt;br /&gt;
&lt;br /&gt;
マルチディスプレイ環境で使用されるタッチディスプレイのタッチ入力ターゲットは、そのタッチディスプレイにのみマッピングできます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
set $display1       &amp;quot;Dell Inc. DELL P2414H VHVTW542165L&amp;quot;&lt;br /&gt;
set $display2       &amp;quot;Dell Inc. DELL P2418HT MYDM775F152L&amp;quot;&lt;br /&gt;
set $display2-touch &amp;quot;8146:24835:Melfas_LGD_AIT_Touch_Controller&amp;quot;&lt;br /&gt;
&lt;br /&gt;
input $display2-touch map_to_output $display2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== HiDPI ===&lt;br /&gt;
&lt;br /&gt;
設定ファイルの {{ic|output}} コマンドでディスプレイのスケールファクタを設定してください。スケールファクタは小数でも指定できます。HiDPI ディスプレイの場合は 2 などに設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
output &amp;lt;name&amp;gt; scale &amp;lt;factor&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ディスプレイの名前は以下のコマンドで確認できます:&lt;br /&gt;
 $ swaymsg -t get_outputs&lt;br /&gt;
&lt;br /&gt;
=== タッチディスプレイのマッピング ===&lt;br /&gt;
&lt;br /&gt;
マルチディスプレイ環境で使用するタッチディスプレイのタッチ入力のターゲットを、そのタッチディスプレイのみにマッピングすることができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
set $display1       &amp;quot;Dell Inc. DELL P2414H VHVTW542165L&amp;quot;&lt;br /&gt;
set $display2       &amp;quot;Dell Inc. DELL P2418HT MYDM775F152L&amp;quot;&lt;br /&gt;
set $display2-touch &amp;quot;8146:24835:Melfas_LGD_AIT_Touch_Controller&amp;quot;&lt;br /&gt;
&lt;br /&gt;
input $display2-touch map_to_output $display2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== カスタムキーバインド ===&lt;br /&gt;
キーボードの[[キーボード入力|特殊なキー]]を使ってコマンドを実行することができます。例えば、ボリュームや画面の明るさを制御するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%&lt;br /&gt;
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%&lt;br /&gt;
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle&lt;br /&gt;
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle&lt;br /&gt;
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-&lt;br /&gt;
bindsym XF86MonBrightnessUp exec brightnessctl set 5%+&lt;br /&gt;
bindsym XF86AudioPlay exec playerctl play-pause&lt;br /&gt;
bindsym XF86AudioNext exec playerctl next&lt;br /&gt;
bindsym XF86AudioPrev exec playerctl previous&lt;br /&gt;
bindsym XF86Search exec $menu&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳細や代替ユーティリティについては、[[PulseAudio#キーボードのボリュームコントロール]]、[[Advanced Linux Sound Architecture#キーボードのボリュームコントロール]]、[[バックライト#バックライトユーティリティ]]、[[MPRIS]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
ロック画面がアクティブなときにキーバインドを実行できるようにするには、{{ic|--locked}} パラメーターを bindsym に追加します。&lt;br /&gt;
&lt;br /&gt;
 bindsym --locked XF86AudioPlay exec playerctl play-pause&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{AUR|wev}} は、Wayland の {{Pkg|xorg-xev}} と同様の機能を提供するツールです。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|systemd は、電源キーやふたの開閉などの特別なキーや、閉じるイベントを処理します。これらは、sway で設定されたものと干渉する可能性があります。[[systemd]] での設定方法の詳細については、{{man|1|loginctl}} および {{man|5|logind.conf}}} を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== グラフィカルインジケーターバー ====&lt;br /&gt;
&lt;br /&gt;
明るさや音量などのパーセント値設定の現在のレベルを、調整時にグラフィカルなバーで表示することが望ましい場合があります。Sway でこの機能を提供する良い選択肢は {{AUR|wob}} (あるいは {{AUR|wob-git}}) です。これは、人気な X ツール {{AUR|xob}} の機能の一部を提供し、layer-shell プロトコルを実装している Wayland ネイティブなユーティリティです。使用例は[https://github.com/francma/wob プロジェクトのウェブサイト]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== ワークスペースの概要 ====&lt;br /&gt;
&lt;br /&gt;
たくさんのワークスペースをたくさんのウィンドウで使っていて、何がどこにあるかわからなくなったら、{{AUR|sov}} が便利です。これはすべてのワークスペースのスキーマを表示するオーバーレイで、sway のナビゲーションを容易にします。プログラム名、ウィンドウのタイトルを表示し、マルチ出力のセットアップをサポートします。詳しくは [https://github.com/milgra/sov プロジェクトページ]をご覧ください。&lt;br /&gt;
&lt;br /&gt;
=== アイドリング ===&lt;br /&gt;
&lt;br /&gt;
Sway には、アイドルセッションを処理するための専用のアイドル管理デーモン {{pkg|swayidle}} があります。デーモンを起動してパラメータ化する方法はいくつかあります。最も簡単な方法は、sway 自体の設定を使用することです。{{ic|swayidle}} は、{{ic|timeout}} (別名 idling)、{{ic|resume}} (resume from sleep) 、{{ic|before-sleep}} などのイベントを構成するための多数の引数を受け取ります。イベントの詳細と詳細については、{{man|1|swayidle}} を参照してください。その後、各イベントにアクションを割り当てることができます。イベントに複数のアクションを割り当てるには、トリガーを繰り返すだけです。&lt;br /&gt;
&lt;br /&gt;
次の例では、{{ic|swayidle}} 30分後に画面をロックし、5 秒後に画面をオフにします。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
exec swayidle -w \&lt;br /&gt;
	timeout 1800 &#039;swaylock -f&#039; \&lt;br /&gt;
	timeout 1805 &#039;swaymsg &amp;quot;output * power off&amp;quot;&#039; \&lt;br /&gt;
	resume &#039;swaymsg &amp;quot;output * power on&amp;quot;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ロックされたスクリーンをもっと早く、例えば10秒後にオフにするには、ロックマネージャのプロセスリストを grep し、以下のように {{ic|swaymsg &amp;quot;output * power off&amp;quot;}} を実行します。&lt;br /&gt;
&lt;br /&gt;
 timeout 10 &#039;if pgrep -x swaylock; then swaymsg &amp;quot;output * dpms off&amp;quot;; fi&#039;&lt;br /&gt;
&lt;br /&gt;
再生中のメディアを一時停止または一時停止する前に画面をロックするには、swayidle コマンドの次の手順を修正します。&lt;br /&gt;
&lt;br /&gt;
 before-sleep &#039;playerctl pause&#039;&lt;br /&gt;
 before-sleep &#039;swaylock&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|systemd も sway で設定されたイベントと競合する可能性のあるアイドルイベントを処理します。構成方法の詳細については、{{man|1|loginctl}} および {{man|5|logind.conf}} を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== フローティングウィンドウ ===&lt;br /&gt;
&lt;br /&gt;
フローティングウィンドウまたはウィンドウの割り当てを有効にするには、アプリケーションを開き、{{ic|app_id}}、{{ic|class}}、{{ic|instance}}、および {{ic|title}} 属性を使用して、フローティングウィンドウの割り当てを有効にします。次のコマンドは、開いているすべてのウィンドウのプロパティを一覧表示します。&lt;br /&gt;
&lt;br /&gt;
 $ swaymsg -t get_tree&lt;br /&gt;
&lt;br /&gt;
開いているすべてのウィンドウの {{ic|app_id}} のみを取得するには、次を使用します。&lt;br /&gt;
&lt;br /&gt;
 $ swaymsg -t get_tree | grep &amp;quot;app_id&amp;quot;&lt;br /&gt;
&lt;br /&gt;
フォーカスのあるウィンドウの {{ic|app_id}} を取得するには、次を使用します。&lt;br /&gt;
&lt;br /&gt;
 $ swaymsg -t get_tree | jq -r &#039;..|try select(.focused == true)&#039;&lt;br /&gt;
&lt;br /&gt;
一部のウィンドウで {{ic|app_id}} が null になる場合は、{{ic|class}} 属性または {{ic|instance}} 属性 (あるいはその両方) を使用して、フローティングモード/ウィンドウの割り当てを有効にする必要があります。出力を検索して、ウィンドウの細かいルールを作成できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|2=&lt;br /&gt;
for_window [app_id=&amp;quot;galculator&amp;quot;] floating enable&lt;br /&gt;
assign [class=&amp;quot;firefox&amp;quot;] -&amp;gt; 3&lt;br /&gt;
assign [class=&amp;quot;^Urxvt$&amp;quot; instance=&amp;quot;^htop$&amp;quot;] -&amp;gt; 9&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これは、{{Pkg|xorg-xprop}} を使用して [[X11]] の {{ic|class}} または {{ic|wm_name}} 属性を検索するのと似ています。&lt;br /&gt;
&lt;br /&gt;
複数のモニターを使用する場合、フローティングスクラッチパッドウィンドウが大きくなりすぎて、複数のモニターをカバーする可能性があります。このコマンドはフローティングウィンドウを中央に配置し、現在のモニターのサイズの 80% のサイズに変更します。&lt;br /&gt;
&lt;br /&gt;
 $ swaymsg move position center; swaymsg resize set 80ppt 80ppt&lt;br /&gt;
&lt;br /&gt;
=== クリップボード ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、ウィンドウを閉じるとクリップボードは空になります。これは意外なことにデフォルトの動作だったりします。&lt;br /&gt;
&lt;br /&gt;
クリップボードの内容をウィンドウ間で共有するには、 &amp;quot;クリップボードマネージャ&amp;quot; をインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
Wayland 用に設計されたクリップボードマネージャの一例は、{{AUR|clipman}} または {{AUR|clipman-git}} からインストールできる [https://github.com/yory8/clipman clipman] です。&lt;br /&gt;
&lt;br /&gt;
Sway で clipman を起動するには、設定ファイルに次の行を追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|2=&lt;br /&gt;
exec wl-paste -t text --watch clipman store --no-persist&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Xresources ===&lt;br /&gt;
sway で使用するには {{ic|.Xresources}} を {{ic|.Xdefaults}} にコピーしてください。&lt;br /&gt;
&lt;br /&gt;
=== XWayland ===&lt;br /&gt;
&lt;br /&gt;
詳細と利用可能なパッケージの概要については、[[Wayland#Xwayland]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
XWayland の使用はデフォルトで有効になっています。&lt;br /&gt;
&lt;br /&gt;
一方、XWayland を無効化し、Sway の純粋な Wayland セッションを使うには次のようにします:&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
xwayland disable&lt;br /&gt;
}}&lt;br /&gt;
{{Note|プログラムによっては Wayland でネイティブに動作させるために [[Wayland#GUI ライブラリ|特殊な環境変数や設定オプション]] を必要とするものもありますし、Wayland を全くサポートしていないプログラム(ほとんどの独自アプリケーションを含む)もあります。現在のところ、レガシーアプリケーションが使えるようにXWaylandをオンにしておくことが推奨されています。}}&lt;br /&gt;
&lt;br /&gt;
=== 別の wlroots レンダラーを使用する ===&lt;br /&gt;
&lt;br /&gt;
環境変数 {{ic|WLR_RENDERER}} を指定することにより、別の [https://gitlab.freedesktop.org/wlroots/wlroots/-/tree/master/render wlroots レンダラー]を使用することができます。利用可能なレンダラーの一覧は、[https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/docs/env_vars.md wlroots のドキュメント]にあります。{{ic|vulkan}} レンダラを使用する場合は {{Pkg|vulkan-validation-layers}} をインストールする必要がある場合があります。さもないと、sway が起動に失敗するかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== 自動起動 ===&lt;br /&gt;
&lt;br /&gt;
[[i3#自動起動]] を参照して、sway の設定ファイル名を調整してください。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 最初に CapsLock/NumLock を有効にする ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、sway は起動時に最初に {{ic|CapsLock}} と {{ic|NumLock}} キーを無効にします。代わりに、起動時にこれらを有効にするには、キーボード入力設定の {{ic|xkb_capslock}} または {{ic|xkb_numlock}} あるいはその両方を {{ic|enable}}に設定します。例えば、すべてのキーボードで有効にするには、sway 設定に次の行を追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
input type:keyboard xkb_capslock enabled&lt;br /&gt;
input type:keyboard xkb_numlock enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
いずれの場合も、キーボードの該当するキーを押すことで {{ic|CapsLock}} と {{ic|NumLock}} を切り替えることができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=これらのオプションを有効にすると、sway 設定ファイル [https://bugzilla.mozilla.org/show_bug.cgi?id=1652820 Bugzilla 1652820] をリロードしたときに Firefox がクラッシュする可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
=== 現在のキーボードレイアウト ===&lt;br /&gt;
&lt;br /&gt;
現在のキーボードレイアウトは、次のようにして取得できます。{{ic|&#039;&#039;kbd_identifier&#039;&#039;}} は、キーボードの識別子で置き換える必要があります。&lt;br /&gt;
&lt;br /&gt;
 $ swaymsg -t get_inputs {{!}} jq -r &#039;.[] {{!}} select(.identifier == &amp;quot;&#039;&#039;kbd_identifier&#039;&#039;&amp;quot;) {{!}} .xkb_active_layout_name&#039;&lt;br /&gt;
&lt;br /&gt;
=== コンポーズキー ===&lt;br /&gt;
&lt;br /&gt;
{{ic|PrintScreen}} を[[Xorg でのキーボード設定#コンポーズキーの設定|コンポーズキー]]として設定するには、&lt;br /&gt;
&lt;br /&gt;
 $ swaymsg &#039;input * xkb_options compose:prsc&#039;&lt;br /&gt;
&lt;br /&gt;
コンポーズキーの組み合わせは、[[Xorg でのキーボード設定#キーの組み合わせ|XCompose ファイル]]で設定することもできます。この変更を有効にするには、アプリケーションを再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/include/X11/keysymdef.h}} でキーの名前を調べたり、{{man|1|xev}} のようなデバッガ {{man|1|xkbcli-interactive-wayland}} ({{ic|/usr/lib/xkbcommon/}}フォルダ中) を使ったりすることができます。&lt;br /&gt;
&lt;br /&gt;
=== バックライト切り替え ===&lt;br /&gt;
&lt;br /&gt;
ディスプレイの電源をオフ (またはオン) にするには (例:{{ic|Pause}})、次のスクリプトを Sway {{ic|config}} でバインドします。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
read lcd &amp;lt; /tmp/lcd&lt;br /&gt;
    if [ &amp;quot;$lcd&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
        swaymsg &amp;quot;output * power on&amp;quot;&lt;br /&gt;
        echo 1 &amp;gt; /tmp/lcd&lt;br /&gt;
    else&lt;br /&gt;
        swaymsg &amp;quot;output * power off&amp;quot;&lt;br /&gt;
        echo 0 &amp;gt; /tmp/lcd&lt;br /&gt;
    fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
または、[https://github.com/swaywm/sway/pull/6099 toggle] オプションを直接使用することもできますが、複数のモニターがある場合は出力を明示的に指定する必要があります。&lt;br /&gt;
	&lt;br /&gt;
 $ swaymsg &amp;quot;output &#039;&#039;output_name&#039;&#039; power toggle&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 画面キャプチャと画面共有 ===&lt;br /&gt;
&lt;br /&gt;
こちらを参照 [[スクリーンショットの取得#Wayland]]&lt;br /&gt;
&lt;br /&gt;
=== 色温度調整 ===&lt;br /&gt;
&lt;br /&gt;
こちらを参照 [[バックライト#Wayland]].&lt;br /&gt;
&lt;br /&gt;
=== キーボードを使用して swaynag を制御する ===&lt;br /&gt;
&lt;br /&gt;
既定の警告/プロンプトプログラムである Swaynag は、sway に付属しており、ユーザーによるマウス操作のみをサポートしています。キーボードショートカットによる対話を有効にするには、{{AUR|swaynagmode}} などのヘルパープログラムを使用します。&lt;br /&gt;
&lt;br /&gt;
Swaynag モードは、まず swaynag を起動し、次のボタンの選択、プロンプトの削除、選択したボタンの受け入れなどのアクションをトリガーするシグナルを待機します。これらのシグナルは、制御引数 ({{ic|swaynagmode--select right}} や {{ic|swaynagmode--confirm}}など) を指定して swaynagmode スクリプト自体の別のインスタンスを起動することで送信されます。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Swaynagmode は初期化時にスウェイモード {{ic|nag}} をトリガーし、終了時に {{ic|default}} をトリガーします。これにより、sway 構成でキーバインディングを簡単に定義できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
set $nag exec swaynagmode&lt;br /&gt;
mode &amp;quot;nag&amp;quot; {&lt;br /&gt;
  bindsym {&lt;br /&gt;
    Ctrl+d    mode &amp;quot;default&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    Ctrl+c    $nag --exit&lt;br /&gt;
    q         $nag --exit&lt;br /&gt;
    Escape    $nag --exit&lt;br /&gt;
&lt;br /&gt;
    Return    $nag --confirm&lt;br /&gt;
&lt;br /&gt;
    Tab       $nag --select prev&lt;br /&gt;
    Shift+Tab $nag --select next&lt;br /&gt;
&lt;br /&gt;
    Left      $nag --select next&lt;br /&gt;
    Right     $nag --select prev&lt;br /&gt;
&lt;br /&gt;
    Up        $nag --select next&lt;br /&gt;
    Down      $nag --select prev&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
sway バージョン1.2以降では、モード名で大文字と小文字が区別されることに注意してください。&lt;br /&gt;
&lt;br /&gt;
swaynagmode を使用するように sway を設定するには、設定コマンド {{ic|swaynag_command swaynagmode}} を使用します。&lt;br /&gt;
&lt;br /&gt;
=== カーソルテーマとカーソルの大きさ ===&lt;br /&gt;
[[カーソルテーマ]] やカーソルの大きさを変更するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|&lt;br /&gt;
seat seat0 xcursor_theme &#039;&#039;my_cursor_theme&#039;&#039; &#039;&#039;my_cursor_size&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;my_cursor_theme&#039;&#039;}} は {{ic|Default}}, {{ic|Adwaita}}, {{ic|Simple-and-Soft}} などに置きかえ、{{ic|&#039;&#039;my_cursor_size&#039;&#039;}} は {{ic|48}} などに置きかえます。&lt;br /&gt;
&lt;br /&gt;
{{ic|echo $XCURSOR_SIZE}} と {{ic|echo $XCURSOR_THEME}} でこれらの値を調べることができます。&lt;br /&gt;
&lt;br /&gt;
変更を反映させるにはアプリケーションを再起動してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|Wayland ではクライアント側でカーソルテーマが決定されます。アプリケーションが{{ic|$XCURSOR_SIZE}}, {{ic|$XCURSOR_THEME}} 環境変数を参照しないこともありえます。}}&lt;br /&gt;
&lt;br /&gt;
=== systemd で sway 固有のデーモンを管理する ===&lt;br /&gt;
&lt;br /&gt;
一部のサービス/デーモン ({{Pkg|swayidle}} や {{Pkg|kanshi}}など) は、現在のウィンドウマネージャが Sway の場合にのみ開始し、Sway が停止したときにこれらのサービスを停止したい場合があります。これを行うには、{{ic|sway-session.target}} を作成し、{{ic|sway-session.target}} が必要とするデーモン/サービスを作成します。この systemd ターゲットは、ユーザーターゲットである必要があります ([[systemd/ユーザー]] を参照) 例:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/systemd/user/sway-session.target|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Sway compositor session&lt;br /&gt;
Documentation=man:systemd.special&lt;br /&gt;
BindsTo=graphical-session.target&lt;br /&gt;
Wants=graphical-session-pre.target&lt;br /&gt;
After=graphical-session-pre.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、Sway の設定ファイル(たとえば、{{ic|~/.config/sway/config}} に行を追加するか、{{ic|/etc/sway/config.d/}} に新しいファイルを追加して) 次の行を追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/sway/config|2=&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
exec_always &amp;quot;systemctl --user start sway-session.target&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定ファイルの上記の行追加で、Sway が起動するたびに {{ic|sway-session.target}} もアクティブになります。&lt;br /&gt;
&lt;br /&gt;
最後に、目的のサービスを {{ic|sway-session.target}} にリンクします。たとえば、{{Pkg|kanshi}} (または {{AUR|kanshi-git}}) サービスを追加するには、次のように入力します。&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=https://sr.ht/~emersion/kanshi&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;
{{ic|sway-session.target}} ファイルの作成と環境のインポートは、{{AUR|sway-systemd-git}} をインストールすることでも行うことができます。sway-systemd はサービスを cgroup に分けるだけでなく、各 GUI アプリケーションを独自の cgroup に配置します。これにより、個々のアプリケーションに対して cgroup 単位のリソース制約を課すことができます。[https://github.com/alebastr/sway-systemd sway-systemd README] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 起動後の画面解像度の変更 ===&lt;br /&gt;
&lt;br /&gt;
グラフィカルプログラム {{AUR|wdisplays}} またはターミナルプログラム {{AUR|wlr-randr}}&lt;br /&gt;
を使って、回転、解像度を変更し、ディスプレイを配置します。&lt;br /&gt;
&lt;br /&gt;
=== ヘッドレス出力の作成 ===&lt;br /&gt;
&lt;br /&gt;
物理的なビデオインターフェイスに関連しない出力を作成する、 HEADLESS-1、HEADLESS-2 など。&lt;br /&gt;
&lt;br /&gt;
 $ swaymsg create_output&lt;br /&gt;
&lt;br /&gt;
新しい出力の説明を表示します。&lt;br /&gt;
&lt;br /&gt;
 $ swaymsg -pt get_outputs | grep -A 10 HEADLESS&lt;br /&gt;
&lt;br /&gt;
新しい出力を、たとえば {{ic|output}} コマンドで設定します。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.config/sway/config|2=&lt;br /&gt;
output HEADLESS-1 {&lt;br /&gt;
pos 1920,0&lt;br /&gt;
mode 1280x720@75Hz&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションランチャー ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|Sway の wiki には [https://github.com/swaywm/sway/wiki#program-launchers 既知のアプリケーションランチャーのリスト] もあります。}} &lt;br /&gt;
&lt;br /&gt;
i3-dmenu-desktop {{Pkg|dmenu}}、および {{Pkg|rofi}} はすべて Sway では比較的うまく機能しますが、すべて XWayland で実行されており、カーソルをネイティブの Wayland ウィンドウに移動すると応答しなくなるという同じ問題があります。この問題の理由は、Wayland のクライアント/ウィンドウが画面のフォーカスを持っていない限り、入力デバイスにアクセスできないためです。XWayland サーバ自体が Wayland コンポジタのクライアントであるためで、XWayland クライアントの1つは、ユーザ入力にアクセスするためのフォーカスを持っている必要があります。しかし、クライアントの1つがフォーカスを取得すると、入力を収集し、X11 プロトコルを介してすべての XWayland クライアントが利用できるようにします。そのため、XWayland のウィンドウにカーソルを移動して Esc キーを押すと問題が解決し、{{ic|pkill}} を実行しても問題が解決する場合があります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bemenu}} は Wayland の dmenu をネイティブに置き換えたものです。どちらもオプションで {{Pkg|j4-dmenu-desktop}} と組み合わせることで、デスクトップファイルを起動するための Wayland ネイティブな組み合わせを提供できます (i3-dmenu-desktop がそうであるように)。例えば&lt;br /&gt;
&lt;br /&gt;
 j4-dmenu-desktop --dmenu=&#039;bemenu -i --nb &amp;quot;#3f3f3f&amp;quot; --nf &amp;quot;#dcdccc&amp;quot; --fn &amp;quot;pango:DejaVu Sans Mono 12&amp;quot;&#039; --term=&#039;termite&#039;&lt;br /&gt;
&lt;br /&gt;
XWayland を無効にしない場合は、{{ic|BEMENU_BACKEND}} 環境変数を &amp;quot;wayland&amp;quot; に設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
フローティングターミナルと fzf を使用して独自のビルドを行うこともできます ([https://github.com/swaywm/sway/issues/1367 GitHub の問題] を参照)&lt;br /&gt;
&lt;br /&gt;
また、{{Pkg|plasma-workspace}} パッケージが提供する {{ic|krunner}} バイナリもランチャーとして機能し、XWayland とネイティブ Wayland の両方をサポートします。&lt;br /&gt;
&lt;br /&gt;
{{AUR|rofi-lbonn-wayland-git}} は {{Pkg|rofi}} の派生形で、Wayland で動作します。また、X11 セッションで起動する必要がある場合は {{ic|-x11}} フラグがあります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|wofi}} はコマンド・ランチャーで、rofi と同じ機能の一部を提供します、wofi には、SSH モードやウィンドウ切り替えモードなど、rofi の機能の一部が欠けています。これは {{Pkg|wlroutes}} ライブラリに基づいており、レンダリングには GTK3 を使用していて、sway にはとてもよく効きます。&lt;br /&gt;
&lt;br /&gt;
=== 仮想環境で使う ===&lt;br /&gt;
&lt;br /&gt;
Sway は [[VirtualBox]] や [[VMware]] ESXi の両方で動作します。&lt;br /&gt;
&lt;br /&gt;
[[QEMU]] で Sway を機能させるには、{{ic|-vga qxl}} で QEMU を開始する必要があります。 [[QEMU#qxl]]も参照してください。&lt;br /&gt;
&lt;br /&gt;
==== Sway を tty から起動できない ====&lt;br /&gt;
&lt;br /&gt;
3D アクセラレーションを有効にする必要があります。[[VMware#Intel と Optimus で 3D グラフィックを有効化]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== マウスカーソルが表示されない ====&lt;br /&gt;
&lt;br /&gt;
特定のグラフィックスドライバー(VMSVGA グラフィックコントローラーやのプロプライエタリ NVIDIA ドライバーなど)を使うとカーソルが表示されません。これは、[https://github.com/swaywm/sway/issues/3814] で説明されているようにソフトウェアカーソルを使用して修正できます。&lt;br /&gt;
&lt;br /&gt;
 $ export WLR_NO_HARDWARE_CURSORS=1&lt;br /&gt;
&lt;br /&gt;
=== Sway Socket Not Detected ===&lt;br /&gt;
&lt;br /&gt;
{{ic|swaymsg -t get_outputs}} などの {{ic|swaymsg}} 引数を使用すると、次のメッセージが返されることがあります。&lt;br /&gt;
&lt;br /&gt;
 sway socket not detected.&lt;br /&gt;
 ERROR: Unable to connect to&lt;br /&gt;
&lt;br /&gt;
ターミナルマルチプレクサ ([[GNU Screen]] や [[tmux]] など) 内で実行される場合。これは、{{ic|swaymsg}} が {{ic|SWAYSOCK}} で提供されたソケットに接続できなかったことを意味します。&lt;br /&gt;
&lt;br /&gt;
{{ic|SWAYSOCK}} の現在の値を確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ env {{!}} grep -F &amp;quot;SWAYSOCK&amp;quot;|2=&lt;br /&gt;
SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この問題を回避するには、実行中の sway プロセスに基づいてソケットにアタッチしてみてください。&lt;br /&gt;
&lt;br /&gt;
 $ export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock&lt;br /&gt;
&lt;br /&gt;
上記のエラーを解決するには、マルチプレクサの外でコマンドを実行する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== Wayland サーバーへの接続に失敗する ===&lt;br /&gt;
&lt;br /&gt;
Tmux はセッションごとにローカルな環境変数を作成します (確認するには {{ic|tmux show-environment}} と入力) そのため、[https://github.com/tmux-plugins/tmux-resurrect tmux-resurrect] や [https://github.com/tmux-plugins/tmux-continuum tmux-continuum] で以前の tmux セッションに再アタッチしたり、sway の起動前に tmux サーバを起動すると、環境変数は、古くなっています。&lt;br /&gt;
&lt;br /&gt;
{{ic|update-environment}} を使って、セッションにアタッチするたびにそれらを更新するように tmux に指示するには、以下を {{ic|.tmux.conf}} に追加してください。&lt;br /&gt;
&lt;br /&gt;
 set-option -g update-environment &amp;quot;DISPLAY WAYLAND_DISPLAY SWAYSOCK SSH_AUTH_SOCK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Unable to retrieve socket path ===&lt;br /&gt;
&lt;br /&gt;
tty から {{ic|swaymsg -t}} を実行すると、&lt;br /&gt;
 Unable to retrieve socket path&lt;br /&gt;
というメッセージが表示されます。これは {{ic|SWAYLOCK}} 環境変数が Sway 起動後に設定されるためで、{{ic|swaymsg}} は Sway 内のターミナルで実行してください。&lt;br /&gt;
&lt;br /&gt;
=== キー割り当てとキーボードレイアウト ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、複数のキーボードレイアウト {{ic|&amp;lt;nowiki&amp;gt;input * xkb_layout &amp;quot;us,ru&amp;quot;&amp;lt;/nowiki&amp;gt;}} を使用している場合、セカンダリレイアウトを切り替えたときにバインディングが壊れることがあります。&lt;br /&gt;
&lt;br /&gt;
https://github.com/swaywm/sway/pull/3058, のおかげで、以下のように {{ic|--to-code}} 行に {{ic|--to-code}}キーを追加するだけで済みます。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
bindsym --to-code {&lt;br /&gt;
  $mod+$left focus left&lt;br /&gt;
  $mod+$down focus down&lt;br /&gt;
  $mod+$up focus up&lt;br /&gt;
  $mod+$right focus right&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
または、変数 {{ic|set$mybind bindsym--to-code}} を作成し、{{ic|bindsym}} のすべてのインスタンスを {{ic|$mybind}} で置き換えることもできます。{{ic|$mybind$mod+w thing}}&lt;br /&gt;
&lt;br /&gt;
=== Java アプリケーション ===&lt;br /&gt;
&lt;br /&gt;
一部の Java ベースのアプリケーション (IntelliJ、CLion、PyCharm などの JetBrains エディタ) を開くと、空白の画面が表示されます。これを軽減するには、{{ic|_JAVA_AWT_WM_NONREPARENTING}} 環境変数を1に設定してアプリケーションを起動します。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|rofi}} や {{Pkg|dmenu}} などのランチャーからアプリケーションを起動する場合は、 [[デスクトップエントリ#環境変数の修正]] に示すように、アプリケーションのデスクトップエントリを変更してください。&lt;br /&gt;
&lt;br /&gt;
Java アプリケーションに関するいくつかの問題は、OpenJDK11 および Sway 1.5 で修正されました。ただし、一部のアプリケーションでは、新しいバージョンの OpenJDK を使用するために追加の構成が必要です。Android Studio の場合は、{{ic|1=STUDIO_JDK=/usr/lib/jvm/java-11-openjdk/}} を設定する必要があります。 [https://github.com/swaywm/sway/issues/5414]&lt;br /&gt;
&lt;br /&gt;
=== ボーダーでスクロール ===&lt;br /&gt;
&lt;br /&gt;
アプリケーションのボーダー上でマウスのスクロールホイールを使用するとクラッシュする場合は、{{ic|app_id}} (例:Firefox) に {{ic|border none}} を設定してください。&lt;br /&gt;
&lt;br /&gt;
=== Program cannot open display ===&lt;br /&gt;
&lt;br /&gt;
起動時に &#039;&#039;Program cannot open display&#039;&#039; というエラーメッセージが表示されてプログラムがクラッシュする場合は、使用しているプログラムが X11 プログラムである可能性があります。XWayland 互換性レイヤを使って Wayland で X11 プログラムを実行することができます。詳細は [[Sway#Xwayland]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Unable to open wayland socket ===&lt;br /&gt;
&lt;br /&gt;
sway が起動せず、&amp;quot;Unable to open wayland socket&amp;quot; というエラーメッセージが出力される場合は、`$XDG_RUNTIME_DIR` 環境変数が設定されているが、指定したディレクトリがないことを意味する場合があります。&lt;br /&gt;
&lt;br /&gt;
=== WINE アプリケーションでマウスが動作しない ===&lt;br /&gt;
&lt;br /&gt;
プログラムを実行するとき、WINE はプライマリーモニターが設定されていることを期待しますが、Wayland にはプライマリーモニターの概念がないため、(クリックが認識されないなど) 問題を引き起こす可能性があります。代わりに、Sway の設定にこの行を追加することで、[[xrandr]] を介して XWayland が使用するプライマリモニタを指定することができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/sway/config|2=&lt;br /&gt;
...&lt;br /&gt;
exec_always xrandr --output XWAYLAND0 --primary&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For this to work your display position offset needs to be 0,0 because of a bug [https://github.com/swaywm/sway/issues/6651] in sway.&lt;br /&gt;
XWAYLAND0 (または任意の XWAYLAND ディスプレイ名) はあなたのモニターを表していない可能性があり、異なるセッションで変更される可能性があります。代わりに、次の行を使用して最初の XWAYLAND ディスプレイを指定することができます。:&lt;br /&gt;
&lt;br /&gt;
 exec_always xrandr --output $(xrandr | grep -m 1 XWAYLAND | awk &#039;{print $1;}&#039;) --primary&lt;br /&gt;
&lt;br /&gt;
これらの行は、あなたのニーズに合わせて調整する必要があるかもしれません。どのディスプレイがどの名前にマッピングされているかは、引数なしで {{ic|xrandr}} コマンドを使用することで確認できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|XWayland は、新しく接続されたモニターを(電源を切って再び入れたものも含めて)まったく新しいディスプレイとして認識します。もしこれが &amp;quot;プライマリーモニター&amp;quot; に起こった場合、それはもはやプライマリーとはみなされていません。}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/SirCmpwn/sway Github プロジェクト]&lt;br /&gt;
* [https://github.com/swaywm/sway/wiki Sway user-maintained wiki]&lt;br /&gt;
* [http://swaywm.org ウェブサイト]&lt;br /&gt;
* [https://drewdevault.com/2019/03/11/Sway-1.0-released.html Announcing the release of sway 1.0]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Sway|2023/4/11|775342}}&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Bcachefs&amp;diff=37359</id>
		<title>Bcachefs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Bcachefs&amp;diff=37359"/>
		<updated>2024-05-08T02:04:49Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: bcachefs-toolsの公式リポジトリ入りを反映&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;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9e87705289667a6c5185c619ea32f3d39314eb1b カーネル 6.7] (2024年1月) で Bcachefs はアップストリーム [[カーネル]] にマージされ、[[linux]] パッケージで利用できるようになりました。他のカーネルパッケージは 6.7 より古いバージョンをベースにしている可能性があり、Bcachefs 用の特別なパッチが必要です。&lt;br /&gt;
&lt;br /&gt;
Bcachefs ユーザースペースツールは {{Pkg|bcachefs-tools}} から入手できます。&lt;br /&gt;
&lt;br /&gt;
== セットアップ ==&lt;br /&gt;
&lt;br /&gt;
=== シングルドライブ ===&lt;br /&gt;
&lt;br /&gt;
 #bcachefs format /dev/sda&lt;br /&gt;
 #mount -t bcachefs /dev/sda/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/sda /dev/sdb --replicas=&#039;&#039;n&#039;&#039;&lt;br /&gt;
 # mount -t bcachefs /dev/sda:/dev/sdb /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;
=== 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/sda \&lt;br /&gt;
     --label=ssd.ssd2 /dev/sdb \&lt;br /&gt;
     --label=hdd.hdd1 /dev/sdc \&lt;br /&gt;
     --label=hdd.hdd2 /dev/sdd \&lt;br /&gt;
     --label=hdd.hdd3 /dev/sde \&lt;br /&gt;
     --label=hdd.hdd4 /dev/sdf \&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/sda:/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde:/dev/sdf /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;
ほとんどのオプションは、 {{ic|bcachefs format}} 中、マウント時 ({{ic|1=mount -o option=value}})、またはsysfs ({{ic|echo X &amp;gt; /sys/fs/bcachefs/&#039;&#039;UUID&#039;&#039;/options/&#039;&#039;option&#039;&#039;}}) フォーマット中にオプションを設定するか、 sysfs を介してオプションを変更すると、ファイルシステムのスーパーブロックに保存され、それらのドライブのデフォルトになります。マウントオプションはこれらのデフォルトを上書きします。&lt;br /&gt;
{{Note|sysfs を使用できるようにするには、ファイルシステムをマウントする必要があります。 fsck を除くすべての操作はライブファイルシステムで可能です}}&lt;br /&gt;
&lt;br /&gt;
* data_checksum、metadata_checksum(none、crc32c、crc64)&lt;br /&gt;
*(foreground)compression、background_compression(None、lz4、gzip、zstd)&lt;br /&gt;
* foreground_target、background_target、promote_target&lt;br /&gt;
&lt;br /&gt;
以下は、 {{ic|1=bcachefs setattr &#039;&#039;file&#039;&#039; --option=value}} を使用して、ディレクトリごとまたはファイルごとに設定することもできます。&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;
{{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;
さらに有用なエラーメッセージについては、[[systemd/ジャーナル|ジャーナル]]を確認してください。&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;
* [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;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Iwd&amp;diff=36760</id>
		<title>Iwd</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Iwd&amp;diff=36760"/>
		<updated>2024-04-04T02:11:49Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: /* EAP-PEAP */  Hashの生成コマンドを更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:無線ネットワーク]]&lt;br /&gt;
[[Category:ネットワーク設定]]&lt;br /&gt;
[[en:Iwd]]&lt;br /&gt;
[[pt:Iwd]]&lt;br /&gt;
[[ru:Iwd]]&lt;br /&gt;
[[zh-hans:Iwd]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ネットワーク設定}}&lt;br /&gt;
{{Related|ワイヤレスネットワーク設定}}&lt;br /&gt;
{{Related|wpa_supplicant}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://iwd.wiki.kernel.org/ iwd] (iNet wireless daemon) は Intel によって書かれた Linux 用の無線デーモンです。プロジェクトの中心的な目標は、外部ライブラリに依存せず、Linux カーネルが提供する機能を最大限に活用することにより、リソース使用率を最適化することです。&lt;br /&gt;
&lt;br /&gt;
iwd はスタンドアロンでも動作しますが [[ConnMan]]、[[systemd-networkd]] や [[NetworkManager]] のような包括的なネットワークマネージャーとの組み合わせて使うこともできます。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[ネットワークマネージャ]] 経由で iwd を使用する場合は、そのネットワークマネージャの記事に明示的に記載されていない限り、このページの指示には従わないでください。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|iwd}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|iwd}} パッケージにはクライアントプログラムの {{ic|iwctl}} とデーモンの {{ic|iwd}}、そして Wi-Fi 監視ツールの {{ic|iwmon}} が含まれています。&lt;br /&gt;
&lt;br /&gt;
{{ic|iwd.service}} を[[起動]]・[[有効化]])したら、{{ic|iwctl}} コマンドを使って制御することができます。&lt;br /&gt;
&lt;br /&gt;
=== iwctl ===&lt;br /&gt;
&lt;br /&gt;
対話型プロンプトを表示するには、次のようにします:&lt;br /&gt;
&lt;br /&gt;
 $ iwctl&lt;br /&gt;
&lt;br /&gt;
対話型プロンプトは、プレフィックスが、{{ic|[iwd]#}} と表示されます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* {{ic|iwctl}} プロンプトで、{{ic|Tab}} キーを押すとコマンドとデバイス名を補完できます。&lt;br /&gt;
* 対話型プロンプトを終了するには、{{ic|Ctrl+d}} を押して、 [[Wikipedia:EOF character|EOF]] を送信します。&lt;br /&gt;
* 対話型プロンプトを使用せずに、すべてのコマンドをコマンドライン引数として使用できます。例:{{ic|iwctl device wlan0 show}}}}&lt;br /&gt;
&lt;br /&gt;
使用可能なすべてのコマンドの一覧を表示するには:&lt;br /&gt;
&lt;br /&gt;
 [iwd]# help&lt;br /&gt;
&lt;br /&gt;
==== ネットワークに接続する ====&lt;br /&gt;
&lt;br /&gt;
先ず、ワイヤレスデバイス名がわからない場合は、すべての Wi-Fiデバイスを一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 [iwd]# device list&lt;br /&gt;
&lt;br /&gt;
次に、ネットワークをスキャンします:&lt;br /&gt;
&lt;br /&gt;
 [iwd]# station &#039;&#039;device&#039;&#039; scan&lt;br /&gt;
&lt;br /&gt;
利用可能なすべてのネットワークを一覧表示できます:&lt;br /&gt;
&lt;br /&gt;
 [iwd]# station &#039;&#039;device&#039;&#039; get-networks&lt;br /&gt;
&lt;br /&gt;
最後に、ネットワークに接続するには:&lt;br /&gt;
&lt;br /&gt;
 [iwd]# station &#039;&#039;device&#039;&#039; connect &#039;&#039;SSID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|ユーザーインターフェイスはオートコンプリートをサポートしています。{{ic|station }} と入力し、{{ic|Tab}} {{ic|Tab}} を押すと、使用可能なデバイスが表示され、デバイスの最初の文字を入力し、{{ic|Tab}} を押して補完します。 同じように、{{ic|connect }} を入力し {{ic|Tab}} {{ic|Tab}} と押すと、利用可能なネットワークのリストを表示します。次に、使用するネットワークの最初の文字を入力して、{{ic|Tab}} キーを押して補完を完了します。}} &lt;br /&gt;
&lt;br /&gt;
パスフレーズが必要な場合は、入力を求められます。コマンドライン引数として指定することもできます:&lt;br /&gt;
&lt;br /&gt;
 $ iwctl --passphrase &#039;&#039;passphrase&#039;&#039; station &#039;&#039;device&#039;&#039; connect &#039;&#039;SSID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{ic|iwd}} はネットワークパスフレーズを {{ic|/var/lib/iwd}} ディレクトリに自動的に保存し、将来的にそれらを使用して自動接続します。 [[#Network configuration]] を参照してください。&lt;br /&gt;
* SSID にスペースが含まれるネットワークに接続するには、接続時にネットワーク名をダブルクオートで囲む必要があります。&lt;br /&gt;
* iwd は、8〜63 文字の ASCII エンコード文字の PSK パスフレーズのみをサポートします。要件が満たされていない場合は次のエラーメッセージが表示されます: {{ic|PMK generation failed.  Ensure Crypto Engine is properly configured}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== WPS/WSC を使用してネットワークに接続する ====&lt;br /&gt;
&lt;br /&gt;
ボタンを押してネットワークに接続できるように設定されている場合 ([[Wikipedia:ja:Wi-Fi Protected Setup]]) は、まず、ネットワークデバイスがこのセットアップ手順を使用できることを確認してください。&lt;br /&gt;
&lt;br /&gt;
 [iwd]# wsc list&lt;br /&gt;
&lt;br /&gt;
次に、デバイスが上記のリストに表示されている場合、&lt;br /&gt;
&lt;br /&gt;
 [iwd]# wsc &#039;&#039;device&#039;&#039; push-button&lt;br /&gt;
&lt;br /&gt;
それから、ルーターのボタンを押します。この手順は、2分以内にボタンを事前に押した場合にも機能します。&lt;br /&gt;
&lt;br /&gt;
ネットワークがその方法で接続するために、PIN 番号を検証する必要がある場合は、help コマンド出力をチェックして、{{ic|wsc}} コマンドに適切なオプションを提供する方法を確認してください。&lt;br /&gt;
&lt;br /&gt;
==== ネットワークから切断する ====&lt;br /&gt;
&lt;br /&gt;
ネットワークから切断するには:&lt;br /&gt;
&lt;br /&gt;
 [iwd]# station &#039;&#039;device&#039;&#039; disconnect&lt;br /&gt;
&lt;br /&gt;
==== デバイスと接続情報を表示する ====&lt;br /&gt;
&lt;br /&gt;
MAC アドレスなどの WiFi デバイスの詳細を表示するには:&lt;br /&gt;
&lt;br /&gt;
 [iwd]# device &#039;&#039;device&#039;&#039; show&lt;br /&gt;
&lt;br /&gt;
WiFi デバイスの接続ネットワークを含む接続状態を表示するには:&lt;br /&gt;
&lt;br /&gt;
 [iwd]# station &#039;&#039;device&#039;&#039; show&lt;br /&gt;
&lt;br /&gt;
==== 既知のネットワークの管理 ====&lt;br /&gt;
&lt;br /&gt;
以前に接続したネットワークを一覧表示するには:&lt;br /&gt;
&lt;br /&gt;
 [iwd]# known-networks list&lt;br /&gt;
&lt;br /&gt;
既知のネットワークを忘れるには:&lt;br /&gt;
&lt;br /&gt;
 [iwd]# known-networks &#039;&#039;SSID&#039;&#039; forget&lt;br /&gt;
&lt;br /&gt;
=== iwgtk ===&lt;br /&gt;
&lt;br /&gt;
{{Aur|iwgtk}} は、iwd を制御できる GUI フロントエンドを提供します。&lt;br /&gt;
&lt;br /&gt;
引数を指定せずに {{ic|iwgtk}} を実行すると、アプリケーションウィンドウが起動します。このウィンドウを使用して、アダプターとデバイスのオン/オフの切り替え、動作モードの変更、利用可能なネットワークの表示、利用可能なネットワークへの接続、既知のネットワークの管理を行うことができます。&lt;br /&gt;
&lt;br /&gt;
==== インジケーターアイコン ====&lt;br /&gt;
&lt;br /&gt;
iwgtk のインジケーター (トレイ) アイコンデーモンを起動するには、次のコマンドを実行します:&lt;br /&gt;
&lt;br /&gt;
 $ iwgtk -i&lt;br /&gt;
&lt;br /&gt;
インジケーターアイコンが表示されない場合は、システムトレイで StatusNotifierItem API がサポートされていない可能性が高く、その場合は、{{Aur|snixembed-git}} などの互換性レイヤーを実行する必要があります。&lt;br /&gt;
&lt;br /&gt;
次のシステムトレイは StatusNotifierItem をサポートしているため、そのまま使用できます:&lt;br /&gt;
&lt;br /&gt;
* KDE Plasma&lt;br /&gt;
* swaybar&lt;br /&gt;
* xfce4-panel&lt;br /&gt;
&lt;br /&gt;
次のトレイは XEmbed のみをサポートしているため、{{Aur|snixembed-git}} が必要です:&lt;br /&gt;
&lt;br /&gt;
* AwesomeWM&lt;br /&gt;
* i3bar&lt;br /&gt;
&lt;br /&gt;
==== 自動起動 ====&lt;br /&gt;
&lt;br /&gt;
iwgtk の最も一般的な使用例は、デスクトップにログインするたびにインジケーターデーモンを起動することです。デスクトップ環境が [[XDG Autostart]] 標準をサポートしている場合、AUR パッケージによって {{ic|/etc/xdg/autostart/}} に配置されている {{ic|iwgtk-indicator.desktop}} ファイルにより自動的に行われます。&lt;br /&gt;
&lt;br /&gt;
あるいは、インジケーターデーモンを起動するための systemd ユニットファイルが AUR パッケージによって提供されます。デスクトップ環境が systemd の {{ic|graphical-session.target}} ユニットをサポートしている場合、{{ic|iwgtk.service}} [[ユーザーユニット]] を [[有効化]] することで、systemd 経由で iwgtk を自動起動できます。&lt;br /&gt;
&lt;br /&gt;
== ネットワーク設定 ==&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、&#039;&#039;iwd&#039;&#039; はネットワーク設定を {{ic|/var/lib/iwd}} ディレクトリに保存します。設定ファイルの名前は、{{ic|&#039;&#039;network&#039;&#039;.&#039;&#039;type&#039;&#039;}} となります。&#039;&#039;network&#039;&#039; はネットワーク SSID で &#039;&#039;.type&#039;&#039; はネットワークタイプ(&#039;&#039;.open&#039;&#039;、&#039;&#039;.wep&#039;&#039;、&#039;&#039;.psk&#039;&#039; または &#039;&#039;.8021x&#039;&#039;)です。このファイルは暗号化された{{ic|事前共有鍵}}と、オプションでクリアテキストの{{ic|パスフレーズ}}を保存するために使用され、ユーザー iwctl を呼び出さずに作成することもできます。このファイルは、そのネットワーク SSID に関連する他の設定にも使用できます。詳細な設定については、{{man|5|iwd.network}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== WPA-PSK ===&lt;br /&gt;
&lt;br /&gt;
SSID &amp;quot;spaceship&amp;quot; とパスフレーズ &amp;quot;test1234&amp;quot; を使用して WPA-PSK または WPA2-PSK で保護されたネットワークに接続するための最小限のサンプルファイル:&lt;br /&gt;
&lt;br /&gt;
{{hc|/var/lib/iwd/spaceship.psk|2=&lt;br /&gt;
[Security]&lt;br /&gt;
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ネットワークの SSID は英数字のみまたは {{ic|- _}} のいずれかを含む場合のみファイル名として使用されます。他の文字が含まれている場合、名前は {{ic|1==}} 文字の後に16進数でエンコードされた SSID が代わりに使用されます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
パスフレーズから事前共有鍵を計算するには、次の二つの方法のいずれかを使用できます:&lt;br /&gt;
&lt;br /&gt;
* 設定ファイルにクリアテキストでパスフレーズを入力します:&lt;br /&gt;
{{hc|/var/lib/iwd/spaceship.psk|2=&lt;br /&gt;
[Security]&lt;br /&gt;
Passphrase=test1234}}&lt;br /&gt;
事前共有鍵は、最初の接続時にファイルに追加されます。&lt;br /&gt;
{{hc|/var/lib/iwd/spaceship.psk|2=&lt;br /&gt;
[Security]&lt;br /&gt;
Passphrase=test1234&lt;br /&gt;
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295}}&lt;br /&gt;
&lt;br /&gt;
* もしくは、事前共有鍵は、&#039;&#039;wpa_passphrase&#039;&#039; ({{Pkg|wpa_supplicant}} から) または {{AUR|wpa-psk}} を使用して、SSID とパスフレーズから計算できます。詳細については [[wpa_supplicant#wpa_passphrase で接続する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== WPA Enterprise ===&lt;br /&gt;
&lt;br /&gt;
==== EAP-PWD ====&lt;br /&gt;
&lt;br /&gt;
EAP-PWD で保護されたエンタープライズアクセスポイントに接続するには {{ic|/var/lib/iwd}} フォルダに以下の内容で {{ic|&#039;&#039;essid&#039;&#039;.8021x}} という名前のファイルを作成する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/var/lib/iwd/&#039;&#039;essid&#039;&#039;.8021x|2=&lt;br /&gt;
[Security]&lt;br /&gt;
EAP-Method=PWD&lt;br /&gt;
EAP-Identity=&#039;&#039;your_enterprise_email&#039;&#039;&lt;br /&gt;
EAP-Password=&#039;&#039;your_password&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[Settings]&lt;br /&gt;
AutoConnect=true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
アクセスポイントに自動接続したくない場合、AutoConnect オプションを false に設定して {{ic|iwctl}} で手動でアクセスポイントに接続してください。パスワードを平文で保存したくない場合は、ファイルからパスワードの設定を外してください。&lt;br /&gt;
&lt;br /&gt;
==== EAP-PEAP ====&lt;br /&gt;
&lt;br /&gt;
EAP-PWD と同様に、フォルダー内に {{ic|&#039;&#039;essid&#039;&#039;.8021x}} を作成する必要があります。設定ファイルの作成に進む前に、組織が使用している CA 証明証を確認する良い機会でもあります。これは MSCHAPv2 パスワード認証を使用する設定ファイルの例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/var/lib/iwd/&#039;&#039;essid&#039;&#039;.8021x|2=&lt;br /&gt;
[Security]&lt;br /&gt;
EAP-Method=PEAP&lt;br /&gt;
EAP-Identity=anonymous@realm.edu&lt;br /&gt;
EAP-PEAP-CACert=/path/to/root.crt&lt;br /&gt;
EAP-PEAP-ServerDomainMask=radius.realm.edu&lt;br /&gt;
EAP-PEAP-Phase2-Method=MSCHAPV2&lt;br /&gt;
EAP-PEAP-Phase2-Identity=johndoe@realm.edu&lt;br /&gt;
EAP-PEAP-Phase2-Password=hunter2&lt;br /&gt;
&lt;br /&gt;
[Settings]&lt;br /&gt;
AutoConnect=true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
MsCHAPv2 パスワードは、暗号化されたハッシュとして保存することもできます。正しい md4 ハッシュは次のように計算できます: (パスワードの後に EOF を挿入し、Enter キーを押さないでください)&lt;br /&gt;
&lt;br /&gt;
 $ iconv -t utf16le | openssl md4 -provider legacy&lt;br /&gt;
&lt;br /&gt;
結果のハッシュは、{{ic|EAP-PEAP-Phase2-Password-Hash}} キー内に保存する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&#039;&#039;eduroam&#039;&#039; の使用を計画している場合は、[[#Eduroam]] も参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== TTLS-PAP ====&lt;br /&gt;
&lt;br /&gt;
EAP-PWD と同様に、フォルダー中に {{ic|&#039;&#039;essid&#039;&#039;.8021x}} を作成する必要があります。設定ファイルの作成に進む前に、組織が使用している CA 証明書を確認する良い機会でもあります。これは、PAP パスワード認証を使用する設定ファイルの例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/var/lib/iwd/&#039;&#039;essid&#039;&#039;.8021x|2=&lt;br /&gt;
[Security]&lt;br /&gt;
EAP-Method=TTLS&lt;br /&gt;
EAP-Identity=anonymous@uni-test.de&lt;br /&gt;
EAP-TTLS-CACert=cert.pem&lt;br /&gt;
EAP-TTLS-ServerDomainMask=*.uni-test.de&lt;br /&gt;
EAP-TTLS-Phase2-Method=Tunneled-PAP&lt;br /&gt;
EAP-TTLS-Phase2-Identity=user&lt;br /&gt;
EAP-TTLS-Phase2-Password=password&lt;br /&gt;
&lt;br /&gt;
[Settings]&lt;br /&gt;
AutoConnect=true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Eduroam ====&lt;br /&gt;
&lt;br /&gt;
Eduroam は [https://cat.eduroam.org/ 設定アシスタントツール(CAT)] を提供していますが、残念ながら iwd には対応していません。しかし、ダウンロードボタンをクリックし、大学を選択してダウンロードできるインストーラは単なる Python スクリプトです。証明書やサーバのドメインマスクなど、必要な設定オプションを簡単に抽出することができます。&lt;br /&gt;
&lt;br /&gt;
以下の表は、iwd の設定オプションと eduroam CAT のインストールスクリプトの変数の対応を示します。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
! Iwd 設定オプション !! CAT スクリプト変数&lt;br /&gt;
|-&lt;br /&gt;
| file name || {{ic|Config.ssids}} の一つ&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|EAP-Method}} || {{ic|Config.eap_outer}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|EAP-Identity}} || {{ic|Config.anonymous_identity}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|EAP-PEAP-CACert}} || {{ic|Config.CA}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|EAP-PEAP-ServerDomainMask}} || {{ic|Config.servers}} の一つ&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|EAP-PEAP-Phase2-Method}} || {{ic|Config.eap_inner}}&lt;br /&gt;
|-&lt;br /&gt;
| {{ic|EAP-PEAP-Phase2-Identity}} || ユーザー名@{{ic|Config.user_realm}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{ic|EAP-Identity}} は Eduroam プロバイダによって要求されていない場合があります。その場合は、このフィールドに {{ic|anonymous@Config.user_realm}} を使用する必要があります。&lt;br /&gt;
* {{ic|EAP-PEAP-ServerDomainMask}} が {{ic|DNS:}} で始まる場合は、{{ic|DNS:}} 以降の部分のみを使用してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== その他のケース ====&lt;br /&gt;
&lt;br /&gt;
その他のテスト例は、上流リポジトリの [https://git.kernel.org/pub/scm/network/wireless/iwd.git/tree/autotests テストケース]にあります。&lt;br /&gt;
&lt;br /&gt;
== 任意設定 ==&lt;br /&gt;
&lt;br /&gt;
メインの設定は {{ic|/etc/iwd/main.conf}} ファイルで行います。&lt;br /&gt;
{{man|5|iwd.config}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 特定のネットワークに対する自動接続を無効化 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/var/lib/iwd/&#039;&#039;network&#039;&#039;.&#039;&#039;type&#039;&#039;}} ファイルを作成・編集してください (&#039;&#039;network&#039;&#039; はネットワークの SSID に、&#039;&#039;type&#039;&#039; は &amp;quot;open&amp;quot;, &amp;quot;wep&amp;quot;, &amp;quot;psk&amp;quot;, &amp;quot;8021x&amp;quot; のどれかのネットワークタイプに置き換えてください)。そしてファイルに以下のセクションを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/var/lib/iwd/spaceship.psk|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Settings]&lt;br /&gt;
AutoConnect=false&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== 利用可能なネットワークの定期スキャンを無効にする ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、 {{ic|iwd}} は切断状態の場合、利用可能なネットワークを定期的にスキャンします。定期スキャンを無効にする(常に手動でスキャンする)には、{{ic|/etc/iwd/main.conf}} ファイルを作成/編集し、以下のセクションを追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/iwd/main.conf|2=&lt;br /&gt;
[Scan]&lt;br /&gt;
DisablePeriodicScan=true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 内蔵ネットワーク設定の有効化 ===&lt;br /&gt;
&lt;br /&gt;
バージョン 0.19 以降、iwd は内蔵の DHCP クライアントまたは静的な設定を使用して、IPアドレスの割り当てとルートの設定を行うことができます。これは、[[ネットワーク設定#DHCP|スタンドアロン DHCP クライアント]]の良い代替手段です。&lt;br /&gt;
&lt;br /&gt;
iwd のネットワーク設定機能を有効にするには、/{{ic|/etc/iwd/main.conf}} を作成・編集し、以下のセクションを追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/iwd/main.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
EnableNetworkConfiguration=true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
また、{{ic|RoutePriorityOffset}} でルートメトリックを設定する機能もあります:&lt;br /&gt;
{{hc|/etc/iwd/main.conf|2=&lt;br /&gt;
[Network]&lt;br /&gt;
RoutePriorityOffset=300&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== IPv6 support ====&lt;br /&gt;
&lt;br /&gt;
バージョン 1.10 以降、iwd は IPv6 をサポートしていますが、デフォルトでは無効になっています。IPv6 を有効にするには、設定ファイルに以下を追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/iwd/main.conf|2=&lt;br /&gt;
[Network]&lt;br /&gt;
EnableIPv6=true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この設定は、DHCPv6 または 静的 IPv6 設定のどちらを使用する場合でも必要です。ネットワーク毎に設定することもできます。&lt;br /&gt;
&lt;br /&gt;
==== ネットワーク構成での静的 IP アドレスの設定 ====&lt;br /&gt;
&lt;br /&gt;
次のセクションを {{ic|/var/lib/iwd/&#039;&#039;network&#039;&#039;.&#039;&#039;type&#039;&#039;}} ファイルに追加します。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|/var/lib/iwd/spaceship.psk|2=&lt;br /&gt;
[IPv4]&lt;br /&gt;
Address=192.168.1.10&lt;br /&gt;
Netmask=255.255.255.0&lt;br /&gt;
Gateway=192.168.1.1&lt;br /&gt;
Broadcast=192.168.1.255&lt;br /&gt;
DNS=192.168.1.1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== DNS マネージャーの選択 ====&lt;br /&gt;
&lt;br /&gt;
現在、iwd は [[systemd-resolved]] と [[Openresolv|resolvconf]] の二つの DNS マネージャーをサポートしています。&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd-resolved}} の場合、次のセクションを {{ic|/etc/iwd/main.conf}} に追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/iwd/main.conf|2=&lt;br /&gt;
[Network]&lt;br /&gt;
NameResolvingService=systemd&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|resolvconf}} の場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/iwd/main.conf|2=&lt;br /&gt;
[Network]&lt;br /&gt;
NameResolvingService=resolvconf&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== すべてのユーザーにステータス情報の読み取りを許可する ===&lt;br /&gt;
&lt;br /&gt;
すべてのユーザーにステータス情報の読み取りを許可するが、設定の変更は許可しない場合は、次の [[D-Bus]] 設定ファイルを作成できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/dbus-1/system.d/iwd-allow-read.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Allow any user to read iwd status information. Overrides some part&lt;br /&gt;
     of /usr/share/dbus-1/system.d/iwd-dbus.conf. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE busconfig PUBLIC &amp;quot;-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN&amp;quot;&lt;br /&gt;
 &amp;quot;http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;busconfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;policy context=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;deny send_destination=&amp;quot;net.connman.iwd&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_destination=&amp;quot;net.connman.iwd&amp;quot; send_interface=&amp;quot;org.freedesktop.DBus.Properties&amp;quot; send_member=&amp;quot;GetAll&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_destination=&amp;quot;net.connman.iwd&amp;quot; send_interface=&amp;quot;org.freedesktop.DBus.Properties&amp;quot; send_member=&amp;quot;Get&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_destination=&amp;quot;net.connman.iwd&amp;quot; send_interface=&amp;quot;org.freedesktop.DBus.ObjectManager&amp;quot; send_member=&amp;quot;GetManagedObjects&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_destination=&amp;quot;net.connman.iwd&amp;quot; send_interface=&amp;quot;net.connman.iwd.Device&amp;quot; send_member=&amp;quot;RegisterSignalLevelAgent&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;allow send_destination=&amp;quot;net.connman.iwd&amp;quot; send_interface=&amp;quot;net.connman.iwd.Device&amp;quot; send_member=&amp;quot;UnregisterSignalLevelAgent&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/policy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/busconfig&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== 暗号化されたネットワークプロファイル ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、iwd はネットワーク資格情報を暗号化せずにシステムに保存します。iwd バージョン 1.25 以降、iwd は、systemd を使用するシステム向けに [https://iwd.wiki.kernel.org/profile_encryption 暗号化プロファイル] を作成するための実験的なサポートを提供します。&lt;br /&gt;
&lt;br /&gt;
まず、暗号化された認証情報を作成します。次の例では、[[systemd-creds]] を使用し、暗号化されたプロファイルの作成に使用されるシステムの [[Trusted Platform Module]] にバインドされる &#039;&#039;iwd-secret&#039;&#039; という暗号化された資格情報を作成します:&lt;br /&gt;
&lt;br /&gt;
 # systemd-ask-password -n | systemd-creds --tpm2-device=auto -T --name=iwd-secret encrypt - /etc/credstore.encrypted/iwd-secret.cred&lt;br /&gt;
&lt;br /&gt;
次に、iwd サービスの [[ドロップインファイル]] を作成して、{{ic|LoadEncryptedCredential}} オプションを追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/iwd.service.d/use-creds.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
LoadEncryptedCredential=iwd-secret:/etc/credstore.encrypted/iwd-secret.cred&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に、名前付き資格情報を値として持つ {{ic|SystemdEncrypt}} オプションを iwd 設定ファイルに追加し、systemd マネージャーを [[daemon-reload|リロード]] して、iwd サービスを [[再起動]] します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/iwd/main.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
...&lt;br /&gt;
SystemdEncrypt=iwd-secret&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 現在システム上にあるプロファイルはすべて自動的に暗号化されます。この時点では他に何も必要ありません。今後のプロファイルは自動的に暗号化されます。&lt;br /&gt;
* 上の例では、暗号化された資格情報は TPM PCR 7 に暗黙的にバインドされています。したがって、セキュアブートの状態が変化すると、そのブートセッションではネットワークに接続できなくなります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 詳細な TLS デバッグ ===&lt;br /&gt;
&lt;br /&gt;
これは、MSCHAPv2 または TTLS の設定に問題がある場合に役立ちます。&lt;br /&gt;
[[ドロップインスニペット]] を使用して、次の[[環境変数]]を設定できます。&lt;br /&gt;
{{hc|/etc/systemd/system/iwd.service.d/tls-debug.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=IWD_TLS_DEBUG=TRUE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、root で {{ic|journalctbl -u iwd.service}} を実行して、iwd ログを確認します。&lt;br /&gt;
&lt;br /&gt;
=== 起動後の iwd.service の再起動 ===&lt;br /&gt;
&lt;br /&gt;
一部のマシンでは、起動後に動作するために {{ic|iwd.service}} を再起動する必要があると報告されています。{{Bug|63912}} と [https://bbs.archlinux.org/viewtopic.php?id=251432 thread 251432] を参照してください。これはおそらく、Linux カーネルとサービスの起動が早すぎて、ワイヤレスネットワークカードの電源がオンになる前に、&#039;&#039;iwd&#039;&#039; が起動するために発生します。回避策として、[[ユニットを拡張]]して、遅延時間を追加します。 &lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStartPre=/usr/bin/sleep 2&lt;br /&gt;
&lt;br /&gt;
次に &#039;&#039;systemd&#039;&#039; マネージャーの設定を[[リロード]]します。&lt;br /&gt;
&lt;br /&gt;
=== 再起動後の接続の問題 ===&lt;br /&gt;
&lt;br /&gt;
エントロピープールが低いと、特に再起動後に顕著な接続の問題が発生する可能性があります。エントロピープールを増やすための提案については、[[乱数生成]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ワイヤレスデバイスが udev によって名前が変更されない ===&lt;br /&gt;
&lt;br /&gt;
バージョン 1.0 以降、iwd は無線デバイスの予測可能な名前変更を無効にします。これは以下の systemd ネットワークリンク設定ファイルをインストールすることで、 udev がインターフェースの名前を {{ic|wlp#s#}} に変更するのを防ぎます。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/usr/lib/systemd/network/80-iwd.link|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Type=wlan&lt;br /&gt;
&lt;br /&gt;
[Link]&lt;br /&gt;
NamePolicy=keep kernel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その結果、ワイヤレスリンク名 {{ic|wlan#}} は起動後も保持されます。これにより、[https://iwd.wiki.kernel.org/interface_lifecycle#udev_interface_renaming iwd udev インターフェイス名前変更]で説明されているように、インターフェイスの名前変更に関する &#039;&#039;iwd&#039;&#039; と [[udev]] 間の競合状態を解決しました。&lt;br /&gt;
&lt;br /&gt;
もし、これが問題になるなら、次のコマンドでマスクしてみてください。&lt;br /&gt;
&lt;br /&gt;
 # ln -s /dev/null /etc/systemd/network/80-iwd.link&lt;br /&gt;
&lt;br /&gt;
=== AP モードで DHCP が使えない ===&lt;br /&gt;
&lt;br /&gt;
AP モードで &#039;&#039;iwd&#039;&#039; に接続する場合、クライアントは DHCP で IP アドレスを受け取れない場合があります。そのため、管理対象のインターフェイス上で、 &#039;&#039;iwd&#039;&#039; によるネットワーク設定を有効にする必要があります。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/iwd/main.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
EnableNetworkConfiguration=True&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記のファイルが存在しない場合は、作成する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== iwd のクラッシュにより WiFi が切断され続ける ===&lt;br /&gt;
&lt;br /&gt;
[[systemd/ジャーナル|ジャーナル]] で {{ic|iwd.service}} のクラッシュ ([https://bbs.archlinux.org/viewtopic.php?id=273965]) を報告しています。&lt;br /&gt;
&lt;br /&gt;
中心的な問題は、ネットワーク接続を管理するために複数の競合するサービスがあることです。この問題を解決するには、それらを同時に [[有効]] にしていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Error loading client private key ===&lt;br /&gt;
&lt;br /&gt;
キーファイルをロードするには、&#039;&#039;iwd&#039;&#039; には {{ic|pkcs8_key_parser}} [[カーネルモジュール]] が必要です。起動時に {{ic|/usr/lib/modules-load.d/pkcs8.conf}} を使用して {{man|8|systemd-modules-load.service}} によってロードされますが、{{Pkg|iwd}} がインストールされたばかりの場合は当てはまりません。&lt;br /&gt;
&lt;br /&gt;
WPA エンタープライズネットワークに接続しようとしたときに、{{ic|Error loading client private key /path/to/key}} などのメッセージが [[systemd/ジャーナル|ジャーナル]] に表示される場合は、モジュールを手動でロードします:&lt;br /&gt;
&lt;br /&gt;
 # modprobe pkcs8_key_parser&lt;br /&gt;
&lt;br /&gt;
=== iwd がローミングを続ける ===&lt;br /&gt;
&lt;br /&gt;
接続が悪すぎる場合、iwd は他の既知の AP にローミングします。&lt;br /&gt;
&lt;br /&gt;
これはシステムログに {{ic|1=wlan0: deauthenticating from xx:xx:xx:xx:xx:xx by local Choice (Reason: 3=DEAUTH_LEAVING)}} として表示されます。&lt;br /&gt;
&lt;br /&gt;
接続信号の強度を確認するには、&lt;br /&gt;
&lt;br /&gt;
 iwctl station wlan0 show | grep RSSI&lt;br /&gt;
&lt;br /&gt;
しきい値を大きくして、接続を悪化させることができます。デフォルトの RoamThreshold は -70、RoamThreshold5G は -76 です。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/iwd/main.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
RoamThreshold=-75&lt;br /&gt;
RoamThreshold5G=-80}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://iwd.wiki.kernel.org/gettingstarted Getting Started with iwd]&lt;br /&gt;
* [https://iwd.wiki.kernel.org/networkconfigurationsettings Network Configuration Settings]&lt;br /&gt;
* [https://git.kernel.org/pub/scm/network/wireless/iwd.git/tree/autotests More Examples for WPA Enterprise]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=237074 The IWD thread on the Arch Linux Forums]&lt;br /&gt;
* [https://www.youtube.com/watch?v=F2Q86cphKDo 2017 Update on new WiFi daemon for Linux by Marcel Holtmann - YouTube]&lt;br /&gt;
* [https://www.youtube.com/watch?v=QIqT2obSPDk The New Wi-Fi Experience for Linux - Marcel Holtmann, Intel - YouTube]&lt;br /&gt;
* [https://iwd.wiki.kernel.org/ap_mode How to set up a simple access point with iwd]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|iwd|2023-12-07|699496}}&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libvirt&amp;diff=36162</id>
		<title>Libvirt</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libvirt&amp;diff=36162"/>
		<updated>2024-02-09T22:28:46Z</updated>

		<summary type="html">&lt;p&gt;Pikosip: fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:libvirt}}&lt;br /&gt;
[[Category:仮想化]]&lt;br /&gt;
[[en:Libvirt]]&lt;br /&gt;
[[zh-hans:Libvirt]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|:カテゴリ:ハイパーバイザ}}&lt;br /&gt;
{{Related|OVMF による PCI パススルー}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
Libvirt は、仮想マシンや、ストレージやネットワークインターフェイスの管理などの他の仮想化機能を管理する便利な方法を提供するソフトウェアのコレクションです。これらのソフトウェアには、長期的に安定した C API、デーモン (libvirtd)、およびコマンドラインユーティリティ (virsh) が含まれます。libvirt の主な目標は、[[QEMU|KVM/QEMU]], [[Xen]], [[LXC]], [http://openvz.org OpenVZ], [[VirtualBox]] ハイパーバイザーなど、複数の異なる仮想化プロバイダー/ハイパーバイザーを管理する単一の方法を提供することです。&lt;br /&gt;
&lt;br /&gt;
:libvirt の主な特徴は以下の通りです:&lt;br /&gt;
:*&#039;&#039;&#039;VM 管理&#039;&#039;&#039;: 起動・停止・一時停止・保存・復旧・移行などの様々なドメイン操作。ディスク・ネットワークインターフェイス・メモリ・CPU など多数のデバイスのホットプラグ制御。&lt;br /&gt;
:*&#039;&#039;&#039;リモートマシンのサポート&#039;&#039;&#039;: libvirt デーモンが走ってるマシンなら libvirt の機能は全て使うことができます。リモートマシンも例外ではありません。リモートで接続するための様々なネットワーク転送をサポートしています。一番シンプルなのは SSH で、細かい設定を必要としません。&lt;br /&gt;
:*&#039;&#039;&#039;ストレージ管理&#039;&#039;&#039;: libvirt デーモンを動かしているホストを使って様々なタイプのストレージを管理できます: 様々なフォーマットのファイルイメージを作成 (qcow2, vmdk, raw, ...)、NFS 共有のマウント、既存の LVM ボリュームグループの列挙、新しい LVM ボリュームグループや論理ボリュームの作成、ディスクデバイスのパーティション、iSCSI 共有のマウントなど。&lt;br /&gt;
:*&#039;&#039;&#039;ネットワークインターフェイス管理&#039;&#039;&#039;: libvirt デーモンを動かしているホストを使って物理・論理ネットワークインターフェイスを管理できます。既存のインターフェイスを列挙するだけでなく、インターフェイス・ブリッジ・仮想 LAN・ボンドデバイスを設定 (作成) できます。&lt;br /&gt;
:*&#039;&#039;&#039;仮想 NAT とルートベースネットワーク&#039;&#039;&#039;: libvirt デーモンを動かしているホストを使って仮想ネットワークを管理・作成できます。Libvirt の仮想ネットワークはファイアウォールのルールを使うことでルーターとして動作し、VM からホストマシンのネットワークに透過的にアクセスすることを可能にします。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
デーモン・クライアントアーキテクチャをとっているため、&#039;&#039;libvirt&#039;&#039; をインストールする必要があるのは仮想化システムをホストするマシンだけです。サーバーとクライアントは同じ物理マシンにすることができます。&lt;br /&gt;
&lt;br /&gt;
=== サーバー ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|libvirt}} パッケージと、どれか一つハイパーバイザを[[インストール]]してください:&lt;br /&gt;
&lt;br /&gt;
* [http://libvirt.org/drvqemu.html libvirt KVM/QEMU ドライバー] は基本の &#039;&#039;libvirt&#039;&#039; ドライバーなので [[QEMU#KVM を有効にする|KVM が有効]]になっていれば、完全に仮想化された、ハードウェアによる支援を受けたゲストを使うことができます。詳しくは [[QEMU]] の記事を見て下さい。&lt;br /&gt;
&lt;br /&gt;
* その他の [https://libvirt.org/drivers.html サポートされるハイパーバイザー] には、[[LXC]]、[[VirtualBox]]、および [[Xen]] が含まれます。インストール手順については、それぞれの記事を参照してください。{{ic|libvirtd}} のインストールに関するメモ:&lt;br /&gt;
** [https://libvirt.org/drvlxc.html libvirt LXC ドライバー] は、{{Pkg|lxc}} が提供する [[LXC]] ユーザー空間ツールに依存していないため、パッケージをインストールする必要はありません。ドライバーの使用を計画している場合。  {{ic|libvirt-lxc}} 接続を使用するには、{{ic|libvirtd}} が実行されている必要があります。&lt;br /&gt;
** [[Xen]] サポートは利用可能ですが、デフォルトでは利用できません ({{Bug|27356}}) [[ABS]] を使用して {{Pkg|libvirt}} の [[PKGBUILD]] を変更し、{{ic|1=-Ddriver_libxl=disabled}} オプションを使用せずにビルドする必要があります。&lt;br /&gt;
&lt;br /&gt;
ネットワーク接続のために、以下をインストールします:&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.libvirt.org/VirtualNetworking.html#the-default-configuration デフォルト] NAT/DHCP ネットワーキングの {{Pkg|iptables-nft}} および {{Pkg|dnsmasq}}&lt;br /&gt;
* [[SSH]] 経由のリモート管理用の {{Pkg|openbsd-netcat}}&lt;br /&gt;
&lt;br /&gt;
他のオプションの依存関係は、DMI システム情報サポート用の {{Pkg|dmidecode}} など、必要な機能または拡張機能を提供する場合があります。{{pkg|libvirt}} に対する pacman の出力を読んだ後、必要と思われるものを [[Pacman#インストール理由|依存関係として]] インストールします。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[firewalld]] を使用している場合、{{ic|libvirt}} 5.1.0 および [[firewalld]] 0.7.0 以降、ファイアウォールバックエンドを [[iptables]] に変更する必要はなくなりました。{{ic|libvirt}} は、[[firewalld]] に &#039;&#039;libvirt&#039;&#039; というゾーンをインストールし、そこで必要なネットワークルールを管理します。[https://libvirt.org/firewall.html Firewall and network filtering in libvirt] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== クライアント ===&lt;br /&gt;
&lt;br /&gt;
クライアントは仮想マシンを管理するために使用するユーザーインターフェイスです。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;virsh&#039;&#039; はドメインを管理・設定するためのコマンドラインプログラムです。{{Pkg|libvirt}} パッケージに含まれています。&lt;br /&gt;
* {{Pkg|virt-manager}} は仮想マシンを管理するためのグラフィカルユーザーインターフェイスです。&lt;br /&gt;
* {{Pkg|virt-viewer}} は仮想化されたゲスト OS のグラフィカルな画面を操作するための軽量なインターフェイスです。&lt;br /&gt;
* {{Pkg|gnome-boxes}} はリモートや仮想システムにアクセスするためのシンプルな GNOME 3 アプリケーションです。&lt;br /&gt;
* {{AUR|qt-virt-manager}}仮想マシンを管理するための Qt アプリケーション。&lt;br /&gt;
* {{AUR|libvirt-sandbox}} はアプリケーションのサンドボックスツールキットです。&lt;br /&gt;
* {{Pkg|cockpit-machines}} 仮想マシンを管理するためのプラグインを備えた Web ベースのシステム管理ツール。&lt;br /&gt;
&lt;br /&gt;
libvirt に対応しているソフトウェアのリストは [http://libvirt.org/apps.html こちら] にあります。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
システムレベルの管理をする場合、少なくとも、[[#認証を設定|認証を設定]]して、[[#デーモンを起動|デーモンを起動]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|ユーザーセッションの管理をする場合、デーモンの設定は必要ありません。ただし、認証はローカルに限定され、フロントエンドは &#039;&#039;libvirtd&#039;&#039; デーモンのローカルインスタンスを起動します。}}&lt;br /&gt;
&lt;br /&gt;
=== 認証を設定 ===&lt;br /&gt;
&lt;br /&gt;
[http://libvirt.org/auth.html#ACL_server_config libvirt: Connection authentication] より:&lt;br /&gt;
:&#039;&#039;libvirt&#039;&#039; デーモンではクライアントの接続に使用する認証メカニズムを管理者が選択することができます。基本的に libvirt デーモンのメイン設定ファイルである {{ic|/etc/libvirt/libvirtd.conf}} で設定します。libvirt のソケットごとに別々の認証メカニズムを設定できます。今のところ {{ic|none}}, {{ic|polkit}}, {{ic|sasl}} の中から選べます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|libvirt}} は依存パッケージとして {{Pkg|polkit}} をインストールするので、{{ic|unix_sock_auth}} パラメータのデフォルト値としては [[#polkit を使う|polkit]] が使われます ([http://libvirt.org/auth.html#ACL_server_polkit ソース])。また、[[#ファイルベースのパーミッションで認証|ファイルベースのパーミッション]]を使うこともできます。&lt;br /&gt;
&lt;br /&gt;
==== libvirt グループの使用 ====&lt;br /&gt;
&lt;br /&gt;
ユーザーが libvirt デーモンにアクセスできるようにする最も簡単な方法は、メンバーを {{ic|libvirt}} [[ユーザーグループ]] に追加することです。&lt;br /&gt;
&lt;br /&gt;
{{ic|libvirt}} グループのメンバーは、デフォルトで RW デーモンソケットにパスワードなしでアクセスできます。&lt;br /&gt;
&lt;br /&gt;
==== polkit を使う ====&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|polkit}} による認証を正しく動作させるにはシステムを再起動する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;libvirt&#039;&#039; デーモンは {{ic|/usr/share/polkit-1/actions/org.libvirt.unix.policy}} で2つの [[Polkit#アクション|polkit アクション]]を提供します:&lt;br /&gt;
* 完全なアクセス管理のための {{ic|org.libvirt.unix.manage}} (RW デーモンソケット)&lt;br /&gt;
* アクセスの監視のための {{ic|org.libvirt.unix.monitor}} (読み取り専用ソケット).&lt;br /&gt;
&lt;br /&gt;
RW デーモンソケットのデフォルトポリシーを使うには管理者として認証する必要があります。[[sudo]] 認証と似ていますが、クライアントアプリケーションを root で動かす必要があるというわけではありません。また、デフォルトポリシーではどんなアプリケーションでも RO ソケットに接続することはできます。&lt;br /&gt;
&lt;br /&gt;
Arch では {{ic|wheel}} グループのユーザーを管理者として認識します: これは {{ic|/etc/polkit-1/rules.d/50-default.rules}} で定義されています ([[Polkit#管理者の識別]] を参照)。そのためユーザーを {{ic|wheel}} グループに追加さえすれば、新しいグループやルールファイルを作成する必要はありません。({{Pkg|virt-manager}} などで) RW ソケットに接続する時にユーザーのパスワードを入力するように求められます。&lt;br /&gt;
&lt;br /&gt;
{{Note|パスワードの入力を要求するときは[[Polkit#認証エージェント|認証エージェント]]を使用します。コンソールを使っている場合、デフォルトの {{ic|pkttyagent}} エージェントが上手く動作しないことがあります。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|認証でパスワードを入力しなくてもよいように設定したい場合、[[Polkit#パスワードプロンプトの迂回]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
libvirt 1.2.16 から {{ic|libvirt}} グループのメンバーはデフォルトで RW デーモンソケットにパスワードを入力しなくてもアクセスすることができます [http://libvirt.org/git/?p=libvirt.git;a=commit;h=e94979e901517af9fdde358d7b7c92cc055dd50c]。libvirt グループを作成してユーザーをグループに追加するのが一番簡単です。RW デーモンソケットにアクセスするときに認証するグループを変更したい場合、以下のファイルを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/polkit-1/rules.d/50-libvirt.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/* Allow users in kvm group to manage the libvirt&lt;br /&gt;
daemon without authentication */&lt;br /&gt;
polkit.addRule(function(action, subject) {&lt;br /&gt;
    if (action.id == &amp;quot;org.libvirt.unix.manage&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
        subject.isInGroup(&amp;quot;kvm&amp;quot;)) {&lt;br /&gt;
            return polkit.Result.YES;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして[[ユーザーとグループ#ユーザー管理の他の例|ユーザー]]を {{ic|kvm}} グループに追加して再ログインしてください。&#039;&#039;kvm&#039;&#039; は好きなグループに置き換えることができます。グループが存在することと、ユーザーがグループに属していることを確認してください (詳しくは[[ユーザーとグループ]]を参照) グループの変更を適用するには再ログインが必要です。&lt;br /&gt;
&lt;br /&gt;
==== ファイルベースのパーミッションで認証 ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;libvirt&#039;&#039; グループのユーザーが仮想マシンを管理できるようにファイルベースのパーミッションを定義するには、以下の行をアンコメントします:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/libvirtd.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#unix_sock_group = &amp;quot;libvirt&amp;quot;&lt;br /&gt;
#unix_sock_ro_perms = &amp;quot;0777&amp;quot;  # set to 0770 to deny non-group libvirt users&lt;br /&gt;
#unix_sock_rw_perms = &amp;quot;0770&amp;quot;&lt;br /&gt;
#auth_unix_ro = &amp;quot;none&amp;quot;&lt;br /&gt;
#auth_unix_rw = &amp;quot;none&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ガイドによっては libvirtd の特定のディレクトリのパーミッションを変更すると管理がしやすくなると書かれていることがありますが、パッケージをアップデートする際に変更したパーミッションは元に戻ってしまうので注意してください。システムディレクトリを編集するときは、root ユーザーを使うようにしてください。&lt;br /&gt;
&lt;br /&gt;
===デーモンを起動===&lt;br /&gt;
&lt;br /&gt;
[[Systemd#ユニットを使う|systemd]] を使って {{ic|libvirtd.service}} と {{ic|virtlogd.service}} を起動してください。任意で {{ic|libvirtd.service}} を[[有効化]]してください。{{ic|libvirtd.service}} が有効化された場合、{{ic|virtlogd.socket}} と {{ic|virtlockd.socket}} も有効化されるため、{{ic|virtlogd.service}} を有効化する必要はありません。&lt;br /&gt;
&lt;br /&gt;
=== TCP/IP ソケットの暗号化の解除 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|この設定をすると、信頼されたネットワーク内における、リモートドメインの接続速度が向上します。セキュリティ的には完全な無防備なので注意してください。テスト目的であったり、セキュアでプライベート、信頼されたネットワークでおいてのみ使って下さい。SASL を有効にしないため、全ての TCP 通信は&#039;&#039;クリアテキスト&#039;&#039;になります。通常はどんなときでも SASL を有効にするようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/libvirt/libvirtd.conf}} を編集:&lt;br /&gt;
{{hc|/etc/libvirt/libvirtd.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
listen_tls = 0&lt;br /&gt;
listen_tcp = 1&lt;br /&gt;
auth_tcp=none&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
また、{{ic|/etc/conf.d/libvirtd}} を編集してサーバーをリスニングモードで起動する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/conf.d/libvirtd|2=LIBVIRTD_ARGS=&amp;quot;--listen&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ホストネームを使って仮想マシンにアクセス ===&lt;br /&gt;
&lt;br /&gt;
ブリッジネットワークを使ってホストからゲストにアクセスするには、{{Pkg|libvirt}} に含まれている {{ic|libvirt}} NSS モジュールを有効にしてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/nsswitch.conf}} を編集:&lt;br /&gt;
{{hc|/etc/nsswitch.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
hosts: files libvirt dns myhostname&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ping}} や {{ic|ssh}} などのコマンドで仮想マシンのホストネームを使うことができるようになりますが、{{ic|host}} や {{ic|nslookup}} などのコマンドは DNS に依存するため使えない可能性があります。{{ic|getent hosts &amp;lt;vm-hostname&amp;gt;}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
== テスト ==&lt;br /&gt;
&lt;br /&gt;
システムレベルでデーモンが正しく動作しているかテスト:&lt;br /&gt;
&lt;br /&gt;
 $ virsh -c qemu:///system&lt;br /&gt;
&lt;br /&gt;
ユーザーセッションで libvirt が正しく動作するかテスト:&lt;br /&gt;
&lt;br /&gt;
 $ virsh -c qemu:///session&lt;br /&gt;
&lt;br /&gt;
== 管理 ==&lt;br /&gt;
&lt;br /&gt;
Libvirt の管理は3つのツールで行うことができます: 一つは GUI {{ic|virt-manager}} で、二つはコマンドラインツールです: {{ic|virsh}} と {{ic|guestfish}} ({{Pkg|libguestfs}} に含まれています)。&lt;br /&gt;
&lt;br /&gt;
=== virsh ===&lt;br /&gt;
&lt;br /&gt;
virsh はゲスト&#039;&#039;ドメイン&#039;&#039; (仮想マシン) の管理のためのプログラムですが、仮想化管理のスクリプトにも使えます。ほとんどの virsh コマンドは実行するのに root 権限を必要とします。ただしドメインの作成や実行などは (VirtualBox と同じように) 通常ユーザーで実行することができます。&lt;br /&gt;
&lt;br /&gt;
Virsh にはインタラクティブなターミナルが含まれており、コマンドを何も指定しないで実行したときに起動します (オプションは指定することができます): {{ic|virsh}}。インタラクティブターミナルはタブ補完をサポートしています。&lt;br /&gt;
&lt;br /&gt;
コマンドラインから:&lt;br /&gt;
&lt;br /&gt;
 $ virsh [option] &amp;lt;command&amp;gt; [argument]...&lt;br /&gt;
&lt;br /&gt;
インタラクティブターミナルから:&lt;br /&gt;
&lt;br /&gt;
 virsh # &amp;lt;command&amp;gt; [argument]...&lt;br /&gt;
&lt;br /&gt;
ヘルプを見るには:&lt;br /&gt;
&lt;br /&gt;
 $ virsh help [option*] or [group-keyword*]&lt;br /&gt;
&lt;br /&gt;
=== ストレージプール ===&lt;br /&gt;
&lt;br /&gt;
プールはストレージ&#039;&#039;ボリューム&#039;&#039;を保存しておく場所です。libvirt における&#039;&#039;ボリューム&#039;&#039;は、他のハイパーバイザでは&amp;quot;仮想ディスク&amp;quot;または&amp;quot;仮想マシンイメージ&amp;quot;と定義されていることがあります。プールの場所はディレクトリでも、ネットワークファイルシステムでも、パーティションでもかまいません ([[LVM]] を含む)。プールは有効・無効を切り替えたり領域を予約することができます。&lt;br /&gt;
&lt;br /&gt;
システムレベルでは、デフォルトで {{ic|/var/lib/libvirt/images/}} が有効になります。ユーザーセッションでは {{ic|virt-manager}} は {{ic|$HOME/VirtualMachines}} を作成します。&lt;br /&gt;
&lt;br /&gt;
有効または無効なストレージプールを確認:&lt;br /&gt;
&lt;br /&gt;
 $ virsh pool-list --all&lt;br /&gt;
&lt;br /&gt;
==== virsh を使って新しいプールを作成 ====&lt;br /&gt;
&lt;br /&gt;
ストレージプールを追加したい場合、以下がコマンド形式、ディレクトリの追加、LVM ボリュームの追加の例です:&lt;br /&gt;
&lt;br /&gt;
 $ virsh pool-define-as name type [source-host] [source-path] [source-dev] [source-name] [&amp;lt;target&amp;gt;] [--source-format format]&lt;br /&gt;
 $ virsh pool-define-as &#039;&#039;poolname&#039;&#039; dir - - - - /home/&#039;&#039;username&#039;&#039;/.local/libvirt/images&lt;br /&gt;
 $ virsh pool-define-as &#039;&#039;poolname&#039;&#039; fs - -  &#039;&#039;/dev/vg0/images&#039;&#039; - &#039;&#039;mntpoint&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはプールの情報を定義します。ビルドするには:&lt;br /&gt;
&lt;br /&gt;
 $ virsh pool-build     &#039;&#039;poolname&#039;&#039;&lt;br /&gt;
 $ virsh pool-start     &#039;&#039;poolname&#039;&#039;&lt;br /&gt;
 $ virsh pool-autostart &#039;&#039;poolname&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
削除するには:&lt;br /&gt;
&lt;br /&gt;
 $ virsh pool-undefine  &#039;&#039;poolname&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|LVM ストレージプールの場合:&lt;br /&gt;
* ボリュームグループはストレージプール専用にするほうが良いでしょう。&lt;br /&gt;
* LVM ボリュームグループの名前はプールの名前と変えて下さい。ストレージプールを削除したときに LVM グループも削除されてしまいます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== virt-manager を使って新しいプールを作成 ====&lt;br /&gt;
&lt;br /&gt;
まず、既存のサーバーに接続してください。そこで、右クリックして &#039;&#039;Details&#039;&#039; を選んで下さい。&#039;&#039;Storage&#039;&#039; に行き左下の &#039;&#039;+&#039;&#039; アイコンを押して下さい。それからはウィザードに従って下さい。&lt;br /&gt;
&lt;br /&gt;
=== ストレージボリューム ===&lt;br /&gt;
&lt;br /&gt;
プールを作成したら、プールの中にボリュームを作成することができます。新しいドメイン (仮想マシン) を作成する場合、ドメインの作成時にボリュームを作成できるのでこの手順はスキップできます。&lt;br /&gt;
&lt;br /&gt;
==== virsh を使って新しいボリュームを作成 ====&lt;br /&gt;
&lt;br /&gt;
ボリュームの作成、確認、リサイズ、削除:&lt;br /&gt;
&lt;br /&gt;
 $ virsh vol-create-as      &#039;&#039;poolname&#039;&#039; &#039;&#039;volumename&#039;&#039; 10GiB --format aw|bochs|raw|qcow|qcow2|vmdk&lt;br /&gt;
 $ virsh vol-upload  --pool &#039;&#039;poolname&#039;&#039; &#039;&#039;volumename&#039;&#039; &#039;&#039;volumepath&#039;&#039;&lt;br /&gt;
 $ virsh vol-list           &#039;&#039;poolname&#039;&#039;&lt;br /&gt;
 $ virsh vol-resize  --pool &#039;&#039;poolname&#039;&#039; &#039;&#039;volumename&#039;&#039; 12GiB&lt;br /&gt;
 $ virsh vol-delete  --pool &#039;&#039;poolname&#039;&#039; &#039;&#039;volumename&#039;&#039;&lt;br /&gt;
 $ virsh vol-dumpxml --pool &#039;&#039;poolname&#039;&#039; &#039;&#039;volumename&#039;&#039;  # for details&lt;br /&gt;
&lt;br /&gt;
=== ドメイン ===&lt;br /&gt;
&lt;br /&gt;
libvirt では仮想マシンは&#039;&#039;ドメイン&#039;&#039;と呼ばれます。コマンドラインから使う場合、{{ic|virsh}} でドメインを確認・作成・停止・シャットダウンできます。{{ic|virt-viewer}} を使って {{ic|virsh}} で起動したドメインを確認することも可能です。ドメインの作成は {{ic|virt-manager}} でグラフィカルに行うか {{ic|virt-install}} ({{pkg|virt-install}} パッケージに含まれているコマンドラインプログラム) を使います。&lt;br /&gt;
&lt;br /&gt;
新しいドメインを作成するときは、インストールメディアを使用します。ドメインの作成後にロードします。ストレージプールから {{ic|.iso}} を参照したり、光学ドライブを参照することができます。&lt;br /&gt;
&lt;br /&gt;
有効または無効なドメインを確認:&lt;br /&gt;
&lt;br /&gt;
 # virsh list --all&lt;br /&gt;
&lt;br /&gt;
{{Note|[[SELinux]] はデフォルトで {{ic|/var/lib/libvirt/images/}} にボリュームが保存されることを必要とします。SELinux を使っていてボリュームに問題が起こる場合、ボリュームがそのディレクトリにあるか確認、またはあなたが使用している非デフォルトのディレクトリの適当なラベリングを追加してください。}}&lt;br /&gt;
&lt;br /&gt;
==== virt-install を使って新しいドメインを作成 ====&lt;br /&gt;
&lt;br /&gt;
ドメイン (仮想マシン) を細かく設定したい場合、[[#virt-manager を使って新しいドメインを作成|virt-manager を使って新しいドメインを作成]]する方が簡単です。しかしながら、基本的な設定は {{ic|virt-install}} で行うことができます。最低でも指定する必要があるのは {{ic|--name}}, {{ic|--memory}}, ゲストストレージ ({{ic|--disk}}, {{ic|--filesystem}} または {{ic|--nodisks}}), インストール方法 ({{ic|.iso}} または CD) です。オプションについて詳しくは {{man|1|virt-install}} を見てください。&lt;br /&gt;
&lt;br /&gt;
Arch Linux のインストール (2GiB, qcow2 フォーマットのボリューム作成; ユーザーネットワーク):&lt;br /&gt;
&lt;br /&gt;
 $ virt-install  \&lt;br /&gt;
   --name arch-linux_testing \&lt;br /&gt;
   --memory 1024             \ &lt;br /&gt;
   --vcpus=2,maxvcpus=4      \&lt;br /&gt;
   --cpu host                \&lt;br /&gt;
   --cdrom $HOME/Downloads/arch-linux_install.iso \&lt;br /&gt;
   --disk size=2,format=qcow2 \&lt;br /&gt;
   --network user            \&lt;br /&gt;
   --virt-type kvm&lt;br /&gt;
&lt;br /&gt;
Fedora testing (Xen ハイパーバイザ, 非デフォルトのプール, オリジナルの表示を使わない):&lt;br /&gt;
&lt;br /&gt;
 $ virt-install  \&lt;br /&gt;
   --connect xen:///     \&lt;br /&gt;
   --name fedora-testing \&lt;br /&gt;
   --memory 2048         \&lt;br /&gt;
   --vcpus=2             \&lt;br /&gt;
   --cpu=host            \&lt;br /&gt;
   --cdrom /tmp/fedora20_x84-64.iso      \&lt;br /&gt;
   --os-type=linux --os-variant=fedora20 \&lt;br /&gt;
   --disk pool=testing,size=4            \&lt;br /&gt;
   --network bridge=br0                  \&lt;br /&gt;
   --graphics=vnc                        \&lt;br /&gt;
   --noautoconsole&lt;br /&gt;
 $ virt-viewer --connect xen:/// fedora-testing&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
 $ virt-install \&lt;br /&gt;
   --name=windows7           \&lt;br /&gt;
   --memory 2048             \&lt;br /&gt;
   --cdrom /dev/sr0          \&lt;br /&gt;
   --os-variant=win7         \&lt;br /&gt;
   --disk /mnt/storage/domains/windows7.qcow2,size=20GiB \&lt;br /&gt;
   --network network=vm-net  \&lt;br /&gt;
   --graphics spice&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|--os-variant}} の引数を取得するには {{ic|1=osinfo-query --fields=name,short-id,version os}} を実行してください。ドメインの仕様を定義するのに役立ちます。ただし、{{ic|--memory}} と {{ic|--disk}} を入力する必要があります。仕様が必要な場合は適当な {{ic|/usr/share/libosinfo/db/oses/&#039;&#039;os&#039;&#039;.xml}} を見て下さい。インストール後、[https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/form-Virtualization_Host_Configuration_and_Guest_Installation_Guide-Para_virtualized_drivers-Mounting_the_image_with_virt_manager.html VirtIO ドライバー] が含まれている [http://www.spice-space.org/download.html Spice Guest Tools] をインストールすると良いでしょう。Windows の VirtIO ネットワークドライバーは {{Aur|virtio-win}} にもあります。ドライバーはゲストの {{ic|.xml}} 設定のデバイスセクションに {{ic|1=&amp;lt;model type=&#039;virtio&#039; /&amp;gt;}} で指定します。詳細は [[QEMU#Windows ゲストを用意する|QEMU]] の記事を読んで下さい。}}&lt;br /&gt;
&lt;br /&gt;
既存のボリュームをインポート:&lt;br /&gt;
&lt;br /&gt;
 $ virt-install  \&lt;br /&gt;
   --name demo  \&lt;br /&gt;
   --memory 512 \&lt;br /&gt;
   --disk /home/user/VMs/mydisk.img \&lt;br /&gt;
   --import&lt;br /&gt;
&lt;br /&gt;
==== virt-manager を使って新しいドメインを作成 ====&lt;br /&gt;
&lt;br /&gt;
まずハイパーバイザに接続します (例: QEMU/KVM &#039;&#039;システム&#039;&#039;またはユーザー&#039;&#039;セッション&#039;&#039;)。接続を右クリックして &#039;&#039;New&#039;&#039; を選択して、ウィザードに従って下さい。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;ステップ4&#039;&#039; で、&#039;&#039;Allocate entire disk now&#039;&#039; のチェックを外すことができます -- VM がディスクの全てを使用していないときに容量を節約します。ただし、ディスクのフラグメンテーションが増加する可能性があるので、VM ホストのディスクの合計空き容量に&#039;&#039;注意してください&#039;&#039;、VM にディスク容量を追加で割り当てるほうが簡単だからです。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;ステップ5&#039;&#039; では、&#039;&#039;Advanced options&#039;&#039; を開いて &#039;&#039;Virt Type&#039;&#039; を &#039;&#039;kvm&#039;&#039; に設定してください。追加のハードウェア設定が必要な場合、&#039;&#039;Customize configuration before install&#039;&#039; オプションを選んで下さい。&lt;br /&gt;
&lt;br /&gt;
==== ドメインの管理 ====&lt;br /&gt;
&lt;br /&gt;
ドメインを起動:&lt;br /&gt;
&lt;br /&gt;
 $ virsh start &#039;&#039;domain&#039;&#039;&lt;br /&gt;
 $ virt-viewer --connect qemu:///session &#039;&#039;domain&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ドメインを上品にシャットダウン、または強制的にオフにする:&lt;br /&gt;
&lt;br /&gt;
 $ virsh shutdown &#039;&#039;domain&#039;&#039;&lt;br /&gt;
 $ virsh destroy  &#039;&#039;domain&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libvirtd の起動時にドメインを自動実行:&lt;br /&gt;
&lt;br /&gt;
 $ virsh autostart &#039;&#039;domain&#039;&#039;&lt;br /&gt;
 $ virsh autostart &#039;&#039;domain&#039;&#039; --disable&lt;br /&gt;
&lt;br /&gt;
ホストのシャットダウン時にドメインもシャットダウン:&lt;br /&gt;
&lt;br /&gt;
: {{ic|libvirt-guests.service}} systemd サービスを使うことでホストのシャットダウン時に自動的にゲストの実行をサスペンド (もしくは) シャットダウンさせることができます。同じデーモンでホストの起動時に自動的にサスペンド (シャットダウン) されたゲストが復帰 (起動) されます。サービスのオプションは {{ic|/etc/conf.d/libvirt-guests}} をチェックしてください。&lt;br /&gt;
&lt;br /&gt;
ドメインの設定を編集:&lt;br /&gt;
&lt;br /&gt;
 $ virsh edit &#039;&#039;domain&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|QEMU によって直接起動した仮想マシンは libvirt ツールで管理できません。}}&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|libvirtd}} systemd サービスが起動すると、&#039;&#039;default&#039;&#039; という名前の NAT ブリッジが作成されて外部ネットワークに接続できるようになります。&lt;br /&gt;
&lt;br /&gt;
他のネットワーク接続が必要な場合、ドメインとの接続を作成することができる4つのネットワークタイプが存在します:&lt;br /&gt;
&lt;br /&gt;
* bridge — 仮想デバイス。物理インターフェイスと直接データを共有します。ホストで&#039;&#039;固定&#039;&#039;ネットワークを使う場合や他のドメインに接続する必要がない場合、またはドメインに完全なインバウンドとアウトバウンドの通信が必要な場合やドメインを&#039;&#039;システムレベル&#039;&#039;で動作させる場合、ブリッジを使って下さい。ブリッジを追加する方法は[[ネットワークブリッジ]]を参照。作成後、ゲストの {{ic|.xml}} 設定ファイルで指定する必要があります。&lt;br /&gt;
* network — 仮想ネットワーク。他のドメインと共有することができます。ホストが&#039;&#039;動的&#039;&#039;ネットワーク (例: NetworkManager) やワイヤレスを使う場合仮想ネットワークを使って下さい。&lt;br /&gt;
* macvtap — ホストの物理インターフェイスに直接接続。&lt;br /&gt;
* user — ローカルのネットワーク。ユーザー&#039;&#039;セッション&#039;&#039;の場合に使って下さい。&lt;br /&gt;
&lt;br /&gt;
{{ic|virsh}} にはネットワークを作成するための様々なオプションが存在していますが、({{ic|virt-manager}} などの) グラフィカルユーザーインターフェイスを使ったり [[#virt-install を使って新しいドメインを作成|virt-install でドメインを作成]]するときにネットワーク接続を作成する方が簡単です。&lt;br /&gt;
&lt;br /&gt;
{{note|&lt;br /&gt;
* libvirt は {{pkg|dnsmasq}} で DHCP や DNS を管理し、仮想ネットワークごとにインスタンスを起動します。また、適切なルーティングが行われるように iptables ルールを追加して、{{ic|ip_forward}} カーネルパラメータを有効&lt;br /&gt;
にします。libvirt を使うのにホストで dnsmasq を実行する必要はありません (libvirt の dnsmasq インスタンスと干渉する可能性があります)&lt;br /&gt;
* デフォルトのネットワークを起動できない場合は、{{pkg|iptables-nft}} と {{pkg|dnsmasq}} がインストールされていることを確認してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
VM の IP アドレスは、次の方法で取得できます ({{ic|&#039;&#039;default&#039;&#039;}} ネットワークに接続し、dhcp 経由で IP アドレスを受信する場合):&lt;br /&gt;
&lt;br /&gt;
 $ virsh net-dhcp-leases default&lt;br /&gt;
&lt;br /&gt;
コマンド ({{ic|&#039;&#039;default&#039;&#039;}} を VM が接続しているネットワーク名に置き換えます)、または VM で {{ic|&#039;&#039;qemu-guest-agent&#039;&#039;}} が実行されている場合は、次のようにします:&lt;br /&gt;
&lt;br /&gt;
 $ virsh domifaddr --source agent $vm&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;$vm&#039;&#039;}} を実際の仮想マシン名 (またはドメイン ID) に置き換えます。&lt;br /&gt;
&lt;br /&gt;
==== ネットワークの管理と変更 ====&lt;br /&gt;
&lt;br /&gt;
仮想ネットワークを変更するには、[https://wiki.libvirt.org/VirtualNetworking.html#basic-command-line-usage-for-virtual-networks 仮想ネットワークの基本的なコマンドラインの使用法] ガイドを読むことを強くお勧めします。 libvirt wiki から。使用方法の詳細については、[https://wiki.libvirt.org/page/VirtualNetworking libvirt Networking wiki] を読むことをお勧めします。&lt;br /&gt;
&lt;br /&gt;
==== IPv6 ====&lt;br /&gt;
&lt;br /&gt;
設定ツールを使って IPv6 アドレスを追加した際に、以下のようなエラーが表示されることがあります:&lt;br /&gt;
 Check the host setup: enabling IPv6 forwarding with RA routes without accept_ra set to 2 is likely to cause routes loss. Interfaces to look at: &#039;&#039;eth0&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
以下のファイルを作成することで問題を解決できます ({{ic|&#039;&#039;eth0&#039;&#039;}} は物理インターフェイスの名前に置き換えてください):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/libvirt-bridge.conf|2=&lt;br /&gt;
net.ipv6.conf.eth0.accept_ra = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定したらマシンを再起動してください。&lt;br /&gt;
&lt;br /&gt;
==== Macvtap ====&lt;br /&gt;
&lt;br /&gt;
macvtap ネットワークを設定するには、まず次のファイルを作成します。&lt;br /&gt;
&lt;br /&gt;
{{hc|macvtap.xml|2=&lt;br /&gt;
&amp;lt;network&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;macvtap-net&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;forward mode=&#039;bridge&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;interface dev=&#039;eth0&#039;/&amp;gt;&lt;br /&gt;
  &amp;lt;/forward&amp;gt;&lt;br /&gt;
&amp;lt;/network&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、ネットワークを定義して有効にします。&lt;br /&gt;
&lt;br /&gt;
 $ virsh net-define macvtap.xml&lt;br /&gt;
 $ virsh net-autostart macvtap-net&lt;br /&gt;
 $ virsh net-start macvtap-net&lt;br /&gt;
&lt;br /&gt;
これで、ネットワーク {{ic|macvtap-net}} が利用可能になり、再起動しても維持されます。{{ic|eth0}} を介して外部ネットワークにブリッジされます。&lt;br /&gt;
&lt;br /&gt;
{{warning|ホストは、このネットワークを介してドメインと通信できません。ホストのネットワークは影響を受けず、ドメインはネットワーク上の他のマシンと通信できますが、ホスト自体とは通信できません。回避策については、[https://wiki.libvirt.org/TroubleshootMacvtapHostFail.html libvirt wiki] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== スナップショット ===&lt;br /&gt;
&lt;br /&gt;
スナップショットは現時点でのドメインのディスク・メモリ・デバイスの状態を取得して、将来のために保存します。OS の&amp;quot;クリーン&amp;quot;なコピーを保存することから、ドメインが破壊される前にドメインの状態を保存することまで、様々な理由で使われます。スナップショットは一意な名前で識別されます。&lt;br /&gt;
&lt;br /&gt;
スナップショットはボリュームの中に保存されるためボリュームが次の形式である必要があります: qcow2 または raw。スナップショットは差分を使用するので大量の容量を使用することはありません。&lt;br /&gt;
&lt;br /&gt;
==== スナップショットの作成 ====&lt;br /&gt;
&lt;br /&gt;
スナップショットが取得されると新しいブロックデバイスとして保存されオリジナルのスナップショットはオフラインになります。スナップショットは他のスナップショットから選択したりマージすることができます (ドメインをシャットダウンする必要はありません)。&lt;br /&gt;
&lt;br /&gt;
動作中のドメインのボリュームを確認 (動作中のドメインは {{ic|virsh list}} で確認できます):&lt;br /&gt;
&lt;br /&gt;
{{hc|# virsh domblklist &#039;&#039;domain&#039;&#039;|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Target     Source&lt;br /&gt;
 ------------------------------------------------&lt;br /&gt;
 vda        /vms/domain.img&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ボリュームの物理プロパティを確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|# qemu-img info /vms/domain.img|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 image: /vms/domain.img&lt;br /&gt;
 file format: qcow2&lt;br /&gt;
 virtual size: 50G (53687091200 bytes)&lt;br /&gt;
 disk size: 2.1G&lt;br /&gt;
 cluster_size: 65536&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
disk-only スナップショットを作成 ({{ic|--atomic}} オプションはスナップショットの作成が失敗した場合にボリュームに変更が加わっていないことを確認します):&lt;br /&gt;
&lt;br /&gt;
 # virsh snapshot-create-as &#039;&#039;domain&#039;&#039; snapshot1 --disk-only --atomic&lt;br /&gt;
&lt;br /&gt;
スナップショットを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# virsh snapshot-list &#039;&#039;domain&#039;&#039;|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Name                 Creation Time             State&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 snapshot1           2012-10-21 17:12:57 -0700 disk-snapshot&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=cp -sparse=true}} や {{ic|rsync -S}} を使ってオリジナルのイメージをコピーしてオリジナルのイメージをスナップショットにマージできます:&lt;br /&gt;
&lt;br /&gt;
 # virsh blockpull --domain &#039;&#039;domain&#039;&#039; --path /vms/&#039;&#039;domain&#039;&#039;.snapshot1&lt;br /&gt;
&lt;br /&gt;
{{ic|domain.snapshot1}} が新しいボリュームになります。マージが完了したらオリジナルのボリューム ({{ic|domain.img}} とスナップショットのメタデータは削除できます。{{ic|virsh blockcommit}} が {{ic|blockpull}} と反対の動作をするようになる予定ですが現在開発中です ({{ic|snapshot-revert}} 機能を含む、来年リリース予定)。&lt;br /&gt;
&lt;br /&gt;
=== 他の管理 ===&lt;br /&gt;
&lt;br /&gt;
非デフォルトのハイパーバイザに接続:&lt;br /&gt;
&lt;br /&gt;
 $ virsh --connect xen:///&lt;br /&gt;
 virsh # uri&lt;br /&gt;
 xen:///&lt;br /&gt;
&lt;br /&gt;
SSH で QEMU ハイパーバイザに接続してログイン:&lt;br /&gt;
&lt;br /&gt;
 $ virsh --connect qemu+ssh://&#039;&#039;username&#039;&#039;@&#039;&#039;host&#039;&#039;/system&lt;br /&gt;
 $ LIBVIRT_DEBUG=1 virsh --connect qemu+ssh://&#039;&#039;username&#039;&#039;@&#039;&#039;host&#039;&#039;/system&lt;br /&gt;
&lt;br /&gt;
SSH でグラフィカルコンソールに接続:&lt;br /&gt;
&lt;br /&gt;
 $ virt-viewer  --connect qemu+ssh://&#039;&#039;username&#039;&#039;@&#039;&#039;host&#039;&#039;/system &#039;&#039;domain&#039;&#039;&lt;br /&gt;
 $ virt-manager --connect qemu+ssh://&#039;&#039;username&#039;&#039;@&#039;&#039;host&#039;&#039;/system &#039;&#039;domain&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|(Arch 以外の) RHEL リモートサーバーに接続するときに問題が発生する場合、{{bug|30748}} と {{bug|22068}} に書かれている方法を試してみて下さい。}}&lt;br /&gt;
&lt;br /&gt;
VirtualBox ハイパーバイザに接続 (libvirt における VirtualBox のサポートはまだ安定していないため libvirtd がクラッシュする可能性があります):&lt;br /&gt;
&lt;br /&gt;
 $ virsh --connect vbox:///system&lt;br /&gt;
&lt;br /&gt;
ネットワークの設定:&lt;br /&gt;
&lt;br /&gt;
 $ virsh -c qemu:///system net-list --all&lt;br /&gt;
 $ virsh -c qemu:///system net-dumpxml default&lt;br /&gt;
&lt;br /&gt;
== フック ==&lt;br /&gt;
&lt;br /&gt;
フックは、libvirt デーモンの起動および実行中に発生するさまざまなイベントによってトリガーされるスクリプトです。&lt;br /&gt;
これらは、ネットワークのセットアップやメモリの予約など、ゲストの起動の準備に必要なコマンドを実行するために使用できます。&lt;br /&gt;
&lt;br /&gt;
次のフックが存在します:&lt;br /&gt;
&lt;br /&gt;
* daemon - トリガー: 開始、シャットダウン、リロード&lt;br /&gt;
* qemu - トリガー: 準備、準備、開始、開始、停止、リリース、移行、復元、再接続、接続&lt;br /&gt;
* lxc - トリガー: 準備、開始、開始、停止、解放、再接続&lt;br /&gt;
* libxl - トリガー: 準備、開始、開始、停止、リリース移行、再接続&lt;br /&gt;
* network - トリガー: 開始、開始、停止、ポート作成、更新、ポート削除&lt;br /&gt;
&lt;br /&gt;
各フックとトリガーの詳細については、[https://www.libvirt.org/hooks.html libvirt ドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== フックを作成する ===&lt;br /&gt;
&lt;br /&gt;
フックは、{{ic|1=/etc/libvirt/hooks}} にあるスクリプトによって表されます。フォルダーが存在しない場合は、作成する必要があります。&lt;br /&gt;
各フックは、同じ名前のこのフォルダー (例: {{ic|1=/etc/libvirt/hooks/qemu}}) またはサブフォルダー (例: {{ic|1=/etc/libvirt/hooks/qemu.d/}}) 後者にはさまざまなスクリプトを含めることができ、それらはすべてトリガーポイントで実行されます。スクリプトは他のスクリプトと同様に実行されるため、使用するコマンドインタープリタの宣言から開始する必要があります (例: {{ic|1=#!/bin/bash}})&lt;br /&gt;
スクリプトは libvirt ユーザー ({{ic|1=chown +x /etc/libvirt/hooks/qemu}}) によって実行可能である必要があります。&lt;br /&gt;
&lt;br /&gt;
トリガー ポイントが満たされるたびに、スクリプトが実行されます。たとえば、デーモンスクリプトは、システムの起動/停止サイクルで、起動時とシャットダウン時に少なくとも 2 回実行されます。特定の時点でのみコマンドを実行するには、スクリプトに条件を実装する必要があります。これを行うために、libvirt は現在のトリガー条件を識別するために使用できるパラメーターを渡します。&lt;br /&gt;
&lt;br /&gt;
libvirt のドキュメントによると、これらのパラメータは次のように定義されています:&lt;br /&gt;
* パラメータ 1: 操作に関与するオブジェクトの名前&lt;br /&gt;
* パラメータ 2: 実行される操作の名前&lt;br /&gt;
* パラメータ 3: サブオペレーションに名前を付ける場合に使用されます&lt;br /&gt;
* パラメータ 4: 必要に応じて追加の引数&lt;br /&gt;
引数のいずれかが適用できない場合は、ダッシュが渡されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|スクリプトの作成後にフックが機能しない場合は、libvirt デーモンを再起動してみてください。}}&lt;br /&gt;
&lt;br /&gt;
==== サンプル ====&lt;br /&gt;
&lt;br /&gt;
qemu ゲストを起動するたびに、リソースが割り当てられる前にコマンドを実行するには、qemu フックを使用します。この時点で、libvirt は次のようにフックを実行します: {{ic|1=/etc/libvirt/hooks/qemu &amp;lt;guest_name&amp;gt; prepare begin -}}&lt;br /&gt;
このスクリプトは次のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/hooks/qemu|2=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
guest_name=&amp;quot;$1&amp;quot;&lt;br /&gt;
libvirt_task=&amp;quot;$2&amp;quot;&lt;br /&gt;
if [ &amp;quot;$libvirt_task&amp;quot; = &amp;quot;prepare&amp;quot; ]; then&lt;br /&gt;
	&amp;lt;run some important code here&amp;gt;&lt;br /&gt;
fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ゲストが停止している場合、同じスクリプトが実行されますが、今回はデーモンが次のようなコマンドを開始します: {{ic|1=/etc/libvirt/hooks/qemu &amp;lt;guest_name&amp;gt; stop end -}}&lt;br /&gt;
&lt;br /&gt;
== ホストとゲストの間でデータを共有する ==&lt;br /&gt;
&lt;br /&gt;
=== Virtio-FS ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Virtio-FS は QEMU/KVM ユーザーセッションではサポートされていません。}}&lt;br /&gt;
&lt;br /&gt;
ここでは、hugepages を使用して共有フォルダーを利用できるようにする方法を説明します。[https://libvirt.org/kbase/virtiofs.html Virtio-FS とのファイル共有] には、ゲストとのファイル共有を有効にするためにサポートされているオプションの概要がリストされています。&lt;br /&gt;
&lt;br /&gt;
まず、仮想マシンで使用される [[KVM#Huge Pages を有効にする|Hugepages を有効にする]] 必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/40-hugepage.conf|2=&lt;br /&gt;
vm.nr_hugepages = &#039;&#039;nr_hugepages&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
必要なヒュージページの数を決定するには、hugepage のサイズを確認します:&lt;br /&gt;
&lt;br /&gt;
 $ grep Hugepagesize /proc/meminfo&lt;br /&gt;
&lt;br /&gt;
hugepage の数は &#039;&#039;仮想マシンのメモリサイズ / Hugepagesize&#039;&#039; です。この値にいくつかのページを追加します。hugepage が割り当てられるように、この手順の後に再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
次に、仮想マシンの設定を準備する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|# virsh edit &#039;&#039;name_of_virtual_machine&#039;&#039;|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;domain&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;memoryBacking&amp;gt;&lt;br /&gt;
    &amp;lt;hugepages/&amp;gt;&lt;br /&gt;
  &amp;lt;/memoryBacking&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;cpu ...&amp;gt;&lt;br /&gt;
    &amp;lt;numa&amp;gt;&lt;br /&gt;
      &amp;lt;cell memory=&#039;memory size of virtual machine&#039; unit=&#039;KiB&#039; memAccess=&#039;shared&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;/numa&amp;gt;&lt;br /&gt;
  &amp;lt;/cpu&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;devices&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;filesystem type=&#039;mount&#039; accessmode=&#039;passthrough&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;driver type=&#039;virtiofs&#039;/&amp;gt;&lt;br /&gt;
      &amp;lt;source dir=&#039;path to source folder on host&#039;/&amp;gt;&lt;br /&gt;
      &amp;lt;target dir=&#039;mount_tag&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;/filesystem&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/devices&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
メモリアクセスを共有として宣言できるように、NUMA 定義を追加する必要があります。NUMA の id および cpus 値は、virsh によって挿入されます。&lt;br /&gt;
&lt;br /&gt;
これで、共有マシンにフォルダーをマウントできるようになります:&lt;br /&gt;
&lt;br /&gt;
 # mount -t virtiofs &#039;&#039;mount_tag&#039;&#039; /mnt/mount/path&lt;br /&gt;
&lt;br /&gt;
次の [[fstab]] エントリを追加して、起動時にフォルダーを自動的にマウントします:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
...&lt;br /&gt;
&#039;&#039;mount_tag&#039;&#039; /mnt/mount/path virtiofs rw,noatime,_netdev 0 0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 9p ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムディレクトリは、[[Wikipedia:9P (プロトコル)|9P プロトコル]] を使用して共有できます。詳細は [https://wiki.qemu.org/Documentation/9psetup QEMU の 9psetup ドキュメント] で参照できます。&lt;br /&gt;
&lt;br /&gt;
次のように仮想マシンを設定します。&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
&amp;lt;domain&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;devices&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;filesystem type=&amp;quot;mount&amp;quot; accessmode=&amp;quot;mapped&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;source dir=&amp;quot;&#039;&#039;/path/on/host&#039;&#039;&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;target dir=&amp;quot;&#039;&#039;mount_tag&#039;&#039;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/filesystem&amp;gt;&lt;br /&gt;
  &amp;lt;/devices&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ゲストを起動し、次のコマンドを使用してゲストから共有ディレクトリを [[マウント]] します:&lt;br /&gt;
&lt;br /&gt;
 # mount -t 9p -o trans=virtio,version=9p2000.L &#039;&#039;mount_tag&#039;&#039; &#039;&#039;/path/to/mount_point/on/guest&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
その他のマウントオプションについては、https://docs.kernel.org/filesystems/9p.html を参照してください。&lt;br /&gt;
&lt;br /&gt;
起動時にマウントするには、ゲストの [[fstab]] に追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/fstab|2=&lt;br /&gt;
...&lt;br /&gt;
&#039;&#039;mount_tag&#039;&#039;	&#039;&#039;/path/to/mount_point/on/guest&#039;&#039;	9p	trans=virtio,version=9p2000.L	0 0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
9p トランスポートのモジュール (つまり、{{ic|1=trans=virtio}} の {{ic|9pnet_virtio}}) は自動的にロードされないため、ファイルシステムを {{ic|/etc/fstab}} からのマウントすると失敗し、{{ic|9pnet: Could not find request Transport: virtio}} のようなエラーが発生します。解決策は、[[カーネルモジュール#モジュールの自動ロード|ブート中にモジュールをプリロード]] することです:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modules-load.d/9pnet_virtio.conf|&lt;br /&gt;
9pnet_virtio&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Samba / SMB ===&lt;br /&gt;
&lt;br /&gt;
ゲストとホスト間でデータを共有するもう 1 つの簡単な方法は、smb プロトコルを使用することです。パフォーマンスと遅延は、説明されている他の方法ほど良くないかもしれませんが、画像やドキュメントなどの単純なファイルをゲストとの間で転送するなどの単純なタスクには十分です。&lt;br /&gt;
&lt;br /&gt;
smb サーバーは、[[Samba#Server|Samba]] などを使用してホストまたはゲストのいずれかに直接セットアップできるため、専用のファイルサーバーは必要ありません。Windows ゲストには、インストール直後に含まれる SMB 共有を作成する機能があります ([https://support.microsoft.com/en-us/windows/file-sharing-over-a-network-in-windows-10-b58704b2-f53a-4b82-7bc1-80f9994725bf Microsoft サポートページ])&lt;br /&gt;
&lt;br /&gt;
Linux で (サーバーをインストールした場所に応じてホストまたはゲストから) 共有にアクセスする方法の 1 つは、fstab にエントリを作成することです。{{Pkg|samba}} パッケージが必要です。&lt;br /&gt;
{{hc|/etc/fstab|2=#Accessing a samba share on my vm from the host&lt;br /&gt;
//my_vm/my_share /home/archuser/my_vm cifs _netdev,noauto,nofail,user,credentials=/home/archuser/.config/my_vm.key,gid=1000,uid=984 0 0}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=_netdev,noauto,nofail}} は、VM が起動していない場合でも問題が発生することなく、必要な場合にのみ共有がマウントされるようにします。{{ic|1=user,credentials=/home/user/.config/my_vm.key,gid=1000,uid=984}} を使用すると、[[Samba#共有パスワードを保存|パスワードを必要とせず]] 最初にアクセスするときにオンザフライで共有をマウントできます。&lt;br /&gt;
&lt;br /&gt;
== UEFI サポート ==&lt;br /&gt;
&lt;br /&gt;
Libvirt は QEMU と [https://github.com/tianocore/edk2 OVMF] で UEFI 仮想マシンをサポートしています。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|edk2-ovmf}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
その後 {{ic|libvirtd}} を[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
これで UEFI 仮想マシンを作成する準備が整いました。{{Pkg|virt-manager}} で新しい仮想マシンを作成してください。&#039;新しい仮想マシンの作成&#039; ウィザードの最後のページで、以下のようにしてください:&lt;br /&gt;
&lt;br /&gt;
* &#039;インストールの前に設定をカスタマイズする&#039; をクリックして &#039;完了&#039; を選択してください。&lt;br /&gt;
* &#039;概要&#039; タブで &#039;ファームウェア&#039; フィールドを変更して &#039;UEFI x86_64&#039; オプションを選択してください。&lt;br /&gt;
* &#039;インストールの開始&#039; をクリックしてください。&lt;br /&gt;
* 起動画面で linuxefi コマンドによってインストーラーが起動され、システムの中で efibootmgr を実行することで UEFI OS が実行していることが確認できます。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://fedoraproject.org/wiki/Using_UEFI_with_QEMU fedora の wiki ページ] を参照。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Python 接続コード ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|libvirt-python}} パッケージによって {{ic|/usr/lib/python2.7/site-packages/libvirt.py}} に {{Pkg|python2}} API が提供されます。&lt;br /&gt;
&lt;br /&gt;
一般的なサンプルは {{ic|/usr/share/doc/libvirt-python-&#039;&#039;your_libvirt_version&#039;&#039;/examples/}} にあります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|qemu}} と {{Pkg|openssh}} を使う非公式のサンプル:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/env python2&lt;br /&gt;
 # -*- coding: utf-8 -*-&lt;br /&gt;
 import socket&lt;br /&gt;
 import sys&lt;br /&gt;
 import libvirt&lt;br /&gt;
 if (__name__ == &amp;quot;__main__&amp;quot;):&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;conn = libvirt.open(&amp;quot;qemu+ssh://xxx/system&amp;quot;)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    print &amp;quot;Trying to find node on xxx&amp;quot;&lt;br /&gt;
    domains = conn.listDomainsID()&lt;br /&gt;
    for domainID in domains:&lt;br /&gt;
        domConnect = conn.lookupByID(domainID)&lt;br /&gt;
        if domConnect.name() == &#039;xxx-node&#039;:&lt;br /&gt;
            print &amp;quot;Found shared node on xxx with ID &amp;quot; + str(domainID)&lt;br /&gt;
            domServ = domConnect&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
=== Advanced Format 4K ネイティブディスク ===&lt;br /&gt;
&lt;br /&gt;
ディスクを [[Advanced Format]] 4Kn ディスクにするには、物理​​セクターサイズと論理セクターサイズの両方を 4 KiB に設定する必要があります。virtio-blk および virtio-scsi の場合、これは、[https://libvirt.org/formatdomain.html#hard-drives-floppy-disks-cdroms &amp;lt;blockio&amp;gt; element]  例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|# virsh edit &#039;&#039;name_of_virtual_machine&#039;&#039;|2=&lt;br /&gt;
&amp;lt;domain&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;devices&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;disk type=&#039;file&#039; device=&#039;disk&#039;&amp;gt;&lt;br /&gt;
      ..&lt;br /&gt;
      &#039;&#039;&#039;&amp;lt;blockio logical_block_size=&#039;4096&#039; physical_block_size=&#039;4096&#039;/&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
    &amp;lt;/disk&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/devices&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== QEMU のコマンド ===&lt;br /&gt;
&lt;br /&gt;
Libvirt は、VM を実行している基盤となる QEMU インスタンスに QEMU コマンド ライン引数を渡すことができます。&lt;br /&gt;
この機能は、libvirt が [[QEMU|QEMU 機能]] を (まだ) 提供していない場合に非常に役立ちます。例については、[[Intel GVT-g]] の記事全体を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== QEMU 用の VM XML スキーマを変更する ====&lt;br /&gt;
&lt;br /&gt;
これは、QEMU 固有の要素を有効にするために機能します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ virsh edit &#039;&#039;vmname&#039;&#039;|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;domain type=&#039;kvm&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
から&lt;br /&gt;
&lt;br /&gt;
{{hc|$ virsh edit &#039;&#039;vmname&#039;&#039;|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;domain xmlns:qemu=&#039;http://libvirt.org/schemas/domain/qemu/1.0&#039; type=&#039;kvm&#039;&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== QEMU コマンドライン引数 ====&lt;br /&gt;
&lt;br /&gt;
libvirt では、空白で区切られた QEMU コマンドライン引数を個別に指定する必要があります。&lt;br /&gt;
&lt;br /&gt;
それらを挿入する正しい場所は、{{ic|&amp;lt;domain&amp;gt;}} 要素の最後、つまり {{ic|&amp;lt;/domain&amp;gt;}} 終了タグの真上です。&lt;br /&gt;
&lt;br /&gt;
 -display gtk,gl=es,zoom-to-fit=off&lt;br /&gt;
&lt;br /&gt;
になります。&lt;br /&gt;
{{hc|$ virsh edit &#039;&#039;vmname&#039;&#039;|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;/devices&amp;gt;&lt;br /&gt;
  &amp;lt;qemu:commandline&amp;gt;&lt;br /&gt;
    &amp;lt;qemu:arg value=&amp;quot;-display&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;qemu:arg value=&amp;quot;gtk,gl=es,zoom-to-fit=off&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/qemu:commandline&amp;gt;&lt;br /&gt;
&amp;lt;/domain&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== システムインスタンスの PulseAudio ===&lt;br /&gt;
&lt;br /&gt;
[[PulseAudio]] デーモンは通常のユーザーアカウントで動作し、同じユーザーからの接続だけを許可します。[[libvirt]] を使って root で QEMU を動作させた場合は困ることになります。通常ユーザーで QEMU を動作させるには {{ic|/etc/libvirt/qemu.conf}} を編集して {{ic|user}} オプションでユーザー名を指定してください:&lt;br /&gt;
&lt;br /&gt;
 user = &amp;quot;dave&amp;quot;&lt;br /&gt;
&lt;br /&gt;
また、PulseAudio バックエンドを使用してサーバーに接続するように QEMU を設定する必要があります。{{ic|virsh edit}} を使ってデーモンの設定に以下のセクションを追加してください:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;qemu:commandline&amp;gt;&lt;br /&gt;
    &amp;lt;qemu:env name=&#039;QEMU_AUDIO_DRV&#039; value=&#039;pa&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;qemu:env name=&#039;QEMU_PA_SERVER&#039; value=&#039;/run/user/1000/pulse/native&#039;/&amp;gt;&lt;br /&gt;
  &amp;lt;/qemu:commandline&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ic|1000}} はあなたのユーザー ID に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
遅延設定 (マイクロ秒単位) は省略できますが、デフォルトを使用するとパチパチ音が発生する可能性があります。&lt;br /&gt;
&lt;br /&gt;
=== ハイパーバイザーの CPU 使用率 ===&lt;br /&gt;
&lt;br /&gt;
virt-manager によって生成されたデフォルトの VM 構成では、QEMU プロセスによって CPU 使用率がかなり高くなる (10 〜 20%) 可能性があります。&lt;br /&gt;
VM をヘッドレスモードで実行する予定がある場合は、不要なデバイスの一部を削除することを検討してください。&lt;br /&gt;
&lt;br /&gt;
=== virt-manager で仮想マシンの一時停止を解除できない ===&lt;br /&gt;
&lt;br /&gt;
[[QEMU#ハードディスクイメージの作成|qcow2]] などのディスクイメージ形式を使用している場合は、指定された仮想容量があり、必要なものだけを保存するため、ホストパーティションにイメージ用のスペースが必要です。VM を起動しようとしたときに I/O 関連のエラーが発生した場合は、仮想ディスクイメージを保持するホストパーティションがいっぱいである可能性があります。ホスト上で {{ic|df -h}} を実行すると、利用可能な空き領域の量を確認できます。&lt;br /&gt;
&lt;br /&gt;
この場合、スペースを解放する方法については、[[システムメンテナンス#ファイルシステムの掃除]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== リダイレクト USB デバイスが virt-manager でグレー表示される ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;USB デバイスのリダイレクト&#039;&#039; メニュー項目がグレー表示されている場合は、次のハードウェアが VM 用に設定されていることを確認してください:&lt;br /&gt;
&lt;br /&gt;
* USB コントローラー&lt;br /&gt;
* 1 つ以上の USB リダイレクタ&lt;br /&gt;
&lt;br /&gt;
=== Error starting domain: Requested operation is not valid ===&lt;br /&gt;
&lt;br /&gt;
仮想マシンを開こうとすると、このエラーがポップアップ表示される場合があります。これは、既存の仮想マシンを開こうとすると、libvirt が使用できないデフォルトのネットワークを検索しようとするためです。これを利用できるようにするには、ネットワークインターフェイスを自動起動して、コンピュータを再起動するたびにネットワークインターフェイスが常にアクティブになるようにする必要があります。[https://wiki.libvirt.org/page/Networking libvirt ネットワーキングページ] を参照してください。&lt;br /&gt;
&lt;br /&gt;
次のコマンドを使用して、ネットワークインターフェイスの名前を確認します:&lt;br /&gt;
&lt;br /&gt;
 # virsh net-list --all&lt;br /&gt;
&lt;br /&gt;
ネットワークインターフェースを自動起動するには:&lt;br /&gt;
&lt;br /&gt;
 # virsh net-autostart &#039;&#039;name_of_the_network&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ネットワークインターフェースを起動するには:&lt;br /&gt;
&lt;br /&gt;
 # virsh net-start &#039;&#039;name_of_the_network&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 仮想マネージャーのエラー &#039;Virt Manager doesn&#039;t have search permissions&#039; ===&lt;br /&gt;
&lt;br /&gt;
仮想マシンファイルとインストール ISO が含まれるフォルダーが {{ic|libvirt-qemu}} グループによって所有されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
 $ sudo chown -R $USER:libvirt-qemu /path/to/virtual/machine&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [http://libvirt.org/drvqemu.html libvirt 公式ウェブサイト]&lt;br /&gt;
* [https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/index.html Red Hat の仮想化の導入および管理ガイド]&lt;br /&gt;
* [https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Virtualization_Tuning_and_Optimization_Guide/index.html Red Hat の仮想化のチューニングと最適化ガイド]&lt;br /&gt;
* [http://docs.slackware.com/howtos:general_admin:kvm_libvirt Slackware KVM and libvirt]&lt;br /&gt;
* [http://www-01.ibm.com/support/knowledgecenter/linuxonibm/liaat/liaatkvm.htm IBM KVM]&lt;br /&gt;
* [https://jamielinux.com/docs/libvirt-networking-handbook/ libvirt Networking Handbook]&lt;/div&gt;</summary>
		<author><name>Pikosip</name></author>
	</entry>
</feed>