Gentoo Linux 2.6完全移行ガイド

Daniel Drake  Author
Sergey Galkin  Contributor
Sergey Kuleshov  Contributor
Xavier Neys  Editor
Benny Chuang  Editor
小林弘樹  翻訳

更新日 2008年 3月 5日

1.  はじめに

Linux 2.6で何が新しくなるの?

これは答えにくい質問です。 Linux 2.6は2年以上の急速な開発と新機能安定化の成果であり、その構造は2.4とはかなり異なっています。 主要な変更点のいくつかを以下に挙げます。

Joseph Pranevichは、ざっと読みたくなる、とても詳細なThe Wonderful World Of Linux 2.6(訳注:すばらしいLinux 2.6の世界)を書きました。 もしもっと技術的詳細に興味があるのなら、The post-halloween documentを参照することができます。 ですがこれはやや時代遅れであるということを心にとめておいてください。

Gentooと2.6

Gentoo Linuxの2005.0から、デフォルトカーネルが最新の2.6シリーズになりました。 システムのデフォルトプロファイルは/etc/make.profileにあり、2005.0以降では/usr/portage/profiles/default-linux/x86/2005.0へのシンボリックリンクとなっていて、様々な重要な設定を行っています。

2.4のプロファイルを使っているのなら、以下のようにして2.6カーネルをサポートする物に変更してください。

コード表示 1.1: プロファイルの変更

# rm -f /etc/make.profile
# ln -snf /usr/portage/profiles/default-linux/x86/2005.1 /etc/make.profile

udevって何?

従来、Gentooはユーザーに/devディレクトリを管理するためにdevfsを使うよう指示していました。 それは(カーネルを通して)システムアプリケーションがハードウェアと通信できるために一連のデバイスインタフェースを含んでいます。

devfsはよい設計思想ですが、いくらかの内在的な問題があり、そのため2.6.13からはメインのstableツリーから完全に削除されました。

udevはデバイスノードを管理する新しい方法です。 これまでのデバイスマネージャの問題に対処し、さらにそれ以外の問題も解決しようと試みています。

以上の説明では、十分な情報ではないかもしれませんが、心配する必要はありません。 精力的に開発を進めているGentoo開発者達はdevfsからの移行をとても簡単にすることに力を注いでいます。 より詳しい情報はGentoo udev Guide(日本語訳)を参照してください。

ALSAとは何ですか?

Linux 2.4では、サウンドカードを動作させるためにおそらくOSS(open sound system)ドライバを使っていたことでしょう。 OSSは、より新しくかつ良いサウンドドライバセットに置き換えられました。それがALSAです。

ALSA(拡張Linuxサウンドアーキテクチャ:Advanced Linux Sound Architecture)は、Linux 2.6カーネルが提供する、新しく改良されたAPIを使う新しいサウンドドライバセットです。 適切なカーネル設定を行うことでOSSアプリケーションとの下位互換性を実現します。

注意: もしサウンド/オーディオハードウェアを持っていないなら、このドキュメントのALSA関連の説明は飛ばしてしまって差し支えありません。

LVMとは何ですか?

論理ボリューム管理:Logical Volume Management (LVM)はディスクストレージをとても柔軟な方法で管理することができるツールのセットです。 特に、パーティションの強力な操作(再起動無しでサイズ変更など)を可能にし、デバイス交換のような操作を比較的簡単にします。 LVMは標準のパーティションベースのディスク管理の代替手段としての役割を果たします。

LVMのサポートは従来Linux 2.4で行われてきました。 Linux 2.6はLVM2と呼ばれるLVMの新しいバージョンを取り入れています。 移行過程ではユーザレベルツールの新しいバージョンをインストールすることが必要ですが(このドキュメントの後の方で取り上げます)、データは完全なまま残ります。

現在データストレージ管理にLVMを使用していなければ、LVM2への移行は必要ありません。 この場合、このドキュメントのLVM/LVM2に関する部分は無視しても問題ありません。 Linux 2.6への更新には、データをLVMパーティションへ管理することは必要ではありません。 以前からしてきたように、データを標準のパーティションフォーマットで管理することもできます。

