How to use 2.4.x kernel on Vine-2.1

Contents

はじめに / 捨てていただきたい固定観念 / 更新が必要なシステム / kernel 更新の手順 / 2.4.x 使用上の問題点 / PPxP を使うために / ALSA を使うために / frame buffer で日本語を使うために / その他に……


はじめに

以前から Vine Linux を、その日本語環境の充実と安定性から使い続けていま す(ちなみにその前は RedHat Linux、その前は Slackware でした)。Debian GNU/Linux を考えた時期もありましたが、適度にいい加減な package system というのが僕のようなユーザには意外と便利だということもあって、結局はこ の distribution を使い続けていて、2000年に ver.2.1 が release されたと きにも真っ先に更新してしまい、2002年の ver.2.5 に至っています。

現在の Vine は kernel version 2.4.18 の使用を前提にしていますが、 kernel 2.4.x 固有の問題というものは依然として存在するようです。

そこでここでは、Vine-2.1 上で 2.4.x kernel を使う上での tip、注意すべ きポイントに関して解説していきたいと思います。ただし、今回僕自身が更新 を行った hardware が若干特殊なこともありますので、ここに書かれているこ とが全てのケースにあてはまるとは限りません。あくまで目安としてお役に立 てば幸いです。

あと、ここに書かれていることを試される場合は、あくまで On One's Own Risk でお願いします。僕は責任は取れませんし、取りません。悪しからず。

捨てていただきたい固定観念

以前に fj.os.linux で RedHat 系 distribution の kernel 更新に関して書 いたところが、RPM package を使わずに更新するのは危険だ、という強い意見 を表明される方がおられて参った記憶があります。どうもその辺り、勘違いさ れている方が非常に多いようなのでここに明示しておきたいのですけれど、

「RedHat 系の distribution であっても、通常の kernel archive から make して使用する上ではまったく問題はありません」

勿論、RedHat 側が拡張している kernel の仕様と、一般に archive で配布さ れている kernel の仕様は若干異なりますから、拡張された項目が必要である のならば話は変わってきます。しかし、それらの項目に合致するケースは、お そらくは大きなスケーラビリティを要求されるデータベースサーバやファイル サーバの構築に限定されると思います。「Distribution 教」を信仰している のは楽なのかもしれませんけど、それはあくまで真実とは違いますし、そうい うことを他人に教えてはいけませんねぇ。ぶつぶつ。

僕はこの手の Distribution 教信者の方々は、英語の document を読むことに 根強い抵抗感があって、英語を読むことを回避しつつ他人に何事かを主張しよ うとしているからそういう物言いになってしまうんじゃないかと思うんです が……自分自身で document を読んで(あるいは必要なツールを開発するなり、 package にそこまでこだわるなら必要な spec file を書くなり何なりして) 解決策を探る能力のない人が権威を持とうとすると、周囲に多大なる迷惑をか けますから、そういう方は是非静かにしていていただきたいものです。

……あともうひとつ。

LILO は、どうしてもそれが必要である場合以外は使わない方が安全です」

他の多くの distribution 同様、Vine も標準の boot loader として LILO を 使用するようになっています。しかし……僕が Linux を使い始めてからもう7 年程になりますけど、その間あったトラブルを思い返してみるに、この LILO 絡みのものが相当数あるように思います。そもそも MBR をああいう風に使う というのは安全ではありませんし、 GRUB LOADLIN 、あるいは商用ですが System Commander のような優秀な boot loader が現在は各種入手可能です。 この状況であえて LILO を使う必然性は全くありませんし、システムの安全運 用の観点からも、是非御仕着せの LILO を使うのをやめて、他の boot loader を使用されることをお勧めします。

ちなみに僕の場合は LOADLIN を使っています。これは僕の使用しているのが note で、FAT partition に hibernation image を作成するために、そこを boot 用領域として兼用できるためです。現在の LOADLIN は勿論 bzImage に も対応していますし、最悪でも DOS 等で boot できますから、システムの諸 問題を解決する上での安心感が大分違ってきます。最近評判のいいのは GRUB で、RedHat をお使いの方の中にはこれを選択されている方も多いと思います。 現在は network 上での document 入手も容易ですし、非常にいい選択だと思 います。

更新が必要なシステム

先にも書きましたが、Vine-2. は 2.4.x への更新を考慮して作られています。 kernel archive に添付されている document (linux/Documentastion/Changes) を見ますと、util-linux や modutils など の version 指定を確認することができます。特にこの二つに関しては、出来 るだけ新しいものを RPM を利用して install される方がよいと思います。

