2011年9月23日金曜日

Puppy LinuxでWindows用無線LANドライバを使おう

ノートPCにWary Puppyをインストールしてネットに繋ごうとした時の話し。

自分の古いノートPCには、LANインターフェース(有線・無線共に)がない。
貰い物のBUFFALOのWLI-CB-B11が手元にあったので、カードスロットに挿し、
Wary Puppy5.1.1のネットワークウィザードを使って簡単に繋げる事ができた。


もう一つ、CoregaのCG-WLUSB300NWH(白い方のヤツ。って色なんか関係無い!!)
と言うUSB接続のアダプタがあったので、こっちも繋いで見ることにした。
が、CG-WLUSB300N用のモジュールはサポートしていないらしく、繋げることが
出来なかった。

手動でUSB関連らしいモジュールを順番に総当りしてみたが、やはり駄目。
(予め入っているモジュールで行けるなら、自動で認識するっちゅうの)
こうなると、CG-WLUSB300N用のモジュールを別途入れなければならない。

例によって、検索してみた。
Realtekの型番を調べ、Linux用ドライバのソースを落としてきて、
自分でコンパイルする方法と、ndiswrapperを使ってWindows用のドライバを
そのまま流用する方法が見つかった。
その時はまだ、ソースを落としてコンパイルするなんて経験が無かったので、
「モジュールが無ければ、自分でソースからコンパイルしる」なんて言う
漠然とした情報だけでは、手も足も出ない。
したがって、選択肢は一つ。
Windows用のドライバを流用することにした。

先にWindowsXP上で準備段階の作業をする。
CoregaのサイトからCG-WLUSB300Nのドライバをダウンロードして解凍。
フォルダを覗いて見ると、
\corega\wlusb300n_102\Driver\CG-WLUSB300N
の中に以下のフォルダが見つかった。

VistaX64
VistaX86
Win2K
Win7X64
Win7X86
WinX64
WinXP

この内、Vista、Win7系を除いたそれぞれのフォルダにある

net8192u.inf
rtl8192u.sys

セットにして(ここ重要!)Wary Puppyの適当なディレクトリにコピー。


順番にndiswrapperで読み込ませてみる。


WinXPの所で、あっけなくドライバモジュールが読み込まれた。
後は、ウィザードの指示に従って作業するだけ。



繋がったぁ!
Pupyy Linux凄い!
(と思ったら、ndiswrapperはPuppy Linux独自の機能じゃなくて、Linux全般で
使えるのね、、、orz)
http://ja.wikipedia.org/wiki/NdisWrapper

手持ちの無線LANアダプタが認識されない時は、一度ndiswrapperを試してみたら?
意外と簡単にWindowsのドライバが使えちゃうかも。

※追記(2014/09/10)※
ドライバは認識されたけど、接続ができない場合、
↓も参照ください。
「ArchBang でCG-WLUSB300NWHを使う」
firmware の導入で上手く行くかもしれません(確率は低そうですが)

2011年9月18日日曜日

Puppy LinuxにMinecraftのサーバ(fCraft)を建てよう(後編)

前回の続き。メインPCの方で動作確認できたので、古いPCでやってみる。
古いPC(SVII265)には、Puppy Linux4.3.1日本語版が入れてある。
こちらで、fCraftサーバを動かして、メインPCから接続するのが目標。

当初、古いPCでもMonoをビルド、インストールしようと思っていた。
が、このスペックでmakeなどしたら、どれだけ時間が掛かるか分からない。
あるいは、メモリ不足でハングアップする可能性の方が高いか、、、。

で、Puppy Linuxでは独自のPETパッケージを作成する機能があることを
思い出した。
古いPCでビルドするなんて危険を犯さなくても、PET化してインストールすれば、
簡単じゃないか!

早速、メインPC上のLucid Puppy5.2.5でPET化してみる。
今までにPET化作業はしたことが無く初めてになるので、ちょっと心配。