現在LVMユーザではないけれども、LVM2は役に立ちそうだと考えるなら、Gentoo LVM2 Installation Guide(日本語訳)に従って、後でディスクをこのフォーマットへ変換することができます。 今のところは、2.6への円滑な移行作業を進行することに集中しましょう。

2.  準備

システムをアップデートする

Linux 2.6に取り込まれた変更の一部には、ベースシステムアプリケーションにも変更が必要なものがあります。 このまま続ける前に、システムを比較的最新の状態にすべきで、それを間違いなく確実にするには、最新にアップデート可能なすべてのworldパッケージとシステムパッケージを更新してください。

特に、以下のパッケージは最新の安定バージョンを使うようにしてください。

コード表示 2.1: 全てのworldパッケージを更新

# emerge --sync
# emerge -ua world

modutilsとmodule-init-toolsのどちらを使うべきか

sys-apps/modutilsは、Linux 2.4にmodprobermmod、そしてinsmodなどのツールを提供するパッケージです。

Linux 2.6では新しいモジュール形式を取り入れたため、モジュールを扱う新しいツールが必要になります。 これらはsys-apps/module-init-toolsパッケージに含まれています。

ではmodutilsを削除し、module-init-toolsをインストールしましょう。

コード表示 2.2: modutilsからmodule-init-toolsへ切り替え

# emerge --unmerge sys-apps/modutils
# emerge module-init-tools

注意: ご心配なく - modutilsをunmergeしても、module-init-toolsがLinux 2.4向けに下位互換機能を提供するので、Linux 2.4を起動してそのカーネルのモジュールを操作することもできます。

注意: 上記の理由により、すでにmodule-init-toolsがインストールされていて、既存のLinux 2.4カーネルで動作中かもしれません。 この場合、この作業に関して心配する必要はありません。 システムは既にLinux 2.6モジュールを扱う準備ができているのです。

udevのインストール

ここで必要とされる設定は何もありません。単にemergeを使ってudevをインストールします。

コード表示 2.3: udevのインストール

# emerge -a udev

udevとdevfsの違いに関するより詳細な情報はGentoo udev Guide(日本語訳)をお読みください。

必要なデバイスノードの確認

システムが起動する時、システムはいくつかの必要なデバイスノードを要求します。 udevはカーネルに組み込まれていないため、すぐには有効になりません。 これに対処するためには、必要なデバイスノードが物理的にディスク上に存在している状態にしなければなりません。

インストールstageファイルは最初のインストール中に必要なデバイスを作成します。 しかし、何人かのユーザは、そうはならないと報告しています。 この機会に必要なデバイスファイルの存在を確認して、なかったら作成しましょう。

動作中のデバイスマネージャが/devにマウントされているので、ユーザは/devに直接アクセスすることができません。 そのためrootパーティションを別の位置にbindマウントし、そこから/devディレクトリにアクセスしましょう。

コード表示 2.4: rootパーティションをbindマウントし、静的デバイスを表示

# mkdir -p /mnt/temp
# mount -o bind / /mnt/temp
# cd /mnt/temp/dev
# ls -l console null

上記のlsコマンドがconsolenullのどちらかが存在しないと返したなら、以下のようにして手動で作成しなければなりません。

コード表示 2.5: 存在しないconsoleとnullノードを作成

# mknod -m 660 console c 5 1
# mknod -m 660 null c 1 3

これらのデバイスを作成しなくても、マウントしたrootパーティションをマウント解除しましょう。

コード表示 2.6: bindマウントしたrootをマウント解除

# cd
# umount /mnt/temp
# rmdir /mnt/temp

ALSAユーティリティのインストール

ALSAは、アプリケーションがALSA APIを利用可能になるように、複数のパッケージをインストールする必要があります。 これらのパッケージでmixerとボリュームレベルを制御できるようにもなります。 以下のようにして必要なユーティリティをインストールしましょう。

コード表示 2.7: ALSAユーティリティとライブラリのインストール

# emerge -a alsa-lib alsa-utils alsa-tools alsa-headers alsa-oss