modutils に関しては、ring 等の kernel archive をミラーしているサイト…… たとえば、

ftp://ftp.ring.gr.jp/pub/linux/kernel.org/utils/kernel/modutils/v2.4/

に .tar.gz、.tar.bz2、そして各種 architecture 向けの RPM file と SRPM package が置いてあります。僕の場合は用心して SRPM から binary package を自分で作成して install しました。

util-linux の方ですが、これは kernel archive をミラーしているサイト…… たとえば、

ftp://ftp.ring.gr.jp/pub/linux/kernel.org/utils/util-linux/

に置かれていることは置かれているのですが、残念なことに .tar.gz もしく は .tar.bz2 の archive のみです。こういう場合は隣組に頼ろう……という ことで、僕の場合は Kondara の SRPM を使用することもあります。

ftp://ftp.jaist.ac.jp/pub/os/linux/kondara/Jirai/SRPMS/

等から source のない SRPM を、更に

ftp://ftp.ring.gr.jp/pub/linux/kernel.org/utils/util-linux/

などで source を取ってきて RPM file を作成し、install します。

kernel 更新の手順

kernel 更新は以下のような手順で行います。これが唯一の解ではありません ので、各自、最適な方法をお持ちでしたらそのようにされるのがよろしいでしょ う……以下、僕の場合に関して。

まず /usr/src に入ります。この directory 内では、Linux kernel archive の subdirectory が ``linux-a.b.c'' という名前で作成されています。そし て実際に使っている version の kernel の subdirectory から /usr/src/linux に symbolic link を張っています。

Linux kernel archive は linux という directory に展開されますから、ま ず symbolic link の linux を消してから archive を展開し、作成された directory である linux を linux-2.4.0 と rename して、改めて linux へ symbolic link を張り直します。各種ソフトのコンパイル時には /usr/src/linux 内の library file や include file を参照するケースが多 くありますので、この symbolic link は重要です。忘れないように。

/usr/src/linux 内に入ったら、新しい kernel の configure を始めます。X の環境で Tcl/Tk が入っていたら(おそらく RedHat 系の distribution の場 合はほとんど入っていると思いますが) ``make xconfig'' 、コンソールや terminal 上の場合は ``make menuconfig'' が便利でしょう。もちろん ``make config'' でも configure できますが、後戻りができませんので、 configure の内容をある程度把握した上で使われた方がいいかもしれません。

configure が終わったら、make dep(各 module の依存性の確認)、make clean(以前に作成した object file の消去)の後に、いよいよ kernel image の make です。僕の場合は make bzImage で行っていますが、LILO ユー ザの方でしたら、/boot/vmlinuz の symbolic link 元の file を backup し た上で make bzlilo を使われると便利かもしれません。

正常に kernel image が作成されたら、今度は make modules で module を作 成し、これも正常に終了したら make modules_install で module の install を行います。この後ですが……僕の場合は LOADLIN を使用していますので、 LOADLIN の batch file で指定している FAT partition 内の directory に kernel image を置きます。更に kernel の構成が記述されている /usr/src/linux/System.map を /boot 内に置きます。この場合も、先の kernel image の場合も、前の version のファイルは rename して残しておく 方が安全です…… System.map に関しては symbolic link を使って、本体は version number を入れた file にしておくといいでしょう。

ここまで終わったら、/usr/src/linux 内で make clean して……僕の場合は 更に PCMCIA-CS の install があるのですけど……、後は再起動するだけです。 幸運を祈りながら……

2.4.x 使用上の問題点

2.4.x は従来の 2.2.x とは大分違うところがありますから、動かなくなるソ フトがあります。特に network 周りの仕様が変わっているので、network device の絡んだ動作をするソフトには問題の出る可能性があります……

僕の場合に問題になったのが PPxP です。僕はこれを使って出先で PHS を使った PPP 接続を行うことが多いので すが、当初は kernel との IP packet のやりとりに userlink という module が必要で、これがまだ 2.4.x には対応していませんでした。現在の PPxP で は universal TUN/TAP (後述) で使用可能です。

更に、僕の使っている chandra2 の場合、2.4.0 付属の sound module では音 声に問題を来します。これに関しては ALSA の install で対応できますが…… 問題のない場合でも、ALSA を使いたい方はおられるでしょうから、今回はこ れも一緒に扱うことにしましょう。

PPxP を使うために

PPxP は IIJ-PPP をお手本に作られたものです。IIJ-PPP、そして PPxP がエ レガントであると言われていたのは、tunnel device と呼ばれる特殊なデバイ スで kernel との IP packet の入出力を行うことにより、一般ユーザでも問 題なく PPP 接続が行えるためなのですが、もともと Linux は他の UNIX およ び UNIX clone と異なり、この tunnel device を標準で実装していないよう です。

