lp0 on fire
lp0 on fireは、特定の種類のプリンタエラーに対応する、UNIX系オペレーティングシステムにおけるエラーメッセージの一つである。lp0 は1つ目のラインプリンタを表すデバイスハンドラであり、それ以外のプリンタについても同様のエラーメッセージが出力される。
"lp0 on fire"は「lp0で火災発生中」という意味である。初期のラインプリンタはエラー発生時に火災の危険性があったが、このエラーメッセージは、そのプリンタで実際に火災が起きているかどうかを確実に示すものではない。
歴史
[編集]"on fire"というエラーメッセージの起源は、コンピュータによる高速印刷がまだ実験段階だった1950年代後半に遡る。最初に文献に現れる高速プリンタは、Stromberg-Carlson 5000というゼログラフィプリンタで、現代のレーザープリンタに似ているが、光源としてレーザーではなくCRTが使用されていた。1959年にローレンス・リバモア国立研究所に設置され、毎秒1ページの印刷速度を達成するために定着オーブンを拡張する改造がなされた。印刷が停止した場合(通常の動作中にも時折)、定着オーブンにより紙が加熱され、火災が発生する危険性があった。火災が発生したときにプリンタが作動し続けると、そこに紙が高速で供給されるため、火災がさらに悪化した。しかし、その時代のどのソフトウェアでも、"lp0 on fire"というメッセージが表示されていたという証拠はない[1]。
技術が成熟するにつれて、大規模プリンタのほとんどは、高速回転する印刷ドラムを使用して一度に1行のテキストを印刷できるインパクトプリンタの一種であるドラムプリンタとなった。重大な紙詰まりが発生した場合、紙とドラムとの摩擦によって、紙自体や、機械が汚れていた場合に、蓄積された紙やインク塵が発火する可能性があると考えられていた。この機構での火災が実際に起きたかどうかは分かっていない。摩擦関連でのプリンタ火災の報告はない。
ラインプリンタは、「レディ」、「オンライン」、「チェック」の3種類のステータスコードを使用していた。オンラインステータスが「オフ」、チェックステータスが「オン」に設定されている場合、オペレーティングシステムはこれを「用紙切れ」として解釈する。ただし、オンラインコードが「オン」、チェックコードも「オン」に設定されている場合は、プリンタに紙が残っていても、エラーが発生するが、まだ印刷を実行しようする可能性がある。初期のラインプリンタで起こり得る潜在的に危険な条件であるため、Unixは、システムオペレータがラインプリンタを速やかに確認するように、このエラーメッセージを表示した[2]。
レガシー
[編集]現代のインクジェットプリンタやレーザープリンタは、メインフレームの時代のプリンタのように火災を起こす危険性はほぼないが、あらゆる種類のPOSIX準拠オペレーティングシステムのlpデバイスコードは、この伝統的なメッセージを保持している。プリンタドライバとサポートが改善されるにつれ、このエラー状態は適切にトラップまたは処理されるようになり、今日のUnix/Linuxユーザのほとんどは、"on fire"というメッセージを目にすることはない。しかし、このエラーメッセージはまだ多くの(特に、レガシーパラレルポートデバイスに対応している)カーネルに存在しており[3]、今日までユーザを困惑させている[4][5]。"on fire"メッセージは、バージョン4.0以降のLinuxソースコードに残っている[6]。
"on fire"メッセージは、他のコンポーネントにも存在し、ユーモラスな効果をもたらすことが多い。例えば、いくつかのカーネルのCPUコードでは、CPUの過熱により"CPU#0: Possible thermal failure (CPU on fire ?)."(CPU#0: 熱破損の可能性(CPUで火災発生?))というメッセージが表示されることがある[7]。
関連項目
[編集]脚注
[編集]- ^ “LLNL war story concerning the SC5000 and the Radiation Printer”. November 14, 2011閲覧。
- ^ “Mailing list post relating the history of the lp0 on fire error”. September 11, 2007閲覧。
- ^ “Google Code Search for 'lp%d on fire'”. January 17, 2010閲覧。[リンク切れ]
- ^ “Help, my printer port is on fire!!!”. November 3, 2006時点のオリジナルよりアーカイブ。September 11, 2007閲覧。
- ^ “Linux kernel source code for USB printers”. 2017年8月7日閲覧。
- ^ “linux/drivers/char/lp.c”. kernel/git/torvalds/linux.git. May 1, 2015閲覧。
- ^ “CPU#0: Possible thermal failure (CPU on fire ?)”. December 21, 2014閲覧。