PET化の方法はココにあるので、その通りにやるだけ。

ビルド、インストールと同じ要領で作業を進めて、make install とするところで
new2dir make install
とやるだけ。
後は表示にそって作業を進めていけば終了する。

Puppy Linux用のmonoを動かすPET

libgdiplus-2.10-i486.pet
mono-2.10.2-i486.pet
2つのpetファイルが出来上がったので、それをPuppy Linux4.3.1の方でインストールする。
と言っても、petファイルをクリックするだけ。
mono-2.10.2.petは55MBもの容量があり、相当な時間が掛かると思いきや、意外とあっさり
インストールが終了した。

よし、fCraftを入れて.exeファイルに実行許可を与え、関連付けを/udr/bin/monoに設定。
ポチッとな!

何も起こらない!

うん。予想通り(?)
Lucid Puppy5.2.5でビルドしたものが、そのままPuppy Linux4.3.1で動かないことは
想定内なので、メインPCの環境をPuppy Linux4.3.1に切り替えて、同様の作業をした。

「やってもうた!!」
作業が終了してから気がついた。
先に作成したLucid版petファイルと同じ名前で、4.3.1版のpetファイルを作ってしまった。
皆さんPET化作業をするときには、名前の付け方に注意しましょうね!
簡単な説明を付加する事もできるので、解り易くしておきましょうね!

Lucid版のpetを削除して、新しいpetパッケージをインストールする。

OK!!

fCraftが無事に起動!
サーバが立ち上がった!

古いPCで強引にビルドせず、PET化してインストールする方法は大正解だった。

さて、以上で基本的な作業が終了したので、ここからが本番。
立ち上げたサーバへ、メインPCから接続して実際にMinecraftをプレイしてみよう。
fCraftUI.exeを起動して、上段に表示されるアドレスをコピーし、メインPCで
接続してみる。

Failed to connect
You failed to connect to the server. It's probably down!

はいっ??

サーバは落ちてませんが?

何回もやってみたが、結果は同じ。
http://www.fcraft.net/wiki/Installation_Instructions
ココを見ると、Troubleshootingに記載があった。

Other players cannot connect from LAN
1、2、3の手順でやってみるも、まだつながらない、、、。
ん?まてよ、さっきコピーしたアドレスと記述が微妙に違いますな。

http://www.minecraft.net/play.jsp?ip=_____&port=_____

この記述を下の様に修正してみる。
(ここまで来ると、勘が頼り)

http://www.minecraft.net/classic/play/play.jsp?ip=_____&port=_____

オォーーッ!!
接続成功したぁーーー!


Puppy Linux4.3.1でfCraftサーバ起動


実際にプレイできることが確認できた。

↑古いPCのサーバ
↑メインPCで接続している

推測では、Minecraftの新バージョンが出たのを機に、本家のサイト構成の
変更があったのではないかと。

Puppy LinuxでMinecraftのサーバを建てる為にMonoを入れる為にソースからビルドし、
非力なPCにインストールする為にPET化し、、、。
日本語でOK?状態の作業がようやく終了した。

非常に疲れたが、目標を達成できた満足感はある。
Puppy Linuxの(日本語の)情報が少なくて難儀することが多いが、自分で色々と
試してみるのも面白みの一つと思って、やって行こう。

2011年9月17日土曜日

Puppy LinuxにMinecraftのサーバ(fCraft)を建てよう(前編)

ちょっと長いです。興味のある方だけどうぞ。

Minecraftと言うゲームをやってみた。
無料で出来るClassic版。

シングルプレイの他にマルチプレイで多人数の参加ができる。
見知らぬ人が建てたサーバにお邪魔して、ゲームをプレイできるのだ。
ただし、お邪魔する身分では利用できる機能の制限がある。

なので、自分でサーバを建ててしまおうと言う目論見。

サーバには公式で提供するサーバと、カスタムサーバがある。
機能的にはカスタムサーバの方が良さそうなのでココで紹介されている
fCraftと言うのを使ってみよう。


