作者:上村崇 フリーランスのIT系エンジニア
twitter:@uemera facebook:uemura

KVM仮想環境の構築 その2


KVM仮想環境の構築 その1に引き続きKVM環境を構築しています。
いろいろと分からないことも多いし、KVMの開発自体がまだ発展途上ということもありちゃんと動いてくれず苦労しています。
たくさんつまづきながらやってます。正月から3日がかりでやっとゲストOSが動くようになりました。
 
前回はホストOSとしてDebian(Squeeze)をネットワークインストールするところまでやりました。
いよいよKVMをインストールします。
 
 

KVMのインストール

KVMについてはここが参考になります。
@IT:KVMの導入と基本的な使い方
debian(squeeze)に以下のパッケージをインストールします。
qemu-kvm : KVM本体。lennyではkvmパッケージでしたが、sqeezeから名前がqemu-kvmに変更されています。
bridge-util : Ethernetをブリッジするパッケージです。
デフォルト設定ではゲストOSを仮想環境内LANで動くようになっていますが、ホストOSと同じ物理ネットワーク上のIPを振りたいなら入れておく必要があると思います。
virt-manager : GUIの管理マネージャ。
 
bridge-utilのインストールについてはpythonのアップデートも必要かも?。v2.6が必要とか言われました。
 
 

rootではなく一般ユーザで仮想マシンを動かしたい

一般ユーザ(user1とします)で仮想マシンを操作したい場合は、user1をlibvirtグループに含めます。
[shell]
adduser user1 libvirt
[/shell]
virt-managerを一般ユーザで動作させるためにはいったんホストOSの再起動が必要でした。
[参考]KVM – Debian Wiki(英語)
 
 

仮想マシンマネージャの使い方

これで一般ユーザのデスクトップから仮想マシンマネージャが動くようになります。このマネージャを通じてゲストOSの起動などKVMをコントロールできます。
gnomeの[アプリケーション]→[システムツール]→[仮想マシンマネージャ]で起動します。
201101042115.jpg
 
仮想マシンマネージャの使い方はここがおすすめ。
アクセラと+αな生活 : Ubuntu 9.10 で KVM を使ってみる。
 
 

ゲストOS:Windows7の導入

Windows7 64bit版をインストールしてみました。
インストールCDは無事認識しましたので作業は順調に行くと思われましたが、インストールの途中で再起動をした時に立ち上がってこない…
どうやらHDDから起動に失敗しているようで、こんなメッセージが出ます。
 

Starting SeaBIOS (version 0.5.1-20100825_131917-polaris)
Booting from Hard Disk…

 
はじめは仮想環境で使われているSeaBIOSがおかしいのかなと思っていましたが、そうではなくWindowsがMBRをちゃんと書いていなかったのが問題だったようです。
ここ経由でこのページの手順通りにやってなんとかHDD起動できるようになりました。
MBR – Restore Windows 7 Master Boot Record – Windows 7 Forums(英語)
 
サウンドドライバはKVM付属のac97でもes1370でも認識しませんでした。つまり音が鳴りません…orz
ここによるとac97は認識するとか書いてあるんですが。たぶんWindows7 32bit版の話でしょう。
しかもUSBメモリ認識しないし。
Windows7の32bit版だとこれらの問題もなく使えているという報告を見かけましたが、64bit版をインストールした限りだとまだいろいろおかしいです。
64bit版を安定して使えるようになるにはもうちょっとKVMの開発が進むのを待った方が良いかも知れません。
 
IMG_0725.JPG
 

VirtIOをインストール

ゲストOSがWindowsの場合は、準仮想化ドライバVirtIOを導入したほうが速くなります。
ファイルIOやネットワークを準仮想化し高速化してくれるドライバです。
[参考]絶対無糖 (Zettai Non Sugar): KVM で、Virtio Windows 用ドライバを試してみる
 
VirtIOを入れるとどれくらい速くなるかはこのページが参考になります。倍くらい速度が違うので、
ぜひ入れておいた方がいいです。
[参考]本気で使いたいユーザのためのLinux KVM活用法:第2回 Linux KVMで動かすWindows |gihyo.jp
 
ここからWindows用のVirtIOドライバをダウンロードします。
“Download Latest VirtIO Win drivers from Fedora”と書いてあるリンクです。
 
