Linuxカーネルだけをインストールすることはできますか?


45

Linuxカーネルを単独でインストールできるのか、それともフレーバーの1つを使用する必要があるのか​​、興味があります。可能であれば、どうしますか?詳細なチュートリアルは必要ありません。概念的にどのように行われるかを知りたいだけです。私は低レベルのものが苦手なので、OSをどのようにコンピューターに取り込むか知りたいです。MBRと関係があると思います。

ああ、私は多くの答えが最小のLinuxの特定のディストリビューションを示唆していることに気づきました。たぶん、私は最小限の、または必要最低限​​のLinuxをインストールするつもりはないと述べたはずです。この質問は純粋に理論的なものです。それでも、私は本当にすべての答えに感謝し、本当にパーソナライズされたLinuxをインストールしたいと思うなら、すぐにそれらを参照します。


3
「単独」と「フレーバー」とはどういう意味ですか?LinuxはOSではなくカーネルです。OSのないカーネルは何に向いていますか?代わりにブートローダーシーケンスを把握しようとしていますか?
カレブ

3
カーネル/ OSがコンピューターにどのように侵入しているかを知りたい場合は、ここから始めてください。そこに「初心者」の質問をしないでください、彼らはあなたに噛み付くでしょう、代わりにSOでそれらを尋ねてください。
フィロマス

3
単独で言うと、ユーザーインターフェイスとOpenOfficeなどのプログラムを除いたカーネルだけを意味します。「フレーバー」とは、ubuntu、redhat、debian、mandrivaなど、Linuxのさまざまなディストリビューションを意味します。私は何について話しているのかほとんどわかりません。LinuxカーネルにはDOSのような基本的なbash機能があると想像していました。カーネルとオペレーティングシステムのアイデアが絡み合っていると思います。
セザール

4
はい、それらは本当に絡み合っています:) Bashは、カーネルによって管理されるプロセスとして実行される単なるユーザーランドプログラムです。カーネル自体は、他のものを実行するプラットフォーム以外には何も提供しません。Shadurの答えでのLFS(Linux From Scratch)の提案は、的を射ています。スクラッチシステムを構築することにより、すべての異なる部分が何であるか、およびディストリビューションをディストリビューションにするもの、およびカーネルが終了してユーザーランドが始まる場所について多くを学ぶことができます。
カレブ

2
実際、DOSにkernelも基本的なbash機能はありませんでした。標準ユーザーインターフェイスは、シェルプログラムによって提供されましたCOMMAND.COM。必要なことを何でもしている裸のカーネルに到達できる最も近い方法は、カーネルパラメーターを使用してブートすることですinit=/bin/bash(最小限のLinuxがディスク上にあると仮定)。答えたように、ブートローダーとカーネルしかない場合、見つからない場合は非常に早く停止しますinit
StarNamer

回答:


51

技術的にはブートローダーとカーネルのみをインストールできますが、カーネルが起動するとすぐに「init」を開始できないと文句を言います。

ところで、それはMBRにあるブートローダーの一部です。カーネルは、ディスクの通常の領域のどこかにあります。ブートローダーは、それがどこにあるかを知るように構成されているため、カーネルをロードして実行できます。


どのようにMBRに入れますか?
セザール

すべてのブートローダーには、MBRにインストールするためのツールが付属しています。Boot-Repair(help.ubuntu.com/community/Boot-Repair)のような使いやすいツールもあります。
ショーンJ.ゴフ

さて、initramfsを作成してカーネルイメージに埋め込むと、カーネルイメージファイルだけで完全に機能するシステムになります:-)
Patrick

@ ShawnJ.Goff initramfsを提供すると、カーネルがなぜinitを起動できないと文句を言うのでしょうか?
プラティックシンハル14

4
@ ps06756 initramfsをお持ちの場合、それは質問にあるように「単独」のカーネルではありません。initramfsにinitがある場合、カーネルは文句を言いません。
ショーンJ.ゴフ

18

