Linuxカーネルを別々にインストールすることが可能か、それとも2つのバージョンのいずれかを使用する必要があるかどうか疑問に思います。できればどうしますか?詳細なチュートリアルは必要ありません。概念的にはどうなっているのか気になります。私は低レベルの作業がうまくいかず、コンピュータにオペレーティングシステムをインストールする方法を知りたいです。 MBRと関係があるようです。
ああ、多くの回答が最小のLinuxの特定のディストリビューションを示唆していることがわかりました。最小限のLinuxや単純なLinuxをインストールしたくないということをお伝えしたいと思います。この質問は純粋に理論的です。それにもかかわらず、すべての答えに心から感謝し、本当にパーソナライズされたLinuxをインストールしたい場合は、すぐに参考にしてください。
答え1
技術的には、ブートローダとカーネルを別々にインストールできますが、一度カーネルが起動すると「init」を起動できないというメッセージが表示され、その場にそのまま残って何もできません。
ところで、MBRのブートローダの一部です。カーネルはディスクの通常の領域のどこかに置かれます。ブートローダは、カーネルをロードして実行できるように自分の場所を知るように構成されています。
答え2
質問した内容を完全に理解していないようですが、一度見てみると良いと思います。最初からLinuxプロジェクト。
答え3
他のプログラムをインストールせずに既存のシステムにカーネルを「インストールまたはアップグレード」することは可能ですか?
Linuxカーネルは通常、ディレクトリ(通常はハードドライブの先頭にある別の小さなパーティション)vmlinuz-x.x.x-x-name
に名前が付けられたバイナリファイルですboot
。ここで、x はバージョン番号です。 「名前」は単にカーネル用に選択された名前で、コンパイル時に設定することができ、それを使用してカーネルが意図したシステムまたはアーキテクチャの種類を識別したり、他の理由で使用したりできます。
これはブート時にブートローダによってロードされ、通常はGRUB
MBRのブートコードによって呼び出され、これはBIOS ROMによって呼び出されます。一度読み込まれると、「開いたまま」または特別に保護されません。これにより、ファイルを動作している他のコアに置き換えることができます。ただし、GRUB
起動するコアを複数選択する素晴らしい機能があります。したがって、このリストに追加のコアを追加することは非常に賢明ですが、問題が発生した場合に備えて、元の既知の動作コアを維持してください。
私はほとんどすべてのディストリビューションが、デバイスドライバが別々のファイルにある「モジュラー」カーネルを作成すると思います。したがって、ほとんどのカーネルには、起動時に使用可能なドライバを含むファイルシステムが必要です。これは、「initrd」(初期RAMディスク)または「initramfs」に使用されます。 GRUB
カーネルはメモリのどこかにロードされ、initrdは別の場所にロードされます。その後、Linuxはカーネルにジャンプし、initrdがどこにあるかを知らせることによって起動します。
ドライバはカーネルに「組み込まれている」ため、ブートローダが画像を読み込むときに自動的に読み込まれ、使用できますvmlinuz
。さまざまなシステム用のカーネル(ほとんどのディストリビューションなど)は、通常、カーネルに組み込まれているコンテンツを最小限に抑えます。利用可能なハードウェアは、後で起動プロセス中に検出され、現在のハードウェアを表すモジュールのみがロードされるためです。
initrdを修正して生成するツールがあります。 Debianには素晴らしいツールがあり、他のディストリビューションもそうだと思います。
したがって、kernel.orgから更新されたカーネルをダウンロードしてコンパイルして新しいカーネルバイナリイメージを作成する場合は、そのカーネルで動作するドライバでinitrdを作成または更新する必要があります。ドライバが実行されているカーネルのバージョンと一致する必要があるため、以前のinitrdは機能しません。
initrdファイルにはinitrd.img-x.x.x.x-name
カーネルと同じ名前が付けられ、起動後にカーネルと同じように置き換えることができます。最善の方法は、新しいカーネル+ initrdで正常に起動できることを確認するまで、既知の操作initrdを削除しないことです。
これが少しの文脈を提供することを願っています。
追加のプログラムがほとんどインストールされていない「デフォルト」Linuxインストールを探していた場合、私のお気に入りのオプションは常にDebiannetinst
イメージをインストールすることでした。コマンドラインテキストコンソールを実行し、nano
テキストエディタとして機能するために必要な最も基本的なツールだけが必要です。
答え4
Linuxカーネルは、一般的なユーザースペースツールなしでインストールできます。これは通常、ルータなどの組み込みシステムで行われます。通常、カーネルはROMまたはフラッシュメモリからロードされ、問題のデバイスに合わせてカスタマイズされます(必要なドライバは通常モジュールとしてロードされず、カーネルにコンパイルされます)。
「init」プロセスになるには、少なくとも1つのユーザースペースプログラムが存在する必要があります(必ず呼び出す必要はありませんが、init
カーネルによってプロセス1から始まり、すべての孤立プロセスの自動親)。 - カーネルが変更されていない場合(必ずしも単純である必要はありません)、カスタマイズした場合、これは不要です。
もちろん、Linuxベースのデバイスを動作させるためにシェルを使用する必要はありませんが、開発がはるかに簡単になる可能性があります!