LPIC-2 深堀りシリーズ第四弾:ブートローダとカーネルのビルド入門(OSC2021 Online/Nagoya) を閲覧した

LPIC-2 深堀りシリーズ第四弾:ブートローダとカーネルのビルド入門(OSC2021 Online/Nagoya) – 岡田賢治 氏を閲覧した。その時のメモ。

カーネルとは

カーネルの役割は、ハードウェアを管理する。プログラムへ利用権を分配すること。
つまり貧弱なカーネルは、複数プログラムが同じリソースにアクセスすると落ちたりする。

Linuxカーネルとは

1991年ころminix(Unixの派生)のソースコードが公開されなかったため、Linusさんが自分で作成したことがLinuxカーネルの始まり。
AndroidもLinuxカーネルであり、最近ではスマホ、タブレットメーカーが自社ハードウェアに対応したプログラムをLinuxカーネルにコミットすることが多い。

カーネルのビルド

カーネルのソースコードは機能ごとに分割されており、必要、不要を選択できる。
カーネルビルドは必要な機能を持つカーネルを作成するために必要。(それによってメモリが節約できる)

しかし最近は以下の理由からカーネルビルドすることは少ない。
・ディストリビューションがビルド済みカーネルを配布している。
・メモリ節約はKBレベルであり、大容量メモリが安価になったことでコストメリットがなくなってきた。
・機能を動的に有効/無効できるようになった。

ブートローダー

BIOSなどが最初に動作させるプログラムがブートローダー。
ブートローダーはカーネルをロードして、マウントのために必要なドライバ・コマンドを含んだファイルシステム(initramfs)を用意する。
そこからカーネルは、rootファイルシステムを見つけてマウントする。