そのために、PPxP 専用の tunnel device として userlink が配布されていた わけですが、これなしで PPxP を使うことができないか……と network 上の document を漁ってみると、ethertap というキーワードに行き当たります。こ れは Linux 版の tunnel device のようなもので、これを使うことで userlink なしで PPxP を使うことが可能ということになっています。

この情報を読んで、僕も早速 ethertap を試そうとしたのですが……なんとこ の ethertap、現行の kernel では既に obsolete(遅れた技術)という扱いに なっています。これにめげずに test 版の kernel で無理矢理試してみました が、接続はできたものの DNS を引けない状態になってしまいます。

しかし、2.4.x からは、従来の ethertap に代わって Universal TUN/TAP device driverなるものが実装されています。従来の ethertap は他のいくつ かの module に依存していたのですが、この Universal TUN/TAP device driver は、 /dev/net/tun というデバイスから、そのときの必要に応じて臨 時にデバイスを作成して接続を行うというもので、BSD における tunnel device と同等の機能を持つもののようです。

たまたま CVS 経由で入手(この方法に関しては PPxP のページを御参照下さ い。勿論システムに CVS が install されている必要があります)していた最 新版の PPxP のソースを調べてみると、なんとこの TUN/TAP に既に対応して いるようです。まず PPxP を最新版に入れ換えた後、kernel source archive 内の document にあるように、

mkdir /dev/net
mknod /dev/net/tun c 10 200

という手順で device を作成して、kernel の configure のときに、Network device support → Universal TUN/TAP device driver support にある CONFIG_NETDEVICES を y にしておきます。もしもこれを m とする場合は(そ うでない場合も一応)、/etc/modules.conf にこの記述を追加して下さい。

alias char-major-10-200 tun

これだけで、2.4.x でも PPxP を問題なく使用できるようになります。

ALSA を使うために

僕の場合はこれなしで音が出なかった、という理由でしたが、それ以外の理由 でも ALSA を導入されたい方が結構おられるのではないかと思います。今回の 僕のケースでも ALSA を導入することにしました。

まず注意しなければならないのは、ALSA は基本的には module のかたちで使 用するものだということです。更に kernel に添付されている sound module と重複すると結構厄介なことになってしまいます。そこで、kernel configuration の際には以下の点に注意して下さい。

「sound → Sound card support (CONFIG_SOUND) だけを m として、他の sound 関連の driver や module は一切入れない」

……このただ一点だけが ALSA を入れる上では非常に重要ですので御注意下さ い。

kernel の更新後、ALSA を install します。ALSA の primary site は

http://www.alsa-project.org/

ですので、ここから適宜ミラーを辿ってみて下さい。まずは .tar.bz2 の archive でかまいませんので、alsa-driver、alsa-lib、alsa-utils の archive、それに alsaconf の RPM file を揃えます。

現在配布されている ALSA の archive には、source や spec file を所定の 位置に展開して RPM file を作成するための script が添付されています。各 種 archive を展開した directory 内の utils/ という subdirectory 内に ある、buildrpm という名前の file がそれです。utils/ 内でこの script を superuser 権限で実行するだけで、通常の SRPM からの RPM file 作成と同様 の作業を行ってくれる……はずです。

「はずです」と書いたのは実際にはそううまくはいかないからで(笑)、 alsa-driver の package 作成中などに問題が生じることが多々あります。た とえば、ver. 0.5.10a では問題が生じないのが、ひとつ前の 0.5.10 では module の中にコンパイルできないものが出てきてしまう……というような問 題が出てきます。これを書いている時点での最新 kernel である 2.4.18 では、 どうも ALSA-0.5.x はもううまく動作しないようですし……

そういうときには、まず buildrpm を実行し、コンパイルエラーで止まったと ころで、/usr/src/redhat/SPECS に移動します。ここに alsa-driver.spec と いうファイルができていますが、このファイルを見ると……

%build
./configure --prefix=/usr ${EXTRA_ALSA_DRIVER_CONFIG_FLAGS}
make

と書かれた個所があります。ここで configure 時に渡すパラメータを指定し ているわけですが、ここに(通常の configure で行うように)module の種別 を限定するような記述を追加してやることで、コンパイルできない module の コンパイルを回避してやればいいわけです。僕の場合は、

%build
./configure --with-isapnp=no --with-cards=sb8,sb16 --prefix=/usr ${EXTRA_ALSA_DRIVER_CONFIG_FLAGS}
make

