<?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=J8takagi</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=J8takagi"/>
	<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/J8takagi"/>
	<updated>2026-05-15T15:24:56Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89&amp;diff=13511</id>
		<title>インストールガイド</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89&amp;diff=13511"/>
		<updated>2018-10-21T01:44:01Z</updated>

		<summary type="html">&lt;p&gt;J8takagi: /* インターネットへの接続 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Arch について]]&lt;br /&gt;
[[Category:Arch の入手とインストール]]&lt;br /&gt;
[[ar:Installation guide]]&lt;br /&gt;
[[bg:Installation guide]]&lt;br /&gt;
[[cs:Installation guide]]&lt;br /&gt;
[[da:Installation guide]]&lt;br /&gt;
[[de:Arch Install Scripts]]&lt;br /&gt;
[[el:Installation guide]]&lt;br /&gt;
[[en:Installation guide]]&lt;br /&gt;
[[es:Installation guide]]&lt;br /&gt;
[[fi:Installation guide]]&lt;br /&gt;
[[fr:Arch install scripts]]&lt;br /&gt;
[[hr:Installation guide]]&lt;br /&gt;
[[hu:Installation guide]]&lt;br /&gt;
[[id:Installation guide]]&lt;br /&gt;
[[it:Installation guide]]&lt;br /&gt;
[[ko:Installation guide]]&lt;br /&gt;
[[lt:Installation guide]]&lt;br /&gt;
[[nl:Installation guide]]&lt;br /&gt;
[[pl:Installation guide]]&lt;br /&gt;
[[pt:Installation guide]]&lt;br /&gt;
[[ro:Ghid de instalare]]&lt;br /&gt;
[[ru:Installation guide]]&lt;br /&gt;
[[sk:Installation guide]]&lt;br /&gt;
[[sr:Installation guide]]&lt;br /&gt;
[[th:Installation guide]]&lt;br /&gt;
[[tr:Installation guide]]&lt;br /&gt;
[[zh-hans:Installation guide]]&lt;br /&gt;
[[zh-hant:Installation guide]]&lt;br /&gt;
このドキュメントは、[https://projects.archlinux.org/arch-install-scripts.git/ Arch Install Scripts] を使って [[Arch Linux]] をインストールする過程を案内するものです。インストールの前に、[[FAQ]] に目を通しておくことをお勧めします。使用されている用語については、[[ヘルプ:読み方]]を見てください。コードの例にはプレースホルダ ({{ic|&#039;&#039;斜体&#039;&#039;}} の文字) を含んでいる場合があり、手動で置き換える必要があります。&lt;br /&gt;
&lt;br /&gt;
コミュニティによって管理されている [[メインページ|Arch wiki]] には様々な情報が記載されており、問題が起こった時はまず wiki を参照してください (インストール環境からは [[ELinks]] で閲覧できます)。答えが見つけられない場合には、[https://slack.archlinux.jp/ Slack] や、[https://bbs.archlinux.jp/ フォーラム] を使って下さい。また、使い慣れていないコマンドは {{ic|man &#039;&#039;コマンド&#039;&#039;}} で man ページを参照しましょう。&lt;br /&gt;
&lt;br /&gt;
Arch Linux は 512 MB 以上のメモリが搭載された  [[wikipedia:ja:x64|x86_64]] 互換のマシンで動作します。{{Grp|base}} グループに含まれている全てのパッケージをインストールしても、使用するディスク容量は 800 MB 以下です。インストールする際はリモートリポジトリからパッケージを取得する必要があるため、インターネットに接続できる環境が必要です。&lt;br /&gt;
&lt;br /&gt;
==インストールの準備==&lt;br /&gt;
[[:カテゴリ:Arch の入手とインストール]]に書かれているように Arch Linux の ISO を [https://www.archlinux.jp/download/ Arch Linux のダウンロードページ] からダウンロードしてください。インストールメディアを起動すると root ユーザーでログインされ、[[Zsh]] のシェルプロンプトが表示されます。{{ic|Alt+&#039;&#039;arrow&#039;&#039;}} [[キーボードショートカット|ショートカット]]を使用することでコンソールを切り替えることができます。設定ファイルを[[ヘルプ:読み方#追加, 作成, 編集 そして source|編集]]するときは [[nano#nano の使用方法|nano]], &#039;&#039;vi&#039;&#039;, [[vim#使用方法|vim]] が使えます。&lt;br /&gt;
&lt;br /&gt;
ISO にはパッケージは含まれておらず、インターネットを介して Arch Linux をインストールします。したがって、インストールを行うにはネットワークに接続する必要があります。&lt;br /&gt;
&lt;br /&gt;
イメージファイルは CD に焼いて、ISO ファイルとしてマウントするか、[[USB インストールメディア|USB スティックに直接書き込み]]ます。これは新しいインストールの時だけに必要です。既にインストール済みの Arch Linux は {{ic|pacman -Syu}} でいつでもアップデートできます。&lt;br /&gt;
&lt;br /&gt;
=== キーボードレイアウト ===&lt;br /&gt;
&lt;br /&gt;
デフォルトのキーボードレイアウトは [[Wikipedia:File:KB United States-NoAltGr.svg|US]] キーボードです。利用可能なキーマップは以下のコマンドで確認できます:&lt;br /&gt;
&lt;br /&gt;
 # ls /usr/share/kbd/keymaps/**/*.map.gz&lt;br /&gt;
&lt;br /&gt;
レイアウトを変更するには使用したいファイルの名前を指定して {{man|1|loadkeys}} を実行してください。パスや拡張子は省略可能です。例えば、日本語キーボードレイアウトに設定するには:&lt;br /&gt;
&lt;br /&gt;
 # loadkeys jp106&lt;br /&gt;
