Gentoo Linux 2.6完全移行ガイド
1.
はじめに
Linux 2.6で何が新しくなるの?
これは答えにくい質問です。
Linux 2.6は2年以上の急速な開発と新機能安定化の成果であり、その構造は2.4とはかなり異なっています。
主要な変更点のいくつかを以下に挙げます。
-
スケジューラ/即応性の改良: Linuxはデスクトップシステムにおいてとてもスムーズで、高負荷時に2.4に比べて非常にうまく対処します
-
スケーラビリティ: Linuxは、いまや(小さな埋め込みデバイスから大規模マルチプロセッサシステムまで)非常に守備範囲が広くなりました
- パフォーマンス: 一般的なアプリケーションからのスループットがより改良されました
-
ハードウェアサポート: Linuxは、いまや他のどのOSよりもたくさんのアーキテクチャやハードウェアデバイスを、複雑な設定を必要とせずにサポートします
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カーネルをサポートする物に変更してください。
Code Listing 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アプリケーションとの下位互換性を実現します。
Note:
もしサウンド/オーディオハードウェアを持っていないなら、このドキュメントの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パッケージとシステムパッケージを更新してください。
特に、以下のパッケージは最新の安定バージョンを使うようにしてください。
- sys-apps/baselayout
- sys-apps/util-linux
-
sys-kernel/genkernel (手動設定ではなくgenkernelを使いたい時のみ)
Code Listing 2.1: 全てのworldパッケージを更新 |
# emerge --sync
# emerge -ua world
|
modutilsとmodule-init-toolsのどちらを使うべきか
sys-apps/modutilsは、Linux 2.4にmodprobe、rmmod、そしてinsmodなどのツールを提供するパッケージです。
Linux 2.6では新しいモジュール形式を取り入れたため、モジュールを扱う新しいツールが必要になります。
これらはsys-apps/module-init-toolsパッケージに含まれています。
ではmodutilsを削除し、module-init-toolsをインストールしましょう。
Code Listing 2.2: modutilsからmodule-init-toolsへ切り替え |
# emerge --unmerge sys-apps/modutils
# emerge module-init-tools
|
Note:
ご心配なく - modutilsをunmergeしても、module-init-toolsがLinux 2.4向けに下位互換機能を提供するので、Linux 2.4を起動してそのカーネルのモジュールを操作することもできます。
|
Note:
上記の理由により、すでにmodule-init-toolsがインストールされていて、既存のLinux 2.4カーネルで動作中かもしれません。
この場合、この作業に関して心配する必要はありません。
システムは既にLinux 2.6モジュールを扱う準備ができているのです。
|
udevのインストール
ここで必要とされる設定は何もありません。単にemergeを使ってudevをインストールします。
Code Listing 2.3: udevのインストール |
# emerge -a udev
|
udevとdevfsの違いに関するより詳細な情報はGentoo udev Guide(日本語訳)をお読みください。
必要なデバイスノードの確認
システムが起動する時、システムはいくつかの必要なデバイスノードを要求します。
udevはカーネルに組み込まれていないため、すぐには有効になりません。
これに対処するためには、必要なデバイスノードが物理的にディスク上に存在している状態にしなければなりません。
インストールstageファイルは最初のインストール中に必要なデバイスを作成します。
しかし、何人かのユーザは、そうはならないと報告しています。
この機会に必要なデバイスファイルの存在を確認して、なかったら作成しましょう。
動作中のデバイスマネージャが/devにマウントされているので、ユーザは/devに直接アクセスすることができません。
そのためrootパーティションを別の位置にbindマウントし、そこから/devディレクトリにアクセスしましょう。
Code Listing 2.4: rootパーティションをbindマウントし、静的デバイスを表示 |
# mkdir -p /mnt/temp
# mount -o bind / /mnt/temp
# cd /mnt/temp/dev
# ls -l console null
|
上記のlsコマンドがconsoleかnullのどちらかが存在しないと返したなら、以下のようにして手動で作成しなければなりません。
Code Listing 2.5: 存在しないconsoleとnullノードを作成 |
# mknod -m 660 console c 5 1
# mknod -m 660 null c 1 3
|
これらのデバイスを作成しなくても、マウントしたrootパーティションをマウント解除しましょう。
Code Listing 2.6: bindマウントしたrootをマウント解除 |
# cd
# umount /mnt/temp
# rmdir /mnt/temp
|
ALSAユーティリティのインストール
ALSAは、アプリケーションがALSA APIを利用可能になるように、複数のパッケージをインストールする必要があります。
これらのパッケージでmixerとボリュームレベルを制御できるようにもなります。
以下のようにして必要なユーティリティをインストールしましょう。
Code Listing 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ユーティリティを使って選択したカーネルのソースをインストールします。
Code Listing 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を更新しましょう。
例に続いてください。
Code Listing 3.2: /usr/src/linuxソフトリンクの更新 |
# cd /usr/src
# ln -sfn linux-2.6.10-gentoo-r4 linux
|
4.
Linux 2.6移行手順での既知の落とし穴
カーネルの設定で行き詰る前に、Linux 2.6に移行する際に陥りやすいよくある間違いを詳しく説明しようと思います。
これらのポイントの中には新しいカーネルを設定する方法を左右するものがあります。
Note:
移行作業に関連することばかりではありませんが、すべてをここでまとめて説明します。
余裕のあるときに見直してもかまいません。
|
2.4の.configで"make oldconfig"を使ってはいけません
Note:
これが何を意味するか理解できなくても、心配しないでください。
このガイドに正しく従えばこの間違いは起こさないでしょう。
|
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スピーカーからの反応)を得ることはできません。
Code Listing 4.1: PCスピーカーオプションの位置 |
Device Drivers --->
Input device support --->
[*] Misc
<*> PC Speaker support
|
Note:
"PCスピーカー"とは、システム起動時に一度鳴るアナログスピーカーを言っているのであり、音楽を演奏したりするために使われる普通のサウンドハードウェアのことを言っているのではありません。
|
新しいUSBストレージブロックデバイスドライバは時々不安定です
ごく最近、新しいUSBストレージブロックデバイスドライバがカーネルに追加されました。
これを書いている時には、このドライバ("ub")はまだ初期段階にあり、何人かのユーザが信頼できないと指摘しています。
USBハードディスク、USBフラッシュディスク、USBカードリーダー、もしくはUSBデジタルカメラへのアクセスに問題があるなら、古いSCSIスタイルのドライバに戻してみてください。
Code Listing 4.2: ubを無効にする |
Device Drivers --->
Block devices --->
< > Low Performance USB Block driver
|
Note:
古いSCSIスタイルのドライバ(USB Mass Storage support)は初期設定では有効になっています。
それは"Device Drivers --> USB support"で見つけることができますが、ubが存在している時には動作しないでしょう。
|
usbdevfsはusbfsに改名されました
USBデバイスファイルシステムがマウントされるように/etc/fstabファイルを編集しているなら、ファイルシステムタイプをusbdevfsからusbfsへと変更する必要があります。
Note:
最近の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を起動しようとした時に以下のようなエラーが表示されるかもしれません。
Code Listing 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を使うように更新してください。
以下がその例です。
Code Listing 4.4: X11設定ファイルを開く |
# nano -w /etc/X11/xorg.conf
|
Note:
まだXFree86を使っているなら、設定ファイルは/etc/X11/XF86Configです。
|
Code Listing 4.5: マウスのInputDeviceセクションの例 |
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
EndSection
|
Note:
もしシリアルマウスを使っているのなら、新しいデバイスパスは/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を選ぶ際に気にとめておく必要があります。
Note:
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つの方法があります。
-
一般的な方法は手動でカーネルを設定することです。
大変だと感じるかもしれませんが、自分のシステム構成が分かっているのであれば好ましい方法です。
手動でカーネルを設定しようと思うなら、次の章へと進んでください。
-
もう一つの方法はカーネルを自動的に設定、コンパイル、そしてインストールまで行ってくれるgenkernelユーティリティを使うことです。
genkernelを使おうと思うなら、次の章は飛ばしてgenkernelを使うまで進んでください。
6.
一般的な方法: 手動設定
カーネルの設定
ではカーネルを設定しましょう。いつもの通りmenuconfigを開きます。
Code Listing 6.1: menuconfigの起動 |
# cd /usr/src/linux
# make menuconfig
|
おそらく2.4カーネルを設定するのでmenuconfigを使うことに慣れているかもしれません。
幸運にも、操作性はほとんど変わっていません。ですが、カーネルオプションがより体系化され、それに加え2.4にはなかったたくさんの新しいオプションが追加されたことに気付くでしょう。
以下の重要なカーネルオプションを有効にしてください。
Code Listing 6.2: 必要なカーネルオプション |
File systems --->
Pseudo Filesystems --->
[*] /proc file system support
[*] Virtual memory file system support (former shm fs)
General setup --->
[*] Support for hot-pluggable devices
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
Device Drivers --->
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
<*> Device mapper support
|
Warning:
以前は/devファイルシステムのサポートを含めていたかもしれません。(今はOBSOLETE(古い方式)の印が付いています。)
devfsを有効にしてはいけません。今後devfsに代わって使用する、udevパッケージをインストールしました。
|
更に、利用するファイルシステムと、システムに存在するハードウェアのサポートを忘れずに有効にしてください。
高速DMAディスクアクセスによる恩恵を受けたいなら、マザーボードのIDEコントローラーサポートを有効にしてください。
詳細な内容はGentoo Handbook(日本語訳)のConfiguring the Kernel(日本語訳)セクションを参照してください。
カーネルのビルド
カーネルの設定を行ったので、コンパイル処理を始めることができます。
Code Listing 6.3: カーネルソースのコンパイル |
# make && make modules_install
|
Note:
Linux 2.4ソースではmake depを実行しなければならなかったことを思い出すかもしれません。
これはもはや必要とされていません。
|
カーネルのコンパイルが完了するまで(読みやすくなったコンパイル出力を眺めながら)待っていてください。
カーネルのインストール
次のステップでは/bootパーティションをマウントしてカーネルイメージを上書きします。
その後ブートローダの設定を手動で更新しなければなりません。
Code Listing 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を呼び出します。
Code Listing 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パラメータをシステムに合わせてください。
Code Listing 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をテキストエディタで開いて自動的に読み込まれて欲しいモジュールの名前を記述するだけです。
Code Listing 8.1: nanoで自動的に読み込まれるモジュールの一覧を開く |
# nano -w /etc/modules.autoload.d/kernel-2.6
|
Code Listing 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ツールへの更新
Note:
ディスクの管理にLVMを使用していなければ、この章を飛ばして次へ進んでも構いません。
|
幸運なことに、LVM1ユーザツールからLVM2バージョンへの更新はとても簡単です。
Code Listing 9.1: ユーザツールをLVM1からLVM2へと更新 |
# emerge --unmerge lvm-user
# emerge lvm2
|
Note:
LVM2ツールにはLVM1との完全な下位互換性があります。
ディスク上のデータには一切触れません。
これを行うことによって、下位互換性が損なわれることはまったくないので、2.4をいつものように起動することができます。
|
10.
Linux 2.6を起動
さぁLinux 2.6を起動させましょう。全てのアプリケーションを終了して以下のように再起動してください。
Code Listing 10.1: 再起動 |
# umount /boot
# reboot
|
ここまでこのドキュメントに従ってきたなら、再起動時に、ブートローダによるLinux 2.4かLinux 2.6のどちらを起動するかの選択肢があります。
Linux 2.6を選択します。
いったんシステムが起動したら、動作しているか確認してください。
カーネル設定でミスをしたのなら、ご心配なく、カーネルの設定、ビルド、インストールの章まで戻って、変更を加え、再コンパイルし、新しいカーネルイメージをインストールして、再起動、そしてその後再度試してみてください。
ALSAの設定とミュート解除
ではALSAの設定を仕上げて、オーディオチャンネルのミュート解除をしましょう。
ALSAパッケージはこの工程を比較的簡単にする便利なユーティリティを提供します。
Code Listing 10.2: 自動ALSA設定ユーティリティの呼び出し |
# alsaconf
|
この処理は簡単です。
/etc/modules.d/alsaファイルを自動更新できるようにし、その後ALSAに再読み込みさせます。
alsaconfはその後終了しますが、システムに複数のサウンドデバイスがインストールされている場合にはその数分だけ実行する必要があります。
ボリュームが終了時に保存され起動時に復元されるように、ここでalsasoundをbootランレベルに追加してください。
Code Listing 10.3: alsasoundをbootランレベルに追加 |
# rc-update add alsasound boot
|
Note:
alsaconfユーティリティはサウンドデバイスの最初のボリュームレベルを設定します。
なにか不適当な設定があれば、alsamixerユーティリティを使うことでいつでも修正できます。
|
もう何か問題が発生してますか?
もし発生しているなら、移行後すぐに直面する問題を解決するのに参考になるLinux 2.6移行手順での既知の落とし穴をこの時点で読み返してください。
11.
ヘッダファイルとNPTL
既にLinux 2.6を稼動させて、すべての問題を解決してしまっていることでしょう。
ではユーザースペースアプリケーションが新しいLinux 2.6の機能を利用するように、Linuxカーネルヘッダファイルとglibcの再マージをしましょう。
Code Listing 11.1: linux-headersの更新 |
# emerge -u linux-headers
|
ヘッダパッケージを更新した後は、通常はglibcを再マージするべきです。
興味を持つと思われる新機能の一つにNPTLがあります。
NPTLとは、より高速なスレッドの作成と消去を特色とする、Linux 2.6で提供される新しいスレッドモデルです。
ほとんどのシステムで大した違いはありませんが、移行作業中の今のうちに有効にしたいと思うでしょう。
NPTLを有効にするには、/etc/make.confを編集し、USE変数にnptlを追加します。
Warning:
"nptlonly"フラグも有効にしたいのなら、今後2.4カーネルを起動することはできなくなることに気をつけてください。
|
ではglibcを再マージしましょう(NPTLを有効にしないことにしたとしても、これはするべきです)。
Code Listing 11.2: 新しいカーネルヘッダ向けにglibcを再インストール |
# emerge -a glibc
|
NPTLを有効にしても、今あるバイナリは再コンパイルされるまではNPTLを使いません。
ですが、NPTL対応した後にコンパイルされたバイナリはNPTLを使うようになります。
今すぐ、全てのバイナリを再コンパイルしたいならば、例えば以下のようにします。
Code Listing 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バージョンを削除するために、以下のコマンドを使用します。
Code Listing 12.1: 例: Linux 2.4ソースを削除 |
# emerge --unmerge =vanilla-sources-2.4.* =gentoo-sources-2.4.*
|
Portageはインストールした2.4カーネルソースを完全には削除しません。
なぜなら、コンパイル中に一時ファイルが作成されたからです。
以下のコマンドでこれらの残骸を削除しても差し支え有りません。
Code Listing 12.2: 残った一時ファイルを削除 |
# rm -rf /usr/src/linux-2.4.*
|
さらに、2.4カーネルのインストールに関係するモジュールと情報ファイルはもはや必要ないので、削除することができます。
Code Listing 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を使用します。
Code Listing 12.4: alsa-driver、i2c、devfsdの削除 |
# emerge --unmerge alsa-driver i2c devfsd
|
LVM2ユーザであれば、LVM2が備える利点の恩恵を得るために、LVM2データ形式にデータを変換したいでしょう。
しかし、この作業を行うと2.4カーネルからはLVMデータへアクセスできなくなります。
引き続き変換作業をしたいなら(これは完全に自由選択です!)、それを行う方法はvgconvertのマニュアルページを調べてください。
例を以下に示します。mainはボリュームグループ名です。
Code Listing 12.5: LVM1ボリュームをLVM2形式に変換 |
# vgconvert -M2 main
|
|