のようにパラメータを追加しました。自分一人で使う package に無用な汎用 性を持たせる必要もないわけですから……ここでも是非固定観念を捨てていた だきたいな、と思うわけです。こうやって修正した spec file を使って、

rpm -bb ./alsa-driver.spec

などとやって RPM file を作成し、install すればいいでしょう。

ただし、現行の kernel ver.2.4.18 の場合は、ALSA-0.9.x を使うか、あるい は snapshot を使うかする必要がでてきます。現在 release されている ALSA-0.9.x の場合、kernel の version number をうまく拾ってくれないよう で、RPM 作成には成功するのですが、module の install directory がおかし なことになってしまいます。

更に、alsaconf が現在の ALSA での module 名に完全に対応していないため、 古い Sound Braster 等を使っておられる方の場合、/etc/modules.conf がう まく修正されないという問題があります。僕の場合は現在は snapshot 版を使 用していますが、これは万人にお勧めできるものではないので、もし kernel source の方でうまく鳴る場合はそちらをお勧めします。

frame buffer で日本語を使うために

kernel 2.4.x の売りのひとつに frame buffer があります。これはコンソー ルでもグラフィクス等を表示させられるというものなのですが、2.4.x になっ てその機能が更に強化されたわけです。

僕のようにコンソール環境を多用する者にとって、この frame buffer は非常 に魅力的なのですが、日本語コンソールとして一般に普及している KON は未 だこの frame buffer に対応していません。ところが必要なものを開発される ユーザがちゃんとおられるのがこの世界で(だからってその出現をアテにして はいけないんですけど)、frame buffer で日本語表示を行う terminal ソフ トである jfbterm が開発されています。この jfbterm は X の font を使えますので、あたかも kterm で font の customize をするが如く、自分の好きなフォントで日本語 表示を行うことができます。これを使わない手はありません。

まず最初に kernel に frame buffer の機能を組み込みます。今回は CONFIG_FB, CONFIG_FB_VESA, CONFIG_FB_VGA16 を組み込みましたが、最近の VGA をお使いの方でしたらその機能を最大限に使える module が用意されてい ますので、それらを適宜使用されるといいでしょう。

jfbterm の RPM file は、jfbterm のページからも入手できますが、一番手軽 なのはおそらく Kondara のサイトから nosrc SRPM を入手することでしょう。 これも例によって Jirai の、

ftp://ftp.jaist.ac.jp/pub/os/linux/kondara/Jirai/SRPMS/

の中からと、source を

ftp://ftp.jaist.ac.jp/pub/os/linux/kondara/Jirai/SOURCES/

から取ってきて RPM file を作成し、install します。

このまま jfbterm を起動させるだけで、KON と同じような感覚で日本語を使 うことができるのですが、僕の場合は note ですので、より小さな font で日 本語表示を行えるようにします。jfbterm の設定ファイルは /etc/jfbterm.conf ですが、この中の「フォントの指定」の部分で、

fontset : ASCII,pcf,L,/usr/X11R6/lib/X11/fonts/misc/8x16.pcf.gz
+fontset: JISX0208-1978,pcf,L,/usr/X11R6/lib/X11/fonts/misc/jiskan16.pcf.gz

(設定部最初の2行)とあるのをコメントアウトし、

fontset : ASCII,pcf,L,/usr/X11R6/lib/X11/fonts/misc/7x14.pcf.gz
+fontset: JISX0208-1978,pcf,L,/usr/X11R6/lib/X11/fonts/misc/k14.pcf.gz

を追加します。これで emacs 等でもちょっとだけ広い画面を使えるようにな りました。

その他に……

2.4.x の利点に関しては数多くの文書が出ていますのでここでは省きますが、 まだ security 上の諸問題に関して枯れ切っていない可能性がありますので、 open な network に接続された server 等での使用は個人的にあまりお勧めで きません。security 上の問題を突かれた場合、自分の問題だけでなく、そこ を踏み台に攻撃された第三者にも多大なる迷惑をかけることになりますし、そ れによって追及された責任を回避することは難しいでしょう。ですから、正式 リリースとは言っても、慎重に使われることをお勧めします。日本人はとかく 新しいものに飛びつきがちですが、血の滴るような最新技術は決して恩恵だけ をもたらすものではない……ということは知るべきでしょうね。

……とは言うものの、この kernel は、少なくとも今のところはかなり安定し ているようです。特にトラブルも起きていません。また HDD やメモリ周りな どでかなり性能が改善されているということなので、そういう用途の方々には この kernel のもたらす恩恵は大きいかもしれません。


Go back to index
Last modified: Thu May 30 00:21:18 JST 2002