3.  Linux 2.6ソースのインストール

カーネルの選択とインストール

まず最初にするべきことは選択した2.6カーネルのソースをインストールすることです。 Gentooがサポートする2つの2.6カーネルは現在gentoo-sources(デスクトップ用)とhardened-sources(サーバ用)です。 その他の物も利用可能です。 選択肢についてはGentoo Linux Kernel Guide(日本語訳)を見てください。

このガイドでは、例としてgentoo-sourcesを利用します。 以下のようにしてemergeユーティリティを使って選択したカーネルのソースをインストールします。

コード表示 3.1: gentoo-sourcesのインストール

# emerge -a gentoo-sources
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild  NS   ] sys-kernel/gentoo-sources-2.6.10-r4

Do you want me to merge these packages? [Yes/No] y

上記emergeコマンドの実行時、2.4バージョンのgentoo-sources(gentoo-sources-2.4.26など)をインストールしようとしているなら、現在使用しているプロファイルはLinux 2.6ユーザ向けに設計されていません。 Gentoo Upgrading Document(日本語訳)に従って2.6ベースのプロファイルに変更し、2.6カーネルソースのインストールを再試行してください。

/usr/src/linuxシンボリックリンクの更新

Gentooユーティリティの様々なコンポーネントが、現在実行中の(または、コンパイルをしようと考えている)カーネルソースへのシンボリックリンクである/usr/src/linuxに依存しています。

では先ほどインストールしたカーネルを示すように/usr/src/linuxを更新しましょう。 例に続いてください。

コード表示 3.2: /usr/src/linuxソフトリンクの更新

# cd /usr/src
# ln -sfn linux-2.6.10-gentoo-r4 linux

4.  Linux 2.6移行手順での既知の落とし穴

カーネルの設定で行き詰る前に、Linux 2.6に移行する際に陥りやすいよくある間違いを詳しく説明しようと思います。 これらのポイントの中には新しいカーネルを設定する方法を左右するものがあります。

注意: 移行作業に関連することばかりではありませんが、すべてをここでまとめて説明します。 余裕のあるときに見直してもかまいません。

2.4の.configで"make oldconfig"を使ってはいけません

注意: これが何を意味するか理解できなくても、心配しないでください。 このガイドに正しく従えばこの間違いは起こさないでしょう。

2.4からは多くの変更があるので、本当にたくさんの質問を受けることでしょう。 それでも2.4のconfigでmake oldconfigをやってみる多く人は、使えないカーネル(例えばスクリーンに何も映らない、キーボードからの入力を受け付けないなど)を作成することでしょう。 トラブルを回避するために、今回だけは従来のmenuconfig設定方法を使ってください。

CD/DVDの書き込みにide-scsiを使ってはいけません

Linux 2.4では、良いCD/DVDの書き込み結果を得る唯一の方法は、(かなり醜悪な実装である)ide-scsiエミュレーションを有効にすることでした。 ありがたいことに、Linux 2.6のIDEレイヤーはCD/DVDの書き込みをもっと上手にサポートするために拡張されました。

CDの書き込みのために余計なオプションを有効にする必要はありません。 以前のようにide-scsiを有効にしないようにしてください。

PCスピーカーは今や設定可能なオプションです

新しいPCスピーカーオプション(CONFIG_INPUT_PCSPKR)を特に設定しない限りは、普通のコンソールビープ(もしくはその他の全てのPCスピーカーからの反応)を得ることはできません。

コード表示 4.1: PCスピーカーオプションの位置

Device Drivers  --->
 Input device support  --->
  [*] Misc
   <*>   PC Speaker support

注意: "PCスピーカー"とは、システム起動時に一度鳴るアナログスピーカーを言っているのであり、音楽を演奏したりするために使われる普通のサウンドハードウェアのことを言っているのではありません。

新しいUSBストレージブロックデバイスドライバは時々不安定です

ごく最近、新しいUSBストレージブロックデバイスドライバがカーネルに追加されました。 これを書いている時には、このドライバ("ub")はまだ初期段階にあり、何人かのユーザが信頼できないと指摘しています。 USBハードディスク、USBフラッシュディスク、USBカードリーダー、もしくはUSBデジタルカメラへのアクセスに問題があるなら、古いSCSIスタイルのドライバに戻してみてください。

