CPU種別を見極める

Linuxのソフトウェアをあれこれする環境ならばやっぱりLinuxが最適であり、私は以下の作業をマンドレークの開発用マシンにて行っている。よくあるLinux使用システムとは異なり、NSLU2はX86系CPUを使用していない。よってクロスコンパイル開発のツール群を導入する必要がある。
ロスコンパイル開発のツール群を導入する手始めは、目的とするプロセッサを決めることだ。私が読んだ記事のいくつかには、NSLU2のCPUがIntel IXP420 Network Processorだと書いてあった。しかし実のところこれは販売戦略上の名前であって、今の私にはあまり意味がない。
というわけで我々はこの箱の中にログインし、いろいろ中身を捜索し、LinuxがこのCPUを実際どう判別しているかを知らなければならない。/procファイルシステムはこの役割に適していない。唯一/proc/cpuinfoが役に立ちそうだ。これを表示するのはたやすい…

# cat /proc/cpuinfo
Processor : XScale-IXP425/IXC1100 rev 1 (v5b)
BogoMIPS : 131.48
Features : swp half thumb fastmult edsp

Hardware : Intel IXDP425 Development Platform
Revision : 0000
Serial : 0000000000000000

が、すでに知っていることしかわからなかった。しかしIXP425について言及していたいくつかのレポートが正しいことは証明された。これ以上の事を知るには、別の手段を使わなければならないようだ。ほとんどのUNIXシステムに有効なユーティリティはfileであり、fileはファイルを検査し、ファイルの先頭データによってそのファイルがどんなデータかを教えてくれる。
NSLU2はこのプログラム(file)を含んでいないが、ftpが動いている。ftpを使えば、exeを準備した開発システムに移動させることができる。ためしに我々の大好きな小さなプログラム、telnet.cgiを/home/httpd/html/Managementから移動させてみよう。telnet.cgiをあなたの開発システムに移動させたら、telnet.cgiがどう認識されているかを確認するためにfileを実行してみよう。

# file telnet.cgi
telnet.cgi: ELF 32-bit MSB executable, ARM, version 1 (ARM),
for GNU/Linux 2.0.0, dynamically linked (uses shared libs), stripped

よい結果だ。ようやく我々はARMのCPUを扱っているということが分かった。だからARMのクロスコンパイルツール群をインストールしなければならないというわけだ。