• 締切済み

カーネルの再構築とは?

カーネルの再構築について調べています。 ネットで検索してみると色々なLinuxディストリビューションでのカーネル再構築方法が結果として出てきますが、そもそもカーネルの再構築とは一体何なのかが自分には分かりません。 デバイスに合わせてカーネルから不要なモジュールを削除する・・など部分的な動作は少し調べましたが、再構築の全体像がまだ見えません。 1:カーネル再構築とは何を行うことか。どのファイルを操作するか。 2:カーネル再構築はなぜ必要か。OSにどのような影響を及ぼすか。 以上を教えて頂けると有り難いです。よろしくお願いします。

みんなの回答

  • LPCTSTR
  • ベストアンサー率57% (4/7)
回答No.3

カーネルというのはOSの核になる部分です。 え、Linuxといってもいっぱいソフトが集まってできていますが、 ほかのプログラムを動かし管理して、キーボードの入力をプログラムに伝え、ディスプレイに実際に描画してデバイスに実際にアクセスするのがカーネルです。 /boot/vmlinuzなんかですが、 カーネルモジュールという個々のデバイスにアクセスする部品が/lib/modules/のしたや /boot/initrd.gzなんかに入っていて起動時にデバイスが発見されるとそれにあったモジュールが呼び出されます。 カーネルの再構築は、カーネルの設計図であるソースコードを手に入れそれからカーネルとカーネルモジュールを作り直すんですが、その前に設定画面でカーネルが組み込む機能をいっぱい選べるんですね。このモジュールはいらない、この機能はいる、と。 自分のコンピュータに必要な機能だけカーネル本体に組み込むと、起動が早くなる。 この機能が無いとこのソフトが動かないとか。 この新機能でマニアックなあれができるとか。(これが多いの?) とかくLinuxにはカスタマイズ文化があるので、上級者は再構築を使いこなす。 普通に使う分には、必要ないし、パソコンの仕組みがさっぱしわかんない人がすると、起動不能になるかもしれません。

  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.2

Linux kernelの基本動作の設定を変更する方法と言えます。 1については、/や/bootに置かれるカーネル本体のファイル。 またカーネルモジュールなどのファイルを変更することになります。 カーネルモジュールは、たとえばUbuntuでは "/lib/modules/2.6.24-23-generic/" といったカーネルパッケージ名に対応するディレクトリにあります。 /lib/modulesにはいくつかのディレクトリがある場合があり 導入されているカーネルによって、対応したモジュールが使われます。 ですから、カーネルの再構築では、既存のものと違う名前を与えるのが基本。 そうすることで、GRUB等が提供する、カーネル切り替え起動によって 再構築失敗による起動不能からも復旧できますし 各カーネルでの挙動の違いを検証する手間も小さくなります。 2については、たとえば… 現在ほとんどのOSは、BIOSでサポートされた機器から読み出され 起動過程で、対応したドライバーでのHDDアクセスに切り替わります。 その過程で、カーネルがHDDコントローラーのドライバーを読み出せないと システムパーティションが認識できずカーネルパニックで停止します。 これが、場合によっては、カーネル内にドライバーを組み込んだ状態に再構築すれば 正常に起動できるようになる場合があります。 SCSI全盛期には、SCSIカードのドライバー組み込みとか普通だった気がします。 また、オープンソースの利点に、カーネルにさえ、自由なカスタマイズが可能というものがあります。 WindowsやMacOSXでは同時期にリリースされるカーネルは一定ですが Linuxでは、UbuntuStudioに初期導入されるRTカーネルのように 特別な設定のカーネルを、必要に応じて作ることができます。 ただし、現在ではそれはほとんど必要のない作業となっています。 厳密なところを言うと、無用の機能を削除してしまえば 省資源的な利点があるのですが、利用頻度の低いドライバー等は カーネルモジュールとして外部に置かれていますし そういった内蔵機能と外部モジュールファイルを削除しても ストレージ消費的にも、メモリー消費的にも劇的な差は期待できません。 資源的に厳しい機器で稼働させるのであれば それに適した、ディストリビューションを選べば それぞれに適したカーネルも自動で導入できると言えます。 逆に、自分のPCへの完全な最適化を志向するなら Gentoo Linuxを選択することもできます。 これはすべてを自分でコンパイルして導入する仕組みを持ち UbuntuやFedoraが行なうような、i386やi586に最適化したパッケージ提供ではなく 「自分が使っているCore2Duoに最適化してインストールする」といったことが可能です。 わずかながら、ファイルサイズの無駄を無くし… CPU設計の違いからくる非効率な動作を無くせます。 が、そこまでを追求する必然性を感じるユーザーは少ないようです。

  • kachansa
  • ベストアンサー率44% (30/67)
回答No.1

う~ん、OSの仕事は、複数の要求を適度なタイミングで、必要なリソースを適切に割り当てること。過少過多でもいけません。 その最適解をターゲットとなるデバイスに合わせて調整するのに、再構築というかカーネルをいじることかな。 なんで、どのファイルを操作するかは、目的に沿ってとか言えないですね。

関連するQ&A