|
仮想マシンは実在の標準的なハードウェアをエミュレートしているはずであり、一般の(任意の?)OSの実行に支障があるのは正しい姿ではありません。
一方、標準的な部品とBIOSを組みあわせて作られているわけではなく、仮想マシンの開発者は必ずしも十分な検証の手間はかけられないので、使われる頻度の低いOSの動作に支障のある特殊な存在となってしまうのは仕方がない面もあると言えます。また、OS側も仮想マシン上での動作を検証する人的資源を欠くこともあります。
記事執筆時点ではkvm上でNetBSD/amd64はインストーラを起動することもできません。この組み合わせを例にとり、OSと仮想マシンの低レベルの処理の解説を兼ねて、判明した問題点と修正方法を解説します。
それぞれの問題点はOSと仮想マシンのいずれの側でも対策できますが、より受け入れられやすい修正とするためにACPIの仕様書などからどちらかのバグと判断できるものについては、それぞれのバグを修正する方向で行いました。
仮想マシンとしてはバグのあるOSも動作させられるほうが望ましいですし、特に古いOSを動作させたい場合などは原因がOS側にあっても仮想マシン側で回避する必要があります。
しかし、そのような回避策を実装すると他の今まで動いていたOSの動作に支障が出る可能性もあり、技術的にはともかく政治的にそのような修正は難しいのではないかと思われます。
一方、既にある仮想マシンを使うユーザーにとって便利なように、仮想マシンのバグに合わせてOS側が対策することもできます。
|