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

 前回は「ということでクロス・コンパイルは次回」なんて風に終わりましたけど、案の定といいますか何といいますか「それじゃあクロス・コンパイルしてみましょう」というワケにはいきませんでした。

 前回に引き続きIT Memoさんとこの玄箱用のカーネルをクロス・コンパイルする(以下「参考元の記事」と略します)を参考に進めていきます。

 カーネルはThe Linux Kernel Archivesから、玄箱用のパッチはGenbako kernel collectionからダウンロードしてきます。

 参考元の記事はカーネル2.4ですが、私がやりたいのはカーネル2.6のコンパイルですから、カーネル2.6の最新版であるlinux-2.6.20.3.tar.bz2(忙しさにかまけて記事を更新していないうちにlinux-2.6.20.7.tar.bz2が最新版になってますね。あはは)をダウンロードします。

 Linuxには、他所様んトコのやり方をそのまま自分んトコでやるとなぜかうまくいかないのという醍醐味がありますから、常に応用するキモチを持つのが吉です。

 Genbako kernel collectionさんとこのパッチは2.6.20までしかありませんが、参考元の記事が2.6.20.3に2.4.33用のパッチを適用されていますから、私の場合も2.6.20.3に2.6.20用のパッチを適用できるでしょうと高を括ってmodules-2.6.20-kuroBOX.tgz(玄箱HGの場合はmodules-2.6.20-kuroHG.tgzなので注意)をダウンロードします。

 仮想Debian側のフォルダにコピーしたら、端末エミュレータでログインし、速攻でrootになって作業開始です。

$ su -
Password:
# cd /usr/local/src
# tar jxvf (保存したフォルダ)/linux-2.6.20.3.tar.bz2
(メッセージ省略)
# cd linux-2.6.20.3
# patch -p1 (保存したフォルダ)/kurobox-sources-2.4.33.patch
(メッセージ省略)

 元記事のMakefileの修正は必要ないようです。
 最初はマネしてやってみましたが、完成したカーネルのバージョンを表示させると「2.6.20.3-kurobox-kurobox」と表示されてしまいました(泣)。
 実は、今回、3回コンパイルのやり直しをしました。
 (本記事ではさらっと書いてますけ、そうなんですヨ)。
 クロス・コンパイルで正解でしたヨ。

 作業を続けます。

# export PATH=/usr/local/ppc-cross/bin:$PATH
              ↑クロス・コンパイル用のパスを通して
# cp config_kurobox .config
# make ARCH=ppc CROSS_COMPILE=ppc-linux- oldconfig
(ものすごい勢いでメッセージ等が表示されます。。。)

 端末エミュレータのログをスクロールさせてみると、さまざまな項目について質問に自動的に答えてくれているようです。

 なるほど、このためにconfig_kuroboxを.configにコピーしたんですね。

 でも、今回はUSB無線LANアダプタようのモジュールやIPルーティングのモジュールを入れなくちゃいけませんから、このままというわけにはいきません。

 かといって、USB無線LANアダプタの部分やIPルーティングの部分をYesにしようにも、決まった質問が決まった順番で出題される仕様のようで、数百はある質問数(いやマジで)について全部正確に答えていう自信なんてま~ったくありませ~ん。

 .configを書き換えなきゃダメなんですかねぇ・・・。

 ・・・ということで、いろいろググってみたら、make oldconfigでなくmake menuconfigとすればメニュー形式で必要な部分だけ変更できるんだということが分かりました。

 ただし、menuconfigを有効にするためにはncursesがインストールされている必要があるようです。

 案の定、我が仮想Debianにはncursesがインストールされていませんでしたから、ncursesの配布ページ(GNU)からソースをダウンロードしてきてインストールします。

# tar zxvf (保存したフォルダ)/ncurses-5.5.tar.gz
      ↑.gzの場合はzxvf
(メッセージ省略)
# cd ncurses-5.3
# ./configure --with-shared --with-normal 
(メッセージ省略)
# make
(メッセージ省略)
# make install
(メッセージ省略)

 では、menuconfigしてみます

# make ARCH=ppc CROSS_COMPILE=ppc-linux- menuconfig

menuconfigの図

 やりました!

 これで、先ほど実行したoldconfigの設定を尊重しつつ、自分の好みの設定にアレンジできるというワケです!

 玄箱Debianでのkernelのカーネルの再構築方法を参考にいじっていきます。

 PCMCIAカードは使いませんので、IPルーティングのためにNetworking関係を、USB無線LANアダプタのためにDevice Drivers関係を設定します。

 ておきましょう。これまた、実際の画面とWebの記事がビミョーに違いますので、そこはそれテキトーに、関係ありそうなところを[*]または[M]に設定していきます。

 各メニュー項目は、エンターキーで一段下のメニューに入り、ESCキー二度押しで上に戻る。
 設定項目はスペースキーを押すごとに[*]→[M]→[ ]と変わります([M]がない場合もあり)。
 多分、[*]が最初から組み込み、[M]がモジュールとして組み込み、[ ]が組みこまない・・・という感じでしょう。
 ・・・ってのは私のカンですから、本当が知りたい方は個々で調べてください。

 目指すは黒箱の無線LANルータ化ですから、名前にroutingが付くものやfilterが付くものは全て[*]または[M]、さらにDHCPも入れましょう、IPsecも入れましょう。

 NATやMASQURADEは、Networking→Networking Options→Network packet filtering flamework (Netfilter)てなカンジで奥深くにあり、探すのに苦労しました(笑)。

 Devicxe Drivers関係では、Devicxe Drivers→Network device support→Wireless LAN (non-hamradio)にメジャーな無線LANチップのモジュールがありますから、保険として一通りチェックしておきます。

 Devicxe Drivers→USB supportは、USB2.0とかちゃんと設定されているようだったので、特にいじりませんでした。

 さて、設定に納得したらクロス・コンパイルです。

