FC2ブログ

yaroespage::weblog

自作パソコンとその他もろもろの、ヨモヤマバナシです。

--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-)
FC2 managemented

 前回(2007/03/27)までのあらずじ。
 ひょんなことから古くなったノートPCをもらったので、非力なマシンでも軽快に動くといわれるLinuxをインストールしてみようと思い、Fedora Core 2をダウンロードしてきてインストールしてみたのですが、思ったより手がかかり・・・って、そりゃ戻りすぎ!

 玄箱を、WiiやDSをインターネットに接続するための無線LANルータの役割をさせようと思い立ち、まずは玄箱にインストールされたDebian GNU/Linuxのカーネルをアップデートさせました。
 先人たちの偉大なる功績・・・つまり、他人様の作ったコンパイル済みのカーネルイメージを玄箱にインストールする方法・・・のおかげで、超簡単にカーネルのバージョンが2.6.20になったのです。
 ところが、そのカーネルイメージにはUSB無線LANアダプタを動作させるためのモジュールやルータ機能を実現するモジュールが組み込まれておらず、結局自分でカーネルを再構築する必要があることが分かりました。
 しかし、コンピュータとしては非力部類になる玄箱にカーネルのコンパイルをさせると一連の作業に2時間以上かかるらしく、初めてのカーネル再構築ということで何回かのトライアンドエラーを行うことを考えると怖気づいてしまうのです。
 その時、すばらしいアイデアを思いついたのでした!

 ほら、目の前に(玄箱と比べたら)超高速なPCがあるじゃないですか!

 そうデス!

 Athlom 64 X2の余りあるCPUパワーで、玄箱用のLinuxカーネルを超高速にクロス・コンパイルすればよいのです!

 それだけじゃ、面白くないので、“俺PC”に直接Linuxをインストールするのではなく、Microsoft Virtual PC 2007をインストールして仮想PCを構築してそこにLinuxをインストールすることにします。

 仮想PCなら、Windows XP上のひとつのウィンドウアプリケーションですから、新しくインストールしたLinux上で設定をしなくても、いつもの環境でイロイロ調べ物をしながらの作業できますしね。

 せっかく無料なんだから使わない手はないですよね。

 ということで、Microsoft Virtual PC 2007のダウンロードページからダウンロードしてきて、インストールします。

 30MB少々ということで、ADSLな私でもそんなに時間をかけずにゲットできました。

 つぎは、PC側のLinuxですが、玄箱と同じDebian GNU/Linuxを選ばない理由はありません。

 Debian GNU/Linux 3.1のダウンロードページの適当なミラーサイトからダウンロードしてきます。

 文章にするとたったの五十数文字で終わりですが、このDebian GNU/Linux 3.1、“DVD 2枚組み”というWindows Vistaも真っ青な豪華仕様。

 ダウンロードに丸1日を要しました。

 DVD2枚分ダウンロードしましたが、実際に使用したのは1枚目だけでした。
にんともかんとも。

 さて、Microsoft Virtual PC 2007(長いので以下「VPC2007」)はCD/DVDイメージを扱えますので、仮想PCをテキトーに設定しDebianのDVDイメージを仮想DVDドライブにマウントして仮想コンピュータを起動します。

 ややあって、素朴なインストール画面が表示されます。

 日本語でインストール作業を進めていけるのは、Linuxといえどもイマドキトーゼンノコトなんですが、質問内容はWindowsに比べたら少々高度です。

 専門用語丸出しのうえ、そっけない表現のため、特に「初心者お断り」感が禁じ得ません。
 Debian/GNU Linux 3.1になって簡単になったとのコトですが、もう少し何とかならないでしょうかね。
 それとも、初心者はFedra Coreを選べってコトでしょうか?
 つーか、初心者はLinuxなんか使わないから、これでも良いってコトなんでしょうか?
 むう。

 とりあえずこの辺のサイトを参考にインストールを進めます。

 繰り返しになりますが、同じ画面で確認しながら作業できるのが仮想PCの利点ですね。

 果たして私の仮想PCに↓のような画面が表示されました。

仮想Debianのログイン画面

 先ほどの解説サイトとはDebianのバージョンが違うためでしょう、デザインが若干違いますね。

 いきなりrootでログインしてみます。

 GNOMEが起動しましたので、GNOME端末を起動し、なんか打ち込んでみます。

 ぎゃあ!

 なんたるちあ!

 なぜか、キーがダブって入力されてしまいます!

いわゆるチャタリングってやつ?

 ナゼこういうことが起こるんでしょうか?

 Virtual PCが悪いのか、はたまたDebianが悪いのか知りませんが、作業しにくいったらありゃしない。

 とりあえず、玄箱用にクロス・コンパイル環境を作るを参考に仮想Debianの環境を整えていきます。

 まずは玄箱側で、libc6-devのインストールとクロス・コンパイルに必要なファイルの書庫化(Linux風に書くとTarball化)をします。