先ずは、WindowsXPでサーバを建ててみる。ココを参考にしたら、
あっけないくらい簡単にできてしまった。

しかし、サーバマシンと自分でプレイするPCが同じになってしまうので、
別PCでサーバを建てられないものかと思案。

fCrsftはLinuxにも対応してるらしいので、Puppy Linuxで出来ないかと
トライすることにした。

例によって、Puppy Linux + fCraft などと言う日本語の情報量が圧倒的に
少ない状況。

http://www.fcraft.net/wiki/Installation_Instructions

さあ、英語のお勉強かぁ?

とりあえず、LinuxではMonoなるものが必要と、更にGUIで動かすならlibgdiplus
も必要とな。
じゃあ、Puppy Linux用のPETパッケージを探してみましょうか。

うん、あった、あった。

http://openbve.freeforums.org/openbve-in-puppy-linux-mono-t692.html

openBVEって言う鉄道シミュレーションのフォーラムらしいが、そこに
mono-2.4-i486.pet
libgdiplus-2.4-i486.pet
2つとも紹介されている。(Google先生。流石です!)

この2つが入ったら、Monoで「.exe」ファイルを実行させるようにする。
ターミナルでコマンド入力

mono SomeFile.exe

あれ?エラーですね。
これって、.exeファイルをmonoで起動させるってコマンドじゃないのかな?

よく解らんので別の方法を試してみる。
先に、fCraftのファイルに実行属性を付加しておいて、クリックでMonoを呼び出すように
ファイルの関連付けをする。
んでもって、ConfigTool.exeをクリック。

おおー!!
起動したじゃないですか!

Monoってのは、.NET Framework環境をLinux上に構築するらしく、.NETアプリがLinuxで
動いてしまうと言う事らしい。(凄いですね)

あとはWindowsとほぼ同じ、って書いてある。問題はファイアーウォールの設定か?
とりあえず細かい設定は置いといて、ファイアウォールをoffにした状態でやってみる。
fCraftUI.exeを起動したが、何故か一瞬だけウィンドウが出て消えてしまう。
fCraft.logを開いて眺めて見ると、

ERROR: Could not parse Mono version.
Warning: You are using a relatively old version of the Mono runtime ().
It is recommended that you upgrade to at least 2.8+

うーん、Monoのバージョンが解析不能なくらい古いらしい。
fCraftのページを見ると最低でも2.6.4、推奨は2.10.2となってる。
2.4じゃ駄目って訳か、、、。
検索してみたが、該当バージョンのPETパッケージが見つからない。
Debianのmono-runtime2.6.3を見つけたので試しに入れてみた。
やはりfCraftUI.exeを起動すると、ウィンドウが出て消えてしまう。
fCraft.logで確認すると、今度はバージョン解析はできているが、まだ古いと。

こうなったら、推奨バージョンのmonoソースを落として、自分でビルド、インストール
するしかないな!


検索して次のページがあったので、これを参考にしながらやってみる。
http://smdn.jp/programming/mono/build_install/mono-2.10/

通常はPuppy Linux4.3.1を使っているが、新しめのバージョンの方が無難だろうと
考えて、手持ちのCDにあるLucid Puppy5.2.5をCDブートで使うことにする。
更に、makeなど低スペックPCでは荷が重いので、メインで使っているPCで作業する。
(OKになれば、同じ手順を古いPCでやってみる)
Lucid Puppy5.2.5を初期状態のまま、LANとブラウザの設定だけ。

ファイアウォールは起動しないままにしておく。
(動作確認が目的なので、日本語化もせずにそのまま使う)

ソースコード(mono-2.10.2.tar.bz2)を展開するだけでも相当な時間が掛かってしまった。
(この時点で長い戦いになることは、容易に想像できるw)
まずは、libgdiplus-2.10からビルドする。
configureにはパラメータを付けずにそのまま実行。
make、make installは終わった。
/usr/local/lib/にインストールされた。
ふと嫌な感じが頭を過る。
「libgdiplus-2.4-i486.petとディレクトリが違うぞ?」

