番外編 PC Linux 環境設定

2000/10/18 (最終更新:2005/08/28 15:27)

◎ Linux

zxLinux の開発を行うには PC が必要です。 MOREソフトを作るには SZAB を動かすための WindowsPC が必要ですから、 その点では大した違いはありません。

違うのは、zxLinux の開発にはやっぱり Linux の PC が必要だということです。 Linux はかなり有名で実際に使用している人も数多く、 書店に行けば雑誌も専門書も数多く見つけることができます。

Linux のインストール方法は、徐々に改良されドライバも増え、 以前よりはわかりやすくなってきました。 それでもまだ一般の人には抵抗が大きいのは確かです。 OS インストールで無意味な時間が費やされることの苦痛といったらありません。 一度味わうと二度と行いたくないと思うものです。

それに対して MOREソフトの一つとして動く zxLinux のインストールは、 あまりにあっけない簡単なものです。ほとんど説明が要りません。

今回は番外編として、 Zaurus ではなく PC 用に Linux をセットアップしたその顛末をちょっと 書いてみたいと思います。

◎ 新規マシン

このたび Linux 開発用にマシンを一台調達してしまいました。 新規といっても、PentiumIII に 128M RAM で HDD 30G。 いまどきマシンを買うならこのくらいでごくごく普通だね、というスペックです。

これまで Linux 開発用に使っていたノートPCは、 MMX すらなかった 4年前に買ったもの。 Pentium 133MHz に 32M の RAM で、HDD が 800M (1.6G の半分が Windows95 で残りが Linux)。 ちなみに購入時は HDD 1G しかありませんでした。

ノートPC への Linux install は当然最小構成です。 それでも zxLinux の開発環境を展開していると、 残り容量が 30M を切っていて、 ソース差分を作るためのオリジナルコードを置くスペースもありませんでした。

新しいマシンは Linux 専用で注文したので OS は入っていません。 マウスなし、Video や Sound がオンボードで、 スロットは全部からっぽ。 キーボードも小型のものを選択。 当初は DVD とか RW とかついていましたが、 CD-ROM も普通のドライブにしてもらいました。 組み立てとか全然詳しくないので、CPU とかマザーとかよくわかりません。 基本部分一式の選定と組み立てまでは、全部まとめて依頼しました。

◎ セットアップ開始、まずは Windows

早速到着したマシンに 余っていた LAN カードを指そうとしたら・・ ISA カード用のスロットがみあたりません。 今のマシンて ISA ついてないんですね。 NE2000 互換カードが余ってるからとすっかり油断していました。

近所のショップで PCI LAN カードの安いやつを 1800円で購入。 マシンの動作チェックを兼ねて、まずは動くとわかっている Windows を install してみることにしました。 HDD 30G の半分、最初の 15G に install します。

インストールするのは、発売当時 βからの Vup キャンペーンで入手したものの、 全く使っていなかった Windows2000 です。 Linux からのアクセスを考えて FAT32 を選択。 BIOS の設定変更は、boot デバイス認識の順番だけ。 install は CD-ROM ブートです。

Windows のインストールは問題もなくすんなり終了。 ちゃんと起動して、Administrator でログイン。 ドライバを入れてネットワークも認識。 マシンも問題ありません。

ただし 815E チップ内蔵の Video を認識しなかったので、 マザーボードについていた CD-ROM からドライバをインストール。 おそらく DirectX8 が公開されたら、 Direct3D 開発に本格的に移行することになります。 そのときは別の video カードを指すつもりです。

まだ Sound のドライバが入っていないけど、 たぶん使うことはないのでそのままにします。

◎ 次に Linux

install する Linux は、LASER5 Linux 6.2 FTP版にします。 たまたま買ってきた今月号の雑誌についていただけで、 選択そのものには特に深い意味はありません。 カーネルバージョンは 2.2.14-12LL1 となっていました。 RedHad 互換とのことなので、きっと解説もしやすいでしょう。

CD-ROM ブートでインストーラの選択画面が起動。 そのままリターンキーで GUI インストールです。 どうやら Linux のインストーラも、 X-WINDOW ベースでマウス操作で進めていくようです。