コード表示 4.2: ubを無効にする

Device Drivers  --->
 Block devices  --->
  < > Low Performance USB Block driver

注意: 古いSCSIスタイルのドライバ(USB Mass Storage support)は初期設定では有効になっています。 それは"Device Drivers --> USB support"で見つけることができますが、ubが存在している時には動作しないでしょう。

usbdevfsはusbfsに改名されました

USBデバイスファイルシステムがマウントされるように/etc/fstabファイルを編集しているなら、ファイルシステムタイプをusbdevfsからusbfsへと変更する必要があります。

注意: 最近の2.4カーネルは"usbdevfs"と同様に"usbfs"も利用できますので、これを行うことによって互換性が失われることはありません。

Xの実行優先度を調整してはいけません

もしデスクトップ2.4ユーザなら、場合によってはデスクトップ性能が向上するよう見えるため、Xを高い優先度で実行するようにシステムをハックしているかもしれません。

2.6ではデスクトップ性能に影響する多くのスケジューラの変更がありました。 引き続きXを高い優先度で実行させる場合、そうなる(ディスプレイサーバは、とても高い優先度で実行される)ことになっているのに、あえてすることになり、CPUがXに過剰に長い時間費やされたりXだけに費やされるので、音が途切れたり、アプリケーションの起動が遅くなったりすることに気づくでしょう。

Linux 2.6では、もはや応答性をよくするためにデスクトップアプリケーションの優先度を調整する必要はありません。 "優先度調整"ハックをやめてください!

X11設定ファイルはこれからPS/2とUSBマウス用に/dev/input/miceを使います

初期設定でのudev設定による変更の一つに、マウスデバイスノードの構成の違いがあります。 以前は、/dev/psaux/dev/mouseといったノードを使っていたでしょう。 これからは/dev/input/mouse0/dev/input/mouse1、そして全てのマウスの動作を混合する集合/dev/input/miceといったノードを使います。

古いXの設定は一般的に/dev/mouse/dev/psauxを参照しているので、X11を起動しようとした時に以下のようなエラーが表示されるかもしれません。

コード表示 4.3: udevシステムでXを初めて起動した時に起きる一般的なエラー

(EE) xf86OpenSerial: Cannot open device /dev/mouse
	No such file or directory.
(EE) Mouse0: cannot open input device
(EE) PreInit failed for input device "Mouse0"
No core pointer

これを訂正するには、X11設定をテキストエディタで開き、マウスのInputDeviceセクションで/dev/input/miceを使うように更新してください。 以下がその例です。

コード表示 4.4: X11設定ファイルを開く

# nano -w /etc/X11/xorg.conf

注意: まだXFree86を使っているなら、設定ファイルは/etc/X11/XF86Configです。

コード表示 4.5: マウスのInputDeviceセクションの例

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option      "Protocol" "auto"
	Option      "Device" "/dev/input/mice"
EndSection

注意: もしシリアルマウスを使っているのなら、新しいデバイスパスは/dev/ttyS0の代わりに/dev/tts/0になります。

シリアルATA(SATA)ドライバの新版はデバイスに異なった名前を付けます

Linux 2.4環境で初版のシリアルATAドライバを使っていたなら、シリアルATAデバイスが/dev/hdeといった名前になっていることに気が付くでしょう。

Linux 2.6は、SCSIサブシステムを基にしたシリアルATAドライバの新版(libata)を導入しています。 これらのドライバはSCSIを基にしているため、シリアルATAディスクはSCSIデバイスとして表示されます。 最初のシリアルATAディスクは/dev/sdaという名前になります。 これを反映するように/etc/fstabを更新する必要がありますし、後ほどカーネルブートパラメータのroot/real_rootを選ぶ際に気にとめておく必要があります。

注意: libataはLinux 2.4の最近のバージョンに移植されたので、すでに新しいデバイス命名規則に馴染みがあるかもしれません。

