自分のディストリビューション(Linux)にシェルが表示されるようにするにはどうすればよいですか? [閉鎖]

自分のディストリビューション(Linux)にシェルが表示されるようにするにはどうすればよいですか? [閉鎖]

私はLinuxに興味があり、しばらく研究してきました。ソースからLinuxカーネルをコンパイルし、カーネルシェルを提供するGrubを使用して起動する方法を学びました。

カーネルがメモリにロードされたら、initそれをロードするために検索します。私の計画はシェルを起動することです(たとえば、一般ユーザーが利用可能ですbash)。

それで、それをどのようにインポートしますか?

Bashシェルをロードするにはinitを設定する必要がありますか、それとも私ができることがありますか?

私は独自のディストリビューションを作成していますが、ディストリビューションにはシェルだけがあり、他のものは必要ありません。

ベストアンサー1

よく。実装は複雑ではありませんが、非常に複雑です。 :)

単にアレキサンダーのアドバイス( )に従うとinit=/bin/bash大丈夫でしょう。

init プロセスはカーネルによって呼び出され、開始されます。みんなあなたのユーザースペース。ログイン端末を含みます。初期化がbash端末を生成しても大丈夫です。ただし、端末がクラッシュまたは終了した場合は、initをクリーンアップする必要があります。端末で開始したプロセスの一部が終了したら、それをクリーンアップする必要があります。彼らが死んだら、彼ら子には初期化される新しい親プロセスが必要です。

10分後にこの記事を読んでください。次の内容の非常にフレンドリーな概要が提供されていますinit

http://tilde.town/~elly/userland.txt

次に、独自のinitを実行するために必要なものについて詳しく学びます。

リンクの関連部分は次のとおりです。

私たちがしなければならないことは1つだけです。 /sbin/init、/etc/init、/bin/init、または /bin/sh パスのいずれかから始まる初期バイナリを提供することです。プロセス(init)はpid 1で実行されます。

init プロセスは、次の 2 つのタスクを実行する必要があります。

  • 終了しないでください(initが終了すると、カーネルはパニック状態になります)。

  • ゾンビプロセスの収穫

残りのテキストでは簡単な初期化を実装します。

おすすめ記事