web-dev-qa-db-ja.com

カーネルのソースコードから最小限の起動可能なLinux(端末のみ)を作成する方法は?

端末インターフェイスと基本的なコマンド/アプリケーションのみを備えた最小限のLinux OSを作成したいと思います(コマンド/アプリにはBusyboxを選択します)。 OSにインストールオプションを使用したくありません。起動してRAMから完全に実行するだけです。 ISO-Linuxをブートローダーとして使用する予定です。ネットワーキング、仮想化サポート、不要なドライバーなどはありません。非常に基本的なOSにしたいです。 kernel.orgから最新の安定したカーネル(v4.5)ソースコードをダウンロードし、ビルド環境を準備しました。

私のもう1つの混乱は、デフォルトでカーネルにユーザーインターフェイス(シェル、ターミナルなど)があり、コマンドを入力して出力を表示できることです。

5
Kesavamoorthi

技術的にはこれを実現できます。ただし、カーネルにはユーザーインターフェイスが組み込まれていません。

次の手順を実行する必要があります。

1. Create a initramfs with static busybox and nothing else.
This initramfs will have few necessary directories: like proc, sys, tmp, bin, usr, etc

2. Write a "/init" script, whose main job will be:
   a. mount the procfs,tmpfs and sysfs.
   b. Call busybox's udev i.e. mdev
   c. Install the busybox command onto virtual system by executing busybox install -s
   d. Calling /bin/sh

3. Source the initramfs directory while compiling the kernel. You can do so by flag: CONFIG_INITRAMFS_SOURCE

4. Compile your kernel.

5. Boot off this kernel and you will get the Shell Prompt with minimal things.

しかし、私は上記のメモを非常に形式的に書いています。好みに合わせて微調整できます。

UPDATE:

いくつかのガイドラインについては このリンク に従ってください。

8
SHW

カーネルの構築に関して最小限の知識しかない場合は、 CoreOS のような最小限のディストリビューションを調査することをお勧めします。その他(私自身は使用していません)はProject Atomic、Snappy Ubuntu Core、RancherOS、Photon ...です。

要件がRAMで実行することである場合、最小限のレスキューおよび/またはLiveCDディストリビューションまたは 埋め込みディストリビューション があり、作成よりも少ない作業で用途に適合させることができます(その用途は何か、BTW?)。ゼロからのディストリビューション。

0
Law29