bootsplashはもはや維持されていません

gentoo-sources-2.4カーネルを使っていたのなら、カラフルなフレームバッファコンソールのためにbootsplash機能を使っていたかもしれません。

bootsplashの開発者は、設計上の問題によりプロジェクトに興味を無くしたようです。 しかし、Gentoo開発者のMichał Januszewskiは、後継となるgensplashを開発中で、これはgentoo-sources-2.6カーネルに含まれています。 どのようにしてgensplashを動作させるのかについて習熟するためにMichałの Gensplash in 5 easy stepsドキュメントを読むことができます。

I2Cドライバはカーネルに含まれます

システム温度と電力レベルを監視するためにlm-sensorsを使っているなら、以前はハードウェアサポートを得るためにi2cパッケージをインストールする必要がありました。

I2Cハードウェアドライバは現在Linux 2.6カーネルに含まれており、外部のi2cパッケージは要求されません。 忘れずにカーネル設定で希望するI2Cデバイスのサポートをコンパイルするようにしてください。 そうすればいつも通りにlm-sensorsを使用することができます。

5.  カーネルの設定、ビルド、インストール

Linux 2.4と同様に、新規カーネルビルドを行うための2つの方法があります。

  1. 一般的な方法は手動でカーネルを設定することです。 大変だと感じるかもしれませんが、自分のシステム構成が分かっているのであれば好ましい方法です。 手動でカーネルを設定しようと思うなら、次の章へと進んでください。
  2. もう一つの方法はカーネルを自動的に設定、コンパイル、そしてインストールまで行ってくれるgenkernelユーティリティを使うことです。 genkernelを使おうと思うなら、次の章は飛ばしてgenkernelを使うまで進んでください。

6.  一般的な方法: 手動設定

カーネルの設定

ではカーネルを設定しましょう。いつもの通りmenuconfigを開きます。

コード表示 6.1: menuconfigの起動

# cd /usr/src/linux
# make menuconfig

おそらく2.4カーネルを設定するのでmenuconfigを使うことに慣れているかもしれません。 幸運にも、操作性はほとんど変わっていません。ですが、カーネルオプションがより体系化され、それに加え2.4にはなかったたくさんの新しいオプションが追加されたことに気付くでしょう。

以下の重要なカーネルオプションを有効にしてください。

コード表示 6.2: 必要なカーネルオプション

File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)
    
(以下はudevに必要です)
General setup  --->
 [*] Support for hot-pluggable devices

(以下はALSAに必要です)
Device Drivers  --->
 Sound  --->
  <*> Sound card support
  Advanced Linux Sound Architecture  --->
   <M> Advanced Linux Sound Architecture
   <M> Sequencer support
   <M> OSS Mixer API
   [*] OSS Sequencer API
   (そしてサブメニューからあなたのサウンドカードを忘れずに選んでください)

(以下はLVMを使ったディスク管理に必要です)
Device Drivers  --->
 Multi-device support (RAID and LVM)  --->
  [*] Multiple devices driver support (RAID and LVM)
   <*>   Device mapper support

警告: 以前は/devファイルシステムのサポートを含めていたかもしれません。(今はOBSOLETE(古い方式)の印が付いています。) devfsを有効にしてはいけません。今後devfsに代わって使用する、udevパッケージをインストールしました。

更に、利用するファイルシステムと、システムに存在するハードウェアのサポートを忘れずに有効にしてください。 高速DMAディスクアクセスによる恩恵を受けたいなら、マザーボードのIDEコントローラーサポートを有効にしてください。 詳細な内容はGentoo Handbook(日本語訳)Configuring the Kernel(日本語訳)セクションを参照してください。

カーネルのビルド

カーネルの設定を行ったので、コンパイル処理を始めることができます。

コード表示 6.3: カーネルソースのコンパイル

# make && make modules_install

注意: Linux 2.4ソースではmake depを実行しなければならなかったことを思い出すかもしれません。 これはもはや必要とされていません。

カーネルのコンパイルが完了するまで(読みやすくなったコンパイル出力を眺めながら)待っていてください。

