仮想マシンを使用してLinuxモジュールの開発/テストは安全ですか?


18

私はオペレーティングシステムクラスにいます。カーネルコードを修正する作業を行う必要があります。悪いコードを書いて、すべきではない場所に上書きする可能性があるため、テストにはパーソナルマシンを使用しないことをお勧めします(これはインストールを意味すると思います)。安全のため、ラボ内のマシンにアクセスできます。

VMを使用してテストする場合、潜在的に安全でないコードからホストシステムを保護しますか?私は本当に学校のシステムにこだわる必要はありません。スナップショットが役立ちます。

それでもリスクが高い場合、安全にテストするために考慮する必要があるものについての提案はありますか?

まずはlinuxmintのようなものを使用します。現在のプロジェクトの内容を確認したい場合:http : //www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf


正直なところ、特にバックアップをとる場合は、実際のハードウェアで行うのはそれほど危険ではありません。私は持っていますし、他の多くの開発者も持っていると確信しています。
ホッブズ

@hobbsそれは、私たちの多くが危険な生活をしたいからです。かなり小さなモジュールで作業する慎重な開発者であれば、実際のマシンでの作業は問題ありません。大規模な開発(または不注意な開発者)の場合は、おそらく隔離された環境で作業することをお勧めします。また、カーネルレベルのカスタマイズがモジュールに干渉しないようにするために、「クリーンなディストリビューション」で作業することをお勧めします。D:最小のミスが最も恐ろしい結末有することができるカーネルモジュールの開発であることを覚えておいてください
ジョン・WHスミス

回答:


28

カーネルモジュールを開発する主なリスクは、通常のコードよりもはるかに簡単にシステムをクラッシュさせる可能性があることです。また、アンロードできないモジュールを作成することがあります。つまり、再ロードするにはリブートする必要があります。あなたが間違っているものを修正した後、それら。

はい、VMはこの種の開発に適しています。カーネルモジュールで作業しているときに使用します。VMは、実行中のシステムからテスト環境を適切に分離します。

スナップショットを取得して復元する場合は、VMの外部のバージョン管理リポジトリにソースコードをチェックインしたままにして、VMの現在の状態を破棄するときに誤って最新のコードを失わないようにする必要があります。


3
または、VMの特定の側面のみのスナップショットを作成できる場合があります。たとえば、ソースコードを別の仮想ディスクに保存します。もちろん、コードを定期的にチェックインするVM外のソースコードリポジトリは、とにかく良いアイデアです。多くの恥ずかしい間違いからあなたを救うことができ、良いコーディングの実践を教えます。
CVn

システムを簡単にクラッシュさせるもう1つの側面は、システムをクラッシュすると、付随的な破損を引き起こす可能性が高くなることです。
user253751

14

実際のハードウェア用のドライバーを作成しようとしていないと仮定すると、これはモジュールで作業するのに最適な方法です。稼働中のシステムのスナップショットを作成できます。何かを爆破した場合は、スナップショットに戻ります。

可能であれば、スナップショットシステムが思ったよりも奇妙な場合に備えて、VMの完全な複製を作成します。:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.