ただこのインストーラ、 その解説のわかりにくさ(要点が全くつかめない日本語の説明)にとにかく閉口。 これだと、UNIX の知識がないと結局何もわからないと思います。

Custom install を選択し、 次に Linux パーティションを切ろうと思ったら作れません。 30G の HDD は残り半分が空いています。 ここに作ろうと思うと bootパーティションが巨大すぎるとのエラーが出てさっぱりだめです。 全く原因がつかめないので、 余っていた別の 2G HDD をセカンダリにつないでみました。

無事認識し、2G の HDD に丸ごと Linux の / パーティションを 切ることが出来ました。 どこが悪かったのかよくわからないけど、 うまくいったのでこのまま使うことにします。 swap パーティションは、30G HDD の方に 128M 作っておきました。

後はパッケージ選択して install です。 HDD に余裕があるので、ほとんど全部選択して CD から転送。 お任せ状態になりました。 これ、かなり時間がかかりました。

◎ 起動とネットワーク設定

インストールは時間がかかったものの、特に問題もなく終了。 X-WINDOW の設定では、やはりというか 815E の項目がなかったので、 インストール時の設定をパスしました。 intel のサイトに行くと 815E 用の Linux (XFree86)設定(パッチ)が置いてあるので、 ちゃんと設定すれば使えるようです。 面倒なので当分はほうっておきます。

これで無事起動しました。 コンソールがログイン画面になるので、 ここから root で入ってネットワーク設定です。 ユーザー名 root、パスワードはインストール時に入力したものです。

LAN カードは、 そもそもパッケージに Linux 対応を謳っていたものなので問題ないはずです。 マニュアル通りにドライバのソースをコンパイルして、 モジュールを指定のフォルダに転送。 linuxconf を起動してネットワーク設定を行います。

コンソールに日本語が表示されないので、linuxconf のメニューが文字化けして 読めません。 中途半端な日本語化だとこういう時困ります。

% export LANG=en_US

などと設定して Locale を解除し、英語のメニューで linuxconf を起動します。

Networking の Client tasks、 Basic host information 設定で IP アドレスを指定し、LANカードのマニュアル通りに モジュール名を書き込みます。 何度か失敗を繰り返しながら何とかカードは認識。 ifconfig eth0 で見るとデフォルトで down なので、手動で 「ifconfit eth0 up」します。

無事外からは見えるようになりました。 が、中か外が見えません。 ルーティングがうまくいっていないようです。 route コマンドも帰ってきません。 手動で設定してもいいんですが、 再び linuxconf を使います。 Networking Client tasks、Routing and gateways の設定で、 チェックボックスを全部消して無効化します。 これで設定完了。

% /sbin/route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.52.0    *               255.255.255.0   U     0      0        0 eth0
127.0.0.0       *               255.0.0.0       U     0      0        0 lo

なんとかネットワークが見えるようになりました。 繋がっているマシン名と IP アドレス一覧を、 /etc/hosts に書いてこれで一通り終了です。

ネットワークに繋がればコンソール作業はおしまいです。 以後 Windows 上からの telnet だけで全部作業が出来るようになります。

◎ トラブル数回

なぜか起動中に止まるようになってしまいました。 設定を変更して eth0 を最初から使えるようにしておくと、 起動途中で止まってしまうようです。 最初の頃は手動で UP していたのでうまくいってたらしいのです。

CTRL + ALT + DELETE で再起動させ、LILO プロンプトで [TAB] を押します。 ここで「linux single」として single ユーザーモードで起動します。 (Linux での single user モード起動方法は知らなかったのですが、 たまたまこう指定したら single モードで起動してくれました) linuxconf で設定変更し、 eth0 はデフォルトでは非active、 手動立ち上げに戻しました。

リモートで telnet 接続していますが、 コマンド等のエラーメッセージも、どうやら日本語になっているようです。 化けているのでうまく見えません。 たぶん EUC コードなのでしょう。