ま、いっか。って事で、次にmono-2.10.2のビルド。
これもパラメータは付けずに実行。
いざ、make。ポチッとな!
しばらく、流れる文字を見ているとErrorやらWarningやらが非常に目につく。
が、止まることはなかったので、長時間になることを覚悟して席を外した。

1時間後戻ってみると、makeは終わってる。
続いて、make install

終了後に、mono -V を実行してみると、ちゃんとバージョンが表示された。
お!行けるのか?
fCraftを実行、、、。

何も起こらない。
monoファイルを探すと、/usr/local/bin/にインストールされている。
「これもmono-2.4-i486.petの時と違うぞ?」

exeファイルの関連付けがおかしいのかもしれない。
改めて、/usr/local/bin/monoに関連付けしてクリック。

何も起こらない。

mono関連のディレクトリを色々開けてみると、何かファイルが少ない気がする。
(気がするって、ヲイヲイ!)。
と言うか、空のディレクトリさえ在る??
これは、ディレクトリだけ作られて中のファイルがコンパイルされてないのか。
やはり、パラメータ無しだし、インストール先も変だし、やり直しだなぁ。

調べてみると、monoビルドの際、先にインストールしたlibgdiplusを参照するので、
その参照先が違っていると駄目らしい。

今度は、configureにprefixを付けて、2.4を入れた時と同じディレクトリに
インストールするようにした。
(実際には、prefixの指定方法を間違えて、/usr/lib/lib/や/usr/bin/bin/に
インストールしたり、何回かやり直してる、、、orz)

先ずは、libgdiplus。

./configure prefix=/usr/
make
make install

/usr/lib/にインストールされたのを確認。

次に、monoでもprefixを付け、更にlibgdiplusを参照できるようにと
--with-libgdiplus=/usr/lib/ を付加し、その他は参考ページに記載してあったパラメータを付けた。

./configure --prefix=/usr --with-libgdiplus=/usr/lib/ --with-ikvm-native=no --with-profile4=yes --with-moonlight=no --with-monotouch=no --with-mcs-docs=no --with-x
make
make install

今回もWarningが大量に流れていく。が、Errorは見当たらないかも、、、。
1時間程掛けて、作業が終了。

mono -V で確認し、インストール先も/usr/bin/に入っていることを確認。
exeファイルの関連付けを、今入れたmonoにする。
よし、クリック。

ヤッホー!!
起動しましたぜ。ConfigTool.exeで設定をし、続いてfCraftUI.exeを起動。
こんどは、ウィンドウが消えることなくサーバを建てる事ができた。

Lucid Puppy5.2.5でfCraftサーバ起動


次は、古い低スペックPCへのビルド、インストールを試してみる。
どこまで対応できるか不明だけど、古いPCをサーバにして、メインPCからアクセス
できれば、当初の目論見は完了することになる。
(この後、何も低スペックPCでビルドしなくても、能力のあるPCでPET化して、それを古いPCへ
インストールすれば良い事に気が付いた。PETの作成から実際にサーバを動かすまでは次で)

※注意※
個人保存ファイルのサイズを充分大きく取っていないと失敗するかも


2011年9月4日日曜日

kernel panic

デスクトップPCにインストールしてあったPuppy Linuxでkernel panic発生。

まぁ、原因は自分の操作ミスなんだけど。

インストールしてあるPETパッケージを整理しようとして、パッケージマネージャで
削除していたが、処理が終了する前に電源を落としてしまった。

kernel panicの対処法を探すのも面倒なので、一からインストールし直す事にした。

ちょうど、Full installの手順をブログに書いていたところなので、おさらいの意味も含めての再インストール。

通常のインストール自体はマニュアル通りにやれば難しくない。
自分の環境ではサウンドカードの認識が問題となるのだが、自分でブログに書いた手順で設定ができた。