# make ARCH=ppc CROSS_COMPILE=ppc-linux- dep
scripts/kconfig/conf -s arch/ppc/Kconfig
*** Warning: make dep is unnecessary now.

 なんか、ウォーニングが出てますが気にせずいきます。

# make ARCH=ppc CROSS_COMPILE=ppc-linux- vmlinux
(768行のメッセージと十数分の時間が経過)
# ppc-linux-objcopy -O binary vmlinux vmlinux.bin
# tar jcvf ../kernel-2.6.20.3-kurobox.tar.bz2 vmlinux.bin S
ystem.map .config
(メッセージ省略)

 参考元の記事では、「vmlinux.bin」「System.map」「.config」の3つファイルをいったん別の名前に変更しTarballに固めています。しかし、どうせ玄箱に移してから元の名前に戻す必要があるので、ここではそのまま固めちゃってます。

 お次は、モジュールのクロス・コンパイルです。

# make ARCH=ppc CROSS_COMPILE=ppc-linux- modules
(812行のメッセージと十数分の時間が経過)
# make ARCH=ppc CROSS_COMPILE=ppc-linux- INSTALL_MOD_PATH=.
./modules modules_install
(メッセージ省略)
# cd ../modules/lib/modules
# tar jcvf ../../../modules-2.6.20.3-kurobox.tar.bz2 2.6.20
.3-kurobox
(メッセージ省略)

 これで、/usr/local/srcにkernel-2.6.20.3-kurobox.tar.bz2とmodules-2.6.20.3-kurobox.tar.bz2ができましたので、これら2つのファイルを玄箱にコピーし、インストールします。

KURO-BOX:~# cd /boot
KURO-BOX:/boot# tar jxvf (保存したフォルダ)/kernel-2.4.33.3-ku
robox.tar.bz2
KURO-BOX:/boot# cd /lib/modules
KURO-BOX:/lib/modules# tar jxvf modules-2.4.33.3-kurobox.ta
r.bz2
KURO-BOX:/lib/modules# depmod -F /boot/System.map -a 2.4.33
.3-kurobox

 ドキドキしながら玄箱を再起動します。

KURO-BOX:/lib/modules# echo -n DDDD > /dev/ttyS1
KURO-BOX:/lib/modules# shutdown -r now

 ドキドキ・・・。

 起動してきましたよ。

 カーネルが大きくなった分、起動に時間がかかっている模様です。

 ドキドキドキドキ・・・。

 玄箱のLED点滅が点灯に変わりました。

 端末エミュレータでログインしてみましょう。

Debian GNU/Linux 3.1 KURO-BOX
KURO-BOX login: henry
Password:
Last login: Mon Mar 26 03:46:07 2007 from leo-kichi on pts/0
Linux KURO-BOX 2.6.20.3-kurobox #2 Wed Mar 21 20:39:50 JST 2
007 ppc GNU/Linux
 
The programs included with the Debian GNU/Linux system are f
ree software;
the exact distribution terms for each program are described 
in the
individual files in /usr/share/doc/*/copyright.
 
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the e
xtent
permitted by applicable law.
henry@KURO-BOX:~$

 シュペール!

 大成功です!

 2.6.20.3-kuroboxになってます。

 次はいよいよ、無線LANアダプタの設定です。

 ・・・って、その前に何を買うか決めなきゃ。

 おいおい、まだ買ってないのかよ。

 とまあ、その辺ひっくるめて次回で~す!

初出:2007/04/14

誤字等訂正:2007/04/16

FC2 managemented

 Windows Vistaをもらってしまいました。

 会社関係の人で、当サイトのファンの方で、過去にもノートPCとかイロイロといただいてるパトロンのようなお方が、「Vista買ったのはいいけど、忙しくてインストールできないからあげる」と。

 なんともリッチなハナシです。

Windows Vista Home Premium DSP版とFDD てなことで、もらったのはWindows Vista Home Premium DSP版とセット購入のFDドライブ、Vistaは開封済みでしたが、FDDは未開封のままです(笑)。

 19,000円くらいしますよ。カンシャカンゲキアメアラレです。

 開けてみてびっくり。

 Windows XPはレーベル面のすべてがギラギラのホログラムでしたが、Vistaは外周1.5cmくらいの部分だけがホログラムなんですね。

 レーベル面の文字がダンゼン読みやすい。

 大正解デス。

 さて、FDDは・・・白色ベゼルですか・・・。

 俺PCはブラックケースなので、FDDが浮いてしまいますなあ。

黒いボディに白いFDD ・・・と思ったけど、USB端子とIEEE1394端子の前面に引き回す3.5インチサイズのパネルが白色でした。

 だから、いまさら気にしない(→写真)。

 とりあえず、Vista Beta2のテストで使っていたHDDを引っ張り出してきて繋ぎ、そこにインストールしてみました。

 基本的にBeta2とほぼ同じインストール画面ですね。

 仮インストールなのでプロダクトキーは入力してません。

 仮といいながら、さっそく変なモン(上の写真の画面にもチラッと写っているガジェットとか)をインストールしてますが、“テスト”なんだからイロイロやってみなきゃつまんないでしょ。

 といいつつも、玄箱(Linux)のほうも更新しなきゃなので、今回は「とりあえずご報告」ということで。

 この続きは、また、そのうちに(笑)。

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