VA Linux Systems Japan株式会社

ホーム 検索 お問い合わせ

English

 
 

 

ホーム VA Tech.Top テックライブラリーTop kvm上でNetBSD/amd64を動かす 1

update : 2009/09/15

 

index

Xen特集

テックライブラリ

NetBSD/amd64をkvm上で動かす

 

1

症状

2

デバッグの手順

3

修正箇所1

4

修正箇所2

 

プレゼンライブラリ

イベントレポート

tips

VA Virtual-suite

仮想化に関するレポート販売

Xenを使ってみよう

Kernel対応障害解析サービス VA Quest

Linux Virtual Server Project

信頼性の高いロードバランサ である「VA Balance」

大規模メーセージングソリューション「FMS」

 

 

 


kvm上でNetBSD/amd64を動かす

記事執筆時点ではkvm上でNetBSD/amd64はインストーラを起動することもできません。この組み合わせを例にとり、OSと仮想マシンの低レベルの処理の解説を兼ね、判明した問題点と修正方法を解説します。

目的

仮想マシンは実在の標準的なハードウェアをエミュレートしているはずであり、一般の(任意の?)OSの実行に支障があるのは正しい姿ではありません。

一方、標準的な部品とBIOSを組みあわせて作られているわけではなく、仮想マシンの開発者は必ずしも十分な検証の手間はかけられないので、使われる頻度の低いOSの動作に支障のある特殊な存在となってしまうのは仕方がない面もあると言えます。また、OS側も仮想マシン上での動作を検証する人的資源を欠くこともあります。

記事執筆時点ではkvm上でNetBSD/amd64はインストーラを起動することもできません。この組み合わせを例にとり、OSと仮想マシンの低レベルの処理の解説を兼ねて、判明した問題点と修正方法を解説します。

 

それぞれの問題点はOSと仮想マシンのいずれの側でも対策できますが、より受け入れられやすい修正とするためにACPIの仕様書などからどちらかのバグと判断できるものについては、それぞれのバグを修正する方向で行いました。

仮想マシンとしてはバグのあるOSも動作させられるほうが望ましいですし、特に古いOSを動作させたい場合などは原因がOS側にあっても仮想マシン側で回避する必要があります。

しかし、そのような回避策を実装すると他の今まで動いていたOSの動作に支障が出る可能性もあり、技術的にはともかく政治的にそのような修正は難しいのではないかと思われます。

一方、既にある仮想マシンを使うユーザーにとって便利なように、仮想マシンのバグに合わせてOS側が対策することもできます。

対象とするバージョン

Linux 2.6.26-2-amd64(Debian lenny)

kvm-84

NetBSD/amd64 5.0

症状

(1)

特別なオプションを指定しなかった場合

 

$ qemu-img create -f qcow2 netbsd-dbg.img 1G
Formatting 'netbsd-dbg.img', fmt=qcow2, size=1048576 kB
$ qemu-system-x86_64 -m 512 netbsd-dbg.img -cdrom Desktop/amd64cd-5.0.iso

 

vga0が認識されていないのが原因です。そもそもvga0がattachするpciバスが認識されていません。

特に起動時にエラーメッセージは見られません。

図crash1

【図 crash1】

図を大きく表示する

(2)

qemuに-no-acpiを指定した場合

 

$ qemu-system-x86_64 -no-acpi -m 512 netbsd-dbg.img -cdrom Desktop/amd64cd-5.0.iso

 

(1)と同様のpanicが発生します。pciバスが認識されないのも同様です。

(3)

NetBSDのブートローダでACPIおよびSMPサポートを無効にした場合

 

panicにはなりませんが、ブート途中で固まって動かなくなります。

【図 hang1参照】

図hang1

【図 hang1】

図を大きく表示する

 

また、【図 debug】のようにpciバスおよびvga0は認識されています。

図debug

【図 debug】

図を大きく表示する

(4)

NetBSDのブートローダでACPIおよびSMPサポートを無効にし、qemuに-no-kvmを指定した場合

 

pciバスの認識を含めて正常に起動します。

(5)

serial console

 

NetBSDのboot promptを選択し、【図 serial】のようにコンソールデバイスをcom0にします。

図serial

【図 serial】

図を大きく表示する

 

Ctrl-Alt-3でqemuのserial console画面になるので、そこで

> boot

とコマンドを入力すると、インストーラが起動します。pciバスが認識されないのは変わりありません。

 

次へ


 
 
本サイトの利用に関して 免責事項 コピーライト 個人情報保護方針

Copyright C VA Linux Systems Japan. All rights reserved.