NICドライバはNetKVMフォルダの下にあります。
VirtIOディスクは、SCSIドライバとしてviostorディレクトリの下のドライバを指定します。
 

結局WindowsXPを使うことにしました

音がでないWindowsなんて悲しすぎるので、Windows7は諦めて、WindowsXPをインストールしました。
Vistaは操作性が悪く今まで使いにくい思いをしてきたので、もう使いません。
WindowsXP 64bit版のゲストOSは概ねうまく動いている感じです。
USBメモリやUSBマウスも認識しました。たぶんだいたいのUSBデバイスは大丈夫なんじゃないかと思います。
WindowsXPでも最初は音が鳴らず悩んでましたが、ここの情報に助けられました。これで解決。
 
KVM(Kernel based Virtual Machine)を語れ

/var/log/libvirt/qemu の下のログ見たら QEMU_AUDIO_DRV = none で起動してた
→ /etc/libvirt/qemu.conf の vnc_allow_host_audio を 1 にして /etc/init.d の libvirt-bin を restart する
 
/var/log/libvirt/qemu の下のログで ALSA lib が cannot find card ‘0’ とか Failed to open ‘default’ とか言う
→ /etc/libvirt/qemu.conf の user を root にして /etc/init.d の libvirt-bin を restart する

 
 

ネットワークの設定

ゲストOSをインストールすると、ネットワークはバーチャルなネットワークセグメントで動くわけですが、それだと何かと不便です。
現在ある物理ローカルネットワーク上に仮想マシンも置いた方がいろいろ便利なので、ネットワーク構成を変更します。
そのためには、ホストOSのeth0にブリッジ機能をもたせ、仮想OSに対してネットワークアドレスの変更なしで通信をパススルーするようにします。
[参考]
kvm を使う – 文書の形
Debian GNU/Linux 5.0 – KVM + QEMU – インストール : Server World
libvirt: Wiki: Networking(英語)
 
ネットワークを仮想ネットワークではなくブリッジ経由にする設定方法はこれらの情報で分かったのですが、これは新規にゲストOSをインストールするときの話でした。
すでに作成済みのゲストOSを、あとからブリッジ経由に変更する方法がいまいち分かりませんでした。
仮想マシンマネージャのメニューを見ても変更できる風ではなく、どうやらGUIからは変更できない感じでした。
 
なので以下を参考にして、/etc/libviert/qemu/ 下のxmlファイルのinterfaceセクションを手で書き換えました。
hnakamur’s blog: CentOSのKVMのゲストOSに2枚目のネットワークカードを追加
 
こんな感じで苦労しつつもなんとかWindows環境のゲストOSを動かすことができたのでした。

関連記事


Linux debianでRAID(ミラーリング)構築。mdadmとpartedで
mdadmによるRAID (ミラーリング)構成手順です。ディスクが1台壊れたのでRAIDを組み直しました。環境はLinux Debian 9.11 (stretch) partedやmdadmコマンドで構築します。

Postfixメールサーバー:送信不可のユーザーを設定する
メールサーバーPostfixにて、送受信ができないユーザーを設定をする方法です。Linux、debian環境です。特定のメールアドレスを送受信不可にします。メールを許可しないLinuxユーザーを作るときに有効です。

Web開発・Web制作のツールや用語を初心者向けに大量紹介。これだけ知っておけば安心。
Webページ製作やWebのシステム開発ではいろんなツールやテクニック、用語を使いますが、全体像がなかなか掴みにくいと思ったので、初心者向けに用語をたくさんまとめました。これさえ押さえておけば業界の常識用語はだいたい網羅できると思います。

KVM仮想マシンをWebからアクセスできるKimchiをdebianにインストール
自宅サーバーにてKVMの仮想マシンを動かしていますが、外からでもリモートで操作できるようにkimchiを導入しました。 GitHub – kimchi-project/kimchi: An HTML5 man …

Linuxの権限について解説。setuidとかsetgidとかスティッキービットとか
setuidとかsetgidとかスティッキービットの解説です。Linuxのこれらの機能については考え方が難しいですが、setuidは「一般ユーザーがroot権限で動かすことができる仕組み」です。setgidはそのグループ版です。詳細なメカニズムを解説します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です