<?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=Purutane</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=Purutane"/>
	<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/Purutane"/>
	<updated>2026-04-15T06:31:32Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=QEMU&amp;diff=25419</id>
		<title>QEMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=QEMU&amp;diff=25419"/>
		<updated>2022-05-13T08:52:48Z</updated>

		<summary type="html">&lt;p&gt;Purutane: qemu-headlessはout-of-date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:エミュレーション]]&lt;br /&gt;
[[Category:ハイパーバイザ]]&lt;br /&gt;
[[de:Qemu]]&lt;br /&gt;
[[en:QEMU]]&lt;br /&gt;
[[es:QEMU]]&lt;br /&gt;
[[fr:Qemu]]&lt;br /&gt;
[[ru:QEMU]]&lt;br /&gt;
[[zh-hans:QEMU]]&lt;br /&gt;
[[zh-hant:QEMU]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|KVM}}&lt;br /&gt;
{{Related|Libvirt}}&lt;br /&gt;
{{Related|OVMF による PCI パススルー}}&lt;br /&gt;
{{Related|VirtualBox}}&lt;br /&gt;
{{Related|Xen}}&lt;br /&gt;
{{Related|VMware}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[http://wiki.qemu.org/Main_Page QEMU ホームページ] より:&lt;br /&gt;
:&#039;&#039;QEMU は汎用なオープンソースのマシンエミュレータ・バーチャライザーです。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
マシンエミュレータとして使う場合、QEMU はあるマシン (例: ARM ボード) 用に作られた OS やプログラムを他のマシン (例: x86 PC) で動かすことができます。動的変換を利用することによって、素晴らしいパフォーマンスを実現します。&lt;br /&gt;
&lt;br /&gt;
[[Xen]] や [[KVM]] など他のハイパーバイザを使うことで QEMU は仮想化のための CPU 拡張命令を利用することができます。バーチャライザーとして使う場合、ゲストコードをホスト CPU で直接実行することにより QEMU はネイティブに近いパフォーマンスを得ることができます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|qemu}} パッケージ (または GUI が必要ない場合は {{Pkg|qemu-base}}) を[[インストール]]してください。また、任意で以下のパッケージもインストールしてください:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|qemu-arch-extra}} - 特殊なアーキテクチャのサポート&lt;br /&gt;
* {{Pkg|qemu-block-gluster}} - [[GlusterFS]] ブロックのサポート&lt;br /&gt;
* {{Pkg|qemu-block-iscsi}} - [[iSCSI]] ブロックのサポート&lt;br /&gt;
* {{Pkg|qemu-block-rbd}} - RBD ブロックのサポート&lt;br /&gt;
* {{Pkg|samba}} - [[Samba|SMB/CIFS]] サーバーのサポート&lt;br /&gt;
&lt;br /&gt;
== QEMU のグラフィカルフロントエンド ==&lt;br /&gt;
[[VirtualBox]] や [[VMware]] など他の仮想化プログラムと違って、QEMU は仮想マシンを管理するための GUI を提供しません (仮想マシンを動かすときに表示されるウィンドウは別です)。また、保存された設定を使って永続的な仮想マシンを作成する方法も提供していません。仮想マシンを起動するためのカスタムスクリプトを作成しないかぎり、仮想マシンを起動するための全てのパラメータは起動する度にコマンドラインに指定する必要があります。ただし、QEMU の GUI フロントエンドは複数存在します:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|virt-manager}}&lt;br /&gt;
* {{Pkg|gnome-boxes}}&lt;br /&gt;
* {{AUR|qemu-launcher}}&lt;br /&gt;
* {{AUR|qtemu}}&lt;br /&gt;
* {{AUR|aqemu}}&lt;br /&gt;
&lt;br /&gt;
== 新しい仮想化システムの作成 ==&lt;br /&gt;
{{Tip|Arch Linux を仮想化する場合、既存の Arch Linux システム上に直接ディスクイメージを作成することができます、詳しくは[[インストールガイド]]を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== ハードディスクイメージの作成 ===&lt;br /&gt;
{{Tip|QEMU イメージに関する詳細は [https://en.wikibooks.org/wiki/QEMU/Images QEMU Wikibook] を参照。}}&lt;br /&gt;
&lt;br /&gt;
CD-ROM やネットワークからライブシステムを起動するのでない (そしてオペレーティングシステムをハードディスクイメージにインストールしない) 限り、QEMU を実行するにはハードディスクイメージが必要になります。ハードディスクイメージはエミュレートするハードディスクの内容を保存するファイルです。&lt;br /&gt;
&lt;br /&gt;
ハードディスクイメージを &#039;&#039;raw&#039;&#039; にすると、ゲストからは文字通りバイト単位で等しいようになり、ホスト上のゲストハードドライブをフルに使用することになります。この方法は I/O のオーバーヘッドを最小に抑えられますが、ゲストで使用していない領域もホストは使えないため、大量の容量を消費するのが欠点です。&lt;br /&gt;
&lt;br /&gt;
また、ハードディスクイメージを &#039;&#039;qcow2&#039;&#039; などのフォーマットにすることもできます。ゲストオペレーティングシステムが実際に仮想ハードディスク上のセクタに書き込んだ時にイメージファイルに容量を割り当てます。ホストシステムで占める容量はかなり少なくて済み、ゲストオペレーションにはフルサイズのイメージとして見えます。QEMU のスナップショット機能にも対応しています (詳しくは[[#モニタコンソールを使ってスナップショットを作成・管理]]を参照)。こちらの形式では &#039;&#039;raw&#039;&#039; と違ってパフォーマンスに多少影響を与えます。&lt;br /&gt;
&lt;br /&gt;
QEMU にはハードディスクイメージを作成するための {{ic|qemu-img}} コマンドがあります。例えば &#039;&#039;raw&#039;&#039; フォーマットで 4GB イメージを作成するには:&lt;br /&gt;
 $ qemu-img create -f raw &#039;&#039;image_file&#039;&#039; 4G&lt;br /&gt;
&lt;br /&gt;
{{ic|-f qcow2}} を使うことで &#039;&#039;qcow2&#039;&#039; ディスクを作成できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;raw&#039;&#039; イメージは {{ic|dd}} や {{ic|fallocate}} を使って必要なサイズのファイルを作成するだけでも作れます。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|ハードディスクイメージを [[Btrfs]] ファイルシステム上に保存する場合、イメージを作成する前にディレクトリの [[Btrfs#コピーオンライト_.28CoW.29|Copy-on-Write]] を無効にするべきでしょう。}}&lt;br /&gt;
&lt;br /&gt;
==== オーバーレイストレージイメージ ====&lt;br /&gt;
一度ストレージメディアを作成してから (&#039;backing&#039; イメージ)、QEMU にイメージへの変更を overlay イメージとして維持させることができます。これによってストレージメディアを前の状態に戻すことが可能になります。戻りたい時点で、オリジナルの backing イメージを元に新しい overlay イメージを作成することで戻すことができます。&lt;br /&gt;
&lt;br /&gt;
overlay イメージを作成するには、次のようにコマンドを実行してください:&lt;br /&gt;
 $ qemu-img create -o backing_file=&#039;&#039;img1.raw&#039;&#039;,backing_fmt=&#039;&#039;raw&#039;&#039; -f &#039;&#039;qcow2&#039;&#039; &#039;&#039;img1.cow&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
その後通常通り QEMU VM を起動することができます ([[#仮想化システムを実行する|仮想化システムを実行する]]を参照):&lt;br /&gt;
 $ qemu-system-x86_64 &#039;&#039;img1.cow&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
backing イメージには変更が加えられず、ストレージへの追記は overlay イメージファイルに保存されるようになります。&lt;br /&gt;
&lt;br /&gt;
backing イメージのパスが変更された場合、修正が必要になります。&lt;br /&gt;
{{Warning|backing イメージの絶対ファイルシステムパスは (バイナリの) overlay イメージファイルに保存されます。backing イメージのパスを変更するのは大変です。}}&lt;br /&gt;
オリジナルの backing イメージのパスからこのイメージに繋がるようにしてください。必要ならば、オリジナルのパスに新しいパスへのシンボリックリンクを作成します。次のようなコマンドを実行してください:&lt;br /&gt;
 $ qemu-img rebase -b &#039;&#039;/new/img1.raw&#039;&#039; &#039;&#039;/new/img1.cow&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あなたの判断で、backing イメージの古いパスがチェックされない&#039;危険な&#039; rebase を実行することもできます:&lt;br /&gt;
 $ qemu-img rebase -u -b &#039;&#039;/new/img1.raw&#039;&#039; &#039;&#039;/new/img1.cow&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== イメージのリサイズ ====&lt;br /&gt;
{{Warning|NTFS ブートファイルシステムを含んでいるイメージをリサイズするとそこにインストールされている VM が起動できなくなってしまう可能性があります。詳しい説明や回避方法は [http://tjworld.net/wiki/Howto/ResizeQemuDiskImages ここ] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|qemu-img}} 実行可能ファイルには {{ic|resize}} オプションがあり、ハードドライブイメージの簡単なリサイズができます。このコマンドは &#039;&#039;raw&#039;&#039; と &#039;&#039;qcow2&#039;&#039; の両方で使えます。例えば、イメージ容量を 10GB 増やすには、次を実行してください:&lt;br /&gt;
 $ qemu-img resize &#039;&#039;disk_image&#039;&#039; +10G&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=NTFS ブートファイルシステムを含んでいるイメージをリサイズする方法 (この例では qcow2 フォーマットのイメージを使っていますが他のフォーマットでも方法は同じです):&lt;br /&gt;
&lt;br /&gt;
重要: イメージを使用している VM はあらかじめ全てシャットダウンしてください。&lt;br /&gt;
&lt;br /&gt;
リサイズするのに qcow2 から raw にイメージを変換する必要はありません (ただしイメージが NTFS で VM ゲストをそこから起動している場合は別です)。直接 &lt;br /&gt;
{{ic|qemu-img resize}} コマンドを使って下さい。その後、ゲストの仮想マシンを起動してディスクに新しい場所を再配置してください。&lt;br /&gt;
&lt;br /&gt;
そして適当なツールを使ってパーティションのサイズを変更 (例えば Windows Vista 以降なら、Windows を起動して初めから入っている [http://www.howtogeek.com/howto/windows-vista/resize-a-partition-for-free-in-windows-vista/ Disk Management ユーティリティ] を使うことができます)。&lt;br /&gt;
&lt;br /&gt;
イメージが起動する NTFS の場合、qcow2 ファイルを以下のようにして変換する必要があります:&lt;br /&gt;
&lt;br /&gt;
イメージを raw フォーマットに変換して末尾に空きスペースを追加します (オリジナルのイメージはバックアップとして残しておく):&lt;br /&gt;
 $ qemu-img convert -f qcow2 -O raw myimg.qcow2 myimg.raw&lt;br /&gt;
 $ truncate -s +4G myimg.raw&lt;br /&gt;
 $ mv myimg.qcow2 myimg.qcow2.bak&lt;br /&gt;
&lt;br /&gt;
大きくしたイメージを qcow2 に戻して、raw は削除:&lt;br /&gt;
 $ qemu-img convert -f raw -O qcow2 myimg.raw myimg.qcow2 &lt;br /&gt;
 $ rm myimg.raw &lt;br /&gt;
&lt;br /&gt;
オリジナルのイメージのパーミッションと合わせる:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
$ chown --reference=myimg.qcow2.bak myimg.qcow2&lt;br /&gt;
$ chmod --reference=myimg.qcow2.bak myimg.qcow2&lt;br /&gt;
}}}}&lt;br /&gt;
&lt;br /&gt;
=== インストールメディアを準備する ===&lt;br /&gt;
ディスクイメージにオペレーティングシステムをインストールするには、オペレーティングシステムのインストールメディア (例: オプティカルディスク、USB ドライブ、ISO イメージ) が必要です。QEMU はメディアに直接アクセスできないのでインストールメディアをマウントしてはいけません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|光ディスクを使う場合、最初に中身をファイルに移動させると良いでしょう。パフォーマンスが発揮されるようになり、デバイスに直接アクセスする必要がなくなります (従って、メディアのデバイスファイルのアクセス権限を変えることなく QEMU を通常ユーザーで起動することが可能になります)。 CD-ROM デバイスノードの名前が {{ic|/dev/cdrom}} なら、次のコマンドでファイルに dump することが出来ます: {{ic|1=$ dd if=/dev/cdrom of=&#039;&#039;cd_image.iso&#039;&#039;}}。}}&lt;br /&gt;
&lt;br /&gt;
=== オペレーティングシステムのインストール ===&lt;br /&gt;
ここで初めてエミュレータを起動することになります。ディスクイメージにオペレーティングをインストールするには、ディスクイメージとインストールメディアの両方を仮想マシンに結びつけて、インストールメディアから起動するようにする必要があります。&lt;br /&gt;
&lt;br /&gt;
例えば x86_64 環境で、CD-ROM と raw ディスクイメージのブータブル ISO ファイルからインストールするには:&lt;br /&gt;
 $ qemu-system-x86_64 -cdrom &#039;&#039;iso_image&#039;&#039; -boot order=d -drive file=&#039;&#039;disk_image&#039;&#039;,format=raw&lt;br /&gt;
&lt;br /&gt;
フロッピーやディスクイメージ、物理ドライブなどの他のメディアタイプをロードする方法は {{man|1|qemu}} を見てください。&lt;br /&gt;
&lt;br /&gt;
オペレーティングシステムのインストールが終了したら、直接 QEMU イメージを起動することができます ([[#仮想化システムを実行する|仮想化システムを実行する]]を参照)。&lt;br /&gt;
&lt;br /&gt;
{{Warning|デフォルトではマシンに割り当てられるメモリは 128 MB だけです。メモリの量は {{ic|-m}} スイッチで調整することができます、例えば {{ic|-m 512M}} や {{ic|-m 2G}}。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* {{ic|1=-boot order=x}} を指定する代わりに、ブートメニューを使う方を好むユーザーもいるかもしれません: {{ic|1=-boot menu=on}}、設定や実験をしている時は便利です。&lt;br /&gt;
* インストールプロセスでフロッピーや CD を替える必要がある場合、QEMU マシンモニター (仮想マシンのウィンドウで {{ic|Ctrl+Alt+2}} を押す) を使って仮想マシンからストレージデバイスを取り外したりアタッチすることができます。ブロックデバイスを見るには {{ic|info block}} を、デバイスをスワップアウトするには {{ic|change}} コマンドを使って下さい。{{ic|Ctrl+Alt+1}} を押せば仮想マシンに戻ります。}}&lt;br /&gt;
&lt;br /&gt;
== 仮想化システムを実行する ==&lt;br /&gt;
{{ic|qemu-system-*}} バイナリ (例えば {{ic|qemu-system-i386}} や {{ic|qemu-system-x86_64}} など、エミュレートするアーキテクチャによって異なります) を使って仮想化システムを実行します。使用方法は:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 &#039;&#039;options&#039;&#039; &#039;&#039;disk_image&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
全ての {{ic|qemu-system-*}} バイナリでオプションは共通です、全てのオプションのドキュメントは {{man|1|qemu}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
デフォルトで、QEMU は仮想マシンのビデオ出力をウィンドウに表示します。注意: QEMU ウィンドウの中をクリックすると、マウスポインタが取り込まれます。ポインタを戻すには、{{ic|Ctrl+Alt+g}} を押して下さい。&lt;br /&gt;
&lt;br /&gt;
{{Warning|QEMU を root で実行しないでください。スクリプト内で root で実行する必要があるときは、{{ic|-runas}} オプションを使って QEMU の root 特権を外して下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== KVM を有効にする ===&lt;br /&gt;
使用しているプロセッサとカーネルが KVM をサポートしている必要があります。また、必要な[[カーネルモジュール]]がロードされてなければなりません。詳しくは [[KVM]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
QEMU を KVM モードで起動するには、起動オプションに {{ic|-enable-kvm}} を追加してください。実行中の仮想マシンで KVM が有効になっているかどうか確認するには、{{ic|Ctrl+Alt+Shift+2}} を使って QEMU [https://en.wikibooks.org/wiki/QEMU/Monitor Monitor] に入り、{{ic|info kvm}} と入力してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* GUI ツールを使って VM を起動した時にパフォーマンスが出ない場合、KVM サポートを確認してください。QEMU がソフトウェアエミュレーションにフォールバックしている可能性があります。&lt;br /&gt;
* &#039;&#039;ブルースクリーン&#039;&#039;を出さずに Windows 7 や Windows 8 を正しく起動するには KVM を有効にする必要があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== IOMMU (Intel VT-d/AMD-Vi) サポートを有効にする ===&lt;br /&gt;
IOMMU を使うことで PCI パススルーやメモリの保護などの機能が利用できます。[[Wikipedia:ja:IOMMU#利点]] や [https://www.quora.com/Memory-Management-computer-programming/Could-you-explain-IOMMU-in-plain-English Memory Management (computer programming): Could you explain IOMMU in plain English?] を見てください。&lt;br /&gt;
&lt;br /&gt;
IOMMU を有効化するには:&lt;br /&gt;
#CPU によって AMD-Vi/Intel VT-d がサポートされていること、BIOS の設定で有効になっていることを確認してください。&lt;br /&gt;
#Intel の CPU を使っている場合は {{ic|1=intel_iommu=on}}、AMD の CPU を使っている場合は {{ic|1=amd_iommu=on}} を[[カーネルパラメータ]]に追加してください。&lt;br /&gt;
#PCI パススルーのためだけに IOMMU が必要な場合、{{ic|1=iommu=pt}} パラメータも追加してください。Linux がパススルーするデバイスの IOMMU だけを有効化できるようになり、システムの他のデバイスへのパフォーマンスの影響を避けられます。CPU メーカー別のパラメータ (上記) も {{ic|1=on}} にする必要があります。&lt;br /&gt;
#再起動して {{ic|dmesg}} に {{ic|DMAR}} があることを確認して IOMMU が有効になっていることをチェックしてください: {{ic|[0.000000] DMAR: IOMMU enabled}}。&lt;br /&gt;
#{{ic|-device intel-iommu}} を追加して IOMMU デバイスを作成してください:&lt;br /&gt;
 $ qemu-system-x86_64 &#039;&#039;&#039;-enable-kvm -machine q35,accel=kvm -device intel-iommu&#039;&#039;&#039; -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time ..&lt;br /&gt;
&lt;br /&gt;
{{Note|Intel の CPU が搭載されている場合、{{ic|-device intel-iommu}} を使って QEMU ゲストに IOMMU デバイスを作成すると PCI パススルーが無効化されて以下のようなエラーが表示されることがあります: {{bc|Device at bus pcie.0 addr 09.0 requires iommu notifier which is currently not supported by intel-iommu emulation}} ([[OVMF による PCI パススルー#vfio-pci を使う|vfio-pci による PCI パススルー]]など) IO をリマップするには {{ic|1=intel_iommu=on}} カーネルパラメータの追加が必要ですが、PCI パススルーを使う場合は {{ic|-device intel-iommu}} は設定してはいけません。}}&lt;br /&gt;
&lt;br /&gt;
== ホスト・ゲスト OS 間でデータを移動する ==&lt;br /&gt;
=== ネットワーク ===&lt;br /&gt;
ファイルを転送できるネットワークプロトコルであれば [[NFS]], [[Samba|SMB]], [[Wikipedia:Network Block Device|NBD]], HTTP, [[Very Secure FTP Daemon|FTP]], [[Secure Shell|SSH]] など何でも使ってホストとゲスト OS 間でデータを共有することができます、ただしネットワークを適切に設定して適切なサービスを有効にする必要があります。&lt;br /&gt;
&lt;br /&gt;
デフォルトのユーザーモードネットワークは IP アドレス 10.0.2.2 でゲストがホスト OS にアクセスするのを許可します。ホスト OS で動作する全てのサーバー、SSH サーバーや SMB サーバーなどは、この IP アドレスでアクセスすることが可能になります。そしてゲストでは、[[Samba|SMB]] や [[NFS]] でホストのディレクトリをマウントしたり、ホストの HTTP サーバーなどにアクセスすることが可能です。&lt;br /&gt;
ゲスト OS で動作しているサーバーにホスト OS がアクセスすることはできませんが、他のネットワーク設定を使えば不可能ではありません ([[#QEMU の Tap ネットワーク]] を参照)。&lt;br /&gt;
&lt;br /&gt;
=== QEMU の内蔵 SMB サーバー ===&lt;br /&gt;
QEMU のドキュメントには &amp;quot;内蔵の&amp;quot; SMB サーバーがあると書かれていますが、実際は自動的に生成された設定ファイル ({{ic|/tmp/qemu-smb.&#039;&#039;pid&#039;&#039;-0/smb.conf}}) で [[Samba]] を起動して別の IP アドレス (デフォルトでは 10.0.2.4) でゲストにアクセスできるようにするだけです。この機能はユーザーネットワークでしか動作せず、また、共有を設定していればホストの通常の [[Samba]] サービスにゲストがアクセスすることもできるので、必ずしも便利な機能とは言えません。&lt;br /&gt;
&lt;br /&gt;
この機能を有効にするには、次のようなコマンドで QEMU を起動します:&lt;br /&gt;
 $ qemu-system-x86_64 &#039;&#039;disk_image&#039;&#039; -net nic -net user,smb=&#039;&#039;shared_dir_path&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;shared_dir_path&#039;&#039;}} はゲストとホストで共有したいディレクトリに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
これで、ゲストから、ホスト 10.0.2.4 の共有ディレクトリに共有名 &amp;quot;qemu&amp;quot; でアクセスすることができるようになります。例えば、Windows エクスプローラーなら {{ic|\\10.0.2.4\qemu}} を開きます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{ic|1=-net user,smb=&#039;&#039;shared_dir_path1&#039;&#039; -net user,smb=&#039;&#039;shared_dir_path2&#039;&#039;}} や {{ic|1=-net user,smb=&#039;&#039;shared_dir_path1&#039;&#039;,smb=&#039;&#039;shared_dir_path2&#039;&#039;}} のように共有オプションを複数回使用した場合、最後に定義したものだけが共有されます。&lt;br /&gt;
* ゲストシステムが Windows で共有フォルダにアクセスできない場合、[http://ecross.mvps.org/howto/enable-netbios-over-tcp-ip-with-windows.htm NetBIOS プロトコルが有効になっているかどうか] そして NetBIOS プロトコルによって使用されている [https://technet.microsoft.com/en-us/library/cc940063.aspx ポート] がファイアウォールでブロックされてないか確認してください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== raw ディスクイメージの中にパーティションをマウントする ===&lt;br /&gt;
仮想マシンが動作していないときに、raw ディスクイメージファイル内のパーティションをループバックデバイスとして設定することでマウントすることが可能です。これは qcow2 などの特別なフォーマットのディスクイメージでは動作しませんが、{{ic|qemu-nbd}} を使ってマウントすることはできます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|仮想マシンをまた実行する前にパーティションをアンマウントしていることを必ず確認してください。パーティションを読み取り専用以外でマウントしていた場合、データが喪失する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
==== 手動でバイトオフセットを指定する ====&lt;br /&gt;
ディスクイメージのパーティションをマウントする一つの方法として、次のようなコマンドを使って特定のオフセットでディスクイメージをマウントする方法があります:&lt;br /&gt;
 # mount -o loop,offset=32256 &#039;&#039;disk_image&#039;&#039; &#039;&#039;mountpoint&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|1=offset=32256}} オプションは {{ic|losetup}} プログラムにわたされて、ファイルのバイトオフセット 32256 から最後まで続くループバックデバイスが設定され、それからこのループバックデバイスがマウントされます。{{ic|sizelimit}} オプションを使ってパーティションの実際のサイズを指定することもできますが、これは基本的に必要ありません。&lt;br /&gt;
&lt;br /&gt;
ディスクイメージによって、必要なパーティションがオフセット 32256 から始まってない可能性があります。{{ic|fdisk -l &#039;&#039;disk_image&#039;&#039;}} を実行してイメージ内のパーティションを見て下さい。fdisk は512バイトセクタ単位で起点と終点を表示するので、512 を掛けて適当なオフセットを {{ic|mount}} で指定してください。&lt;br /&gt;
&lt;br /&gt;
==== loop モジュールでパーティションを自動検出する ====&lt;br /&gt;
Linux の loop ドライバーはループバックデバイスのパーティションをサポートしていますが、デフォルトでは無効にされています。有効にするには、以下を行なって下さい:&lt;br /&gt;
&lt;br /&gt;
* 全てのループバックデバイスを取り除いて下さい (マウントされているイメージを全てアンコメントするなど)。&lt;br /&gt;
* {{ic|loop}} [[カーネルモジュール|モジュール]]を一度アンロードしてから、{{ic|1=max_part=15}} パラメータを設定してロードしてください。また、ループデバイスの最大数は {{ic|max_loop}} パラメータで決めることができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|loop.ko}} モジュールをカーネルに組み込んでいるかどうかにあわせて、{{ic|/etc/modprobe.d}} にエントリを記述して毎回 {{ic|1=max_part=15}} で loop モジュールをロードするか、カーネルコマンドラインに {{ic|1=loop.max_part=15}} と書きます。}}&lt;br /&gt;
&lt;br /&gt;
あなたのイメージをループバックデバイスとして設定:&lt;br /&gt;
 # losetup -f -P &#039;&#039;disk_image&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これで、デバイスが {{ic|/dev/loop0}} の場合、追加のデバイス {{ic|/dev/loop0pX}} が自動的に作成されます。X はパーティションの番号です。これらのパーティションのループバックデバイスは直接マウントすることができます。例:&lt;br /&gt;
 # mount /dev/loop0p1 &#039;&#039;mountpoint&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;udisksctl&#039;&#039; でディスクイメージをマウントする方法は [[Udisks#ISO イメージのマウント]]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== kpartx を使う ====&lt;br /&gt;
[[Arch User Repository|AUR]] の {{Pkg|multipath-tools}} パッケージに入っている &#039;&#039;&#039;kpartx&#039;&#039;&#039; はデバイスのパーティションテーブルを読み込んでパーティションごとに新しいデバイスを作成することができます。例えば:&lt;br /&gt;
 # kpartx -a &#039;&#039;disk_image&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドで、ループバックデバイスがセットアップされ {{ic|/dev/mapper/}} に必要なパーティションデバイスが作成されます。&lt;br /&gt;
&lt;br /&gt;
=== qcow2 イメージの中にパーティションをマウントする ===&lt;br /&gt;
qcow2 イメージの中のパーティションは {{ic|qemu-nbd}} を使ってマウントできます。[http://en.wikibooks.org/wiki/QEMU/Images#Mounting_an_image_on_the_host Wikibooks] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== 実際のパーティションをハードディスクイメージのシングルプライマリパーティションとして使う ===&lt;br /&gt;
場合によって、QEMU の中からシステムパーティションのどれかを使いたくなることもあるでしょう。仮想マシンでの raw パーティションの使用は、読み書きの操作が物理ホストのファイルシステムレイヤーを通過しないため、パフォーマンスが高くなります。そのようなパーティションをホストとゲストでのデータの共有手段として使うこともできます。&lt;br /&gt;
&lt;br /&gt;
Arch Linux では、raw パーティションのデバイスファイルは、デフォルトで、&#039;&#039;root&#039;&#039; と &#039;&#039;disk&#039;&#039; グループが所有者です。root 以外のユーザーで raw パーティションに読み書きできるようにしたい場合は、パーティションのデバイスファイルの所有者をそのユーザーに変える必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* 仮想マシンにホストシステムのクリティカルなデータ (root パーティションなど) を変更する許可を与えるのは可能ではありますが、推奨はされません。&lt;br /&gt;
* ホストとゲストの両方で同時にパーティションのファイルシステムを読み書き可能でマウントしてはいけません。そうすると、データが破壊される可能性があります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、パーティションを QEMU の仮想マシンに仮想ディスクとしてアタッチできます。&lt;br /&gt;
&lt;br /&gt;
ただし、仮想マシン&#039;&#039;全体&#039;&#039;をパーティションに収めたいときは、自体は多少複雑になります。そのような場合、実際に仮想マシンを起動するディスクイメージファイルがないために、MBR でパーティション分けされたデバイスではなくファイルシステムとしてフォーマットされたパーティションにブートローダーをインストールすることができません。このような仮想マシンは[[カーネル]]と [[initramfs|initrd]] を手動で指定するか、リニア [[RAID]] を使って MBR のディスクをシミュレートすることで起動できます。&lt;br /&gt;
&lt;br /&gt;
==== カーネルと initrd を手動で指定する ====&lt;br /&gt;
QEMU は [[GRUB]] などのブートローダーを迂回して、[[カーネル|Linux カーネル]]と [[initramfs|init ramdisk]] を直接ロードすることをサポートしています。それから root ファイルシステムを含んでいる物理パーティションで、パーティションされていない仮想ディスクとして起動することができます。以下のようなコマンドを実行することで行います:&lt;br /&gt;
&lt;br /&gt;
{{Note|この例で使用するのはゲストのイメージではなく、ホストのイメージです。ゲストのイメージを使いたい場合は、(ホストからファイルシステムを保護するために) {{ic|/dev/sda3}} を読み取り専用でマウントして {{ic|/full/path/to/images}} と指定するか、ゲストで kexec を使ってゲストのカーネルをリロードしてください (起動時間を拡張します)。}}&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -kernel /boot/vmlinuz-linux -initrd /boot/initramfs-linux.img -append root=/dev/sda /dev/sda3&lt;br /&gt;
&lt;br /&gt;
上の例では、ゲストの root ファイルシステムに使われている物理パーティションはホストの {{ic|/dev/sda3}} で、ゲストでは {{ic|/dev/sda}} として表示されます。&lt;br /&gt;
&lt;br /&gt;
もちろん、Arch Linux で使われているものとは違うカーネルや initrd を自由に指定することができます。&lt;br /&gt;
&lt;br /&gt;
複数の[[カーネルパラメータ]]を {{ic|-append}} オプションで指定するときは、クォートを使って囲む必要があります。例:&lt;br /&gt;
 ... -append &#039;root=/dev/sda1 console=ttyS0&#039;&lt;br /&gt;
&lt;br /&gt;
==== リニア RAID を使って MBR で仮想ディスクをシミュレート ====&lt;br /&gt;
ファイルシステムでフォーマットされたパーティションを維持しながらゲストのパーティションをまるでディスクであるかのようなパーティションにしないで、仮想マシンで物理パーティションを使用するもっと複雑な方法として、MBR をシミュレートして GRUB などのブートローダーを使って起動できるようにする方法があります。&lt;br /&gt;
&lt;br /&gt;
リニアモードのソフトウェア [[RAID]] ({{ic|linear.ko}} カーネルドライバーが必要) とループバックデバイスを使えばこれが可能です: 方策としては QEMU の raw ディスクイメーに埋め込みたい物理パーティションに動的にマスターブートレコード (MBR) を先頭に付け加えます。&lt;br /&gt;
&lt;br /&gt;
QEMU ディスクイメージの一部にしたいファイルシステムがあるプレーンな、マウントされていない {{ic|/dev/hdaN}} パーティションがあるとします。まず最初に、MBR を入れるための小さなファイルを作成:&lt;br /&gt;
 $ dd if=/dev/zero of=&#039;&#039;/path/to/mbr&#039;&#039; count=32&lt;br /&gt;
&lt;br /&gt;
これで 16 KB (32 * 512 バイト) のファイルが作成されます。(MBR は512バイトのブロックしか必要としませんが) あまり小さくしすぎないことが重要です。なぜならファイルを小さくすればするほど、ソフトウェア RAID デバイスのチャンクサイズも小さくしなくてはならなくなり、パフォーマンスに影響を与えるからです。次に、MBR ファイルのループバックデバイスを設定します:&lt;br /&gt;
 # losetup -f &#039;&#039;/path/to/mbr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
他にループバックを使っていないために、作成されるデバイスは {{ic|/dev/loop0}} になるとします。次のステップはソフトウェア RAID を使って &amp;quot;merged&amp;quot; MBR + {{ic|/dev/hdaN}} ディスクイメージを作成することです:&lt;br /&gt;
 # modprobe linear&lt;br /&gt;
 # mdadm --build --verbose /dev/md0 --chunk=16 --level=linear --raid-devices=2 /dev/loop0 /dev/hda&#039;&#039;N&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
作成した {{ic|/dev/md0}} は QEMU の raw ディスクイメージとして使用します (エミュレータがアクセスできるようにパーミッションを設定するのを忘れないでください)。最後にプライマリパーティションの開始位置が {{ic|/dev/md0}} の {{ic|/dev/hda&#039;&#039;N&#039;&#039;}} に一致するようにディスクの設定 (ディスクのジオメトリとパーティションテーブルの設定) を行います (上の例では 16 * 512 = 16384 バイトのオフセットです)。ホストマシンで {{ic|fdisk}} を使って行ってください。エミュレータの中で行ってはいけません: QEMU のデフォルトのディスク認識ルーチンによってキロバイトで割り切れないオフセットが生まれるとソフトウェア RAID コードで管理できなくなります。ホストから以下を実行してください:&lt;br /&gt;
 # fdisk /dev/md0&lt;br /&gt;
&lt;br /&gt;
{{ic|X}} を押してエキスパートメニューを開きます。トラック毎のセクタ数を設定してシリンダーの容量が MBR ファイルの容量に一致するようにしてください。ヘッダが2つでセクタサイズが512の場合、1トラックあたりのセクタ数は16となり、シリンダのサイズは 2x16x512=16k になります。&lt;br /&gt;
&lt;br /&gt;
{{ic|R}} を押してメインメニューに戻って下さい。&lt;br /&gt;
&lt;br /&gt;
{{ic|P}} を押してシリンダーのサイズが 16k になってることを確認します。&lt;br /&gt;
&lt;br /&gt;
{{ic|/dev/hda&#039;&#039;N&#039;&#039;}} にあわせてシングルプライマリパーティションを作成してください。パーティションの開始位置はシリンダー2で終了位置はディスクの末尾になります (シリンダーの数は fdisk に入力したときの値で変わります)。&lt;br /&gt;
&lt;br /&gt;
最後に、結果をファイルに書き出してください (&#039;w&#039;)。これでホストから直接パーティションをディスクイメージとしてマウントすることができます:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -hdc /dev/md0 &#039;&#039;[...]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
もちろん、元のパーティション {{ic|/dev/hda&#039;&#039;N&#039;&#039;}} に必要ツールが含まれていれば、QEMU を使ってディスクイメージにブートローダーを設定できます。&lt;br /&gt;
&lt;br /&gt;
===== nbd-server を使う =====&lt;br /&gt;
リニア RAID を使う代わりに、({{pkg|nbd}} パッケージに含まれている) {{ic|nbd-server}} を使って QEMU の MBR ラッパーを作成する方法もあります。&lt;br /&gt;
&lt;br /&gt;
上記のように MBR ラッパーファイルを設定したら、{{ic|wrapper.img.0}} に名前を変更してください。そして同じディレクトリに {{ic|wrapper.img.1}} という名前のシンボリックリンクを作成して、パーティションにリンクするようにしてください。また、同じディレクトリに以下のスクリプトを作成します:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 dir=&amp;quot;$(realpath &amp;quot;$(dirname &amp;quot;$0&amp;quot;)&amp;quot;)&amp;quot;&lt;br /&gt;
 cat &amp;gt;wrapper.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
 [generic]&lt;br /&gt;
 allowlist = true&lt;br /&gt;
 listenaddr = 127.713705&lt;br /&gt;
 port = 10809&lt;br /&gt;
 &lt;br /&gt;
 [wrap]&lt;br /&gt;
 exportname = $dir/wrapper.img&lt;br /&gt;
 multifile = true&lt;br /&gt;
 EOF&lt;br /&gt;
 &lt;br /&gt;
 nbd-server \&lt;br /&gt;
     -C wrapper.conf \&lt;br /&gt;
     -p wrapper.pid \&lt;br /&gt;
     &amp;quot;$@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|.0}} と {{ic|.1}} という拡張子が重要です。他は変えてもかまいません。上記のスクリプトを実行後 (nbd-server がパーティションにアクセスできるように root で実行してください)、以下のコマンドで QEMU を起動できます:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -drive file=nbd:127.713705:10809:exportname=wrap &#039;&#039;[...]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ネットワーク ==&lt;br /&gt;
仮想ネットワークのパフォーマンスはユーザーモードネットワークまたは vde によるよりも tap デバイスやブリッジを用いる方が良いでしょう。tap デバイスやブリッジはカーネル内で実装されているからです。&lt;br /&gt;
&lt;br /&gt;
加えて、デフォルトの e1000 NIC のエミュレーションではなく [http://wiki.libvirt.org/page/Virtio virtio] ネットワークデバイスを仮想マシンに指定することでネットワークのパフォーマンスを向上させることができます。詳しくは [[#virtio ドライバーのインストール]] を参照。&lt;br /&gt;
&lt;br /&gt;
=== リンク層アドレス ===&lt;br /&gt;
QEMU に {{ic|-net nic}} 引数を与えると、デフォルトで、仮想マシンにリンク層アドレス {{ic|52:54:00:12:34:56}} のネットワークインターフェイスが割り当てられます。しかしながら、ブリッジネットワークで複数の仮想マシンを使用する場合、個別の仮想マシンにはタップデバイスの仮想マシン側からそれぞれ固有のリンク層 (MAC) アドレスを設定しなくてはなりません。設定を行わないと、ブリッジが上手く動きません。同一のリンク層アドレスを持つ複数のソースからパケットを受け取ることになるからです。たとえタップデバイス自体に固有のリンク層アドレスを設定していたとしても、ソースのリンク層アドレスはタップデバイスを通過するときに書き換えられないため、問題が発生します。&lt;br /&gt;
&lt;br /&gt;
個々の仮想マシンに固有のリンク層アドレスを設定、それも、どのアドレスも {{ic|52:54:}} で始まるように設定してください。以下のオプションを使って下さい (&#039;&#039;X&#039;&#039; は任意の16進数の数字に置き換えてください):&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -net nic,macaddr=52:54:&#039;&#039;XX:XX:XX:XX&#039;&#039; -net vde &#039;&#039;disk_image&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
固有のリンク層アドレスの生成は複数の方法で行うことができます:&lt;br /&gt;
&lt;br /&gt;
1. NIC ごとに固有のリンク層アドレスを手動で指定する。仮想マシンを起動するたびに同じ IP アドレスが DHCP サーバーによって割り当てられるという利点がありますが、仮想マシンが大量にある場合は現実的ではありません。&lt;br /&gt;
&lt;br /&gt;
2. 仮想マシンを起動するたびにランダムなリンク層アドレスを生成する。衝突する可能性はほとんどゼロですが、DHCP サーバーによって割り当てられる IP アドレスが毎回異なるのが欠点です。以下のコマンドをスクリプトで使うことで {{ic|macaddr}} 変数にランダムなリンク層アドレスを生成できます:&lt;br /&gt;
&lt;br /&gt;
 printf -v macaddr &amp;quot;52:54:%02x:%02x:%02x:%02x&amp;quot; $(( $RANDOM &amp;amp; 0xff)) $(( $RANDOM &amp;amp; 0xff )) $(( $RANDOM &amp;amp; 0xff)) $(( $RANDOM &amp;amp; 0xff ))&lt;br /&gt;
 qemu-system-x86_64 -net nic,macaddr=&amp;quot;$macaddr&amp;quot; -net vde &#039;&#039;disk_image&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3. 以下のスクリプト {{ic|qemu-mac-hasher.py}} を使ってハッシュ関数を利用し仮想マシンの名前からリンク層アドレスを生成する。仮想マシンの名前を一意なものとして、上記の方法の良いところを組み合わせています。スクリプトが実行されるたびに同一のリンク層アドレスが生成される上、衝突する可能性はほとんどありません。&lt;br /&gt;
&lt;br /&gt;
{{hc|qemu-mac-hasher.py|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import zlib&lt;br /&gt;
&lt;br /&gt;
if len(sys.argv) != 2:&lt;br /&gt;
    print(&amp;quot;usage: %s &amp;lt;VM Name&amp;gt;&amp;quot; % sys.argv[0])&lt;br /&gt;
    sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
crc = zlib.crc32(sys.argv[1].encode(&amp;quot;utf-8&amp;quot;)) &amp;amp; 0xffffffff&lt;br /&gt;
crc = str(hex(crc))[2:]&lt;br /&gt;
print(&amp;quot;52:54:%s%s:%s%s:%s%s:%s%s&amp;quot; % tuple(crc))&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
以下のように使うことができます:&lt;br /&gt;
&lt;br /&gt;
 vm_name=&amp;quot;&#039;&#039;VM Name&#039;&#039;&amp;quot;&lt;br /&gt;
 qemu-system-x86_64 -name &amp;quot;$vm_name&amp;quot; -net nic,macaddr=$(qemu-mac-hasher.py &amp;quot;$vm_name&amp;quot;) -net vde &#039;&#039;disk_image&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ユーザーモードネットワーク ===&lt;br /&gt;
デフォルトで、{{ic|-netdev}} 引数をつけていないと、QEMU は DHCP サーバーが内蔵されたユーザーモードネットワークを使用します。DHCP クライアントを実行したときに仮想マシンには IP アドレスが与えられ、QEMU による IP マスカレードを通して物理ホストのネットワークにアクセスできるようになります。&lt;br /&gt;
&lt;br /&gt;
{{warning|TCP と UDP プロトコルでしか動作しないので、{{ic|ping}} を含む ICMP は動作しません。{{ic|ping}} を使ってネットワーク接続をテストしても無駄です。}}&lt;br /&gt;
&lt;br /&gt;
ホストがインターネットに接続されていれば、このデフォルトの設定で簡単に仮想マシンをインターネットにアクセスさせることができますが、外部ネットワークからは仮想マシンは直接は見えず、また、複数の仮想マシンを同時に起動していても仮想マシン同士が通信することはできません。&lt;br /&gt;
&lt;br /&gt;
QEMU のユーザーモードネットワークには内蔵の TFTP や SMB サーバー、ゲストを VLAN に追加してゲストの通信を可能にするなどの機能があります。詳しくは {{ic|-net user}} フラグの QEMU ドキュメントを参照してください。&lt;br /&gt;
&lt;br /&gt;
ただし、ユーザーモードネットワークには有用性とパフォーマンスの両方で制約があります。より高度なネットワーク設定をするには tap デバイスや他の方法を使って下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|ホスト環境が [[systemd-networkd]] を使用している場合、[[systemd-networkd#必要なサービスと設定]]に書かれているように {{ic|/etc/resolv.conf}} ファイルのシンボリックリンクを作成してください。作成しないとゲスト環境で DNS ルックアップができなくなります。}}&lt;br /&gt;
&lt;br /&gt;
=== QEMU の Tap ネットワーク ===&lt;br /&gt;
[[wikipedia:ja:TUN/TAP|Tap デバイス]]は Linux カーネルの機能で、本当のネットワークインターフェイスのように見える仮想ネットワークインターフェイスを作成することができます。tap インターフェイスに送られたパケットは、そのインターフェイスに bind された、QEMU などのユーザースペースプログラムに送信されます。&lt;br /&gt;
&lt;br /&gt;
QEMU は仮想マシンで tap ネットワークを利用して、tap インターフェイスに送られたパケットを仮想マシンに送信することで仮想マシンのネットワークインターフェイス (通常は Ethernet インターフェイス) から受け取ったように見せることが可能です。逆に、仮想マシンがネットワークインターフェイスを通して送信したものは全て tap インターフェイスが受け取ります。&lt;br /&gt;
&lt;br /&gt;
Tap デバイスは Linux の bridge ドライバーによってサポートされているため、tap デバイスを互いに、または {{ic|eth0}} といったホストのインターフェイスとブリッジすることができます。これは、仮想マシンを互いに通信できるようにしたい場合や、LAN 上の他のマシンが仮想マシンに通信できるようにしたい場合に価値があります。&lt;br /&gt;
&lt;br /&gt;
{{Warning|tap デバイスとホストのインターフェイス ({{ic|eth0}} など) をブリッジすると、仮想マシンは外部ネットワークから直接認識されるようになり、攻撃を受ける可能性が出てきます。仮想マシンからアクセスできるリソースに応じて、通常のコンピュータと同じような[[ファイアウォール|対策]]を施して仮想マシンを防護するようにしてください。仮想マシンのリソースがほとんどなかったり複数の仮想マシンを立ち上げるなど危険性が高すぎる場合、[[#ホストオンリーネットワーク|ホストオンリーネットワーク]]を使って NAT を設定するほうが良いでしょう。その場合、ゲストごとにファイアウォールを設定する必要はなく、ホストだけにファイアウォールを設定すれば十分です。}}&lt;br /&gt;
&lt;br /&gt;
==== ホストオンリーネットワーク ====&lt;br /&gt;
ブリッジに IP アドレスが与えられていてそこへのトラフィックが許可されていながら、本当のインターフェイス (例: {{ic|eth0}}) がブリッジに接続されていない場合、仮想マシンは互いに通信したりホストシステムと通信することができるようになります。しかしながら、物理ホストで IP マスカレードを設定しないかぎり外部ネットワークとは一切通信することができません。この設定は [[VirtualBox]] などの他の仮想化ソフトウェアでは&#039;&#039;ホストオンリーネットワーク&#039;&#039;と呼ばれています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* IP マスカレードを設定したい場合、[[インターネット共有#NAT の有効化]]ページを見てください。&lt;br /&gt;
* ブリッジインターフェイスで DHCP サーバーを実行して仮想ネットワークを構築することもできます。例えば {{ic|172.20.0.1/16}} サブネットで DHCP サーバーとして [[dnsmasq]] を使うには:&lt;br /&gt;
 # ip addr add 172.20.0.1/16 dev br0&lt;br /&gt;
 # ip link set br0 up&lt;br /&gt;
 # dnsmasq --interface&amp;amp;#61;br0 --bind-interfaces --dhcp-range&amp;amp;#61;172.20.0.2,172.20.255.254&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 内部ネットワーク ====&lt;br /&gt;
ブリッジに IP アドレスを与えずにブリッジへの全てのトラフィックを INPUT チェインで drop する [[iptables]] ルールを追加した場合、仮想マシンは互いに通信することはできても、物理ホストや外側のネットワークに接続できなくなります。この設定は [[VirtualBox]] などの他の仮想化ソフトウェアでは&#039;&#039;内部ネットワーク&#039;&#039;と呼ばれています。仮想マシンに固定 IP アドレスを割り当てるかマシンのどれか一つで DHCP サーバーを実行する必要があります。&lt;br /&gt;
&lt;br /&gt;
デフォルトで iptables はブリッジネットワークのパケットを拒否します。ブリッジネットワークのパケットを許可する iptables のツールを使用する必要があります:&lt;br /&gt;
&lt;br /&gt;
 # iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
==== qemu-bridge-helper を使用するブリッジネットワーク ====&lt;br /&gt;
{{Note|この方法は QEMU 1.1 から使うことができます、http://wiki.qemu.org/Features/HelperNetworking を参照。}}&lt;br /&gt;
&lt;br /&gt;
この方法にはスタートアップスクリプトが必要なく、すぐに複数の tap やブリッジに対応することができます。既存のブリッジに tap デバイスを作成できるようにする、{{ic|/usr/lib/qemu/qemu-bridge-helper}} バイナリを使用します。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ブリッジの作成に関する情報は [[netctl でブリッジ接続]]を参照。}} &lt;br /&gt;
&lt;br /&gt;
まず、{{ic|/etc/qemu/bridge.conf.sample}} を {{ic|/etc/qemu/bridge.conf}} にコピーします。そして {{ic|/etc/qemu/bridge.conf}} を編集して QEMU で使用するブリッジの名前を全て記述します: &lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/qemu/bridge.conf|&lt;br /&gt;
allow &#039;&#039;bridge0&#039;&#039;&lt;br /&gt;
allow &#039;&#039;bridge1&#039;&#039;&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
設定したら VM を起動して下さい。一番基本的な使い方は:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -net nic -net bridge,br=&#039;&#039;bridge0&#039;&#039; &#039;&#039;[...]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
tap が複数の場合、追加の NIC 全てに VLAN を指定する必要があります:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -net nic -net bridge,br=&#039;&#039;bridge0&#039;&#039; -net nic,vlan=1 -net bridge,vlan=1,br=&#039;&#039;bridge1&#039;&#039; &#039;&#039;[...]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== ブリッジを手動で作成する ====&lt;br /&gt;
&lt;br /&gt;
{{Tip|QEMU 1.1 から、スクリプトを追加することなく [http://wiki.qemu.org/Features/HelperNetworking network bridge helper] で tun/tap を設定することができます。[[#qemu-bridge-helper を使用するブリッジネットワーク]] を参照。}}&lt;br /&gt;
&lt;br /&gt;
以下では仮想マシンを {{ic|eth0}} などのホストインターフェイスにブリッジする方法を説明しています。おそらく一番よく使われている設定です。この設定では、物理的なホストマシンと同一の Ethernet セグメントに、直接外部ネットワークに仮想マシンが位置するようになります。&lt;br /&gt;
&lt;br /&gt;
通常の Ethernet アダプタをブリッジアダプタで置き換えて、通常の Ethernet アダプタをブリッジアダプタに bind することにします。&lt;br /&gt;
&lt;br /&gt;
* ブリッジを制御するための {{ic|brctl}} が入っている {{Pkg|bridge-utils}} をインストール。&lt;br /&gt;
&lt;br /&gt;
* IPv4 フォワーディングを有効にする:&lt;br /&gt;
 # sysctl net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
変更を永続的にするために、{{ic|/etc/sysctl.d/99-sysctl.conf}} の {{ic|1=net.ipv4.ip_forward = 0}} を {{ic|1=net.ipv4.ip_forward = 1}} に変えます。&lt;br /&gt;
&lt;br /&gt;
* {{ic|tun}} モジュールをロードして起動時にロードするように設定してください。詳しくは[[カーネルモジュール]]を参照。&lt;br /&gt;
&lt;br /&gt;
* ブリッジを作成します。詳しくは [[netctl でブリッジ接続]]を見て下さい。ブリッジの名前を {{ic|br0}} にするか、下のスクリプトを使用するブリッジの名前に忘れずに変更してください。&lt;br /&gt;
&lt;br /&gt;
* QEMU 用に {{ic|root:kvm}} 750 パーミッションで tap アダプタを立ち上げるスクリプトを作成:&lt;br /&gt;
{{hc|/etc/qemu-ifup|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
  &lt;br /&gt;
echo &amp;quot;Executing /etc/qemu-ifup&amp;quot;&lt;br /&gt;
echo &amp;quot;Bringing up $1 for bridged mode...&amp;quot;&lt;br /&gt;
sudo /usr/bin/ip link set $1 up promisc on&lt;br /&gt;
echo &amp;quot;Adding $1 to br0...&amp;quot;&lt;br /&gt;
sudo /usr/bin/brctl addif br0 $1&lt;br /&gt;
sleep 2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* QEMU 用に {{ic|root:kvm}} 750 パーミッションで {{ic|/etc/qemu-ifdown}} の tap アダプタを落とすスクリプトを作成:&lt;br /&gt;
{{hc|/etc/qemu-ifdown|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
echo &amp;quot;Executing /etc/qemu-ifdown&amp;quot;&lt;br /&gt;
sudo /usr/bin/ip link set $1 down&lt;br /&gt;
sudo /usr/bin/brctl delif br0 $1&lt;br /&gt;
sudo /usr/bin/ip link delete dev $1&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|visudo}} を使って {{ic|sudoers}} ファイルに以下を追加します:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Cmnd_Alias      QEMU=/usr/bin/ip,/usr/bin/modprobe,/usr/bin/brctl&lt;br /&gt;
%kvm     ALL=NOPASSWD: QEMU&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* 以下の {{ic|run-qemu}} スクリプトを使って QEMU を起動します:&lt;br /&gt;
{{hc|run-qemu|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
USERID=$(whoami)&lt;br /&gt;
&lt;br /&gt;
# Get name of newly created TAP device; see https://bbs.archlinux.org/viewtopic.php?pid=1285079#p1285079&lt;br /&gt;
precreationg=$(/usr/bin/ip tuntap list | /usr/bin/cut -d: -f1 | /usr/bin/sort)&lt;br /&gt;
sudo /usr/bin/ip tuntap add user $USERID mode tap&lt;br /&gt;
postcreation=$(/usr/bin/ip tuntap list | /usr/bin/cut -d: -f1 | /usr/bin/sort)&lt;br /&gt;
IFACE=$(comm -13 &amp;lt;(echo &amp;quot;$precreationg&amp;quot;) &amp;lt;(echo &amp;quot;$postcreation&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
# This line creates a random MAC address. The downside is the DHCP server will assign a different IP address each time&lt;br /&gt;
printf -v macaddr &amp;quot;52:54:%02x:%02x:%02x:%02x&amp;quot; $(( $RANDOM &amp;amp; 0xff)) $(( $RANDOM &amp;amp; 0xff )) $(( $RANDOM &amp;amp; 0xff)) $(( $RANDOM &amp;amp; 0xff ))&lt;br /&gt;
# Instead, uncomment and edit this line to set a static MAC address. The benefit is that the DHCP server will assign the same IP address.&lt;br /&gt;
# macaddr=&#039;52:54:be:36:42:a9&#039;&lt;br /&gt;
  &lt;br /&gt;
qemu-system-x86_64 -net nic,macaddr=$macaddr -net tap,ifname=&amp;quot;$IFACE&amp;quot; $*&lt;br /&gt;
  &lt;br /&gt;
sudo ip link set dev $IFACE down &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
sudo ip tuntap del $IFACE mode tap &amp;amp;&amp;gt; /dev/null &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
それから VM を起動するために、以下のようにコマンドを実行して下さい:&lt;br /&gt;
 $ run-qemu -hda &#039;&#039;myvm.img&#039;&#039; -m 512 -vga std&lt;br /&gt;
&lt;br /&gt;
{{Tip|ホストで DHCP アドレスが取得できない場合、おそらくブリッジで [[iptables]] がデフォルトで立ち上がっているのが原因です。}}&lt;br /&gt;
&lt;br /&gt;
* パフォーマンスとセキュリティ上の理由でブリッジのファイアウォールは無効化するのが推奨されています [http://ebtables.netfilter.org/documentation/bridge-nf.html]:&lt;br /&gt;
{{hc|/etc/sysctl.d/10-disable-firewall-on-bridge.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
net.bridge.bridge-nf-call-ip6tables = 0&lt;br /&gt;
net.bridge.bridge-nf-call-iptables = 0&lt;br /&gt;
net.bridge.bridge-nf-call-arptables = 0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
すぐに変更を適用するには {{ic|sysctl -p /etc/sysctl.d/10-disable-firewall-on-bridge.conf}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
[http://wiki.libvirt.org/page/Networking#Creating_network_initscripts libvirt wiki] や [https://bugzilla.redhat.com/show_bug.cgi?id=512206 Fedora bug 512206] を参照。起動中にファイルが存在しないというエラーが起こるときは、起動時に {{ic|bridge}} モジュールをロードするようにしてください。[[カーネルモジュール#ロード]] を参照。&lt;br /&gt;
&lt;br /&gt;
または、次のようにルールを追加することで全てのトラフィックをブリッジで通すように [[iptables]] を設定することができます:&lt;br /&gt;
 -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
=== VDE2 によるネットワーク ===&lt;br /&gt;
&lt;br /&gt;
==== VDE とは? ====&lt;br /&gt;
VDE は Virtual Distributed Ethernet の略です。[[en2:User-mode Linux|uml]]_switch の拡張として始まりました。仮想ネットワークを管理するためのツールボックスです。&lt;br /&gt;
&lt;br /&gt;
基本的にはソケットである仮想スイッチを作成して、物理マシンと仮想マシンを両方ともスイッチに&amp;quot;接続&amp;quot;するという考えになります。以下で説明する設定はとてもシンプルです。ただし、VDE はさらに強力な力を持っており、仮想スイッチ同士を接続したり、別のホストでスイッチを動作させスイッチのトラフィックを監視することなどができます。[http://wiki.virtualsquare.org/wiki/index.php/Main_Page プロジェクトのドキュメント] を読むことを推奨。&lt;br /&gt;
&lt;br /&gt;
この方法の利点はユーザーに sudo 権限を与える必要がないということです。通常ユーザーに modprobe の実行を許可する必要はありません。&lt;br /&gt;
&lt;br /&gt;
==== 基本 ====&lt;br /&gt;
VDE サポートは {{Pkg|vde2}} パッケージで[[インストール]]できます。&lt;br /&gt;
&lt;br /&gt;
この設定では、tun/tap を使ってホストに仮想インターフェイスを作成します。{{ic|tun}} モジュールをロード (詳しくは[[カーネルモジュール]]を参照):&lt;br /&gt;
&lt;br /&gt;
 # modprobe tun&lt;br /&gt;
&lt;br /&gt;
仮想スイッチを作成:&lt;br /&gt;
&lt;br /&gt;
 # vde_switch -tap tap0 -daemon -mod 660 -group users&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでスイッチと {{ic|tap0}} が作成され、接続され、そして {{ic|users}} グループのユーザーがスイッチを使えるようにします。&lt;br /&gt;
&lt;br /&gt;
インターフェイスは接続されてもまだ設定がされていません。設定するには、次のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 # ip addr add 192.168.100.254/24 dev tap0&lt;br /&gt;
&lt;br /&gt;
そして、通常ユーザーで {{ic|-net}} オプションを使って KVM を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -net nic -net vde -hda &#039;&#039;[...]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
物理ネットワークでやるのと同じようにゲストのネットワークを設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|仮想マシンからインターネットにアクセスするためにタップデバイスに NAT を設定することができます。詳しくは[[インターネット共有#NAT の有効化]]を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
==== 起動スクリプト ====&lt;br /&gt;
VDE を起動するメインスクリプトの例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/scripts/qemu-network-env|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# QEMU/VDE network environment preparation script&lt;br /&gt;
&lt;br /&gt;
# The IP configuration for the tap device that will be used for&lt;br /&gt;
# the virtual machine network:&lt;br /&gt;
&lt;br /&gt;
TAP_DEV=tap0&lt;br /&gt;
TAP_IP=192.168.100.254&lt;br /&gt;
TAP_MASK=24&lt;br /&gt;
TAP_NETWORK=192.168.100.0&lt;br /&gt;
&lt;br /&gt;
# Host interface&lt;br /&gt;
NIC=eth0&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        echo -n &amp;quot;Starting VDE network for QEMU: &amp;quot;&lt;br /&gt;
&lt;br /&gt;
        # If you want tun kernel module to be loaded by script uncomment here &lt;br /&gt;
	#modprobe tun 2&amp;gt;/dev/null&lt;br /&gt;
	## Wait for the module to be loaded&lt;br /&gt;
 	#while ! lsmod | grep -q &amp;quot;^tun&amp;quot;; do echo &amp;quot;Waiting for tun device&amp;quot;; sleep 1; done&lt;br /&gt;
&lt;br /&gt;
        # Start tap switch&lt;br /&gt;
        vde_switch -tap &amp;quot;$TAP_DEV&amp;quot; -daemon -mod 660 -group users&lt;br /&gt;
&lt;br /&gt;
        # Bring tap interface up&lt;br /&gt;
        ip address add &amp;quot;$TAP_IP&amp;quot;/&amp;quot;$TAP_MASK&amp;quot; dev &amp;quot;$TAP_DEV&amp;quot;&lt;br /&gt;
        ip link set &amp;quot;$TAP_DEV&amp;quot; up&lt;br /&gt;
&lt;br /&gt;
        # Start IP Forwarding&lt;br /&gt;
        echo &amp;quot;1&amp;quot; &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
        iptables -t nat -A POSTROUTING -s &amp;quot;$TAP_NETWORK&amp;quot;/&amp;quot;$TAP_MASK&amp;quot; -o &amp;quot;$NIC&amp;quot; -j MASQUERADE&lt;br /&gt;
        ;;&lt;br /&gt;
  stop)&lt;br /&gt;
        echo -n &amp;quot;Stopping VDE network for QEMU: &amp;quot;&lt;br /&gt;
        # Delete the NAT rules&lt;br /&gt;
        iptables -t nat -D POSTROUTING &amp;quot;$TAP_NETWORK&amp;quot;/&amp;quot;$TAP_MASK&amp;quot; -o &amp;quot;$NIC&amp;quot; -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
        # Bring tap interface down&lt;br /&gt;
        ip link set &amp;quot;$TAP_DEV&amp;quot; down&lt;br /&gt;
&lt;br /&gt;
        # Kill VDE switch&lt;br /&gt;
        pgrep -f vde_switch | xargs kill -TERM &lt;br /&gt;
        ;;&lt;br /&gt;
  restart|reload)&lt;br /&gt;
        $0 stop&lt;br /&gt;
        sleep 1&lt;br /&gt;
        $0 start&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        echo &amp;quot;Usage: $0 {start|stop|restart|reload}&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
上のスクリプトを使う systemd サービスの例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/qemu-network-env.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Manage VDE Switch&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/etc/systemd/scripts/qemu-network-env start&lt;br /&gt;
ExecStop=/etc/systemd/scripts/qemu-network-env stop&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|qemu-network-env}} が実行できるようにパーミッションを変更:&lt;br /&gt;
&lt;br /&gt;
 # chmod u+x /etc/systemd/scripts/qemu-network-env&lt;br /&gt;
&lt;br /&gt;
通常の方法で起動することができます (詳しくは [[systemd#ユニットを使う]] を参照):&lt;br /&gt;
&lt;br /&gt;
 # systemctl start qemu-network-env&lt;br /&gt;
&lt;br /&gt;
====他の方法====&lt;br /&gt;
上の方法が動作しない場合やカーネル設定, TUN, dnsmasq, iptables を変えたくない場合は以下のコマンドで同じ結果になります。&lt;br /&gt;
&lt;br /&gt;
 # vde_switch -daemon -mod 660 -group users&lt;br /&gt;
 # slirpvde --dhcp --daemon&lt;br /&gt;
&lt;br /&gt;
ホストのネットワークの接続を使って VM を起動するには:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -net nic,macaddr=52:54:00:00:EE:03 -net vde &#039;&#039;disk_image&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== VDE2 Bridge ===&lt;br /&gt;
[http://selamatpagicikgu.wordpress.com/2011/06/08/quickhowto-qemu-networking-using-vde-tuntap-and-bridge/ quickhowto: qemu networking using vde, tun/tap, and bridge] に基づいています。vde に接続された仮想マシンは外部から参照出来る状態になります。例えば、ADSL ルーターから直接 DHCP の設定を個々の仮想マシンが受け取ることが可能です。&lt;br /&gt;
&lt;br /&gt;
==== 基本 ====&lt;br /&gt;
{{ic|tun}} モジュールと {{Pkg|bridge-utils}} パッケージが必要です。&lt;br /&gt;
&lt;br /&gt;
vde2/tap デバイスを作成:&lt;br /&gt;
&lt;br /&gt;
 # vde_switch -tap tap0 -daemon -mod 660 -group users&lt;br /&gt;
 # ip link set tap0 up&lt;br /&gt;
&lt;br /&gt;
ブリッジを作成:&lt;br /&gt;
&lt;br /&gt;
 # brctl addbr br0&lt;br /&gt;
&lt;br /&gt;
デバイスを追加:&lt;br /&gt;
&lt;br /&gt;
 # brctl addif br0 eth0&lt;br /&gt;
 # brctl addif br0 tap0&lt;br /&gt;
&lt;br /&gt;
ブリッジインターフェイスを設定:&lt;br /&gt;
&lt;br /&gt;
 # dhcpcd br0&lt;br /&gt;
&lt;br /&gt;
==== 起動スクリプト ====&lt;br /&gt;
全てのデバイスを設定する必要があります。ブリッジに必要なのは IP アドレスだけです。ブリッジの物理デバイスは (例: {{ic|eth0}})、[[netctl]] でカスタム Ethernet プロファイルを使います:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/netctl/ethernet-noip|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Description=&#039;A more versatile static Ethernet connection&#039;&lt;br /&gt;
Interface=eth0&lt;br /&gt;
Connection=ethernet&lt;br /&gt;
IP=no&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
以下のカスタム systemd サービスを使うことで {{ic|users}} ユーザーグループで使用する VDE2 tap インターフェイスを作成することができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/vde2@.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Network Connectivity for %i&lt;br /&gt;
Wants=network.target&lt;br /&gt;
Before=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
ExecStart=/usr/bin/vde_switch -tap %i -daemon -mod 660 -group users&lt;br /&gt;
ExecStart=/usr/bin/ip link set dev %i up&lt;br /&gt;
ExecStop=/usr/bin/ip addr flush dev %i&lt;br /&gt;
ExecStop=/usr/bin/ip link set dev %i down&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
そして最後に、[[netctl でブリッジ接続|netctl でブリッジネットワーク]]を作成することが可能です。&lt;br /&gt;
&lt;br /&gt;
== グラフィック ==&lt;br /&gt;
QEMU は様々なグラフィック出力を使うことができます: {{ic|std}}, {{ic|qxl}}, {{ic|vmware}}, {{ic|virtio}}, {{ic|cirrus}}, {{ic|none}}。&lt;br /&gt;
&lt;br /&gt;
=== std ===&lt;br /&gt;
{{ic|-vga std}} では 2560 x 1600 ピクセルまでの解像度を得ることができます。QEMU 2.2 からデフォルトとなっています。&lt;br /&gt;
&lt;br /&gt;
=== qxl ===&lt;br /&gt;
QXL は 2D サポートのある準仮想化グラフィックドライバーです。使用するには {{ic|-vga qxl}} オプションを使用してゲストにドライバーをインストールしてください。QXL を使用する場合 SPICE を使うことでグラフィックの性能を向上させることができます。&lt;br /&gt;
&lt;br /&gt;
Linux ゲストでは、パフォーマンスを得るために {{ic|qxl}} と {{ic|bochs_drm}} カーネルモジュールをロードしてください。&lt;br /&gt;
&lt;br /&gt;
==== SPICE ====&lt;br /&gt;
[http://spice-space.org/ Spice プロジェクト] は仮想化されたデスクトップデバイスを操作するための完全な、オープンソースのソリューションを提供することを目的としています。主として QEMU 仮想マシンへの高品質なリモートアクセスを提供することに力を注いでいます。&lt;br /&gt;
&lt;br /&gt;
グラフィック出力に QXL を使用している場合にのみ SPICE を利用できます。&lt;br /&gt;
&lt;br /&gt;
リモートデスクトッププロトコルとして SPICE を使用して起動するコマンドの例:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -vga qxl -spice port=5930,disable-ticketing -device virtio-serial-pci -device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 -chardev spicevmc,id=spicechannel0,name=vdagent&lt;br /&gt;
&lt;br /&gt;
{{ic|-device virtio-serial-pci}} オプションは virtio-serial デバイスを追加し、{{ic|1=-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0}} は spice vdagent のためにデバイスのポートを開いて {{ic|1=-chardev spicevmc,id=spicechannel0,name=vdagent}} はポートに spicevmc chardev を追加します。{{ic|virtserialport}} デバイスの {{ic|1=chardev=}} オプションは {{ic|chardev}} オプションに指定する {{ic|1=id=}} オプションと一致している必要があります (上記の例では {{ic|spicechannel0}})。また、ポートの名前はゲストの vdagent が使用する名前空間である {{ic|com.redhat.spice.0}} でなければなりません。最後に {{ic|1=name=vdagent}} を指定することで spice はチャンネルの利用目的を使用することができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|SPICE モードの QEMU はリモートデスクトップサーバーのように振る舞うため、{{ic|-daemonize}} パラメータを付けて QEMU をデーモンモードで起動するとより便利です。}}&lt;br /&gt;
&lt;br /&gt;
それから SPICE クライアントでゲストに接続してください。プロトコルの開発者は SPICE クライアントとして {{pkg|virt-viewer}} を推奨しています:&lt;br /&gt;
&lt;br /&gt;
 $ remote-viewer spice://127.0.0.1:5930&lt;br /&gt;
&lt;br /&gt;
リファレンス・テスト実装である {{Pkg|spice-gtk3}}{{Broken package link|置換パッケージ: {{Pkg|spice-gtk}}}} を使うこともできおます:&lt;br /&gt;
&lt;br /&gt;
 $ spicy -h 127.0.0.1 -p 5930&lt;br /&gt;
&lt;br /&gt;
クライアントは他にも存在します [http://www.spice-space.org/download.html]。&lt;br /&gt;
&lt;br /&gt;
TCP ポートの代わりに [[wikipedia:Unix_socket|Unix ソケット]]を使用することで、パフォーマンスが向上するという報告があります [https://unix.stackexchange.com/questions/91774/performance-of-unix-sockets-vs-tcp-ports]。例:&lt;br /&gt;
 $ qemu-system-x86_64 -vga qxl -device virtio-serial-pci -device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 -chardev spicevmc,id=spicechannel0,name=vdagent -spice unix,addr=/tmp/vm_spice.socket,disable-ticketing&lt;br /&gt;
&lt;br /&gt;
接続するには:&lt;br /&gt;
&lt;br /&gt;
 $ remote-viewer spice+unix:///tmp/vm_spice.socket&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 $ spicy --uri=&amp;quot;spice+unix:///tmp/vm_spice.socket&amp;quot;&lt;br /&gt;
&lt;br /&gt;
マルチモニターやクリップボードの共有などのサポートが必要な場合、以下のパッケージをゲスト側でインストールしてください:&lt;br /&gt;
* {{Pkg|spice-vdagent}}: クライアントと X セッションの間でコピーアンドペーストを可能にする Spice エージェント&lt;br /&gt;
* {{Pkg|xf86-video-qxl}} {{AUR|xf86-video-qxl-git}}: Xorg の X11 qxl ビデオドライバー&lt;br /&gt;
* 他のオペレーティングシステムの場合、[http://www.spice-space.org/download.html SPICE-Space ダウンロード] ページのゲストセクションを見てください。&lt;br /&gt;
&lt;br /&gt;
インストールしたら {{ic|spice-vdagentd.service}} を有効にしてください。&lt;br /&gt;
&lt;br /&gt;
===== SPICE によるパスワード認証 =====&lt;br /&gt;
SPICE のパスワード認証を有効にしたい場合、{{ic|-spice}} 引数から {{ic|disable-ticketing}} を外して {{ic|1=password=&#039;&#039;yourpassword&#039;&#039;}} を追加してください。例:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -vga qxl -spice port=5900,password=&#039;&#039;yourpassword&#039;&#039; -device virtio-serial-pci -device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 -chardev spicevmc,id=spicechannel0,name=vdagent&lt;br /&gt;
&lt;br /&gt;
SPICE サーバーに接続する際に SPICE クライアントがパスワードを要求するようになります。&lt;br /&gt;
&lt;br /&gt;
===== TLS 暗号化 =====&lt;br /&gt;
&lt;br /&gt;
SPICE サーバーとの通信を TLS で暗号化するよう設定することもできます。まず、以下のファイルが含まれたディレクトリが必要です (ファイルの名前は完全に一致している必要があります):&lt;br /&gt;
* {{ic|ca-cert.pem}}: CA マスター証明書。&lt;br /&gt;
* {{ic|server-cert.pem}}: {{ic|ca-cert.pem}} で署名されたサーバー証明書。&lt;br /&gt;
* {{ic|server-key.pem}}: サーバー秘密鍵。&lt;br /&gt;
&lt;br /&gt;
サーバー自身の CA で自己署名証明書を生成する方法は [https://www.spice-space.org/spice-user-manual.html#_generating_self_signed_certificates Spice User Manual] に例が載っています。&lt;br /&gt;
&lt;br /&gt;
証明書を用意したら {{ic|-spice}} 引数を使って SPICE で QEMU を起動してください: {{ic|1=-spice tls-port=5901,password=&#039;&#039;yourpassword&#039;&#039;,x509-dir=&#039;&#039;/path/to/pki_certs&#039;&#039;}} ({{ic|&#039;&#039;/path/to/pki_certs&#039;&#039;}} は証明書が含まれているディレクトリのパスに置き換えてください)。&lt;br /&gt;
&lt;br /&gt;
起動したら {{pkg|virt-viewer}} を使ってサーバーに接続することが可能です:&lt;br /&gt;
&lt;br /&gt;
 $ remote-viewer spice://&#039;&#039;hostname&#039;&#039;?tls-port=5901 --spice-ca-file=&#039;&#039;/path/to/ca-cert.pem&#039;&#039; --spice-host-subject=&amp;quot;C=&#039;&#039;XX&#039;&#039;,L=&#039;&#039;city&#039;&#039;,O=&#039;&#039;organization&#039;&#039;,CN=&#039;&#039;hostname&#039;&#039;&amp;quot; --spice-secure-channels=all&lt;br /&gt;
&lt;br /&gt;
{{ic|--spice-host-subject}} パラメータは {{ic|server-cert.pem}} のサブジェクトにあわせて設定する必要があります。また、サーバー証明書を検証するために {{ic|ca-cert.pem}} をクライアントにコピーしてください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|--spice-host-subject}} に指定するサーバー証明書のサブジェクトは以下のコマンドで確認することができます: {{bc|&amp;lt;nowiki&amp;gt;$ openssl x509 -noout -subject -in server-cert.pem | cut -d&#039; &#039; -f2- | sed &#039;s/\///&#039; | sed &#039;s/\//,/g&#039;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|spice-gtk3}}{{Broken package link|置換パッケージ: {{Pkg|spice-gtk}}}} を使用する場合:&lt;br /&gt;
&lt;br /&gt;
 $ spicy -h &#039;&#039;hostname&#039;&#039; -s 5901 --spice-ca-file=ca-cert.pem --spice-host-subject=&amp;quot;C=&#039;&#039;XX&#039;&#039;,L=&#039;&#039;city&#039;&#039;,O=&#039;&#039;organization&#039;&#039;,CN=&#039;&#039;hostname&#039;&#039;&amp;quot; --spice-secure-channels=all&lt;br /&gt;
&lt;br /&gt;
=== vmware ===&lt;br /&gt;
多少バグが存在しますが、std や cirrus よりもパフォーマンスが上です。ゲストに、VMware ドライバーをインストールしてください (Arch Linux ゲストなら {{Pkg|xf86-video-vmware}} と {{Pkg|xf86-input-vmmouse}})。&lt;br /&gt;
&lt;br /&gt;
=== virtio ===&lt;br /&gt;
&lt;br /&gt;
{{ic|virtio-vga}} / {{ic|virtio-gpu}} は [https://virgil3d.github.io/ virgl] がベースの順仮想化 3D グラフィックドライバーです。発展途上であり、カーネルバージョンが新しい (4.4 以上) Linux ゲストで {{ic|1=--with-gallium-drivers=virgl}} オプションを付けてコンパイルされた {{Pkg|mesa}} (&amp;gt;=11.2) でしか動作しません。&lt;br /&gt;
&lt;br /&gt;
ゲスト環境で 3D アクセラレーションを有効にするには {{ic|-vga virtio}} を使って vga を選択して {{ic|1=-display sdl,gl=on}} (sdl ディスプレイ出力) または {{ic|1=-display gtk,gl=on}} (gtk ディスプレイ出力) を使用してディスプレイデバイスで opengl コンテキストを有効にしてください。ゲスト側のカーネルログを見ることで設定が問題ないか確認できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ dmesg {{!}} grep drm |&lt;br /&gt;
[drm] pci: virtio-vga detected&lt;br /&gt;
[drm] virgl 3d acceleration enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
2016年9月現在、spice プロトコルのサポートは開発中で、{{Pkg|spice}} (&amp;gt;= 0.13.2) の開発版をインストールして qemu を再コンパイルすることでテストできます。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://www.kraxel.org/blog/tag/virgl/ kraxel のブログ] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== cirrus ===&lt;br /&gt;
&lt;br /&gt;
cirrus グラフィカルアダプタは [http://wiki.qemu.org/ChangeLog/2.2#VGA 2.2 以前まではデフォルト] でした。新しいシステムでは [https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/ 使用しないほうがよい] とされています。&lt;br /&gt;
&lt;br /&gt;
=== none ===&lt;br /&gt;
これは VGA カードが全くない PC と同じようになります。{{ic|-vnc}} オプションを使ってもアクセスすることはできません。また、QEMU に VGA カードをエミュレートさせ SDL ディスプレイを無効にする {{ic|-nographic}} オプションとは異なります。&lt;br /&gt;
&lt;br /&gt;
=== vnc ===&lt;br /&gt;
{{ic|-nographic}} オプションを使っている場合、{{ic|-vnc display}} オプションを追加することで QEMU に {{ic|display}} を listen させて VGA ディスプレイを VNC セッションにリダイレクトさせることができます。[[#ブート時に QEMU 仮想マシンを起動する]] セクションの設定例にこれのサンプルがあります。&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -vga std -nographic -vnc :0&lt;br /&gt;
 $ gvncviewer :0&lt;br /&gt;
&lt;br /&gt;
VNC を使う際、[https://www.berrange.com/posts/2010/07/04/more-than-you-or-i-ever-wanted-to-know-about-virtual-keyboard-handling/ ここ]で示されているようなキーボードの問題が発生するかもしれません。解決方法は、QEMU で {{ic|-k}} オプションを&#039;&#039;使わない&#039;&#039;ことと、{{Pkg|gtk-vnc}} の {{ic|gvncviewer}} を使うことです。libvirt のメーリングリストに投稿された [https://www.mail-archive.com/libvir-list@redhat.com/msg13340.html この] メッセージも参照してください。&lt;br /&gt;
&lt;br /&gt;
== オーディオ ==&lt;br /&gt;
&lt;br /&gt;
=== ホスト ===&lt;br /&gt;
&lt;br /&gt;
QEMU で使用するオーディオドライバーは {{ic|QEMU_AUDIO_DRV}} 環境変数で設定できます:&lt;br /&gt;
&lt;br /&gt;
 $ export QEMU_AUDIO_DRV=pa&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行すると PulseAudio に関する QEMU の設定オプションが表示されます:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -audio-help | awk &#039;/Name: pa/&#039; RS=&lt;br /&gt;
&lt;br /&gt;
表示されたオプションは以下のように環境変数としてエクスポートできます:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
$ export QEMU_PA_SINK=alsa_output.pci-0000_04_01.0.analog-stereo.monitor&lt;br /&gt;
$ export QEMU_PA_SOURCE=input&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ゲスト ===&lt;br /&gt;
使用できるエミュレーションオーディオドライバーのリストを表示するには:&lt;br /&gt;
 $ qemu-system-x86_64 -soundhw help&lt;br /&gt;
&lt;br /&gt;
例えば、ゲストで {{ic|hda}} ドライバーを使用するには {{ic|-soundhw hda}} を使ってください。&lt;br /&gt;
&lt;br /&gt;
{{Note|ゲストマシンのエミュレートされたビデオグラフィックカードドライバーによって問題が起こることがあります。ドライバーをそれぞれ試してみてください。{{ic|&amp;lt;nowiki&amp;gt;qemu-system-x86_64 -h | grep vga&amp;lt;/nowiki&amp;gt;}} で利用可能なオプションを確認できます。}}&lt;br /&gt;
&lt;br /&gt;
== virtio ドライバーのインストール ==&lt;br /&gt;
QEMU にで [http://wiki.libvirt.org/page/Virtio virtio] ドライバーを使って準仮想化ブロックとネットワークデバイスをゲストが利用できるようにすることができ、より良いパフォーマンス・少ないオーバーヘッドを実現します。&lt;br /&gt;
&lt;br /&gt;
* virtio ブロックデバイスにはシンプルな {{Ic|-hd*}} の代わりに {{Ic|-drive}} オプションと {{Ic|1=if=virtio}} が必要です:&lt;br /&gt;
 $ qemu-system-x86_64 -boot order=c -drive file=&#039;&#039;disk_image&#039;&#039;,if=virtio&lt;br /&gt;
&lt;br /&gt;
{{Note|起動するには {{Ic|1=-boot order=c}} が絶対に必要です。{{Ic|-hd*}} では自動で検出されません。}}&lt;br /&gt;
&lt;br /&gt;
* ネットワークでもほぼ同じです:&lt;br /&gt;
 $ qemu-system-x86_64 -net nic,model=virtio&lt;br /&gt;
&lt;br /&gt;
{{Note|ゲストマシンに virtio デバイスのドライバーが存在する場合にのみ機能します。Arch Linux を含む Linux には必要なドライバーが入っていますが、他のオペレーティングシステムで virtio デバイスが使える保証はありません。}}&lt;br /&gt;
&lt;br /&gt;
=== (Arch) Linux ゲストを用意する ===&lt;br /&gt;
Arch Linux ゲストをインストールした後 virtio デバイスを使うには、次のモジュールをゲストでロードする必要があります: {{Ic|virtio}}, {{Ic|virtio_pci}}, {{Ic|virtio_blk}}, {{Ic|virtio_net}}, {{Ic|virtio_ring}}。32ビットのゲストの場合、特定の &amp;quot;virtio&amp;quot; モジュールは必要ありません。&lt;br /&gt;
&lt;br /&gt;
virtio ディスクから起動したい場合、イニシャル RAM ディスクに必要なモジュールを含ませなければなりません。デフォルトでは、[[mkinitcpio]] の {{ic|autodetect}} フックによって管理されています。もしくは {{ic|/etc/mkinitcpio.conf}} の {{ic|MODULES}} 行を使って必要なモジュールを含めてイニシャル RAM ディスクをリビルドしてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/mkinitcpio.conf|2=&lt;br /&gt;
MODULES=&amp;quot;virtio virtio_blk virtio_pci virtio_net&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
Virtio ディスクは前に {{ic|&#039;&#039;&#039;v&#039;&#039;&#039;}} が付いて認識されます (例: {{ic|&#039;&#039;&#039;v&#039;&#039;&#039;da}}, {{ic|&#039;&#039;&#039;v&#039;&#039;&#039;db}} など)。なので、virtio ディスクから起動する際は {{ic|/etc/fstab}} や {{ic|/boot/grub/grub.cfg}} などに変更を加える必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|/etc/fstab}} とブートローダーの両方で [[永続的なブロックデバイスの命名#By-uuid|UUID]] を使ってディスクを指定している場合、何もする必要はありません。}}&lt;br /&gt;
&lt;br /&gt;
KVM による準仮想化に関する詳細は [http://www.linux-kvm.org/page/Boot_from_virtio_block_device こちら] で読むことができます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|qemu-guest-agent}} をインストールすることでハイパーバイザの管理機能を拡張する QMP コマンドのサポートを得ることができます。パッケージをインストールしたら {{ic|qemu-ga.service}} を起動・有効化してください。&lt;br /&gt;
&lt;br /&gt;
=== Windows ゲストを用意する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=Windows 8.1 ゲストを Windows 10 にアップグレードするには、一時的に CPU を core2duo,nx にしてインストールするしかありません [https://ubuntuforums.org/showthread.php?t=2289210]。インストール後は他の CPU 設定に戻して大丈夫です。}}&lt;br /&gt;
&lt;br /&gt;
==== ブロックデバイスドライバー ====&lt;br /&gt;
&lt;br /&gt;
===== Windows の新規インストール =====&lt;br /&gt;
&lt;br /&gt;
Windows には virtio ドライバーが付属していません。そのため、インストール時にロードする必要があります。基本的には2つの方法が存在します: フロッピーディスクを使用するか ISO ファイルを使用するかです。どちらのイメージも [https://fedoraproject.org/wiki/Windows_Virtio_Drivers Fedora のリポジトリ] からダウンロードできます。&lt;br /&gt;
&lt;br /&gt;
フロッピーディスクを使う方法は QEMU の電源を入れた最初のときに F6 (新しい Windows では Shift-F6) を押さなければいけないため難易度が高くなります。VNC コンソールウィンドウに接続するのに時間が必要であるためです。起動シーケンスに遅延時間を追加することができます。起動時に遅延を適用する方法は {{man|1|qemu}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
ISO を使ってドライバーをロードする方法は Windows Vista あるいは Windows Server 2008 以降でないと使用できません。virtio ドライバーでイメージをロードして、それから最初のディスクデバイスで cdrom デバイスと Windows インストーラーをロードします:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 ... \&lt;br /&gt;
 -drive file=&#039;&#039;/path/to/primary/disk.img&#039;&#039;,index=0,media=disk,if=virtio \&lt;br /&gt;
 -drive file=&#039;&#039;/path/to/installer.iso&#039;&#039;,index=2,media=cdrom \&lt;br /&gt;
 -drive file=&#039;&#039;/path/to/virtio.iso&#039;&#039;,index=3,media=cdrom \&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
インストール時に Windows インストーラーはプロダクトキーを要求してチェックを行います。&amp;quot;Where do you want to install Windows?&amp;quot; 画面では、ディスクが見つけられないという警告が表示されます。以下の手順に従ってください (アップデート適用済みの Windows Server 2012 R2 がベース):&lt;br /&gt;
&lt;br /&gt;
* {{ic|Load Drivers}} オプションを選択。&lt;br /&gt;
* &amp;quot;Hide drivers that aren&#039;t compatible with this computer&#039;s hardware&amp;quot; のチェックを外す。&lt;br /&gt;
* Browse ボタンをクリックして virtio iso の CDROM を開く (通常は &amp;quot;virtio-win-XX&amp;quot; という名前になります)。&lt;br /&gt;
* {{ic|E:\viostor\[your-os]\amd64}} を選択して OK を押す。&lt;br /&gt;
* Next をクリック。&lt;br /&gt;
&lt;br /&gt;
これで virtio ディスクが表示されるので、選択して、フォーマット・インストールすることができます。&lt;br /&gt;
&lt;br /&gt;
===== virtio を使用するように既存の Windows 仮想マシンを変更 =====&lt;br /&gt;
&lt;br /&gt;
virtio ディスクから起動するように Windows ゲストを用意するのはやや面倒です。&lt;br /&gt;
&lt;br /&gt;
[https://fedoraproject.org/wiki/Windows_Virtio_Drivers Fedora のリポジトリ] から virtio ディスクドライバーをダウンロードすることができます。&lt;br /&gt;
&lt;br /&gt;
そして Windows がドライバーを検索するように、新しいディスクイメージを作成する必要があります。例:&lt;br /&gt;
 $ qemu-img create -f qcow2 &#039;&#039;fake.qcow2&#039;&#039; 1G&lt;br /&gt;
&lt;br /&gt;
(virtio モードの) フェイクディスクと CD-ROM とドライバーで元の Windows ゲストを起動 (ブートディスクを IDE モードで使う):&lt;br /&gt;
 $ qemu-system-x86_64 -m 512 -vga std -drive file=&#039;&#039;windows_disk_image&#039;&#039;,if=ide -drive file=&#039;&#039;fake.qcow2&#039;&#039;,if=virtio -cdrom virtio-win-0.1-81.iso&lt;br /&gt;
&lt;br /&gt;
Windows はフェイクディスクを検出してそのドライバーを検索します。ドライバーが見つからない場合は、&#039;&#039;Device Manager&#039;&#039; を開いて、エクスクラメーションマークのアイコンが付いた SCSI ドライブを探して (開いて下さい)、&#039;&#039;Update driver&#039;&#039; をクリックして仮想 CD-ROM を選択してください。ディレクトリを再帰的に検索すると書かれたチェックボックスを選択するのを忘れずに。&lt;br /&gt;
&lt;br /&gt;
インストールが成功したら、仮想マシンを止めて virtio モードのブートディスクで再起動することができます:&lt;br /&gt;
 $ qemu-system-x86_64 -m 512 -vga std -drive file=&#039;&#039;windows_disk_image&#039;&#039;,if=virtio&lt;br /&gt;
&lt;br /&gt;
{{Note|ブルースクリーンになってしまう場合は、{{ic|-m}} パラメータを忘れていないこと、ドライバーをインストールする前にシステムドライブを ide ではなく virtio を使って起動していないことを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
==== ネットワークドライバー ====&lt;br /&gt;
virtio ネットワークドライバーのインストールはもう少し簡単で、上記に {{ic|-net}} 引数を追加します:&lt;br /&gt;
 $ qemu-system-x86_64 -m 512 -vga std -drive file=&#039;&#039;windows_disk_image&#039;&#039;,if=virtio -net nic,model=virtio -cdrom virtio-win-0.1-74.iso&lt;br /&gt;
&lt;br /&gt;
Windows はネットワークアダプタを検出してそのドライバーを検索します。ドライバーが見つからない場合は、&#039;&#039;Device Manager&#039;&#039; を開いて、エクスクラメーションマークのアイコンが付いたネットワークアダプタを探して (開いて下さい)、&#039;&#039;Update driver&#039;&#039; をクリックして仮想 CD-ROM を選択してください。ディレクトリを再帰的に検索すると書かれたチェックボックスを選択するのを忘れずに。&lt;br /&gt;
&lt;br /&gt;
==== バルーンドライバー ====&lt;br /&gt;
&lt;br /&gt;
({{ic|virsh}} コマンドの {{ic|dommemstat}} を使うなどして) ゲストのメモリ状態を監視したりメモリの容量を実行中に変えたい場合、ゲストバルーンドライバーをインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Device Manager&#039;&#039; を開いて &#039;&#039;System devices&#039;&#039; の &#039;&#039;PCI standard RAM Controller&#039;&#039; (あるいは &#039;&#039;Other devices&#039;&#039; の unrecognized PCI controller) から &#039;&#039;Update driver&#039;&#039; を選択してください。ウィンドウが開いたら &#039;&#039;Browse my computer...&#039;&#039; を選んで CD-ROM を選択してください (必ず &#039;&#039;Include subdirectories&#039;&#039; チェックボックスにチェックを入れてください)。インストールしたら再起動してください。ドライバーがインストールされてバルーンを膨張させることができるようになります (例えば hmp の {{ic|balloon &#039;&#039;memory_size&#039;&#039;}} コマンドでバルーンができるかぎり多くのメモリを取得してゲストの利用可能なメモリ容量を &#039;&#039;memory_size&#039;&#039; まで縮小します)。ただしゲストのメモリ状態を監視するには、さらに &#039;&#039;Balloon&#039;&#039; サービスをインストールする必要があります。管理者としてコマンドラインを開いて CD-ROM から &#039;&#039;Balloon&#039;&#039; ディレクトリの奥に入ってください。&#039;&#039;amd64&#039;&#039; (&#039;&#039;x86&#039;&#039;) ディレクトリまで入ったら {{ic|blnsrv.exe -i}} を実行することでインストールが実行されます。その後 {{ic|virsh}} の {{ic|dommemstat}} コマンドでサポートされている値が出力されるはずです。&lt;br /&gt;
&lt;br /&gt;
=== FreeBSD ゲストを用意する ===&lt;br /&gt;
FreeBSD 8.3 以降を使っている場合は {{ic|emulators/virtio-kmod}} port をインストールしてください、10.0-CURRENT ではカーネルに含まれています。インストール後、{{ic|/boot/loader.conf}} ファイルに以下を追加します:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
virtio_loader=&amp;quot;YES&amp;quot;&lt;br /&gt;
virtio_pci_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
virtio_blk_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
if_vtnet_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
virtio_balloon_load=&amp;quot;YES&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
そして次を実行して {{ic|/etc/fstab}} を修正してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
sed -i bak &amp;quot;s/ada/vtbd/g&amp;quot; /etc/fstab&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|/etc/fstab}} が問題ないか確認してください。何かがおかしい場合、レスキュー CD で起動して {{ic|/etc/fstab.bak}} を {{ic|/etc/fstab}} にコピーします。&lt;br /&gt;
&lt;br /&gt;
== QEMU モニタ ==&lt;br /&gt;
&lt;br /&gt;
QEMU の実行中、仮想マシンを操作するためのモニタコンソールが表示されます。QEMU モニタには仮想マシンの情報を取得したりデバイスをホットプラグしたり、仮想マシンの状態を保存するスナップショットを作成するなどの機能があります。利用可能なコマンドのリストは QEMU モニタコンソールで {{ic|help}} または {{ic|?}} を実行したり、[https://qemu.weilnetz.de/doc/qemu-doc.html#pcsys_005fmonitor QEMU 公式ドキュメント] で確認できます。&lt;br /&gt;
&lt;br /&gt;
=== モニタコンソールにアクセス ===&lt;br /&gt;
&lt;br /&gt;
デフォルトグラフィックオプションの {{ic|std}} を使用している場合、QEMU ウィンドウで {{ic|Ctrl+Alt+2}} を押すか &#039;&#039;View &amp;gt; compatmonitor0&#039;&#039; をクリックすることで QEMU モニタにアクセスできます。仮想マシンのグラフィックビューに戻るには {{ic|Ctrl+Alt+1}} を押すか &#039;&#039;View &amp;gt; VGA&#039;&#039; をクリックします。&lt;br /&gt;
&lt;br /&gt;
ただし、モニタにアクセスする標準の方法は QEMU がサポートしている全てのグラフィック出力で使えるわけではありません。モニタにアクセスする別の方法として以下の方法があります:&lt;br /&gt;
&lt;br /&gt;
* [[telnet]]: {{ic|-monitor telnet:127.0.0.1:&#039;&#039;port&#039;&#039;,server,nowait}} パラメータを付けて QEMU を起動してください。仮想マシンが起動したら telnet 経由でモニタにアクセスできます:&lt;br /&gt;
 $ telnet 127.0.0.1 &#039;&#039;port&#039;&#039;&lt;br /&gt;
{{Note|listen する IP として {{ic|127.0.0.1}} を指定した場合、QEMU が動作している同一ホストからのみモニタに接続できるようになります。リモートホストから接続したい場合、QEMU が {{ic|0.0.0.0}} を listen するように指定する必要があります: {{ic|-monitor telnet:0.0.0.0:&#039;&#039;port&#039;&#039;,server,nowait}}。接続は暗号化されず認証も不要であるため、[[ファイアウォール]]が設定されていてローカルネットワークが信頼できる場合のみこの方法を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
* UNIX ソケット: {{ic|-monitor unix:&#039;&#039;socketfile&#039;&#039;,server,nowait}}  パラメータを付けて QEMU を起動してください。{{pkg|socat}} または {{pkg|openbsd-netcat}} を使って接続することができます。&lt;br /&gt;
&lt;br /&gt;
例えば QEMU を以下のコマンドで起動した場合:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 &#039;&#039;[...]&#039;&#039; -monitor unix:/tmp/monitor.sock,server,nowait &#039;&#039;[...]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
以下のコマンドでモニタに接続できます:&lt;br /&gt;
&lt;br /&gt;
 $ socat - UNIX-CONNECT:/tmp/monitor.sock&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 $ nc -U /tmp/monitor.sock&lt;br /&gt;
&lt;br /&gt;
* TCP: {{ic|-monitor tcp:127.0.0.1:&#039;&#039;port&#039;&#039;,server,nowait}} パラメータを付けることで TCP 経由でモニタにアクセスできます。{{pkg|openbsd-netcat}} または {{pkg|gnu-netcat}} をインストールして netcat で接続してください:&lt;br /&gt;
&lt;br /&gt;
 $ nc 127.0.0.1 &#039;&#039;port&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|QEMU が動作しているホスト以外のデバイスから tcp ソケットに接続したい場合、telnet と同じように {{ic|0.0.0.0}} を使うようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
* 標準 I/O: {{ic|-monitor stdio}} 引数を付けて起動することで同じターミナルから自動的にモニタにアクセスすることができます。&lt;br /&gt;
&lt;br /&gt;
=== モニタコンソールを使って仮想マシンにキーボードの押下を送信 ===&lt;br /&gt;
&lt;br /&gt;
設定によっては仮想マシン上で一部のキーの組み合わせがホストによって邪魔されて使えない場合があります (tty を切り替える {{ic|Ctrl+Alt+F*}} など)。特定のキーの組み合わせについてはモニタコンソールを使ってキーを送信することで問題を解決できます。モニタに切り替えてから {{ic|sendkey}} コマンドを使って仮想マシンにキーの押下を送信してください。例:&lt;br /&gt;
&lt;br /&gt;
 (qemu) sendkey ctrl-alt-f2&lt;br /&gt;
&lt;br /&gt;
=== モニタコンソールを使ってスナップショットを作成・管理 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|スナップショット機能は仮想マシンのディスクイメージが &#039;&#039;qcow2&#039;&#039; 形式の場合にのみ利用できます。&#039;&#039;raw&#039;&#039; イメージでは使用できません。}}&lt;br /&gt;
&lt;br /&gt;
ときには仮想マシンの現在の状態を保存して何か問題が発生したときに仮想マシンの状態を元に戻したいということもあるでしょう。QEMU のモニタコンソールにはスナップショットを作成・管理してマシンの状態をリバートするのに必要なユーティリティが備わっています。&lt;br /&gt;
&lt;br /&gt;
* {{ic|savevm &#039;&#039;name&#039;&#039;}} を使うことで &#039;&#039;name&#039;&#039; という名前のスナップショットが作成されます。&lt;br /&gt;
* {{ic|loadvm &#039;&#039;name&#039;&#039;}} をしよすうると仮想マシンがスナップショット &#039;&#039;name&#039;&#039; の状態に戻ります。&lt;br /&gt;
* {{ic|delvm &#039;&#039;name&#039;&#039;}} で &#039;&#039;name&#039;&#039; という名前のスナップショットが削除されます。&lt;br /&gt;
* 保存済みのスナップショットのリストは {{ic|info snapshots}} で確認できます。スナップショットは自動付与される ID 番号とユーザーがスナップショットを作成するときに付けた名前で識別できます。&lt;br /&gt;
&lt;br /&gt;
=== immutable モードで仮想マシンを起動 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|-snapshot}} パラメータを付けて QEMU を起動することで仮想マシンを凍った状態で実行することができ、仮想マシンの電源が来られたときに全ての変更は破棄されます。ゲストによるディスクイメージの書き込みがあったときは、{{ic|/tmp}} の一時ファイルに変更が保存され QEMU が停止したときに消去されます。&lt;br /&gt;
&lt;br /&gt;
ただしマシンが frozen モードで実行中のとき、モニタコンソールを使って以下のコマンドを実行することで変更をディスクイメージに保存することが可能です:&lt;br /&gt;
&lt;br /&gt;
 (qemu) commit&lt;br /&gt;
&lt;br /&gt;
frozen モードで実行中にスナップショットが作成されると同じようにディスクに変更をコミットしないかぎり QEMU の終了時に破棄されます。&lt;br /&gt;
&lt;br /&gt;
=== モニタコンソールによる一時停止と電源オプション ===&lt;br /&gt;
&lt;br /&gt;
モニタコマンドを使って物理マシンの操作を QEMU でエミュレートできます:&lt;br /&gt;
&lt;br /&gt;
* {{ic|system_powerdown}} は仮想マシンに ACPI シャットダウンリクエストを送信します。物理マシンの電源ボタンを押したときと同じような動きになります。&lt;br /&gt;
* {{ic|system_reset}} は物理マシンのリセットボタンと同じように仮想マシンをリセットします。仮想マシンが正常に再起動されないためデータが消失したりファイルシステムが破損する可能性があります。&lt;br /&gt;
* {{ic|stop}} は仮想マシンを停止します。&lt;br /&gt;
* {{ic|cont}} は仮想マシンを停止した状態から復帰します。&lt;br /&gt;
&lt;br /&gt;
=== 仮想マシンのスクリーンショットの取得 ===&lt;br /&gt;
&lt;br /&gt;
モニタコンソールで以下のコマンドを実行することで PPM 形式で仮想マシンのグラフィックディスプレイのスクリーンショットを取得できます:&lt;br /&gt;
&lt;br /&gt;
 (qemu) screendump &#039;&#039;file.ppm&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
=== ブート時に QEMU 仮想マシンを起動する ===&lt;br /&gt;
==== libvirt を使う ====&lt;br /&gt;
[[libvirt]] を使って仮想マシンをセットアップした場合、{{ic|virsh autostart}} や virt-manager の GUI を通して、仮想マシンの Boot Options から &amp;quot;Start virtual machine on host boot up&amp;quot; を選択することでホストの起動時に仮想マシンを起動するように設定することができます。&lt;br /&gt;
&lt;br /&gt;
==== カスタムスクリプト ====&lt;br /&gt;
起動時に QEMU VM を実行するように、以下の systemd ユニットと設定を使うことができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/qemu@.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=QEMU virtual machine&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=&amp;quot;type=system-x86_64&amp;quot; &amp;quot;haltcmd=kill -INT $MAINPID&amp;quot;&lt;br /&gt;
EnvironmentFile=/etc/conf.d/qemu.d/%i&lt;br /&gt;
PIDFile=/tmp/%i.pid&lt;br /&gt;
ExecStart=/usr/bin/env qemu-${type} -name %i -nographic -pidfile /tmp/%i.pid $args&lt;br /&gt;
ExecStop=/bin/sh -c ${haltcmd}&lt;br /&gt;
TimeoutStopSec=30&lt;br /&gt;
KillMode=none&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{man|5|systemd.service}}と {{man|5|systemd.kill}} の man ページによれば、{{ic|1=KillMode=none}} オプションの使用が必須です。このオプションがないと {{ic|ExecStop}} コマンド (一行 echo するだけ) が終了した後にすぐにメインの qemu プロセスがキルされることになり、システムを正しくシャットダウンできなくなってしまいます。&lt;br /&gt;
* {{ic|PIDFile}} オプションを使用しないと systemd は qemu のメインプロセスが終了したかどうか通知できず、システムが正しくシャットダウンできなくなります。ホスト環境でシャットダウンしても仮想マシンのシャットダウンを待機しなくなってしまいます。}}&lt;br /&gt;
&lt;br /&gt;
VM ごとに、{{ic|/etc/conf.d/qemu.d/&#039;&#039;vm_name&#039;&#039;}} という名前の設定ファイルを作成して、以下の変数を設定します:&lt;br /&gt;
&lt;br /&gt;
; type&lt;br /&gt;
: 実行する QEMU バイナリ。指定すれば、{{ic|/usr/bin/qemu-}} が前に付けられて VM を起動するのにそのバイナリが使われます。例えば {{ic|1=type=&amp;quot;system-arm&amp;quot;}} で {{ic|qemu-system-arm}} イメージが起動できます。&lt;br /&gt;
; args&lt;br /&gt;
: 起動するときの QEMU コマンドライン。{{ic|-name ${vm} -nographic}} はいつも前に付けます。&lt;br /&gt;
; haltcmd&lt;br /&gt;
: VM を安全にシャットダウンするためのコマンド。例えば {{ic|-monitor telnet:..}} を使ってモニターに {{ic|system_powerdown}} を送信して ACPI で VM の電源を切ります。SSH やその他の方法が使えます。&lt;br /&gt;
&lt;br /&gt;
設定例:&lt;br /&gt;
{{hc|/etc/conf.d/qemu.d/one|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
type=&amp;quot;system-x86_64&amp;quot;&lt;br /&gt;
&lt;br /&gt;
args=&amp;quot;-enable-kvm -m 512 -hda /dev/mapper/vg0-vm1 -net nic,macaddr=DE:AD:BE:EF:E0:00 \&lt;br /&gt;
 -net tap,ifname=tap0 -serial telnet:localhost:7000,server,nowait,nodelay \&lt;br /&gt;
 -monitor telnet:localhost:7100,server,nowait,nodelay -vnc :0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
haltcmd=&amp;quot;echo &#039;system_powerdown&#039; | nc localhost 7100&amp;quot; # or netcat/ncat&lt;br /&gt;
&lt;br /&gt;
# You can use other ways to shut down your VM correctly&lt;br /&gt;
#haltcmd=&amp;quot;ssh powermanager@vm1 sudo poweroff&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{hc|/etc/conf.d/qemu.d/two|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
args=&amp;quot;-enable-kvm -m 512 -hda /srv/kvm/vm2.img -net nic,macaddr=DE:AD:BE:EF:E0:01 \&lt;br /&gt;
 -net tap,ifname=tap1 -serial telnet:localhost:7001,server,nowait,nodelay \&lt;br /&gt;
 -monitor telnet:localhost:7101,server,nowait,nodelay -vnc :1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
haltcmd=&amp;quot;echo &#039;system_powerdown&#039; | nc localhost 7101&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを使って、ブート時にそれぞれの仮想マシンが起動するように設定します:&lt;br /&gt;
 # systemctl enable qemu@&#039;&#039;vm_name&#039;&#039;&lt;br /&gt;
 # systemctl disable qemu@&#039;&#039;vm_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== シームレスなマウス ===&lt;br /&gt;
ゲストのオペレーティングシステムのウィンドウをクリックしたときにマウスが取り込まれないようにするには、{{ic|-usb -device usb-tablet}} オプションを追加します。これによって QEMU はマウスを取り込むことなくマウスの位置を伝えることができるようになります。また、このコマンドは有効化されている場合 PS/2 マウスエミュレーションを上書きします。例:&lt;br /&gt;
 $ qemu-system-x86_64 -hda &#039;&#039;disk_image&#039;&#039; -m 512 -vga std -usb -device usb-tablet&lt;br /&gt;
&lt;br /&gt;
上のコマンドで動作しない場合は、[[#マウスカーソルが敏感すぎたり迷走する]] を参照してみて下さい。&lt;br /&gt;
&lt;br /&gt;
=== ホスト USB デバイスのパススルー ===&lt;br /&gt;
VM からホストに接続された物理 USB デバイスにアクセスするために、以下のオプションを使って QEMU を起動することができます:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -usbdevice host:&#039;&#039;vendor_id&#039;&#039;:&#039;&#039;product_id&#039;&#039; &#039;&#039;disk_image&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|lsusb}} コマンドでデバイスの {{ic|vendor_id}} と {{ic|product_id}} がわかります。&lt;br /&gt;
&lt;br /&gt;
デフォルトで qemu によってエミュレートされる I440FX チップセットはシングル UHCI コントローラ (USB 1) のため、{{ic|-usbdevice}} オプションは物理デバイスを USB 1 にアタッチしますが新しいデバイスでは場合によっては問題が発生することがあります。{{ic|1=-machine type=q35}} オプションを使って12個までのデバイスをサポートする EHCI コントローラを提供する [http://wiki.qemu.org/Features/Q35 ICH9] チップセットをエミュレートさせることで解決します。&lt;br /&gt;
&lt;br /&gt;
{{ic|1=-device usb-ehci,id=ehci}} や {{ic|1=-device nec-usb-xhci,id=xhci}} オプションを使って EHCI (USB 2) または XHCI (USB 3) コントローラをエミュレートして以下のように {{ic|1=-device usb-host,..}} オプションを使って物理デバイスにアタッチするという方法もあります:&lt;br /&gt;
&lt;br /&gt;
 -device usb-host,bus=&#039;&#039;&#039;controller_id&#039;&#039;&#039;.0,vendorid=0x&#039;&#039;&#039;vendor_id&#039;&#039;&#039;,productid=0x&#039;&#039;&#039;product_id&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|1=...,port=&#039;&#039;&amp;lt;n&amp;gt;&#039;&#039;}} 設定を追加することで仮想コントローラの物理ポートを指定することができます。複数の USB デバイスを VM に追加したい場合に有用です。&lt;br /&gt;
&lt;br /&gt;
{{Note|QEMU の実行時にパーミッションエラーが起こる場合は、[[Udev#udev ルールを記述する]] のデバイスのパーミッションの設定方法を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== SPICE による USB リダイレクト ===&lt;br /&gt;
&lt;br /&gt;
[[#SPICE|SPICE]] を使用しているのであれば、QEMU コマンドで指定しなくてもクライアントから仮想マシンに USB デバイスをリダイレクトすることが可能です。USB スロットの数を設定することができます (スロットの数によって同時にリダイレクトできるデバイスの最大数が決まります)。{{ic|-usbdevice}} を使用する方法と違って SPICE でリダイレクトする場合は仮想マシンを起動した後に USB デバイスをホットスワップすることができ、リダイレクトから USB デバイスを削除・追加するのに仮想マシンを停止する必要がありません。また、ネットワーク経由でクライアントからサーバーに USB デバイスをリダイレクトすることもできます。QEMU 仮想マシンで USB デバイスを最大限に活用することが可能です。&lt;br /&gt;
&lt;br /&gt;
使用するには USB リダイレクトスロットにそれぞれ EHCI/UHCI コントローラーと SPICE リダイレクトチャンネルを追加する必要があります。例えば、3つの USB スロットをリダイレクトで使用できるように SPICE モードで仮想マシンを起動するには QEMU コマンドに以下の引数を追加します:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;-device ich9-usb-ehci1,id=usb \&lt;br /&gt;
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on \&lt;br /&gt;
-device ich9-usb-uhci2,masterbus=usb.0,firstport=2 \&lt;br /&gt;
-device ich9-usb-uhci3,masterbus=usb.0,firstport=4 \&lt;br /&gt;
-chardev spicevmc,name=usbredir,id=usbredirchardev1 \&lt;br /&gt;
-device usb-redir,chardev=usbredirchardev1,id=usbredirdev1 \&lt;br /&gt;
-chardev spicevmc,name=usbredir,id=usbredirchardev2 \&lt;br /&gt;
-device usb-redir,chardev=usbredirchardev2,id=usbredirdev2 \&lt;br /&gt;
-chardev spicevmc,name=usbredir,id=usbredirchardev3 \&lt;br /&gt;
-device usb-redir,chardev=usbredirchardev3,id=usbredirdev3&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|spice-gtk3}}{{Broken package link|置換パッケージ: {{Pkg|spice-gtk}}}} の {{ic|spicy}} (&#039;&#039;Input &amp;gt; Select USB Devices for redirection&#039;&#039;) と {{pkg|virt-viewer}} の {{ic|remote-viewer}} (&#039;&#039;File &amp;gt; USB device selection&#039;&#039;) の両方ともリダイレクト機能をサポートしています。期待通りに動作させるには仮想マシンに SPICE ゲストツールをインストールする必要があります (詳しくは [[#SPICE]] セクションを参照してください)。&lt;br /&gt;
&lt;br /&gt;
{{Warning|クライアントから USB デバイスをリダイレクトしている間は、リダイレクトを停止するまでクライアントのオペレーティングシステムからデバイスを使うことはできなくなるので注意してください。特に入力デバイス (マウスやキーボード) をリダイレクトするときは注意しないと、SPICE のクライアントメニューから戻すことができなくなってしまいます。仮想マシンに入力デバイスをリダイレクトするとクライアントが入力デバイスに反応しなくなるためです。}}&lt;br /&gt;
&lt;br /&gt;
=== KSM を有効にする ===&lt;br /&gt;
Kernel Samepage Merging (KSM) はアプリケーションがページをマージするように登録した他のプロセスとページをマージするようにカーネルに登録できるようにする Linux カーネルの機能です。この KSM 機構によってゲストの仮想マシンは互いにページを共有することが可能になります。同じようなゲストオペレーティングシステムが多数動作する環境では、メモリの使用量を著しく節約することができます。&lt;br /&gt;
&lt;br /&gt;
KSM を有効にするには、次を実行してください:&lt;br /&gt;
 # echo 1 &amp;gt; /sys/kernel/mm/ksm/run&lt;br /&gt;
&lt;br /&gt;
[[systemd#一時ファイル|systemd の一時ファイル]]を使って KSM を永続的に有効にできます:&lt;br /&gt;
{{hc|/etc/tmpfiles.d/ksm.conf|&lt;br /&gt;
w /sys/kernel/mm/ksm/run - - - - 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
KSM が動作しているとき、マージされるページが存在するために (つまり少なくとも2つの同じような VM が動いている)、{{ic|/sys/kernel/mm/ksm/pages_shared}} はゼロになりません。詳しくは https://www.kernel.org/doc/Documentation/vm/ksm.txt を参照。&lt;br /&gt;
&lt;br /&gt;
{{Tip|KSM が問題なく動いているか確かめる簡単な方法として、ディレクトリのファイルの中身を全て表示する方法があります: {{bc|$ grep . /sys/kernel/mm/ksm/*}}}}&lt;br /&gt;
&lt;br /&gt;
=== マルチモニターのサポート ===&lt;br /&gt;
Linux QXL ドライバーはデフォルトで4台までのマルチモニター (仮想スクリーン) をサポートしています。{{ic|1=qxl.heads=N}} カーネルパラメータで変更することができます。&lt;br /&gt;
&lt;br /&gt;
QXL デバイスのデフォルトの VGA メモリサイズは 16M です (VRAM のサイズは 64M です)。1920x1200 のモニターを2台使用しようとすると 2 × 1920 × 4 (色深度) × 1200 = 17.6 MiB の VGA メモリが必要になるためメモリが不足します。{{ic|-vga qxl}} を {{ic|&amp;lt;nowiki&amp;gt;-vga none -device qxl-vga,vgamem_mb=32&amp;lt;/nowiki&amp;gt;}} に置き換えることでメモリ容量を変更できます。vgamem_mb を 64M 以上に増やした場合、{{ic|vram_size_mb}} オプションも増やす必要があります。&lt;br /&gt;
&lt;br /&gt;
=== コピーアンドペースト ===&lt;br /&gt;
ホストとゲスト間のコピーアンドペーストを行うには spice エージェント通信チャンネルを有効にする必要があります。それには virtio-serial デバイスをゲストに追加して、spice vdagent のためにポートを開かなければなりません。また、ゲストへの spice vdagent のインストールも必須です (Arch ゲストの場合は {{Pkg|spice-vdagent}}、Windows ゲストの場合は [http://www.spice-space.org/download.html Windows ゲストツール])。エージェントが動いていること (さらに、今後のために、自動で起動すること) を確認してください。QEMU で SPICE プロトコルを使う方法は [[#SPICE]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Windows 特有のノート ===&lt;br /&gt;
QEMU は Windows 95 から Windows 10 まで全てのバージョンの Windows を動かすことができます。&lt;br /&gt;
&lt;br /&gt;
QEMU で [[Windows PE]] を実行することも可能です。&lt;br /&gt;
&lt;br /&gt;
==== 高速スタートアップ ====&lt;br /&gt;
&lt;br /&gt;
{{Note|電源設定を変更するには管理者権限が必要です。}}&lt;br /&gt;
&lt;br /&gt;
Windows 8 (あるいはそれ以降) をゲストにする場合、コントロールパネルの電源オプションから&amp;quot;高速スタートアップ&amp;quot;を無効にしないと、起動時にゲストがフリーズすることがあります。&lt;br /&gt;
&lt;br /&gt;
{{ic|-smp}} オプションを正しく適用するために高速スタートアップを無効化しなくてはならないこともあります。&lt;br /&gt;
&lt;br /&gt;
==== Remote Desktop Protocol ====&lt;br /&gt;
MS Windows ゲストを使っている場合、RDP を使ってゲスト VM に接続する方法もあります。VLAN を使用してしてゲストが同じネットワークにない場合、次を使って下さい:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-x86_64 -nographic -net user,hostfwd=tcp::5555-:3389&lt;br /&gt;
&lt;br /&gt;
そして [[Rdesktop]] か {{Pkg|freerdp}} を使ってゲストに接続してください。例えば:&lt;br /&gt;
&lt;br /&gt;
 $ xfreerdp -g 2048x1152 localhost:5555 -z -x lan&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 仮想マシンの動作が遅すぎる ===&lt;br /&gt;
仮想マシンのパフォーマンスを向上させることができる多数のテクニックがあります。例えば:&lt;br /&gt;
&lt;br /&gt;
* {{ic|-cpu host}} オプションを使うことで QEMU にホストの CPU を正確にエミュレートさせることができます。このオプションを使わない場合、もっと一般的な CPU がエミュレートされます。&lt;br /&gt;
* Windows ゲストの場合、[http://blog.wikichoon.com/2014/07/enabling-hyper-v-enlightenments-with-kvm.html Hyper-V enlightenments] を有効にしてください: {{ic|1=-cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time}}。&lt;br /&gt;
* ホストマシンに CPU が複数ある場合は、{{ic|-smp}} オプションを使ってゲストにもっと多くの CPU を割り当てて下さい。&lt;br /&gt;
* 仮想マシンに十分なメモリを割り当てているか確認してください。デフォルトでは、QEMU はそれぞれの仮想マシンに 128 MiB のメモリしか割り当てません。{{ic|-m}} オプションを使って多めのメモリを割り当てて下さい。例えば、{{ic|-m 1024}} で仮想マシンは 1024 MiB のメモリを使って動作します。&lt;br /&gt;
* 可能な限り KVM を使って下さい: QEMU の起動コマンドに {{ic|1=-machine type=pc,accel=kvm}} を追加します。&lt;br /&gt;
* ゲストのオペレーティングシステムのドライバーによってサポートされているときは、ネットワークやブロックデバイスに [http://wiki.libvirt.org/page/Virtio virtio] を使って下さい。例えば:&lt;br /&gt;
 $ qemu-system-x86_64 -net nic,model=virtio -net tap,if=tap0,script=no -drive file=&#039;&#039;disk_image&#039;&#039;,media=disk,if=virtio&lt;br /&gt;
* ユーザーモードネットワークの代わりに TAP デバイスを使って下さい。[[#QEMU の Tap ネットワーク]] を参照。&lt;br /&gt;
* ゲスト OS がディスクへの書き込みを頻繁に行う場合、ホストのファイルシステムで特定のマウントオプションを使うと良いかもしれません。例えば、[[Ext4|ext4 ファイルシステム]] を {{ic|1=barrier=0}} オプションでマウントすることが考えられます。ファイルシステムのパフォーマンスを向上させるオプションは、場合によってデータの保全性を犠牲にする可能性があるので、変更するオプションのドキュメントを読んでおいたほうが無難です。&lt;br /&gt;
* raw ディスクイメージを使っている場合、キャッシュを無効にする:&lt;br /&gt;
 $ qemu-system-x86_64 -drive file=&#039;&#039;disk_image&#039;&#039;,if=virtio,cache=none&lt;br /&gt;
* ネイティブの Linux AIO を使用する:&lt;br /&gt;
 $ qemu-system-x86_64 -drive file=&#039;&#039;disk_image&#039;&#039;,if=virtio,aio=native,cache.direct=on&lt;br /&gt;
* qcow2 ディスクイメージを使用している場合、十分な容量の L2 キャッシュを割り当てることで I/O の性能が著しく改善することがあります。L2 キャッシュを計算するときの [https://blogs.igalia.com/berto/2015/12/17/improving-disk-io-performance-in-qemu-2-5-with-the-qcow2-l2-cache/ 公式] は: l2_cache_size = disk_size * 8 / cluster_size です。デフォルトのクラスタサイズ 64K で、容量 8 GB の qcow2 イメージを作成した場合、最適な L2 キャッシュは 1 MB となります。QEMU はデフォルトでは 1 MB しか L2 キャッシュを使用しません。QEMU のコマンドラインでキャッシュの容量を指定することができます。例えば使用するキャッシュを 4 MB にするには:&lt;br /&gt;
 $ qemu-system-x86_64 -drive file=&#039;&#039;disk_image&#039;&#039;,format=qcow2,l2-cache-size=4M&lt;br /&gt;
* 複数の仮想マシンを同時に動かしていて、全て同じオペレーティングシステムをインストールしている場合、[[wikipedia:Kernel_SamePage_Merging_(KSM)|kernel same-page merging]] を有効にすることでメモリを節約できます。[[#KSM を有効にする]]を見てください。&lt;br /&gt;
* 場合によっては、ゲストのオペレーティングシステムでメモリバルーニングドライバーを実行して QEMU を {{ic|-balloon virtio}} オプションで起動することで、実行中の仮想マシンからメモリを回収することができます。&lt;br /&gt;
&lt;br /&gt;
詳しくは http://www.linux-kvm.org/page/Tuning_KVM を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== マウスカーソルが敏感すぎたり迷走する ===&lt;br /&gt;
カーソルが画面を飛び回って手に負えない場合、QEMU を起動する前にターミナルに次を入力することで直るかもしれません:&lt;br /&gt;
 $ export SDL_VIDEO_X11_DGAMOUSE=0&lt;br /&gt;
&lt;br /&gt;
このコマンドで直ったら、{{ic|~/.bashrc}} ファイルにコマンドを追加することができます。&lt;br /&gt;
&lt;br /&gt;
=== カーソルが表示されない ===&lt;br /&gt;
マウスカーソルを表示するには {{ic|-show-cursor}} を QEMU のオプションに追加してください。&lt;br /&gt;
&lt;br /&gt;
オプションを追加しても表示されない場合、ディスプレイデバイスが正しく設定されているか確認してください。例: {{ic|-vga qxl}}。&lt;br /&gt;
&lt;br /&gt;
=== カーソルが移動・アタッチできない ===&lt;br /&gt;
&lt;br /&gt;
QEMU オプションの {{ic|-usbdevice tablet}} を {{ic|-usb}} に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
=== キーボードが壊れているまたは矢印キーが動作しない ===&lt;br /&gt;
キーの一部が動かなかったり間違ったキーが押されてしまう (特に矢印キー) ときは、おそらくキーボードレイアウトをオプションとして指定する必要があります。キーボードレイアウトは {{ic|/usr/share/qemu/keymaps}} で探すことができます。&lt;br /&gt;
 $ qemu-system-x86_64 -k &#039;&#039;keymap&#039;&#039; &#039;&#039;disk_image&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウのリサイズでゲストのディスプレイが引き伸ばされる ===&lt;br /&gt;
デフォルトのウィンドウサイズに戻すには、{{ic|Ctrl+Alt+u}} を押して下さい。&lt;br /&gt;
&lt;br /&gt;
=== ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy ===&lt;br /&gt;
&lt;br /&gt;
{{ic|-enable-kvm}} オプションを使って QEMU を起動した時に以下のようなエラーメッセージが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy&lt;br /&gt;
 failed to initialize KVM: Device or resource busy&lt;br /&gt;
&lt;br /&gt;
他の[[:Category:仮想化|ハイパーバイザ]]が動作しています。同時に複数のハイパーバイザを動かすのは推奨されていません、もしくは不可能です。&lt;br /&gt;
&lt;br /&gt;
=== libgfapi エラーメッセージ ===&lt;br /&gt;
&lt;br /&gt;
起動時に以下のエラーメッセージが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 Failed to open module: libgfapi.so.0: cannot open shared object file: No such file or directory&lt;br /&gt;
&lt;br /&gt;
任意の依存パッケージである GlusterFS が存在しないというだけなので無視して問題ありません。{{pkg|glusterfs}} パッケージを[[インストール]]すれば消えます。&lt;br /&gt;
&lt;br /&gt;
=== ライブ環境でカーネルパニックが発生する ===&lt;br /&gt;
&lt;br /&gt;
ライブ環境を起動した場合に以下が発生する場合:&lt;br /&gt;
&lt;br /&gt;
 [ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown block(0,0)&lt;br /&gt;
&lt;br /&gt;
{{ic|-m VALUE}} スイッチを付けて適当な量の RAM を指定して VM を起動してみてください。RAM が足りなくなると上記のような問題が発生することがあります。&lt;br /&gt;
&lt;br /&gt;
=== Windows 7 ゲストの音質が酷い ===&lt;br /&gt;
&lt;br /&gt;
Windows 7 ゲストで {{ic|hda}} オーディオドライバーを使用すると音質に問題が発生することがあります。QEMU の引数に {{ic|-soundhw ac97}} を指定してオーディオドライバーを {{ic|ac97}} に変更し、ゲストに [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&amp;amp;PNid=14&amp;amp;PFid=23&amp;amp;Level=4&amp;amp;Conn=3&amp;amp;DownTypeID=3&amp;amp;GetDown=false Realtek AC&#039;97 Audio Codecs] の ac97 ドライバーをインストールすることで問題は解決します。詳しくは [https://bugzilla.redhat.com/show_bug.cgi?id=1176761#c16 Red Hat Bugzilla – Bug 1176761] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Could not access KVM kernel module: Permission denied ===&lt;br /&gt;
&lt;br /&gt;
以下のエラーが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 libvirtError: internal error: process exited while connecting to monitor: Could not access KVM kernel module: Permission denied failed to initialize KVM: Permission denied&lt;br /&gt;
&lt;br /&gt;
Systemd によって kvm グループに動的 id が割り当てられていることが原因です ({{Bug|54943}} を参照)。エラーを解決するには {{ic|/etc/libvirt/qemu.conf}} ファイルを編集して以下の行を:&lt;br /&gt;
&lt;br /&gt;
 group = &amp;quot;78&amp;quot;&lt;br /&gt;
&lt;br /&gt;
以下のように変更してください:&lt;br /&gt;
&lt;br /&gt;
 group = &amp;quot;kvm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Windows の仮想マシンを起動したときに &amp;quot;System Thread Exception Not Handled&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Windows 8 や Windows 10 ゲストが起動時に &amp;quot;System Thread Exception Not Handled&amp;quot; という例外を発生させることがあります。実機で古いドライバーの動作がおかしいことが原因です。KVM では CPU のモデルを {{ic|core2duo}} に設定することで解決します。&lt;br /&gt;
&lt;br /&gt;
=== 特定の Windows のゲームやアプリケーションでクラッシュやブルスクリーンが発生する ===&lt;br /&gt;
&lt;br /&gt;
ときどき、物理マシンでは問題なく動作するのに、仮想マシンでアプリケーションを実行するとクラッシュが発生することがあります。{{ic|dmesg -wH}} を実行したときに {{ic|MSR}} というエラーが表示される場合、クラッシュの原因はゲストがサポートされていない [[wikipedia:Model-specific register|Model-specific registers]] (MSR) にアクセスしようとしたときに KVM が [[wikipedia:General protection fault|General protection fault]] (GPF) を起こすためです。ゲームの最適化などの機能が機能しない場合、KVM モジュールに {{ic|1=ignore_msrs=1}} オプションを指定して実装されていない MSR へのアクセスを無視することで問題は解決します:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;lt;nowiki&amp;gt;/etc/modprobe.d/kvm.conf&amp;lt;/nowiki&amp;gt;|&amp;lt;nowiki&amp;gt;...&lt;br /&gt;
options kvm ignore_msrs=1&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
上記のオプションが役に立つのは以下のような場合です:&lt;br /&gt;
* GeForce Experience でサポートされたいない PCU が存在するとエラーが表示される。&lt;br /&gt;
* StarCraft 2 や L.A. Noire で KMODE_EXCEPTION_NOT_HANDLED が発生して Windows 10 がブルースクリーンになる。&lt;br /&gt;
&lt;br /&gt;
{{Warning|未知の MSR のアクセスを無視すると、VM 内の他のソフトウェアや他の VM が動作しなくなる可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://qemu.org QEMU 公式ウェブサイト]&lt;br /&gt;
* [http://www.linux-kvm.org KVM 公式ウェブサイト]&lt;br /&gt;
* [http://qemu.weilnetz.de/qemu-doc.html QEMU エミュレータユーザードキュメント]&lt;br /&gt;
* [https://en.wikibooks.org/wiki/QEMU QEMU Wikibook]&lt;br /&gt;
* [http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:qemu Hardware virtualization with QEMU] by AlienBOB&lt;br /&gt;
* [http://blog.falconindy.com/articles/build-a-virtual-army.html Building a Virtual Army] by Falconindy&lt;br /&gt;
* [http://git.qemu.org/?p=qemu.git;a=tree;f=docs 最新ドキュメント]&lt;br /&gt;
* [http://qemu.weilnetz.de/ QEMU on Windows]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/QEMU Wikipedia]&lt;br /&gt;
* [https://wiki.debian.org/QEMU QEMU - Debian Wiki]&lt;br /&gt;
* [https://people.gnome.org/~markmc/qemu-networking.html QEMU Networking on gnome.org]&lt;br /&gt;
* [http://bsdwiki.reedmedia.net/wiki/networking_qemu_virtual_bsd_systems.html Networking QEMU Virtual BSD Systems]&lt;br /&gt;
* [https://www.gnu.org/software/hurd/hurd/running/qemu.html QEMU on gnu.org]&lt;br /&gt;
* [https://wiki.freebsd.org/qemu QEMU on FreeBSD as host]&lt;/div&gt;</summary>
		<author><name>Purutane</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Logrotate&amp;diff=19490</id>
		<title>Logrotate</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Logrotate&amp;diff=19490"/>
		<updated>2021-03-08T13:07:49Z</updated>

		<summary type="html">&lt;p&gt;Purutane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ロギング]]&lt;br /&gt;
[[Category:データ圧縮とアーカイブ]]&lt;br /&gt;
[[en:Logrotate]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Cron}}&lt;br /&gt;
{{Related|systemd/タイマー}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
https://github.com/logrotate/logrotate より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;ログファイルが大量に生成されるシステムで、ログファイルの管理を簡単にするために logrotate ユーティリティは作られました。Logrotate はログファイルの自動的なローテーション圧縮や削除、メール送信などを可能にします。Logrotate を設定することで、ログファイルを毎日毎周毎月ごとに管理したり、特定のサイズまで達した時の動作を決められます。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
logrotate の&#039;&#039;ローテーション&#039;&#039;では、既存のログファイルに数字を割り振って名前を変更し、元の&#039;&#039;空の&#039;&#039;ログファイルを再作成します。例えば、{{ic|/var/log/syslog.log}} は {{ic|/var/log/syslog.log.1}} に名前が変更されます。{{ic|/var/log/syslog.log.1}} が既に存在する場合、名前は {{ic|/var/log/syslog.log.2}} に変更されます (バックログの数は設定で変えられます)。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
&lt;br /&gt;
Logrotate は {{Pkg|logrotate}} パッケージでインストールできます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;デフォルトでは、logrotate は [[systemd/タイマー|systemd タイマー]]によって毎日動作します: {{ic|logrotate.timer}}&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
日次でlogrotateの実行を有効にするには次のコマンドを利用します。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
% sudo systemctl enable logrotate.time&lt;br /&gt;
% sudo systemctl status list-timers&lt;br /&gt;
NEXT                        LEFT     LAST                        PASSED  UNIT                         ACTIVATE&lt;br /&gt;
Mon 2020-06-08 00:00:00 JST 12h left n/a                         n/a     logrotate.timer              logrotate.service&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==設定==&lt;br /&gt;
&lt;br /&gt;
logrotate の一番重要な設定ファイルは {{ic|/etc/logrotate.conf}} です。また、{{ic|/etc/logrotate.d}} ディレクトリには他の設定ファイルが含まれています。&lt;br /&gt;
&lt;br /&gt;
logrotate が正しく動作するか確認するには、以下のコマンドを実行してください。デバッグ出力が生成されます:&lt;br /&gt;
 logrotate -d&lt;br /&gt;
logrotate スクリプトをテストするには (例えば {{ic|/etc/logrotate.d}} ディレクトリの nginx スクリプト)、以下のように実行してみてください:&lt;br /&gt;
 logrotate -f -v /etc/logrotate.d/nginx&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
=== exim のログがローテーションされない ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/logrotate.conf}} に {{ic|olddir}} 変数を設定した場合、以下のようなメッセージが表示されます:&lt;br /&gt;
&lt;br /&gt;
{{Ic|error: failed to rename /var/log/exim/mainlog to /var/log/old/mainlog.1: Permission denied}}&lt;br /&gt;
&lt;br /&gt;
この問題を修正するには、ユーザー {{ic|exim}} をグループ {{ic|log}} に追加してください。そして {{ic|olddir}} ({{ic|/var/log/old}}) のグループをデフォルトの {{ic|root}} から {{ic|log}} に変更してください。&lt;br /&gt;
&lt;br /&gt;
=== logrotate の状態を確認 ===&lt;br /&gt;
{{ic|cat /var/lib/logrotate.status}} を実行することで logroate によってローテートされているファイルを確認できます:&lt;br /&gt;
{{bc|&lt;br /&gt;
&amp;quot;/var/log/mysql/query.log&amp;quot; 2016-3-20-5:0:0&lt;br /&gt;
&amp;quot;/var/log/samba/samba-smbd.log&amp;quot; 2016-3-21-5:0:0&lt;br /&gt;
&amp;quot;/var/log/httpd/access_log&amp;quot; 2016-3-20-5:0:0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Logrotate Logrotate on Gentoo Linux Wiki]&lt;br /&gt;
* [https://linux.die.net/man/8/logrotate logrotate(8) Manual page]&lt;/div&gt;</summary>
		<author><name>Purutane</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Logrotate&amp;diff=16469</id>
		<title>Logrotate</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Logrotate&amp;diff=16469"/>
		<updated>2020-06-07T02:28:44Z</updated>

		<summary type="html">&lt;p&gt;Purutane: /* インストール */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ロギング]]&lt;br /&gt;
[[Category:データ圧縮とアーカイブ]]&lt;br /&gt;
[[en:Logrotate]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Cron}}&lt;br /&gt;
{{Related|systemd/タイマー}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
https://github.com/logrotate/logrotate より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;ログファイルが大量に生成されるシステムで、ログファイルの管理を簡単にするために logrotate ユーティリティは作られました。Logrotate はログファイルの自動的なローテーション圧縮や削除、メール送信などを可能にします。Logrotate を設定することで、ログファイルを毎日毎周毎月ごとに管理したり、特定のサイズまで達した時の動作を決められます。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
logrotate の&#039;&#039;ローテーション&#039;&#039;では、既存のログファイルに数字を割り振って名前を変更し、元の&#039;&#039;空の&#039;&#039;ログファイルを再作成します。例えば、{{ic|/var/log/syslog.log}} は {{ic|/var/log/syslog.log.1}} に名前が変更されます。{{ic|/var/log/syslog.log.1}} が既に存在する場合、名前は {{ic|/var/log/syslog.log.2}} に変更されます (バックログの数は設定で変えられます)。&lt;br /&gt;
&lt;br /&gt;
==インストール==&lt;br /&gt;
&lt;br /&gt;
Logrotate は {{Pkg|logrotate}} パッケージでインストールできます。{{Pkg|base}} グループのパッケージとしてデフォルトでインストールされています。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;デフォルトでは、logrotate は [[systemd/タイマー|systemd タイマー]]によって毎日動作します: {{ic|logrotate.timer}}。&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
日次でlogrotateの実行を有効にするには次のコマンドを利用します。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
% sudo systemctl enable logrotate.time&lt;br /&gt;
% sudo systemctl status list-timers&lt;br /&gt;
NEXT                        LEFT     LAST                        PASSED  UNIT                         ACTIVATE&lt;br /&gt;
Mon 2020-06-08 00:00:00 JST 12h left n/a                         n/a     logrotate.timer              logrotate.service&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==設定==&lt;br /&gt;
&lt;br /&gt;
logrotate の一番重要な設定ファイルは {{ic|/etc/logrotate.conf}} です。また、{{ic|/etc/logrotate.d}} ディレクトリには他の設定ファイルが含まれています。&lt;br /&gt;
&lt;br /&gt;
logrotate が正しく動作するか確認するには、以下のコマンドを実行してください。デバッグ出力が生成されます:&lt;br /&gt;
 logrotate -d&lt;br /&gt;
logrotate スクリプトをテストするには (例えば {{ic|/etc/logrotate.d}} ディレクトリの nginx スクリプト)、以下のように実行してみてください:&lt;br /&gt;
 logrotate -f -v /etc/logrotate.d/nginx&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
&lt;br /&gt;
=== exim のログがローテーションされない ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/logrotate.conf}} に {{ic|olddir}} 変数を設定した場合、以下のようなメッセージが表示されます:&lt;br /&gt;
&lt;br /&gt;
{{Ic|error: failed to rename /var/log/exim/mainlog to /var/log/old/mainlog.1: Permission denied}}&lt;br /&gt;
&lt;br /&gt;
この問題を修正するには、ユーザー {{ic|exim}} をグループ {{ic|log}} に追加してください。そして {{ic|olddir}} ({{ic|/var/log/old}}) のグループをデフォルトの {{ic|root}} から {{ic|log}} に変更してください。&lt;br /&gt;
&lt;br /&gt;
=== logrotate の状態を確認 ===&lt;br /&gt;
{{ic|cat /var/lib/logrotate.status}} を実行することで logroate によってローテートされているファイルを確認できます:&lt;br /&gt;
{{bc|&lt;br /&gt;
&amp;quot;/var/log/mysql/query.log&amp;quot; 2016-3-20-5:0:0&lt;br /&gt;
&amp;quot;/var/log/samba/samba-smbd.log&amp;quot; 2016-3-21-5:0:0&lt;br /&gt;
&amp;quot;/var/log/httpd/access_log&amp;quot; 2016-3-20-5:0:0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Logrotate Logrotate on Gentoo Linux Wiki]&lt;br /&gt;
* [https://linux.die.net/man/8/logrotate logrotate(8) Manual page]&lt;/div&gt;</summary>
		<author><name>Purutane</name></author>
	</entry>
</feed>