あなたが何を求めているかを正確に理解しているとは思わないが、Linux From Scratchプロジェクトを見てみたいと思うかもしれない。


LFSは、最小限のシステムを構築する方法を理解するための良いアイデアです。または、MINIXを見る(およびを読む)こともできます。または、別の紹介(作業量は少ないが情報量が少ないaptitude search '?essential')については、DebianまたはUbuntuで「必須」()のタグが付いたパッケージを見て、それぞれの機能を理解してください(最低限以上の機能があります)。
ジル 'SO-悪であるのをやめる'

12

他のプログラムをインストールせずに、既存のシステム上にカーネルをインストールまたはアップグレードできるかどうかを尋ねる場合はどうでしょうか?

Linuxカーネルは通常vmlinuz-x.x.x-x-namebootディレクトリ(通常はハードドライブの先頭にある個別の小さなパーティション)で名前が付けられたバイナリファイルです。xはバージョン番号です。「名前」は、コンパイル時に設定できるカーネルの単なる選択名です。これを使用して、カーネルがどのタイプのマシンまたはアーキテクチャであるか、またはその他の理由を特定できます。

ブート時にブートローダーによってロードされます。通常、ブートローダーGRUBはBIOS ROMによって呼び出されるMBRのブートコードによって呼び出されます。一度読み込まれると、「開かれたまま」になったり、特別に保護されたりすることはありません。そのため、そのファイルを別の動作中のカーネルに置き換えることができます。しかし、GRUB起動する複数のカーネルを選択できるクールな機能があります。したがって、追加のカーネルをそのリストに追加するのはかなり賢明ですが、問題が発生した場合に備えて、元の既知の動作中のカーネルを保持します。

私が信じるほぼすべてのディストリビューションは、デバイスドライバーが個別のファイルにある「モジュラー」カーネルを作成します。そのため、ほとんどのカーネルには、ブート時に使用可能なドライバーを含むファイルシステムが必要です。これが「initrd」(初期RAMディスク)または「initramfs」の目的です。 GRUBカーネルをメモリ内の場所にロードし、initrdを別の場所にロードし、カーネルにジャンプしてinitrdの場所を通知し、Linuxを起動します。

ドライバーはカーネルに「組み込む」こともできるため、ブートローダーがvmlinuzイメージをロードすると自動的にロードされ、使用可能になります。使用可能なハードウェアはブートプロセスの後半でスキャンされ、現在のハードウェアを表すモジュールのみがロードされるため、通常、さまざまなシステム(ほとんどのディストリビューションのシステムなど)で動作するカーネルは、カーネルに組み込まれるものを最小限に抑えます。

initrdを変更および作成するツールがあります。Debianには便利なツールがあり、他のディストリビューションにも同様の機能があると思います。

したがって、kernel.orgから最新のカーネルをダウンロードしてコンパイルし、新しいカーネルバイナリイメージを作成する場合、そのカーネルで動作するドライバーでinitrdを作成または更新する必要があります。ドライバーは実行中のカーネルのバージョンと一致する必要があるため、古いinitrdは機能しません。

initrdファイルはinitrd.img-x.x.x.x-nameカーネルと同様の名前が付けられており、ブート後にカーネルと同じように置き換えることができます。ベストプラクティスでは、新しいkernel + initrdを正常にブートできることがわかるまで、既知の動作中のinitrdを削除しないことを示します。

何らかのコンテキストが提供されることを願っています。

追加のプログラムがほとんどまたはまったくインストールされていない "barebones" Linuxインストールを探している場合、私のお気に入りは常にDebian netinstイメージのインストールです。ほとんどの場合、コマンドラインテキストコンソールをnanoテキストエディターとして実行するために必要な最も基本的なツールしかありません。


5

単一の実行可能なrootfs

Single Application Linuxで/init説明したように、絶対最小システムは単一のプログラムを実行します| スーパーユーザー

最小限のLinux Live

https://github.com/ivandavidov/minimal