この手順さえ身に付けておけば、もうインストールも恐く無いぞ!!

Puppy Linuxのダブルクリック(続き?)

※ダブルクリック間隔の調節については、2014/03/13のブログを見てください
  http://aoo10yan.blogspot.jp/2014/03/blog-post.html

実は、Puppy Linuxを使い始めた当初(ってまだ大して使い込んでる訳じゃないですけど)「ウィンドウマネージャ」って代物がデスクトップ全般を制御してると思っていた。JWMがデスクトップアイコンや壁紙をROX-Filerのピンボードに委譲しているのは、JWMに特別の事だと思っていた訳で、、、。
「じゃあ、ウィンドウマネージャを替えれば、ウィンドウマネージャの設定でダブルクリックとか統合して調整出来んじゃね?」
って事で、ROX-Filerのピンボードを切った状態で、ウィンドウマネージャを替えてみた。

IceWMを入れて、思い違いをしていたことが解った。

IceWMでも、デスクトップ(アイコン)を表示(制御)する機能は用意されていなかった。

Windowsユーザとしては、真っ黒な画面を前にして途方に暮れる訳で。せめて壁紙だけでも何とかしようと、IceWMの設定(preference)を覗いてみた。
確かに DesktopBackgroundImage="" という項目が見つかる。
そこを、いろいろ書き直してみたが、どうも設定が反映されない。
どうやら、jpegやpngの対応には別途ライブラリが必要な模様(未確認)。

そこで、IceWMについて検索しているときに出てきたIdeskってのを入れてみようと。

http://www.murga-linux.com/puppy/viewtopic.php?t=54458

Ideskなら、壁紙の設定だけじゃなくデスクトップアイコンの表示も出来るみたいだぞ!

記述の通りに、ライブラリとIdeskのPETパッケージをインストール。
/root/.idesktop ディレクトリを新規に作成。
準備が出来たところでターミナルから、

idesk (パラメータも何も無しでこれだけ)

「壁紙用のフォルダが無い」とか「壁紙のファイルが無い」とか言われるが、、、。
うん。黒い画面に「家(ホーム)」のアイコンが表示された。
改めて、  /root/.idesktopを除いてみると「default.lnk」と言うファイルが作成されている。
 これが、「家」アイコンを表示させている。
記述例にならって、新たに「opera.link」ファイルを作成して、Operaのアイコンも設置してみる。
さっき怒られたので、.ideskrcファイルを開いて、壁紙の設定もしてみる。

再びideskを実行。

壁紙に設定した画像のサイズが合っていないためか、壁紙がタイル形式で表示された。
壁紙の設定には Background.Mode と言う項目があり、ここで表示モードを指定できるらしいが、
Center(中央表示)を指定してるのに、タイル形式になってしまった。
この設定に関しての解決は未だに出来ていない。画像ファイルのサイズをディスプレイに合わせる
ことで調整した。(因みに、画像ファイルの形式はpngでもjpegでもOK)

Operaのアイコンも表示された。
Operaのアイコンをクリックして、起動には成功したものの、なんか変だぞ。
クリックの反応が悪い!
何回かクリックを試してみて、原因が判明した。

なんと、O(アルファベットのオー)のアイコンでは、文字の中抜き(透過)された部分でクリックが効いていない!!

笑うしかないでしょう。
(アイコンに使っている画像の透過部分を埋めようかとも思ったけど、結局デスクトップアイコンを使わなくなったので、放置状態)

さて、肝心のダブルクリック間隔の調整は、.ideskrc内のClickDelay:にミリセコンドで書けば良いらしい。
実際に、2000、3000と数値を入れてみたが、体感的にそこまでのディレイは効いていない気がする。
しかし、ROX-Filerの超短いクリック間隔よりは、まだましなのでこれで良しとしよう。
(しかし、これもデスクトップアイコンを使わなくなったので放置)