カーネルのインストール

次のステップでは/bootパーティションをマウントしてカーネルイメージを上書きします。 その後ブートローダの設定を手動で更新しなければなりません。

コード表示 6.4: カーネルのインストール

# mount /boot
# cp arch/i386/boot/bzImage /boot/bzImage-2.6.10-gentoo-r4

上記の説明は例に過ぎず、Gentoo Handbook(日本語訳)(Configuring the Kernel(日本語訳)の章を見てください)の説明に従った更新手続きを行うべきです。

ブートローダの設定を変更するときは、2.4カーネルを指す古い記述を削除してはいけません。 こうすることで、どちらかが動作しなかった場合に、両者を簡単に切り替えられるでしょう。

ではモジュールの設定章へ進んでください。

7.  もう一つの方法: genkernelを使う

もしカーネルを手動設定する代わりにgenkernelを使いたいなら、嬉しい知らせがあります。 genkernelを使って2.6カーネルを作成する方法は、以前の2.4カーネルとほとんど同じです。

以下のようにしてgenkernelを呼び出します。

コード表示 7.1: 一般的な引数でgenkernelを呼び出す

# genkernel --udev --menuconfig --bootloader=grub all

上の例では、(望むなら)カーネルの設定を調整できるようにするためにmenuconfigを開き、コンパイル後にgrubブートローダの設定を更新するgenkernelの機能も利用します。

あなたに合ったgenkernel引数を選ぶべきですが、--udev引数を含めることを忘れないでください。 追加の情報はGentoo Linux Genkernel Guide(日本語訳)Gentoo Handbook(日本語訳)Configuring the Kernel(日本語訳)の章を参照してください。

ブートローダの設定を自分で設定することをにしたのなら、忘れずにudevカーネルパラメータを書いてください。 以下にgrubの設定例を示しますが、忘れずにreal_rootパラメータをシステムに合わせてください。

コード表示 7.2: genkernel + udev用のGRUB設定例

title Gentoo Linux (2.6 kernel)
root (hd0,0)
kernel /kernel-2.6.10-gentoo-r4 udev root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3
initrd /initrd-2.6.10-gentoo-r4

8.  モジュールの設定

外部モジュールのインストール

多くのユーザはカーネルツリー外でビルドされたカーネルモジュールにさらに依存しています。 よくある例ではATIもしくはNvidiaのバイナリグラフィックドライバです。 /usr/src/linuxにある2.6ソース向けにコンパイルしたモジュールをインストールする必要があります。 これは2.4で使い慣れている全ての外部モジュールをインストールするためにemerge パッケージ名を使うよくある状況です。

詳しい情報はGentoo Handbook(日本語訳)Configuring the Kernel(日本語訳)の章を参照してください

自動的に読み込まれるモジュール

いくつかのカーネルコンポーネントを(カーネル組み込みではなく)モジュールとしてコンパイルするようにしたかもしれません。そして、それらモジュールが、2.4でしたように起動時に自動的に読み込まれて欲しいでしょう。 また、外部モジュールをportageツリーからインストールした(上で記述したように)ならそれらも自動的に読み込まれて欲しいと思うかもしれません。

2.4でした方法と同じようにすることで達成できます。 単に/etc/modules.autoload.d/kernel-2.6をテキストエディタで開いて自動的に読み込まれて欲しいモジュールの名前を記述するだけです。

コード表示 8.1: nanoで自動的に読み込まれるモジュールの一覧を開く

# nano -w /etc/modules.autoload.d/kernel-2.6

コード表示 8.2: 3c59xとnvidiaモジュールを自動的に読み込む例

# /etc/modules.autoload.d/kernel-2.6:  kernel modules to load when system boots.
#
# Note that this file is for 2.6 kernels.
#
# Add the names of modules that you'd like to load when the system
# starts into this file, one per line.  Comments begin with # and
# are ignored.  Read man modules.autoload for additional details.

3c59x
nvidia

9.  LVMからLVM2への移行

LVM2ツールへの更新

注意: ディスクの管理にLVMを使用していなければ、この章を飛ばして次へ進んでも構いません。