より興味深いインタラクティブシステムの場合、これは次のような(ほとんど教育的な)小さなスクリプトです。

  • カーネルとbusyboxのソースをダウンロードします
  • それらをコンパイルします
  • それらで起動可能な8Mb ISOを生成します

ISOを使用すると、busyboxを備えた最小限のシェルになります。

QEMUを使用すると、システムを簡単に起動できます。

カーネルソースディレクトリから実行できるように変更しました:https : //github.com/cirosantilli/runlinux

使用法:

git clone https://github.com/ivandavidov/minimal
cd minimal/src
./build_minimal_linux_live.sh
# Wait.
# Install QEMU.
# minimal_linux_live.iso was generated
./qemu64.sh

新しい最小システムを備えたQEMUウィンドウ内に残ります。驚くばかり。

小さいので、ソースを読んで何が起こっているのかを理解するのに適したオプションです。

Ubuntu 16.04でテスト済み。

ビルドルート

https://buildroot.org/

次を管理するMakefileスクリプトの大規模なセット:

  • GCCクロスコンパイルツールチェーン
  • カーネルのコンパイル
  • ブートローダーのコンパイル
  • rootfsの生成
  • GTKのような複雑なものを含め、ソースツリーに大量のパッケージダウンロード/ビルドレシピがあります。依存関係システムがあります。

最小限の例:

git clone git://git.buildroot.net/buildroot
cd buildroot
git checkout 2016.05
make qemu_x86_defconfig
# Can't use -jN, use `BR2_JLEVEL=2` instead.
BR2_JLEVEL=2 make
# Wait.
# cat board/qemu/x86_64/readme.txt
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user
# You are now in a shell with BusyBox utilities.

X11をゼロから構築するためのレシピさえあります:自分のLinux BuildrootシステムにX11をインストールする方法は?

プロフェッショナルなもの。

Alpine Linux

https://github.com/gliderlabs/docker-alpine

Webサイトからプリコンパイルされたバイナリを提供するパッケージマネージャーを使用した組み込みディストリビューション。

こちらもご覧ください


3

Linux From Scratchの方法で手を汚す必要があるというShadurの提案を2番目に紹介したいと思います。
同様に、Pocket Linuxを試してください。

Pocket Linux Guideは、ソースコードといくつかのディスケットのみを使用して、小さなコンソールベースのGNU / Linuxシステムを構築する方法を示しています。これは、ディストリビューション固有の機能とツールの覆いの下でシステムがどのように機能するかについてより深く理解したいLinuxユーザーを対象としています。


2
重要なプロダクションタスクについて、LFSまたはPocketLinuxを推奨する人はいないことを覚えておいてください-物事がどのように機能するかを学ぶのには適していますが、ほとんどのディストリビューションにはフルセットのツールとフロントエンドが付属している理由がありますほとんどの場合。
シャドゥール

3

通常のユーザースペースツールなしでLinuxカーネルをインストールすることは可能です。これは一般に、ルーターなどの組み込みシステムで行われます。通常、カーネルはROMまたはフラッシュメモリからロードされ、問題のデバイス用にカスタマイズされています(通常、モジュールとしてロードされるのではなく、カーネルにコンパイルされた必要なドライバーを使用)。

「init」プロセスになるために、少なくとも1つのユーザー空間プログラムが存在する必要があります(必ずしも呼び出される必要はありませんinitが、プロセス1としてカーネルによって開始され、孤立プロセスの自動親)-カーネルが変更されていない場合単にカスタマイズするよりも)これを必要としません。

確かに、動作するLinuxベースのデバイスを使用するためにシェルを使用可能にする必要はありませんが、開発をはるかに簡単にすることができます!


2

多くのディストリビューションは「コア」インストールを提供します。これはあなたが望むものです。ubuntu-minimal、debian net-install、archlinux(デフォルトはコアのみ)を参照してください。

他の答えは学習したい場合に役立ちますが、そうでない場合があります= p

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.