Linuxカーネルドライバの開発に仮想マシンを使用できますか?

Linuxカーネルドライバの開発に仮想マシンを使用できますか?

私は現在という本を読んでいますLinux Device Drivers, Third Edition。ここにリンクがあります。ほとんどの経験豊富な人々はすでにこの本に精通しています。

https://lwn.net/Kernel/LDD3/

私はただそれをしなければなりませんでしたChapter 2。通常、基本的なカーネルプログラミング環境を構築することです。教育目的のために、この本はほぼ常に(最後の例を除く)built-inCD-ROMなどのハードウェアにのみ依存しています。だから私の質問は:これを達成するために仮想マシン(現在使用されている)を使用できますUbuntu 18.04VirtualBox5.3 Kernel本?私は仮想マシンに独自のカーネルがあることを知っています。それでは、VirtualBoxこの本を読んで、キャラクタードライバーなどを作成するために実際のマシンの代わりに使用できますか?安全ですか?私がこれをしたい主な理由は、私の女性システムを崩さないためです。残念ながら、現在のテストのために他のシステムを実行する追加のハードウェアはありません。 Ubuntu VMだけでこの本を完成できますか?

注:同様の投稿を見たことがありますが、ここで何をするかを指定したので、別の投稿を作成したいと思いました。つまり、本の例に従ってください。したがって、少なくともこれらの例では、VMに要求するだけで十分です。

答え1

はい、これはすべて仮想マシンで実行でき、システムの損傷を防ぐため安全です。仮想化ハードウェアですべての例を完了できます。ただし、書籍が公開されてからカーネルが大幅に変更されたため、現在のカーネルを使用するときは少し調整が必要になる場合があります。

答え2

ドライバの開発には仮想マシンを使用できます。

準仮想化ハードウェア (virtio) を使用しない場合、VM の仮想ハードウェアは、実際のハードウェアのようにカーネルモジュールで動作します。

私はその本を知りませんが、ハイパーバイザーによってシミュレートされた実際のハードウェアでこれらの例を使用できる場合は、その仮想ハードウェアが目的を達成する必要があります。

PCIパススルーを使用すると、ホストシステムに接続されている物理ハードウェア用のハードウェアも開発できます。

関連情報