|
次のページ
前のページ
目次へ
7. いくつかの落とし穴7.1 make clean通常のアップグレードの後,新しく構築したカーネルが奇妙な動作をするとき
は,新しいカーネルをコンパイルをする前に「 7.2 巨大あるいは遅いカーネルカーネルが多量のメモリを使いこんだり,あまりに巨大だったり,あるいはせっかく 新しい Quadbazillium-III/4400 を投入してやったというのにコンパイルがい つまでたっても終わらないという場合は,いらないものまでカーネルに組みこ んでしまっているかもしれません(デバイスやファイルシステムなどです).い らないものは組みこまないようにしましょう.メモリを浪費することになるか らです.カーネルの巨大化によって現われる,もっとも目立つ症状は,メモリ とディスクの間でスワップが頻繁に起こるというものです.ディスクがあまり にもうるさく,停止時にジェット機の着陸時のような音がする古い富士通製の Eagles というハードディスクも使っていない場合には,カーネルの設定を調 べてみましょう. カーネルがどれくらいメモリを消費してるかは, 7.3 パラレルポートが動かない/プリンタが動かないPC 用の設定オプションは以下の場所にあります.まずは「General Setup」の `Parallel port support' と `PC-style hardware' を選んでください.それ から `Character devices' の `Parallel printer support' を選択してくだ さい. すると名前表示されます.Linux 2.2 では,プリンタのデバイス名は前のリリー
スと異なっています.その結果,古いカーネルで使っていた 7.4 カーネルをコンパイルできないコンパイルできない場合,パッチ当てに失敗していたり,カーネルソースがど
こか壊れているのかもしれません.gcc のバージョンが違っていたり,gcc そ
のものが壊れているのかもしれません(例えばインクルードファイルがおかし
いなど).Linus さんが 場合によっては,ハードウェアの問題で gcc がクラッシュすることがありま す.エラーメッセージは ``xxx exited with signal 15'' というような感じ になり,一般に大変ミステリアスに見えます.このことについてはあまり触れ ませんが,一度わたしも遭遇したことがあります - 原因はキャッシュメモリ の不良で,コンパイラが時々ゲロを吐く[core dump する]ことがありました. この問題に遭遇したら,まず gcc を再インストールしてみてください.外部 キャッシュをオフにしたり,RAM の容量を減らしてみたらカーネルコンパイル がうまく行く場合は,この辺を疑ってみるべきでしょう. ハードウェアに問題があるかもしれないと言うと,多くの人はいい気持がしな
いようです.でも,私は話をでっちあげているわけじゃありません.専用の
FAQ もあります -- 7.5 新しいバージョンのカーネルでブートしていないようだLILO を実行していないか,LILO の設定が正しくありません.以前私が遭遇し
たのは設定ファイルの問題でした.` 7.6 LILO を実行し忘れた,あるいはまったくブートできないあらら.ここでの最善の策はフロッピーディスクや CD-ROM から起動し,別の
ブート可能なフロッピーを作ることです(` 以下の例では, この復旧法の考え方は,もしちゃんと動作する まずは起動/ルートディスクの組み合せか,あるいは復旧ディスクから起動を 行い,動作するカーネルがあるファイルシステムをマウントします:
mkdir /mnt mount -t ext2 /dev/hda3 /mnt
/mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/bootフォーマットしたディスクをドライブ ``A:'' に入れ(断じて起動ディスクや ルートディスクじゃありません!),カーネルイメージをフロッピーへダンプ し,そのイメージが使うルートファイルシステムを設定します:
cd /mnt/src/linux/arch/i386/boot dd if=bzImage of=/dev/fd0 rdev /dev/fd0 /dev/hda1
cd / umount /mnt これで,作成したフロッピーからシステムを通常通りにリブートできるはずで す.リブート後,lilo の実行(あるいは失敗の原因の除去)を忘れずに行って ください! 上述の通り,一般的な対処法がもう一つあります.動作するカーネルがたまた
ま LILO を大きなドライブ(1024 以上のシリンダを持つもの)で使用すると,問題 が生じることがあります.この問題に関する情報については LILO mini-HOWTO などを参照してください. 7.7 `warning: bdflush not running' という警告が出るこれは重大な問題かもしれません.リリース 1.0 以降のカーネル(94 年の 4
月 20 日前後)から,ファイルシステムのバッファを定期的にフラッシュする
` 7.8 IDE/ATAPI CD-ROM ドライブが動かない何とも不思議なことに,ATAPI ドライブがうまく動かないという人がたくさん います.たぶんこれは,間違いが起こるポイントがたくさんあるからでしょう. IDE インタフェースに繋がっているドライブが問題の CD-ROM だけの場合,ジャ ンパの設定を「master」または「single」にしなければなりません.たぶん, これが一番ありがちな間違いです. (例えば)Creative Labs はサウンドカードに IDE インタフェースを載せてい ます.しかし,これは奥の深い問題を起こします.すなわち,IDE インタフェース が 1 つしか無いマザーボードもありますが,多くのマザーボードには IDE インタフェースが 2 つあります(普通は IRQ 15).したがって,普通は SoundBlaster のインタフェースを 3 番目の IDE ポート(私は IRQ 11 くらい と聞きました)にすることになります. ところがこれは Linux では問題を起こします.つまり,バージョン 1.2.x は 3 つ目の IDE インタフェースをサポートしていないのです(1.3.x 系列のどこ かでサポートされるようになりましたが,このカーネルは開発版ですし,自動 検出も行われないのを忘れないでください).これを回避する方法はいくつか あります. 2 番目の IDE ポートが既にあり,これが使われていないか,あるいはまだデ バイスが 2 つ繋がっていないことがあります.この場合にはサウンドカード から ATAPI ドライブを取り外し,2 番目のインタフェースに接続してくださ い.そうすればサウンドカードのインタフェースを無効にすることもできます. これでとりあえず IRQ も節約できます. 2 番目のインタフェースがなければ,サウンドカードのインタフェースをジャ ンパで設定して,IRQ15 (2 番目のインタフェース)にしてください.これで動 作するはずです. 7.9 廃れてしまった経路要求に対しておかしな警告が出る
7.10 1.2.0 でファイアウォールが動作しない少なくともバージョン 1.2.1 までアップデートしてください. 7.11 ``Not a compressed kernel Image file(カーネルイメージファイルが圧縮されていない)''
7.12 1.3.x にアップデートした後コンソール端末に問題が出る
7.13 カーネルアップグレードの後コンパイルできなくなったようだLinux のカーネルソースにはたくさんのインクルードファイル(名前が
#include <linux/xyzzy.h>通常, /usr/include ディレクトリには linux というリン
クがあり,これはカーネルソースの include/linux ディレクトリ
(普通のシステムでは /usr/src/linux/include/linux )を指していま
す.このリンクが張られていなかったり,あるいはおかしなところへ張られて
いると,ほとんどのプログラムをコンパイルできなくなってしまいます.カー
ネルソースがあまりにディスクスペースを消費するからとこれを消去してしま
うと,このリンクが消滅してしまい明らかに問題になります.ファイルのパー
ミッション(ファイルへのアクセス許可)でもうまくいかない原因になります;
あなたのシステムの root が,デフォルトで他のユーザーにインク
ルードファイルを見せないように umask を設定していたり,かつカーネルを
展開するときに p オプション(ファイルモードを変更しない)をつけ
ないと,他のユーザーはやはり C コンパイラを使用できなくなります.
chmod コマンドでパーミッションを変更することもできますが,イ
ンクルードファイルを展開し直すほうが楽でしょう.最初にソース全体を展開
したときのコマンドに引数を追加するだけです.
blah# tar zxvpf linux.x.y.z.tar.gz linux/include注意: `` make config '' は /usr/src/linux にリンクが存
在しなければ,リンクを張り直します.
7.14 上限値を大きくする少ししかありませんが以下のコマンド例は,カーネルが設定した ソフトリミットを増やす方法を知りたい人の参考になるでしょう: echo 4096 > /proc/sys/kernel/file-max echo 12288 > /proc/sys/kernel/inode-max echo 300 400 500 > /proc/sys/vm/freepages 次のページ 前のページ 目次へ |
[ |