SSブログ

カーネルをリビルドする(その1:構成変更編) [Linux(CentOS/VineLinux)]

 たとえば、ファイルシステムでxfsを使いたいとかいうケース等では、カーネルをコンパイルしなおす必要に迫られることもある。

[root@server_test1 ~]# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cpuset
nodev   binfmt_misc
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   usbfs
nodev   pipefs
nodev   futexfs
nodev   tmpfs
nodev   inotifyfs
nodev   eventpollfs
nodev   devpts
        ext2
nodev   ramfs
nodev   hugetlbfs
        iso9660
nodev   mqueue
        ext3


 通常はこんな具合(↑)で、ファイルシステムxfsはカーネルに組み込まれていないので、そのままでは使えないのである。(もちろん、xfsを使うためには追加でインストールするパッケージも必要ではある)

 カーネルのコンパイル…というととかく難しく考えがちであるが、今時のCentOSなら全く難しくないのである。

手順1:カーネルの構成を変更する(make menuconfig)
手順2:カーネルをコンパイルする(make)
手順3:カーネルモジュールのインストール(make modules_install)
手順4:カーネルのインストール(make install)
手順5:リブートして新しいカーネルを試す

 では、「xfsを使えるようにする」という目的を達成するため、カーネルのリコンパイルをしてみる。



手順1:カーネルの構成を変更する
 最初にカーネルを変更して何をしたいのかハッキリさせておく。今回は「xfsを使いたい」のである。そのために必要な構成変更を以下の通りに行う。

 カーネルのソースは /usr/src/kernels ディレクトリの下に配置されている。

[root@server_test1 kernels]# pwd
/usr/src/kernels
[root@server_test1 kernels]# ls -la
合計 51520
drwxr-xr-x  5 root root     4096 12月 25 20:46 .
drwxr-xr-x  4 root root     4096 12月 25 20:44 ..
drwxr-xr-x 18 root root     4096 12月 26 20:21 2.6.18-92.1.22.el5-i686
drwxr-xr-x 18 root root     4096 12月 25 20:05 2.6.18-92.el5-i686


 unameコマンドで、現在稼働中のカーネルバージョンを確認しておく。「uname -r」である。ちなみに今回ここで実験に使っている環境では2.6.18-92.1.22.el5なので、「2.6.18-92.1.22.el5-i686」のディレクトリの下に現在稼働中のカーネルのソースがそろっていることとなる。よって、「cd 2.6.18-92.1.22.el5-i686」しておく。

 「make menuconfig」と入力し、カーネルの構成情報を設定するメニューを表示する。なお、ここでいろんなエラーが出てメニューが表示されない場合、その多くの場合は「ncurses-devel」というパッケージがインストールされていない事が多い。よって、「yum install ncurses-devel」を実行してから、make menuconfigを実行するとすんなり起動する。

 メニューが表示されると、カーソルキーで項目を移動できるので、今回の場合は
 「File systems」を選択してEnterキーを押す。
 「XFS filesystem support」を選択してスペースキーを押す。すると「M」の文字が表示されると共に、そのすぐ下の行に「XFS Quota support」とか「XFS Security Label suppoer (NEW)」とかが表示される。おそらく、「XFS Quota support」と「XFS POSIX ACL support (NEW」くらいは有効にしておいた方が良いかもしれないので、その2つを選択してスペースキーを押し、「*」が表示された状態にしておくとよろしかろう。

 用が済んだら、カーソルキーの「→」キーを押して、画面下の方にある「Exit」を選択し、Enterキーを押し、メニュー表示を終了する。(2回同じ操作をする)
 「Do you wish to save your new kernel configuration?」と聞かれたら当然に「Yes」を選択する。



手順2:カーネルをコンパイルする

 ここは単純に、「make」と入力してEnterキー。それだけ。
 なお、神経質な人は、makeコマンドに続けて「-j」オプションで起動するスレッド数を指定しておこう。プロセッサ数の2倍のスレッド数が最適…なんだそうな。Atom330なお友達は、4プロセッサが使用できるので、「make -j8」とかすると効率的らしい。なお、「make -j」とだけ指定した場合、スレッドが延々と起動しまくって酷い目にあうので要注意。

 カーネルのコンパイルにはえらい時間がかかるものなので、じっと辛抱しる。


手順3:カーネルモジュールのインストール

 ここも単純に「make modules_install」と入力してEnterキー。そんだけ。
 コンパイルに比べればサクっと終わるはず。


手順4:カーネルのインストール

 ここも単純に「make install」と入力してEnterキー。そんだけ。


手順5:リブートして新しいカーネルを試す

 「reboot」と入力してEnter。
 日頃の行いが悪くなければ、そのまま起動してくるはず。
 なお、日頃の行いが悪くて新しい設定のカーネルが起動してこない場合は、GRUBのメニューで古いバージョンのカーネルを選択して再起動する。

 再起動したら、/proc/filesystemsを見てみる。xfsが記述してあればOK。

[root@server_test1 ~]# cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cpuset
nodev   binfmt_misc
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   usbfs
nodev   pipefs
nodev   futexfs
nodev   tmpfs
nodev   inotifyfs
nodev   eventpollfs
nodev   devpts
        ext2
nodev   ramfs
nodev   hugetlbfs
        iso9660
        xfs
nodev   mqueue
        ext3

 こんな感じにxfsが追加されたので、カーネルレベルではxfsが使えるようになった。
 コマンド類についてはパッケージを追加インストールする必要がある(かもしれない)ので、そちらはどこか他のサイトを参照するなどして解決してくれたまえ。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。