&lt;br /&gt;
[[フォント#コンソールフォント|コンソールフォント]]は {{ic|/usr/share/kbd/consolefonts/}} に存在し、{{man|8|setfont}} で設定ができます。&lt;br /&gt;
&lt;br /&gt;
=== 起動モードの確認 ===&lt;br /&gt;
&lt;br /&gt;
[[UEFI]] マザーボードで UEFI モードが有効になっている場合、[[Archiso]] は [[systemd-boot]] によって Arch Linux を起動します。[[UEFI]] 環境ではインストール手順が多少異なります。[[efivars]] をチェックして UEFI モードで起動しているかどうか確認してください:&lt;br /&gt;
&lt;br /&gt;
 # ls /sys/firmware/efi/efivars&lt;br /&gt;
&lt;br /&gt;
ディレクトリが存在しない場合、BIOS (または CSM) モードで起動しています。詳しくは使用しているマザーボードのマニュアルを読んでください。&lt;br /&gt;
&lt;br /&gt;
=== パーティション ===&lt;br /&gt;
&lt;br /&gt;
ライブ環境によって認識されたディスクには {{ic|/dev/sda}} や {{ic|/dev/nvme0n1}} などのように&#039;&#039;ブロックデバイス&#039;&#039;が割り当てられます。デバイスを確認するには、[[lsblk]] または [[fdisk]] を使ってください:&lt;br /&gt;
&lt;br /&gt;
 # fdisk -l&lt;br /&gt;
&lt;br /&gt;
{{ic|rom}}, {{ic|loop}}, {{ic|airoot}} などのデバイスは無視してかまいません。&lt;br /&gt;
&lt;br /&gt;
Arch Linux をインストールするデバイスには以下のパーティションが必要です:&lt;br /&gt;
&lt;br /&gt;
* ルートディレクトリ {{ic|/}} のパーティション。&lt;br /&gt;
* [[UEFI]] が有効になっている場合、[[EFI システムパーティション]]。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[スワップ|スワップ領域]]はスワップパーティションとして用意することも[[スワップ#スワップファイル|スワップファイル]]で設定することもできます。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;パーティションテーブル&#039;&#039;を変更するときは [[fdisk]] や [[parted]] を使います:&lt;br /&gt;
&lt;br /&gt;
 # fdisk /dev/&#039;&#039;sda&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[パーティショニング]]を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[LVM]], [[ディスク暗号化]], [[RAID]] などを使う場合は、この段階で用意をします。}}&lt;br /&gt;
&lt;br /&gt;
=== パーティションのフォーマット ===&lt;br /&gt;
&lt;br /&gt;
パーティションを作成したら、適切な[[ファイルシステム]]でフォーマットする必要があります。例えば、[[ext4]] で {{ic|/dev/&#039;&#039;sda1&#039;&#039;}} のルートパーティションをフォーマットするには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.&#039;&#039;ext4&#039;&#039; /dev/&#039;&#039;sda1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
スワップ用のパーティション (例: {{ic|/dev/&#039;&#039;sda3&#039;&#039;}}) を作成した場合は、&#039;&#039;mkswap&#039;&#039; で初期化してください:&lt;br /&gt;
&lt;br /&gt;
 # mkswap /dev/&#039;&#039;sda3&#039;&#039;&lt;br /&gt;
 # swapon /dev/&#039;&#039;sda3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[ファイルシステム#デバイスのフォーマット|ファイルシステム]]や[[スワップ]]を参照して下さい。&lt;br /&gt;
&lt;br /&gt;
=== パーティションのマウント ===&lt;br /&gt;
ルートパーティションのファイルシステムを {{ic|/mnt}} に[[マウント]]してください。例:&lt;br /&gt;
&lt;br /&gt;
 # mount /dev/&#039;&#039;sda1&#039;&#039; /mnt&lt;br /&gt;
&lt;br /&gt;
他のパーティションについては、それぞれマウントポイントを作成してマウントしてください。例:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /mnt/&#039;&#039;boot&#039;&#039;&lt;br /&gt;
 # mount /dev/&#039;&#039;sda2&#039;&#039; /mnt/&#039;&#039;boot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
後の [[#fstab の生成|fstab の生成]]で実行する genfstab は、マウントされているファイルシステムやスワップ領域を認識します。&lt;br /&gt;
&lt;br /&gt;
=== インターネットへの接続 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;有線&#039;&#039;&#039;接続の場合、[[dhcpcd]] デーモンが起動時に [https://git.archlinux.org/archiso.git/tree/configs/releng/airootfs/etc/udev/rules.d/81-dhcpcd.rules 有効化] され自動的に接続を開始します。[[ping]] を使って接続が確立されているかどうか確かめてください:&lt;br /&gt;
&lt;br /&gt;
 # ping archlinux.jp&lt;br /&gt;
&lt;br /&gt;
接続できない場合は、&#039;&#039;dhcpcd&#039;&#039; デーモンの状態を確認してください。&lt;br /&gt;
&lt;br /&gt;
 # systemctl status dhcpcd@&#039;&#039;interface&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;interface&#039;&#039;}} の名前は[[Wikipedia:Command-line_completion|タブ補完]]で入力できます。{{ic|Active: failed}}と表示される場合は、&#039;&#039;dhcpcd&#039;&#039; デーモンの起動に失敗しています。[[ネットワーク設定#デバイスドライバ|ネットワーク設定]]を手動で行ってください。{{ic|Active: active (running)}}と表示される場合は、&#039;&#039;dhcpcd&#039;&#039; デーモンは起動しています。その場合にネットワーク設定を手動で行うときは、{{ic|systemctl stop dhcpcd@&#039;&#039;interface&#039;&#039;}} で &#039;&#039;dhcpcd&#039;&#039; サービスを[[systemd#ユニットを使う|停止]]してください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;無線&#039;&#039;&#039;接続の場合 iw, wpa_supplicant, [[netctl#ワイヤレス .28WPA-PSK.29|netctl]] を使って接続できます。[[ワイヤレス設定]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== システムクロックの更新 ===&lt;br /&gt;
[[systemd-timesyncd]] を使ってシステムクロックを正確にしてください:&lt;br /&gt;
 # timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
サービスの状態は {{ic|timedatectl status}} で確認できます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== ミラーの選択 ===&lt;br /&gt;
{{ic|/etc/pacman.d/mirrorlist}} を編集して[[ミラー]]を選択してください。位置的に一番近いミラーがベストです。設定したミラーリストが {{ic|pacstrap}} によってインストール時にコピーされます。&lt;br /&gt;
&lt;br /&gt;
=== ベースシステムのインストール ===&lt;br /&gt;
[https://projects.archlinux.org/arch-install-scripts.git/tree/pacstrap.in pacstrap] スクリプトを使って、{{Grp|base}} グループをインストールします。[[Arch User Repository|AUR]] からソフトウェアをコンパイルしたり [[Arch Build System|ABS]] を使うつもりであれば、{{Grp|base-devel}} パッケージグループもインストールするべきです。&lt;br /&gt;
 &lt;br /&gt;
 # pacstrap /mnt base base-devel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;base&#039;&#039; グループにはライブ環境に存在する全てのツールが含まれているわけではありません。{{Pkg|btrfs-progs}} や無線ファームウェアなどは別にインストールする必要があります。[https://projects.archlinux.org/archiso.git/tree/configs/releng/packages.both packages.both] を見てください。&lt;br /&gt;
&lt;br /&gt;
必要に応じて、上のコマンドにパッケージの名前を追加 (スペースで区切る) すれば、他のパッケージやグループも[[インストール]]できます。また、[[#chroot|chroot]] を実行した後に [[pacman]] コマンドでインストールすることも可能です。&lt;br /&gt;
&lt;br /&gt;
== システムの設定 ==&lt;br /&gt;
&lt;br /&gt;
=== fstab の生成 ===&lt;br /&gt;
&lt;br /&gt;
[https://git.archlinux.org/arch-install-scripts.git/tree/genfstab.in genfstab] コマンドを実行して [[fstab]] を生成してください (UUID を使う場合は {{ic|-U}} オプション、ラベルを使う場合は {{ic|-L}} オプションのどちらかを指定します):&lt;br /&gt;
 # genfstab -U /mnt &amp;gt;&amp;gt; /mnt/etc/fstab&lt;br /&gt;
&lt;br /&gt;
作成された {{ic|/mnt/etc/fstab}} を確認して、問題がないことをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
=== chroot ===&lt;br /&gt;
&lt;br /&gt;
新しくインストールしたシステムに [[Change Root|chroot]]:&lt;br /&gt;
 # arch-chroot /mnt&lt;br /&gt;
&lt;br /&gt;
=== タイムゾーン ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/localtime}} から {{ic|/usr/share/zoneinfo/Zone/SubZone}} にシンボリックリンクを張って下さい。{{ic|Zone}} と {{ic|Subzone}} はあなたのタイムゾーンに合わせて変更してください。例:&lt;br /&gt;
 # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime&lt;br /&gt;
&lt;br /&gt;
{{man|8|hwclock}} を実行して {{ic|/etc/adjtime}} を生成してください。ハードウェアクロックが UTC に設定されている場合、マシンにインストールされている他のオペレーティングシステムも UTC に[[時刻#時刻系|設定]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
 # hwclock --systohc --&#039;&#039;utc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[時刻#時刻系]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ロケール ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/locale.gen}} を編集して使用する[[ロケール]] (例: {{ic|en_US.UTF-8 UTF-8}} と {{ic|ja_JP.UTF-8 UTF-8}}) をアンコメントし、次のコマンドを実行してください:&lt;br /&gt;
 # locale-gen&lt;br /&gt;
[[ロケール#システム全体のロケールを設定する|ロケール]]を {{ic|/etc/locale.conf}} で設定します:&lt;br /&gt;
 # echo LANG=&#039;&#039;en_US.UTF-8&#039;&#039; &amp;gt; /etc/locale.conf&lt;br /&gt;
必要であれば、{{man|5|vconsole.conf}} で[[コンソールでのキーボード設定|コンソールキーマップ]]と[[フォント#コンソールフォント|フォント]]を設定します:&lt;br /&gt;
 # echo KEYMAP=&#039;&#039;jp106&#039;&#039; &amp;gt; /etc/vconsole.conf&lt;br /&gt;
&lt;br /&gt;
=== ホストネーム ===&lt;br /&gt;
&lt;br /&gt;
あなたのコンピュータの名前を {{ic|/etc/hostname}} に書き込んで適切な[[ホストネーム]]を設定してください:&lt;br /&gt;
 # echo &#039;&#039;myhostname&#039;&#039; &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
同じ名前を {{ic|/etc/hosts}} にも記述します:&lt;br /&gt;
{{hc|/etc/hosts|&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
::1		localhost&lt;br /&gt;
127.0.1.1	&#039;&#039;myhostname&#039;&#039;.localdomain	&#039;&#039;myhostname&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
システムに永続的な IP アドレスを割り当てる場合、{{ic|127.0.1.1}} の代わりにそのアドレスを指定してください。&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク設定 ===&lt;br /&gt;
&lt;br /&gt;
新しくインストールされた環境ではネットワーク接続がデフォルトで有効になっていません。もう一度ネットワークの設定を行なってください。[[ネットワーク設定]]を見てください。&lt;br /&gt;
&lt;br /&gt;
[[ワイヤレス設定]]の場合 {{Pkg|iw}}, {{Pkg|wpa_supplicant}}, {{Pkg|dialog}} パッケージや[[ワイヤレス設定#ドライバー・ファームウェアをインストールする|ファームウェアパッケージ]]のインストールが必要です。&lt;br /&gt;
&lt;br /&gt;
=== Initramfs ===&lt;br /&gt;
&lt;br /&gt;
必要があれば {{ic|/etc/mkinitcpio.conf}} を設定 ([[mkinitcpio]]) し、イニシャル RAM ディスクを生成:&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
&lt;br /&gt;
=== Root パスワード ===&lt;br /&gt;
&lt;br /&gt;
{{ic|passwd}} で root パスワードを設定します:&lt;br /&gt;
 # passwd&lt;br /&gt;
&lt;br /&gt;
=== ブートローダー ===&lt;br /&gt;
Arch Linux を起動するために Linux に対応している[[ブートローダー]]を選択してインストールする必要があります。ブートローダーは、[[#起動モードの確認|起動モード]]が UEFI の場合は [[systemd-boot]] や [[GRUB]]、BIOS の場合は GRUB が多く選択されています。&lt;br /&gt;
&lt;br /&gt;
Intel の CPU を使っている場合は {{Pkg|intel-ucode}} パッケージをインストールして、[[マイクロコード#Intel のマイクロコードのアップデートを有効にする|マイクロコードのアップデートを有効]]にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 再起動 ===&lt;br /&gt;
chroot 環境から抜けるには、{{ic|exit}} と打つか、{{ic|Ctrl+D}} を押します。&lt;br /&gt;
&lt;br /&gt;
また、任意で {{ic|/mnt}} にマウントしたパーティションをアンマウントします: {{ic|umount -R /mnt}}。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|reboot}} と入力してマシンを再起動してください。インストールメディアを取り除いて、root アカウントで新しいシステムにログインします。&lt;br /&gt;
&lt;br /&gt;
== インストール後 ==&lt;br /&gt;
&lt;br /&gt;
システム管理の方法やインストール後のチュートリアルは[[一般的な推奨事項]]を参照 (グラフィカルユーザーインターフェイス、サウンド、タッチパッドなど)。&lt;br /&gt;
&lt;br /&gt;
あなたの興味を引くであろうアプリケーションの一覧は、[[アプリケーション一覧]]を参照。&lt;/div&gt;</summary>
		<author><name>J8takagi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Systemd-networkd&amp;diff=13495</id>
		<title>Systemd-networkd</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Systemd-networkd&amp;diff=13495"/>
		<updated>2018-10-13T10:26:36Z</updated>

		<summary type="html">&lt;p&gt;J8takagi: /* 有線アダプタで固定 IP を使用 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:ネットワーク]]&lt;br /&gt;
[[Category:仮想化]]&lt;br /&gt;
[[en:systemd-networkd]]&lt;br /&gt;
[[es:Systemd-networkd]]&lt;br /&gt;
[[fr:systemd-networkd]]&lt;br /&gt;
[[ru:Systemd-networkd]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related|systemd-nspawn}}&lt;br /&gt;
{{Related|ネットワークブリッジ}}&lt;br /&gt;
{{Related|ネットワーク設定}}&lt;br /&gt;
{{Related|netctl}}&lt;br /&gt;
{{Related|ワイヤレス設定}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
バージョン 210 から、systemd は [[udev]] と networkd による基本的なネットワーク設定のサポートを含むようになりました。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd-networkd&#039;&#039; はネットワーク設定を管理するシステムデーモンです。ネットワークデバイスが立ち上がるとそれを検出して設定を行い、仮想ネットワークデバイスを作成することもできます。このサービスは [[netctl]] などの通常のネットワーク管理ツールと一緒に動かすことが可能で、仮想化する場合、設定によってはツールを置き換えることもできます。特に [[systemd-nspawn]] で管理するコンテナのための基本的な、もしくは複雑なネットワーク設定 (固定 IP、ブリッジ、vlan など) を設定する場合にこのサービスはとても役に立ちます。&lt;br /&gt;
&lt;br /&gt;
== 基本的な使い方 ==&lt;br /&gt;
{{Pkg|systemd}} パッケージは Arch ではデフォルトでインストールされており、有線ネットワークに接続するために必要なファイルは全て揃っています。後で述べているように、[[wpa_supplicant]] や [[iwd]] など他のサービスを使うことで無線アダプタを設定することもできます。&lt;br /&gt;
&lt;br /&gt;
=== 必要なサービスと設定 ===&lt;br /&gt;
&lt;br /&gt;
systemd-networkd を使用するには、以下の2つのサービスを[[起動]]して、システムのブート時に実行されるように[[有効化]]する必要があります:&lt;br /&gt;
&lt;br /&gt;
* {{ic|systemd-networkd.service}}&lt;br /&gt;
* {{ic|systemd-resolved.service}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;systemd-resolved&#039;&#039; が必要になるのは &#039;&#039;.network&#039;&#039; ファイルで DNS エントリを指定したり、networkd の DHCP クライアントから DNS アドレスを取得する場合です。もしくは {{ic|1=/etc/resolv.conf}} を手動で管理することもできます。}}&lt;br /&gt;
&lt;br /&gt;
[[resolv.conf]] の互換性のために、既存のファイルを削除または名前変更して以下のシンボリックリンクを作成してください (systemd-resolved を使用する場合):&lt;br /&gt;
&lt;br /&gt;
 # ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
さらに、&#039;&#039;systemd-resolved&#039;&#039; のローカル DNS スタブリゾルバ (インターフェイスごとに LLMNR や DNS マージングが使われます) を使うために、{{ic|/etc/nsswitch.conf}} の {{ic|dns}} を {{ic|resolve}} に置き換えます:&lt;br /&gt;
&lt;br /&gt;
 hosts: files &#039;&#039;resolve&#039;&#039; myhostname&lt;br /&gt;
&lt;br /&gt;
{{man|8|systemd-resolved}} や {{man|5|resolved.conf}}、または [https://github.com/systemd/systemd/blob/master/README#L205 Systemd README] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 設定ファイルの例 ===&lt;br /&gt;
このセクションにおける設定はすべて {{ic|/etc/systemd/network}} の中に {{ic|foo.network}} として保存します。利用できるオプションや処理の順番については、[[#設定ファイル]] や {{man|5|systemd.network}} の man ページを見て下さい。&lt;br /&gt;
&lt;br /&gt;
まずシステムのデバイス名を知る必要があります。昔は、{{ic|eth0}} がシステム上の1番目の NIC に付けられていましたが、現在 udev は別の名前を使用するようになっています。{{ic|networkctl list}} を使ってシステム上のデバイスを確認してください。&lt;br /&gt;
&lt;br /&gt;
設定ファイルに変更を加えたら、networkd デーモンをリロードしてください:&lt;br /&gt;
 # systemctl restart systemd-networkd &lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 以下の例では、{{ic|enp1s0}} が有線アダプタ、{{ic|wlp2s0}} が無線アダプタです。環境によって名前は変わります。{{ic|1=Name=en*}} のようにワイルドカードを使うこともできます。&lt;br /&gt;
* IPv6 を無効化したい場合、ルーターが IPv6 を喧伝しているときは {{ic|[Network]}} セクションに {{ic|1=IPv6AcceptRA=false}} を追加する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
==== 有線アダプタで DHCP を使用 ====&lt;br /&gt;
{{hc|/etc/systemd/network/20-wired.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=enp1s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=ipv4&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 有線アダプタで固定 IP を使用 ====&lt;br /&gt;
{{hc|/etc/systemd/network/20-wired.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=enp1s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Address=10.1.10.9/24&lt;br /&gt;
Gateway=10.1.10.1&lt;br /&gt;
DNS=10.1.10.1&lt;br /&gt;
#DNS=8.8.8.8&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
IP アドレスを複数指定することもできます。{{ic|1=Address=}} 行を追加して IPv6 アドレスを指定してください。DNS サーバーやブロードキャストアドレスを指定するネットワークオプションは {{man|5|systemd.network}} の man ページを見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== 無線アダプタ ====&lt;br /&gt;
先に触れた通り、&#039;&#039;systemd-networkd&#039;&#039; で無線ネットワークに接続するには、[[wpa_supplicant]] など別のサービスで無線アダプタを設定してから適当なサービスを有効にしてください。以下の例では、{{ic|wpa_supplicant@wlp2s0.service}} としています。以下のサービスは {{ic|/etc/wpa_supplicant/wpa_supplicant-wlp2s0.conf}} 設定ファイルを使って &#039;&#039;wpa_supplicant&#039;&#039; を起動します。ファイルが存在しなかった場合、サービスは起動しません。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/25-wireless.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=wlp2s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=ipv4&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
無線アダプタで固定 IP アドレスを使っている場合、設定は (インターフェイス名を除いて) [[#有線アダプタで固定 IP を使用|有線アダプタ]]と同じになります。&lt;br /&gt;
&lt;br /&gt;
==== 同一マシンで有線アダプタと無線アダプタ両方を使用 ====&lt;br /&gt;
&lt;br /&gt;
以下の設定では、Metric ディレクティブを使用して、有線と無線両方の接続で DHCP IP を有効にしており、カーネルがオンザフライでどちらを使うか決定します。有線接続が切断されると、即座に無線に切り替わります。接続が途切れることはありません。&lt;br /&gt;
&lt;br /&gt;
システム上の無線・有線どちらのデバイスも有効な接続がある場合、カーネルのルートメトリック (&#039;&#039;ip&#039;&#039; で設定するのと同一) がパケットを送るのにどちらのルートを使用するか決定します。均衡状態を破るために、カーネルはメトリックを使います。メトリックの良い所は、どちらかが使えなくなったときに、自動的にもう片方が有効になることです。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;&#039;Metric&#039;&#039;&#039; オプションはスタティックルーティングの設定を行います。&#039;&#039;&#039;RouteMetric&#039;&#039;&#039; オプションはスタティックルーティングの設定をしないセットアップ用です。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/20-wired.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=enp1s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=ipv4&lt;br /&gt;
&lt;br /&gt;
[DHCP]&lt;br /&gt;
RouteMetric=10}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/25-wireless.network|2=&lt;br /&gt;
[Match]&lt;br /&gt;
Name=wlp2s0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=ipv4&lt;br /&gt;
&lt;br /&gt;
[DHCP]&lt;br /&gt;
RouteMetric=20}}&lt;br /&gt;
&lt;br /&gt;
==== インターフェイスの名前を変更 ====&lt;br /&gt;
&lt;br /&gt;
[[ネットワーク設定#デバイス名の変更|udev ルールを編集]]するかわりに {{ic|.link}} ファイルを使ってインターフェイスの名前を変更できます。MAC アドレスに基づいて USB-to-Ethernet アダプタに予測可能なインターフェイス名を設定する例 (通常は接続された USB 端子によって名前が変わってしまいます):&lt;br /&gt;
&lt;br /&gt;
{{hc|head=/etc/systemd/network/10-ethusb0.link|output=&lt;br /&gt;
[Match]&lt;br /&gt;
MACAddress=12:34:56:78:90:ab&lt;br /&gt;
&lt;br /&gt;
[Link]&lt;br /&gt;
Description=USB to Ethernet Adapter&lt;br /&gt;
Name=ethusb0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ユーザーが作成した {{ic|.link}} ファイルが先に有効になるように、デフォルト設定の {{ic|99-default.link}} よりも辞書的に早い順番になるような名前を付けてください。例えば、{{ic|ethusb0.link}} という名前を付けたい場合は {{ic|10-ethusb0.link}} としてください。}}&lt;br /&gt;
&lt;br /&gt;
== 設定ファイル ==&lt;br /&gt;
&lt;br /&gt;
設定ファイルは {{ic|/usr/lib/systemd/network}} から、そして一時的な実行時のネットワークディレクトリ {{ic|/run/systemd/network}} とローカルのネットワーク管理ディレクトリ {{ic|/etc/systemd/network}} から読み込まれます。{{ic|/etc/systemd/network}} 内のファイルが一番優先されます。&lt;br /&gt;
&lt;br /&gt;
3つのタイプの設定ファイルが存在します。ファイルのフォーマットは [[systemd#ユニットファイル|systemd のユニットファイル]]と似ています。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;.network&#039;&#039;&#039; ファイル。&#039;&#039;マッチする&#039;&#039;デバイスにネットワーク設定を適用します。&lt;br /&gt;
* &#039;&#039;&#039;.netdev&#039;&#039;&#039; ファイル。&#039;&#039;マッチする&#039;&#039;環境に&#039;&#039;仮想ネットワークデバイス&#039;&#039;を作成します。&lt;br /&gt;
* &#039;&#039;&#039;.link&#039;&#039;&#039; ファイル。ネットワークデバイスが作られた時、[[udev|udev]] は最初に&#039;&#039;マッチする&#039;&#039; &#039;&#039;&#039;.link&#039;&#039;&#039; ファイルを探します。&lt;br /&gt;
&lt;br /&gt;
これらの設定ファイルは同じルールに従っています:&lt;br /&gt;
&lt;br /&gt;
* {{ic|[Match]}} セクションの&#039;&#039;&#039;全ての&#039;&#039;&#039;条件がマッチすれば、プロファイルが有効になります。&lt;br /&gt;
* 空の {{ic|[Match]}} セクションはどんな場合でもそのセクションを適用することを示します (いわば {{ic|*}} ジョーカーのようなものです)。&lt;br /&gt;
* 全ての設定ファイルは辞書順でまとめてソートされ処理されます。ファイルがどのディレクトリにあるかは関係ありません。&lt;br /&gt;
* 同じ名前のファイルは互いを置き換えます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* {{ic|/usr/lib/systemd/network}} にあるシステムによって提供されたファイルを上書きする (アップグレードしても変わらないようにする) には、{{ic|/etc/systemd/network}} に同じ名前のファイルを配置して {{ic|/dev/null}} にシンボリックリンクを張って下さい。&lt;br /&gt;
* {{ic|VALUE}} には {{ic|*}} ジョーカーを使うことができます (例: {{ic|en*}} は全ての Ethernet デバイスにマッチします)。&lt;br /&gt;
* [https://mailman.archlinux.org/pipermail/arch-general/2014-March/035381.html Arch-general スレッド]によれば、特定のコンテナのネットワーク設定は &#039;&#039;&#039;networkd&#039;&#039;&#039; 設定ファイルを使って&#039;&#039;コンテナの中で&#039;&#039;設定するのがベストプラクティスです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== network ファイル ===&lt;br /&gt;
&lt;br /&gt;
このファイルはネットワーク設定の変数の設定、特にサーバーとコンテナの設定のために存在します。&lt;br /&gt;
&lt;br /&gt;
{{ic|.network}} ファイルには次のセクションを記述できます: {{ic|[Match]}}, {{ic|[Link]}}, {{ic|[Network]}}, {{ic|[Address]}}, {{ic|[Route]}}, {{ic|[DHCP]}}。以下ではそれぞれのセクションでよく使われる設定キーを説明します。詳しくは {{man|5|systemd.network}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== [Match] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=Name=}} デバイスの名前&lt;br /&gt;
* {{ic|1=Host=}} マシンのホストネーム&lt;br /&gt;
* {{ic|1=Virtualization=}} システムが仮想化環境で起動されているかどうかをチェックします。{{ic|1=Virtualization=no}} キーはホストマシンでのみ適用され、逆に {{ic|1=Virtualization=yes}} はコンテナや VM で適用されます。&lt;br /&gt;
&lt;br /&gt;
==== [Link] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=MACAddress=}} [[MAC_アドレス偽装#方法 1: systemd-networkd|MAC アドレスを偽装]]することができます。&lt;br /&gt;
* {{ic|1=MTUBytes=}} 最大転送単位をバイトで指定 (K, M, G を後ろに付けることができ、1024の倍数として認識されます)。MTU の値を大きくすることでネットワークの転送速度を速くすることが可能です ([[ジャンボフレーム]])。&lt;br /&gt;
&lt;br /&gt;
==== [Network] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=DHCP=}} DHCP クライアントを有効にします。&lt;br /&gt;
* {{ic|1=DHCPServer=}} DHCP サーバーを有効にします。&lt;br /&gt;
* {{ic|1=DNS=}} DNS サーバーのアドレス&lt;br /&gt;
* {{ic|1=Bridge=}} ブリッジの名前&lt;br /&gt;
* {{ic|1=IPForward=}} IP パケットの転送を有効にします。&lt;br /&gt;
* {{ic|1=Domains=}} DNS によるホスト名解決に使用するドメインのリスト。&lt;br /&gt;
&lt;br /&gt;
==== [Address] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=Address=}} 固定の &#039;&#039;&#039;IPv4&#039;&#039;&#039; または &#039;&#039;&#039;IPv6&#039;&#039;&#039; アドレスとそのプレフィックス長で、{{ic|/}} を使って区切ります (例: {{ic|192.168.1.90/24}})。DHCP を使用しない場合このオプションは&#039;&#039;&#039;必須&#039;&#039;&#039;です。&lt;br /&gt;
&lt;br /&gt;
==== [Route] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=Gateway=}} はマシンのゲートウェイのアドレスです。DHCP を使用しない場合このオプションは&#039;&#039;&#039;必須&#039;&#039;&#039;です。&lt;br /&gt;
* {{ic|1=Destination=}} はルートの宛先プリフィックスです。スラッシュとプリフィックス長を後ろに付けることができます。&lt;br /&gt;
&lt;br /&gt;
{{ic|[Route]}} セクションに {{ic|1=Destination}} が存在しない場合、デフォルトルートとして扱われます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|1=[Address]}} が Address キーだけを含み {{ic|1=[Route]}} セクションが Gateway キーだけを含む場合、略式表記として {{ic|[Network]}} セクションに {{ic|1=Address=}} と {{ic|1=Gateway=}} キーを記述することができます。}}&lt;br /&gt;
&lt;br /&gt;
==== [DHCP] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=UseDomains=true}} systemd-resolved を使用する場合にローカル名の解決を修正します。&lt;br /&gt;
&lt;br /&gt;
=== netdev ファイル ===&lt;br /&gt;
&lt;br /&gt;
このファイルは仮想ネットワークデバイスを作成します。{{ic|.netdev}} ファイルには次のセクションを記述できます: {{ic|[Match]}} と {{ic|[NetDev]}}。以下ではそれぞれのセクションでよく使われる設定キーを説明します。詳しくは {{man|5|systemd.netdev}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== [Match] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=Host=}} ホストネーム&lt;br /&gt;
* {{ic|1=Virtualization=}} VM の中で実行されているかどうか確認する。&lt;br /&gt;
&lt;br /&gt;
==== [NetDev] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=Name=}} は netdev を作成するときに使うインターフェイスの名前です。このオプションは&#039;&#039;&#039;必須&#039;&#039;&#039;です。&lt;br /&gt;
* {{ic|1=Kind=}} は netdev の種類になります。現在 &#039;&#039;bridge&#039;&#039;, &#039;&#039;bond&#039;&#039;, &#039;&#039;vlan&#039;&#039;, &#039;&#039;veth&#039;&#039;, &#039;&#039;sit&#039;&#039; などがサポートされています。このオプションは&#039;&#039;&#039;必須&#039;&#039;&#039;です。&lt;br /&gt;
&lt;br /&gt;
=== link ファイル ===&lt;br /&gt;
&lt;br /&gt;
このファイルはカスタム udev ルールの代わりとなりデバイスが現れた時に [[udev]] によって適用されます。2つのセクションを記述します: {{ic|[Match]}} と {{ic|[Link]}}。以下ではそれぞれのセクションでよく使われる設定キーを説明しています。詳しくは {{man|5|systemd.link}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|.link}} ファイルの問題を診断したいときは {{ic|udevadm test-builtin net_setup_link /sys/path/to/network/device}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
==== [Match] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=MACAddress=}} MAC アドレス&lt;br /&gt;
* {{ic|1=Host=}} ホストネーム&lt;br /&gt;
* {{ic|1=Virtualization=}} &lt;br /&gt;
* {{ic|1=Type=}} デバイスのタイプ (例: vlan)&lt;br /&gt;
&lt;br /&gt;
==== [Link] ====&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=MACAddressPolicy=}} は永続的な MAC アドレスをハードウェアに設定する &#039;&#039;persistent&#039;&#039; (ほとんどのハードウェアはこちらにするべきです) またはデバイスが現れた時にランダムな MAC アドレスを与える &#039;&#039;random&#039;&#039; を指定します。&lt;br /&gt;
* {{ic|1=MACAddress=}} 特定のアドレス。&lt;br /&gt;
&lt;br /&gt;
{{Note|ほとんどの場合システムの {{ic|/usr/lib/systemd/network/99-default.link}} で基本的に問題ありません。}}&lt;br /&gt;
&lt;br /&gt;
== コンテナでの使用方法 ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|systemd}} 210 以上でサービスが利用可能です。ホストやコンテナで {{ic|systemd-networkd.service}} を[[systemd#systemctl の基本的な使い方|有効化・起動]]することができます。&lt;br /&gt;
&lt;br /&gt;
デバッグするときのために {{Pkg|bridge-utils}}, {{Pkg|net-tools}}, {{Pkg|iproute2}} パッケージを[[pacman|インストール]]することが強く推奨されます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd-nspawn&#039;&#039; を使用する場合、ネットワーク設定によっては、{{ic|systemd-nspawn@.service}} を編集して {{ic|ExecStart}} 行にブートオプションを追加する必要があります。オプションの完全なリストは {{man|1|systemd-nspawn}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
DHCP による自動 DNS 設定を利用したい場合は、{{ic|systemd-resolved}} を有効にして {{ic|/run/systemd/resolve/resolv.conf}} から {{ic|/etc/resolv.conf}} にシンボリックリンクを張る必要があります。詳しくは {{man|8|systemd-resolved.service}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=コンテナネットワークの設定を始める前に:&lt;br /&gt;
* [[netctl]] サービスを全て無効にしてください。無効にすることで &#039;&#039;&#039;systemd-networkd&#039;&#039;&#039; との危険な衝突を回避することができ設定のテストが楽になります。さらに、有効な [[netctl]] プロファイルが残ったまま終了する可能性が少なくなります。{{ic|$ netctl list}} コマンドは全てのプロファイルのリストを表示し、有効になっているプロファイルには星印が付きます。&lt;br /&gt;
* {{ic|systemd-nspawn@.service}} を無効にしてコンテナを起動するときは {{ic|# systemd-nspawn -bnD /path_to/your_container/}} コマンドとオプションを使ってください。ログオフやシャットダウンをするには、コンテナの中で {{ic|# systemctl poweroff}} を実行してください。ネットワーク設定が要求を満たすようになったら、{{ic|systemd-nspawn@.service}} を[[systemd#systemctl の基本的な使い方|有効化・起動]]してください。&lt;br /&gt;
* {{ic|dhcpcd.service}} が有効になっている場合は無効にしてください。このサービスは&#039;&#039;&#039;全ての&#039;&#039;&#039;インターフェイスに dhcpcd を使わせます。&lt;br /&gt;
* コンテナで [[netctl]] プロファイルや、{{ic|systemd-networkd.service}} が有効になっていないことを確認してください。&lt;br /&gt;
* トラフィックをブロックするような [[iptables]] ルールが設定されていないことを確認してください。&lt;br /&gt;
* コンテナ上で&#039;&#039;プライベートネットワーク&#039;&#039;を設定する場合は&#039;&#039;パケットフォワーディング&#039;&#039;を[[インターネット共有|有効]]にしてください。&lt;br /&gt;
* 設定ファイルを作った後、networkd デーモンが動作している場合はリロードを行なって下さい: {{ic|# systemctl restart systemd-networkd}}。&lt;br /&gt;
* デーモンが起動したら systemd の {{ic|networkctl}} コマンドでネットワークインターフェイスの状態が表示されます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|下で説明している設定について&lt;br /&gt;
* {{ic|$ ip a}} コマンドの出力を、関連するインターフェイスにだけ絞っています。&lt;br /&gt;
* &#039;&#039;ホスト&#039;&#039;は起動しているメインの OS であり、&#039;&#039;コンテナ&#039;&#039;は仮想マシンのゲストのことです。&lt;br /&gt;
* インターフェイスの名前や IP アドレスは全てあくまでただの例です。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 基本的な DHCP ネットワーク ===&lt;br /&gt;
&lt;br /&gt;
以下はホストとコンテナで DHCP IP を有効にします。この場合、両方のシステムが同じインターフェイスを共有し、同じ IP を共有します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;MyDhcp&#039;&#039;.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=en*&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=ipv4&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
そして、コンテナで {{ic|systemd-networkd}} を[[systemd#systemctl の基本的な使い方|起動・有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
もちろん {{ic|en*}} を {{ic|$ ip link}} コマンドの出力でわかる Ethernet デバイスのフルネームに置き換えることは可能です。&lt;br /&gt;
&lt;br /&gt;
* ホストとコンテナで:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip a|&lt;br /&gt;
2: enp7s0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
    link/ether 14:da:e9:b5:7a:88 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.1.72/24 brd 192.168.1.255 scope global enp7s0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet6 fe80::16da:e9ff:feb5:7a88/64 scope link &lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デフォルトのホストネームは DHCP サーバーから取得され一時的なホストネームとして使用されます。&lt;br /&gt;
&lt;br /&gt;
変更するには {{ic|[DHCPv4]}} セクションに {{ic|1=UseHostname=false}} を追加してください:&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;MyDhcp&#039;&#039;.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[DHCPv4]&lt;br /&gt;
UseHostname=false&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/resolv.conf}} で DNS を設定するかわりに DHCP に設定してもらいたい場合、{{ic|systemd-resolved}} を有効にして {{ic|/run/systemd/resolve/resolv.conf}} から {{ic|/etc/resolv.conf}} にシンボリックリンクを作成してください:&lt;br /&gt;
&lt;br /&gt;
 # systemctl enable systemd-resolved&lt;br /&gt;
 # ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|8|systemd-resolved.service}} を参照。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{pkg|arch-install-scripts}} の {{ic|/usr/bin/arch-chroot}} を使ってシステムパーティションにアクセスする場合、マウントしたパーティションに対して chroot の外からシンボリックリンクを作成する必要があります。arch-chroot はファイルからライブ環境にリンクを作成するためです。}}&lt;br /&gt;
&lt;br /&gt;
=== 2つの別々な IP で DHCP を使う ===&lt;br /&gt;
&lt;br /&gt;
==== ブリッジインターフェイス ====&lt;br /&gt;
&lt;br /&gt;
仮想ブリッジインターフェイスを作成する:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;MyBridge&#039;&#039;.netdev|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[NetDev]&lt;br /&gt;
Name=br0&lt;br /&gt;
Kind=bridge&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd-networkd.service}} を再起動すると systemd はブリッジを作成します。&lt;br /&gt;
&lt;br /&gt;
* ホストとコンテナで:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip a|&lt;br /&gt;
3: br0: &amp;lt;BROADCAST,MULTICAST&amp;gt; mtu 1500 qdisc noop state DOWN group default &lt;br /&gt;
    link/ether ae:bd:35:ea:0c:c9 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
インターフェイス br0 が表示されていますが DOWN になっているので注意してください。&lt;br /&gt;
&lt;br /&gt;
==== イーサネットをブリッジに関連付ける ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/systemd/network/&#039;&#039;MyDhcp&#039;&#039;.network}} を編集して DHCP を削除します。ブリッジはどの IP にもバインドされないインターフェイスが必要なので、このデバイスを br0 にバインドするキーを追加してください。名前を適切なものに変更しましょう。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;MyEth&#039;&#039;.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=en*&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
Bridge=br0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== ブリッジネットワーク ====&lt;br /&gt;
&lt;br /&gt;
ブリッジのネットワークプロファイルを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;MyBridge&#039;&#039;.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=br0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DHCP=ipv4&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== コンテナを起動するオプションを追加する ====&lt;br /&gt;
&lt;br /&gt;
ホストとコンテナに別々の IP を割り当てたいので、ホストからコンテナのネットワークを&#039;&#039;切断&#039;&#039;する必要があります。切断するには、コンテナの起動コマンドに {{ic|1=--network-bridge=br0}} オプションを追加します。&lt;br /&gt;
&lt;br /&gt;
 # systemd-nspawn --network-bridge&amp;amp;#61;br0 -bD /path_to/my_container&lt;br /&gt;
&lt;br /&gt;
==== 結果 ====&lt;br /&gt;
&lt;br /&gt;
* ホスト側&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip a|&lt;br /&gt;
3: br0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc noqueue state UP group default &lt;br /&gt;
    link/ether 14:da:e9:b5:7a:88 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.1.87/24 brd 192.168.1.255 scope global br0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet6 fe80::16da:e9ff:feb5:7a88/64 scope link &lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
6: vb-&#039;&#039;MyContainer&#039;&#039;: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000&lt;br /&gt;
    link/ether d2:7c:97:97:37:25 brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet6 fe80::d07c:97ff:fe97:3725/64 scope link &lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* コンテナ側&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip a|&lt;br /&gt;
2: host0: &amp;lt;BROADCAST,MULTICAST,ALLMULTI,AUTOMEDIA,NOTRAILERS,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br /&gt;
    link/ether 5e:96:85:83:a8:5d brd ff:ff:ff:ff:ff:ff&lt;br /&gt;
    inet 192.168.1.73/24 brd 192.168.1.255 scope global host0&lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
    inet6 fe80::5c96:85ff:fe83:a85d/64 scope link &lt;br /&gt;
       valid_lft forever preferred_lft forever&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 注意 ====&lt;br /&gt;
&lt;br /&gt;
* ホストの br0 と、コンテナの host0 にそれぞれ IP アドレスが割り当てられました。&lt;br /&gt;
* 2つの新しいインターフェイスが作成されます: ホストの {{ic|vb-&#039;&#039;MyContainer&#039;&#039;}} とコンテナの {{ic|host0}} です。これは {{ic|1=--network-bridge=br0}} オプションによるものです。このオプションには {{ic|--network-veth}} という別のオプションも含まれており、ホストとコンテナの間に&#039;&#039;仮想イーサネットリンク&#039;&#039;が作成されます。&lt;br /&gt;
* {{ic|host0}} の DHCP アドレスはシステムの {{ic|/usr/lib/systemd/network/80-container-host0.network}} ファイルから由来します。&lt;br /&gt;
* ホスト側&lt;br /&gt;
&lt;br /&gt;
{{hc|$ brctl show|&lt;br /&gt;
bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
br0		8000.14dae9b57a88	no		enp7s0&lt;br /&gt;
							vb-&#039;&#039;MyContainer&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記のコマンドの出力で2つのインターフェイスがバインドされたブリッジが確認できます。&lt;br /&gt;
&lt;br /&gt;
* ホスト側&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip route|&lt;br /&gt;
default via 192.168.1.254 dev br0 &lt;br /&gt;
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.87&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* コンテナ側&lt;br /&gt;
&lt;br /&gt;
{{hc|$ ip route|&lt;br /&gt;
default via 192.168.1.254 dev host0 &lt;br /&gt;
192.168.1.0/24 dev host0  proto kernel  scope link  src 192.168.1.73&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記のコマンドの出力で IP アドレスとゲートウェイが 192.168.1.254 の {{ic|br0}} と {{ic|host0}} インターフェイスが有効になったのが確認できます。ゲートウェイのアドレスは &#039;&#039;systemd-networkd&#039;&#039; によって自動的に取得されます。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /run/systemd/resolve/resolv.conf|&lt;br /&gt;
nameserver 192.168.1.254&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 固定 IP ネットワーク ===&lt;br /&gt;
&lt;br /&gt;
ウェブサービス (例: FTP, http, SSH) を動かしている場合、デバイスごとに固定 IP を設定するのが役に立つかもしれません。システムの {{ic|/usr/lib/systemd/network/99-default.link}} ファイルに {{ic|1=MACAddressPolicy=persistent}} オプションがあれば (デフォルトの設定)、各デバイスは再起動しても同じ MAC アドレスを維持します。つまり、ゲートウェイのサービスを簡単に適切なデバイスに設定することができます。&lt;br /&gt;
まず、システムの {{ic|/usr/lib/systemd/network/80-container-host0.network}} ファイルを除去します。永続的にするために (例: アップグレードしても変わらないように)、コンテナで以下の設定を行なって下さい。これによって {{ic|/etc/systemd/network}} の同じ名前のファイルが {{ic|/usr/lib/systemd/network}} のファイルよりも優先されるため {{ic|/usr/lib/systemd/network/80-container-host0.network}} ファイルがマスクされます。&lt;br /&gt;
&lt;br /&gt;
 # ln -sf /dev/null /etc/systemd/network/80-container-host0.network&lt;br /&gt;
&lt;br /&gt;
次に、コンテナで {{ic|systemd-networkd}} を[[systemd#systemctl の基本的な使い方|有効化・起動]]してください。&lt;br /&gt;
&lt;br /&gt;
必要な設定ファイル:&lt;br /&gt;
&lt;br /&gt;
* ホスト側&lt;br /&gt;
&lt;br /&gt;
 /etc/systemd/network/&#039;&#039;MyBridge&#039;&#039;.netdev&lt;br /&gt;
 /etc/systemd/network/&#039;&#039;MyEth&#039;&#039;.network&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;MyBridge&#039;&#039;.network の修正&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;MyBridge&#039;&#039;.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=br0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DNS=192.168.1.254&lt;br /&gt;
Address=192.168.1.87/24&lt;br /&gt;
Gateway=192.168.1.254&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* コンテナ側&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/network/&#039;&#039;MyVeth&#039;&#039;.network|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Match]&lt;br /&gt;
Name=host0&lt;br /&gt;
&lt;br /&gt;
[Network]&lt;br /&gt;
DNS=192.168.1.254&lt;br /&gt;
Address=192.168.1.94/24&lt;br /&gt;
Gateway=192.168.1.254&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Et voila!&lt;br /&gt;
&lt;br /&gt;
== 管理やデスクトップの統合 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd-networkd&#039;&#039; にはコマンドラインや GUI によるインタラクティブな管理インターフェイスがありません。&#039;&#039;networkctl&#039;&#039; はネットワークインターフェイスの状態を出力するだけです。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;networkd&#039;&#039; で [[wpa_supplicant]] を使うように設定した場合、&#039;&#039;wpa_cli&#039;&#039; や &#039;&#039;wpa_gui&#039;&#039; を使うことで動的に WLAN インターフェイスを関連付けしたり再設定できます。&lt;br /&gt;
&lt;br /&gt;
{{AUR|networkd-notify-git}}  はネットワークインターフェイスの状態の変化にあわせてシンプルな通知を生成します (接続・切断や再関連付けなど)。&lt;br /&gt;
&lt;br /&gt;
{{AUR|networkd-dispatcher}} デーモンを使うことで &#039;&#039;NetworkManager-dispatcher&#039;&#039; と同じようにネットワークインターフェイスの状態が変わったときにスクリプトを実行することができます。&lt;br /&gt;
&lt;br /&gt;
DNS リゾルバの &#039;&#039;systemd-resolved&#039;&#039; は {{ic|systemd-resolve --status}} で現在の DNS サーバーの情報を視覚化できます。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
=== 起動時にマウントサービスが失敗する ===&lt;br /&gt;
ネットワークが立ち上がる前に [[Samba]]/[[NFS]] などのサービスが実行されると上手く行きません。そのようなときは {{ic|systemd-networkd-wait-online.service}} を[[有効化]]すると良いでしょう。ただし、ネットワークが設定されていない状態でも、ほとんどのネットワークデーモンは問題なく立ち上がるため必要になる状況はあまりありません。&lt;br /&gt;
&lt;br /&gt;
=== systemd-resolve がローカルドメインを検索してくれない ===&lt;br /&gt;
&lt;br /&gt;
ホストネームを指定しているとき、たとえ {{ic|.network}} ファイルに {{ic|1=UseDomains=yes}} や {{ic|1=Domains=[domain-list]}} を設定している場合 ({{ic|resolv.conf}} に {{ic|search [domain-list]}} が作成されます) でも、Systemd の {{ic|resolve}} はローカルドメインを検索しません。この問題を解決するには:&lt;br /&gt;
* {{ic|/etc/nsswitch.conf}} の {{ic|hosts}} データベースを切り詰める (例: {{ic|resolve}} サービスの後ろの {{ic|1=[!UNAVAIL=return]}} オプションを削除する)。&lt;br /&gt;
* 完全修飾ドメイン名を使うようにする。&lt;br /&gt;
* {{ic|/etc/hosts}} を使ってホストネームを解決する。&lt;br /&gt;
* systemd の {{ic|resolve}} の代わりに glibc の {{ic|dns}} を使うようにする。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.freedesktop.org/software/systemd/man/systemd-networkd.service.html systemd.networkd man ページ]&lt;br /&gt;
* [https://plus.google.com/u/0/+TomGundersen/posts systemd-networkd のメイン開発者、Tom Gundersen の G+ ホームページ]&lt;br /&gt;
* [https://coreos.com/blog/intro-to-systemd-networkd/ Core OS のブログにおける Tom Gundersen の投稿]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?pid=1393759#p1393759 systemd-networkd と wpa_supplicant をセットアップする方法] (WonderWoofy&#039;s walkthrough on Arch forums)&lt;/div&gt;</summary>
		<author><name>J8takagi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=VirtualBox&amp;diff=13485</id>
		<title>VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=VirtualBox&amp;diff=13485"/>
		<updated>2018-10-04T14:23:24Z</updated>

		<summary type="html">&lt;p&gt;J8takagi: /* EFI モードでインストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ハイパーバイザ]]&lt;br /&gt;
[[cs:VirtualBox]]&lt;br /&gt;
[[de:VirtualBox]]&lt;br /&gt;
[[el:VirtualBox]]&lt;br /&gt;
[[en:VirtualBox]]&lt;br /&gt;
[[es:VirtualBox]]&lt;br /&gt;
[[fr:VirtualBox]]&lt;br /&gt;
[[hu:VirtualBox]]&lt;br /&gt;
[[it:VirtualBox]]&lt;br /&gt;
[[pt:VirtualBox]]&lt;br /&gt;
[[ru:VirtualBox]]&lt;br /&gt;
[[zh-hans:VirtualBox]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|VirtualBox/ヒントとテクニック}}&lt;br /&gt;
{{Related|PhpVirtualBox}}&lt;br /&gt;
{{Related|RemoteBox}}&lt;br /&gt;
{{Related|既存環境を仮想マシンに (から) 移動}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VirtualBox&#039;&#039;&#039; は [[VMware]] に似た仮想 PC エミュレータです。継続的に開発が行われており、新しい機能が日夜追加されています。例えば、バージョン 2.2 では Linux と Solaris をゲストにした OpenGL 3D アクセラレーションがサポートされました。VirtualBox には仮想マシンを管理するために [[Qt]] による GUI インターフェースや、[[Wikipedia:ja:SDL|SDL]] によるコマンドラインツールが用意されています。ゲスト OS によっては &#039;&#039;guest additions&#039;&#039; を使って、ファイルやクリップボードの共有・ビデオアクセラレーション・&amp;quot;シームレス&amp;quot;なウィンドウ統合モードなどのゲスト・ホストを統合する機能を使うことができます。&lt;br /&gt;
&lt;br /&gt;
{{Wikipedia/ja|VirtualBox}}&lt;br /&gt;
&lt;br /&gt;
== ホストとしてインストール ==&lt;br /&gt;
&lt;br /&gt;
=== コアパッケージのインストール ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|virtualbox}} パッケージを[[インストール]]してください。さらに、ホストモジュールのパッケージを選択してインストールしてください:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|linux}} カーネルを使用している場合 {{Pkg|virtualbox-host-modules-arch}} を選択してください。&lt;br /&gt;
* 他の[[カーネル]]を使っている場合 {{Pkg|virtualbox-host-dkms}} を選択してください。&lt;br /&gt;
** {{Pkg|virtualbox-host-dkms}} によって提供される virtualbox モジュールをコンパイルするには、インストールしているカーネルにあわせて適切なヘッダーパッケージをインストールする必要があります (例: {{Pkg|linux-lts}} なら {{Pkg|linux-lts-headers}} パッケージ、{{Pkg|linux-zen}} なら {{Pkg|linux-zen-headers}} パッケージ) [https://lists.archlinux.org/pipermail/arch-dev-public/2016-March/027808.html]。VirtualBox かカーネルのどちらかがアップデートされると、[[DKMS]] の Pacman フックによって自動的にカーネルモジュールが再コンパイルされます。&lt;br /&gt;
&lt;br /&gt;
=== モジュールに署名する ===&lt;br /&gt;
&lt;br /&gt;
{{ic|CONFIG_MODULE_SIG_FORCE}} オプションを有効にしたカスタムカーネルを使っている場合、カーネルのコンパイル時に生成される鍵を使ってモジュールに署名する必要があります。&lt;br /&gt;
&lt;br /&gt;
カーネルツリーのフォルダに移動して、以下のコマンドを実行してください:&lt;br /&gt;
 # for module in `ls /lib/modules/$(uname -r)/kernel/misc/{vboxdrv.ko,vboxnetadp.ko,vboxnetflt.ko,vboxpci.ko}` ; do ./scripts/sign-file sha1 certs/signing_key.pem certs/signing_key.x509 $module ; done&lt;br /&gt;
&lt;br /&gt;
{{Note|ハッシュのアルゴリズムは必ずしも設定と一致している必要はありませんが、カーネルの中に組み込まれている必要はあります。}}&lt;br /&gt;
&lt;br /&gt;
=== カーネルモジュールのロード ===&lt;br /&gt;
バージョン 5.0.16 から、{{Pkg|virtualbox-host-modules-arch}} と {{Pkg|virtualbox-host-dkms}} は &#039;&#039;&#039;systemd-modules-load&#039;&#039;&#039; サービスを使用して起動時にモジュールをロードします。&lt;br /&gt;
&lt;br /&gt;
{{Note|起動時に VirtualBox モジュールをロードして欲しくない場合、{{ic|/etc/modules-load.d}} に {{ic|virtualbox-host-modules-arch.conf}} (または {{ic|virtualbox-host-modules-dkms.conf}}) という名前の空のファイル (あるいは {{ic|/dev/null}} のシンボリックリンク) を作成して {{ic|/usr/lib/modules-load.d/virtualbox-host-modules-arch.conf}} (または {{ic|/usr/lib/modules-load.d/virtualbox-host-dkms.conf}}) を無効化する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
VirtualBox が使っている[[カーネルモジュール]]の中には {{ic|vboxdrv}} と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。Arch Linux 起動時に自動でロードすることも、必要なときだけ手動でロードすることもできます。&lt;br /&gt;
&lt;br /&gt;
dkms でモジュールを使う場合、最初に、&#039;&#039;modprobe&#039;&#039; によって使用されたカーネルモジュールの依存関係データベースを {{ic|depmod -a}} でアップデートしてください。DKMS パッケージ (e.g. {{Pkg|virtualbox-host-modules}}{{Broken package link|置換パッケージ: {{Pkg|virtualbox-host-modules-arch}}}}, {{AUR|virtualbox-host-modules-lts}},...) を使わないユーザーはこのコマンドを実行する必要はありません、データベースは[https://projects.archlinux.org/svntogit/community.git/tree/trunk/virtualbox-host-modules.install?h=packages/virtualbox-modules インストール時に更新されるためです]。&lt;br /&gt;
&lt;br /&gt;
手動でモジュールをロードするには:&lt;br /&gt;
 # modprobe vboxdrv&lt;br /&gt;
&lt;br /&gt;
次のモジュールは任意ですが、高度な設定をするときは面倒くさいことにならないようにロードすることを推奨します: {{ic|vboxnetadp}}, {{ic|vboxnetflt}}, {{ic|vboxpci}}。&lt;br /&gt;
&lt;br /&gt;
* {{ic|vboxnetadp}} と {{ic|vboxnetflt}} はどちらも [https://www.virtualbox.org/manual/ch06.html#network_hostonly &amp;quot;ホストオンリーネットワーク&amp;quot;] 機能を使うときに必要になります。正確に言えば、{{ic|vboxnetadp}} は VirtualBox のグローバル設定でホストインターフェイスを作成するのに必要で、{{ic|vboxnetflt}} はそのネットワークインターフェイスを使って仮想マシンを起動するのに必要です。&lt;br /&gt;
&lt;br /&gt;
* {{ic|vboxpci}} は仮想マシンでホストの PCI デバイスをパススルーするときに必要になります。&lt;br /&gt;
&lt;br /&gt;
{{Note|モジュールを更新したときにカーネルに VirtualBox カーネルモジュールがロードされていた場合、更新された新しいバージョンを使うためには手動でリロードしなくてはなりません。root で {{ic|vboxreload}} を実行してください。}}&lt;br /&gt;
&lt;br /&gt;
最後に、上記の &amp;quot;ホストオンリーネットワーク&amp;quot; 機能を使う場合、{{pkg|net-tools}} がインストールされていることを確認してください。VirtualBox は {{ic|ifconfig}} と {{ic|route}} を使って IP を割り当て {{ic|VBoxManage hostonlyif}} や GUI の &#039;&#039;Settings &amp;gt; Network &amp;gt; Host-only Networks &amp;gt; Edit host-only network (space) &amp;gt; Adapter&#039;&#039; で設定されたホストインターフェイスに接続します。&lt;br /&gt;
&lt;br /&gt;
=== ユーザー名を vboxusers グループに追加 ===&lt;br /&gt;
&lt;br /&gt;
利用するユーザー名を &#039;&#039;&#039;vboxusers&#039;&#039;&#039; [[ユーザーとグループ|グループ]]に追加してください。追加しなくても問題なく動作しますが、共有フォルダなどの任意機能を動かすためには必要です。新しいグループは自動では現在のセッションに適用されません; ユーザーは一度ログインしなおすか {{Ic|newgrp}} や {{Ic|sudo -u $USER -s}} などのコマンドで新しい環境を始める必要があります。現在のユーザーを {{ic|vboxusers}} グループに追加するには、次を入力してください:&lt;br /&gt;
&lt;br /&gt;
 # gpasswd -a $USER vboxusers&lt;br /&gt;
&lt;br /&gt;
=== Guest additions ディスク ===&lt;br /&gt;
&lt;br /&gt;
VirtualBox を動かすホスト側 (Arch Linux) には、{{Pkg|virtualbox-guest-iso}} もインストールすることが推奨されています。これはゲスト OS に guest additions をインストールするために使われるディスクイメージです。&#039;&#039;.iso&#039;&#039; ファイルは {{ic|/usr/lib/virtualbox/additions/VBoxGuestAdditions.iso}} に配置され、仮想マシンの中から手動でマウントする必要があります。マウントしたら、ゲストの中で guest additions インストーラーを実行できます。&lt;br /&gt;
&lt;br /&gt;
=== エクステンションパック ===&lt;br /&gt;
&lt;br /&gt;
VirtualBox 4.0 から、GPL ではないコンポーネントはアプリケーションから分割されるようになりました。フリーでない、&#039;&#039;&#039;個人利用においてのみ利用可能&#039;&#039;&#039;なライセンスでリリースされていますが、[https://www.virtualbox.org/manual/ch01.html#intro-installing 追加機能]が入っている Oracle エクステンションパックに興味をひかれるかもしれません。手動でインストールする代わりに、[[AUR]] には {{aur|virtualbox-ext-oracle}} パッケージが存在します。ビルド済みのバージョンは [[非公式ユーザーリポジトリ#seblu|seblu]] リポジトリにあります。&lt;br /&gt;
&lt;br /&gt;
伝統的な手動のインストールをしたい場合: エクステンションを手動でインストールして GUI (&#039;&#039;File &amp;gt; Preferences &amp;gt; Extensions&#039;&#039;) または {{ic|VBoxManage extpack install &amp;lt;.vbox-extpack&amp;gt;}} でインストールしてください。VirtualBox に特権アクセスを与えるためのツールキット ([[Polkit]] や gksu など) が必須です。このエクステンションのインストールには [https://www.virtualbox.org/ticket/8473 root 権限が必要になります]。&lt;br /&gt;
&lt;br /&gt;
=== 適切なフロントエンドの使用 ===&lt;br /&gt;
&lt;br /&gt;
VirtualBox には複数のフロントエンドが存在しています:&lt;br /&gt;
* 普通の GUI で VirtualBox を使いたい場合は {{ic|VirtualBox}} を使ってください。&lt;br /&gt;
* コマンドライン内だけで VirtualBox を使いたい場合 (起動と既存の仮想マシンの設定変更だけ)、{{ic|VBoxSDL}} コマンドが使えます。VBoxSDL はメニューやコントロールがない、&#039;&#039;ピュア&#039;&#039;な仮想マシンだけを含んだシンプルなウィンドウのみを表示します。&lt;br /&gt;
* GUI を (サーバーなどで) 実行せずにコマンドラインで VirtualBox を使って仮想マシンを作成・起動・設定したい場合、ホスト側で全く目に見える出力を行わなず VRDP データだけを送信する {{ic|VBoxHeadless}} を使います。&lt;br /&gt;
&lt;br /&gt;
また、[[PhpVirtualBox]] を使えばウェブインターフェイスで仮想マシンを管理することが可能です。&lt;br /&gt;
&lt;br /&gt;
仮想マシンを作成する方法は [https://www.virtualbox.org/manual VirtualBox マニュアル]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|仮想ディスクイメージを [[Btrfs]] ファイルシステムに保存する場合は、イメージを作成する前に、イメージを保存するディレクトリの [[Btrfs#コピーオンライト_.28CoW.29|Copy-on-Write]] を無効にすると良いでしょう。}}&lt;br /&gt;
&lt;br /&gt;
== Arch Linux をゲストにする ==&lt;br /&gt;
&lt;br /&gt;
=== 仮想マシンの中に Arch Linux をインストール ===&lt;br /&gt;
&lt;br /&gt;
仮想マシンの仮想ドライブを使って Arch のインストールメディアを起動します。そして、[[ビギナーズガイド]]や[[インストールガイド]]に書かれている方法に従って Arch のインストールを完了してください。グラフィックドライバーのインストールはしません: 次のステップで VirtualBox のグラフィックドライバーをインストールします。&lt;br /&gt;
&lt;br /&gt;
=== EFI モードでインストール ===&lt;br /&gt;
&lt;br /&gt;
VirtualBox の中に EFI モードで Arch Linux をインストールしたい場合、仮想マシンの設定で、左側のパネルの &#039;&#039;System&#039;&#039; アイテムを選んでから右側のパネルの &#039;&#039;Motherboard&#039;&#039; を選択して &#039;&#039;Enable EFI (special OSes only)&#039;&#039; のチェックを入れて下さい。Arch Linux のインストールメディアを起動すると Arch Linux の標準の [[systemd-boot]] メニューが素早く表示されます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Arch Linux archiso x86_64 UEFI USB&lt;br /&gt;
UEFI Shell x86_64 v1&lt;br /&gt;
UEFI Shell x86_64 v2&lt;br /&gt;
EFI Default Loader}}&lt;br /&gt;
&lt;br /&gt;
最初のアイテムを選択してカーネルをロードした後、メディアは1分30秒ほど止まった後、通常通りにカーネルの起動に進みます。絶望しないで待機して下さい。&lt;br /&gt;
&lt;br /&gt;
システムとブートローダーをインストールしたら、VirtualBox はまず [[ESP]] から {{ic|/EFI/BOOT/BOOTX64.EFI}} を実行します。最初のオプションが失敗した場合、VirtualBox は次に EFI のシェルスクリプト {{ic|startup.nsh}} を ESP のルートから試行します。つまり、システムを起動する方法として以下の選択肢があります:&lt;br /&gt;
&lt;br /&gt;
* 毎回 [[Unified Extensible Firmware Interface#UEFI シェル|EFI シェル]]から手動でブートローダーを起動する。&lt;br /&gt;
* ブートローダーをデフォルトの {{ic|/EFI/BOOT/BOOTX64.EFI}} パスに移動する。&lt;br /&gt;
* ESP のルートに {{ic|startup.nsh}} スクリプトを作成してブートローダーアプリケーションのパスを記述する。例: {{ic|\EFI\grub\grubx64.efi}}。&lt;br /&gt;
&lt;br /&gt;
[[GRUB]] や [[Gummiboot]] を使うなら、デフォルトの &#039;&#039;EFI Hard Drive&#039;&#039; エントリが完璧に動作します。起動時に {{ic|F2}} キーを押すことで使える、VirtualBox Boot Manager を使用しないで下さい: 起動時に手動で追加した、もしくは {{Pkg|efibootmgr}} による EFI エントリは再起動しても残りますが [https://www.virtualbox.org/ticket/11177 VM をシャットダウンすると消えます]。&lt;br /&gt;
&lt;br /&gt;
[https://bbs.archlinux.org/viewtopic.php?id=158003 UEFI Virtualbox installation boot problems] も参照。&lt;br /&gt;
&lt;br /&gt;
=== Guest Additions をインストール ===&lt;br /&gt;
&lt;br /&gt;
VirtualBox の [https://www.virtualbox.org/manual/ch04.html Guest Additions] にはゲストオペレーティングシステムを最適化するドライバーやアプリケーションが含まれています。画像解像度の改善やマウスのより良い制御などもされます。インストールしたゲスト環境の中で、グラフィカル環境を使用する場合、{{Pkg|virtualbox-guest-utils}} をインストールしてください。グラフィカル環境を使わないときは X のサポートを外した VirtualBox Guest ユーティリティの {{Pkg|virtualbox-guest-utils-nox}} をインストールしてください。どちらのパッケージをインストールした場合でも、ゲストモジュールのパッケージの選択が求められます:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|linux}} カーネルを使用する場合 {{Pkg|virtualbox-guest-modules-arch}} を選択してください。&lt;br /&gt;
* 他のカーネルを使う場合 {{Pkg|virtualbox-guest-dkms}} を選択してください。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|virtualbox-guest-dkms}} によって提供される virtualbox モジュールをコンパイルするには、インストールしているカーネルにあわせて適切なヘッダーパッケージをインストールする必要があります (例: {{Pkg|linux-lts}} なら {{Pkg|linux-lts-headers}} パッケージ、{{Pkg|linux-zen}} なら {{Pkg|linux-zen-headers}} パッケージ) [https://lists.archlinux.org/pipermail/arch-dev-public/2016-March/027808.html]。VirtualBox かカーネルのどちらかがアップデートされると、[[DKMS]] の Pacman フックによって自動的にカーネルモジュールが再コンパイルされます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ISO を使って、ホスト環境に {{Pkg|virtualbox-guest-iso}} パッケージをインストールして、Guest Additions をインストールすることもできます。その場合、デバイスメニューを開いて Insert Guest Additions CD Image をクリックしてください。&lt;br /&gt;
* vbox カーネルモジュールを再コンパイルするには、root で {{ic|rcvboxdrv}} を実行してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ゲストで動作する Guest Additions と、ホストで動作する VirtualBox アプリケーションのバージョンは一致している必要があります。バージョンが食い違っていると (クリップボードの共有など) Guest Additions の機能が使えなくなります。ゲストをアップグレードする場合 (例: {{ic|pacman -Syu}})、ホスト側の VirtualBox アプリケーションも最新版になっていることを確認してください。VirtualBox の GUI にある &amp;quot;Check for updates&amp;quot; はときどき機能しないことがあります。virtualbox.org のウェブサイトを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== Virtualbox カーネルモジュールをロード ===&lt;br /&gt;
&lt;br /&gt;
自動的にモジュールをロードするには {{ic|vboxservice}} サービスを[[有効化]]してください。モジュールをロードしてゲストのシステム時刻をホストと同期します。&lt;br /&gt;
&lt;br /&gt;
手動でモジュールをロードするには、次のコマンドを入力:&lt;br /&gt;
 # modprobe -a vboxguest vboxsf vboxvideo&lt;br /&gt;
&lt;br /&gt;
バージョン 5.0.16 から、{{Pkg|virtualbox-guest-modules-arch}} や {{Pkg|virtualbox-guest-dkms}} は &#039;&#039;&#039;systemd-modules-load&#039;&#039;&#039; サービスを使って起動時にモジュールをロードします。&lt;br /&gt;
&lt;br /&gt;
{{Note|起動時に VirtualBox のモジュールをロードして欲しくない場合、{{ic|/etc/modules-load.d}} に {{ic|virtualbox-guest-modules-arch.conf}} (または {{ic|virtualbox-guest-modules-dkms.conf}}) という名前の空のファイル (あるいは {{ic|/dev/null}} のシンボリックリンク) を作成して {{ic|/usr/lib/modules-load.d/virtualbox-guest-modules-arch.conf}} (または {{ic|/usr/lib/modules-load.d/virtualbox-guest-modules-dkms.conf}}) を無効化する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
=== VirtualBox ゲストサービスを起動 ===&lt;br /&gt;
&lt;br /&gt;
VirtualBox カーネルモジュールのインストールが終わったら、ゲストサービスを起動する必要があります。ゲストサービスは {{ic|VBoxClient}} という名前のバイナリ実行ファイルであり X Window System と対話を行います。{{ic|VBoxClient}} は以下の機能を管理します:&lt;br /&gt;
* 共有クリップボードとホストとゲスト間のドラッグアンドドロップ。&lt;br /&gt;
* シームレスウィンドウモード。&lt;br /&gt;
* ゲストのウィンドウサイズに自動的にゲストの表示をリサイズ。&lt;br /&gt;
* VirtualBox ホストバージョンのチェック。&lt;br /&gt;
&lt;br /&gt;
これらの機能は全てフラグを使って個別・手動で有効にすることができます。&lt;br /&gt;
 $ VBoxClient --clipboard --draganddrop --seamless --display --checkhostversion&lt;br /&gt;
&lt;br /&gt;
今のところドキュメントになっていませんが VirtualBox には X11 サーバーが実際に動作中かどうか確認して全ての機能を自動的に有効にする Bash スクリプト {{ic|VBoxClient-all}} が入っています。&lt;br /&gt;
 # VBoxClient-all&lt;br /&gt;
&lt;br /&gt;
{{Pkg|virtualbox-guest-utils}} はログイン時に {{ic|VBoxClient-all}} が実行されるように {{ic|/etc/xdg/autostart/vboxclient.desktop}} をインストールします。使用している[[デスクトップ環境]]や[[ウィンドウマネージャ]]が自動的にスクリプトを実行してくれない場合、自動で起動するように手動で設定してください。詳しくは[[自動起動#グラフィカル]]を参照。&lt;br /&gt;
&lt;br /&gt;
VirtualBox にはホストとゲスト間で時刻を同期させる機能も存在します。{{ic|vboxservice.service}} を[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
これで、Arch Linux のゲスト環境が動作するようになったはずです。クリップボードの共有などの機能はデフォルトでは無効になっているので注意してください。使用したいときは VM ごとの設定でオンにする必要があります (例: &#039;&#039;Settings &amp;gt; General &amp;gt; Advanced &amp;gt; Shared Clipboard&#039;&#039;)。&lt;br /&gt;
&lt;br /&gt;
Arch Linux ゲストとホストでフォルダを共有したい場合、下を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ハードウェアアクセラレーション ===&lt;br /&gt;
&lt;br /&gt;
ハードウェアアクセラレーションはホストコンピュータの VirtualBox のオプションから有効にできます。[[GDM]] ディスプレイマネージャ 3.16 以上はハードウェアアクセラレーションのサポートを破壊するので [https://bbs.archlinux.org/viewtopic.php?id=200025]、ハードウェアアクセラレーションに問題が発生する場合、別のディスプレイマネージャを使用することを推奨します ([[LightDM]] は問題なく動作します)。&lt;br /&gt;
&lt;br /&gt;
=== ゲスト側の Arch Linux の共有フォルダ ===&lt;br /&gt;
&lt;br /&gt;
共有フォルダはホスト側にある VirtualBox によって管理されます。共有フォルダが追加されると、自動でマウントされ読み込み専用になります。&lt;br /&gt;
VirtualBox から共有フォルダを作成すると {{Ic|/media/sf_&#039;&#039;SHAREDFOLDERNAME&#039;&#039;}} の中にとフォルダが設置されます。この時、ゲスト側の Arch の中のフォルダを使うには設定が必要になります。ゲスト側の Arch に共有フォルダを作成するには、pacman で Guest Additions パッケージをインストールした後、コマンドラインで以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 # groupadd vboxsf&lt;br /&gt;
 # gpasswd -a $USER vboxsf&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;&#039;自動マウント&#039;&#039;&#039;を機能させるには、&#039;&#039;&#039;vboxservice&#039;&#039;&#039; サービスを有効にする必要があります。次のセクションの説明を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
望むなら、シンボリックを作って home ディレクトリにアクセスしやすくすることができます。例として、&amp;quot;Dropbox&amp;quot; という名の共有フォルダがホスト側の VirtualBox の中に作成されている場合、/media/sf_Dropbox をゲスト側に自動で作成するには次のようにしてください:&lt;br /&gt;
&lt;br /&gt;
 $ ln -s /media/sf_Dropbox/* ~/dropbox&lt;br /&gt;
&lt;br /&gt;
Guest Additions iso が提供している .run スクリプトでも同じことができますが、Arch はこれを使うことを推奨しません、手動で行うべきだからです。このことについての提言はここで見られます: (pastebin: [https://pastebin.com/6cUE3kjF])。&lt;br /&gt;
&lt;br /&gt;
共有フォルダが自動でマウントされない場合、[https://bbs.archlinux.org/viewtopic.php?id=70780 手動でマウント]するか次のセクションを読んで下さい。&lt;br /&gt;
&lt;br /&gt;
[[systemd]] を使うと起動時に問題が起こる時は、{{ic|/etc/fstab}} に {{ic|1=comment=systemd.automount}} を加えて下さい。こうすると、スタートアップ時ではなくマウントポイントにアクセスしたときに共有フォルダがマウントされます。さもなければカーネルアップデート後にシステムが使えなくなるかもしれません（guest additions を手動でインストールした場合）。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;sharedFolderName&#039;&#039;  &#039;&#039;/path/to/mntPtOnGuestMachine&#039;&#039;  vboxsf 　uid=&#039;&#039;user&#039;&#039;,gid=&#039;&#039;group&#039;&#039;,rw,dmode=700,fmode=600,noauto,x-systemd.automount&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;sharedFolderName&#039;&#039;}}: 仮想マシンの &#039;&#039;Settings &amp;gt; SharedFolders &amp;gt; Edit &amp;gt; FolderName&#039;&#039; メニューの値。ホストマシンの実際のフォルダ名とは違う可能性があります。仮想マシンの &#039;&#039;Settings&#039;&#039; を確認するには、ホスト OS の VirtualBox アプリケーションから、適切な仮想マシンを選択して &#039;&#039;Settings&#039;&#039; をクリックしてください。&lt;br /&gt;
* {{ic|&#039;&#039;/path/to/mntPtOnGuestMachine&#039;&#039;}}: 存在しない場合、このディレクトリは手動で作成する必要があります ([[Core Utilities#mkdir|mkdir]] などを使用)。&lt;br /&gt;
* {{ic|dmode}}/{{ic|fmode}} は {{ic|&#039;&#039;/path/to/mntPtOnGuestMachine&#039;&#039;}} のなかのディレクトリやファイルのパーミッションです。&lt;br /&gt;
&lt;br /&gt;
2012年8月2日現在、{{ic|mount.vboxsf}} は {{ic|nofail}} オプションに対応していません:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;desktop&#039;&#039;  &#039;&#039;/media/desktop&#039;&#039;  vboxsf  uid=&#039;&#039;user&#039;&#039;,gid=&#039;&#039;group&#039;&#039;,rw,dmode=700,fmode=600,nofail  0  0&lt;br /&gt;
&lt;br /&gt;
=== ゲストの時刻をホストに同期させる ===&lt;br /&gt;
&lt;br /&gt;
時刻を同期させるには、まずホスト側に {{Pkg|virtualbox-guest-utils}} をインストールする必要があります（[[#Guest Additions をインストール|前のセクション]]を見て下さい）。それから次を実行して次のブート時にサービスを有効にします&lt;br /&gt;
 # systemctl enable vboxservice.service&lt;br /&gt;
&lt;br /&gt;
今すぐサービスを開始するには&lt;br /&gt;
 # systemctl start vboxservice.service&lt;br /&gt;
&lt;br /&gt;
共有フォルダの自動マウント機能を使うときにもこのデーモンを起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== ホストからゲストに SSH ===&lt;br /&gt;
&lt;br /&gt;
仮想マシン設定のネットワークタブの &amp;quot;Advanced&amp;quot; にはポートフォワーディングを作成するツールがあります。ゲストの ssh ポート {{ic|22}} をホストの {{ic|3022}} ポートなどに転送することで、以下のように接続できるようになります:&lt;br /&gt;
&lt;br /&gt;
 user@host$ ssh -p 3022 $USER@localhost&lt;br /&gt;
&lt;br /&gt;
==== 共有フォルダのかわりに SSHFS を使う ====&lt;br /&gt;
&lt;br /&gt;
ポートフォワーディングと sshfs を使うことで、ゲストのファイルシステムをホストにマウントすることができます:&lt;br /&gt;
&lt;br /&gt;
 user@host$ sshfs -p 3022 $USER@localhost:$HOME ~/shared_folder&lt;br /&gt;
&lt;br /&gt;
== 仮想ディスクの管理 ==&lt;br /&gt;
&lt;br /&gt;
[[VirtualBox/ヒントとテクニック#VirtualBox の仮想マシンを他のハイパーバイザにインポート・エクスポート]]も参照。&lt;br /&gt;
&lt;br /&gt;
=== VirtualBox によってサポートされているフォーマット ===&lt;br /&gt;
&lt;br /&gt;
VirtualBox は以下の仮想ディスクフォーマットをサポートしています:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VDI&#039;&#039;&#039; (Virtual Disk Image): VirtualBox で仮想マシンを作成したときにデフォルトで使用されるオープンなコンテナです。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VMDK&#039;&#039;&#039; (Virtual Machine Disk): VMware によって開発されたフォーマットです。最初は仕様が公開されていませんでしたが、今では VirtualBox でサポートされるオープンなフォーマットになっています。VMDK では 2GB のファイルに分割することができます。巨大なファイルをサポートしていない環境に仮想マシンを保存したい場合に有用です。Parallels の HDD フォーマット以外で、このような機能を提供するフォーマットはありません。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VHD&#039;&#039;&#039; (Virtual Hard Disk): Microsoft によって Windows Virtual PC や [[Hyper-V]] で使用されているフォーマットです。Microsoft 製品を使用する場合、このフォーマットを選択する必要があります。&lt;br /&gt;
:{{Tip|Windows 7 から、VHD は直接マウントできるようになっています。}} &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;VHDX&#039;&#039;&#039; (読み取り専用): Microsoft によって開発された Virtual Hard Disk フォーマットの拡張版です。2012年9月4日に Windows Server 2012 に搭載された Hyper-V 3.0 と一緒にリリースされました。VHDX は (ブロックアライメントの改善により) パフォーマンスが向上しており、大きなブロックサイズとジャーナルをサポートしています。VirtualBox は読み取り専用で VHDX をサポートしています [https://www.virtualbox.org/manual/ch15.html#idp63002176]。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HDD&#039;&#039;&#039; (バージョン 2): Parallels Inc によって開発されている HDD フォーマットは Parallels Desktop for Mac などのハイパーバイザ製品で使われています。プロプライエタリなフォーマットで、ドキュメントがないために、新しいバージョンの HDD (バージョン 3 と 4) はサポートされていません。 {{Note|バージョン 1 のサポートに関しては論争が存在します。公式 VirtualBox マニュアルでは [https://www.virtualbox.org/manual/ch05.html#vdidetails HDD ファイルフォーマットのバージョン 2 しかサポートしていない] と書かれていますが、Wikipedia の投稿者によれば[[Wikipedia:Comparison of platform virtual machines#Image type compatibility|バージョン 1 も使える]]という話です。}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;QED&#039;&#039;&#039; (QEMU Enhanced Disk): オープンソースのハイパーバイザである QEMU で使われていた古いファイルフォーマットです。2010年に設計されたフォーマットで、今では QCOW2 などに取って代わられています。特徴として完全な非同期 I/O パス、強力なデータ整合性、バッキングファイル、スパースファイルなどがあります。QED フォーマットは古いバージョンの QEMU で作成された仮想マシンとの互換性のためだけにサポートされています。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;QCOW&#039;&#039;&#039; (QEMU Copy On Write): QEMU の現行フォーマットです。QCOW フォーマットは zlib ベースの透過圧縮や暗号化をサポートしています (暗号化は問題があるため推奨されていません)。QCOW にはふたつのバージョンが存在します: QCOW と QCOW2 です。QCOW2 は QCOW よりも優れています。VirtualBox が完全にサポートしているのは QCOW です [https://www.virtualbox.org/manual/ch15.html#idp63002176]。QCOW2 にはリビジョン違いがふたつあります: QCOW2 0.10 と QCOW2 1.1 になります (QEMU で仮想ディスクを作成した場合、後者がデフォルトです)。VirtualBox は QCOW2 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OVF&#039;&#039;&#039; (Open Virtualization Format): 異なるハイパーバイザ間での仮想マシンの相互運用性を考えて設計されたオープンなフォーマットです。VirtualBox は VBoxManage のインポート・エクスポート機能によって OVF フォーマットをサポートしています [https://www.virtualbox.org/manual/ch08.html#idp55423424]。ただし [https://www.virtualbox.org/manual/ch14.html#KnownProblems 既知の制限] が存在します。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;RAW&#039;&#039;&#039;: 特定のファイルフォーマットのコンテナに格納せず直接ディスクに仮想ディスクを配置するモードです。VirtualBox は複数の方法で RAW 機能をサポートしています: RAW ディスクを [https://www.virtualbox.org/manual/ch08.html#idp59139136 特定のフォーマット] に変換、[https://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevdi ディスクを RAW にクローン]、あるいは物理ディスクやファイルを指し示す VMDK ファイルを直接使用する [https://www.virtualbox.org/manual/ch09.html#idp57804112]。&lt;br /&gt;
&lt;br /&gt;
=== ディスクイメージフォーマットの変換 ===&lt;br /&gt;
&lt;br /&gt;
[https://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevdi VBoxManage clonehd] を使うことで VDI, VMDK, VHD, RAW を相互に変換することができます。&lt;br /&gt;
&lt;br /&gt;
 $ VBoxManage clonehd &#039;&#039;inputfile&#039;&#039; &#039;&#039;outputfile&#039;&#039; --format &#039;&#039;outputformat&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
例えば VDI を VMDK に変換するには:&lt;br /&gt;
&lt;br /&gt;
 $ VBoxManage clonehd &#039;&#039;source.vdi&#039;&#039; &#039;&#039;destination.vmdk&#039;&#039; --format VMDK&lt;br /&gt;
&lt;br /&gt;
==== QCOW ====&lt;br /&gt;
&lt;br /&gt;
VirtualBox は [[QEMU]] の QCOW2 ディスクイメージフォーマットをサポートしていません。VirtualBox で QCOW2 ディスクイメージを使うには変換する必要があります。{{Pkg|qemu}} の {{ic|qemu-img}} コマンドを使うことで変換できます。{{ic|qemu-img}} は QCOW を VDI, VMDK, VHDX, RAW などのフォーマットに変換します ({{ic|qemu-img --help}} を実行することで変換可能なフォーマットを確認できます)。&lt;br /&gt;
&lt;br /&gt;
 $ qemu-img convert -O &#039;&#039;output_fmt&#039;&#039; &#039;&#039;inputfile&#039;&#039; &#039;&#039;outputfile&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
例えば QCOW2 を VDI に変換するには:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-img convert -O vdi &#039;&#039;source.qcow2&#039;&#039; &#039;&#039;destination.vdi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|-p}} パラメータを使うことで変換の進捗を確認できます。}}&lt;br /&gt;
&lt;br /&gt;
QCOW2 には 0.10 と 1.1 がありますが、{{ic|1=-o compat=&#039;&#039;revision&#039;&#039;}} でどちらを使うか指定できます。&lt;br /&gt;
&lt;br /&gt;
=== 仮想ディスクのマウント ===&lt;br /&gt;
&lt;br /&gt;
==== VDI ====&lt;br /&gt;
&lt;br /&gt;
VDI イメージのマウントは容量固定のイメージ (静的イメージ) でしか使えません。動的 (動的容量割当) イメージのマウントは簡単にできません。&lt;br /&gt;
&lt;br /&gt;
マウントするには (VDI 内の) パーティションのオフセットが必要です。それから {{ic|offData}} の値を {{ic|32256}} に追加してください (例: 69632 + 32256 = 101888):&lt;br /&gt;
&lt;br /&gt;
 $ VBoxManage internalcommands dumphdinfo &amp;lt;storage.vdi&amp;gt; | grep &amp;quot;offData&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そうしたら以下のコマンドでマウントできます:&lt;br /&gt;
&lt;br /&gt;
 # mount -t ext4 -o rw,noatime,noexec,loop,offset=101888 &amp;lt;storage.vdi&amp;gt; /mntpoint/&lt;br /&gt;
&lt;br /&gt;
[https://github.com/pld-linux/VirtualBox/blob/master/mount.vdi mount.vdi] スクリプトを使うこともできます (スクリプトを {{ic|/usr/bin/}} にインストールしてください):&lt;br /&gt;
&lt;br /&gt;
 # mount -t vdi -o fstype=ext4,rw,noatime,noexec &#039;&#039;vdi_file_location&#039;&#039; &#039;&#039;/mnt/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
もしくは {{Pkg|qemu}} のカーネルモジュールを使う方法もあります [http://bethesignal.org/blog/2011/01/05/how-to-mount-virtualbox-vdi-image/]:&lt;br /&gt;
&lt;br /&gt;
 # modprobe nbd max_part=16&lt;br /&gt;
 # qemu-nbd -c /dev/nbd0 &amp;lt;storage.vdi&amp;gt;&lt;br /&gt;
 # mount /dev/nbd0p1 /mnt/dir/&lt;br /&gt;
&lt;br /&gt;
アンマウントするには:&lt;br /&gt;
 # umount /mnt/dir/&lt;br /&gt;
 # qemu-nbd -d /dev/nbd0&lt;br /&gt;
&lt;br /&gt;
パーティションノードが反映されない場合、{{ic|partprobe /dev/nbd0}} を使ってみてください。VDI パーティションは直接ノードにマッピングすることもできます: {{ic|qemu-nbd -P 1 -c /dev/nbd0 &amp;lt;storage.vdi&amp;gt;}}。&lt;br /&gt;
&lt;br /&gt;
=== 仮想ディスクの縮小 ===&lt;br /&gt;
&lt;br /&gt;
仮想ディスクの縮小は &#039;&#039;.vdi&#039;&#039; ファイルでしか行うことができません。&lt;br /&gt;
&lt;br /&gt;
仮想マシンを起動して無駄なファイルを削除してください。{{Pkg|bleachbit}} などのツールを使うことができます ([http://bleachbit.sourceforge.net/download/windows Windows でも利用できます])。&lt;br /&gt;
&lt;br /&gt;
空き領域をゼロ埋めするツールは複数存在します:&lt;br /&gt;
* Bleachbit を使用する場合、GUI で &#039;&#039;System &amp;gt; Free disk space&#039;&#039; にチェックを入れるか、CLI で {{ic|bleachbit -c system.free_disk_space}} を使ってください。&lt;br /&gt;
* UNIX ベースの環境の場合、{{ic|dd}} または {{Pkg|dcfldd}} を使います (違いについては [http://superuser.com/a/355322 こちら] を参照):&lt;br /&gt;
:{{bc|1=# dcfldd if=/dev/zero of=&#039;&#039;/fillfile&#039;&#039; bs=4M}}&lt;br /&gt;
:{{ic|fillfile}} がパーティションの上限に達すると、{{ic|1280 blocks (5120Mb) written.dcfldd:: No space left on device}} というメッセージが表示されます。ユーザースペースと予約ブロック以外が全てゼロで埋められたということになります。全ての空きブロックを上書きするために root でコマンドを実行してください。ext ファイルシステムを使っている場合、デフォルトではファイルシステムブロックの数パーセントがスーパーユーザー用に予約されています ([[Ext4#予約ブロック]]を参照)。&lt;br /&gt;
:ゼロ埋めが完了したら、作成された {{ic|&#039;&#039;fillfile&#039;&#039;}} ファイルを削除してください。&lt;br /&gt;
&lt;br /&gt;
* Windows の場合、以下のツールが存在します:&lt;br /&gt;
:*[http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx Sysinternals Suite] の {{ic|sdelete}} を使う場合、仮想マシンに存在するドライブごとに {{ic|sdelete -s -z &#039;&#039;c:&#039;&#039;}} を実行してください。&lt;br /&gt;
:* スクリプトを使いたい場合、[http://blog.whatsupduck.net/2012/03/powershell-alternative-to-sdelete.html PowerShell を使う方法] が存在します (全てのドライブで繰り返してください)。&lt;br /&gt;
::{{bc|PS&amp;gt; ./Write-ZeroesToFreeSpace.ps1 -Root &#039;&#039;c:\&#039;&#039; -PercentFree 0}}&lt;br /&gt;
::{{Note|上記のスクリプトは PowerShell で管理者権限を使って実行する必要があります。デフォルトではスクリプトは実行できません。{{ic|Get-ExecutionPolicy}} で実行ポリシーを確認してください。ポリシーは {{ic|Set-ExecutionPolicy RemoteSigned}} で設定できます。}}&lt;br /&gt;
&lt;br /&gt;
空きディスク領域を消去できたら、仮想マシンをシャットダウンしてください。&lt;br /&gt;
&lt;br /&gt;
仮想マシンを起動したら、ファイルシステムのチェックを実行することを推奨します。&lt;br /&gt;
* UNIX ベースのシステムの場合、{{ic|fsck}} を手動で使うことができます。&lt;br /&gt;
:* [[Fsck#強制的にチェック|カーネルパラメータ]]を設定することで起動時に強制的にディスクチェックを行うことができます。&lt;br /&gt;
* Windows システムの場合:&lt;br /&gt;
:* {{ic|chkdsk &#039;&#039;c:&#039;&#039; /F}} を実行する ({{ic|&#039;&#039;c:&#039;&#039;}} はスキャンを行いたいディスクに置き換えてください)。&lt;br /&gt;
:* [http://therightstuff.de/2009/02/14/ChkDskAll-ChkDsk-For-All-Drives.aspx こちら] の {{ic|FsckDskAll}} を使う。{{ic|chkdsk}} と基本的に同じソフトウェアですが、全てのドライブで繰り返し実行する必要がありません。&lt;br /&gt;
&lt;br /&gt;
[https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi VBoxManage modifyhd] を使って &#039;&#039;.vdi&#039;&#039; からゼロ領域を削除:&lt;br /&gt;
 $ VBoxManage modifyhd &#039;&#039;your_disk.vdi&#039;&#039; --compact&lt;br /&gt;
&lt;br /&gt;
{{Note|仮想マシンにスナップショットが存在する場合、存在する {{ic|.vdi}} ファイルごとに上記のコマンドを実行してください。}}&lt;br /&gt;
&lt;br /&gt;
=== 仮想ディスクの拡大 ===&lt;br /&gt;
&lt;br /&gt;
==== 一般的な方法 ====&lt;br /&gt;
&lt;br /&gt;
仮想マシンを作成したときに選択したハードドライブのサイズが小さすぎて、容量一杯まで使い切ってしまった場合、VirtualBox マニュアルでは [https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvdi VBoxManage modifyhd] を使うことが推奨されています。しかしながら、このコマンドは VDI と VHD ディスクで動的にサイズを割り当てているときしか機能しません。固定サイズの仮想ディスクのサイズを変更したい場合、以下の手順に従ってください。&lt;br /&gt;
&lt;br /&gt;
まず、拡大したいディスクのとなりに新しく仮想ディスクを作成:&lt;br /&gt;
&lt;br /&gt;
 $ VBoxManage createhd -filename &#039;&#039;new.vdi&#039;&#039; --size &#039;&#039;10000&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
サイズは MiB で指定します。例えば 10000MiB ~= 10GiB です。&#039;&#039;new.vdi&#039;&#039; は新しく作成するハードドライブの名前になります。&lt;br /&gt;
&lt;br /&gt;
{{Note|By default, this command uses the &#039;&#039;Standard&#039;&#039; (corresponding to dynamic allocated) file format variant and thus will not use the same file format variant as your source virtual disk. If your &#039;&#039;old.vdi&#039;&#039; has a fixed size and you want to keep this variant, add the parameter {{ic|--variant Fixed}}.}}&lt;br /&gt;
&lt;br /&gt;
次に、古い仮想ディスクを新しい仮想ディスクに複製します (しばらく時間がかかります):&lt;br /&gt;
&lt;br /&gt;
 $ VBoxManage clonehd &#039;&#039;old.vdi&#039;&#039; &#039;&#039;new.vdi&#039;&#039; --existing&lt;br /&gt;
&lt;br /&gt;
古いハードドライブを取り外して新しいドライブを接続してください (斜体の引数は適当な文字列に置き換えてください):&lt;br /&gt;
&lt;br /&gt;
 $ VBoxManage storageattach &#039;&#039;VM_name&#039;&#039; --storagectl &#039;&#039;SATA&#039;&#039; --port &#039;&#039;0&#039;&#039; --medium none&lt;br /&gt;
 $ VBoxManage storageattach &#039;&#039;VM_name&#039;&#039; --storagectl &#039;&#039;SATA&#039;&#039; --port &#039;&#039;0&#039;&#039; --medium &#039;&#039;new.vdi&#039;&#039; --type hdd&lt;br /&gt;
&lt;br /&gt;
ストレージコントローラとポート番号を確認するには、{{ic|VBoxManage showvminfo &#039;&#039;VM_name&#039;&#039;}} コマンドを使います。以下のように出力されます (斜字に注目):&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
[...]&lt;br /&gt;
Storage Controller Name (0):            IDE&lt;br /&gt;
Storage Controller Type (0):            PIIX4&lt;br /&gt;
Storage Controller Instance Number (0): 0&lt;br /&gt;
Storage Controller Max Port Count (0):  2&lt;br /&gt;
Storage Controller Port Count (0):      2&lt;br /&gt;
Storage Controller Bootable (0):        on&lt;br /&gt;
Storage Controller Name (1):            SATA&lt;br /&gt;
Storage Controller Type (1):            IntelAhci&lt;br /&gt;
Storage Controller Instance Number (1): 0&lt;br /&gt;
Storage Controller Max Port Count (1):  30&lt;br /&gt;
Storage Controller Port Count (1):      1&lt;br /&gt;
Storage Controller Bootable (1):        on&lt;br /&gt;
IDE (1, 0): Empty&lt;br /&gt;
&#039;&#039;SATA&#039;&#039; (&#039;&#039;0&#039;&#039;, 0): /home/wget/IT/Virtual_machines/GNU_Linux_distributions/ArchLinux_x64_EFI/Snapshots/{6bb17af7-e8a2-4bbf-baac-fbba05ebd704}.vdi (UUID: 6bb17af7-e8a2-4bbf-baac-fbba05ebd704)&lt;br /&gt;
[...]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[http://gparted.org/download.php GParted live イメージ] をダウンロードして仮想 CD/DVD ディスクファイルとしてマウントし、仮想マシンを起動して、パーティションを拡大・移動してください。そして GParted live をアンマウントして再起動してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|GPT ディスクの場合、ディスクの容量を増やすとバックアップ GPT ヘッダーがディスクの末尾ではなくなります。GParted は修正するかどうか聞いてくるので &#039;&#039;Fix&#039;&#039; をクリックしてください。MBR ディスクの場合、ディスクの末尾にヘッダーは存在しないため問題は起こりません。}}&lt;br /&gt;
&lt;br /&gt;
最後に、VirtualBox から仮想ディスクの登録を解除してファイルを削除してください:&lt;br /&gt;
&lt;br /&gt;
 $ VBoxManage closemedium disk &#039;&#039;old.vdi&#039;&#039;&lt;br /&gt;
 $ rm &#039;&#039;old.vdi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== VDI ディスクの容量を拡大 ====&lt;br /&gt;
&lt;br /&gt;
仮想ディスクが VDI の場合、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ VBoxManage modifyhd &#039;&#039;your_virtual_disk.vdi&#039;&#039; --resize &#039;&#039;the_new_size&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
実行したら上記と同じように Gparted を使ってパーティションのサイズを変更してください。&lt;br /&gt;
&lt;br /&gt;
=== .vbox ファイルから仮想ディスクを手動で交換 ===&lt;br /&gt;
&lt;br /&gt;
GUI や {{ic|VBoxManage}} を使うよりも &#039;&#039;XML&#039;&#039; ファイルを編集するほうが簡単だという場合、仮想マシンの &#039;&#039;.vbox&#039;&#039; ファイルで仮想ディスクを交換（あるいは追加）することができます。GUID とフォーマットを必要に応じて置き換えるだけです:&lt;br /&gt;
&lt;br /&gt;
{{hc|ArchLinux_vm.vbox|2=&lt;br /&gt;
&amp;lt;HardDisk uuid=&amp;quot;&#039;&#039;{670157e5-8bd4-4f7b-8b96-9ee412a712b5}&#039;&#039;&amp;quot; location=&amp;quot;&#039;&#039;ArchLinux_vm.vdi&#039;&#039;&amp;quot; format=&amp;quot;&#039;&#039;VDI&#039;&#039;&amp;quot; type=&amp;quot;Normal&amp;quot;/&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;StorageController&amp;gt;}} のサブタグ {{ic|&amp;lt;AttachedDevice&amp;gt;}} の GUID も新しく置き換えてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|ArchLinux_vm.vbox|2=&lt;br /&gt;
&amp;lt;AttachedDevice type=&amp;quot;HardDisk&amp;quot; port=&amp;quot;0&amp;quot; device=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Image uuid=&amp;quot;&#039;&#039;{670157e5-8bd4-4f7b-8b96-9ee412a712b5}&#039;&#039;&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/AttachedDevice&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|If you do not know the GUID of the drive you want to add, you can use the {{ic|VBoxManage showhdinfo &#039;&#039;file&#039;&#039;}}. If you previously used {{ic|VBoxManage clonehd}} to copy/convert your virtual disk, this command should have outputted the GUID just after the copy/conversion completed. Using a random GUID does not work, as each [http://www.virtualbox.org/manual/ch05.html#cloningvdis UUID is stored inside each disk image].}}&lt;br /&gt;
&lt;br /&gt;
==== Linux ホストと他のホスト間で転送 ====&lt;br /&gt;
&lt;br /&gt;
ハードディスクとスナップショットが保存されるパスの情報は &#039;&#039;.vbox&#039;&#039; 拡張子のファイルの {{ic|&amp;lt;HardDisks&amp;gt; .... &amp;lt;/HardDisks&amp;gt;}} タグにあります。手動で編集したりスクリプトを使うことで必要な変更を行うことができます。&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
NewPath=&amp;quot;${PWD}/&amp;quot;&lt;br /&gt;
Snapshots=&amp;quot;Snapshots/&amp;quot;&lt;br /&gt;
Filename=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 awk -v SetPath=&amp;quot;$NewPath&amp;quot; -v SnapPath=&amp;quot;$Snapshots&amp;quot; &#039;{if(index($0,&amp;quot;&amp;lt;HardDisk uuid=&amp;quot;) != 0){A=$3;split(A,B,&amp;quot;=&amp;quot;);&lt;br /&gt;
L=B[2];&lt;br /&gt;
 gsub(/\&amp;quot;/,&amp;quot;&amp;quot;,L);&lt;br /&gt;
  sub(/^.*\//,&amp;quot;&amp;quot;,L);&lt;br /&gt;
  sub(/^.*\\/,&amp;quot;&amp;quot;,L);&lt;br /&gt;
 if(index($3,&amp;quot;{&amp;quot;) != 0){SnapS=SnapPath}else{SnapS=&amp;quot;&amp;quot;};&lt;br /&gt;
  print $1&amp;quot; &amp;quot;$2&amp;quot; location=&amp;quot;\&amp;quot;SetPath SnapS L&amp;quot;\&amp;quot; &amp;quot;$4&amp;quot; &amp;quot;$5}&lt;br /&gt;
else print $0}&#039; &amp;quot;$Filename&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* If you will prepare virtual machine for use in Windows host then in the path name end you should use backslash \ instead of / .&lt;br /&gt;
* The script detects snapshots by looking for {{ic|{}} in the file name.&lt;br /&gt;
* To make it run on a new host you will need to add it first to the register by clicking on &#039;&#039;&#039;Machine -&amp;gt; Add...&#039;&#039;&#039; or use hotkeys Ctrl+A and then browse to &#039;&#039;.vbox&#039;&#039; file that contains configuration or use command line {{ic|VBoxManage registervm &#039;&#039;filename&#039;&#039;.vbox}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 仮想ディスクを複製して新しい UUID を割り当てる ===&lt;br /&gt;
&lt;br /&gt;
UUID は VirtualBox で広く使われています。仮想マシンと仮想ディスクにはそれぞれ異なる UUID が存在します。VirtualBox で仮想マシンを起動すると、VirtualBox は仮想マシンのインスタンスの全ての UUID を記録します。VirtualBox で登録されるアイテムを確認するには [http://www.virtualbox.org/manual/ch08.html#vboxmanage-list VBoxManage list] を参照してください。&lt;br /&gt;
&lt;br /&gt;
仮想ディスクファイルを手動でコピーして仮想ディスクを複製した場合、同じ仮想マシンでディスクを使うときは複製した仮想ディスクに新しい UUID を割り当てる必要があります。&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを使って新しい UUID を仮想ディスクに割り当てられます:&lt;br /&gt;
 $ VBoxManage internalcommands sethduuid &#039;&#039;/path/to/disk.vdi&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|[http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevdi VBoxManage clonehd] を使用する場合は手動で UUID を新しく割り当てる必要はありません。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|上記のコマンドは [[#VirtualBox によってサポートされているフォーマット|VirtualBox によってサポートされている仮想ディスクフォーマット]]を全てサポートしています。}}&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
高度な設定については、[[VirtualBox/ヒントとテクニック]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== VERR_ACCESS_DENIED ===&lt;br /&gt;
&lt;br /&gt;
windows ホストにある raw vmdk イメージにアクセスするには、管理者として VirtualBox GUI を起動してください。&lt;br /&gt;
&lt;br /&gt;
=== pacstrap スクリプトが動作しない ===&lt;br /&gt;
&lt;br /&gt;
[[#Arch Linux をゲストにする|Arch Linux をゲストにする]]とき新しいゲストで起動する前に &#039;&#039;pacstrap&#039;&#039; を使って [[#Guest Additions をインストール|Guest Additions をインストール]]する場合、&#039;&#039;pacstrap&#039;&#039; を実行する前に root で {{ic|umount -l /mnt/dev}} を実行する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== modprobe Exec フォーマットエラー ===&lt;br /&gt;
&lt;br /&gt;
あなたのシステムを最新状態にしてください:&lt;br /&gt;
 pacman -Syu&lt;br /&gt;
&lt;br /&gt;
=== VBOX_E_INVALID_OBJECT_STATE (0x80BB0007) ===&lt;br /&gt;
&lt;br /&gt;
これは VM を正常終了しないと発生することがあります。VM をアンロックしてください:&lt;br /&gt;
 VBoxManage controlvm nArch poweroff&lt;br /&gt;
&lt;br /&gt;
=== USB サブシステムがホスト側もしくはゲスト側で動かない ===&lt;br /&gt;
&lt;br /&gt;
時々 usb サブシステムが自動で検知されずホスト側の USB ドライブが表示されなかったりエラーが出ることがあります (例: Could not load the Host USB Proxy service: VERR_NOT_FOUND)。これはユーザーが &#039;&#039;&#039;vboxusers&#039;&#039;&#039; グループになっていても起こります。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=125785] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Ic|~/.bashrc}} に以下を加え再起動するか新しいインスタンスを開始すれば USB サブシステムが動作します。&lt;br /&gt;
&lt;br /&gt;
 VBOX_USB=usbfs&lt;br /&gt;
&lt;br /&gt;
また、あなたのユーザーを &#039;&#039;&#039;storage&#039;&#039;&#039; グループのメンバーに追加してください。&lt;br /&gt;
&lt;br /&gt;
=== ホストオンリーのネットワークインターフェースを作成できない ===&lt;br /&gt;
&lt;br /&gt;
Host-Only Network Adapter や Bridged Network Adapter を作るためには、カーネルモジュールの {{ic|vboxnetadp}} と {{ic|vboxnetflt}} をロードする必要があります。また、{{pkg|net-tools}} パッケージがインストールされているか確認してください。これらのカーネルモジュールを手動でロードするには:&lt;br /&gt;
&lt;br /&gt;
 # modprobe -a vboxnetadp vboxnetflt&lt;br /&gt;
&lt;br /&gt;
起動時に自動でロードするには {{ic|/etc/modules-load.d/virtualbox.conf}} にモジュール毎に新しい行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 vboxdrv&lt;br /&gt;
 vboxnetadp&lt;br /&gt;
 vboxnetflt&lt;br /&gt;
&lt;br /&gt;
{{Note|These used to be added to the {{ic|MODULES}} array in {{ic|/etc/rc.conf}}. This is now deprecated.}}&lt;br /&gt;
&lt;br /&gt;
このトピックについて詳しい情報が[https://bbs.archlinux.org/viewtopic.php?id=130581 ここ]にあります。&lt;br /&gt;
&lt;br /&gt;
=== WinXP: ビット深度を 16 より上げることができない ===&lt;br /&gt;
&lt;br /&gt;
16-ビット色深度で動作させている場合、アイコンの見た目が毛羽立ったりむらがでるかもしれません。しかし、色深度をもっと高く変えようとすると、システムの解像度が低くなってしまったり、もしくは全く深度が変えられないかもしれません。これを修正するには、{{ic|regedit}} を起動し次のキーをゲスト側の Windows XP レジストリに追加します:&lt;br /&gt;
&lt;br /&gt;
 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]&lt;br /&gt;
 &amp;quot;ColorDepth&amp;quot;=dword:00000004&lt;br /&gt;
&lt;br /&gt;
それからデスクトップのプロパティウィンドウから色深度を変えてください。何も怒らない場合、強制的に画面を再描写させてください（つまり、{{ic|Host+F}} で再描写するか、フルスクリーンにしてください）。&lt;br /&gt;
&lt;br /&gt;
=== マウント失敗によるスタートアップ時の問題 ===&lt;br /&gt;
&lt;br /&gt;
カーネルをアップグレードした後、[[systemd]] セットアップで問題が発生したら、システムを起動するときに &#039;&#039;init=/bin/bash&#039;&#039; (緊急シェルが動かない場合) を付ける必要があります。&lt;br /&gt;
&lt;br /&gt;
 root=/dev/mapper/vg_main-lv_root ro vga=792 resume=/dev/mapper/vg_main-lv_swap init=/bin/bash&lt;br /&gt;
&lt;br /&gt;
それから &#039;&#039;root&#039;&#039;-ファイルシステムを書き込み権限付きでマウントします:&lt;br /&gt;
&lt;br /&gt;
 # mount / -o remount,rw&lt;br /&gt;
&lt;br /&gt;
[[#ゲスト側の Arch Linux の共有フォルダ]] に合わせて /etc/fstab を変更します。そして bash シェルから systemd を exec します:&lt;br /&gt;
&lt;br /&gt;
 # exec /bin/systemd&lt;br /&gt;
&lt;br /&gt;
=== ゲスト側の Arch Linux でコピーアンドペーストが機能しない ===&lt;br /&gt;
&lt;br /&gt;
{{ic|virtualbox-guest-additions}} がバージョン {{ic|4.2.0-2}} にアップデートされてからホスト OS からゲスト側の Arch Linux へのコピーアンドペーストができなくなりました。{{ic|VBoxClient-all}} に &#039;&#039;root&#039;&#039; 権限が必要なったためだと思われます。以前のバージョンでは &#039;&#039;VBoxClient-all &amp;amp;&#039;&#039; を &#039;&#039;~/.xinitrc&#039;&#039; に追加しておけばコピーアンドペーストが機能していました。&#039;&#039;~/.xinitrc&#039;&#039; を {{ic|sudo VBoxClient-all &amp;amp;}} にして {{ic|, NOPASSWD: /usr/bin/VBoxClient-all}} を sudoers ファイルのあなたのユーザ名のところに追加してください。これでまた動くはずです。sudoers ファイルの行はこのようになるはずです:&lt;br /&gt;
&lt;br /&gt;
  # Allow sudo for user &#039;you&#039; and let him run VBoxClient-all without requiring a password&lt;br /&gt;
  you ALL = PASSWD: ALL, NOPASSWD: /usr/bin/VBoxClient-all&lt;br /&gt;
&lt;br /&gt;
{{Note|sudoers を編集する時は {{ic|visudo}} を使って下さい。保存するときに構文エラーをチェックします。}}&lt;br /&gt;
&lt;br /&gt;
=== ゲスト OS でシリアルポートを使う ===&lt;br /&gt;
シリアルポートのパーティションを確認してください:&lt;br /&gt;
 $ /bin/ls -l /dev/ttyS*&lt;br /&gt;
 crw-rw---- 1 root uucp 4, 64 Feb  3 09:12 /dev/ttyS0&lt;br /&gt;
 crw-rw---- 1 root uucp 4, 65 Feb  3 09:12 /dev/ttyS1&lt;br /&gt;
 crw-rw---- 1 root uucp 4, 66 Feb  3 09:12 /dev/ttyS2&lt;br /&gt;
 crw-rw---- 1 root uucp 4, 67 Feb  3 09:12 /dev/ttyS3&lt;br /&gt;
&lt;br /&gt;
それからユーザーを &#039;&#039;&#039;uucp&#039;&#039;&#039; グループに追加して:&lt;br /&gt;
 # gpasswd -a $USER uucp &lt;br /&gt;
ログインしなおして下さい。&lt;br /&gt;
&lt;br /&gt;
=== Windows 8.x Error Code 0x000000C4===&lt;br /&gt;
&lt;br /&gt;
OS Type で Win 8 を選んだのに、起動時に以下のエラーコードが表示される場合、{{ic|CMPXCHG16B}} CPU 命令を有効化してみてください:&lt;br /&gt;
&lt;br /&gt;
 $ vboxmanage setextradata &#039;&#039;virtual_machine_name&#039;&#039; VBoxInternal/CPUM/CMPXCHG16B 1&lt;br /&gt;
&lt;br /&gt;
=== Windows 8, 8.1, 10 がインストール・起動できない、あるいは &amp;quot;ERR_DISK_FULL&amp;quot; エラーが表示される ===&lt;br /&gt;
&#039;&#039;Settings &amp;gt; Storage &amp;gt; Controller:SATA&#039;&#039; から &amp;quot;Use Host I/O Cache&amp;quot; にチェックを入れて VM の設定を更新してください。&lt;br /&gt;
&lt;br /&gt;
=== Linux ゲストの音が遅い/早い ===&lt;br /&gt;
&lt;br /&gt;
Linux カーネルの AC97 ドライバーは Virtual Box の中で実行されたときに、クロック設定を間違って認識することがあり、それによって音が遅くなったり早回しになったりします。この問題を修正するには、以下の内容で {{ic|/etc/modprobe.d}} にファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
 options snd-intel8x0 ac97_clock=48000&lt;br /&gt;
&lt;br /&gt;
=== Xorg の起動後にゲストがフリーズする ===&lt;br /&gt;
&lt;br /&gt;
間違ったドライバーを使っている、あるいはドライバーが存在しない場合、Xorg の起動後にゲストはフリーズします。[https://bbs.archlinux.org/viewtopic.php?pid=1167838] や [https://bbs.archlinux.org/viewtopic.php?id=156079] を見てください。&#039;&#039;Settings &amp;gt; Display&#039;&#039; から 3D アクセラレーションを無効化して、[[Xorg]] ドライバーが全てインストールされていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;NS_ERROR_FAILURE&amp;quot; が表示されメニューアイテムが表示されない ===&lt;br /&gt;
&lt;br /&gt;
仮想マシンの最初の起動時に以下のエラーメッセージが表示される場合:&lt;br /&gt;
&lt;br /&gt;
{{bc|Failed to open a session for the virtual machine debian.&lt;br /&gt;
Could not open the medium &#039;/home/.../VirtualBox VMs/debian/debian.qcow&#039;.&lt;br /&gt;
QCow: Reading the L1 table for image &#039;/home/.../VirtualBox VMs/debian/debian.qcow&#039; failed (VERR_EOF).&lt;br /&gt;
VD: error VERR_EOF opening image file &#039;/home/.../VirtualBox VMs/debian/debian.qcow&#039; (VERR_EOF).&lt;br /&gt;
&lt;br /&gt;
Result Code: &lt;br /&gt;
NS_ERROR_FAILURE (0x80004005)&lt;br /&gt;
Component: &lt;br /&gt;
Medium&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
VirtualBox を終了して新しいマシンのファイルを全て削除して、virtualbox の設定ファイルから {{ic|MachineRegistry}} メニュー (あるいはあなたが作成した問題のマシン) の最後の行を削除してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/VirtualBox/VirtualBox.xml|2=&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;MachineRegistry&amp;gt;&lt;br /&gt;
  &amp;lt;MachineEntry uuid=&amp;quot;{00000000-0000-0000-0000-000000000000}&amp;quot; src=&amp;quot;/home/void/VirtualBox VMs/debian/debian.vbox&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;MachineEntry uuid=&amp;quot;{00000000-0000-0000-0000-000000000000}&amp;quot; src=&amp;quot;/home/void/VirtualBox VMs/ubuntu/ubuntu.vbox&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;strike&amp;gt;&amp;lt;MachineEntry uuid=&amp;quot;{00000000-0000-0000-0000-000000000000}&amp;quot; src=&amp;quot;/home/void/VirtualBox VMs/lastvmcausingproblems/lastvmcausingproblems.qcow&amp;quot;/&amp;gt;&amp;lt;/strike&amp;gt;&lt;br /&gt;
&amp;lt;/MachineRegistry&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
新しい仮想ディスクを作成するときに &#039;&#039;QCOW&#039;&#039;/&#039;&#039;QCOW2&#039;&#039;/&#039;&#039;QED&#039;&#039; ディスク形式を選択すると時々発生します。&lt;br /&gt;
&lt;br /&gt;
=== USB モデム ===&lt;br /&gt;
&lt;br /&gt;
USB モデムをゲスト OS で使っている場合、ゲスト OS を終了するとホスト環境からモデムが使えなくなることがあります。{{ic|VBoxSVC}} を終了・再起動すれば問題は解決します。&lt;br /&gt;
&lt;br /&gt;
=== Windows ゲストで &amp;quot;The specified path does not exist. Check the path and then try again.&amp;quot; エラー ===&lt;br /&gt;
&lt;br /&gt;
管理者権限を必要とする .exe ファイルを Windows ゲストの共有フォルダから実行するとエラーメッセージが発生します。詳しくは [https://www.virtualbox.org/ticket/5732 バグレポート] を見てください。&lt;br /&gt;
&lt;br /&gt;
複数の対処方法があります:&lt;br /&gt;
&lt;br /&gt;
# Control Panel -&amp;gt; Action Center -&amp;gt; &amp;quot;Change User Account Control settings&amp;quot; の左側 -&amp;gt; スライダーを &amp;quot;Never notify&amp;quot; に設定 -&amp;gt; OK して再起動することで UAC を無効化する&lt;br /&gt;
# 共有フォルダからゲストのフォルダにファイルをコピーしてから実行する&lt;br /&gt;
&lt;br /&gt;
インターネット上には信頼されるサイトのリストに VBOXSVR を追加するように書かれていることもありますが、その方法は Windows 7 以上では上手く行きません。&lt;br /&gt;
&lt;br /&gt;
=== 64ビット OS のクライアントオプションが表示されない ===&lt;br /&gt;
&lt;br /&gt;
VM クライアントを起動したときに、64ビットオプションが使えない場合、CPU の仮想化機能 ({{ic|VT-x}}) が BIOS で有効になっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
Windows をホストとして使っている場合、Hyper-V を無効化する必要があります。Hyper-V が有効になっていると VirtualBox が VT-x を使えなくなります [https://www.virtualbox.org/ticket/12350]。&lt;br /&gt;
&lt;br /&gt;
=== 仮想マシンが起動するとホスト OS がフリーズする ===&lt;br /&gt;
&lt;br /&gt;
原因と解決方法:&lt;br /&gt;
* SMAP&lt;br /&gt;
SMAP が有効になっているカーネルでは Intel Broadwell の大抵のチップセットで動作しないという既知の問題があります。問題は調査中ですが、問題を解決するとうたわれている様々な vboxhost モジュールが世に出回っています。これを書いている時点では、100% 完全に解決できるという方法は、[[カーネルパラメータ|カーネルブートコマンドライン]]に {{ic|nosmap}} オプションを追加して SMAP を無効にする方法しかありません。&lt;br /&gt;
* ハードウェア仮想化&lt;br /&gt;
ハードウェア仮想化 (VT-x/AMD-V) を無効化することで問題が解決する場合があります。&lt;br /&gt;
* 様々なカーネルバグ&lt;br /&gt;
** Fuse でマウントしたパーティション (ntfs など) [https://bbs.archlinux.org/viewtopic.php?id=185841], [https://bugzilla.kernel.org/show_bug.cgi?id=82951#c12]&lt;br /&gt;
&lt;br /&gt;
通常、上記のような問題は VirtualBox や Linux カーネルのアップデートで発生します。前のバージョンにダウングレードすることで解決するかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== 起動時に終了コード 1 (0x1) で仮想マシンが終了してしまう ===&lt;br /&gt;
&lt;br /&gt;
仮想マシンを起動すると、以下のようなエラーメッセージが表示される場合:&lt;br /&gt;
&lt;br /&gt;
{{bc|The virtual machine has terminated unexpectedly during startup with exit code 1 (0x1)&lt;br /&gt;
NS_ERROR_FAILURE 0x80004005&lt;br /&gt;
Component: MachineWrap&lt;br /&gt;
Interface: IMachine}}&lt;br /&gt;
&lt;br /&gt;
上記の問題は {{Pkg|virtualbox}} や {{Pkg|virtualbox-host-modules}}{{Broken package link|置換パッケージ: {{Pkg|virtualbox-host-modules-arch}}}} パッケージのアップデートによって引き起こされることがあります。{{ic|vboxdrv}} モジュールをリロードしてください:&lt;br /&gt;
&lt;br /&gt;
{{bc|# modprobe -r vboxdrv&lt;br /&gt;
# modprobe vboxdrv&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ゲストでアナログマイクロフォンが使えない ===&lt;br /&gt;
&lt;br /&gt;
アナログマイクロフォンからの音声入力がホストでは上手く出来るのに、ゲストでは音声が録音できない場合、ホストに [[PulseAudio]] などの[[サウンドシステム#サウンドサーバー|サウンドサーバー]]をインストールすることで問題は解決します。&lt;br /&gt;
&lt;br /&gt;
==== アップグレード後に音声入力 (マイクロフォン) が使えなくなった ====&lt;br /&gt;
&lt;br /&gt;
5.1.x バージョンには音声入力まわりに問題が存在しています [https://forums.virtualbox.org/viewtopic.php?f=7&amp;amp;t=78797]。&lt;br /&gt;
&lt;br /&gt;
VirtualBox を[[ダウングレード]]することで問題は解決します。&lt;br /&gt;
&lt;br /&gt;
=== フルスクリーンモードでゲストの画面が表示されない ===&lt;br /&gt;
ウィンドウマネージャによっては (例: [[i3]])、オーバーレイバーが原因で VirtualBox のフルスクリーンモードで問題が発生します。この問題を回避するには、&amp;quot;Guest Settings --&amp;gt; User Interface --&amp;gt; Mini ToolBar&amp;quot; から &amp;quot;Show in Full-screen/Seamless&amp;quot; オプションを無効にしてください。詳しくは [https://www.virtualbox.org/ticket/14323 上流のバグレポート] を参照。&lt;br /&gt;
&lt;br /&gt;
=== Failed to insert module ===&lt;br /&gt;
&lt;br /&gt;
モジュールをロードしようとすると以下のような問題が発生する場合:&lt;br /&gt;
 Failed to insert &#039;vboxdrv&#039;: Required key not available&lt;br /&gt;
モジュールが署名されていること、あるいはカーネルコンフィグで {{ic|CONFIG_MODULE_SIG_FORCE}} が無効になっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
== 外部リンク ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.virtualbox.org/manual/UserManual.html VirtualBox User Manual]&lt;/div&gt;</summary>
		<author><name>J8takagi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89&amp;diff=13454</id>
		<title>インストールガイド</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89&amp;diff=13454"/>
		<updated>2018-09-27T05:41:32Z</updated>

		<summary type="html">&lt;p&gt;J8takagi: fstabの生成についての記述を編集&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Arch について]]&lt;br /&gt;
[[Category:Arch の入手とインストール]]&lt;br /&gt;
[[ar:Installation guide]]&lt;br /&gt;
[[bg:Installation guide]]&lt;br /&gt;
[[cs:Installation guide]]&lt;br /&gt;
[[da:Installation guide]]&lt;br /&gt;
[[de:Arch Install Scripts]]&lt;br /&gt;
[[el:Installation guide]]&lt;br /&gt;
[[en:Installation guide]]&lt;br /&gt;
[[es:Installation guide]]&lt;br /&gt;
[[fi:Installation guide]]&lt;br /&gt;
[[fr:Arch install scripts]]&lt;br /&gt;
[[hr:Installation guide]]&lt;br /&gt;
[[hu:Installation guide]]&lt;br /&gt;
[[id:Installation guide]]&lt;br /&gt;
[[it:Installation guide]]&lt;br /&gt;
[[ko:Installation guide]]&lt;br /&gt;
[[lt:Installation guide]]&lt;br /&gt;
[[nl:Installation guide]]&lt;br /&gt;
[[pl:Installation guide]]&lt;br /&gt;
[[pt:Installation guide]]&lt;br /&gt;
[[ro:Ghid de instalare]]&lt;br /&gt;
[[ru:Installation guide]]&lt;br /&gt;
[[sk:Installation guide]]&lt;br /&gt;
[[sr:Installation guide]]&lt;br /&gt;
[[th:Installation guide]]&lt;br /&gt;
[[tr:Installation guide]]&lt;br /&gt;
[[zh-hans:Installation guide]]&lt;br /&gt;
[[zh-hant:Installation guide]]&lt;br /&gt;
このドキュメントは、[https://projects.archlinux.org/arch-install-scripts.git/ Arch Install Scripts] を使って [[Arch Linux]] をインストールする過程を案内するものです。インストールの前に、[[FAQ]] に目を通しておくことをお勧めします。使用されている用語については、[[ヘルプ:読み方]]を見てください。コードの例にはプレースホルダ ({{ic|&#039;&#039;斜体&#039;&#039;}} の文字) を含んでいる場合があり、手動で置き換える必要があります。&lt;br /&gt;
&lt;br /&gt;
コミュニティによって管理されている [[メインページ|Arch wiki]] には様々な情報が記載されており、問題が起こった時はまず wiki を参照してください (インストール環境からは [[ELinks]] で閲覧できます)。答えが見つけられない場合には、[https://slack.archlinux.jp/ Slack] や、[https://bbs.archlinux.jp/ フォーラム] を使って下さい。また、使い慣れていないコマンドは {{ic|man &#039;&#039;コマンド&#039;&#039;}} で man ページを参照しましょう。&lt;br /&gt;
&lt;br /&gt;
Arch Linux は 512 MB 以上のメモリが搭載された  [[wikipedia:ja:x64|x86_64]] 互換のマシンで動作します。{{Grp|base}} グループに含まれている全てのパッケージをインストールしても、使用するディスク容量は 800 MB 以下です。インストールする際はリモートリポジトリからパッケージを取得する必要があるため、インターネットに接続できる環境が必要です。&lt;br /&gt;
&lt;br /&gt;
==インストールの準備==&lt;br /&gt;
[[:カテゴリ:Arch の入手とインストール]]に書かれているように Arch Linux の ISO を [https://www.archlinux.jp/download/ Arch Linux のダウンロードページ] からダウンロードしてください。インストールメディアを起動すると root ユーザーでログインされ、[[Zsh]] のシェルプロンプトが表示されます。{{ic|Alt+&#039;&#039;arrow&#039;&#039;}} [[キーボードショートカット|ショートカット]]を使用することでコンソールを切り替えることができます。設定ファイルを[[ヘルプ:読み方#追加, 作成, 編集 そして source|編集]]するときは [[nano#nano の使用方法|nano]], &#039;&#039;vi&#039;&#039;, [[vim#使用方法|vim]] が使えます。&lt;br /&gt;
&lt;br /&gt;
ISO にはパッケージは含まれておらず、インターネットを介して Arch Linux をインストールします。したがって、インストールを行うにはネットワークに接続する必要があります。&lt;br /&gt;
&lt;br /&gt;
イメージファイルは CD に焼いて、ISO ファイルとしてマウントするか、[[USB インストールメディア|USB スティックに直接書き込み]]ます。これは新しいインストールの時だけに必要です。既にインストール済みの Arch Linux は {{ic|pacman -Syu}} でいつでもアップデートできます。&lt;br /&gt;
&lt;br /&gt;
=== キーボードレイアウト ===&lt;br /&gt;
&lt;br /&gt;
デフォルトのキーボードレイアウトは [[Wikipedia:File:KB United States-NoAltGr.svg|US]] キーボードです。利用可能なキーマップは以下のコマンドで確認できます:&lt;br /&gt;
&lt;br /&gt;
 # ls /usr/share/kbd/keymaps/**/*.map.gz&lt;br /&gt;
&lt;br /&gt;
レイアウトを変更するには使用したいファイルの名前を指定して {{man|1|loadkeys}} を実行してください。パスや拡張子は省略可能です。例えば、日本語キーボードレイアウトに設定するには:&lt;br /&gt;
&lt;br /&gt;
 # loadkeys jp106&lt;br /&gt;
&lt;br /&gt;
[[フォント#コンソールフォント|コンソールフォント]]は {{ic|/usr/share/kbd/consolefonts/}} に存在し、{{man|8|setfont}} で設定ができます。&lt;br /&gt;
&lt;br /&gt;
=== 起動モードの確認 ===&lt;br /&gt;
&lt;br /&gt;
[[UEFI]] マザーボードで UEFI モードが有効になっている場合、[[Archiso]] は [[systemd-boot]] によって Arch Linux を起動します。[[UEFI]] 環境ではインストール手順が多少異なります。[[efivars]] をチェックして UEFI モードで起動しているかどうか確認してください:&lt;br /&gt;
&lt;br /&gt;
 # ls /sys/firmware/efi/efivars&lt;br /&gt;
&lt;br /&gt;
ディレクトリが存在しない場合、BIOS (または CSM) モードで起動しています。詳しくは使用しているマザーボードのマニュアルを読んでください。&lt;br /&gt;
&lt;br /&gt;
=== パーティション ===&lt;br /&gt;
&lt;br /&gt;
ライブ環境によって認識されたディスクには {{ic|/dev/sda}} や {{ic|/dev/nvme0n1}} などのように&#039;&#039;ブロックデバイス&#039;&#039;が割り当てられます。デバイスを確認するには、[[lsblk]] または [[fdisk]] を使ってください:&lt;br /&gt;
&lt;br /&gt;
 # fdisk -l&lt;br /&gt;
&lt;br /&gt;
{{ic|rom}}, {{ic|loop}}, {{ic|airoot}} などのデバイスは無視してかまいません。&lt;br /&gt;
&lt;br /&gt;
Arch Linux をインストールするデバイスには以下のパーティションが必要です:&lt;br /&gt;
&lt;br /&gt;
* ルートディレクトリ {{ic|/}} のパーティション。&lt;br /&gt;
* [[UEFI]] が有効になっている場合、[[EFI システムパーティション]]。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[スワップ|スワップ領域]]はスワップパーティションとして用意することも[[スワップ#スワップファイル|スワップファイル]]で設定することもできます。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;パーティションテーブル&#039;&#039;を変更するときは [[fdisk]] や [[parted]] を使います:&lt;br /&gt;
&lt;br /&gt;
 # fdisk /dev/&#039;&#039;sda&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[パーティショニング]]を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[LVM]], [[ディスク暗号化]], [[RAID]] などを使う場合は、この段階で用意をします。}}&lt;br /&gt;
&lt;br /&gt;
=== パーティションのフォーマット ===&lt;br /&gt;
&lt;br /&gt;
パーティションを作成したら、適切な[[ファイルシステム]]でフォーマットする必要があります。例えば、[[ext4]] で {{ic|/dev/&#039;&#039;sda1&#039;&#039;}} のルートパーティションをフォーマットするには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.&#039;&#039;ext4&#039;&#039; /dev/&#039;&#039;sda1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
スワップ用のパーティション (例: {{ic|/dev/&#039;&#039;sda3&#039;&#039;}}) を作成した場合は、&#039;&#039;mkswap&#039;&#039; で初期化してください:&lt;br /&gt;
&lt;br /&gt;
 # mkswap /dev/&#039;&#039;sda3&#039;&#039;&lt;br /&gt;
 # swapon /dev/&#039;&#039;sda3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[ファイルシステム#デバイスのフォーマット|ファイルシステム]]や[[スワップ]]を参照して下さい。&lt;br /&gt;
&lt;br /&gt;
=== パーティションのマウント ===&lt;br /&gt;
ルートパーティションのファイルシステムを {{ic|/mnt}} に[[マウント]]してください。例:&lt;br /&gt;
&lt;br /&gt;
 # mount /dev/&#039;&#039;sda1&#039;&#039; /mnt&lt;br /&gt;
&lt;br /&gt;
他のパーティションについては、それぞれマウントポイントを作成してマウントしてください。例:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /mnt/&#039;&#039;boot&#039;&#039;&lt;br /&gt;
 # mount /dev/&#039;&#039;sda2&#039;&#039; /mnt/&#039;&#039;boot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
後の[[#fstabの生成|fstabの生成]]で実行するgenfstabは、マウントされているファイルシステムやスワップ領域を認識します。&lt;br /&gt;
&lt;br /&gt;
=== インターネットへの接続 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;有線&#039;&#039;&#039;接続の場合、[[dhcpcd]] デーモンが起動時に [https://git.archlinux.org/archiso.git/tree/configs/releng/airootfs/etc/udev/rules.d/81-dhcpcd.rules 有効化] され自動的に接続を開始します。[[ping]] を使って接続が確立されているかどうか確かめてください:&lt;br /&gt;
&lt;br /&gt;
 # ping archlinux.jp&lt;br /&gt;
&lt;br /&gt;
接続が確認できない場合、{{ic|systemctl stop dhcpcd@&#039;&#039;interface&#039;&#039;}} で &#039;&#039;dhcpcd&#039;&#039; サービスを[[systemd#ユニットを使う|停止]]して[[ネットワーク設定#デバイスドライバ|ネットワーク設定]]を参照してください。{{ic|&#039;&#039;interface&#039;&#039;}} の名前は[[Wikipedia:Command-line_completion|タブ補完]]で入力できます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;無線&#039;&#039;&#039;接続の場合 iw, wpa_supplicant, [[netctl#ワイヤレス .28WPA-PSK.29|netctl]] を使って接続できます。[[ワイヤレス設定]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== システムクロックの更新 ===&lt;br /&gt;
[[systemd-timesyncd]] を使ってシステムクロックを正確にしてください:&lt;br /&gt;
 # timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
サービスの状態は {{ic|timedatectl status}} で確認できます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== ミラーの選択 ===&lt;br /&gt;
{{ic|/etc/pacman.d/mirrorlist}} を編集して[[ミラー]]を選択してください。位置的に一番近いミラーがベストです。設定したミラーリストが {{ic|pacstrap}} によってインストール時にコピーされます。&lt;br /&gt;
&lt;br /&gt;
=== ベースシステムのインストール ===&lt;br /&gt;
[https://projects.archlinux.org/arch-install-scripts.git/tree/pacstrap.in pacstrap] スクリプトを使って、{{Grp|base}} グループをインストールします。[[Arch User Repository|AUR]] からソフトウェアをコンパイルしたり [[Arch Build System|ABS]] を使うつもりであれば、{{Grp|base-devel}} パッケージグループもインストールするべきです。&lt;br /&gt;
 &lt;br /&gt;
 # pacstrap /mnt base base-devel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;base&#039;&#039; グループにはライブ環境に存在する全てのツールが含まれているわけではありません。{{Pkg|btrfs-progs}} や無線ファームウェアなどは別にインストールする必要があります。[https://projects.archlinux.org/archiso.git/tree/configs/releng/packages.both packages.both] を見てください。&lt;br /&gt;
&lt;br /&gt;
必要に応じて、上のコマンドにパッケージの名前を追加 (スペースで区切る) すれば、他のパッケージやグループも[[インストール]]できます。また、[[#chroot|chroot]] を実行した後に [[pacman]] コマンドでインストールすることも可能です。&lt;br /&gt;
&lt;br /&gt;
== システムの設定 ==&lt;br /&gt;
&lt;br /&gt;
=== fstabの生成 ===&lt;br /&gt;
&lt;br /&gt;
[https://git.archlinux.org/arch-install-scripts.git/tree/genfstab.in genfstab]コマンドを実行して [[fstab]] を生成してください。UUIDを使う場合は{{ic|-U}}オプション、ラベルを使う場合は{{ic|-L}}オプションを、それぞれ加えます。&lt;br /&gt;
 # genfstab -U /mnt &amp;gt;&amp;gt; /mnt/etc/fstab&lt;br /&gt;
&lt;br /&gt;
作成された {{ic|/mnt/etc/fstab}} を確認して、問題がないことをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
=== chroot ===&lt;br /&gt;
&lt;br /&gt;
新しくインストールしたシステムに [[Change Root|chroot]]:&lt;br /&gt;
 # arch-chroot /mnt&lt;br /&gt;
&lt;br /&gt;
=== タイムゾーン ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/localtime}} から {{ic|/usr/share/zoneinfo/Zone/SubZone}} にシンボリックリンクを張って下さい。{{ic|Zone}} と {{ic|Subzone}} はあなたのタイムゾーンに合わせて変更してください。例:&lt;br /&gt;
 # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime&lt;br /&gt;
&lt;br /&gt;
{{man|8|hwclock}} を実行して {{ic|/etc/adjtime}} を生成してください。ハードウェアクロックが UTC に設定されている場合、マシンにインストールされている他のオペレーティングシステムも UTC に[[時刻#時刻系|設定]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
 # hwclock --systohc --&#039;&#039;utc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[時刻#時刻系]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ロケール ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/locale.gen}} を編集して使用する[[ロケール]] (例: {{ic|en_US.UTF-8 UTF-8}} と {{ic|ja_JP.UTF-8 UTF-8}}) をアンコメントし、次のコマンドを実行してください:&lt;br /&gt;
 # locale-gen&lt;br /&gt;
[[ロケール#システム全体のロケールを設定する|ロケール]]を {{ic|/etc/locale.conf}} で設定します:&lt;br /&gt;
 # echo LANG=&#039;&#039;en_US.UTF-8&#039;&#039; &amp;gt; /etc/locale.conf&lt;br /&gt;
必要であれば、{{man|5|vconsole.conf}} で[[コンソールでのキーボード設定|コンソールキーマップ]]と[[フォント#コンソールフォント|フォント]]を設定します:&lt;br /&gt;
 # echo KEYMAP=&#039;&#039;jp106&#039;&#039; &amp;gt; /etc/vconsole.conf&lt;br /&gt;
&lt;br /&gt;
=== ホストネーム ===&lt;br /&gt;
&lt;br /&gt;
あなたのコンピュータの名前を {{ic|/etc/hostname}} に書き込んで適切な[[ホストネーム]]を設定してください:&lt;br /&gt;
 # echo &#039;&#039;myhostname&#039;&#039; &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
同じ名前を {{ic|/etc/hosts}} にも記述します:&lt;br /&gt;
{{hc|/etc/hosts|&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
::1		localhost&lt;br /&gt;
127.0.1.1	&#039;&#039;myhostname&#039;&#039;.localdomain	&#039;&#039;myhostname&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
システムに永続的な IP アドレスを割り当てる場合、{{ic|127.0.1.1}} の代わりにそのアドレスを指定してください。&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク設定 ===&lt;br /&gt;
&lt;br /&gt;
新しくインストールされた環境ではネットワーク接続がデフォルトで有効になっていません。もう一度ネットワークの設定を行なってください。[[ネットワーク設定]]を見てください。&lt;br /&gt;
&lt;br /&gt;
[[ワイヤレス設定]]の場合 {{Pkg|iw}}, {{Pkg|wpa_supplicant}}, {{Pkg|dialog}} パッケージや[[ワイヤレス設定#ドライバー・ファームウェアをインストールする|ファームウェアパッケージ]]のインストールが必要です。&lt;br /&gt;
&lt;br /&gt;
=== Initramfs ===&lt;br /&gt;
&lt;br /&gt;
必要があれば {{ic|/etc/mkinitcpio.conf}} を設定 ([[mkinitcpio]]) し、イニシャル RAM ディスクを生成:&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
&lt;br /&gt;
=== Root パスワード ===&lt;br /&gt;
&lt;br /&gt;
{{ic|passwd}} で root パスワードを設定します:&lt;br /&gt;
 # passwd&lt;br /&gt;
&lt;br /&gt;
=== ブートローダー ===&lt;br /&gt;
Arch Linux を起動するために Linux に対応している[[ブートローダー]]を選択してインストールする必要があります。ブートローダーは、[[#起動モードの確認|起動モード]]がUEFIの場合は [[systemd-boot]]や[[GRUB]]、BIOSの場合はGRUBが多く選択されています。&lt;br /&gt;
&lt;br /&gt;
Intel の CPU を使っている場合は {{Pkg|intel-ucode}} パッケージをインストールして、[[マイクロコード#Intel のマイクロコードのアップデートを有効にする|マイクロコードのアップデートを有効]]にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 再起動 ===&lt;br /&gt;
chroot 環境から抜けるには、{{ic|exit}} と打つか、{{ic|Ctrl+D}} を押します。&lt;br /&gt;
&lt;br /&gt;
また、任意で {{ic|/mnt}} にマウントしたパーティションをアンマウントします: {{ic|umount -R /mnt}}。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|reboot}} と入力してマシンを再起動してください。インストールメディアを取り除いて、root アカウントで新しいシステムにログインします。&lt;br /&gt;
&lt;br /&gt;
== インストール後 ==&lt;br /&gt;
&lt;br /&gt;
システム管理の方法やインストール後のチュートリアルは[[一般的な推奨事項]]を参照 (グラフィカルユーザーインターフェイス、サウンド、タッチパッドなど)。&lt;br /&gt;
&lt;br /&gt;
あなたの興味を引くであろうアプリケーションの一覧は、[[アプリケーション一覧]]を参照。&lt;/div&gt;</summary>
		<author><name>J8takagi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89&amp;diff=13452</id>
		<title>インストールガイド</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89&amp;diff=13452"/>
		<updated>2018-09-26T23:30:56Z</updated>

		<summary type="html">&lt;p&gt;J8takagi: /* ブートローダー */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Arch について]]&lt;br /&gt;
[[Category:Arch の入手とインストール]]&lt;br /&gt;
[[ar:Installation guide]]&lt;br /&gt;
[[bg:Installation guide]]&lt;br /&gt;
[[cs:Installation guide]]&lt;br /&gt;
[[da:Installation guide]]&lt;br /&gt;
[[de:Arch Install Scripts]]&lt;br /&gt;
[[el:Installation guide]]&lt;br /&gt;
[[en:Installation guide]]&lt;br /&gt;
[[es:Installation guide]]&lt;br /&gt;
[[fi:Installation guide]]&lt;br /&gt;
[[fr:Arch install scripts]]&lt;br /&gt;
[[hr:Installation guide]]&lt;br /&gt;
[[hu:Installation guide]]&lt;br /&gt;
[[id:Installation guide]]&lt;br /&gt;
[[it:Installation guide]]&lt;br /&gt;
[[ko:Installation guide]]&lt;br /&gt;
[[lt:Installation guide]]&lt;br /&gt;
[[nl:Installation guide]]&lt;br /&gt;
[[pl:Installation guide]]&lt;br /&gt;
[[pt:Installation guide]]&lt;br /&gt;
[[ro:Ghid de instalare]]&lt;br /&gt;
[[ru:Installation guide]]&lt;br /&gt;
[[sk:Installation guide]]&lt;br /&gt;
[[sr:Installation guide]]&lt;br /&gt;
[[th:Installation guide]]&lt;br /&gt;
[[tr:Installation guide]]&lt;br /&gt;
[[zh-hans:Installation guide]]&lt;br /&gt;
[[zh-hant:Installation guide]]&lt;br /&gt;
このドキュメントは、[https://projects.archlinux.org/arch-install-scripts.git/ Arch Install Scripts] を使って [[Arch Linux]] をインストールする過程を案内するものです。インストールの前に、[[FAQ]] に目を通しておくことをお勧めします。使用されている用語については、[[ヘルプ:読み方]]を見てください。コードの例にはプレースホルダ ({{ic|&#039;&#039;斜体&#039;&#039;}} の文字) を含んでいる場合があり、手動で置き換える必要があります。&lt;br /&gt;
&lt;br /&gt;
コミュニティによって管理されている [[メインページ|Arch wiki]] には様々な情報が記載されており、問題が起こった時はまず wiki を参照してください (インストール環境からは [[ELinks]] で閲覧できます)。答えが見つけられない場合には、[https://slack.archlinux.jp/ Slack] や、[https://bbs.archlinux.jp/ フォーラム] を使って下さい。また、使い慣れていないコマンドは {{ic|man &#039;&#039;コマンド&#039;&#039;}} で man ページを参照しましょう。&lt;br /&gt;
&lt;br /&gt;
Arch Linux は 512 MB 以上のメモリが搭載された  [[wikipedia:ja:x64|x86_64]] 互換のマシンで動作します。{{Grp|base}} グループに含まれている全てのパッケージをインストールしても、使用するディスク容量は 800 MB 以下です。インストールする際はリモートリポジトリからパッケージを取得する必要があるため、インターネットに接続できる環境が必要です。&lt;br /&gt;
&lt;br /&gt;
==インストールの準備==&lt;br /&gt;
[[:カテゴリ:Arch の入手とインストール]]に書かれているように Arch Linux の ISO を [https://www.archlinux.jp/download/ Arch Linux のダウンロードページ] からダウンロードしてください。インストールメディアを起動すると root ユーザーでログインされ、[[Zsh]] のシェルプロンプトが表示されます。{{ic|Alt+&#039;&#039;arrow&#039;&#039;}} [[キーボードショートカット|ショートカット]]を使用することでコンソールを切り替えることができます。設定ファイルを[[ヘルプ:読み方#追加, 作成, 編集 そして source|編集]]するときは [[nano#nano の使用方法|nano]], &#039;&#039;vi&#039;&#039;, [[vim#使用方法|vim]] が使えます。&lt;br /&gt;
&lt;br /&gt;
ISO にはパッケージは含まれておらず、インターネットを介して Arch Linux をインストールします。したがって、インストールを行うにはネットワークに接続する必要があります。&lt;br /&gt;
&lt;br /&gt;
イメージファイルは CD に焼いて、ISO ファイルとしてマウントするか、[[USB インストールメディア|USB スティックに直接書き込み]]ます。これは新しいインストールの時だけに必要です。既にインストール済みの Arch Linux は {{ic|pacman -Syu}} でいつでもアップデートできます。&lt;br /&gt;
&lt;br /&gt;
=== キーボードレイアウト ===&lt;br /&gt;
&lt;br /&gt;
デフォルトのキーボードレイアウトは [[Wikipedia:File:KB United States-NoAltGr.svg|US]] キーボードです。利用可能なキーマップは以下のコマンドで確認できます:&lt;br /&gt;
&lt;br /&gt;
 # ls /usr/share/kbd/keymaps/**/*.map.gz&lt;br /&gt;
&lt;br /&gt;
レイアウトを変更するには使用したいファイルの名前を指定して {{man|1|loadkeys}} を実行してください。パスや拡張子は省略可能です。例えば、日本語キーボードレイアウトに設定するには:&lt;br /&gt;
&lt;br /&gt;
 # loadkeys jp106&lt;br /&gt;
&lt;br /&gt;
[[フォント#コンソールフォント|コンソールフォント]]は {{ic|/usr/share/kbd/consolefonts/}} に存在し、{{man|8|setfont}} で設定ができます。&lt;br /&gt;
&lt;br /&gt;
=== 起動モードの確認 ===&lt;br /&gt;
&lt;br /&gt;
[[UEFI]] マザーボードで UEFI モードが有効になっている場合、[[Archiso]] は [[systemd-boot]] によって Arch Linux を起動します。[[UEFI]] 環境ではインストール手順が多少異なります。[[efivars]] をチェックして UEFI モードで起動しているかどうか確認してください:&lt;br /&gt;
&lt;br /&gt;
 # ls /sys/firmware/efi/efivars&lt;br /&gt;
&lt;br /&gt;
ディレクトリが存在しない場合、BIOS (または CSM) モードで起動しています。詳しくは使用しているマザーボードのマニュアルを読んでください。&lt;br /&gt;
&lt;br /&gt;
=== パーティション ===&lt;br /&gt;
&lt;br /&gt;
ライブ環境によって認識されたディスクには {{ic|/dev/sda}} や {{ic|/dev/nvme0n1}} などのように&#039;&#039;ブロックデバイス&#039;&#039;が割り当てられます。デバイスを確認するには、[[lsblk]] または [[fdisk]] を使ってください:&lt;br /&gt;
&lt;br /&gt;
 # fdisk -l&lt;br /&gt;
&lt;br /&gt;
{{ic|rom}}, {{ic|loop}}, {{ic|airoot}} などのデバイスは無視してかまいません。&lt;br /&gt;
&lt;br /&gt;
Arch Linux をインストールするデバイスには以下のパーティションが必要です:&lt;br /&gt;
&lt;br /&gt;
* ルートディレクトリ {{ic|/}} のパーティション。&lt;br /&gt;
* [[UEFI]] が有効になっている場合、[[EFI システムパーティション]]。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[スワップ|スワップ領域]]はスワップパーティションとして用意することも[[スワップ#スワップファイル|スワップファイル]]で設定することもできます。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;パーティションテーブル&#039;&#039;を変更するときは [[fdisk]] や [[parted]] を使います:&lt;br /&gt;
&lt;br /&gt;
 # fdisk /dev/&#039;&#039;sda&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[パーティショニング]]を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[LVM]], [[ディスク暗号化]], [[RAID]] などを使う場合は、この段階で用意をします。}}&lt;br /&gt;
&lt;br /&gt;
=== パーティションのフォーマット ===&lt;br /&gt;
&lt;br /&gt;
パーティションを作成したら、適切な[[ファイルシステム]]でフォーマットする必要があります。例えば、[[ext4]] で {{ic|/dev/&#039;&#039;sda1&#039;&#039;}} のルートパーティションをフォーマットするには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # mkfs.&#039;&#039;ext4&#039;&#039; /dev/&#039;&#039;sda1&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
スワップ用のパーティション (例: {{ic|/dev/&#039;&#039;sda3&#039;&#039;}}) を作成した場合は、&#039;&#039;mkswap&#039;&#039; で初期化してください:&lt;br /&gt;
&lt;br /&gt;
 # mkswap /dev/&#039;&#039;sda3&#039;&#039;&lt;br /&gt;
 # swapon /dev/&#039;&#039;sda3&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[ファイルシステム#デバイスのフォーマット|ファイルシステム]]や[[スワップ]]を参照して下さい。&lt;br /&gt;
&lt;br /&gt;
=== パーティションのマウント ===&lt;br /&gt;
ルートパーティションのファイルシステムを {{ic|/mnt}} に[[マウント]]してください。例:&lt;br /&gt;
&lt;br /&gt;
 # mount /dev/&#039;&#039;sda1&#039;&#039; /mnt&lt;br /&gt;
&lt;br /&gt;
他のパーティションについては、それぞれマウントポイントを作成してマウントしてください。例:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /mnt/&#039;&#039;boot&#039;&#039;&lt;br /&gt;
 # mount /dev/&#039;&#039;sda2&#039;&#039; /mnt/&#039;&#039;boot&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://git.archlinux.org/arch-install-scripts.git/tree/genfstab.in genfstab] はマウントされているファイルシステムやスワップ領域を認識します。&lt;br /&gt;
&lt;br /&gt;
=== インターネットへの接続 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;有線&#039;&#039;&#039;接続の場合、[[dhcpcd]] デーモンが起動時に [https://git.archlinux.org/archiso.git/tree/configs/releng/airootfs/etc/udev/rules.d/81-dhcpcd.rules 有効化] され自動的に接続を開始します。[[ping]] を使って接続が確立されているかどうか確かめてください:&lt;br /&gt;
&lt;br /&gt;
 # ping archlinux.jp&lt;br /&gt;
&lt;br /&gt;
接続が確認できない場合、{{ic|systemctl stop dhcpcd@&#039;&#039;interface&#039;&#039;}} で &#039;&#039;dhcpcd&#039;&#039; サービスを[[systemd#ユニットを使う|停止]]して[[ネットワーク設定#デバイスドライバ|ネットワーク設定]]を参照してください。{{ic|&#039;&#039;interface&#039;&#039;}} の名前は[[Wikipedia:Command-line_completion|タブ補完]]で入力できます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;無線&#039;&#039;&#039;接続の場合 iw, wpa_supplicant, [[netctl#ワイヤレス .28WPA-PSK.29|netctl]] を使って接続できます。[[ワイヤレス設定]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== システムクロックの更新 ===&lt;br /&gt;
[[systemd-timesyncd]] を使ってシステムクロックを正確にしてください:&lt;br /&gt;
 # timedatectl set-ntp true&lt;br /&gt;
&lt;br /&gt;
サービスの状態は {{ic|timedatectl status}} で確認できます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
=== ミラーの選択 ===&lt;br /&gt;
{{ic|/etc/pacman.d/mirrorlist}} を編集して[[ミラー]]を選択してください。位置的に一番近いミラーがベストです。設定したミラーリストが {{ic|pacstrap}} によってインストール時にコピーされます。&lt;br /&gt;
&lt;br /&gt;
=== ベースシステムのインストール ===&lt;br /&gt;
[https://projects.archlinux.org/arch-install-scripts.git/tree/pacstrap.in pacstrap] スクリプトを使って、{{Grp|base}} グループをインストールします。[[Arch User Repository|AUR]] からソフトウェアをコンパイルしたり [[Arch Build System|ABS]] を使うつもりであれば、{{Grp|base-devel}} パッケージグループもインストールするべきです。&lt;br /&gt;
 &lt;br /&gt;
 # pacstrap /mnt base base-devel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;base&#039;&#039; グループにはライブ環境に存在する全てのツールが含まれているわけではありません。{{Pkg|btrfs-progs}} や無線ファームウェアなどは別にインストールする必要があります。[https://projects.archlinux.org/archiso.git/tree/configs/releng/packages.both packages.both] を見てください。&lt;br /&gt;
&lt;br /&gt;
必要に応じて、上のコマンドにパッケージの名前を追加 (スペースで区切る) すれば、他のパッケージやグループも[[インストール]]できます。また、[[#chroot|chroot]] を実行した後に [[pacman]] コマンドでインストールすることも可能です。&lt;br /&gt;
&lt;br /&gt;
== システムの設定 ==&lt;br /&gt;
&lt;br /&gt;
=== fstab ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行して [[fstab]] を生成してください (UUID やラベルを使いたい場合、それぞれ {{ic|-U}} や {{ic|-L}} オプションを加えます):&lt;br /&gt;
 # genfstab -U /mnt &amp;gt;&amp;gt; /mnt/etc/fstab&lt;br /&gt;
&lt;br /&gt;
作成された {{ic|/mnt/etc/fstab}} を確認して、問題がないことをチェックしてください。&lt;br /&gt;
&lt;br /&gt;
=== chroot ===&lt;br /&gt;
&lt;br /&gt;
新しくインストールしたシステムに [[Change Root|chroot]]:&lt;br /&gt;
 # arch-chroot /mnt&lt;br /&gt;
&lt;br /&gt;
=== タイムゾーン ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/localtime}} から {{ic|/usr/share/zoneinfo/Zone/SubZone}} にシンボリックリンクを張って下さい。{{ic|Zone}} と {{ic|Subzone}} はあなたのタイムゾーンに合わせて変更してください。例:&lt;br /&gt;
 # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime&lt;br /&gt;
&lt;br /&gt;
{{man|8|hwclock}} を実行して {{ic|/etc/adjtime}} を生成してください。ハードウェアクロックが UTC に設定されている場合、マシンにインストールされている他のオペレーティングシステムも UTC に[[時刻#時刻系|設定]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
 # hwclock --systohc --&#039;&#039;utc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
詳しくは[[時刻#時刻系]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ロケール ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/locale.gen}} を編集して使用する[[ロケール]] (例: {{ic|en_US.UTF-8 UTF-8}} と {{ic|ja_JP.UTF-8 UTF-8}}) をアンコメントし、次のコマンドを実行してください:&lt;br /&gt;
 # locale-gen&lt;br /&gt;
[[ロケール#システム全体のロケールを設定する|ロケール]]を {{ic|/etc/locale.conf}} で設定します:&lt;br /&gt;
 # echo LANG=&#039;&#039;en_US.UTF-8&#039;&#039; &amp;gt; /etc/locale.conf&lt;br /&gt;
必要であれば、{{man|5|vconsole.conf}} で[[コンソールでのキーボード設定|コンソールキーマップ]]と[[フォント#コンソールフォント|フォント]]を設定します:&lt;br /&gt;
 # echo KEYMAP=&#039;&#039;jp106&#039;&#039; &amp;gt; /etc/vconsole.conf&lt;br /&gt;
&lt;br /&gt;
=== ホストネーム ===&lt;br /&gt;
&lt;br /&gt;
あなたのコンピュータの名前を {{ic|/etc/hostname}} に書き込んで適切な[[ホストネーム]]を設定してください:&lt;br /&gt;
 # echo &#039;&#039;myhostname&#039;&#039; &amp;gt; /etc/hostname&lt;br /&gt;
&lt;br /&gt;
同じ名前を {{ic|/etc/hosts}} にも記述します:&lt;br /&gt;
{{hc|/etc/hosts|&lt;br /&gt;
127.0.0.1	localhost&lt;br /&gt;
::1		localhost&lt;br /&gt;
127.0.1.1	&#039;&#039;myhostname&#039;&#039;.localdomain	&#039;&#039;myhostname&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
システムに永続的な IP アドレスを割り当てる場合、{{ic|127.0.1.1}} の代わりにそのアドレスを指定してください。&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク設定 ===&lt;br /&gt;
&lt;br /&gt;
新しくインストールされた環境ではネットワーク接続がデフォルトで有効になっていません。もう一度ネットワークの設定を行なってください。[[ネットワーク設定]]を見てください。&lt;br /&gt;
&lt;br /&gt;
[[ワイヤレス設定]]の場合 {{Pkg|iw}}, {{Pkg|wpa_supplicant}}, {{Pkg|dialog}} パッケージや[[ワイヤレス設定#ドライバー・ファームウェアをインストールする|ファームウェアパッケージ]]のインストールが必要です。&lt;br /&gt;
&lt;br /&gt;
=== Initramfs ===&lt;br /&gt;
&lt;br /&gt;
必要があれば {{ic|/etc/mkinitcpio.conf}} を設定 ([[mkinitcpio]]) し、イニシャル RAM ディスクを生成:&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
&lt;br /&gt;
=== Root パスワード ===&lt;br /&gt;
&lt;br /&gt;
{{ic|passwd}} で root パスワードを設定します:&lt;br /&gt;
 # passwd&lt;br /&gt;
&lt;br /&gt;
=== ブートローダー ===&lt;br /&gt;
Arch Linux を起動するために Linux に対応している[[ブートローダー]]を選択してインストールする必要があります。ブートローダーは、[[#起動モードの確認|起動モード]]がUEFIの場合は [[systemd-boot]]や[[GRUB]]、BIOSの場合はGRUBが多く選択されています。&lt;br /&gt;
&lt;br /&gt;
Intel の CPU を使っている場合は {{Pkg|intel-ucode}} パッケージをインストールして、[[マイクロコード#Intel のマイクロコードのアップデートを有効にする|マイクロコードのアップデートを有効]]にしてください。&lt;br /&gt;
&lt;br /&gt;
=== 再起動 ===&lt;br /&gt;
chroot 環境から抜けるには、{{ic|exit}} と打つか、{{ic|Ctrl+D}} を押します。&lt;br /&gt;
&lt;br /&gt;
また、任意で {{ic|/mnt}} にマウントしたパーティションをアンマウントします: {{ic|umount -R /mnt}}。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|reboot}} と入力してマシンを再起動してください。インストールメディアを取り除いて、root アカウントで新しいシステムにログインします。&lt;br /&gt;
&lt;br /&gt;
== インストール後 ==&lt;br /&gt;
&lt;br /&gt;
システム管理の方法やインストール後のチュートリアルは[[一般的な推奨事項]]を参照 (グラフィカルユーザーインターフェイス、サウンド、タッチパッドなど)。&lt;br /&gt;
&lt;br /&gt;
あなたの興味を引くであろうアプリケーションの一覧は、[[アプリケーション一覧]]を参照。&lt;/div&gt;</summary>
		<author><name>J8takagi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=OVMF_%E3%81%AB%E3%82%88%E3%82%8B_PCI_%E3%83%91%E3%82%B9%E3%82%B9%E3%83%AB%E3%83%BC&amp;diff=13450</id>
		<title>OVMF による PCI パススルー</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=OVMF_%E3%81%AB%E3%82%88%E3%82%8B_PCI_%E3%83%91%E3%82%B9%E3%82%B9%E3%83%AB%E3%83%BC&amp;diff=13450"/>
		<updated>2018-09-26T05:34:53Z</updated>

		<summary type="html">&lt;p&gt;J8takagi: /* libvirt の設定 */ 英語版「19:06, 5 July 2018‎」を反映&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:仮想化]]&lt;br /&gt;
[[en:PCI passthrough via OVMF]]&lt;br /&gt;
Open Virtual Machine Firmware ([https://github.com/tianocore/tianocore.github.io/wiki/OVMF OVMF]) は仮想マシンで UEFI を使えるようにするプロジェクトです。Linux 3.9 以上と新しいバージョンの QEMU では、グラフィックカードをパススルーすることが可能で、仮想マシンでネイティブと同じグラフィック性能を発揮することができます。&lt;br /&gt;
&lt;br /&gt;
デスクトップコンピュータに使用していない GPU が接続されている場合 (内蔵 GPU や古い OEM カードでもかまいません、ブランドが一致している必要はありません)、ハードウェアがサポートしていれば ([[#要件]]を参照)、あらゆる OS の仮想マシンで専用 GPU として（ほぼ）最大限の性能を活用できます。技術的な詳細は [https://www.linux-kvm.org/images/b/b3/01x09b-VFIOandYou-small.pdf こちらのプレゼンテーション (pdf)] を見てください。&lt;br /&gt;
&lt;br /&gt;
== 要件 ==&lt;br /&gt;
VGA パススルーでは最先端の技術を使っているため、あなたのハードウェアでは使用できない可能性があります。パススルーを行うには以下の要件が満たされていなければなりません:&lt;br /&gt;
&lt;br /&gt;
* CPU がハードウェア仮想化 (KVM) と IOMMU (パススルー) をサポートしていること。&lt;br /&gt;
** [https://ark.intel.com/ja/Search/FeatureFilter?productType=processors&amp;amp;VTD=true Intel の対応 CPU リスト (Intel VT-x と Intel VT-d)]&lt;br /&gt;
** Bulldozer 世代以降 (Zen も含む) の AMD 製 CPU は全て対応しています。&lt;br /&gt;
*** K10 世代 (2007年) の CPU は IOMMU を搭載していないため、[https://support.amd.com/TechDocs/43403.pdf#page=18 890FX] や [https://support.amd.com/TechDocs/48691.pdf#page=21 990FX] チップセットが搭載されたマザーボードが必要です。&lt;br /&gt;
* マザーボードが IOMMU をサポートしていること。&lt;br /&gt;
** チップセットと BIOS の両方が対応している必要があります。対応しているかどうかすぐに判断することはできませんが、[https://wiki.xen.org/wiki/VTd_HowTo Xen wiki の対応ハードウェアリスト] や [[wikipedia:List_of_IOMMU-supporting_hardware|Wikipedia の対応リスト]]が存在します。&lt;br /&gt;
* ゲスト GPU ROM が UEFI をサポートしていること。&lt;br /&gt;
** [https://www.techpowerup.com/vgabios/ このリストに載っている ROM] に使用している GPU が存在し UEFI をサポートしていると書かれていれば、問題ありません。2012年以降の GPU はサポートされているはずです。Windows 8 との互換性があると売り出すには UEFI のサポートが要件だと Microsoft が決めたためです。&lt;br /&gt;
&lt;br /&gt;
使用していないモニターやマウス、キーボードがあれば、それも仮想マシンに割り当てることができます (GPU はディスプレイが接続されていないと何も出力することができず Spice 接続では性能が上がりません)。何か問題が発生した場合でも、スペアの機材があればホストマシンは制御できます。&lt;br /&gt;
&lt;br /&gt;
==IOMMU のセットアップ==&lt;br /&gt;
IOMMU はシステム固有の IO マッピング機構でほとんどのデバイスで使用することができます。IOMMU は Intel の Intel VT-x と AMD の AMD-V/AMD-Vi で共通して使われる名前です。&lt;br /&gt;
===IOMMU の有効化===&lt;br /&gt;
BIOS の設定で AMD-VI/VT-d を有効化してください。通常は他の CPU 機能と一緒に設定が並んでいるはずです (オーバークロック関連のメニューに存在することもあります)。設定における名前は技術的な名前 (&amp;quot;Vt-d&amp;quot; あるいは &amp;quot;AMD-VI&amp;quot;) だったり、旧式の名前 (Vt-x の場合は &amp;quot;Vanderpool&amp;quot;、AMD-V の場合は &amp;quot;Pacifica&amp;quot;)、あるいは &amp;quot;Virtualization technology&amp;quot; などの曖昧な単語だったりします。マニュアルに載っていない場合もあります。&lt;br /&gt;
&lt;br /&gt;
また、[[カーネルパラメータ|ブートローダーのカーネルオプション]]でカーネル内の IOMMU のサポートも有効にする必要があります。使用している CPU のタイプにあわせて、Intel 製の CPU (VT-d) であれば {{ic|intel_iommu&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;on}} を、AMD 製の CPU (AMD-Vi) であれば {{ic|amd_iommu&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;on}} を使用してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=iommu=pt}} パラメータも追加してください。このパラメータによって Linux がパススルーしないデバイスに触らないようにすることができます。&lt;br /&gt;
&lt;br /&gt;
再起動して、dmesg で IOMMU が有効になっていることを確認してください:&lt;br /&gt;
{{hc|dmesg&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;grep -e DMAR -e IOMMU|&lt;br /&gt;
[    0.000000] ACPI: DMAR 0x00000000BDCB1CB0 0000B8 (v01 INTEL  BDW      00000001 INTL 00000001)&lt;br /&gt;
[    0.000000] Intel-IOMMU: enabled&lt;br /&gt;
[    0.028879] dmar: IOMMU 0: reg_base_addr fed90000 ver 1:0 cap c0000020660462 ecap f0101a&lt;br /&gt;
[    0.028883] dmar: IOMMU 1: reg_base_addr fed91000 ver 1:0 cap d2008c20660462 ecap f010da&lt;br /&gt;
[    0.028950] IOAPIC id 8 under DRHD base  0xfed91000 IOMMU 1&lt;br /&gt;
[    0.536212] DMAR: No ATSR found&lt;br /&gt;
[    0.536229] IOMMU 0 0xfed90000: using Queued invalidation&lt;br /&gt;
[    0.536230] IOMMU 1 0xfed91000: using Queued invalidation&lt;br /&gt;
[    0.536231] IOMMU: Setting RMRR:&lt;br /&gt;
[    0.536241] IOMMU: Setting identity map for device 0000:00:02.0 [0xbf000000 - 0xcf1fffff]&lt;br /&gt;
[    0.537490] IOMMU: Setting identity map for device 0000:00:14.0 [0xbdea8000 - 0xbdeb6fff]&lt;br /&gt;
[    0.537512] IOMMU: Setting identity map for device 0000:00:1a.0 [0xbdea8000 - 0xbdeb6fff]&lt;br /&gt;
[    0.537530] IOMMU: Setting identity map for device 0000:00:1d.0 [0xbdea8000 - 0xbdeb6fff]&lt;br /&gt;
[    0.537543] IOMMU: Prepare 0-16MiB unity mapping for LPC&lt;br /&gt;
[    0.537549] IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]&lt;br /&gt;
[    2.182790] [drm] DMAR active, disabling use of stolen memory}}&lt;br /&gt;
&lt;br /&gt;
===グループが正しいことを確認===&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトを使うことで PCI デバイスが IOMMU グループにどのようにマッピングされたか確認できます。何も出力が返ってこない場合、IOMMU のサポートが有効になっていないかハードウェアが IOMMU をサポートしていないかのどちらかです。&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 shopt -s nullglob&lt;br /&gt;
 for d in /sys/kernel/iommu_groups/*/devices/*; do &lt;br /&gt;
     n=${d#*/iommu_groups/*}; n=${n%%/*}&lt;br /&gt;
     printf &#039;IOMMU Group %s &#039; &amp;quot;$n&amp;quot;&lt;br /&gt;
     lspci -nns &amp;quot;${d##*/}&amp;quot;&lt;br /&gt;
 done;&lt;br /&gt;
&lt;br /&gt;
出力の例:&lt;br /&gt;
&lt;br /&gt;
 IOMMU Group 0 00:00.0 Host bridge [0600]: Intel Corporation 2nd Generation Core Processor Family DRAM Controller [8086:0104] (rev 09)&lt;br /&gt;
 IOMMU Group 1 00:16.0 Communication controller [0780]: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 [8086:1c3a] (rev 04)&lt;br /&gt;
 IOMMU Group 2 00:19.0 Ethernet controller [0200]: Intel Corporation 82579LM Gigabit Network Connection [8086:1502] (rev 04)&lt;br /&gt;
 IOMMU Group 3 00:1a.0 USB controller [0c03]: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 [8086:1c2d] (rev  &lt;br /&gt;
 ...&lt;br /&gt;
IOMMU グループは仮想マシンにパススルーすることができる一番小さい単位の物理デバイスのセットです。例えば、上記の例の場合、06:00.0 の GPU と 6:00.1 のオーディオコントローラは IOMMU グループ13に属しており、両方一緒にしかパススルーすることができません。フロントの USB コントローラは USB 拡張コントローラ (グループ10) やリアの USB コントローラ (グループ4) と分かれているグループ (グループ2) なので、[[#USB コントローラ|他のデバイスに影響を与えないで仮想マシンにパススルーすることができます]]。&lt;br /&gt;
&lt;br /&gt;
===注意事項===&lt;br /&gt;
====独立していない CPU ベースの PCIe スロットにゲスト GPU を接続した場合====&lt;br /&gt;
全ての PCI-E スロットは同じではありません。ほとんどのマザーボードでは PCIe スロットには CPU 由来のものと PCH 由来のものがあります。CPU によっては、プロセッサ由来の PCIe スロットは隔離することができず、その場合 PCI スロットは接続されているデバイスと一緒にグループ化されてしまいます。&lt;br /&gt;
&lt;br /&gt;
 IOMMU Group 1 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)&lt;br /&gt;
 IOMMU Group 1 01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750] (rev a2)&lt;br /&gt;
 IOMMU Group 1 01:00.1 Audio device: NVIDIA Corporation Device 0fbc (rev a1)&lt;br /&gt;
&lt;br /&gt;
上記のようにゲスト GPU しか含まれていない場合は問題ありません。他の PCIe スロットに接続した場合や CPU や PCH の配置によって、同じグループに他のデバイスが含まれる場合、そのデバイスも一緒にパススルーすることになります。仮想マシンにデバイスをパススルーしても問題ない場合は次に進んでください。そうでない場合、他の PCIe スロットに GPU を接続してみて他のデバイスと分離できないか試してみてください。もしくは ACS 上書きパッチをインストールする方法もありますが、こちらは欠点があります。詳しくは [[#IOMMU グループのバイパス (ACS 上書きパッチ)]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{note|他のデバイスと一緒にグループ化した場合、起動時に pci のルートポートとブリッジを vfio に紐付けたり VM に追加してはいけません。}}&lt;br /&gt;
&lt;br /&gt;
==GPU の分離==&lt;br /&gt;
GPU ドライバーは巨大で複雑なため、動的な再バインドはあまりサポートされておらず、ホストの GPU を透過的に仮想マシンにパススルーすることは通常できません。代わりのドライバーに GPU をバインドすることを推奨します。他のドライバーが GPU を使用できないようにして、仮想マシンが動作していないときは GPU は強制的に活動を停止します。2つの方法が存在しますが、使用しているカーネルがサポートしている場合は vfio-pci を使用することが推奨されます。&lt;br /&gt;
&lt;br /&gt;
{{warning|設定後にマシンを再起動すると、設定を解除しないかぎりホストから GPU は使えなくなります。再起動する前にホストで使用する GPU が正しく設定されているか確認してください。}}&lt;br /&gt;
&lt;br /&gt;
===vfio-pci を使う===&lt;br /&gt;
Linux 4.1 から、カーネルには vfio-pci が含まれており、pci-stub と同じような機能を持ちながら、使用していないときはデバイスを D3 状態にするなどの機能が追加されています。あなたのシステムが vfio-pci をサポートしている場合、以下のコマンドを実行してみてください。エラーが返ってくる場合、代わりに pci-stub を使用する方法を使ってください。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ modinfo vfio-pci|&lt;br /&gt;
filename:       /lib/modules/4.4.5-1-ARCH/kernel/drivers/vfio/pci/vfio-pci.ko.gz&lt;br /&gt;
description:    VFIO PCI - User Level meta-driver&lt;br /&gt;
author:         Alex Williamson &amp;lt;alex.williamson@redhat.com&amp;gt;&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
vfio-pci は基本的に PCI デバイスを ID で指定するため、パススルーしたいデバイスの ID を指定する必要があります。以下の IOMMU グループの場合、vfio-pci を {{ic|10de:13c2}} と {{ic|10de:0fbb}} にバインドします。&lt;br /&gt;
&lt;br /&gt;
 IOMMU Group 13 06:00.0 VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)&lt;br /&gt;
 IOMMU Group 13 06:00.1 Audio device: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)}}&lt;br /&gt;
&lt;br /&gt;
{{note|ホスト GPU とゲスト GPU のベンダーとデバイス ID が同じ場合 (同じ型番の GPU を使っている場合)、ベンダーとデバイス ID を使ってデバイスを分離させることはできません。そのような場合は[[#ゲストとホストで同じ GPU を使う|ゲストとホストで同じ GPU を使う]]のセクションを読んでください。}}&lt;br /&gt;
&lt;br /&gt;
ベンダーとデバイス ID を vfio-pci に渡されるデフォルトパラメータに追加します:&lt;br /&gt;
{{hc|1=/etc/modprobe.d/vfio.conf|2=options vfio-pci ids=10de:13c2,10de:0fbb}}&lt;br /&gt;
{{note|[[#独立していない CPU ベースの PCIe スロットにゲスト GPU を接続した場合|こちら]]にあるように、PCI のルートポートが IOMMU グループに属している場合、ID を {{ic|vfio-pci}} に指定してはいけません。ルートポートを機能させるにはホスト側に割り当てたままにする必要があります。グループ内の他のデバイスも {{ic|vfio-pci}} にバインドされてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
上記の設定だけでは vfio-pci が他のグラフィックドライバーよりも前にロードされるとは限りません。必ずロードされるようにするには、カーネルイメージの中で静的にバインドされるようにする必要があります。{{ic|vfio}}, {{ic|vfio_iommu_type1}}, {{ic|vfio_pci}}, {{ic|vfio_virqfd}} を [[mkinitcpio]] にこの順番で追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/mkinitcpio.conf|2=MODULES=&amp;quot;... vfio vfio_iommu_type1 vfio_pci vfio_virqfd ...&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{note|[[Kernel_Mode_Setting#Early_KMS_start|初期モードセッティング]]のために他のドライバー (&amp;quot;nouveau&amp;quot;, &amp;quot;radeon&amp;quot;, &amp;quot;amdgpu&amp;quot;, &amp;quot;i915&amp;quot; など) をロードしている場合、上記の VFIO モジュールが先にロードされるようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
さらに、{{ic|mkinitcpio.conf}} の HOOKS リストに {{ic|modconf}} フックを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/mkinitcpio.conf|2=HOOKS=&amp;quot;... modconf ...&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
新しいモジュールを initramfs に追加したら、initramfs を再生成する必要があります。{{ic|/etc/modprobe.d/vfio.conf}} でデバイスの ID を変更した場合も、initramfs を再生成してください。パラメータは起動の初期段階で initramfs で指定される必要があります。&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
{{Note|{{ic|linux-vfio}} など非標準のカーネルを使っている場合、{{ic|linux}} を適当なカーネルに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
再起動して vfio-pci が正しくロードされ適切なデバイスがバインドされていることを確認:&lt;br /&gt;
{{hc|$ dmesg &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; grep -i vfio |&lt;br /&gt;
[    0.329224] VFIO - User Level meta-driver version: 0.3&lt;br /&gt;
[    0.341372] vfio_pci: add [10de:13c2[ffff:ffff]] class 0x000000/00000000&lt;br /&gt;
[    0.354704] vfio_pci: add [10de:0fbb[ffff:ffff]] class 0x000000/00000000&lt;br /&gt;
[    2.061326] vfio-pci 0000:06:00.0: enabling device (0100 -&amp;gt; 0103)}}&lt;br /&gt;
&lt;br /&gt;
{{ic|vfio.conf}} の全てのデバイスが dmesg に出力される必要はありません。起動時にデバイスが出力に現れなくてもゲスト VM から問題なく使うことができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lspci -nnk -d 10de:13c2|&lt;br /&gt;
06:00.0 VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)&lt;br /&gt;
	Kernel driver in use: vfio-pci&lt;br /&gt;
	Kernel modules: nouveau nvidia}}&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lspci -nnk -d 10de:0fbb|&lt;br /&gt;
06:00.1 Audio device: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)&lt;br /&gt;
	Kernel driver in use: vfio-pci&lt;br /&gt;
	Kernel modules: snd_hda_intel}}&lt;br /&gt;
&lt;br /&gt;
===pci-stub を使う (古い方法, 4.1 カーネル以前)===&lt;br /&gt;
使用しているカーネルが vfio-pci をサポートしていない場合、代わりに pci-stub モジュールを使います。&lt;br /&gt;
&lt;br /&gt;
pci-stub は基本的に PCI デバイスを ID で指定するため、パススルーしたいデバイスの ID を指定する必要があります。以下の IOMMU グループの場合、pci-stub を {{ic|10de:13c2}} と {{ic|10de:0fbb}} にバインドします:&lt;br /&gt;
&lt;br /&gt;
 IOMMU group 13 06:00.0 VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)&lt;br /&gt;
 IOMMU group 13 06:00.1 Audio device: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)}}&lt;br /&gt;
&lt;br /&gt;
{{note|ホスト GPU とゲスト GPU のベンダーとデバイス ID が同じ場合 (同じ型番の GPU を使っている場合)、ベンダーとデバイス ID を使ってデバイスを分離させることはできません。そのような場合は[[#ゲストとホストで同じ GPU を使う|ゲストとホストで同じ GPU を使う]]のセクションを読んでください。}}&lt;br /&gt;
(Arch Linux を含む) ほとんどの Linux ディストリはカーネルイメージの中に静的に pci-stub を組み込んでいます。何らかの理由でモジュールとしてロードしなければならない場合、ディストリが提供しているツールを使用してバインドする必要があります。Arch の場合は {{ic|mkinitpcio}} です:&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;/etc/mkinitcpio.conf&amp;lt;/nowiki&amp;gt;|&amp;lt;nowiki&amp;gt;MODULES=&amp;quot;... pci-stub ...&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
手動でカーネルイメージにモジュールを追加する必要がある場合、initramfs を再生成してください:&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
{{Note|{{ic|linux-vfio}} など非標準のカーネルを使っている場合、{{ic|linux}} を使用しているカーネルに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|pci-stubs.ids}} [[カーネルパラメータ]]にパススルーする PCI デバイスの ID を追加してください (例: {{ic|1=pci-stub.ids=10de:13c2,10de:0fbb}})。&lt;br /&gt;
&lt;br /&gt;
{{note|[[#独立していない CPU ベースの PCIe スロットにゲスト GPU を接続した場合|こちら]]にあるように、PCI のルートポートが IOMMU グループに属している場合、ID を {{ic|pci-stub}} に指定してはいけません。ルートポートを機能させるにはホスト側に割り当てたままにする必要があります。グループ内の他のデバイスも {{ic|pci-stub}} にバインドされてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスが pci-stub に割り当てられたことを dmesg の出力で確認:&lt;br /&gt;
{{hc|dmesg &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; grep pci-stub|&lt;br /&gt;
[    2.390128] pci-stub: add 10DE:13C2 sub&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;FFFFFFFF:FFFFFFFF cls&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;00000000/00000000&lt;br /&gt;
[    2.390143] pci-stub 0000:06:00.0: claimed by stub&lt;br /&gt;
[    2.390150] pci-stub: add 10DE:0FBB sub&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;FFFFFFFF:FFFFFFFF cls&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;00000000/00000000&lt;br /&gt;
[    2.390159] pci-stub 0000:06:00.1: claimed by stub}}&lt;br /&gt;
&lt;br /&gt;
==OVMF によるゲスト VM のセットアップ==&lt;br /&gt;
OVMF は QEMU 仮想マシン用のオープンソース UEFI ファームウェアです。SeaBIOS を使うことでも PCI パススルーと同じような結果を得ることはできますが、セットアップ手順が異なります。一般的にはハードウェアがサポートしているのであれば EFI を使用する方法を推奨します。&lt;br /&gt;
&lt;br /&gt;
===libvirt の設定===&lt;br /&gt;
[[libvirt]] は様々な仮想化ユーティリティのラッパーであり、仮想マシンの設定とデプロイを簡単にします。KVM と QEMU の場合、フロントエンドを使用することで QEMU 用にパーミッションを設定する必要がなくなり簡単に様々なデバイスを仮想マシンに追加・削除できます。ラッパーと名乗ってはいますが、QEMU の最新機能全てをサポートしているわけではありません。QEMU の引数を追加するためにラッパースクリプトを使用する必要がある場合もあります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|qemu}}, {{Pkg|libvirt}}, {{Pkg|ovmf}}, {{Pkg|virt-manager}} をインストールしてから、OVMF ファームウェアイメージとランタイム変数テンプレートのパスを libvirt の設定に追加して、{{ic|virt-install}} や {{ic|virt-manager}} が認識できるようにしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/qemu.conf|2=&lt;br /&gt;
nvram = [&lt;br /&gt;
	&amp;quot;/usr/share/ovmf/x64/OVMF_CODE.fd:/usr/share/ovmf/x64/OVMF_VARS.fd&amp;quot;&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定後、{{ic|libvirtd.service}}とログ出力コンポーネント{{ic|virtlogd.socket}}を[[起動]]・[[有効化]]します。&lt;br /&gt;
&lt;br /&gt;
===ゲスト OS のセットアップ===&lt;br /&gt;
{{ic|virt-manager}} による仮想マシンの設定は画面上の指示に従うだけで完了します。ただし、以下のステップでは特別な注意を払う必要があります:&lt;br /&gt;
* 仮想マシンの作成ウィザードで VM の名前を付けるとき、&amp;quot;Customize before install&amp;quot; チェックボックスにチェックを入れてください。&lt;br /&gt;
* &amp;quot;Overview&amp;quot; セクションで、ファームウェアを &amp;quot;UEFI&amp;quot; に設定してください [https://i.imgur.com/73r2ctM.png]。オプションがグレーになっている場合、{{ic|/etc/libvirt/qemu.conf}} でファームウェアの場所が正しく指定されているか確認してください。修正した後 {{ic|libvirtd.service}} を再起動してください。&lt;br /&gt;
* &amp;quot;CPUs&amp;quot; セクションで、CPU モデルを &amp;quot;host-passthrough&amp;quot; に変更してください。リストに存在しない場合、手動で入力してください。これで libvirt が CPU の機能を実際の CPU と同じように反映するようになって CPU が正しく認識されるようになります。変更しないと、一部のアプリケーションで CPU のモデルが不明だとエラーが発生します。&lt;br /&gt;
* IO のオーバーヘッドを抑えたい場合、&amp;quot;Add Hardware&amp;quot; から &amp;quot;VirtIO SCSI&amp;quot; モデルの SCSI ドライブのコントローラを追加してください。それからデフォルトの IDE ディスクを SCSI ディスクに変更して作成したコントローラーにバインドしてください。&lt;br /&gt;
** Windows の仮想マシンはデフォルトでは SCSI ドライブを認識しないため、[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/ こちら] からドライバーが含まれている ISO をダウンロードして IDE (あるいは Windows 8.1 以上の場合は SATA) の CD-ROM ストレージデバイスを作成してダウンロードした ISO にリンクしてください。この設定を行わないとインストール時に Windows がディスクを認識できません。Windows をインストールするディスクを選択するときは、&#039;&#039;vioscsi&#039;&#039; 下の CD-ROM に含まれているドライバーをロードしてください。&lt;br /&gt;
&lt;br /&gt;
他のインストールは通常と同じです。標準の QXL ビデオアダプタをウィンドウで実行します。現時点では、仮想デバイスのためのドライバーをインストールする必要はありません。ほとんどが後で削除されるためです。ゲスト OS のインストールが完了したら、仮想マシンをオフにしてください。&lt;br /&gt;
&lt;br /&gt;
===PCI デバイスの接続===&lt;br /&gt;
インストールが完了したら、libvirt でハードウェアの詳細情報を編集して spice チャンネルや仮想ディスプレイ、QXL ビデオアダプタ、マウスやキーボード、USB タブレットデバイスのエミュレートなどの仮想デバイスを削除できます。入力デバイスがなくなるので、仮想マシンに USB ホストデバイスをバインドする場合、ゲストに何かあったときは最低でもひとつのマウスやキーボードをホストに割り当ててください。ここで、先に分離しておいた PCI デバイスを接続することができます。&amp;quot;Add Hardware&amp;quot; をクリックしてパススルーしたい PCI Host Device を選択してください。問題がなければ、GPU に接続されたディスプレイが OVMF のスプラッシュ画面を表示して通常通りに VM が起動します。そこから VM のドライバーの設定をおこなってください。&lt;br /&gt;
&lt;br /&gt;
===注意事項===&lt;br /&gt;
====OVMF ベースの VM で非 EFI イメージを使う====&lt;br /&gt;
OVMF ファームウェアは EFI 以外のメディアの起動をサポートしていません。起動後に UEFI シェルが開かれてしまう場合、EFI ブートメディアに問題がある可能性があります。他の linux/windows イメージを使ってみてイメージに問題がないか確認してください。&lt;br /&gt;
&lt;br /&gt;
==パフォーマンスチューニング==&lt;br /&gt;
PCI パススルーを使うのはビデオゲームや GPU を使用する作業など大抵パフォーマンスが重要な場合です。PCI パススルーによってネイティブの性能に近づきますが、仮想マシンを最大限活用するにはホストとゲスト両方で設定が必要です。&lt;br /&gt;
&lt;br /&gt;
===CPU ピニング===&lt;br /&gt;
KVM ゲストではデフォルトでゲストから要求された操作を仮想プロセッサを表すスレッドとして実行します。スレッドは Linux のスケジューラによって他のスレッドと同じように管理され、nice 値や優先度にあわせて手隙の CPU コアに割り当てられます。スレッド切り替えにはオーバーヘッドが存在するため (コンテキストスイッチによってコアのキャッシュが強制的に変更されるため)、ゲストのパフォーマンスに悪い影響を与えます。CPU ピニングはこの問題を解決してプロセスのスケジューリングを上書きして VM のスレッドは特定のコアでのみ動作するようになります。例えば、ゲストのコア 0, 1, 2, 3 をホストの 4, 5, 6, 7 番目のコアに割り当てるには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ virsh edit [vmname]|&amp;lt;nowiki&amp;gt;...&lt;br /&gt;
&amp;lt;vcpu placement=&#039;static&#039;&amp;gt;4&amp;lt;/vcpu&amp;gt;&lt;br /&gt;
&amp;lt;cputune&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;0&#039; cpuset=&#039;4&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;1&#039; cpuset=&#039;5&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;2&#039; cpuset=&#039;6&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;3&#039; cpuset=&#039;7&#039;/&amp;gt;&lt;br /&gt;
&amp;lt;/cputune&amp;gt;&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====ハイパースレッディングの場合====&lt;br /&gt;
CPU がハードウェアによるマルチタスクをサポートしている場合 (Intel のチップではハイパースレッディングと呼ばれます)、CPU ピニングをする方法は2つ存在します。ハイパースレッディングは1つの CPU で2つのスレッドを効率的に動作させる手法であるため、クアッドコア CPU ならば8つの論理コアが使えます。物理コアの負担率が高い場合、論理コアは使われません。VM のスレッドを2つの物理コアに割り当てても、2つのコアが対応できる負担を超える作業では2つの論理コアの補助を得ることができません。4つのコアのうち2つのコアをパススルーしただけだからです。&lt;br /&gt;
&lt;br /&gt;
以下はクアッドコアのマシンでハイパースレッディングが有効になっている場合の {{ic|/proc/cpuinfo}} の要約です:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;processor&amp;quot; -e &amp;quot;core id&amp;quot; -e &amp;quot;^$&amp;quot; /proc/cpuinfo|&lt;br /&gt;
processor	: 0&lt;br /&gt;
core id		: 0&lt;br /&gt;
&lt;br /&gt;
processor	: 1&lt;br /&gt;
core id		: 1&lt;br /&gt;
&lt;br /&gt;
processor	: 2&lt;br /&gt;
core id		: 2&lt;br /&gt;
&lt;br /&gt;
processor	: 3&lt;br /&gt;
core id		: 3&lt;br /&gt;
&lt;br /&gt;
processor	: 4&lt;br /&gt;
core id		: 0&lt;br /&gt;
&lt;br /&gt;
processor	: 5&lt;br /&gt;
core id		: 1&lt;br /&gt;
&lt;br /&gt;
processor	: 6&lt;br /&gt;
core id		: 2&lt;br /&gt;
&lt;br /&gt;
processor	: 7&lt;br /&gt;
core id		: 3}}&lt;br /&gt;
&lt;br /&gt;
仮想マシンを使っているときにホスト側で負担が重い計算をしない場合 (あるいはホストを全く使わない場合)、仮想マシンのスレッドを全ての論理コアに固定化して、仮想マシンがコアを活用できるようにすると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
クアッドコアのマシンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ virsh edit [vmname]|&amp;lt;nowiki&amp;gt;...&lt;br /&gt;
&amp;lt;vcpu placement=&#039;static&#039;&amp;gt;4&amp;lt;/vcpu&amp;gt;&lt;br /&gt;
&amp;lt;cputune&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;0&#039; cpuset=&#039;4&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;1&#039; cpuset=&#039;5&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;2&#039; cpuset=&#039;6&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;3&#039; cpuset=&#039;7&#039;/&amp;gt;&lt;br /&gt;
&amp;lt;/cputune&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;cpu mode=&#039;custom&#039; match=&#039;exact&#039;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;topology sockets=&#039;1&#039; cores=&#039;4&#039; threads=&#039;1&#039;/&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/cpu&amp;gt;&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ホストとゲストで同時に何か処理を行う場合、一部の物理コアとゲストのスレッドを固定して、後はホストでも使えるようにすると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
クアッドコアのマシンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ virsh edit [vmname]|&amp;lt;nowiki&amp;gt;...&lt;br /&gt;
&amp;lt;vcpu placement=&#039;static&#039;&amp;gt;4&amp;lt;/vcpu&amp;gt;&lt;br /&gt;
&amp;lt;cputune&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;0&#039; cpuset=&#039;2&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;1&#039; cpuset=&#039;6&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;2&#039; cpuset=&#039;3&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;vcpupin vcpu=&#039;3&#039; cpuset=&#039;7&#039;/&amp;gt;&lt;br /&gt;
&amp;lt;/cputune&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;cpu mode=&#039;custom&#039; match=&#039;exact&#039;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;topology sockets=&#039;1&#039; cores=&#039;2&#039; threads=&#039;2&#039;/&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/cpu&amp;gt;&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===静的ヒュージページ===&lt;br /&gt;
大量のメモリを必要するアプリケーションでは、メモリの遅延が問題になることがあります。使用するメモリページ (メモリ割り当ての基本単位) が増えれば増えるほど、複数のメモリページにまたがる情報にアプリケーションがアクセスするようになる確立が高まります。メモリページの実際のアドレスを解決するには複数のステップを踏まないとならないため、大抵の場合 CPU は最近使用されたメモリページの情報をキャッシュすることで同一ページの使用を高速化します。しかしながらアプリケーションが大量のメモリを使うとすると問題です。例えば仮想マシンが使用する 4GB のメモリが (メモリページのデフォルトサイズである) 4kB に分割されるような場合、頻繁にキャッシュミスが発生することになりメモリの遅延を増大させてしまいます。このような問題を緩和するためにヒュージページが存在します。大きなサイズのページをアプリケーションに割り当てることで、同一ページが使用される可能性を高めます。通常は必要に応じてヒュージページを動的に管理する、透過的ヒュージページが使用されます。&lt;br /&gt;
&lt;br /&gt;
しかしながら仮想マシンで PCI パススルーを使う場合は透過ヒュージページは意味がありません。IOMMU がゲストのメモリ割り当てを必要とし仮想マシンが起動するとすぐに固定化されるためです。したがってヒュージページの効果を得るには静的に割り当てる必要があります。&lt;br /&gt;
&lt;br /&gt;
{{warning|静的ヒュージページは割り当てられたメモリをロックダウンするため、普通のアプリケーションはそれらのメモリを使用できなくなります。8GB のメモリが搭載されたマシンでヒュージページに 4GB を割り当てると、ホストで使用できるメモリは 4GB だけになります。たとえ VM が実行中でなくてもそれは変わりません。}}&lt;br /&gt;
&lt;br /&gt;
起動時にヒュージページを割り当てるには、カーネルコマンドラインで {{ic|&amp;lt;nowiki&amp;gt;hugepages=x&amp;lt;/nowiki&amp;gt;}} を使って適切な量を指定します。例えば {{ic|&amp;lt;nowiki&amp;gt;hugepages=1024&amp;lt;/nowiki&amp;gt;}} として1024ページを予約すると、ヒュージページあたりデフォルトで 2048kB のサイズが割り当てられるため、仮想マシンが使用するための 2GB 分のメモリが作成されます。&lt;br /&gt;
&lt;br /&gt;
CPU がサポートしていれば手動でページサイズを設定できます。{{ic|&amp;lt;nowiki&amp;gt;grep pdpe1gb /proc/cpuinfo&amp;lt;/nowiki&amp;gt;}} を実行することで 1 GB のヒュージページがサポートされているか確認できます。カーネルパラメータで 1 GB のヒュージページサイズを設定するには: {{ic|&amp;lt;nowiki&amp;gt;default_hugepagesz=1G hugepagesz=1G hugepages=X transparent_hugepage=never&amp;lt;/nowiki&amp;gt;}}。&lt;br /&gt;
&lt;br /&gt;
また、静的ヒュージページは要求を行ったアプリケーションだけが使用できるため、libvirt のドメイン設定に kvm が割り当てたヒュージページを活用するように設定を追加する必要があります:&lt;br /&gt;
{{hc|$ virsh edit [vmname]|&amp;lt;nowiki&amp;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;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== CPU 周波数ガバナー ===&lt;br /&gt;
&lt;br /&gt;
[[CPU 周波数スケーリング|CPU ガバナー]]の設定によっては、仮想マシンのスレッドによって周波数が引き上がる閾値まで CPU の負担が達しないことがあります。KVM が自力で CPU の周波数を変更することはできないため、CPU の使用率が思うように上がらないとパフォーマンスが出ないという問題になる可能性があります。ゲスト側で CPU 負担が重い作業を実行している間に {{ic|watch lscpu}} によって報告される周波数に変化があるかどうか確認してみてください。周波数が最大値まで上がらない場合、[https://lime-technology.com/forum/index.php?topic=46664.msg447678#msg447678 CPU スケーリングがホスト OS によって制御されている] ことが原因かもしれません。その場合、全てのコアを最大周波数に設定してみてパフォーマンスが改善しないか確認してください。最新の Intel 製チップをデフォルトの P-State ドライバーで使用している場合、cpupower コマンドは[[CPU 周波数スケーリング#CPU 周波数ドライバー|効果がない]]ため、{{ic|/proc/cpuinfo}} を監視して CPU が最大周波数になっていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
=== AMD CPU でパフォーマンスを改善する ===&lt;br /&gt;
&lt;br /&gt;
以前は AMD 環境では Nested Page Tables (NPT) を無効化することで KVM の GPU 性能を引き上げることができました。これは [https://sourceforge.net/p/kvm/bugs/230/ 非常に古いバグ] が原因で、トレードオフとして CPU の性能が落ちて、がたつきが発生することがありました。&lt;br /&gt;
&lt;br /&gt;
カーネル 4.14 と 4.9 から問題を解決する [https://patchwork.kernel.org/patch/10027525/ カーネルパッチ] がマージされています。公式の {{Pkg|linux}} または {{Pkg|linux-lts}} カーネルを使用している場合、パッチは既に適用されています (最新版のカーネルを使っていることを確認してください)。他のカーネルを使っている場合は手動でパッチを適用する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|一部の Ryzen ユーザーによって上記パッチがテストされており、問題なく動作し GPU パススルーの性能がほとんどネイティブのレベルまで向上することが確認されています ([https://www.reddit.com/r/VFIO/comments/78i3jx/possible_fix_for_the_npt_issue_discussed_on_iommu/ こちらの Reddit スレッド] を参照)。}}&lt;br /&gt;
&lt;br /&gt;
== 特殊な構成 ==&lt;br /&gt;
&lt;br /&gt;
特定の構成では特別な設定が必要になります。ホストあるいは VM が正しく動作しない場合、あなたのシステムが以下のどれかにあてはまっていないか確認してください。&lt;br /&gt;
&lt;br /&gt;
=== ゲストとホストで同じ GPU を使う ===&lt;br /&gt;
pci-stub と vfio-pci はどちらもベンダー・デバイス id の組み合わせを使って起動時にバインドするデバイスを認識するため、同じ ID の GPU が2つある場合、パススルードライバーをどちらか片方にバインドできません。スクリプトを使って {{ic|driver_override}} の pci バスアドレスによって割り当てる必要があります。&lt;br /&gt;
&lt;br /&gt;
スクリプトを作成して vfio-pci をブート GPU 以外の全ての GPU にバインドすることができます。{{ic|/usr/bin/vfio-pci-override.sh}} スクリプトを作成:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
for i in /sys/devices/pci*/*/boot_vga; do&lt;br /&gt;
	if [ $(cat &amp;quot;$i&amp;quot;) -eq 0 ]; then&lt;br /&gt;
		GPU=&amp;quot;${i%/boot_vga}&amp;quot;&lt;br /&gt;
		AUDIO=&amp;quot;$(echo &amp;quot;$GPU&amp;quot; | sed -e &amp;quot;s/0$/1/&amp;quot;)&amp;quot;&lt;br /&gt;
		echo &amp;quot;vfio-pci&amp;quot; &amp;gt; &amp;quot;$GPU/driver_override&amp;quot;&lt;br /&gt;
		if [ -d &amp;quot;$AUDIO&amp;quot; ]; then&lt;br /&gt;
			echo &amp;quot;vfio-pci&amp;quot; &amp;gt; &amp;quot;$AUDIO/driver_override&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
modprobe -i vfio-pci&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/modprobe.d/vfio.conf}} を以下の内容で作成:&lt;br /&gt;
 install vfio-pci /usr/bin/vfio-pci-override.sh&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/mkinitcpio.conf}} を編集:&lt;br /&gt;
&lt;br /&gt;
MODULES からビデオドライバーを全て削除して {{ic|vfio-pci}} と {{ic|vfio_iommu_type1}} を追加してください:&lt;br /&gt;
 MODULES=(ext4 vfat vfio-pci vfio_iommu_type1)&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/modprobe.d/vfio.conf}} と {{ic|/usr/bin/vfio-pci-override.sh}} を FILES に追加してください:&lt;br /&gt;
 FILES=(/etc/modprobe.d/vfio.conf /usr/bin/vfio-pci-override.sh)&lt;br /&gt;
&lt;br /&gt;
initramfs を再生成して再起動してください:&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
&lt;br /&gt;
=== ブート GPU をゲストにパススルー ===&lt;br /&gt;
PCI パススルーをするときに {{ic|boot_vga}} とマークされた GPU は特殊なケースになります。ブートメッセージや BIOS の設定メニューなどを表示するのに BIOS がその GPU を必要とするためです。ブート GPU はパススルー時に [https://www.redhat.com/archives/vfio-users/2016-May/msg00224.html 自由に改造できる VGA ブート ROM のコピー] を作成します。システムから認識されるのは改造されたコピーになり、パススルードライバーによって不正な GPU として拒否される可能性があります。一般的には BIOS の設定でブート GPU を変更して代わりにホスト GPU を使用するか、あるいはそれが不可能な場合、マシンのホストとゲストのカードを交換することが推奨されます。&lt;br /&gt;
&lt;br /&gt;
=== IOMMU グループのバイパス (ACS 上書きパッチ) ===&lt;br /&gt;
&lt;br /&gt;
パススルーしたくない PCI デバイスもグループに入ってしまっている場合、Alex Williamson の ACS override パッチを使うことでデバイスを分離できます。その場合は [http://vfio.blogspot.com/2014/08/iommu-groups-inside-and-out.html 危険性] を承知してください。&lt;br /&gt;
&lt;br /&gt;
パッチが適用されたカーネルが必要になります。{{AUR|linux-vfio}} パッケージでカーネルをインストールするのが一番簡単です。&lt;br /&gt;
&lt;br /&gt;
さらに、ACS override パッチはカーネルのコマンドラインオプションで有効にしなければなりません。パッチファイルは以下のドキュメントを追加します:&lt;br /&gt;
&lt;br /&gt;
 pcie_acs_override =&lt;br /&gt;
         [PCIE] Override missing PCIe ACS support for:&lt;br /&gt;
     downstream&lt;br /&gt;
         All downstream ports - full ACS capabilties&lt;br /&gt;
     multifunction&lt;br /&gt;
         All multifunction devices - multifunction ACS subset&lt;br /&gt;
     id:nnnn:nnnn&lt;br /&gt;
         Specfic device - full ACS capabilities&lt;br /&gt;
         Specified as vid:did (vendor/device ID) in hex&lt;br /&gt;
&lt;br /&gt;
通常は {{ic|pcie_acs_override&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;downstream}} オプションで上手くいきます。&lt;br /&gt;
&lt;br /&gt;
インストールと設定が終わったら、[[カーネルパラメータ|ブートローダーのカーネルパラメータ]]を再設定して {{ic|pcie_acs_override&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;}} オプションが有効になった状態で新しいカーネルをロードするようにしてください。&lt;br /&gt;
&lt;br /&gt;
== QEMU で libvirt を使わない ==&lt;br /&gt;
&lt;br /&gt;
libvirt を使って仮想マシンをセットアップするかわりに、QEMU コマンドにカスタムパラメータを付けるだけで PCI パススルーを使用するように VM を起動できます。スクリプトによる設定などで有用です。&lt;br /&gt;
&lt;br /&gt;
[[#IOMMU のセットアップ]]と[[#GPU の分離]]を行ってから、[[QEMU]] の記事に従って仮想環境をセットアップして、[[QEMU#KVM を有効にする|KVM を有効]]にして {{ic|1=-device vfio-pci,host=07:00.0}} フラグを使ってください。識別子の (07:00.0) は GPU を分離するときに使用した実際のデバイスの ID に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
OVMF ファームウェアを利用するために、{{Pkg|ovmf}} パッケージをインストールして、{{ic|/usr/share/ovmf/ovmf_vars_x64.bin}} から {{ic|/tmp/my_vars.bin}} など一時的なディレクトリに UEFI 変数をコピーして QEMU コマンドに以下のパラメータを追加して OVMF のパスを指定します (パラメータの順序は重要です):&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=-drive if=pflash,format=raw,readonly,file=/usr/share/ovmf/ovmf_code_x64.bin}} - OVMF ファームウェアバイナリを指定、readonly オプションに注意してください。&lt;br /&gt;
* {{ic|1=-drive if=pflash,format=raw,file=/tmp/my_vars.bin}} - 変数のパスを指定。&lt;br /&gt;
&lt;br /&gt;
{{Note|OVMF の代わりに QEMU のデフォルトである SeaBIOS を使うこともできますが、パススルーの設定で問題が発生することがあるため推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
QEMU の記事を読んで [[QEMU#virtio ドライバーのインストール|virtio ドライバー]]の使用などパフォーマンスを向上させることができる設定を調べることを推奨します。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|1=-cpu host,kvm=off}} パラメータを使ってホストの CPU モデル情報を VM に渡して Nvidia などメーカーのデバイスドライバーから仮想環境でないと認識させる必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
==他のデバイスのパススルー==&lt;br /&gt;
===USB コントローラ===&lt;br /&gt;
マザーボードに接続された複数の USB コントローラが複数のグループにマッピングされている場合、USB デバイスの代わりに USB コントローラをパススルーすることができます。個別の USB デバイスではなくコントローラをパススルーすることには以下の利点があります:&lt;br /&gt;
&lt;br /&gt;
* 特定の操作 (スマートフォンのアップデートなど) でデバイスが切断されたり ID が変わったりしても、仮想マシンから突然認識されなくなることはありません。&lt;br /&gt;
* コントローラによって管理されている USB 端子を VM が直接扱うため、デバイスを接続・切断してもハイパーバイザに通知する必要がありません。&lt;br /&gt;
* VM を起動したときにゲストにパススルーする USB デバイスがなくなってしまっていても Libvirt はエラーを出力しません。&lt;br /&gt;
&lt;br /&gt;
GPU と違って、大抵の USB コントローラのドライバーでは VM で使用するのに特殊な設定を必要としません。副作用を起こさずにホストとゲストの間で制御を受け渡すことができます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|USB コントローラがリセットに対応していることを確認してください。[[#リセットに対応していないデバイスのパススルー]]を参照。}}&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを使うことでコントローラや端子とデバイスがどのように PCI デバイスと割り当てられているか確認することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ &amp;lt;nowiki&amp;gt;for usb_ctrl in $(find /sys/bus/usb/devices/usb* -maxdepth 0 -type l); do pci_path=&amp;quot;$(dirname &amp;quot;$(realpath &amp;quot;${usb_ctrl}&amp;quot;)&amp;quot;)&amp;quot;; echo &amp;quot;Bus $(cat &amp;quot;${usb_ctrl}/busnum&amp;quot;) --&amp;gt; $(basename $pci_path) (IOMMU group $(basename $(realpath $pci_path/iommu_group)))&amp;quot;; lsusb -s &amp;quot;$(cat &amp;quot;${usb_ctrl}/busnum&amp;quot;):&amp;quot;; echo; done&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
Bus 1 --&amp;gt; 0000:00:1a.0 (IOMMU group 4)&lt;br /&gt;
Bus 001 Device 004: ID 04f2:b217 Chicony Electronics Co., Ltd Lenovo Integrated Camera (0.3MP)&lt;br /&gt;
Bus 001 Device 007: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]&lt;br /&gt;
Bus 001 Device 008: ID 0781:5530 SanDisk Corp. Cruzer&lt;br /&gt;
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub&lt;br /&gt;
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
&lt;br /&gt;
Bus 2 --&amp;gt; 0000:00:1d.0 (IOMMU group 9)&lt;br /&gt;
Bus 002 Device 006: ID 0451:e012 Texas Instruments, Inc. TI-Nspire Calculator&lt;br /&gt;
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub&lt;br /&gt;
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub}}&lt;br /&gt;
&lt;br /&gt;
上記のノートパソコンには2つの USB コントローラによる3つの USB ポートがあり、それぞれに IOMMU グループが存在します。例として Bus 001 はひとつの USB ポートを管理していますが (SanDisk の USB ペンドライブが接続されています)、内蔵ウェブカメラや bluetooth カードなど内部デバイスも管理されています。一方 Bus 002 は接続されている電卓以外は何も管理していません。3つ目のポートは空で、リスト上には表示されていませんが、実際は Bus 002 によって管理されています。&lt;br /&gt;
&lt;br /&gt;
様々なデバイスを接続してみてどのコントローラがどのポートを管理しているか判断して、どのコントローラをパススルーするか決めたら、ゲスト設定の VM によって制御する PCI ホストデバイスのリストにコントローラを追加してください。他の設定は不要です。&lt;br /&gt;
&lt;br /&gt;
===PulseAudio で仮想マシンの音声出力をホストにパススルー===&lt;br /&gt;
libvirt を使うことで仮想マシンの音声出力をアプリケーションとしてホストに転送することが可能です。複数の音声ストリームをホストの出力に転送でき、パススルーをサポートしていない音声出力デバイスで使うことができます。転送するには [[PulseAudio]] が必要です。&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|&amp;lt;nowiki&amp;gt;#user = &amp;quot;&amp;quot;&amp;lt;/nowiki&amp;gt;}} 行のコメントを削除してください。それからクォートの中にユーザー名を入力してください。これで QEMU はユーザーの PulseAudio ストリームを転送するようになります。&lt;br /&gt;
{{hc|/etc/libvirt/qemu.conf|&lt;br /&gt;
user &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; &amp;quot;example&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
次に、libvirt の設定を変更してください。&lt;br /&gt;
&lt;br /&gt;
以下の行を:&lt;br /&gt;
&lt;br /&gt;
{{hc|virsh edit [vmname]|&lt;br /&gt;
&amp;lt;domain type&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&#039;kvm&#039;&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
以下のように変更してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|virsh edit [vmname]|&lt;br /&gt;
&amp;lt;domain type&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&#039;kvm&#039; xmlns:qemu&amp;lt;nowiki&amp;gt;=&#039;http://libvirt.org/schemas/domain/qemu/1.0&#039;&amp;lt;/nowiki&amp;gt;&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして libvirt の xml ファイルの末尾に QEMU PulseAudio 環境変数を設定してください。&lt;br /&gt;
&lt;br /&gt;
以下の行を:&lt;br /&gt;
&lt;br /&gt;
{{hc|virsh edit [vmname]|&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;
{{hc|virsh edit [vmname]|&lt;br /&gt;
    &amp;lt;/devices&amp;gt;&lt;br /&gt;
      &amp;lt;qemu:commandline&amp;gt;&lt;br /&gt;
        &amp;lt;qemu:env name&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&#039;QEMU_AUDIO_DRV&#039; value&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&#039;pa&#039;/&amp;gt;&lt;br /&gt;
        &amp;lt;qemu:env name&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&#039;QEMU_PA_SERVER&#039; value&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&#039;/run/user/1000/pulse/native&#039;/&amp;gt;&lt;br /&gt;
      &amp;lt;/qemu:commandline&amp;gt;&lt;br /&gt;
 &amp;lt;/domain&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
user ディレクトリの 1000 はあなたが使用しているユーザーの uid に置き換えてください ({{ic|id}} コマンドを実行することで確認できます)。先に進む前にファイルを保存して終了しないと変更が登録されません。終了後に {{ic|&amp;lt;nowiki&amp;gt;Domain [vmname] XML configuration edited.&amp;lt;/nowiki&amp;gt;}} というメッセージが表示されれば、変更が適用されたということです。&lt;br /&gt;
&lt;br /&gt;
設定したら {{ic|libvirtd}} サービスと {{ic|pulseaudio.service}} の[[Systemd/ユーザー|ユーザーサービス]]を再起動してください。&lt;br /&gt;
&lt;br /&gt;
これで仮想マシンの音声出力はアプリケーションとしてホストに転送されるようになります。{{Pkg|pavucontrol}} アプリケーションを使うことで出力デバイスを制御できます。Windows ゲストの場合、[[#ビデオカードの HDMI 出力からの音声がおかしい|メッセージシグナル割り込み]]を使用しないとノイズが発生するので注意してください。&lt;br /&gt;
&lt;br /&gt;
===注意事項===&lt;br /&gt;
====リセットに対応していないデバイスのパススルー====&lt;br /&gt;
仮想マシンのシャットダウン時、ゲストが使用していたデバイスは全てシャットダウンの準備時に OS によって deinitialize されます。この状態ではデバイスは機能しなくなり、通常通りに機能させるには電源を入れ直さなくてはなりません。Linux は独自にパワーサイクルを処理しますが、デバイスのリセット方法がわからない場合、無効状態のままになりデバイスが利用不可能になります。Libvirt と Qemu はどちらも仮想マシンを完全に停止する前に全てのホスト PCI デバイスが再接続できる状態になっていることを求めるため、デバイスがリセットできない状態になると、&amp;quot;Shutting down&amp;quot; 状態でフリーズしてホストマシンを再起動するまで仮想マシンを再起動できなくなってしまいます。そのため、カーネルによってリセットが可能な PCI デバイスのみパススルーすることを推奨します。PCI デバイスの sysfs ノードに {{ic|reset}} ファイルが存在するかどうかでリセット可能かどうか確認できます (例: {{ic|/sys/bus/pci/devices/0000:00:1a.0/reset}})。&lt;br /&gt;
&lt;br /&gt;
以下の bash コマンドを実行するとどのデバイスがリセットできてどのデバイスがリセットできないか表示されます:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;for iommu_group in $(find /sys/kernel/iommu_groups/ -maxdepth 1 -mindepth 1 -type d);do echo &amp;quot;IOMMU group $(basename &amp;quot;$iommu_group&amp;quot;)&amp;quot;; for device in $(\ls -1 &amp;quot;$iommu_group&amp;quot;/devices/); do if [[ -e &amp;quot;$iommu_group&amp;quot;/devices/&amp;quot;$device&amp;quot;/reset ]]; then echo -n &amp;quot;[RESET]&amp;quot;; fi; echo -n $&#039;\t&#039;;lspci -nns &amp;quot;$device&amp;quot;; done; done&amp;lt;/nowiki&amp;gt;|&lt;br /&gt;
IOMMU group 0&lt;br /&gt;
	00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v2/Ivy Bridge DRAM Controller [8086:0158] (rev 09)&lt;br /&gt;
IOMMU group 1&lt;br /&gt;
	00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port [8086:0151] (rev 09)&lt;br /&gt;
	01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK208 [GeForce GT 720] [10de:1288] (rev a1)&lt;br /&gt;
	01:00.1 Audio device [0403]: NVIDIA Corporation GK208 HDMI/DP Audio Controller [10de:0e0f] (rev a1)&lt;br /&gt;
IOMMU group 2&lt;br /&gt;
	00:14.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller [8086:1e31] (rev 04)&lt;br /&gt;
IOMMU group 4&lt;br /&gt;
[RESET]	00:1a.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 [8086:1e2d] (rev 04)&lt;br /&gt;
IOMMU group 5&lt;br /&gt;
[RESET]	00:1b.0 Audio device [0403]: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller [8086:1e20] (rev 04)&lt;br /&gt;
IOMMU group 10&lt;br /&gt;
[RESET]	00:1d.0 USB controller [0c03]: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 [8086:1e26] (rev 04)&lt;br /&gt;
IOMMU group 13&lt;br /&gt;
	06:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)&lt;br /&gt;
	06:00.1 Audio device [0403]: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記の場合 00:14.0 の xHCI USB コントローラはリセットができないため、仮想マシンが正しくシャットダウンできなくなります。00:1b.0 の内蔵サウンドカードと 00:1a.0 および 00:1d.0 のコントローラはリセット可能であるため問題が起こりません。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
以下で問題が見つけられない場合、[[QEMU#トラブルシューティング]]も見てください。&lt;br /&gt;
&lt;br /&gt;
===Windows の仮想マシンに NVIDIA の GPU をパススルーした場合に &amp;quot;Error 43 : Driver failed to load&amp;quot;===&lt;br /&gt;
{{Note|以下の設定により Nvidia ドライバーによって起動時に SYSTEM_THREAD_EXCEPTION_NOT_HANDLED でクラッシュする問題も解決します。}}&lt;br /&gt;
&lt;br /&gt;
バージョン 337.88 から、Windows の Nvidia ドライバーはハイパーバイザが動作しているかどうかを確認して、動作していることを認識すると Windows のデバイスマネージャに Error 43 を吐くようになりました。QEMU 2.5.0 と libvirt 1.3.3 以上では、ハイパーバイザの vendor_id を偽装することができ、Nvidia ドライバーを騙してロードさせることができます。QEMU コマンドの cpu パラメータに {{ic|&amp;lt;nowiki&amp;gt;hv_vendor_id=whatever&amp;lt;/nowiki&amp;gt;}} を追加するか、libvirt のドメイン設定に以下の行を追加するだけです。ID は12文字ちょうどの英数字 (例: &#039;123456789ab&#039;) に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ virsh edit [vmname]|&amp;lt;nowiki&amp;gt;...&lt;br /&gt;
&amp;lt;features&amp;gt;&lt;br /&gt;
	&amp;lt;hyperv&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
		&amp;lt;vendor_id state=&#039;on&#039; value=&#039;whatever&#039;/&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
	&amp;lt;/hyperv&amp;gt;&lt;br /&gt;
	...&lt;br /&gt;
	&amp;lt;kvm&amp;gt;&lt;br /&gt;
	&amp;lt;hidden state=&#039;on&#039;/&amp;gt;&lt;br /&gt;
	&amp;lt;/kvm&amp;gt;&lt;br /&gt;
&amp;lt;/features&amp;gt;&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
古いバージョンの QEMU や libvirt を使用している場合は、ハイパーバイザの拡張を無効化する必要があり、かなり性能が落ちてしまいます。libvirt のドメイン設定ファイルに以下を記述してください:&lt;br /&gt;
{{hc|$ virsh edit [vmname]|&amp;lt;nowiki&amp;gt;...&lt;br /&gt;
&amp;lt;features&amp;gt;&lt;br /&gt;
	&amp;lt;hyperv&amp;gt;&lt;br /&gt;
		&amp;lt;relaxed state=&#039;on&#039;/&amp;gt;&lt;br /&gt;
		&amp;lt;vapic state=&#039;on&#039;/&amp;gt;&lt;br /&gt;
		&amp;lt;spinlocks state=&#039;on&#039; retries=&#039;8191&#039;/&amp;gt;&lt;br /&gt;
	&amp;lt;/hyperv&amp;gt;&lt;br /&gt;
	...&lt;br /&gt;
&amp;lt;/features&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;clock offset=&#039;localtime&#039;&amp;gt;&lt;br /&gt;
	&amp;lt;timer name=&#039;hypervclock&#039; present=&#039;yes&#039;/&amp;gt;&lt;br /&gt;
&amp;lt;/clock&amp;gt;&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;clock offset=&#039;localtime&#039;&amp;gt;&lt;br /&gt;
	&amp;lt;timer name=&#039;hypervclock&#039; present=&#039;no&#039;/&amp;gt;&lt;br /&gt;
&amp;lt;/clock&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;features&amp;gt;&lt;br /&gt;
	&amp;lt;kvm&amp;gt;&lt;br /&gt;
	&amp;lt;hidden state=&#039;on&#039;/&amp;gt;&lt;br /&gt;
	&amp;lt;/kvm&amp;gt;&lt;br /&gt;
	...&lt;br /&gt;
	&amp;lt;hyperv&amp;gt;&lt;br /&gt;
		&amp;lt;relaxed state=&#039;off&#039;/&amp;gt;&lt;br /&gt;
		&amp;lt;vapic state=&#039;off&#039;/&amp;gt;&lt;br /&gt;
		&amp;lt;spinlocks state=&#039;off&#039;/&amp;gt;&lt;br /&gt;
	&amp;lt;/hyperv&amp;gt;&lt;br /&gt;
	...&lt;br /&gt;
&amp;lt;/features&amp;gt;&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
====VM を起動した後に dmesg に &amp;quot;BAR 3: can&#039;t reserve [mem]&amp;quot; エラーが表示される====&lt;br /&gt;
&lt;br /&gt;
上記の方法を試してもコード 43 が発生する場合、dmesg にメモリ予約エラーが記録されていないか確認してください:&lt;br /&gt;
&lt;br /&gt;
 vfio-pci 0000:09:00.0: BAR 3: can&#039;t reserve [mem 0xf0000000-0xf1ffffff 64bit pref]&lt;br /&gt;
&lt;br /&gt;
上記のようなメッセージが出力される場合、グラフィックカードを接続している PCI ブリッジを確認してください。以下のコマンドでデバイスツリーを確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ lspci -t&lt;br /&gt;
&lt;br /&gt;
VM を起動する前に以下のコマンドを実行してください (ID は上記のコマンドで確認できた実際の ID に置き換えてください):&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /sys/bus/pci/devices/0000\:00\:03.1/remove&lt;br /&gt;
 # echo 1 &amp;gt; /sys/bus/pci/rescan&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://www.linuxquestions.org/questions/linux-kernel-70/kernel-fails-to-assign-memory-to-pcie-device-4175487043/ こちらの記事] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Note|おそらく {{ic|video&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;efifb:off}} [[カーネルパラメータ]]の設定も必要です [https://pve.proxmox.com/wiki/Pci_passthrough#BAR_3:_can.27t_reserve_.5Bmem.5D_error]。}}&lt;br /&gt;
&lt;br /&gt;
===CPU 例外によってクラッシュが発生する===&lt;br /&gt;
[[QEMU#特定の Windows のゲームやアプリケーションでクラッシュやブルスクリーンが発生する]]を参照。&lt;br /&gt;
&lt;br /&gt;
===Windows の仮想マシンを起動したときに &amp;quot;System Thread Exception Not Handled&amp;quot;===&lt;br /&gt;
[[QEMU#Windows の仮想マシンを起動したときに &amp;quot;System Thread Exception Not Handled&amp;quot;]] を参照。&lt;br /&gt;
&lt;br /&gt;
===ビデオカードの HDMI 出力からの音声がおかしい===&lt;br /&gt;
ビデオカードの HDMI 端子を使用したときに、ユーザーによっては仮想マシンの音声出力が遅れたり音が割れたりすることがあります。大抵の場合、グラフィックも遅れるようになります。解決方法としてはデフォルトの割り込み方法 (Line-Based Interrupts) の代わりに MSI (Message Signaled-Based Interrupts) を有効にする方法があります。&lt;br /&gt;
&lt;br /&gt;
MSI がサポートされているか・有効になっているか確認するには、以下のコマンドを root で実行してください:&lt;br /&gt;
 # lspci -vs $device | grep &#039;MSI:&#039;&lt;br /&gt;
`$device` はカードのアドレスに置き換えてください (例: `01:00.0`)。&lt;br /&gt;
&lt;br /&gt;
出力は以下のようになります:&lt;br /&gt;
 Capabilities: [60] MSI: Enable&#039;&#039;&#039;-&#039;&#039;&#039; Count=1/1 Maskable- 64bit+&lt;br /&gt;
&lt;br /&gt;
{{ic|Enable}} の後ろの {{ic|-}} は MSI がサポートされおり VM によって使われていないことを意味します。{{ic|+}} であれば VM によって使われています。&lt;br /&gt;
&lt;br /&gt;
有効にする手順は非常に複雑です。[https://forums.guru3d.com/showthread.php?t=378044 こちら] に設定の手順と概要が載っています。&lt;br /&gt;
&lt;br /&gt;
他にも [http://lime-technology.com/wiki/index.php/UnRAID_6/VM_Guest_Support#Enable_MSI_for_Interrupts_to_Fix_HDMI_Audio_Support lime-technology の wiki] や [http://vfio.blogspot.it/2014/09/vfio-interrupts-and-how-to-coax-windows.html VFIO tips and tricks] の記事にヒントが載っています。&lt;br /&gt;
&lt;br /&gt;
インターネット上には {{ic|MSI_util}} という名前のツールが存在しますが、64ビットの Windows 10 では動作しないことがあります。&lt;br /&gt;
&lt;br /&gt;
nVidia カードの 0 function の MSI を有効にするだけでは問題が解決しない場合 ({{ic|01:00.0 VGA compatible controller: NVIDIA Corporation GM206 [GeForce GTX 960] (rev a1) (prog-if 00 [VGA controller])}})、他の function の MSI も有効にする必要があります ({{ic|01:00.1 Audio device: NVIDIA Corporation Device 0fba (rev a1)}})。&lt;br /&gt;
&lt;br /&gt;
=== intel_iommu を有効にしたときにホスト側で HDMI から音声が出力されない ===&lt;br /&gt;
&lt;br /&gt;
{{ic|intel_iommu}} を有効にしたときにホストの Intel GPU の HDMI 出力デバイスが使えなくなった場合、{{ic|igfx_off}} (i.e. {{ic|intel_iommu&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;on,igfx_off}}) オプションを設定することで音声が出力できるようになることがあります。{{ic|igfx_off}} の設定について詳しくは [https://www.kernel.org/doc/Documentation/Intel-IOMMU.txt Intel-IOMMU.txt] の {{ic|Graphics Problems?}} を読んでください。&lt;br /&gt;
&lt;br /&gt;
=== vfio_pci を有効化したあとに X が起動しない ===&lt;br /&gt;
&lt;br /&gt;
ホスト GPU がセカンダリ GPU として認識されている場合、ゲスト GPU のドライバーをロードしようとしたときに X がエラーを起こします。Xorg の設定でホスト GPU の BusID を指定することで解決します。BusID  は lspci や Xorg のログで確認できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-intel.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;Intel GPU&amp;quot;&lt;br /&gt;
        Driver &amp;quot;modesetting&amp;quot;&lt;br /&gt;
        BusID  &amp;quot;PCI:0:2:0&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://www.redhat.com/archives/vfio-users/2016-August/msg00025.html] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Chromium が内蔵グラフィックをアクセラレーションに使わない ===&lt;br /&gt;
&lt;br /&gt;
Chromium はシステム内の GPU をできるかぎり多く検出してから使用する GPU を選択します (大抵はディスクリートの NVIDIA/AMD グラフィック)。使用する GPU は PCI デバイスによって選択されます。OpenGL レンダラが利用できるかどうかは考慮されません。結果として Chromium は内蔵 GPU を無視して、ゲスト VM が動作していてホスト環境から GPU が使えなくなっているかどうかに関係なく、{{ic|vfio-pci}} ドライバーに紐付けられた専用 GPU を使用しようとすることがあります。その場合 GPU が使えないためにソフトウェアレンダリングが使われることになります (CPU の負担が高まり、動画の再生が途切れがちになったりスクロールがスムーズに機能しなくなったりします)。&lt;br /&gt;
&lt;br /&gt;
解決方法は [[Chromium 設定#特定の GPU の使用を強制する]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== VM がひとつしかコアを使わない ===&lt;br /&gt;
&lt;br /&gt;
IOMMU を有効にしてコアのカウントを 1 よりも大きくしても、VM が使用する CPU コアとスレッドがひとつしか現れないことがあります。解決するには {{ic|virt-manager}} で &amp;quot;Manually set CPU topology&amp;quot; を有効にして使用したい CPU ソケット・コア・スレッド数を設定してください。&amp;quot;Threads&amp;quot; は合計スレッド数ではなく各 CPU ごとのスレッド数なので注意してください。&lt;br /&gt;
&lt;br /&gt;
=== パススルーは機能しているのに出力が表示されない ===&lt;br /&gt;
&lt;br /&gt;
virt-manager を使用している場合、仮想マシンで UEFI ファームウェアが選択されていることを確認してください。また、仮想マシンに適切なデバイスが渡されていることも確認してください。&lt;br /&gt;
&lt;br /&gt;
=== virt-manager のパーミッション問題 ===&lt;br /&gt;
&lt;br /&gt;
virt-manager でパーミッションエラーが発生する場合、以下を {{ic|/etc/libvirt/qemu.conf}} に追加してください:&lt;br /&gt;
&lt;br /&gt;
 group=&amp;quot;kvm&amp;quot;&lt;br /&gt;
 user=&amp;quot;&#039;&#039;user&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
上記で解決しない場合は使用しているユーザーアカウントを {{ic|kvm}} と {{ic|libvirt}} [[グループ]]に追加してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=162768 Arch Linux フォーラムの議論] | [https://archive.is/kZYMt アーカイブリンク]&lt;br /&gt;
* [https://docs.google.com/spreadsheet/ccc?key=0Aryg5nO-kBebdFozaW9tUWdVd2VHM0lvck95TUlpMlE ユーザーによるハードウェア互換リスト]&lt;br /&gt;
* [https://pastebin.com/rcnUZCv7 https://www.youtube.com/watch?v=37D2bRsthfI のサンプルスクリプト]&lt;br /&gt;
* [https://vfio.blogspot.com/ PCI パススルーの完全なチュートリアル]&lt;br /&gt;
* [https://www.redhat.com/archives/vfio-users/ VFIO users メーリングリスト]&lt;br /&gt;
* [https://webchat.freenode.net/?channels=vfio-users #vfio-users on freenode]&lt;br /&gt;
* [https://www.youtube.com/watch?v=aLeWg11ZBn0 YouTube: Level1Linux - Ryzen による GPU パススルー]&lt;/div&gt;</summary>
		<author><name>J8takagi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=USB_%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2&amp;diff=13419</id>
		<title>USB インストールメディア</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=USB_%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2&amp;diff=13419"/>
		<updated>2018-09-03T09:49:04Z</updated>

		<summary type="html">&lt;p&gt;J8takagi: /* macOS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Arch の入手とインストール]]&lt;br /&gt;
[[ar:USB flash installation media]]&lt;br /&gt;
[[bg:USB flash installation media]]&lt;br /&gt;
[[de:Installation von einem USB-Stick]]&lt;br /&gt;
[[en:USB flash installation media]]&lt;br /&gt;
[[es:USB flash installation media]]&lt;br /&gt;
[[fr:Créer une clef USB avec l&#039;ISO Arch Linux]]&lt;br /&gt;
[[it:USB flash installation media]]&lt;br /&gt;
[[ro:Instalare prin USB]]&lt;br /&gt;
[[ru:USB flash installation media]]&lt;br /&gt;
[[tr:USB ile kurulum]]&lt;br /&gt;
[[zh-hans:USB flash installation media]]&lt;br /&gt;
[[zh-hant:USB flash installation media]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|光学ディスクドライブ}}&lt;br /&gt;
{{Related|Archiso}}&lt;br /&gt;
{{Related|マルチブート USB ドライブ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
このページでは Arch Linux のインストーラーを USB ドライブ (別名: &#039;&#039;&amp;quot;フラッシュドライブ&amp;quot;, &amp;quot;USB スティック&amp;quot;, &amp;quot;USB キー&amp;quot;&#039;&#039; など) に書き込む様々な方法を記述します。LiveCD のようなシステム (ここでは &#039;&#039;&amp;quot;LiveUSB&amp;quot;&#039;&#039;) は [[Wikipedia:ja:SquashFS|SquashFS]] を使うので、コンピュータを一度シャットダウンすると、すべての変更は破棄されます。&lt;br /&gt;
&lt;br /&gt;
USB ドライブからの Arch Linux のフルインストールをしたい場合 (すなわち永続的な設定もする場合) は、[[USB キーに Arch Linux をインストール]]を参照してください。ブータブル Arch Linux USB スティックをレスキュー USB として使いたい場合は、[[Change Root]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== BIOS・UEFI ブータブル USB ==&lt;br /&gt;
&lt;br /&gt;
=== dd を使う ===&lt;br /&gt;
{{Note|この方法はシンプルなので推奨される方法です。この方法で上手く行かない時は下の[[#手動フォーマットを使う|手動フォーマットを使う]]方法に進んで下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|この方法では {{ic|/dev/&#039;&#039;&#039;sdx&#039;&#039;&#039;}} の全てのデータを完全に消去します。Arch ISO イメージを使った後に USB ドライブをストレージデバイスとして使える状態に戻したい場合、root で {{ic|wipefs --all /dev/&#039;&#039;&#039;sdx&#039;&#039;&#039;}} を実行して iso9660 ファイルシステムの署名を削除してから、USB ドライブを[[パーティショニング]]・[[フォーマット]]してください。}}&lt;br /&gt;
&lt;br /&gt;
==== GNU/Linux ====&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|lsblk}} を使って USB フラッシュインストールメディアがマウント&#039;&#039;&#039;されていない&#039;&#039;&#039;ことを確認して下さい。}}&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してください ({{ic|/dev/&#039;&#039;&#039;sdx&#039;&#039;&#039;}} は USB ドライブに置き換えてください、例: {{ic|/dev/sdb}}): &lt;br /&gt;
&lt;br /&gt;
 # dd bs=4M if=/path/to/archlinux.iso of=/dev/&#039;&#039;&#039;sdx&#039;&#039;&#039; status=progress &amp;amp;&amp;amp; sync&lt;br /&gt;
&lt;br /&gt;
{{Warning|パーティション番号を追加してはいけません。つまり {{ic|/dev/sdb&#039;&#039;&#039;1&#039;&#039;&#039;}} などと指定してはいけません。}}&lt;br /&gt;
&lt;br /&gt;
データが完全に書き込まれたことを確認するため &#039;&#039;sync&#039;&#039; コマンドが完了するまで待ってから USB ドライブを抜いてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|dd}} コマンドに関する詳細は [[Core Utilities#dd]] を参照。&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
&lt;br /&gt;
===== Rufus を使う ===== &lt;br /&gt;
[https://rufus.akeo.ie/ Rufus] は多目的の USB ISO 書き込みツールです。Arch Linux の ISO を選択して、ブータブルな Arch Linux インストーラーを作成したい USB ドライブを選択して Start をクリックしてください。&lt;br /&gt;
&lt;br /&gt;
Rufus はドライブが正しくフォーマットされているかどうか気にせず、GUI が用意されているため、簡単に使えるツールです。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;&#039;DD&#039;&#039;&#039; モードを選択しないとイメージの転送が正しく行われません。}}&lt;br /&gt;
&lt;br /&gt;
===== USBwriter を使う =====&lt;br /&gt;
&lt;br /&gt;
Linux の {{ic|dd}} と同じように簡単に使うことができます。Arch Linux の ISO をダウンロードして、管理者権限で [https://sourceforge.net/p/usbwriter/wiki/Documentation/ USBwriter] ユーティリティを使って USB フラッシュメモリに書き込むだけです。&lt;br /&gt;
&lt;br /&gt;
===== win32diskimager を使う =====&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/projects/win32diskimager/ win32diskimager] は Windows 用のグラフィカルな USB ISO 書き込みツールです。ISO イメージを選択して、書き込みを行う USB ドライブ文字を選択し (先にフォーマットする必要があります)、Write をクリックしてください。&lt;br /&gt;
&lt;br /&gt;
===== Cygwin を使う =====&lt;br /&gt;
&lt;br /&gt;
[http://www.cygwin.com/ Cygwin] をインストールするときに {{ic|dd}} パッケージを選択してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Cygwin をインストールしたくないのならば、Windows 対応の {{ic|dd}} が [http://www.chrysocome.net/dd こちら] からダウンロードできます。詳しくは次のセクションを見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
イメージファイルをホームディレクトリに置いてください、例:&lt;br /&gt;
&lt;br /&gt;
 C:\cygwin\home\John\&lt;br /&gt;
&lt;br /&gt;
管理者として cygwin を実行します (cygwin からのハードウェアへのアクセスが必要です)。次のコマンドで USB ドライブに書き込みます:&lt;br /&gt;
&lt;br /&gt;
 dd if=image.iso of=\\.\&#039;&#039;&#039;x&#039;&#039;&#039;: bs=4M&lt;br /&gt;
&lt;br /&gt;
image.iso は {{ic|cygwin}} ディレクトリ中の iso イメージファイルのパスに、{{ic|\\.\&#039;&#039;&#039;x&#039;&#039;&#039;}} は USB デバイスに置き換えてください。&#039;&#039;&#039;x&#039;&#039;&#039; は windows が決めた文字になります、例: {{ic|\\.\d:}}。&lt;br /&gt;
&lt;br /&gt;
cygwin 6.0 では正しいパーティションを見つけてください:&lt;br /&gt;
&lt;br /&gt;
 cat /proc/partitions&lt;br /&gt;
&lt;br /&gt;
そして出力を見て ISO イメージを焼きこみます。例:&lt;br /&gt;
&lt;br /&gt;
{{Warning|この作業は USB スティックの全てのファイルを完全に消去します、実行する前にスティックに重要なファイルが残っていないか確認してください。}}&lt;br /&gt;
&lt;br /&gt;
 dd if=image.iso of=/dev/sdb bs=4M&lt;br /&gt;
&lt;br /&gt;
===== dd for Windows =====&lt;br /&gt;
&lt;br /&gt;
{{Note|この方法を使うと起動時に &amp;quot;isolinux.bin missing or corrupt&amp;quot; 問題が起こることがあります。}}&lt;br /&gt;
&lt;br /&gt;
Windows に対応した GPL ライセンスの dd が http://www.chrysocome.net/dd から利用できます。Cygwin と比べてダウンロード容量は少なくてすみます。使用方法は、上の Cygwin の方法に従って下さい。&lt;br /&gt;
&lt;br /&gt;
初めに dd for Windows の最新バージョンをダウンロードしてください。ダウンロードが完了したら、圧縮ファイルを展開してください。&lt;br /&gt;
&lt;br /&gt;
そして、管理者として {{ic|command prompt}} を立ち上げてください。次に、ダウンロードしたディレクトリにディレクトリを変更 ({{ic|cd}}) してください。&lt;br /&gt;
&lt;br /&gt;
Arch Linux の ISO は dd の実行可能ファイルがある場所と同じフォルダに置いた方が便利です、どこか他のところに ISO を置いた場合はフルパスを記述する必要があります。&lt;br /&gt;
&lt;br /&gt;
使用するコマンドは以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 # dd if=&#039;&#039;archlinux-2017-XX-YY-x86_64.iso&#039;&#039; od=\\.\&#039;&#039;x&#039;&#039;: bs=4M&lt;br /&gt;
&lt;br /&gt;
{{Note|Windows のドライブ文字はパーティションに紐付けられています。ディスク全体を選択できるようにするため、&#039;&#039;dd for Windows&#039;&#039; には {{ic|od}} パラメータが存在し、上記のコマンドで使用しています。このパラメータが使えるのは &#039;&#039;dd for Windows&#039;&#039; だけであり、他の &#039;&#039;dd&#039;&#039; 実装では存在しないので注意してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|od}} を使用するため、選択されたディスクのパーティションは全て破壊されます。実行する前に dd のコピー先のドライブが正しいことを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
(&amp;quot;x&amp;quot; になっている) 日付やドライブ文字は適当な文字列に置き換えてください。実際に使用するコマンドは以下のようになります:&lt;br /&gt;
&lt;br /&gt;
 # dd if=ISOs\archlinux-2017.04.01-x86_64.iso od=\\.\d: bs=4M&lt;br /&gt;
&lt;br /&gt;
{{Note|もしくは、ドライブ文字を {{ic|\\.\PhysicalDrive&#039;&#039;X&#039;&#039;}} に置き換えてください ({{ic|&#039;&#039;X&#039;&#039;}} は0から始まる物理ドライブ番号になります)。例:&lt;br /&gt;
{{bc|1=# dd if=ISOs\archlinux-2017.04.01-x86_64.iso of=\\.\PhysicalDrive1 bs=4M}}&lt;br /&gt;
物理ドライブ番号はコマンドプロンプトで {{ic|wmic diskdrive list brief}} を実行するか {{ic|dd --list}} を使うことで確認できます。エクスプローラーのウィンドウは全て閉じて下さい。閉じていないと dd がエラーを吐きます。}}&lt;br /&gt;
&lt;br /&gt;
==== macOS ====&lt;br /&gt;
&lt;br /&gt;
まず USB ドライブを確認する必要があります。{{ic|/Applications/Utilities/Terminal}} を開いて以下のコマンドでストレージデバイスを全て確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ diskutil list&lt;br /&gt;
&lt;br /&gt;
USB デバイスは {{ic|/dev/disk2 (external, physical)}} というふうに表示されます。名前や容量から消去したいデバイスであることを確認できたら、識別子を使って下のコマンドを実行してください ({{ic|/dev/diskX}} を確認できた識別子に置き換えてください)。&lt;br /&gt;
&lt;br /&gt;
通常 masOS では USB デバイスは自動的にマウントされるため、{{ic|dd}} を使ってブロック単位で書き込む前にアンマウントする必要があります (エジェクトではありません)。ターミナルで、以下を実行:&lt;br /&gt;
&lt;br /&gt;
 $ diskutil unmountDisk /dev/diskX&lt;br /&gt;
&lt;br /&gt;
それから ISO イメージファイルをデバイスにコピーしてください。{{ic|dd}} コマンドは Linux のものと似ていますが、&#039;disk&#039; の前に &#039;r&#039; を指定して raw モードを使うことで高速に転送できます:&lt;br /&gt;
&lt;br /&gt;
 $ sudo dd if=path/to/arch.iso of=/dev/&#039;&#039;&#039;r&#039;&#039;&#039;diskX bs=1M&lt;br /&gt;
&lt;br /&gt;
完了すると macOS が「セットしたディスクは、このコンピュータで読み取れないディスクでした。」とエラーを吐くことがあります。「無視」を選択してください。これで USB デバイスはブータブルになります。&lt;br /&gt;
&lt;br /&gt;
=== 手動フォーマットを使う ===&lt;br /&gt;
&lt;br /&gt;
==== GNU/Linux ====&lt;br /&gt;
&lt;br /&gt;
この方法は {{ic|dd}} でイメージを直接書き込むより少し複雑ですが、ドライブをデータストレージとして使える状態のままにすることができます (既存の[[パーティショニング|パーティション分割されたデバイス]]の中のパーティションに ISO をインストールします)。&lt;br /&gt;
&lt;br /&gt;
 {{Note|以下の文中にあるコマンドで使っている、書き込み先の {{ic|/dev/sd&#039;&#039;&#039;Xn&#039;&#039;&#039;}} は適当なパーティションに置き換えてください。}}&lt;br /&gt;
&lt;br /&gt;
* 最新の {{Pkg|syslinux}} パッケージ (バージョン 6.02 以降) がシステムにインストールされているか確認してください。&lt;br /&gt;
&lt;br /&gt;
* MBR (msdos) パーティションテーブルには FAT32 ファイルシステムを含むパーティションが少なくともひとつ必要です。存在しない場合、次に進む前にパーティションやファイルシステムを作成してください。&lt;br /&gt;
&lt;br /&gt;
* ISO イメージをマウントして、USB フラッシュドライブの FAT32 ファイルシステムをマウントし、ISO イメージの中身をコピーしてください。そして ISO イメージをアンマウントして、FAT32 パーティションはマウントされた状態のままにします (後で使います)。例:&lt;br /&gt;
 # mkdir -p /mnt/{iso,usb}&lt;br /&gt;
 # mount -o loop archlinux-2017.04.01-x86_64.iso /mnt/iso&lt;br /&gt;
 # mount /dev/sd&#039;&#039;&#039;Xn&#039;&#039;&#039; /mnt/usb&lt;br /&gt;
 # cp -a /mnt/iso/* /mnt/usb&lt;br /&gt;
 # sync&lt;br /&gt;
 # umount /mnt/iso&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Archiso]] の代わりに [[Archboot]] を使用する場合、以下の手順は必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
* 起動するにはラベルか [[UUID]] で起動するパーティションを選択する必要があります。デフォルトでは {{ic|ARCH_2017&#039;&#039;&#039;XX&#039;&#039;&#039;}} というラベルが使われます (ラベルの文字列はリリース年月になります)。そのため、&#039;&#039;gparted&#039;&#039; を使うなどしてパーティションのラベルを正しく設定しなければなりません。また、{{ic|/mnt/usb/arch/boot/syslinux/archiso_sys.cfg}} (BIOS ブートの場合) や {{ic|/mnt/usb/loader/entries/archiso-x86_64.conf}} (UEFI ブートの場合) の {{ic|1=archisolabel=ARCH_2017&#039;&#039;&#039;XX&#039;&#039;&#039;}} で終わる行を変更することで使用するラベルは変更できます。UUID を使用したい場合、{{ic|1=archiso&#039;&#039;device&#039;&#039;=/dev/disk/by-uuid/&#039;&#039;&#039;YOUR-UUID&#039;&#039;&#039;}} と置き換えてください。UUID は {{ic|1=blkid -o value -s UUID /dev/sd&#039;&#039;&#039;Xn&#039;&#039;&#039;}} で確認することができます。&lt;br /&gt;
&lt;br /&gt;
 {{Warning|ラベルや UUID が間違っていると作成したメディアから起動できなくなります。}}&lt;br /&gt;
&lt;br /&gt;
* Syslinux は既に {{ic|/mnt/usb/arch/boot/syslinux}} にプリインストールされています。[[Syslinux#手動インストール]]に従ってフォルダに完全にインストールしてください。&lt;br /&gt;
** (ISO の) USB に存在している既存の Syslinux モジュール ({{ic|*.c32}} ファイル) を syslinux パッケージに含まれているファイルで上書き ({{ic|/usr/lib/syslinux/bios}} に存在します)。この手順はバージョンの不一致でブートに問題が生じないようにするために必要です。 {{bc|# cp /usr/lib/syslinux/bios/*.c32 /mnt/usb/arch/boot/syslinux}}&lt;br /&gt;
** 以下のコマンドを実行: {{bc|# extlinux --install /mnt/usb/arch/boot/syslinux}}&lt;br /&gt;
** パーティションをアンマウント ({{ic|umount /mnt/usb}}) して USB デバイスに MBR あるいは GPT パーティションテーブルをインストール。&lt;br /&gt;
&lt;br /&gt;
* パーティションを active (あるいは “bootable”) に設定。&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* UEFI ブータブル USB を作成するのに &#039;&#039;&#039;Bootable USB Creator ユーティリティ&#039;&#039;&#039;を使ってはいけません。手動フォーマットの場合、USB ドライブに ISO を dd するのに &#039;&#039;dd for Windows&#039;&#039; を使わないで下さい。&lt;br /&gt;
* 下のコマンド内の &#039;&#039;&#039;X:&#039;&#039;&#039; は Windows での USB フラッシュドライブを意味しています。&lt;br /&gt;
* Windows はパスを分けるのにバックスラッシュ {{ic|\}} を使っているので、下のコマンドでもバックスラッシュを使っています。&lt;br /&gt;
* 全てのコマンドは Windows のコマンドプロンプトで&#039;&#039;&#039;管理者として&#039;&#039;&#039;実行する必要があります。&lt;br /&gt;
* {{ic|&amp;gt;}} は Windows のコマンドプロンプトを示しています。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* [http://rufus.akeo.ie/ Rufus USB partitioner] を使って USB ドライブをパーティション・フォーマットしてください。パーティションスキームは &#039;&#039;&#039;MBR for BIOS and UEFI&#039;&#039;&#039; をファイルシステムは &#039;&#039;&#039;FAT32&#039;&#039;&#039;を選んで下さい。&amp;quot;Create a bootable disk using ISO image&amp;quot; と &amp;quot;Create extended label and icon files&amp;quot; オプションのチェックを外して下さい。&lt;br /&gt;
&lt;br /&gt;
* USB フラッシュドライブ {{ic|X:}} の&#039;&#039;&#039;ボリュームラベル&#039;&#039;&#039;を {{ic|&amp;lt;ISO&amp;gt;\loader\entries\archiso-x86_64.conf}} の {{ic|1=archisolabel=}} に記述されている LABEL と一致するように変更してください。この手順は公式 ISO ([[Archiso]]) の代わりに [[Archboot]] を使っている場合は必要ありません。この設定は Rufus でも行うことができます。&lt;br /&gt;
&lt;br /&gt;
* ISO を (ZIP アーカイブの解凍と同じように) USB フラッシュドライブに [http://7-zip.org/ 7-Zip] を使って展開してください。&lt;br /&gt;
&lt;br /&gt;
* https://www.kernel.org/pub/linux/utils/boot/syslinux/ から最新の公式 syslinux 6.xx バイナリ (zip ファイル) をダウンロードして展開してください。Syslinux のバージョンは ISO イメージで使われているバージョンと合わせてください。&lt;br /&gt;
&lt;br /&gt;
* 以下のコマンドを実行してください (管理者として実行した Windows のコマンドプロンプトで実行):&lt;br /&gt;
&lt;br /&gt;
{{Note|Archboot の iso の場合 {{ic|X:\boot\syslinux\}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; cd bios\&lt;br /&gt;
 &amp;gt; for /r %Y in (*.c32) do copy &amp;quot;%Y&amp;quot; &amp;quot;X:\arch\boot\syslinux\&amp;quot; /y&lt;br /&gt;
 &amp;gt; copy mbr\*.bin X:\arch\boot\syslinux\ /y&lt;br /&gt;
&lt;br /&gt;
* 以下を実行して Syslinux を USB にインストールしてください (64ビット版 Windows では {{ic|win64\syslinux64.exe}} を使ってください):&lt;br /&gt;
&lt;br /&gt;
{{Note|Archboot の iso の場合 {{ic|-d /boot/syslinux}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; cd bios\&lt;br /&gt;
 &amp;gt; win32\syslinux.exe -d /arch/boot/syslinux -i -a -m X:&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 上記のステップで Syslinux の {{ic|ldlinux.sys}} が USB パーティションの VBR にインストールされ、MBR パーティションテーブルでパーティションが &amp;quot;active/boot&amp;quot; と設定されて USB の最初の440バイトのブートコード領域に MBR ブートコードが書き込まれます。&lt;br /&gt;
* {{ic|-d}} スイッチには Unix 環境と同じようにスラッシュで区切るパスを使います。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== BIOS システム向けの他の方法 ==&lt;br /&gt;
&lt;br /&gt;
=== GNU/Linux ===&lt;br /&gt;
&lt;br /&gt;
==== マルチブート USB ドライブを使う ====&lt;br /&gt;
この方法では archiso を含む複数の ISO をひとつの USB デバイスから起動できるようにします。他の方法よりも既存の USB ドライブを新しい ISO にアップデートするのが簡単です。[[マルチブート USB ドライブ]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== GNOME Disk Utility を使う ====&lt;br /&gt;
GNOME を使っている Linux ディストリビューションなら {{Pkg|nautilus}} と {{Pkg|gnome-disk-utility}} を使うことで簡単にライブ CD が作成できます。{{ic|.iso}} ファイルを右クリックして、 &amp;quot;Open With Disk Image Writer&amp;quot; を選択してください。GNOME Disk Utility が開いたら、&amp;quot;Destination&amp;quot; ドロップダウンメニューからフラッシュドライブを選択して &amp;quot;Start Restoring&amp;quot; をクリックしてください。&lt;br /&gt;
&lt;br /&gt;
==== USB-ZIP ドライブの作成 ====&lt;br /&gt;
古い BIOS 環境の場合、USB-ZIP ドライブからの起動しかサポートされていないことがあります。この方法では USB-HDD ドライブからの起動を可能とします。&lt;br /&gt;
{{Warning|以下の手順を実行すると USB フラッシュドライブの情報が全て消去されます。}}&lt;br /&gt;
&lt;br /&gt;
* 公式リポジトリから {{Pkg|syslinux}} と {{Pkg|mtools}} をダウンロードしてください。&lt;br /&gt;
* {{ic|lsblk}} で usb ドライブを確認します。&lt;br /&gt;
* {{ic|mkdiskimage -4 /dev/sd&#039;&#039;&#039;x&#039;&#039;&#039; 0 64 32}} を実行してください (x はドライブの文字に置き換えてください)。しばらく時間がかかります。&lt;br /&gt;
ここからは手動フォーマットの手順に従ってください。ZIP ドライブのためパーティションは {{ic|/dev/sd&#039;&#039;&#039;x&#039;&#039;&#039;4}} になります。&lt;br /&gt;
&lt;br /&gt;
{{Note|ドライブを FAT32 でフォーマットしてはいけません。FAT16 のままにしてください。}}&lt;br /&gt;
&lt;br /&gt;
==== UNetbootin を使う ====&lt;br /&gt;
UNetbootin はあらゆる Linux ディストリビューションや Windows で使うことができ、ISO を USB ドライブにコピーできます。ただし、Unetbootin は {{ic|syslinux.cfg}} を上書きするため、作成された USB デバイスは正しく起動が行えなくなります。そのため、&#039;&#039;&#039;Unetbootin の使用は推奨されません&#039;&#039;&#039;。{{ic|dd}} など別の方法を使うことを推奨します。&lt;br /&gt;
{{Warning|UNetbootin はデフォルトの {{ic|syslinux.cfg}} を上書きします。USB デバイスで起動する前に元の状態に戻す必要があります。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|syslinux.cfg}} を編集してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|sysconfig.cfg|2=&lt;br /&gt;
default menu.c32&lt;br /&gt;
prompt 0&lt;br /&gt;
menu title Archlinux Installer&lt;br /&gt;
timeout 100&lt;br /&gt;
&lt;br /&gt;
label unetbootindefault&lt;br /&gt;
menu label Archlinux_x86_64&lt;br /&gt;
kernel /arch/boot/x86_64/vmlinuz&lt;br /&gt;
append initrd=/arch/boot/x86_64/archiso.img archisodevice=/dev/sd&#039;&#039;&#039;x1&#039;&#039;&#039; ../../&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/dev/sd&#039;&#039;&#039;x1&#039;&#039;&#039;}} の &#039;&#039;&#039;x&#039;&#039;&#039; は Arch Linux をインストールするシステムで使っている最後の文字の後ろの最初の空の文字に置き換えて下さい (例えば、ハードドライブが2つある場合、{{ic|c}} を使って下さい)。ブートの初期段階で {{ic|Tab}} を押してメニューを出した時にこの変更をすることができます。&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
==== Win32 Disk Imager ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|以下の方法は USB フラッシュドライブ内の全ての情報が破壊されます。}}&lt;br /&gt;
最初に、[https://sourceforge.net/projects/win32diskimager/ こちら] からプログラムをダウンロードしてください。次に、圧縮ファイルを展開して実行可能ファイルを実行してください。そして、{{ic|Image File}} セクションから Arch Linux ISO を選び {{ic|Device}} セクションから USB フラッシュデバイス名 (例: [D:\]) 選択して下さい。最後に、準備が整ったら {{ic|Write}} をクリックしてください。&lt;br /&gt;
&lt;br /&gt;
==== USBWriter for Windows ====&lt;br /&gt;
&lt;br /&gt;
https://sourceforge.net/projects/usbwriter/ からプログラムをダウンロードして実行してください。arch のイメージファイルを選択し、USB スティックを選び、{{ic|write}} ボタンをクリックしてください。これで usb スティックから起動して Arch Linux をインストールできるはずです。&lt;br /&gt;
&lt;br /&gt;
==== Flashnul を使う ====&lt;br /&gt;
&lt;br /&gt;
[https://translate.google.com/translate?hl=&amp;amp;sl=ru&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fshounen.ru%2Fsoft%2Fflashnul%2Freadme.rus.html&amp;amp;sandbox=1 flashnul] はフラッシュメモリ (USB-Flash, IDE-Flash, SecureDigital, MMC, MemoryStick, SmartMedia, XD, CompactFlash など) の機能をチェック・メンテナンスするためのユーティリティです。&lt;br /&gt;
&lt;br /&gt;
コマンドプロンプトから、flashnul に {{ic|-p}} をつけて起動することで、どのデバイス名が USB ドライブなのか確認できます。例えばこのように表示されます:&lt;br /&gt;
&lt;br /&gt;
{{hc|C:\&amp;gt;flashnul -p|&lt;br /&gt;
Avaible physical drives:&lt;br /&gt;
Avaible logical disks:&lt;br /&gt;
C:\&lt;br /&gt;
D:\&lt;br /&gt;
E:\&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが正しいドライブか確認できたら、ドライブにイメージを書き込みます。デバイス名、{{ic|-L}}、イメージへのパスを付けて flashnul を実行します。例:&lt;br /&gt;
&lt;br /&gt;
 C:\&amp;gt;flashnul &#039;&#039;&#039;E:&#039;&#039;&#039; -L &#039;&#039;path\to\arch.iso&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
データ書き込みをするか確認されるので、yes と入力し、書き込まれるのを待ちます。アクセス拒否のエラーが出るようなら、開いているすべてのエクスプローラを閉じてみて下さい。&lt;br /&gt;
&lt;br /&gt;
Vista や Win7 の場合、管理者としてコンソールを起動しなくてはなりません、そうしないと、flashnul は USB ドライブをブロックデバイスとして開けず Windows から与えられた範囲でしか書き込みできません。&lt;br /&gt;
&lt;br /&gt;
{{Note|パーティション番号ではなくドライブ文字を使用する必要があります (flashnul 1rc1, Windows 7 x64 で確認)。}}&lt;br /&gt;
&lt;br /&gt;
==== メモリからインストールメディアをロード ====&lt;br /&gt;
&lt;br /&gt;
[[Syslinux]] と [[RAM ディスク]] ([http://www.syslinux.org/wiki/index.php/MEMDISK MEMDISK]) を使って RAM から ISO イメージをロードする方法です。システムメモリ上で全てを実行するので、それに見合った RAM が積まれていなければなりません。MEMDISK を使って Arch Linux をインストールするために必要な RAM の最低量は 500 MB から 1 GB です。&lt;br /&gt;
&lt;br /&gt;
Arch Linux と MEMDISK のシステム要件については[[インストールガイド]]と [http://www.etherboot.org/wiki/bootingmemdisk#preliminaries こちら] に詳しく載っています。[https://bbs.archlinux.org/viewtopic.php?id=135266 フォーラムスレッド] も参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|一度ロードが完了しグラフィカルメニューが表示されたら、USB スティックを抜いてもオーケーです。そのままスティックを他のマシンで使ってもかまいません。また、起動に使った USB スティックに Arch をインストールすることもできます。}}&lt;br /&gt;
&lt;br /&gt;
===== USB フラッシュドライブの準備 =====&lt;br /&gt;
&lt;br /&gt;
USB スティックを FAT32 でフォーマットし、新しくフォーマットしたドライブに以下のフォルダを作ります:&lt;br /&gt;
* {{ic|Boot}}&lt;br /&gt;
** {{ic|Boot/ISOs}}&lt;br /&gt;
** {{ic|Boot/Settings}}&lt;br /&gt;
&lt;br /&gt;
===== 必要なファイルを USB フラッシュドライブにコピー =====&lt;br /&gt;
&lt;br /&gt;
ブートしたい ISO を {{ic|Boot/ISOs}} フォルダにコピーしてください。その後、[https://www.kernel.org/pub/linux/utils/boot/syslinux/ ここ] から {{pkg|syslinux}} の最新版を取ってきて以下のファイルをコピーしてください。&lt;br /&gt;
* {{ic|./win32/syslinux.exe}} をデスクトップかダウンロードフォルダに置いて下さい。&lt;br /&gt;
* {{ic|./memdisk/memdisk}} を USB フラッシュドライブ上の {{ic|Settings}} フォルダに置きます。&lt;br /&gt;
&lt;br /&gt;
===== 設定ファイルの作成 =====&lt;br /&gt;
&lt;br /&gt;
必要なファイルをコピーしたら、{{ic|/boot/Settings}} フォルダの中に {{ic|syslinux.cfg}} ファイルを作ります:&lt;br /&gt;
{{Warning|{{ic|INITRD}} 行には、{{ic|ISOs}} フォルダにコピーした ISO ファイルの名前を使って下さい。}}&lt;br /&gt;
{{hc|/Boot/Settings/syslinux.cfg|2=&lt;br /&gt;
DEFAULT arch_iso&lt;br /&gt;
&lt;br /&gt;
LABEL arch_iso&lt;br /&gt;
        MENU LABEL Arch Setup&lt;br /&gt;
        LINUX memdisk&lt;br /&gt;
        INITRD /Boot/ISOs/archlinux-2017.04.01-x86_64.iso&lt;br /&gt;
        APPEND iso}}&lt;br /&gt;
Syslinux について詳しくは [[Syslinux]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
===== 最後の手順 =====&lt;br /&gt;
&lt;br /&gt;
最後に {{ic|syslinux.exe}} と同じところに {{ic|*.bat}} を作り、実行します (Vista や Windows 7 を使っているときは&amp;quot;管理者として実行&amp;quot;します):&lt;br /&gt;
{{hc|C:\Documents and Settings\username\Desktop\install.bat|&lt;br /&gt;
@echo off&lt;br /&gt;
syslinux.exe -m -a -d /Boot/Settings X:}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
* {{ic|/dev/disk/by-label/ARCH_XXXXXX}} がマウントされず &amp;quot;device did not show up after 30 seconds&amp;quot; エラーが表示される場合は、USB メディアの名前を {{ic|ARCH_XXXXXX}} に変えてみて下さい (例: {{ic|ARCH_201501}})。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/LiveUSB/Guide Gentoo wiki - LiveUSB/ガイド]&lt;br /&gt;
* [https://fedoraproject.org/wiki/How_to_create_and_use_Live_USB Fedora wiki - Live USB を作成・使用する方法]&lt;br /&gt;
* [https://ja.opensuse.org/SDB:%E3%83%A9%E3%82%A4%E3%83%96_USB_%E3%83%A1%E3%83%A2%E3%83%AA openSUSE wiki - SDB:ライブ USB メモリ]&lt;/div&gt;</summary>
		<author><name>J8takagi</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E4%BD%9C%E6%88%90&amp;diff=12852</id>
		<title>パッケージの作成</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E4%BD%9C%E6%88%90&amp;diff=12852"/>
		<updated>2018-04-21T00:21:16Z</updated>

		<summary type="html">&lt;p&gt;J8takagi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Arch について]]&lt;br /&gt;
[[Category:パッケージ管理]]&lt;br /&gt;
[[cs:Creating packages]]&lt;br /&gt;
[[en:Creating packages]]&lt;br /&gt;
[[es:Creating packages]]&lt;br /&gt;
[[fa:ایجاد_بسته‌ها]]&lt;br /&gt;
[[fr:Standard paquetage]]&lt;br /&gt;
[[it:Creating packages]]&lt;br /&gt;
[[ru:Creating packages]]&lt;br /&gt;
[[tr:Paket oluşturma]]&lt;br /&gt;
[[zh-hans:Creating packages]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Arch Build System}}&lt;br /&gt;
{{Related|Arch パッケージングスタンダード}}&lt;br /&gt;
{{Related|Arch User Repository}}&lt;br /&gt;
{{Related|他のディストリビューションのパッケージの作成}}&lt;br /&gt;
{{Related|makepkg}}&lt;br /&gt;
{{Related|pacman}}&lt;br /&gt;
{{Related|PKGBUILD}}&lt;br /&gt;
{{Related|.SRCINFO}}&lt;br /&gt;
{{Related|ABS でパッチを適用}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
この記事は、Arch Linux の ports 風の[[Arch Build System|ビルドシステム]]を使ってパッケージを自作するユーザーの助けになることを目的としています。この記事の扱う範囲は PKGBUILD ({{ic|makepkg}} によって読み込まれるパッケージ定義ファイル) の書き方についてです。すでに PKGBUILD が用意できている場合、[[makepkg]] の項目を参照してください。パッケージの質を向上させるためのルール・方法などの説明は [[Arch パッケージングスタンダード]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
==概要==&lt;br /&gt;
&lt;br /&gt;
Arch Linux のパッケージは、[[makepkg]] ユーティリティーと [[PKGBUILD]] に記載された情報からビルドされます。{{ic|makepkg}} が実行されると、カレントディレクトリの {{ic|PKGBUILD}} を見て、ソースをコンパイルするか必要なファイルをダウンロードするかの指示に従ってパッケージファイル ({{ic|pkgname.pkg.tar.xz}}) が作成されます。こうして出来上がったパッケージはバイナリとインストールの実行スクリプトが含まれ、[[pacman]] でインストールできるものになります。&lt;br /&gt;
&lt;br /&gt;
Arch のパッケージは、以下のファイルが tar アーカイブ、つまり &#039;tarball&#039; にまとめられ、xz で圧縮されたものです。&lt;br /&gt;
&lt;br /&gt;
* インストールするバイナリやファイル。&lt;br /&gt;
* {{ic|.PKGINFO}}: pacman でパッケージ管理や依存解決をするために必要なすべての情報が書かれたファイル。&lt;br /&gt;
* {{ic|.MTREE}}: ファイルのハッシュとタイムスタンプ。ローカルデータベースに含めることで pacman はパッケージの整合性を検証することができます。&lt;br /&gt;
* {{ic|.INSTALL}}: 任意のファイル。インストール/アップグレード/削除の後に実行される ({{ic|PKGBUILD}} で指定された場合のみ存在する)。&lt;br /&gt;
* {{ic|.Changelog}}: パッケージメンテナによるパッケージの更新についての覚え書き (必ず付属するとは限らない)。&lt;br /&gt;
&lt;br /&gt;
=== メタパッケージとグループ ===&lt;br /&gt;
&lt;br /&gt;
パッケージグループはパッケージ作成者によって定義される関連パッケージのセットで、グループの名前を使うことで個々のパッケージを同時にインストールしたりアンインストールすることができます。グループはパッケージではありませんが、インストールする方法はパッケージと同じです。[[Pacman#パッケージグループのインストール]]や [[PKGBUILD#groups]] を見てください。&lt;br /&gt;
&lt;br /&gt;
メタパッケージ (大抵は &#039;&#039;-meta&#039;&#039; が名前に付いています) はパッケージグループと同じように相互に関連する複数のパッケージを同時にインストール・アンインストールするためのものです。メタパッケージは他のパッケージと同じようにインストールすることができます。[[Pacman#特定のパッケージのインストール]]を見てください。メタパッケージと通常のパッケージの違いは、メタパッケージの中身は空っぽであり、あくまで関連パッケージを互いに依存関係にリンクするためだけに存在することです。&lt;br /&gt;
&lt;br /&gt;
グループと比べてメタパッケージには利点が存在しています。新しいパッケージが依存関係に追加された場合、メタパッケージの更新によってインストールされるということです。グループでは、新しいパッケージが追加されても自動的にはインストールされません。メタパッケージの欠点はグループよりも柔軟性に欠けるという点です。グループではインストールしたいパッケージを選択することが可能ですが、メタパッケージではどれをインストールするのか選べません。同じように、グループでは一部のパッケージだけをアンインストールすることができますが、メタパッケージでは中に入っているパッケージだけを削除するのは不可能です。&lt;br /&gt;
&lt;br /&gt;
== 準備 ==&lt;br /&gt;
&lt;br /&gt;
=== ソフトウェアの準備 ===&lt;br /&gt;
&lt;br /&gt;
まず、必要なツールがインストールされているか確認してください。 {{Grp|base-devel}} があれば十分です。このグループには &#039;&#039;&#039;make&#039;&#039;&#039; などのコンパイルに必要なツールが含まれています。&lt;br /&gt;
&lt;br /&gt;
 # pacman -S base-devel&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pacman}} で提供される [[makepkg]] はパッケージ作成で最も重要なツールの一つです。makepkg は以下を行います:&lt;br /&gt;
# 依存パッケージがインストールされているかどうか確認する。&lt;br /&gt;
# ソースをサーバーからダウンロードする。&lt;br /&gt;
# 圧縮されたソースファイルを展開する。&lt;br /&gt;
# fakeroot 環境でコンパイルし、インストールする。&lt;br /&gt;
# バイナリやライブラリから不要シンボルを除去する (symbol stripping)。&lt;br /&gt;
# パッケージのメタデータを生成する。&lt;br /&gt;
# fakeroot 環境をパッケージに圧縮する。&lt;br /&gt;
# パッケージファイルを出力先ディレクトリに保存する。デフォルトでは作業ディレクトリ。&lt;br /&gt;
&lt;br /&gt;
=== インストールのダウンロードとテスト ===&lt;br /&gt;
&lt;br /&gt;
パッケージにしたいソフトウェアのソース tarball をダウンロードして、展開してください。その後ソフトウェアの作成者の指示に従ってプログラムをインストールしてください。ソフトウェアをコンパイル・インストールするのに必要なコマンド・手順を全て手控えておきましょう。&#039;&#039;PKGBUILD&#039;&#039; ファイルの中で同じコマンドを使うことになります。&lt;br /&gt;
&lt;br /&gt;
ほとんどのソフトウェアは3ステップでビルドします:&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
プログラムが正しく動作するか確認すると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
== PKGBUILDの作成 ==&lt;br /&gt;
&lt;br /&gt;
パッケージ作成に必要な情報は全て &amp;lt;code&amp;gt;PKGBUILD&amp;lt;/code&amp;gt; に書かれます。&amp;lt;code&amp;gt;makepkg&amp;lt;/code&amp;gt; は実行されると、カレントディレクトリに &amp;lt;code&amp;gt;PKGBUILD&amp;lt;/code&amp;gt; ファイルがあるか探し、そこに書かれていることに従ってソフトウェアのソースコードをコンパイルします。{{ic|PKGBUILD}} に書かれている指示は、[[Bash]] として実行可能である必要があります。コンパイルが無事終了すれば、出来上がったバイナリと、バージョンや依存パッケージなどのパッケージのメタデータが &amp;lt;code&amp;gt;&#039;&#039;パッケージ名&#039;&#039;.pkg.tar.xz&amp;lt;/code&amp;gt; にまとめられます。このパッケージファイルは &amp;lt;code&amp;gt;pacman -U &#039;&#039;パッケージファイル&#039;&#039;&amp;lt;/code&amp;gt; でインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
新しいパッケージを作るには、まず空の作業ディレクトリを用意します ({{ic|~/abs/&#039;&#039;パッケージ名&#039;&#039;}} が推奨です)。このディレクトリにファイル {{ic|PKGBUILD}} を作成します。プロトタイプとして、{{ic|/usr/share/pacman/PKGBUILD.proto}} や、類似パッケージの {{ic|PKGBUILD}} が使えます。オプションを変更するだけなどの場合、後者が便利になるかもしれません。&lt;br /&gt;
&lt;br /&gt;
===PKGBUILD の変数を定義する===&lt;br /&gt;
&lt;br /&gt;
PKGBUILD のサンプルは {{Ic|/usr/share/pacman/}} にあります。{{ic|PKGBUILD}} で利用できる変数は [[PKGBUILD]] の記事で説明されています。&lt;br /&gt;
&lt;br /&gt;
パッケージをビルドするために必要な以下の三つの変数は、&#039;&#039;makepkg&#039;&#039; によってあらかじめ定義されます:&lt;br /&gt;
; {{ic|startdir}}: {{ic|PKGBUILD}} のあるディレクトリへの絶対パスです。{{ic|$startdir/src}} や {{ic|$startdir/pkg}} として {{ic|$srcdir}} や {{ic|$pkgdir}} の代わりに使われていましたが、今ではこれらが一致する保証はありません。この変数を使うことは非推奨です、使うべきでありません。&lt;br /&gt;
; {{ic|srcdir}}: {{ic|makepkg}} がソースファイルを展開、またはコピーしてくるディレクトリです。&lt;br /&gt;
; {{ic|pkgdir}}: build() が終わった後、{{ic|makepkg}} はここに生成されたファイルをパッケージに入れます。ここがパッケージのルートディレクトリになります。&lt;br /&gt;
これらの変数は全て&#039;&#039;絶対&#039;&#039;パスなので、適切にこれらの変数を使う限り作業ディレクトリについて心配する必要はありません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;makepkg&#039;&#039;、そして {{ic|build()}} と {{ic|package()}} 関数は対話式になるようにはなっていません。特にビルドログを有効にして ({{ic|-l}})、これらの関数で対話式のユーティリティやスクリプトを呼び出すと &#039;&#039;makepkg&#039;&#039; が破壊される可能性があります ({{Bug|13214}} を参照)。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|現在のパッケージメンテナの他に、以前のメンテナが貢献者として記載されることがあります。}}&lt;br /&gt;
&lt;br /&gt;
=== PKGBUILD の関数 ===&lt;br /&gt;
&lt;br /&gt;
5つの関数が存在し、全て存在する場合ここに記載している順番どおりに実行されます。関数が存在しないときは、スキップされます。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|package()}} 関数は省略できません、この関数は全ての PKGBUILD で必須になります。}}&lt;br /&gt;
&lt;br /&gt;
==== 関数 {{ic|pkgver()}} ====&lt;br /&gt;
&lt;br /&gt;
pacman 4.1 から採用され、makepkg の実行中に pkgver 変数を更新することができます。{{ic|pkgver()}} はソースが取得・展開されたすぐ後に実行されます。&lt;br /&gt;
&lt;br /&gt;
[[VCS パッケージガイドライン|git/svn/hg などのパッケージを作成する]]ときにこの関数は特に便利です。なぜならビルドプロセスは同じままでも、ソースは毎日・毎時間更新される可能性があるからです。昔は日時を pkgver フィールドに入れていたため、ソフトウェアが更新されていなくても、makepkg はバージョンが変更されたと考えてリビルドをしていました。この関数では {{ic|git describe}}, {{ic|hg identify -ni}} などのコマンドが有用です。PKGBUILD を投稿する前に、{{ic|pkgver()}} 関数がビルドを停止させないかテストしてください。&lt;br /&gt;
{{Note|pkgver には空白やハイフン ({{ic|-}}) を含めることができません。sed を使って対処してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 関数 {{ic|prepare()}} ====&lt;br /&gt;
&lt;br /&gt;
Pacman 4.1 から {{ic|prepare()}} 関数が導入されました。この関数では、パッチなどの、ソースをビルドする前の準備に使われるコマンドを実行します。この関数は build 関数の前、パッケージの展開の後に実行されます。展開が省略された場合 ({{ic|makepkg -e}})、{{ic|prepare()}} は実行されません。&lt;br /&gt;
&lt;br /&gt;
{{Note| ({{ic|man PKGBUILD}} より) この関数は {{ic|bash -e}} モードで実行されるため、コマンドのどれかが0以外のステータスコードで終了したときこの関数は終了します。}}&lt;br /&gt;
&lt;br /&gt;
====関数 {{ic|build()}} ====&lt;br /&gt;
&lt;br /&gt;
さて、{{ic|PKGBUILD}} ファイルの中に {{ic|build()}} 関数を定義しなくてはなりません。この関数、&amp;lt;code&amp;gt;build()&amp;lt;/code&amp;gt; は [[Bash]] の文法を使って、ソフトウェアを自動的にコンパイルします。そして {{ic|pkg}} ディレクトリを作成しここにソフトウェアをインストールします。これによって &#039;&#039;makepkg&#039;&#039; はファイルシステムをふるいにかけることなくファイルをパッケージにまとめることができます。&lt;br /&gt;
&lt;br /&gt;
{{ic|build()}} 関数はまず展開されたソースコードのディレクトリに入ります。&#039;&#039;makepkg&#039;&#039; は {{ic|build()}} を実行する前にカレントディレクトリを {{ic|$srcdir}} に移動するので、ほとんどの場合最初のコマンドは以下のようになるでしょう:&lt;br /&gt;
&lt;br /&gt;
 cd &amp;quot;$pkgname-$pkgver&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/share/pacman/PKGBUILD.proto}} ファイルでは上のコマンドの代わりに次のコマンドを使うことを提案しています:&lt;br /&gt;
&lt;br /&gt;
 cd &amp;quot;$srcdir/$pkgname-$pkgver&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ただし、{{ic|$srcdir}} は絶対パスなので違いはありません。&lt;br /&gt;
&lt;br /&gt;
そして、手動でソフトウェアをコンパイルをするのと同じコマンドを書き連ねます。{{ic|build()}} 関数は、煎じ詰めて言えば手でコンパイルするのに必要な操作を自動化したものなのです。今パッケージしているソフトウェアが configure を使っているのなら、{{ic|1=--prefix=/usr}} を使うのが良いでしょう。(多くのソフトウェアがファイルをインストールするのに使う) {{ic|/usr/local}} ディレクトリは、手動でインストールする場合のみに限って使われるべきです。すべての Arch Linux パッケージは、{{ic|/usr}} ディレクトリを使うべきです。{{ic|/usr/share/pacman/PKGBUILD.proto}} に書かれているように、次の2行はだいたい以下のようになるでしょう:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=/usr&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
{{Note|何もビルドする必要がないソフトウェアの場合は、{{ic|build()}} 関数は使用しないでください。{{ic|build()}} 関数は不要ですが、{{ic|package()}} 関数は必須です。}}&lt;br /&gt;
&lt;br /&gt;
==== 関数 {{ic|check()}} ====&lt;br /&gt;
&lt;br /&gt;
ここでは {{Ic|make check}} などのテストを動作させます。ソフトウェアが正しくビルドできたか確認したり依存関係が問題ないか調べるのに役立つので {{ic|check()}} を記述することは推奨されています。&lt;br /&gt;
&lt;br /&gt;
テストの必要のないユーザー（や、時にはテストを通過させるようにパッケージを修正できないメンテナ）は、PKGBUILD や makepkg.conf で {{ic|1=BUILDENV+=(&#039;!check&#039;)}} オプションを指定する (もしくは {{ic|--nocheck}} フラグを付けて {{ic|makepkg}} を呼び出す) ことで、これをスキップできます。&lt;br /&gt;
&lt;br /&gt;
==== 関数 {{ic|package()}} ====&lt;br /&gt;
&lt;br /&gt;
最後に、コンパイルされたファイルを、&#039;&#039;makepkg&#039;&#039; がファイルを読み込むことができる（そしてパッケージを作成する）ディレクトリに置きます。デフォルトでは {{ic|pkg}} ディレクトリです。このディレクトリは単なる fakeroot 環境です。すなわち、このディレクトリはインストール先のファイルシステムの &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; (root ファイルシステム) に相当します。インストールするファイルは全て {{ic|pkg}} 以下に、ディレクトリ構造を保ったまま置かれる必要があります。例えば、ファイルを &amp;lt;code&amp;gt;/usr/bin&amp;lt;/code&amp;gt; にインストールさせたい場合は &amp;lt;code&amp;gt;${pkgdir}/usr/bin&amp;lt;/code&amp;gt; にファイルを置きます。数ダースのファイルを手動でコピーしなくてはならない場合はほとんどありません。ほとんどのソフトウェアでは、代わりに {{ic|make install}} を呼び出すことでコピーが行われます。ソフトウェアを {{ic|pkg}} ディレクトリに正しくインストールするために、最後の行は以下のようになるでしょう:&lt;br /&gt;
&lt;br /&gt;
 make DESTDIR=&amp;quot;$pkgdir/&amp;quot; install&lt;br /&gt;
&lt;br /&gt;
{{Note|ときどき {{ic|Makefile}} で {{ic|DESTDIR}} が使われていない場合があります。このときは {{ic|prefix}} を使ってください。パッケージのビルドに &#039;&#039;autoconf&#039;&#039;/&#039;&#039;automake&#039;&#039; が使われているときは、{{ic|DESTDIR}} を使ってください。これはマニュアルに[https://www.gnu.org/software/automake/manual/automake.html#Install 文書化]されています。もし {{ic|DESTDIR}} が使えなければ、{{ic|1=make prefix=&amp;quot;$pkgdir/usr/&amp;quot; install}} を試してください。それでもだめなら、&amp;quot;{{ic|make &amp;lt;...&amp;gt; install}}&amp;quot; によって実行されるインストールコマンドをもっと調べる必要があります。}}&lt;br /&gt;
&lt;br /&gt;
稀に、一つのディレクトリの中にすべてのファイルが置かれ、ソフトウェアをそこから実行するようにされていることがあります。こうした場合には、そのディレクトリを {{ic|$pkgdir/opt}} にコピーするのが賢明です。&lt;br /&gt;
&lt;br /&gt;
多くの場合では、{{ic|pkg}} 下のサブディレクトリはインストールプロセスで自動的に作られます。しかし、そうでない場合は &#039;&#039;makepkg&#039;&#039; は大量のエラーを吐いて失敗します。この場合、必要なサブディレクトリを {{ic|build()}} 関数内で {{ic|mkdir -p}} コマンドを実行することで、インストール作業の前にあらかじめ生成してください。&lt;br /&gt;
&lt;br /&gt;
昔のパッケージでは {{ic|package()}} 関数はなく、この操作は {{ic|build()}} でまとめて行われていました。{{ic|PKGBUILD}} に {{ic|build()}} がない場合は、{{ic|build()}} 全体が &#039;&#039;fakeroot&#039;&#039; で実行されます。{{ic|package()}} が定義されている場合、{{ic|build()}} は {{ic|makepkg}} を実行したユーザで実行され、{{ic|package()}} だけが &#039;&#039;fakeroot&#039;&#039; で実行されます&lt;br /&gt;
&lt;br /&gt;
また、{{ic|makepkg --repackage}} は {{ic|package()}} だけを呼び出します。パッケージの {{ic|depends}} 変数をだけ変更したときなどに、ソースを再コンパイルせずパッケージを作成ができ、時間を節約することができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|package()}} は PKGBUILD で唯一の必須関数です。プログラムをインストールするのに必要なのがファイルをディレクトリにコピーするだけの場合、{{ic|build()}} 関数ではなく {{ic|package()}} 関数にコマンドを記述してください。}}&lt;br /&gt;
&lt;br /&gt;
== PKGBUILD とパッケージのテスト ==&lt;br /&gt;
&lt;br /&gt;
{{ic|build()}} 関数を記述している間、バグがないことを確認するために変更をテストしたくなるかもしれません。{{ic|PKGBUILD}} ファイルが含まれているディレクトリで {{ic|makepkg}} コマンドを実行してすることでテストすることができます。フォーマットが正しい {{ic|PKGBUILD}} なら、makepkg はパッケージを作成します。{{ic|PKGBUILD}} が壊れていたり未完成だと、エラーを吐きます。&lt;br /&gt;
&lt;br /&gt;
makepkg は問題なく終了すると、作業ディレクトリに {{ic|pkgname-pkgver.pkg.tar.xz}} という名前のファイルを作成します。このパッケージは {{ic|pacman -U}} コマンドでインストールすることができます。ただし、パッケージファイルが作られたというだけでは完全に機能するとは言えません。あるいはディレクトリだけでファイルが全く含まれていない可能性もあります (例えば、prefix が間違って指定されているとか)。pacman の query 関数を使うことでパッケージに含まれているファイルのリスト、パッケージが必要とする依存パッケージを {{ic|pacman -Qlp [package file]}} と {{ic|pacman -Qip [package file]}} でそれぞれ表示することができます。&lt;br /&gt;
&lt;br /&gt;
パッケージが問題ないようでしたら、これであなたの作業は終了です！ただし、{{ic|PKGBUILD}} ファイルを公開するつもりならば、{{ic|depends}} の中身を何度もチェックするべきです。&lt;br /&gt;
&lt;br /&gt;
また、パッケージバイナリが完璧に&#039;&#039;動く&#039;&#039;ことを確認しましょう！全ての必要なファイルが含まれているが、（システムの他の部分と問題を起こすような）度しがたい設定オプションによってクラッシュするパッケージを公開するのは迷惑です。勿論、あなた自身のためだけにパッケージをコンパイルするのなら、品質保証について心配しすぎる必要はありません。誤りによって苦しむのはあなただけなのですから。&lt;br /&gt;
&lt;br /&gt;
===パッケージの正常性のテスト===&lt;br /&gt;
&lt;br /&gt;
パッケージが機能するかテストした後 [[namcap]] を使ってエラーがないか確認してください:&lt;br /&gt;
 $ namcap PKGBUILD&lt;br /&gt;
 $ namcap &#039;&#039;&amp;lt;package file name&amp;gt;&#039;&#039;.pkg.tar.xz&lt;br /&gt;
&lt;br /&gt;
Namcap は以下を行います:&lt;br /&gt;
# PKGBUILD の中身を見て、よくある間違いやパッケージファイルの階層に不必要な・間違って置かれたファイルがないか確認します。&lt;br /&gt;
# {{ic|ldd}} を使ってパッケージ内の全ての ELF ファイルをスキャンし、必要な共有ライブラリがあるパッケージが {{Ic|depends}} に欠けていることや、推移的な依存として省略できるパッケージを自動で報告します。&lt;br /&gt;
# 欠けている、もしくは不要な依存パッケージのヒューリスティック検索。&lt;br /&gt;
などなど。パッケージを namcap でチェックする習慣を実践することでパッケージを投稿した後に単純な間違いを修正する手間が省けます。&lt;br /&gt;
&lt;br /&gt;
== AUR にパッケージを送信する ==&lt;br /&gt;
&lt;br /&gt;
[[Arch User Repository#パッケージを投稿する]] に、投稿する方法について詳しい説明があります。&lt;br /&gt;
&lt;br /&gt;
== 要約 ==&lt;br /&gt;
&lt;br /&gt;
#パッケージにしたいソフトウェアのソース tarball をダウンロードする。&lt;br /&gt;
#パッケージのコンパイルを試行し任意のディレクトリにインストールする。&lt;br /&gt;
#プロトタイプの {{ic|/usr/share/pacman/PKGBUILD.proto}} をコピーして {{ic|PKGBUILD}} に名前を変更して一時的な作業ディレクトリに置く -- {{ic|~/abs/}} が推奨。&lt;br /&gt;
#パッケージの必要に応じて {{ic|PKGBUILD}} を編集する。&lt;br /&gt;
#{{ic|makepkg}} を実行して作られたパッケージが正しくビルドされているか確認する。&lt;br /&gt;
#正しくビルドされるまで、前の2つの手順を繰り返す。&lt;br /&gt;
&lt;br /&gt;
=== 注意点 ===&lt;br /&gt;
&lt;br /&gt;
* パッケージのビルドプロセスを自動化する前に、&#039;&#039;あらかじめ&#039;&#039;何をするのか&#039;&#039;正確に&#039;&#039;わかっている場合（その場合あなたはそもそもこの文章を読まないと思いますが）を除いて、少なくとも一度は手動でビルドを行なって下さい。残念ながら、大勢のプログラムの作者が &amp;quot;{{ic|./configure}}; {{ic|make}}; {{ic|make install}}&amp;quot; のビルド3ステップに従っているにもかかわらず、これがいつも上手く行くとは限りません。下手をすると、全てを問題なく動かすにはパッチを適用する必要がある場合も考えられます。大雑把に言うと: プログラムをソース tarball からコンパイルして、規定の一時サブディレクトリにインストールすることができない場合、パッケージングを試行する必要さえありません。{{ic|makepkg}} にはソースの問題を解決してくれるような妖精の粉はないからです。&lt;br /&gt;
* 稀に、ソースからパッケージを作成することができなくて {{ic|sh installer.run}} などのようにコマンドを実行しなくてはならないことがあります。そのようなときは、パッケージを作成するためにドキュメント (README や INSTALL の手順、man ページ、あるいは Gentoo の ebuild や他のパッケージインストーラのソースパッケージ、それでも駄目なら Makefile やソースコードまで) を相当読まなくてはなりません。最悪の場合、ソースファイルに編集を加える必要さえ出てくることもあります。しかしながら、{{ic|makepkg}} はユーザーの補助がなくてもビルドが通るように完全に自動化する必要があります。そのため、Makefile を編集しなくてはならないときは、{{ic|PKGBUILD}} にカスタムパッチを供えて {{ic|prepare()}} 関数の中からパッチをインストールするか、あるいは {{ic|prepare()}} 関数の中で {{ic|sed}} コマンドを実行してください。&lt;br /&gt;
&lt;br /&gt;
== より詳細なガイドライン ==&lt;br /&gt;
{{Package Guidelines}}&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=91408 How to correctly create a patch file]&lt;br /&gt;
* [https://archwomen.org/media/project_classroom/classlogs/ Arch Linux Classroom IRC Logs of classes about creating PKGBUILDs]&lt;br /&gt;
* [http://www.linuxfromscratch.org/hints/downloads/files/fakeroot.txt Fakeroot approach for package installation]&lt;/div&gt;</summary>
		<author><name>J8takagi</name></author>
	</entry>
</feed>