カーネルイメージとブートローダが必要なようですが、Linuxシステムを起動するために必要なものがありますか?
答え1
最も簡単な場合は、ブートローダ、カーネル、ファイルシステムのみがあります。
ブートローダは時々ファームウェアの一部です(最近のLinuxカーネルはx86でEFIによって直接ロードされる可能性があります)。また、パラメータ(Linuxの場合)を/
使用して、マウントするファイルシステムをカーネルに知らせる必要がありますroot=
。次に、コントロールをユーザースペースに転送するための最後のステップとしてinitをロードしようとします。 Linuxの場合は確認したいかもしれません。kernel_init_()
存在するinit/main.c
試すバイナリの順序です。
答え2
はい、どこにインストールするのかを知るにはシステムが必要です。ローダーはイメージとシステムバイナリを探します。 Linux From Scratchは良いドキュメントです。一度見てください。ここ。
答え3
カーネルイメージが必要で、永続的に保存されているのか、ネットワーク経由で共有されているのか、シリアル接続などで送信されているのかに関係なく、システムで使用できるようにする必要があります。そして、いくつかのコードはシステムのファームウェアであるかどうかにかかわらず、いくつかのブートローダ(また利用可能です)がカーネルをシステムメモリにロードします。
ロードおよび初期化後、カーネルは通常、init
いくつかのinitramfsまたはramdiskを介して提供される可能性のあるコマンドをロードする最初のプロセスを生成します。このプロセスのイメージはメモリにロードする必要があります(そしてinitramfsのためにカーネルによって抽出されます)。いくつかのネットワークまたは永続ストレージファイルシステムで。
通常、initramfs(存在する場合)は、実際のシステムをセットアップして切り替えるために初期起動中に一時的にのみ使用されますが、これがすべてである必要はありません。
init
システムがカーネルコードで実行したい操作を実行および実装しないようにカーネルを変更することもできます。
たとえば、単純なファイアウォール/ルーターは、すべてのルーティングとパケットフィルタリングがカーネルで行われるため、ユーザースペースプロセスを実行する必要はありませんが、実際には管理するためにいくつかのユーザースペースツールとファイルシステム(ロギングなど)が必要です。