2012-04-15 5 views
6

私の質問はかなり広範ですが、私は知っていますが、私はこれについて長いこと疑問に思っています。悪いUSBデバイスがバグのないLinuxカーネルをクラッシュさせることはできますか?

少し背景。私はすべてのラボコンピュータがDebian(古いバージョンとLennyのミックス)またはもっと最近Ubuntu 10.4 LTSを実行している物理ラボで働いています。私たちは、実験用ハードウェアや他のコンピュータとインターフェースするためのカスタムソフトウェアをたくさん書いています。

私たちは実験のさまざまな部分を制御するFPGAボードをたくさん持っています。これらのボードは、USBを介してさまざまなコンピュータに接続されています。実験を制御するコンピュータをアップグレードした後、すべてのレーザーを実行しているコンピュータのクラッシュ/ロックアップを開始しました。以前は完全に安定していました。

私の質問はこれです:実際のデバイス が、これはLinux上で非難することができます)ので A)のPython/GTKソフトウェアのGUI B)USBデバイスドライバ または Cの問題のアップ全体のコンピュータがロックした場合カーネル(または他のレベルのOS)?

ソフトウェア/ハードウェアの実装に間違いがあっても、パニックにならないようにLinuxカーネルに頼むのは不公正ですか?

自分の推測:ユーザーレベルのアプリケーションでは、自分のものにしかアクセスできないため、システム全体をクラッシュさせることはできません。

デバイスドライバは、カーネル自体の一部となり、クラッシュする可能性があります。私の推論は響きますか?

ボーナス質問:デバイスとカーネルを断熱して、Linuxが愚かな間違いがハードウェアで行われても幸せに走り続けるようにする方法があります。 1)実行中のシステムでデバッグが容易になる 2)実験の目的では、実際には長い稼働時間が必要で、システムクラッシュの一部のみが1つのクラッシュよりも無限に優れているシステムの一部は残りの部分に伝播します。

この件に関するリンクや読書資料はありがたいです。ありがとうございました。

+0

私はクラッシュの専門家ではありませんが、私はあなたの推測で正しいと言います。ボーナスに関する質問については、_logical_ errors(すなわち、悪いプロトコル)は、カーネルがそれ以上問題なく対処しなければなりません。 _phisical_エラー(すなわち、短絡、過電流など)は、一般に、カーネルによって管理されることはできず、異なるレベルの災害を引き起こします。 – rodrigo

答えて

3

カーネルのバグがない限り、特権のないコードではシステムを停止できないはずです。非特権と特権との間の行は、ユーザー空間とカーネルとまったく同じではありません。ユーザーモードプログラムは、/dev/kmemを開き、ユーザーアカウントにスーパーユーザー権限がある場合はOSの内部データ構造をゴミ箱に入れます。

デバイスドライバの問題からメインカーネルを隔離するには、デバイスドライバを仮想マシン内で実行します。

VMWare Workstationを含むいくつかの一般的なVMシステムは、ホスト上のデバイス固有のドライバなしでホストからゲストに任意のUSBデバイスを転送することをサポートしています。

+0

質問に続きます。デバイスドライバが正しく書き込まれたと仮定すると、(接続されたデバイスの)ハードウェア障害がシステムを停止させることができないはずです。 – HansHarhoff

+0

@HansHarhoff:障害が発生したハードウェアが、接続されているコンピュータポートに対して指定されている最大許容誤差を超えない限り、正しいです。ほとんどのUSBホストは、例えば短絡に対して耐性があります。一方、USBケーブルに落雷が発生した場合、最大定格を超えるため、すべての賭けはオフになります。 –

+0

私の2つの主な懸念事項は、USBポートの短絡(または電圧降下)と偶発的/突然のハードウェアの切断ということです。私たちは、電源供給されたUSBハブが短絡のバッファとして機能するかどうかをテストしようとしています。 突然の取り外しに関して、私は重要なことは返事を待っているときに時間切れになることだと思います。 – HansHarhoff

関連する問題