幸運なことに、LVM1ユーザツールからLVM2バージョンへの更新はとても簡単です。

コード表示 9.1: ユーザツールをLVM1からLVM2へと更新

# emerge --unmerge lvm-user
# emerge lvm2

注意: lvm-user自体では2.4カーネルに対応していないので、もし、2.4カーネルが起動するように戻すことを考えているならば、lvm-userを再度emergeする必要があります。

10.  Linux 2.6を起動

さぁLinux 2.6を起動させましょう。全てのアプリケーションを終了して以下のように再起動してください。

コード表示 10.1: 再起動

# umount /boot
# reboot

ここまでこのドキュメントに従ってきたなら、再起動時に、ブートローダによるLinux 2.4かLinux 2.6のどちらを起動するかの選択肢があります。 Linux 2.6を選択します。

いったんシステムが起動したら、動作しているか確認してください。 カーネル設定でミスをしたのなら、ご心配なく、カーネルの設定、ビルド、インストールの章まで戻って、変更を加え、再コンパイルし、新しいカーネルイメージをインストールして、再起動、そしてその後再度試してみてください。

ALSAの設定とミュート解除

ではALSAの設定を仕上げて、オーディオチャンネルのミュート解除をしましょう。 ALSAパッケージはこの工程を比較的簡単にする便利なユーティリティを提供します。

コード表示 10.2: 自動ALSA設定ユーティリティの呼び出し

# alsaconf

この処理は簡単です。 /etc/modules.d/alsaファイルを自動更新できるようにし、その後ALSAに再読み込みさせます。 alsaconfはその後終了しますが、システムに複数のサウンドデバイスがインストールされている場合にはその数分だけ実行する必要があります。

ボリュームが終了時に保存され起動時に復元されるように、ここでalsasoundをbootランレベルに追加してください。

コード表示 10.3: alsasoundをbootランレベルに追加

# rc-update add alsasound boot

注意: alsaconfユーティリティはサウンドデバイスの最初のボリュームレベルを設定します。 なにか不適当な設定があれば、alsamixerユーティリティを使うことでいつでも修正できます。

もう何か問題が発生してますか?

もし発生しているなら、移行後すぐに直面する問題を解決するのに参考になるLinux 2.6移行手順での既知の落とし穴をこの時点で読み返してください。

11.  ヘッダファイルとNPTL

既にLinux 2.6を稼動させて、すべての問題を解決してしまっていることでしょう。 ではユーザースペースアプリケーションが新しいLinux 2.6の機能を利用するように、Linuxカーネルヘッダファイルとglibcの再マージをしましょう。

コード表示 11.1: linux-headersの更新

# emerge -u linux-headers

ヘッダパッケージを更新した後は、通常はglibcを再マージするべきです。 興味を持つと思われる新機能の一つにNPTLがあります。 NPTLとは、より高速なスレッドの作成と消去を特色とする、Linux 2.6で提供される新しいスレッドモデルです。 ほとんどのシステムで大した違いはありませんが、移行作業中の今のうちに有効にしたいと思うでしょう。 NPTLを有効にするには、/etc/make.confを編集し、USE変数にnptlを追加します。

警告: "nptlonly"フラグも有効にしたいのなら、今後2.4カーネルを起動することはできなくなることに気をつけてください。

ではglibcを再マージしましょう(NPTLを有効にしないことにしたとしても、これはするべきです)。

コード表示 11.2: 新しいカーネルヘッダ向けにglibcを再インストール

# emerge -a glibc

NPTLを有効にしても、今あるバイナリは再コンパイルされるまではNPTLを使いません。 ですが、NPTL対応した後にコンパイルされたバイナリはNPTLを使うようになります。 今すぐ、全てのバイナリを再コンパイルしたいならば、例えば以下のようにします。

コード表示 11.3: システムの全てのパッケージを再コンパイル

# emerge -e world

もう一つの選択肢として、パッケージの新しいバージョンがリリースされたときに、それに更新するにつれて、システムを"自然に"NPTL対応にすることもできます。

12.  備考

何か問題はありますか?