KURO-BOX:~# apt-get install libc6-dev
(メッセージ等がデロデロ表示されますが省略)
KURO-BOX:~# mkdir runtime
KURO-BOX:~# cd runtime
KURO-BOX:~# cp -RL /lib ./
KURO-BOX:~# cp -RL /usr/lib/* lib
KURO-BOX:~# cp -RL /usr/include ./
KURO-BOX:~# cd ..
KURO-BOX:~# tar zcvf runtime.tar.gz runtime
(メッセージ等がダラダラ表示されますが省略)

 玄箱から仮想Debianにファイルをコピーする方法ですが、FTPは設定が面倒くさそうなので、仮想DebianにSambaをインストールして、Windows経由でコピーすることにします。

 仮想DebianのGNOME端末は、チャタっては余分な文字を消し、チャタっては余分な文字を消しを繰り返さないといけないので、非常に時間が掛かる&疲れます。

 Sambaなら、SWATを使えばWindows側からInternet Explorerを使って設定できますので、ダンゼン楽チンです。

virtual-debian:~# apt-get install samba swat
(メッセージ等がズラズラ表示されますが省略)

 面倒くさいので、仮想Debianはルート(/)を共有にしちゃいます。

 通常の運用だと絶対に考えられない方法ですが、こういうところも用済み後即消去と割り切って運用できる仮想PCならではの利点ではないでしょうか。

 で、Windows側からSambaの設定をしていて思いついたのですが、仮想Debianも玄箱DebianのようにWindows側の端末エミュレータソフトからログインして使うのはどうでしょう。

 ただし、リモートログインでは「いきなりrootでログイン」はできないので、いったん通常ユーザでログインし、suで管理者になるか、sudoする必要があります。

 ということで、早速やってみましたら、当然というかなんと言うか、チャタリングがおきません。

 こりゃストレスゼロです。

 早く気づけばよかった。

 スピード倍増です。

virtual-debian:~$ su -
Password:
virtual-debian:~# tar zxvf runtime.tar.gz
(メッセージ等がゾロゾロ表示されますが省略)

前述した参考サイトを参考にruntime/lib/libc.soを書き換えます。

virtual-debian:~# vi runtime/lib/libc.so
/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf32-powerpc)
GROUP ( libc.so.6 libc_nonshared.a )
         ↑  と、   ↑ を書き換える

仮想Debianにbinutilsをダウンロードしてきてビルドしてインストールします。

# wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.17.tar.bz2
              2007年03月現在で 2.17 が最新版でした ↑
# mkdir source
# cd source/
# tar jxvf ../binutils-2.17.tar.bz2
# cd ..
# mkdir build
# mkdir build/binutils
# cd build/binutils
# ~/source/binutils-2.16/configure --target=ppc-linux --ena
ble-shared  --prefix=/usr/local/ppc-cross
# make
# make install

 面倒くさいので最初から最後までrootで作業していますが、前述のとおり仮想PCだからと割り切ってるからであり、本来あまりオススメできるやり方じゃありません。

 お次は、gcc-coreをダウンロード、ビルド、インストール

# cd    ← ホームディレクトリに戻って
# wget ftp://ftp.iij.ad.jp/pub/gcc/releases/gcc-2.95.3/gcc-
core-3.4.3.tar.gz
     ↑    仮想Debianのgccとバージョンを合わせます
# cd source/
# tar zxvf ../gcc-core-3.4.3.tar.gz
# cd ../
# mkdir build/gcc
# cd build/gcc/
# export PATH=/usr/local/ppc-cross/bin/:$PATH
# ~/source/gcc-3.4.3/configure --prefix=/usr/local/ppc-cros
s --target=ppc-linux --enable-shared --disable-nls --with-a
s=/usr/local/ppc-cross/bin/ppc-linux-as --with-ld=/usr/loca
l/ppc-cross/bin/ppc-linux-ld --with-headers=/home/user/runt
ime/include --with-libs=/home/user/runtime/lib
# make
# export PATH=/usr/local/ppc-cross/bin/:$PATH
# make install

 で、最後に(参考サイトにあるとおり)実際にC言語のプログラムソースを書いてコンパイルし、玄箱で実行してみます。

virtual-debian:~# exit   ← 一般ユーザに戻って
virtual-debian:~$ cat > hello.c
#include 
int main (void) {
	printf ("Hello world.n");
	return 0;
}
^D
virtual-debian:~$ ppc-linux-gcc -Wall -o hello hello.c

 出来上がったhelloをWindows経由で玄箱の一般ユーザのホームフォルダにコピーします。

KURO-BOX:~$ ./hello
Hello World.

 できました!

 おかげさまでクロス・コンパイル環境ができました。

 IT Memo - コンピューターのちょっとマニアなメモサイトのNabeさま。大感謝です。

 ということで、クロス・コンパイルは次回!

初出:2007/04/02

スポンサーサイト
FC2 managemented

このコメントは管理者の承認待ちです

2014.01.29 00:35  | # [ 編集 ]

このコメントは管理者の承認待ちです

2014.02.05 18:20  | # [ 編集 ]












管理者にだけ表示

トラックバックURL↓
http://yaroespage.blog121.fc2.com/tb.php/15-45611ad1

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