
initプロセスが最初に実行され、すべてのプロセスがここで開始されることを知っていますが、initの前にどのプログラムを起動できますか? (起動シーケンスの初期に実行されるカーネルドライバを作成しますか?)
プログラムは、独自のハードウェアのさまざまな部分をテストし、ルートファイルシステムにテキストファイルを作成して状態を渡します。起動シーケンス中にプログラムを起動できる場合は、実行中のプログラムが起動シーケンスの初期に初期化された後にチェックが発生したハードウェアに存在する必要があることを考慮して、これを行う最善の方法は何ですか?
コンピュータの電源が入ってから数秒後、このプログラムが起動し、システム全体が完全に起動するのに約13秒かかります。これは放射線試験のためのアプリケーションであるため必要です。放射線試験中、ビームは、中イオン、プロトン、中性子などのパルスを数秒間隔でコンピュータに送信する。ビームが再びオンになる前にプログラムを起動する必要があり、コンピュータがクラッシュして再起動する可能性があります。
答え1
これを行う方法はいくつかありますが...
しないでください。
セキュリティアプリケーションがある場合は、これを制御するためにLinuxベースのコンピュータにのみ依存しないでください。これを管理するには、ハードウェアベースの監視デバイスの種類が必要です。
してください。
答え2
あなたの状況に精通している場合は、定期的に発生する放射線が原因でコンピュータが起動せず、これら2つのイベント間でコンピュータを起動して確認しようとします。したがって、コンピュータが最終的に起動するかどうかは問題ではありません。そうですか?
次のことができます。
- 静的プログラムの構築(つまり、静的リンク、ディスクのライブラリへの依存関係なし)
initrd
画像にアップロード- Linuxブートプロンプトで(メニューを使用
grub
して変更)、以下を追加します。init=/path/to/your/program
プログラムが始まります代わりにStandardinit
なので、コンピュータは再起動されませんが、プログラムは実行されます。
標準のLinuxインストールで提供するもの(デーモンのマウントポイント、リモートアクセス、シリアルコンソールなどを除く)は必要ありません。/
システムがまったく起動しないので、そのようなものがまったくないからです。 。
デバイスを正しく起動する必要がある場合は、注意してください。後ろにコードはすでに実行されており、exec
/sbin/init
最後のコマンドとして使用できます。