これまでのびっくりするほどの量のLinux 2.6への移行作業で、以前はうまく動作していたものが期待した通りに機能しないことがときどきあるのは、仕方のないことです。

2.6カーネルについて何か問題があり、そしてその問題がLinux 2.4では起こらないと確認したなら、Bugzillaでバグを報告してください。 私たちがその報告を調査し、オリジナルのカーネルの問題であることがわかったら、本家カーネルのbugzillaへレポートを提出するようお願いするかもしれません。

締めくくり

きっと移行がスムーズに完了し、2.4を超えるLinux 2.6がもたらす恩恵を享受していることでしょう。

このドキュメントがまだ未完成の時に有効に「テスト済み」としてくれたり、以降作業がどのように行われたかについてフィードバックを送信してくれた多くのユーザにお礼を言えてとても嬉しいです。 全てのメールに返信できず申し訳なく思っています(とてもたくさんありました!)が、それら全てを一つずつ読み、このドキュメントをより洗練された物にしました。 2.6に強化されたシステムをお楽しみください :)

Linux 2.4をシステムから削除する

しばらくの間2.6を運用していると、もはやLinux 2.4を使う必要がないと思うかもしれません。 システムを整理する手順を以下に示します。 今後2.4を確実に使いたくない、必要としない場合のみこのセクションの手順に従ってください。

2.4カーネルソースコードはいつものようにemergeユーティリティを使うことで削除することができます。 例えば、vanilla-sourcesとgentoo-sourcesの2.4バージョンをインストールしているとして、2.6バージョンはそのままにしておきながら、2.4バージョンを削除するために、以下のコマンドを使用します。

コード表示 12.1: 例: Linux 2.4ソースを削除

# emerge --unmerge =vanilla-sources-2.4.* =gentoo-sources-2.4.*

Portageはインストールした2.4カーネルソースを完全には削除しません。 なぜなら、コンパイル中に一時ファイルが作成されたからです。 以下のコマンドでこれらの残骸を削除しても差し支え有りません。

コード表示 12.2: 残った一時ファイルを削除

# rm -rf /usr/src/linux-2.4.*

さらに、2.4カーネルのインストールに関係するモジュールと情報ファイルはもはや必要ないので、削除することができます。

コード表示 12.3: 以前にインストールした2.4モジュールの削除

# rm -rf /lib/modules/2.4.*

起動に使用していた2.4カーネルバイナリも安全に削除することができます。 /bootパーティションをマウントし、カーネルイメージを削除してください。 これらの削除されるカーネルイメージを参照しないようにブートローダの設定も更新するべきです。

一部のLinux 2.4ユーザは、Linux 2.6が持つ新しいオーディオ能力から恩恵を受けるために、既にalsa-driverパッケージをインストールしているかもしれません。 もしあなたがそのユーザの中の一人で、かつこのドキュメントのはじめにある2.6カーネルソースでのALSA構築(alsa-driverパッケージを使わない)のアドバイスにしたがったなら、今後起こりうる衝突をさけるためにalsa-driverを削除しても問題ありません。

さらに、lm-sensorsユーザはハードウェアドライバを提供するためにi2cパッケージを使用していたでしょう。 既に述べたように、I2Cドライバは現在カーネルに組み込まれているので、今後起こりうる衝突を避けるためにlm-sensorsパッケージも削除してよいです。

devfs管理デーモンであるdevfsdもまた削除しても構いません。 これからはデバイス管理にudevを使用します。

コード表示 12.4: alsa-driver、i2c、devfsdの削除

# emerge --unmerge alsa-driver i2c devfsd

LVM2ユーザであれば、LVM2が備える利点の恩恵を得るために、LVM2データ形式にデータを変換したいでしょう。 しかし、この作業を行うと2.4カーネルからはLVMデータへアクセスできなくなります。 引き続き変換作業をしたいなら(これは完全に自由選択です!)、それを行う方法はvgconvertのマニュアルページを調べてください。 例を以下に示します。mainはボリュームグループ名です。

コード表示 12.5: LVM1ボリュームをLVM2形式に変換

# vgconvert -M2 main