スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

復活の玄箱Pro

デスクトップのLinuxマシンでsambaのマスターブラウザ等をとりあえずやらせていたのだが、常に立ち上がっているわけではないのでこういった用途には今ひとつぴったりこない。また自宅内LAN用のDNS等、低負荷でかつ常に動いていて欲しいサービスもいくつか他にもあるので、かつて若干使用してその後お蔵入していた玄箱Proを現役復帰させることにした。基本的には玄箱ProにLinux(Debian)をインストールして使う手法は確立されており、書籍や各ブログで扱われており、2年以上前に一応の完結を見ている。ただし、現在の最新版であるDebian 6.0.1(Squeeze)との関連でいうと若干注意すべき点がある。

最大のポイントは、玄箱ProのCPUアーキテクチャであるARMに対して、今まではABI(Application Binary Interface: 機械語ファイルの呼び出しの際のレジスタやメモリの使い方の規約)が2種類あって、システムによってそのどちらかを利用していたのだが、Debian Squeezeでは、EABIと呼ばれる後発のABIのみがサポートされるようになったこと。

今までOABIを利用していた人も、Squeeze以降にアップグレードしたければEABIに統一する必要がある。なお、OABIを使用したシステムはアーキテクチャ名ARM、EABIを利用したシステムはArmelと呼ばれる。

私の玄箱Proは、どういう状況かすっかり忘却の彼方だったが、掘り出して起動してみると、Debianの5.0が正式リリース直前のものがインストールされており、一応起動してログインもできる。どうやらsushi-k氏作成のEBAIユーザーランドがインストールされているらしい。

カーネルはOABIとEABI両方が用意してあるが、システムアーキテクチャ自体はarmとして認識されていた。実はこの状態からapt-getでアップグレードを試みて、ftp元にアーキテクチャarmのアップグレードパッケージがないことから上記のような事情に気がついた次第だ。

そこから若干調べて、システム全体をEABI対応で最新の状態にもっていくことにした。まずはカーネルから、Kernel-cross-compile-kurobox-proに習ってデスクトップマシンでクロスコンパイルする。gitから持ってきたバージョンは、2.6.38-rc6-12018-g7780c80だった。

このカーネルでいったんリブートして、次はユーザーランドの構築に取りかかる。と言っても、armからarmelアーキテクチャへの移行は、今のところ由緒正しい方法というのは存在しないようだ。若干調べた結果、要は動作中のシステムで、(せめてシングルユーザモードで余分なプロセスを動かさず)強引に旧バイナリを削除して新しいユーザランドと入れ替えるという恐ろしげな方法しかないらしい。

ArmEABIHowtoというページを発見し、その"Creating a EABI chroot using debootstrap"の項を参考にarmelのユーザランドを構築する。debootstrapというのはえらい便利なツールである。このようにして作成したユーザランドのうち、直接バイナリが絡むディレクトリであるbin sbin lib usr varあたりを、Migrating arm installation to arm EABI installationの項にしたがってエイヤッと一気に入れ替える。これでうまくいくという保証はまったくない気がするが、運が良ければシステムは騙されて、リブートすればあら不思議自分はarmelシステムだと思い込んでくれる。そうなったらあとは、/etc/apt/sources.listのlennyをsqueezeに書き換えてapt-get updateとupgradeを行えば見事にarmelアーキテクチャのSqueezeシステムのでき上がりとなる。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

Author:GM3D
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。