連載
» 2002年10月19日 00時00分 公開

Linuxで作るIPv6ネットワーク環境(1):USAGIによるカーネルのIPv6対応 (2/3)

[みやもとくにお,@IT]

USAGI対応カーネルの作成

 USAGI Projectは、「UniverSAl playGround for Ipv6 Project」の略であり、プロジェクトの成果物はhttp://www.linux-ipv6.org/で公開されています。

 USAGIのSTABLE版は、Red HatやDebianをはじめとする主要なディストリビューションに対応したパッケージが用意されていますが、スナップショット版にはそれがありません。今回使用するのはSTABLE版ですが、原稿執筆時点ではディストリビューション用のバイナリは用意されていませんでしたので、スナップショット版と同様にカーネルコンフィグレーションを行う必要があります。敷居は若干高い気もしますが、今後のことを考えると試してみる価値はあるでしょう。

 なお、今回は2002年10月7日に公開されたばかりのSTABLE Release 4を使用しています。

■USAGIのソースコードの入手

 ftp://ftp.linux-ipv6.org/pub/usagi/stable/kit/の配下に、STABLE版ソースコードのtarボールが存在します。

 筆者は、検証時点での最新版であるusagi-linux24-stable-20021007.tar.bz2を入手しました。

■アーカイブの展開とインストール

$ bzip2 -dc usagi-linux24-stable-20021007.tar.bz2 | tar xvf -
$ cd usagi

として、生成されたusagiディレクトリ下に移動すると、

$ ls
CHANGELOG.USAGI      INSTALL.USAGI RELEASE        kernel     usagi
CHANGELOG.USAGI.2001 Makefile      RELNOTES.USAGI prepare.pl
CVS                  README.USAGI  doc            src

という構造になっているのが分かります。

 INSTALL.USAGIを読むと、インストール方法が分かります。以下、実際に手順を追って行っていきます。

■コンパイルの前準備

 入手したソースコードはカーネル2.4ベースのものであるため、生成されたディレクトリに移動した後に以下のコマンドを実行します。

$ make prepare TARGET=linux24

 このコマンドを実行することで、必要なシンボリックリンクやディレクトリ構造の準備が行われます。

■カーネルの設定とコンパイル

 USAGIは、USAGI対応カーネルおよびユーザーランドアプリケーションの2種類のプログラムから構成されます。ここでは、カーネルの設定とコンパイルを実施します。

$ cd kernel/linux24
$ make mrproper
$ make menuconfig

とすると、見慣れたカーネルの設定メニューが出現します(画面1)。

画面1 menuconfigを実行 画面1 menuconfigを実行(画像をクリックすると拡大表示します)

 注意しなければならないのは、「Code maturity level options」のメニューで「Prompt for development and/or incomplete code/drivers」のチェックを有効にしておくことです。そうしないと、IPv6関係の設定がメニューに出現しません。具体的には画面1から画面2に移動し、項目をチェックします。

画面2 この項目を有効にしないとIPv6関係の設定ができない 画面2 この項目を有効にしないとIPv6関係の設定ができない(画像をクリックすると拡大表示します)

 「Networking options」におけるIPv6関係の設定(画面3および画面4)以外は、基本的に普段自分で作成するカーネルの設定を参考にすれば問題ないでしょう。

画面3 「The IPv6 protocol (EXPERIMENTAL)」を有効にして画面4へ 画面3 「The IPv6 protocol (EXPERIMENTAL)」を有効にして画面4へ(画像をクリックすると拡大表示します)
画面4 IPv6の各設定を行う(画像をクリックすると拡大表示します) 画面4 IPv6の各設定を行う(画像をクリックすると拡大表示します)

 ただし、IPSec関連の設定を行う場合は、画面5画面6のようにして、「Cryptography support (CryptoAPI)」を有効にすることに注意しましょう。デフォルトの状態では無効になっています。

画面5 IPSecを使う場合はここがポイントになる 画面5 IPSecを使う場合はここがポイントになる(画像をクリックすると拡大表示します)
画面6 暗号関係の設定(画像をクリックすると拡大表示します) 画面6 暗号関係の設定(画像をクリックすると拡大表示します)

 ここまでの設定を終えたら、設定ファイルを保存(画面7)して設定画面を終了します。

画面7 設定したら終了する(画像をクリックすると拡大表示します) 画面7 設定したら終了する(画像をクリックすると拡大表示します)

 その後は、通常のカーネルコンパイルと同様に、

$ make dep
$ make bzImage
$ make modules

を実行し、USAGI対応カーネルを作成します。

■ブート設定とリブート

 いきなりカーネルをインストールして、そのカーネルでブートしないと困ります。まだカーネルのインストールは行わず、作成したカーネルイメージファイル(bzImage)を使ってブートするかどうかをチェックしてみましょう。筆者は、検証環境ではGRUBを使用しているので、

title Usagi Stable Kernel (2.4.19)
        root (hd0,6)
        kernel /wakatono/work/usagi/usagi/kernel/linux24/arch/i386
/boot/bzImage ro root=/dev/hda5

という内容をgrub.confの最後に書き足します。grub.confの書式についてはGRUBのinfoファイルを参照いただくとして、上記の意味は、

  • 第7パーティションからブートする(root (hd0,6))
  • カーネルはパーティション内の/wakatono/work/usagi/usagi/kernel/linux24/arch/i386/boot/bzImageであり、ルートパーティションとしては/dev/hda5を使用する

となります。

 ブートしなかったときのことを考え、それまで使用していたカーネルや設定は残しておきましょう。

 設定を確認し、問題ないと思ったらOSを再起動します。

 再起動後に、ブートメッセージ(リスト1)の中で、IPv6で定義されたアドレスの種類の1つであるLink Localアドレス()を設定する旨のメッセージが確認されるなどすれば、カーネルのIPv6化は成功です。

注:ほかにはSite LocalやGlobalがあります。アドレスの有効な範囲(scope)が、同一の物理ネットワーク上/組織内/組織外の場合にそれぞれのアドレスが使用されます。


 念のため、ifconfigコマンドでネットワークインターフェイスに割り当てられたアドレスを確認します。

$ /sbin/ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:A0:24:56:97:89
          inet addr:61.197.226.213  Bcast:61.197.226.215   Mask:255.255.255.248
          inet6 addr: fe80::2a0:24ff:fe56:9789/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:226 errors:0 dropped:0 overruns:0 frame:0
          TX packets:164 errors:0 dropped:0 overruns:0 carrier:5
          collisions:5 txqueuelen:100
          RX bytes:20382 (19.9 Kb)  TX bytes:35222 (34.3 Kb)
          Interrupt:10 Base address:0xec80

 3行目に「inet6 addr:」で始まる部分がありますが、これがLink Localアドレスです。このアドレスは自動的に(ユーザーが明示的に指示しなくても)付与されます。そして、下位64bitの値はイーサネットカードの持つハードウェアアドレス(上記の場合は 00:A0:24:56:97:89)を基に生成されるので、同一ネットワークで同じアドレスが付与されるなどの理由でアドレスが衝突することはありません。

 カーネルのIPv6化が済んだら、次はユーザーランドの作成です。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。