Windows を使っている関係上、普段から SJIS に統一していて EUC は使っていません。 telnet で使っている TeraTerm Pro には、 漢字コード変換機能があるので EUC を表示させることも出来ます。 でもファイルの漢字コードが混在すると後々困るので、 これは統一しておいた方が便利です。

筆者はパソコンとの連携を考えて、昔から UNIX 上でも SJIS で環境を統一することにしていました。 そもそも初期の AIX はコードが SJIS でしたし、NEWS-OS でも SJIS を選択可能で全く問題なく使えていました。 EUC なのは SunOS です。 当時 SunOS4 でも、 OpenWindow を使わないで X11R5 を install して、 自分で SJIS のみの環境を構築して使用していました。

さて Linux ですが、LANG=ja_JP.SJIS で SJIS 設定になるようです。 ただ面倒なので en_US で使うことにします。 こんな感じで .bashrc に追加します。

export PATH="$HOME/bin:$PATH" export LANG=en_US alias vi='/usr/local/bin/vim' alias f='/bin/ls -lF' ls='/bin/ls -CF' PS1='[\u:\h]\w>'

さていよいよ ノートPCから zxLinux 開発環境のデータを移行しようと思ったら、 30G HDD の残り半分 15G を認識させるのを、 忘れていたことに気がつきました。 今のままでは Linux 上で 2G HDD しか使えません。 Linux の fdisk を使い、FAT32 と swap 以外の残り全部を linux (83) で確保します。
% /sbin/fdisk /dev/hda

