Help us understand the problem. What is going on with this article?

初めてのカーネル再構築(コンパイルとインストール)

More than 3 years have passed since last update.

LPICの勉強も兼ねて、カーネルの再構築(コンパイルとインストール)に挑戦してみました。

事前準備

カーネルのバージョンの見方

2.6.X.Y

  • X:メジャーバージョン
  • Y:2.6.Xへの修正リリース
  • Xの後に追加記号:リリースの種類 例) 2.6.29-rc1:リリース候補 2.6.29-git1:開発版

3.X.Y

  • X:メジャーバージョン
  • Y:マイナーバージョン
  • Xの後に追加記号:リリースの種類

カーネルのバージョン確認

# uname -r
2.6.32-504.8.1.el6.x86_64
# cat /proc version
Linux version 2.6.32-504.8.1.el6.x86_64 ・・・

※ソールからコンパイルしたカーネルを利用している場合はMakefileを参照しても確認可

2.6.32が、カーネルのバージョン

カーネル再構築

最新のカーネルソースを用意

  • 下記のサイトにアクセスして、欲しいバージョンのカーネルソースをダウンロードする。
    https://www.kernel.org/

  • /usr/src配下に展開する。

# tar Jxvf linux-3.2.72.tar.xz
・・・
  • /usr/src/linuxにシンボリックリンクを貼っておく
# ln -s linux-3.2.72 linux

カーネルコンフィギュレーションの設定

カーネルの設定コマンド

  • make config

コンソール上で質問に答える形で設定する。
最近ではまず使われない

  • make menuconfig

コンソール上で、メニュー形式で表示されている項目を選択して設定していく。CUIではこれ。

  • make xconfig
  • make gconfig

X上で動く。GUIではこれ。

  • make oldconfig

カーネルの設定は .configファイルに記録されている。
バージョンアップの際に全ての項目を設定するのは大変なので、既存の設定を流用し、新しい機能だけ設定したい場合には、make oldconfigコマンドを用いる。

make menuconfigで設定

# make menuconfig

*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***

テキストユーザインタフェースを作成する為のライブラリである ncursesがインストールされていなかった為失敗。
インストール後、再度実行。(/usr/src/kernels/linux配下でコマンド実行する)

設定の詳細については、今回は省略(奥深すぎる。。。)
教科書的には、
・カーネルの機能を直接カーネルに組み込むか、
・ローダブルモジュールとするか、
・そもそも組み込まないか、
といった事を設定していくらしい。

カーネルとカーネルモジュールのコンパイル

makeコマンドをターゲット指定なしで実行すれば、カーネルとカーネルモジュールがコンパイルされる。

# make

カーネルとカーネルモジュールのインストール

#  make modules_install
# make install
…

ERROR: modinfo: could not find module rfcomm
ERROR: modinfo: could not find module sco
ERROR: modinfo: could not find module bnep
ERROR: modinfo: could not find module l2cap
ERROR: modinfo: could not find module vmware_balloon

諸々のエラーがあるが、仮想環境で実行している事に起因している…?

ブートローダの設定

設定ファイルにエントリが記述されているか確認(GRUB Legacyの場合)

# vim /boot/grub/menu.lst

インストールしたカーネルのエントリが記述されているはず。
defaultオプションを変更して、デフォルトで起動するエントリを再構築したカーネルに設定する。

リブート

リブート後、カーネルのバージョンが変わった。一応成功した模様。

# uname -r
3.2.72
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした