VM ゲスト にはオペレーティングシステムやデータを含むイメージのほか、 VM ゲスト の仮想的なハードウエアリソースを表す設定ファイルが存在しています。 VM ゲスト は VM ホストサーバ 内で取り扱われ制御される仕組みであることから、本章では VM ゲスト をインストールする際の一般的な手順を説明しています。
仮想マシンには、インストールするオペレーティングシステムの要件が存在するほかには、特段の要件はほとんどありません。また、仮想マシンのホスト環境向けにオペレーティングシステムが最適化されていない場合、 ハードウエア支援 による仮想化のみを完全仮想化モードで動作させる必要が生じるほか、特殊なデバイスドライバを読み込む必要も発生します。一方の VM ゲスト 側に提供されるハードウエアは、ホスト側の設定に従って決まります。
なお、複数の仮想マシンを作成してそれぞれでライセンス済みのオペレーティングシステムを動作させる場合は、そのライセンス構成にも注意してください。詳しくはオペレーティングシステムのライセンス同意書などの資料をお読みください。
新しい仮想マシンを作成する際にはいくつかのオプションが自動的に設定されますが、この設定を変更することができます。たとえば新しい仮想マシンに対しては UEFI を使用するように設定したい場合は、 仮想マシンマネージャ のメインメニューから
› を選択して、 内で を選択します。ウイザードを利用することで、仮想マシンを作成し、オペレーティングシステムをインストールするまでに必要な作業を順に実施することができるようになっています。このウイザードを起動するには、 仮想マシンマネージャ を起動したあと、 › を選択します。それ以外の方法としては、 YaST を起動したあと › を選択してもかまいません。
YaST もしくは 仮想マシンマネージャ で
ウイザードを起動します。インストール元を選択します。ローカルに保存しておいたメディアか、ネットワーク上にあるインストール元を選択することができます。既存の VM ゲスト を取り込んで使用したい場合は、
を選択します。Xen ハイパーバイザが動作する VM ホストサーバ の場合、準仮想化 (paravirt) もしくは完全仮想化 (fullvirt) のいずれかを選択することができます。選択肢は
内に表示されます。なお、選択の内容によっては、インストールオプションで選択できないものがあることもあります。直前の手順での選択内容に応じて、下記のデータを指定する必要があります:
インストールデータを含む ISO イメージの VM ホストサーバ 内でのパスを指定します。 libvirt のストレージプール内のボリュームとして利用できるように設定している場合は、 第12章 「高度なストレージ設定」 をお読みください。
を押して選択することもできます。詳しくは上記以外にも、 VM ホストサーバ 内の光学ドライブに CD-ROM や DVD のメディアが挿入されていれば、それを選択することもできます。
インストール元の ftp://
, http://
, https://
などがあります。
内には、自動インストール用のファイル (AutoYaST や Kickstart など) を選択したり、カーネルのパラメータを指定したりすることができるオプションが用意されています。また、 URL を指定した場合、通常はオペレーティングシステムを自動的に検出しますが、うまくいかない場合は手作業で指定することもできます。この場合は、 のチェックを外して、 および に手動入力することもできます。
既存のイメージを利用して VM ゲスト の設定を行いたい場合は、まず VM ホストサーバ 内でのイメージのパスを指定してください。なお、 libvirt のストレージプール内のボリュームとして利用できるように設定している場合は、 第12章 「高度なストレージ設定」 をお読みください。
を押して選択することもできます。詳しくはこのインストール方法は、仮想マシンのコンポーネントを手作業で設定し、後から OS をインストールしたい場合に適切です。仮想マシンを製品に合わせて調整したい場合は、 sles
等のように OS の名称を入力したあと、表示された一覧の中からバージョンを選択してください。
次に新しい仮想マシンに設定する、メモリサイズと CPU 数を指定します。
この手順は、
を選択した場合は省略されます。VM ゲスト に対する仮想ハードディスクを設定します。新しいディスクイメージを作成するか、もしくはストレージプールから既存のものを選択 (詳しくは 第12章 「高度なストレージ設定」 をお読みください) して進めることができます。ディスクを作成するよう選択した場合は、 qcow2
形式のイメージを作成します。また、既定では /var/lib/libvirt/images
内にイメージを配置します。
ディスクの設定は任意です。 CD や DVD から直接実行することのできるライブシステムをお使いの場合は、
の選択を外して、ディスクの作成を行わないこともできます。ウイザードの最後の画面では、仮想マシンに設定する名前を指定します。また、仮想マシンのハードウエア設定もカスタマイズすることができます。この場合は、
を選択してください。また、 では、ネットワークデバイスを選択することもできます。 を選択した場合は、ホスト側で設定されている最初のブリッジが自動的に選択されます。それ以外のブリッジを使用したい場合は、テキストボックス内にそのブリッジ名を入力してください。を押します。
直前の手順で既定値のまま進めた場合、ここでインストール処理が始まります。 第13章 「仮想マシンマネージャ を利用した仮想マシンの設定」 をお読みください。
を選択した場合は、 VM ゲスト の設定ダイアログが表示されます。 VM ゲスト の設定に関する詳細は、設定が終わったら、
を押してください。インストールが始まると、 仮想マシンマネージャ のコンソールウインドウが表示されます。ただし、 Ctrl–Alt–F1 などの特殊なキー入力については VM ホストサーバ 側で解釈されてしまい、仮想マシンには送信されません。 VM ホストサーバ ではなく仮想マシンにキー入力を送信したい場合は、 「sticky key」 と呼ばれる機能をお使いください。これは Ctrl , Alt, Shift を 3 回押下することで有効化されます。すると、直後のキー入力が、仮想マシンに送信されるようになります。
たとえば Ctrl–Alt–F2 を Linux の仮想マシンに送信したい場合は、 Ctrl を 3 回押したあと、 Alt–F2 を押してください。なお、 Alt を 3 回押したあとは、 Ctrl–F2 を押します。
この sticky key 機能は、 仮想マシンマネージャ で VM ゲスト をインストールしている際だけでなく、インストール後でも利用することができます。
PXE 起動を使用することで、物理メディアやインストールディスクイメージを使用することなく、ネットワーク経由でインストールメディアにアクセスして起動することができるようになります。
PXE サーバから仮想マシンを起動するように設定するには、下記の手順を実施します:
9.1項 「GUI ベースのゲストインストール」 に示されている手順でインストールウイザードを起動します。
を選択します。
ウイザードの最後では
を選択しておきます。あとは を押します。の画面が表示されたら、 を選択します。
内にある を選択します。
が既定の起動オプションとして選択されていることを確認して を押します。
仮想マシンに対して PXE を既定値として設定したい場合は、下記を実施します:
起動デバイスの設定で NIC を選択してチェックを入れます。
右側のボタンで NIC を一番上に移動します。
あとは
を押すだけです。Esc を押して、 を選択してください。 PXE サーバが正しく設定されていれば、 PXE メニューが表示されるはずです。
を押すと、インストールを始めることができます。画面が表示されたらすぐにvirt-install
によるコマンドラインからのインストール #Edit sourcevirt-install
は、 libvirt
ライブラリを利用した仮想マシンを作成することのできるコマンドラインツールです。グラフィカルなユーザインターフェイスを使用することのできない環境や、仮想マシンの作成を自動化したいような場合に有用です。
virt-install
は多数のコマンドラインスイッチを含む、複雑なスクリプトです。下記に概要を示しますが、詳しい情報については virt-install
(1) をお読みください。
--name ゲスト名
: 新しく作成する仮想マシンの名前を指定します。名前は同じ接続のハイパーバイザ内で唯一のものでなければなりません。また、このゲスト名は設定ファイルの名前にもなるほか、後から virsh
コマンドでこの名前を指定し、アクセスすることができます。英数字と _-.:+
の文字を使用することができます。
--memory メモリサイズ
: 仮想マシンに割り当てるメモリ量を、メガバイト単位で指定します。
--vcpus CPU_数
: 仮想マシンに割り当てる CPU 数を指定します。性能を確保するため、仮想マシンのプロセッサ数の合計は、実際に搭載されているプロセッサ数と同じか、それより少なく設定しておくことをお勧めします。
--paravirt
: 準仮想化のゲストを作成します。これは VM ホストサーバ が準仮想化と完全仮想化の両方に対応している場合の既定値となります。
--hvm
: 完全仮想化のゲストを作成します。
--virt-type ハイパーバイザ名
: ハイパーバイザの種類を指定します。 kvm
, xen
のいずれかを指定することができます。
--disk
, --filesystem
, --nodisks
のいずれかのオプションを指定して、新しく作成する仮想マシンのストレージの種類を設定します。たとえば --disk size=10
のように指定すると、ハイパーバイザの既定のイメージ配置先に、 10 GB のディスクを作成し、 VM ゲスト に割り当てます。 --filesystem VM_ホスト内でのパス
のように指定すると、指定した VM ホストサーバ 内のディレクトリをゲストからアクセスできるようになります。 --nodisks
を指定すると、 VM ゲスト にローカルストレージを割り当てない意味になります (ライブ CD などの用途に便利です) 。
--location
, --cdrom
, --pxe
, --import
, --boot
のいずれかのオプションを指定して、インストール方法を指定します。
--graphics 値
を指定することで、インストール環境へのアクセス方法を指定することができます。 openSUSE Leap では、 vnc
もしくは none
のいずれかの値をサポートしています。
virt-install
で VNC を指定した場合、 virt-viewer
を起動しようとします。このコマンドがインストールされていないか、実行することができない場合、 VM ゲスト に対して手作業で接続を行ってください。 virt-install
でビューアを起動しないように明示的に指定したい場合は、 --noautoconsole
オプションを指定してください。 VNC のセッションにアクセスするためのパスワードを指定したい場合は、 --graphics vnc,password=パスワード
のように指定してください。
--graphics none
を指定した場合、 VM ゲスト へのアクセスは、オペレーティングシステム側で提供されるサービス (例: SSH, VNC) を使用することになります。インストールシステムでこれらのサービスを有効化する方法について、詳しくはオペレーティングシステムのインストールマニュアルをお読みください。
ネットワークからのインストールなどでは、インストーラで使用するカーネルと initrd を直接指定することもできます。
起動時のパラメータを指定したい場合は、 --extra-args
オプションをお使いください。このパラメータでは、ネットワークの設定を行うこともできます。詳しくは https://ja.opensuse.org/SDB:Linuxrc をお読みください。
#
virt-install
--location \ "http://download.opensuse.org/pub/opensuse/distribution/leap/15.0/repo/oss" \ --extra-args="textmode=1" --name "Leap15" --memory 2048 --virt-type kvm \ --connect qemu:///system --disk size=10 --graphics vnc --network \ network=vnet_nated
既定では、 virt-install
で新しく作成する仮想マシンに対して、コンソールは有効化されません。有効化したい場合は、 --extra-args="console=ttyS0 textmode=1"
のようにオプションを指定してください。たとえば下記のようになります:
>
virt-install --virt-type kvm --name sles12 --memory 1024 \
--disk /var/lib/libvirt/images/disk1.qcow2 --os-variant sles12
--extra-args="console=ttyS0 textmode=1" --graphics none
インストールが完了したら、仮想マシン内の /etc/default/grub
にある GRUB_CMDLINE_LINUX_DEFAULT
の行に、 console=ttyS0
が設定されるようになります。
SUSE では AMD64/Intel 64 の KVM ゲストに対してのみ UEFI Secure Boot のサポートを提供しています。 Xen HVM ゲストでも UEFI ファームウエアに対応していますが、こちらは UEFI Secure Boot をサポートしていません。
規定では、 virt-install
を利用して新しい仮想マシンをインストールしようとすると、従来型の BIOS を利用するようになっています。 UEFI を使用したい場合は、 --boot firmware=efi
を指定してください。この場合、 UEFI Secure Boot に対応し、 Microsoft 社の鍵を取り込み済みのファームウエアを選択します。 Secure Boot を利用したくない場合は、 --boot firmware=efi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no
と指定してください。これにより、 Secure Boot に対応しない UEFI ファームウエアを選択するようになります。
このほか、 UEFI ファームウエアイメージを明示的に指定することもできます。仮想マシンで UEFI を使用する場合の高度な情報と設定例については、 9.3.1項 「高度な UEFI 設定」 をお読みください。
virt-install
コマンドラインの例 #下記のコマンドライン例は、新しい SUSE Linux Enterprise 15 SP2 の仮想マシンを作成し、 virtio で高速化したディスク環境と、ネットワークカードを接続する例です。ストレージとしては 10 GB の qcow2 形式のディスクイメージを作成し、インストール元のメディアはホスト側の CD-ROM ドライブを使用します。また、 VNC のグラフィックも使用し、グラフィカルなフロントエンドを自動的に起動します。
>
virt-install --connect qemu:///system --virt-type kvm \
--name sle15sp2 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \
--os-variant sle15sp2
>
virt-install --connect xen:// --virt-type xen --hvm \
--name sle15sp2 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \
--os-variant sle15sp2
本章では、通常のインストール方法には含まれない機能、たとえば UEFI ファームウエアやメモリバルーンの手作業での設定、アドオン製品のインストールなどを使用する場合の手順について説明しています。
仮想マシンで使用される UEFI ファームウエアは OVMF ( Open Virtual Machine Firmware ) が提供するものです。 qemu-ovmf-x86_64 パッケージには AMD64/Intel 64 の VM ゲスト に対するファームウエアが含まれていますし、 qemu-uefi-aarch64 パッケージには AArch64 の VM ゲスト に対するファームウエアが含まれています。どちらのパッケージにも複数のファームウエアが含まれていますが、それらはそれぞれ異なる機能が含まれています。このほかこれらのパッケージには、 JSON ファームウエアディスクリプタファイルと呼ばれる、各ファームウエアが提供する機能を説明したファイルも含まれています。
libvirt
では仮想マシンの UEFI ファームウエアの選択に際して、自動と手動の 2 種類の方式を提供しています。自動選択の場合、 libvirt
はユーザが指定したオプションセットに従ってファームウエアを選択します。明示的に何も機能を指定しない場合、 libvirt
は Secure Boot 対応で Microsoft 社の鍵を取り込み済みのファームウエアを選択します。手動選択の場合、ファームウエアのフルパスを手作業で指定し、オプション機能については明示的に設定することになります。この場合、 JSON ディスクリプタファイルを参照して、要件に合致するファームウエアを選択することができます。
/usr/share/qemu/firmware
ディレクトリには、 libvirt
が使用する全ての JSON ファイルが含まれています。このファイルには、各機能の情報を含むファームウエアの詳細が書かれています。
なお、 virt-install
を使用する場合、 boot オプションに firmware=efi パラメータを指定することで、ファームウエアの自動選択機能が有効化されます。この場合、ファームウエアに求める/求めない機能を指定して自動選択を行います。たとえば下記の例では、 UEFI Secure Boot が無効化されたファームウエアを自動選択するように指定しています。
>
virt-install --connect qemu:///system --virt-type kvm \
--name sle15sp5 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \
--boot firmware=efi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no \
--os-variant sle15sp5
ファームウエアの自動選択によって VM ゲスト が使用するファームウエアが変わってしまわないようにするため、 libvirt
では VM ゲスト の XML 設定ファイル内に自動選択したファームウエアを記録するようにしています。これにより、ファームウエアの自動選択は 1 回だけ動作することになります。いったんファームウエアを自動選択したあとは、 VM ゲスト の管理者が明示的に変更しない限り、手動でのファームウエア選択と同じように動作することになります。
また、手動でのファームウエア選択を行う場合は、 loader と nvram のパラメータを使用します。 loader は必須パラメータで nvram は任意パラメータとなります。 nvram パラメータは、 UEFI の変数ストアの保存先を指定します。たとえば下記の例では、 Secure Boot が有効化されたファームウエアを手動で指定しています。
>
virt-install --connect qemu:///system --virt-type kvm \
--name sle15sp5 --memory 1024 --disk size=10 --cdrom /dev/cdrom --graphics vnc \
--boot loader=/usr/share/qemu/ovmf-x86_64-smm-code.bin,loader.readonly=yes,loader.type=pflash,loader.secure=yes,nvram.template=/usr/share/qemu/ovmf-x86_64-smm-vars.bin \
--os-variant sle15sp5
libvirt
は UEFI ファームウエアの動作を変更することができません。たとえば UEFI Secure Boot が有効化されたファームウエアを使用している場合、 loader.secure=no を指定しても、 UEFI Secure Boot を無効化することはできません。また libvirt
は、指定したファームウエアが指定した機能を提供するかどうかを確認します。たとえば loader.secure=no を指定して UEFI Secure Boot を無効化した状態で、 UEFI Secure Boot の有効化されたファームウエアを指定すると、設定が拒否されます。
また、 qemu-ovmf-x86_64 パッケージには、複数の UEFI ファームウエアイメージが含まれています。たとえば下記のファイルは、いずれも SMM と UEFI Secure Boot が有効化されていますが、 Microsoft, openSUSE, SUSE UEFI のそれぞれ異なる鍵が取り込まれているファームウエアです:
#
rpm -ql qemu-ovmf-x86_64
[...] /usr/share/qemu/ovmf-x86_64-smm-ms-code.bin /usr/share/qemu/ovmf-x86_64-smm-ms-vars.bin /usr/share/qemu/ovmf-x86_64-smm-opensuse-code.bin /usr/share/qemu/ovmf-x86_64-smm-opensuse-vars.bin /usr/share/qemu/ovmf-x86_64-smm-suse-code.bin /usr/share/qemu/ovmf-x86_64-smm-suse-vars.bin [...]
AArch64 アーキテクチャの場合、パッケージ名は qemu-uefi-aarch32 になります:
#
rpm -ql qemu-uefi-aarch32
[...] /usr/share/qemu/aavmf-aarch32-code.bin /usr/share/qemu/aavmf-aarch32-vars.bin /usr/share/qemu/firmware /usr/share/qemu/firmware/60-aavmf-aarch32.json /usr/share/qemu/qemu-uefi-aarch32.bin
上記では *-code.bin
ファイルが UEFI ファームウエアファイル、 *-vars.bin
ファイルがそれぞれ対応する変数ストアイメージになります。変数ストアイメージは仮想マシンごとの不揮発性ストアの雛型として使用されるものです。変数ストアイメージは仮想マシンの作成時に /var/lib/libvirt/qemu/nvram/
以下にコピーされ、その後はコピーしたファイルに対して書き込みを行います。 code
や vars
を含まないファイルは単独 UEFI イメージと呼ばれますが、これらはいずれも仮想マシンのシャットダウンで UEFI 変数が消えてしまう構造のため、あまり使い道はありません。
また *-ms*.bin
ファイルには、実在するハードウエアにも搭載されている UEFI CA 鍵が含まれています。そのため、これらは libvirt
での既定値として指定されています。また *-suse*.bin
には SUSE 社の鍵が取り込まれています。それ以外にも、事前には全く鍵を含まないファームウエアも存在しています。
OVMF に関する詳細は、 http://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt (英語) をお読みください。
openSUSE Leap 等のオペレーティングシステムでは、インストール時にアドオン製品の追加を行うことができます。 SUSE Customer Center 経由でアドオン製品のインストールソースが提供されている場合は、 VM ゲスト 側での設定は特に必要とはなりませんが、 CD/DVD や ISO イメージとして提供されている場合、標準のインストールメディアとアドオン製品のイメージの両方を VM ゲスト に指定する必要があります。
GUI ベースのインストールを行っている場合は、ウイザードの最後の手順で
を選択し、 › を選択してアドオン製品の ISO イメージを追加してください。この場合、イメージのパスを指定し、 を に設定します。コマンドライン経由でインストールを行っている場合は、 --cdrom
ではなく、 --disk
オプションで CD/DVD ドライブを設定する必要があります。最初に指定されたほうのデバイスが起動用に使用されます。たとえば下記のコマンドラインでは、 SUSE Linux Enterprise Server 15 と SUSE Enterprise Storage 拡張を一括でインストールすることができます:
>
virt-install \
--name sles15+storage \
--memory 2048 --disk size=10 \
--disk /path/to/SLE-15-SP7-Full-ARCH-GM-media1.iso-x86_64-GM-DVD1.iso,device=cdrom \
--disk /path/to/SUSE-Enterprise-Storage-VERSION-DVD-ARCH-Media1.iso,device=cdrom \
--graphics vnc --os-variant sle15