現状では、X起動後にターミナルからコマンドを打って実行させているが、これではしょうがないので
起動時に自動的にIdeskが実行されるようにしたい。
検索で引っ掛かった下のページを参考にして上手く行った。

http://puppylinux.org/wikka/idesk

最終的に、デスクトップアイコンのダブルクリックはIdesk、ウィンドウのダブルクリックはウィンドウマネージャで制御する、と言う棲み分けになった。

2011年9月3日土曜日

Puppy Linuxでmakeが、command not found

デスクトップPCにPuppy Linux4.3.1日本語版を入れたときの話。
当時のことを記憶を頼りに(twitterでつぶやいた内容を読み返しながら)書いてみる。


どうしても音が鳴らなくて、いろいろ調べてみると「isapnptoolsってのを使ったらどうか」
という記述を見つけた。
で、isapnptoolsを入れるには、makeコマンドで コンパイルしてやらないといけない。
が、いざmakeコマンドを実行してみると

command not found

Puppy Linuxでmakeコマンドを使うには、別途開発環境を入れないといけないとのこと。

日本語のサイトには、devx_xxx.sfsを個人設定保存ファイルと同じパーティションに置けば
起動時に読み込むと書いてあったが、自分の環境では駄目だった。
バージョンが悪いのかと思って色んなバージョンを試したり、
置き場所が悪いのかと置き場所を変えてみたが上手く行かない。

メニューを見ると、起動時にsfs読み込むような設定(パピーブートマネージャですね)
があったので、これに登録したらあっさりと読み込まれた。

簡単な事だけど、拾ってくる情報が自分の環境に合っているかどうかで大きな違いだった。
(Puppy Linux4.3.1日本語版なら devx_431JPbeta3-sfs3.sfs  が良いのかな)

ところがどっこい、、、。
Full install の場合は、sfsをそのままロードできないらしい。

検索してみると「devxをマウントしてコピーする」みたいな記述をみつけた。
ただ、「何処にどうやって」コピーするといった、具体的な方法が書かれていない。

とりあえずやってみよう!
先ずは、devx_431.sfsをマウントする。
マウントされた状態で開くと展開されたファイルが見える。
これをコピーするんだな?

で、作業用に適当なディレクトリを作って、そこに保存した。

command not found

パスが通ってないんだから駄目なんだろうな?
で、パスを追加(したつもりだけどexportしてなかったかも??)してやっても、、、。
相変わらず駄目でやんす。

何でやねん!
えーい!ままよ!!

devxを展開して出来たbinetcliboptsbinuser、をそのまま既存のディレクトリに
上書き保存してやれ!

コマンドを使ってコピーするなんて事は知らないので、ROX-Filerで引っ張って来てコピーした。
途中で何か聞かれたけど、構わず「はい」を押しつづける。(良い子はマネしないでね!)
相当な時間を掛けて、、、。終わったかな?

ほっほー! makeコマンドが通りましたぜ!!

多分、devxを展開して出来たディレクトリを適当な所にコーピーしたんでは(ファイルの参照、ライブラリの不足等で?)
実行できず、既存のファイルと統合させることで始めて使えるんだろうなと推測。

まぁ、何とかmakeコマンドが使えるようになりました。



最終的に音は出たのか?
出ました。

isapnptoolsを実行してisapnp.confを出力し、内容を自分のPCに合わせて(IRQやら諸々)編集。
modprobe.confも編集。
ALSAが勝手に読み込むモジュールをkill。
起動時に、ALSAより先にisapnp.confを読み込むようにetc/rc.d/rc.sysinitを書き換えて、
(同ファイル内でALSAの実行タイミングを調整)。
何とか音が出るようになった。

参考
http://sakurapup.browserloadofcoolness.com/viewtopic.php?f=14&t=904&p=4997&hilit=isapnp#p4997
http://linuxjf.sourceforge.jp/JFdocs/ISAPnP-HOWTO-7.html