GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu –独自のディストリビューション(Linux)に表示されるシェルを作成する方法??

閉鎖 。この質問はもっと焦点を合わせる必要があります。現在、回答を受け付けていません。

この質問を改善したいですか? 質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てるようにします。

4年前に閉鎖されました。


この質問を改善する

私はLinuxに興味があり、しばらくの間それを掘り下げてきました。 Linuxカーネルをソースからコンパイルし、Grubで起動して、カーネルのシェルを使用する方法を学びました。

これで、カーネルがメモリにロードされるとすぐに、initが検索されます。 それをロードします。私の議題は、シェル(通常のユーザーが使用できるシェル(bashなど)を起動することです。 。

では、どうすればそれを持ち込むことができますか?

bashシェルをロードするようにinitを構成する必要がありますか、それとも何かできることはありますか?

私は自分のディストリビューションを構築していますが、ディストリビューションにはシェル(bash)だけが必要です。

承認された回答:

うーん。これを達成するのは複雑ではありませんが、非常に複雑でもあります🙂

アレクサンダーが提案したことを簡単に行うことができます(init=/bin/bash )、そしてあなたはうまくいくでしょう。

initプロセスはカーネルが呼び出すものであり、すべてを開始します。 あなたのユーザーランドの。ログイン端末が含まれています。あなたのinitがそのbashターミナルをスポーンするだけなら、あなたは大丈夫です。ただし、その端末がクラッシュまたは終了した場合、initはクリーンアップすることになっています。ターミナルから起動するプロセスの一部が停止した場合は、クリーンアップする必要があります。彼らが死んだら、彼ら 子供たちは新しい親のプロセスを必要とします、それはあなたの初期化になります。

これを読むのに10分を費やすことを強くお勧めします。これは、initの概要を非常にわかりやすく説明しています。 する:

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

次に、独自のinitを実行するために必要なことをより深く理解できるようになります。

そのリンクの関連部分は次のように述べています:


実行する必要があるのは、/ sbin / init、/ etc / init、/ bin / init、または/ bin/shのいずれかのパスで起動する初期バイナリを提供することだけです。このプロセス(init)はpid1として実行されます。

initプロセスは2つのことを行う必要があります:

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

  • ゾンビプロセスを刈り取る

その後、残りのテキストは単純なinitを実装します。


Ubuntu
  1. UbuntuでLinuxカーネルのバージョンを確認する方法は?

  2. Linuxカーネル5.13がリリースされました! Ubuntu21.04にインストールする方法

  3. Ubuntuをロックアップする方法は?

  1. UbuntuでLinuxカーネルを更新する方法

  2. UbuntuとLinuxMintにLinuxカーネル4.3をインストールする方法

  3. UbuntuにWifiネットワークカードを認識させる方法は??

  1. UbuntuとLinuxMintでLinuxカーネルのバージョンを確認する方法

  2. Ubuntu16.04にLinuxカーネル4.10.1をインストールする方法

  3. Linuxカーネル5.15をUbuntu20.04にインストールする方法