The number of cylinders for this disk is set to 3736.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
(1) software that runs at boot time (e.g., LILO)
(2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/hda: 255 heads, 63 sectors, 3736 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1      1912  15358108+   c  Win95 FAT32 (LBA)
/dev/hda2          1913      1929    136552+  82  Linux swap
/dev/hda3          1930      3736  14514727+  83  Linux

Command (m for help): 

これで一回再起動し、 /sbin/mke2fs /dev/hda3 でファイルシステムを作ります。 hda3 は /exhd にマウントしておき、必要に応じて SynbolicLink を張ることにしました。

◎ 全データコピー

ノートPCから、開発環境のデータを丸ごと移行します。 転送方法はいろいろありますが、ディレクトリ構造やファイル名、 パーミッション設定が変わってしまうのは困ります。

普通なら、tar で固めて ftp とかするところでしょうが、 ノートPCにはそんなディスクスペースがありません。 NFS でマウントしてコピーした方が簡単でしょう。

筆者がよく使う方法は rcp です。 今回の転送も rcp を使いました。 それぞれのユーザーホームディレクトリに .rhosts ファイルを作ります。

マシン名 そのマシンのユーザー名

上記のようにアカウント一覧を記述しておけば、 rlogin 時の認証も自動化されます。 このファイルのパーミッションは忘れずに 600 にしておきます。 相互に rlogin してみて確認します。 あとは必要に応じて rcp を使えば、ファイル単位でも ディレクトリ構造毎でも、マシン間で普通にファイルコピーすることが可能です。

% rcp -r /usr/local/zxksrc ogaswr@pr7:/exhd/zxlinux % rcp -r /usr/local/kp* /usr/local/bkit ogaswr@pr7:/exhd/zxlinux/patch

◎ zxLinux コンパイル

これで思う存分、ディスクスペースを心配せずにソースを展開することが出来ます。 幸せです。

カーネルコンパイルも速い速い。ソース更新後、実行までのサイクルが全然 速いのです。感激です。

ちょっとしたことでもレスポンスの違いが明確で、いままでいかに 遅い環境で使っていたのか、あらためて実感しました。 痛感です。

◎ 欲がでて X

欲がでて、ちょっと X-WINDOW を使ってみたくなりました。 といってもコンソールで使うのは video の設定が面倒だし、いちいち モニタやキーボードを切り替えるのもスマートじゃありません。 X はもともとサーバークライアント型のウィンドウシステムなので、 X 端末があればリモートでも、完全に X のデスクトップ環境を享受することができます。

普段使っている Windows 用に、X サーバーが無いかどうか探してみました。 市販のものは結構高いのですが、こちら ASTEC-X に 期限付きの評価版があるので試してみます。 他にも XVision といったものもあるようです。

ASTEC-X の評価版をインストールして起動。 スタートメニューから ASTEC-C の Xlaunch を使って、リモートで ターミナルを呼び出そうとしても失敗。 rexec も XDMCP もだめ。

素直に telnet で入って、手動で DISPLAY 設定して xeyes を起動します。

% export DISPLAY=pr7:0 % xeyes

実にあっさりと X-WINDOW のアプリケーション、xeyes が Windows 画面に現れてくれました。 それも Windows のアプリケーションとシームレスに、xeyes だけが 画面にぽこっと現れます。 タイトルバーは Windows のものです。 試しにウィンドウマネージャーを起動してみました。 X のアプリにだけ、X のウィンドウマネージャーのフレームがつきました。 これは良いです。使えそうです。

ちなみに 筆者はいつも、X の動作確認用に xeyes を使います。 xeyes は必ずインストールされていることと、失敗しても特に害がないからです。 X-WINDOW はこのようにネットワーク上で使うので、 マシン名など設定を間違えると、 自分の画面ではなく他人の画面にウィンドウがでてしまうことがあるからです。 xterm や emacs などを他人の画面に送りつけてしまったら、 何をされるかわかりません。

久しぶりにまともに見ました。 xterm や twm といった X-WINDOW の画面。 何年ぶりでしょうか。懐かしい限りです。

その後 ASTEC-X のページで FAQ を見たところ、 rexec や XDMCP に関しては、 Linux の場合サーバーを動かすための設定が必要になるのだそうです。

◎ フォントの自作

さらに欲がでました。 全然 Zaurus と関係なくてごめんなさい。 普段使ってるのが液晶モニタ(ノート含)なので、 画面サイズは 1024x768 です。 ウィンドウをいっぱい開くとさすが窮屈な感じがします。 ご存じの通り、X-WINDOW の kterm 14dot の漢字フォントを使います。 これだと 1024x768 画面にはかなり大きなウィンドウになります。

UNIX を使っていた頃は、自分でフォントをコンバートして 12dot や 10dot フォントを設定して使っていました。 ASTEC-X も、そのインストールディレクトリに見覚えのあるフォントデータ pcf が納められています。

昔作ったアプリを引っ張り出して、10dot/12dot の bdf を変換して作成し、 bdftopcf コマンドで pcf を作ります。 ASTEC-X の misc フォルダに転送。 fontdir と alias を書いて kterm を起動すると ちゃんとフォントサイズが変わってくれました。

% kterm -fn rhk12 -fk hk12 &

これで画面も広く使えます。

◎ kterm のリソースを変更する

kterm もやっぱりデフォルトでは EUC 設定のようです。 これは不便なので SJIS に変更しておきます。 漢字コードはメニューでも変更可能で、CTRL を押しながらマウスの真ん中ボタンで 現れます。 スクロールバーの追加も必須でしょう。 これらの設定はリソースとして、home の .Xdefaults ファイルに登録しておくことが出来ます。

KTerm*scrollBar: true KTerm*kanjiMode: sjis KTerm*saveLines: 1500

これで、Windows 上にいながら X-WINDOW アプリを使うこともできて、 Linux のプログラム開発を xterm や kterm で行うことが出来ます。 きっとこのまま X-WINDOW のアプリ開発も出来るでしょう。 XFree86 の面倒な video カード設定もドライバも不要です。 ちょっと高いけど、簡単でかなり気に入ったので Windows で使える Xサーバーソフトをいろいろさがしてみようと思います。

◎ そして zxLinux の開発へ

これでようやく他のソースやアーカイブを展開することができるようになりました。 いままで見たくて比較したくても出来なかった Linux オリジナルソースや、 各種ライブラリ。 LinuxSH のインターフェースやライブラリ実装なども思う存分 参考にすることが出来ます。

[戻る]
[メニューに戻る] [ZAURUS総合] [DirectX] [Ko-Window] [Win32] [WinCE] [携帯電話] [その他]
フルパワー全開 Hyperでんち

Hiroyuki Ogasawara <ho>