|
Debian on IBM ThinkPad365X 第4版 1998.02.24 更新 |
|
|
前回、dselectによるパッケージのインストールを行ったので一通りのパッケージがインストールされた事になる。しかし、それはパッケージがインストールされただけで使えるようになったとは言い難い。それに、このTP365Xはノートマシンなので、省電力機能もあるのだが、まだapmも正しく動かないのだ。apmと叩くと "No APM support in kernel"というメッセージが出てきてしまう。どうやら、現在のカーネルはAPMをサポートしていないようなのだ。という事で、まずはカーネルを再構築する必要があるみたいだ。ちょうど、前回のdselectでカーネルソースも一緒にインストールしたので、ソースは /usr/src/ の下に入っている筈です。
とりあえず、今回作成するカーネルが万が一起動しなかった場合の事を考えて、古いカーネルでも起動できるようにliloの設定を行います。まず、古いカーネル(/vmlinuz)をコピーしておきます。
そして、/etc/lilo.confを編集します。今回はこの様にしました。ついでにDOSも立ち上がるようにしました。
# cd /
# cp vmlinuz vmlinuz.2.0.29そして、編集が終わったらliloと叩いて登録しておきます。すると、
boot=/dev/hda2
root=/dev/hda2
compact
install=/boot/boot.b
map=/boot/map
vga=normal
delay=20
image=/vmlinuz
label=Linux
read-only
image=/vmlinuz.2.0.29
label=Linux2029
read-only
other=/dev/hda1
label=Dosというメッセージが出て3つのブートが出来るようになります。
Added Linux *
Added Linux2029
Added Dos
さて、下準備も済んだ事なので、カーネルの変更を行う事にしましょう。cdコマンドで /usr/src/linux に移り"make menuconfig"と叩くとメニューコンフィグプログラムをコンパイルしたあと、Configurationプログラムが走り始めます。
> cd /usr/src/linux
> make menuconfig今回のお目当てのAPMはCharacter devicesに有るので、カーソルを動かしてCharacter deviceに合わせEnterを押すと画面が変わりますので、カーソル移動キーで下方向にいくつか動かして行くと"Advanced Power Management BIOS support"という項目がありますので、ここで"y"キーを押します。そして、その下の"Enable PM at boot time"と"Power off on shutdown"も同じように"y"キーで選択します。すると左側の[ ]に*が表示されます。これがセットされた証拠です。
セットが終わると左右キーでExitを選択して抜けます。
次に、カーネルの再構築という事で、"make dep;make clean"と叩きます。そして、make zliloと叩きます。
> make dep ; make clean
:
> make zlilomake zliloの構築には約50分かかりました。
ところが、何故かエラーが出てしまったのです。
tools/build bootsect setup compressed/vmunix.out CURRENT > zImage
Root device is (3, 2)
Boot sector 512 bytes.
Setup is 4460 bytes.
System is 617 kB
System is too big
make[1]: *** [zImage] Error 1
make[1]: Leaving directory `/usr/src/kernel-source-2.0.30/arch/i386/boot'
make: *** [zlilo] Error 2うーん、なんでぇ???...
ドキュメントを読んでもこのエラーの対処が判らなかったので、最後の手段であるメーリングリストに質問してみました。するとやはりメッセージ通り大きすぎるんだという答えが返ってきました。
実は、カーネルのサイズには8086からのしがらみがあり、起動時にはすべてが640KB以内に居ている必要があるそうなのです。そのため、多くのドライバーを入れるとカーネルサイズが大きくなりすぎ、この範囲に入らなくなるのです。大体カーネルのサイズとしては、512KB程度が限界だという事です。このへんの詳しい事は下記雑誌を参考にして下さい。
この辺りのドキュメントというのはあまり無く、簡単な説明(とは言っても結構ハイレベルですけど)がLinuxJapan-Vol.6のp.114から掲載されている「カーネルのブート」というページに載っています。しかし、残念な事にインターネット上では見つけることが出来ませんでした。(もし、どこかに公開されていましたら教えて下さい)こういう雑誌というのは大都市圏の一部しか発売されておらず、下手をすればその存在すら知られていない可能性も有ります。是非とも、インターネット上に公開して欲しいと願うばかりです。
という事で、再度menuコンフィグを走らせて設定されている内訳を詳しく見ることにしました。
General setupを見てみると、MCA bus supportや(386) Processor typeなど確かに幾つか変えた方が良いようなので、次の変更を加えてみました。
以上の様に変更してmenuconfigを終了させました。しかし、tecra関係は無かったけど、大丈夫なのだろうか?
General setup
- MCA bus support
[*] -> [ ]
- Processor type
386 -> Pentium
- Kernel math emulation
[*] -> [ ]
Floppy, IDE, and other block devices
- Include IDE/ATAPI CDROM support
[*] -> [ ]
- Include IDE/ATAPI TAPE support
[*] -> [ ]
- CMD640 chipset bugfix/support
[*] -> [ ]
- RZ1000 chipset bugfix/support
[*] -> [ ]
SCSI support
- Probe all LUNs on each SCSI device
[*] -> [ ]
- SCSI low-level/以下すべて
全て、<*> -> < >
ISDN subsystem
- ISDN support
<M> -> < >
Character devices
- Advanced Power Management BIOS support
[ ] -> [*]
- Enable PM at boot time
[ ] -> [*]
- Make CPU Idle calls when idle
[ ] -> [*]
- Enable console blanking using APM
[ ] -> [*]
- Power off on shutdown
[ ] -> [*]
- QIC-02 tape support
[*] -> [ ]
- C&T 82C710 mouse port support
[*] -> [ ]
menuconfigが終了したらmake depとmake cleanを行った後、make zliloを実行します。今度はサイズが大きいとかいうエラーは発生せず正常のコンパイルが終了しました。
エラーが発生しなかったので、make modules を行ったところ今度はconfig.cのコンパイルの部分で、というエラーが出てしまった。ヲイヲイ、HiSaxは外したのにぃ...と思ったらなんと最初の`HiSax SiemensChipSet driver support'に<M>マークが付いていた。
config.c:143: #error "HiSax+ No cards configured"
config.c:157: `DEFAULT_CARD' undeclared here (not in a function)
config.c:157: initializer element for `cards[0].typ' is not constant
config.c:157: `DEFAULT_CFG' undeclared here (not in a function)
config.c:157: initializer element for `cards[0].para' is not constant
make[3]: *** [config.o] Error 1
make[3]: Leaving directory `/usr/src/kernel-source-2.0.30/drivers/isdn/hisax'
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/usr/src/kernel-source-2.0.30/drivers/isdn'
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/usr/src/kernel-source-2.0.30/drivers'
make: *** [modules] Error 2そこで、このマークを`n'キーで外して再度 make depからやり直した。meke zliloには約40分、そして、make modulesには約50分かかった。最後にmake modules_install(これはすぐに終わる)で一応インストールは終了です。
さて、新しく作ったカーネルを使用するために、まずは再起動を行いました。先程、LiloでLinuxとLinux2029を作ったので新しいカーネルはもちろん、Linuxの方です。多分、そのままEnterを押せば新しいカーネルで立ち上がるはずです。すると、カードの認識時に以前は3回ピッと音が鳴ったのに、今回はピッと3回鳴った後1回ブーっと鳴ってしまいました。またscsiカードかな?と思ったのですが、mount /cdrom とするとcdromがマウントされたので、どうやらEthernetCardの様でした。もしかしたら、必要なデバイスまで外してしまったのかも知れませんね。
さて、ここで大切なのはどのデバイスが足らなかったのか?という事です。まず、状況をきちんと把握するために、起動時のメッセージをチェックする事にします。起動時のメッセージの大半はdmesgコマンドによって再現出来ますので、まずはdmesgでチェックします。
すると、Linux PCMCIA Card Services 2.9.6と出た後PCIC Probeで Intel i82365sl を認識し、1542xコントローラを検出しました。そして、scsiデバイスとして、CD-ROMを見つけました。ところが、Ethernetカードに関してはエラー等の表示も行われませんでした。
# dmesg | more
それでは、別の情報にあたってみましょう。まずは、/var/admディレクトリの下にあるsyslogというファイルを見てみましょう。このファイルはテキストファイルになっているので、more等で簡単に見ることが出来ます。それでは見てみましょう...
という事で、再度menuconfigを走らせてチェックすることにしました。
# cd /var/adm
# more syslog
:
....... cardmgr[83]: + /lib/modules/2.0.30/pcmcia/8390.o: unresolved symbol netif_rx_R9117fffb8
:
すると、Network device supportのARCnetの部分で、<M>にもなっているにも関わらず、その下のEnable....という行は???
とにかく、このARCnetは不要だと思われるので"<M>"を"< >"に変え、未選択になっている SEEQ8005 supportを追加してから再度カーネルの再構築を行ってみた。ところが、今度は Should I run /sbin/lilo? (y/n) というメッセージが出て止まってしまった。このメッセージの前には
と出ていた。とにかく、'y'を答えたら問題なく終了したので、そのままmake modules_includeまで終了させ、リブートをかけてみた。
sh ./install.sh 2.0.30 zImage /usr/src/kernel-source-2.0.30/System.map""
In order to use the new kernel image you have just installed, you
wil need to reboot the machine. First, however, you will need to
either make a bootable floppy diskette or re-run LILO.
Checking for LILO...Yes, on /dev/hda2が、やはり再起動時に'ブー'と鳴り、EthernetCardが認識されなかった。
「もしかしたらpcmciaのコードがカーネルと合っていない為では?」と思い、/usr/src/modules/pcmcia-csディレクトリで、make config;make dep;make all;make installと続けて行い、再起動をしてみました。
ところが、今度は、ブーという音が2回も出て、cs: overrun is ger_next_tuple for socket 1 というメッセージまで出てしまったのです。そして、cdromにすらアクセス出来なくなってしまったのです。うーん、もうお手上げ...どうしよう....
ところが、ふと「あれ?PCMCIAってもしかしてPCIインターフェースからブリッジで接続されているのでは?」と思い再度 menuconfig を走らせて、General setupのページから外していた[PCI bridge optimizasion]という項目をセットしてみることにした。しかし、ちょっとは期待したのだが、やはりダメだった。
そこで、もう一度初心に戻ってドキュメントを調べることにした。
まずは、pcmcia-csの方からソースパッケージを展開した/usr/src/modules/pcmcia-csディレクトリ内のREADMEファイルを読んでみるが今回に関した記述は無かった。
そこで、次に /usr/doc/pcmcia-sourceディレクトリに目を移すと、そのなかのREADMEファイルにという記述が有った。そういえば、やっていなかったなぁ....という事で、rulesの実行を行ってみた。ところが、gpkg-gencontrolが無い!というエラーで落ちてしまった。ガーン!
1./usr/src/linuxでconfigを行え
2.pcmcia-csのルートディレクトリに移れ
3.debian/rules binary-modulesを実行しろ
もしかして、gpkg-gencontrolって標準ではインストールされていないのでは?
お〜い、dselectちゃん。ちゃんと依存チェックしてよね。仕方が無いので、再起動を行い今度はLILOの所でLinux2029を選択して古いカーネルで起動してみた。しかし、今度はカードマネージャーのバージョンが合っていないとかいうメッセージでピッともブーとも言わなくなってしまった。そりゃぁそうかも知れない。だって、問題はpcmciaなんだもん...
あ〜、お手上だ!...(i.i) またまた1からやり直しだ...
|
|
|
|
|
第4版
1998.02.24 更新(カーネルサイズの記述を追加) |