ファイルの暗号化
*ファイルの暗号化
ゲームプログラムは画像を表示し、音楽を再生します。開発中は、大抵の場合それらの元ファイルは平文の画像ファイル・音楽ファイルとして特定のディレクトリに保存され、逐次読み込まれていることでしょう。しかし、リリースに当たっては物語の結末を先に知られるなどの問題を回避するためにファイルの暗号化を行いたいと考えるかもしれません。
もちろんネタバレサイトや、動画サイトで結末だけ知ることはできるでしょうが、それでも制作側の義務としてファイルを隠しておくのは当然のことです。
ファイルの暗号化の目的はコピープロテクトとは少し異なりますから、著作権保護として活用するのは難しいかもしれません。その是非はともかく、パソコン用のアプリだろうとゲームだろうと、いくらでもコピーされて不正利用されているのが実情ですから。
どうせコピーされてしまうから、何も暗号化なんてしないという考え方もあるようですが、だったら中途半端に権利主張などせずオープンソースやパブリックドメインにしてしまったほうが世の中のためでしょう。自分のものだと主張したければ、最低限の事はしなければなりません。現金を見せびらかしながらスラム街を歩けば、それは奪われてしまいますし、高価な玩具を買い与えた子供は、いじめっ子に奪われたと泣きながら帰ってくる事でしょう。寄付がしたいのなら、対象が合法的な手段でそれを得られることにも配慮すべきです。
**暗号化の種類
話が逸れましたが、ファイルの暗号化の手段です。
[wikipedia>http://ja.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7]によると、大きく3パターンに分かれるようです。
***ファイルの存在を隠す
リソースとして実行ファイルに埋め込んでしまう方法や、単純に拡張子だけ全部datにしてしまう方法があります。バイナリエディタや昔懐かしの真空波動研などで簡単に元ファイルが得られてしまいますが、趣味レベルの制作であればこれで十分という場合も多いかもしれません。
***単語を置き換える
ニイタカヤマノボレ、の類です。バイナリファイルでは難しいですが、ロリコンバータのようなツールがあります。実用性はないでしょう。
***ファイルの内容を暗号化
4パターンに分かれるようです。
-換字式(変換表を使って暗号化)
-転置式(ファイル内容を特定の方式でシャッフルする)
-共通鍵方式(パスワード方式と同じく、暗号化時と同じ鍵で復号)
-公開鍵方式(暗号化と復号化が、公開鍵と秘密鍵という別の鍵で行われる)
鍵方式が現代的な手法だそうで。公開鍵はSSHなどでサーバにログインしたりするときに使われてますね、暗号化したデータを誰かとやり取りしたいなら公開鍵方式を使うべきでしょう。
共通鍵方式は、ブロック暗号とストリーム暗号に分かれるようです。要は固定長分ずつ処理するか、好きな長さで処理するか。○バイト目から○バイト目までだけ読み出したい、なんていう使い方ができるストリーム暗号の方がゲームデータの暗号化には適しているのかなとか思います。
**ストリーム暗号
利用するのはxor演算です。元データと同じサイズの暗号化用データを作成し、
-元データxor暗号化用データ=暗号化されたデータ
-暗号化されたデータxor暗号化用データ=元データ
として使います。暗号化用データは暗号化と復号化で同じものを使用する必要がありますが、そのままではサイズが大きく非効率なので擬似乱数を使って生成します。シード値だけ保存しておけばいつでも暗号化用データを作成できます。
暗号化通信でよく利用されるRC4や、日本政府推奨のMUGI暗号も乱数生成のやり方が違うだけで、元データとoxrして~という部分は一緒ですので、乱数生成と元データの合成は別の関数にしておいた方が再利用性が上がりますね。もちろん簡易な目的であれば標準のrand()関数を用いても構わないと思います。
**ストリーム暗号の弱点
-http://itpro.nikkeibp.co.jp/free/ITPro/Security/20050304/157024/
-http://hp.vector.co.jp/authors/VA034288/longint/kaisetu.txt
日経さんの記事だと暗号化後のデータが二種類あればそれだけで復号化できるようにも読めますが、実際には暗号化用データが何なのか推測する手がかりの一つになる、という感じですか。もちろん手がかりが増えれば増えるほど、暗号を突破される可能性も増えるわけで、実際RC4を使った無線LANの暗号化のWEPというやつは通信をずっと観測されることで突破されてしまうようです。
ではどう対策すればいいかというと、ファイルごとにシード値を変化させてあげればいいわけです。bgm1のような固有の値や、ファイル名、ファイルサイズ、あるいはそれらの組み合わせのハッシュ値などなど……。やり方は毎回固定しない方がいいので、ゲーム企画ごとにちょっとずつパターンを変えてみるのが一番効果的でしょう。
ゲームプログラムは画像を表示し、音楽を再生します。開発中は、大抵の場合それらの元ファイルは平文の画像ファイル・音楽ファイルとして特定のディレクトリに保存され、逐次読み込まれていることでしょう。しかし、リリースに当たっては物語の結末を先に知られるなどの問題を回避するためにファイルの暗号化を行いたいと考えるかもしれません。
もちろんネタバレサイトや、動画サイトで結末だけ知ることはできるでしょうが、それでも制作側の義務としてファイルを隠しておくのは当然のことです。
ファイルの暗号化の目的はコピープロテクトとは少し異なりますから、著作権保護として活用するのは難しいかもしれません。その是非はともかく、パソコン用のアプリだろうとゲームだろうと、いくらでもコピーされて不正利用されているのが実情ですから。
どうせコピーされてしまうから、何も暗号化なんてしないという考え方もあるようですが、だったら中途半端に権利主張などせずオープンソースやパブリックドメインにしてしまったほうが世の中のためでしょう。自分のものだと主張したければ、最低限の事はしなければなりません。現金を見せびらかしながらスラム街を歩けば、それは奪われてしまいますし、高価な玩具を買い与えた子供は、いじめっ子に奪われたと泣きながら帰ってくる事でしょう。寄付がしたいのなら、対象が合法的な手段でそれを得られることにも配慮すべきです。
**暗号化の種類
話が逸れましたが、ファイルの暗号化の手段です。
[wikipedia>http://ja.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7]によると、大きく3パターンに分かれるようです。
***ファイルの存在を隠す
リソースとして実行ファイルに埋め込んでしまう方法や、単純に拡張子だけ全部datにしてしまう方法があります。バイナリエディタや昔懐かしの真空波動研などで簡単に元ファイルが得られてしまいますが、趣味レベルの制作であればこれで十分という場合も多いかもしれません。
***単語を置き換える
ニイタカヤマノボレ、の類です。バイナリファイルでは難しいですが、ロリコンバータのようなツールがあります。実用性はないでしょう。
***ファイルの内容を暗号化
4パターンに分かれるようです。
-換字式(変換表を使って暗号化)
-転置式(ファイル内容を特定の方式でシャッフルする)
-共通鍵方式(パスワード方式と同じく、暗号化時と同じ鍵で復号)
-公開鍵方式(暗号化と復号化が、公開鍵と秘密鍵という別の鍵で行われる)
鍵方式が現代的な手法だそうで。公開鍵はSSHなどでサーバにログインしたりするときに使われてますね、暗号化したデータを誰かとやり取りしたいなら公開鍵方式を使うべきでしょう。
共通鍵方式は、ブロック暗号とストリーム暗号に分かれるようです。要は固定長分ずつ処理するか、好きな長さで処理するか。○バイト目から○バイト目までだけ読み出したい、なんていう使い方ができるストリーム暗号の方がゲームデータの暗号化には適しているのかなとか思います。
**ストリーム暗号
利用するのはxor演算です。元データと同じサイズの暗号化用データを作成し、
-元データxor暗号化用データ=暗号化されたデータ
-暗号化されたデータxor暗号化用データ=元データ
として使います。暗号化用データは暗号化と復号化で同じものを使用する必要がありますが、そのままではサイズが大きく非効率なので擬似乱数を使って生成します。シード値だけ保存しておけばいつでも暗号化用データを作成できます。
暗号化通信でよく利用されるRC4や、日本政府推奨のMUGI暗号も乱数生成のやり方が違うだけで、元データとoxrして~という部分は一緒ですので、乱数生成と元データの合成は別の関数にしておいた方が再利用性が上がりますね。もちろん簡易な目的であれば標準のrand()関数を用いても構わないと思います。
**ストリーム暗号の弱点
-http://itpro.nikkeibp.co.jp/free/ITPro/Security/20050304/157024/
-http://hp.vector.co.jp/authors/VA034288/longint/kaisetu.txt
日経さんの記事だと暗号化後のデータが二種類あればそれだけで復号化できるようにも読めますが、実際には暗号化用データが何なのか推測する手がかりの一つになる、という感じですか。もちろん手がかりが増えれば増えるほど、暗号を突破される可能性も増えるわけで、実際RC4を使った無線LANの暗号化のWEPというやつは通信をずっと観測されることで突破されてしまうようです。
ではどう対策すればいいかというと、ファイルごとにシード値を変化させてあげればいいわけです。bgm1のような固有の値や、ファイル名、ファイルサイズ、あるいはそれらの組み合わせのハッシュ値などなど……。やり方は毎回固定しない方がいいので、ゲーム企画ごとにちょっとずつパターンを変えてみるのが一番効果的でしょう。
クラシアンがきた
*部屋がウンコだらけに
**経緯
トイレが汚いので掃除したら流れが悪くなった。スムーズに流れず、一旦溜まってから一気にゴボゴボっと流れる。何回か水だけ流してたらまたスムーズになったので、それ以降気にしていなかった。
ところがある日、シャワーを浴びていると足元に水が溜まるようになった。水を止めると溜まった分は流れていくので、これも気にしていなかった。
しかし詰まりは進行していたようで、トイレを流すとキッチンで壁を叩くような音がするようになった。除霊効果に定評のあるファブリーズは、ポルターガイストには打ち勝てなかった。
そしてついに、トイレを流すと自動的に風呂に水が溜まる機能が追加された。ウンコだらけの茶色い水。スカトロマニア大興奮。
**対策
会社で飲み会があったついでに、銀座のドンキホーテでパイプクリーナーを数本買い、一気に投入。プールのカルキ臭がするため換気扇を回したまま一日放置。ちなみに銀座のドンキホーテの営業時間は10時から5時、5時は夕方じゃなくて早朝の方。ここまでやるんだったら24時間営業でも良さそうなのに・・・。
パイプクリーナーの効き目は全くなかった、もともと詰まってる場所に入れたところで、融解成分が詰まってる所に届きはしないらしい。期待などしていない、最初は安い方法から試したまでのこと。ただ、便器はツルツルピカピカになった。~
しかし、これが仇となった。風呂に逆流する水がアルカリになってしまい、シャワーを浴びるたびに足がヒリヒリする。ピーリング効果抜群で奥さんにもおすすめです。
仕方が無いので定番にして最強の道具、ラバーカップを購入。棒の先にお椀状のゴムが付いただけの構造で、昔からある道具だけど、地味ながら非常に強力。御徒町のドンキホーテで購入。二階の洗剤コーナーではなく、地下の便所ブラシコーナーに置いてある。~
仕様時のコツはカップを水に沈めること。小学校の理科で習う、空気は圧縮・膨張するのに対して水はそうでもないというあの理屈。詰まりに対して力を与えるには、水で満たした状態でラバーカップを引くべきなんです。
そうして一時間ほど格闘した後、ついに敵は反攻を開始した。洗濯機パンから溢れ出すウンコ。風呂場と風呂に満たされるウンコ。キッチンからもウンコ臭。
**クラシアンに依頼
不動産屋のナミキ社は、ちゃおちゃおハウスって名前で売ってるらしい。住民は入居時にちゃおちゃおメンバーズクラブに加入し、住民はちゃおちゃお光線で悪と戦う。大家さんへの挨拶はもちろん「山田ライオンさん、がおー。」~
メンバーズクラブの特典として、夜中に電話をかけると管理会社の人が相談に乗ってくれる。
とりあえず事態を説明すると水道屋の手配をはじめてくれた。しかし、時刻は23時。クラシアン以外にやってくれる会社が見つからなかったらしい。前にどっかの水道屋に頼んだときは3万ぐらい掛かった。悪名高いクラシアンなので5万ほどコンビニATMでお金をおろして待機。基本料+出張料+深夜料金+αでそれぐらい掛かるに違いない。
1時にクラシアン到着。管理会社に電話をかけ、聞いてた話と違うよぅ、原因不明だよぅ、と泣きを入れてから、巨大なピストン装置を便器に取り付けて3秒ほど引きまくる。
「あっ、抜けた・・・」というので、壊したか?と思ったら、たった数秒で詰まりがとれたらしい。~
ピストン装置はラバーカップと同じ働きをするけど、数倍強力なパワーらしい。
3秒で仕事を終えた後は、ひと通りの配管の構造を説明してくれたり、排水トラップの水が抜けたから張り直すようにとか、十数分話して帰っていった。夜中も対応するために4交代制らしい。
料金は基本料8千円+深夜割増2千円-管理会社割引千円=9千円だった。他の水道屋よりかなり安い。~
ボッタクリと噂のクラシアンは、最近は宣伝どおりの料金で仕事してるのか?、もしくはボッタクリ説は対抗業者が流した噂なのか・・・。とりあえず個人で頼んだ場合も一万円でいけるらしい。~
むしろ他の半額以下で本当に儲かってるのか疑問。作業者はひょっとして薄給なのかもしらん。
足がヒリヒリしない風呂は素晴らしい。
「ネズミを見たことがないライオンに、ネズミがいかに恐ろしい生物かという話を聞かせたら、ライオンは恐怖のあまり死んでしまう。もちろん噂を流したのはネズミなのだが。」~
ってネタを思い出した。洋画かなんかだったと思う。
ボッタクリを恐れるあまりクラシアンを避けるのは、あまり賢い行動ではなかったらしい。反省。
**経緯
トイレが汚いので掃除したら流れが悪くなった。スムーズに流れず、一旦溜まってから一気にゴボゴボっと流れる。何回か水だけ流してたらまたスムーズになったので、それ以降気にしていなかった。
ところがある日、シャワーを浴びていると足元に水が溜まるようになった。水を止めると溜まった分は流れていくので、これも気にしていなかった。
しかし詰まりは進行していたようで、トイレを流すとキッチンで壁を叩くような音がするようになった。除霊効果に定評のあるファブリーズは、ポルターガイストには打ち勝てなかった。
そしてついに、トイレを流すと自動的に風呂に水が溜まる機能が追加された。ウンコだらけの茶色い水。スカトロマニア大興奮。
**対策
会社で飲み会があったついでに、銀座のドンキホーテでパイプクリーナーを数本買い、一気に投入。プールのカルキ臭がするため換気扇を回したまま一日放置。ちなみに銀座のドンキホーテの営業時間は10時から5時、5時は夕方じゃなくて早朝の方。ここまでやるんだったら24時間営業でも良さそうなのに・・・。
パイプクリーナーの効き目は全くなかった、もともと詰まってる場所に入れたところで、融解成分が詰まってる所に届きはしないらしい。期待などしていない、最初は安い方法から試したまでのこと。ただ、便器はツルツルピカピカになった。~
しかし、これが仇となった。風呂に逆流する水がアルカリになってしまい、シャワーを浴びるたびに足がヒリヒリする。ピーリング効果抜群で奥さんにもおすすめです。
仕方が無いので定番にして最強の道具、ラバーカップを購入。棒の先にお椀状のゴムが付いただけの構造で、昔からある道具だけど、地味ながら非常に強力。御徒町のドンキホーテで購入。二階の洗剤コーナーではなく、地下の便所ブラシコーナーに置いてある。~
仕様時のコツはカップを水に沈めること。小学校の理科で習う、空気は圧縮・膨張するのに対して水はそうでもないというあの理屈。詰まりに対して力を与えるには、水で満たした状態でラバーカップを引くべきなんです。
そうして一時間ほど格闘した後、ついに敵は反攻を開始した。洗濯機パンから溢れ出すウンコ。風呂場と風呂に満たされるウンコ。キッチンからもウンコ臭。
**クラシアンに依頼
不動産屋のナミキ社は、ちゃおちゃおハウスって名前で売ってるらしい。住民は入居時にちゃおちゃおメンバーズクラブに加入し、住民はちゃおちゃお光線で悪と戦う。大家さんへの挨拶はもちろん「山田ライオンさん、がおー。」~
メンバーズクラブの特典として、夜中に電話をかけると管理会社の人が相談に乗ってくれる。
とりあえず事態を説明すると水道屋の手配をはじめてくれた。しかし、時刻は23時。クラシアン以外にやってくれる会社が見つからなかったらしい。前にどっかの水道屋に頼んだときは3万ぐらい掛かった。悪名高いクラシアンなので5万ほどコンビニATMでお金をおろして待機。基本料+出張料+深夜料金+αでそれぐらい掛かるに違いない。
1時にクラシアン到着。管理会社に電話をかけ、聞いてた話と違うよぅ、原因不明だよぅ、と泣きを入れてから、巨大なピストン装置を便器に取り付けて3秒ほど引きまくる。
「あっ、抜けた・・・」というので、壊したか?と思ったら、たった数秒で詰まりがとれたらしい。~
ピストン装置はラバーカップと同じ働きをするけど、数倍強力なパワーらしい。
3秒で仕事を終えた後は、ひと通りの配管の構造を説明してくれたり、排水トラップの水が抜けたから張り直すようにとか、十数分話して帰っていった。夜中も対応するために4交代制らしい。
料金は基本料8千円+深夜割増2千円-管理会社割引千円=9千円だった。他の水道屋よりかなり安い。~
ボッタクリと噂のクラシアンは、最近は宣伝どおりの料金で仕事してるのか?、もしくはボッタクリ説は対抗業者が流した噂なのか・・・。とりあえず個人で頼んだ場合も一万円でいけるらしい。~
むしろ他の半額以下で本当に儲かってるのか疑問。作業者はひょっとして薄給なのかもしらん。
足がヒリヒリしない風呂は素晴らしい。
「ネズミを見たことがないライオンに、ネズミがいかに恐ろしい生物かという話を聞かせたら、ライオンは恐怖のあまり死んでしまう。もちろん噂を流したのはネズミなのだが。」~
ってネタを思い出した。洋画かなんかだったと思う。
ボッタクリを恐れるあまりクラシアンを避けるのは、あまり賢い行動ではなかったらしい。反省。
interlink mpxp7220にsqueezeインストール
なぜかinitial ramdiskの読み込みで固まるようになったので泣く泣く再インスコ。
mpxp7220はCDドライブがないし、USBからのブートもできない。純正のCDドライブを付ければブートできるらしいが、持ってない。
なので基本的にpxeブートをすることになる。
pxeブートを有効にするのは起動時のvictorロゴが出ている間にalt+F2でBIOS設定に入り、BOOTのnetworkをHDDより優位にして、Onboard LAN Boot ROMをEnableにする。
ちなみにalt+F8でリカバリ領域が生きていればwindowsの再セットアップができる。ddを使えばこの領域のバックアップは取れるが、バックアップを取るのはmicrosoftのライセンス違反らしい。
まず使えそうなファイルをサルベージ。
virtual box上でknoppixを起動し、設定からknoppix terminal serviceを起動。root権限は有効にしておく。
グラフィックデバイスが変態なせいか、スクリーンセーバが起動するとフリーズするので手早く作業。スクリーンセーバをOFFにすればいい話だが、設定画面を開くとそこでフリーズするので基本的に無理。
必要ファイルを回収してfsck、しかし問題はない。lost+foundも空。
仕方ないので再インストール。
windows上でtftpd32を起動する。tftpd32の設定はdebian公式に詳細な解説がある。
メインメニューが出たらCUIインストールの項でtabを押し、nofbオプションをつける。フレームバッファが有効だと画面が崩れて何がなんだか分からなくなる。guiインストールも基本使えなかったはず。
なぜかインストール後のgnomeなどは崩れず表示される。必要なドライバが後から入るせいかもしれない。
pxeの際にdhcpサーバを切るべきとされているが、切らなくても何とかなったりする。dhcpクライアントは先に応答した方のサーバと通信する仕組みなので、失敗しても運良く先に繋がるまで何度か繰り返せばいい。
ちなみにうちの環境ではBBR-4MGがメインのdhcpサーバなので、もっと高性能なBBルータを使ってる場合は先に応答が返ってしまうかもしれない。
なお、grubが生きているならインストール用linuxとinitrdを使ってインストーラを起動することが可能。というか、これが一番簡単。
今回この方法を取らなかったのは・・・mountしたままfsckしちゃったから☆
良い子の皆はumountしたあと、さらに念のためdfで再確認しようね♪
いやほんま洒落ならん・・・
mpxp7220はCDドライブがないし、USBからのブートもできない。純正のCDドライブを付ければブートできるらしいが、持ってない。
なので基本的にpxeブートをすることになる。
pxeブートを有効にするのは起動時のvictorロゴが出ている間にalt+F2でBIOS設定に入り、BOOTのnetworkをHDDより優位にして、Onboard LAN Boot ROMをEnableにする。
ちなみにalt+F8でリカバリ領域が生きていればwindowsの再セットアップができる。ddを使えばこの領域のバックアップは取れるが、バックアップを取るのはmicrosoftのライセンス違反らしい。
まず使えそうなファイルをサルベージ。
virtual box上でknoppixを起動し、設定からknoppix terminal serviceを起動。root権限は有効にしておく。
グラフィックデバイスが変態なせいか、スクリーンセーバが起動するとフリーズするので手早く作業。スクリーンセーバをOFFにすればいい話だが、設定画面を開くとそこでフリーズするので基本的に無理。
必要ファイルを回収してfsck、しかし問題はない。lost+foundも空。
仕方ないので再インストール。
windows上でtftpd32を起動する。tftpd32の設定はdebian公式に詳細な解説がある。
メインメニューが出たらCUIインストールの項でtabを押し、nofbオプションをつける。フレームバッファが有効だと画面が崩れて何がなんだか分からなくなる。guiインストールも基本使えなかったはず。
なぜかインストール後のgnomeなどは崩れず表示される。必要なドライバが後から入るせいかもしれない。
pxeの際にdhcpサーバを切るべきとされているが、切らなくても何とかなったりする。dhcpクライアントは先に応答した方のサーバと通信する仕組みなので、失敗しても運良く先に繋がるまで何度か繰り返せばいい。
ちなみにうちの環境ではBBR-4MGがメインのdhcpサーバなので、もっと高性能なBBルータを使ってる場合は先に応答が返ってしまうかもしれない。
なお、grubが生きているならインストール用linuxとinitrdを使ってインストーラを起動することが可能。というか、これが一番簡単。
今回この方法を取らなかったのは・・・mountしたままfsckしちゃったから☆
良い子の皆はumountしたあと、さらに念のためdfで再確認しようね♪
いやほんま洒落ならん・・・
音が出ない件、解決
dynabook satellite j12のDebian squeezeで音が出ない問題
alsamixerで見てみたら片っぱしからミュート(MM)になってた、mキーで解除して終了。
windows xpではsoundmaxのドライバを入れるまで音が出なかったから、linuxでも何かドライバが必要なんだと思ってたけど、案外簡単に解決した。
alsamixerで見てみたら片っぱしからミュート(MM)になってた、mキーで解除して終了。
windows xpではsoundmaxのドライバを入れるまで音が出なかったから、linuxでも何かドライバが必要なんだと思ってたけど、案外簡単に解決した。
マウスカーソルが表示されない問題 解決
dynabook satellite j12にsqueezeを入れたところマウスカーソルが出ない問題が発生。表示されないだけで機能には問題がなく、スリープから復帰すると表示されるようになる。
xorg.confの編集とかいろいろ考えてたけど、gnomeの「外観の設定(テーマ設定)」のカスタマイズでポインタを指定したらあっさり表示されるようになった。
xorg.confの編集とかいろいろ考えてたけど、gnomeの「外観の設定(テーマ設定)」のカスタマイズでポインタを指定したらあっさり表示されるようになった。
JDが忍法帖に対応してなかったのでV2Cに乗り換え
2ちゃんねるが忍法帖を導入した関係でJDからは書き込みが出来なくなったみたい。
最新版のdebを拾ってきて入れれば対応できるみたいだったけど、せっかくの機会なんでV2Cを入れてみた。
windows版のV2Cと比べて特に違うところはない感じ、javaアプリだからそういうものかもしれない。
以前はJaneStyleを使ってたけど、ある時を境に再インストールしても書き込みが出来ない現象に遭遇して、それ以来V2Cに乗り換えた。
JDはシンプルで好きだったんだけど、2ちゃんねるみたいにコロコロ仕様が変わる場合はstableだけじゃ追いきれないよね。
pidginもいずれMSの仕様変更に追いつけなくなる気がするなあ。
最新版のdebを拾ってきて入れれば対応できるみたいだったけど、せっかくの機会なんでV2Cを入れてみた。
windows版のV2Cと比べて特に違うところはない感じ、javaアプリだからそういうものかもしれない。
以前はJaneStyleを使ってたけど、ある時を境に再インストールしても書き込みが出来ない現象に遭遇して、それ以来V2Cに乗り換えた。
JDはシンプルで好きだったんだけど、2ちゃんねるみたいにコロコロ仕様が変わる場合はstableだけじゃ追いきれないよね。
pidginもいずれMSの仕様変更に追いつけなくなる気がするなあ。
coLinuxを入れてみた
http://scratchpad.fc2web.com/colinux/index.html
こちらのサイトを見ながら設定
今までVirtualBoxをいろんな場面で使ってきたけど、エミュじゃないだけあって非常に早い。まぁ何も入ってないから早いだけかもしれないけど、起動はVirtualBoxとは本当に比較にならないほど早い。これでapacheやらmuninやらを入れたときにどの程度の動きになるのか気になる。
GUIやサウンドの環境は貧弱らしいけど、VBoxHeadlessを愛用してるような人はすぐにでも乗り換えて正解だと思う。
これからLinuxに触れてみたいって人には普通の仮想マシンなんかの方がいいかもしれない。grubとかもないし、カーネルも専用っぽいから最初のうち勉強すべき箇所がごっそり抜け落ちるかもしれないから。
しょっちゅう躓きながら勉強したいなら何でもいいんでしょうけどね、私も玄箱から始めましたし。
設定ファイルを手書きで編集したり、仮想ディスクを作るために空ファイルを用意したりと、かなりlinux寄りなのかなぁと思わせる作業が発生する。
空ファイルは/dev/zeroをddして作ったのをコピーして来てもいいけど、fsutil file createnewしたほうが一瞬で作れていい気がする。
coLinuxはネットワーク接続の選択肢がいくつかあって
1.SLiRP(簡単だけど遅いらしい)
2.TUN/TAP(仮想LANドライバ)
3.パケットキャプチャツールでのブリッジ(最も高速、らしい)
2はさらに
2a.ネットワーク接続の共有を使う
2b.windowsのRouting and Remote Accessサービスを使う
2c.ネットワークブリッジを使う
どれもこれも一長一短で、余計なツール入れなきゃならなかったり、既存のネットワーク環境を設定しなおしたりと悩まされる。いろいろ考えて2bにしたが、ルーティング設定の勉強になって良かったものの、人にはすすめたくないなぁ。
今まで手を出さなかったのはcygwinみたいなディストリビューション環境だと思ってたから。仮想マシン風なイメージで使えて、debianも使えると分かった時点で即導入決定。
今はまだlennyしかなかったので、debootstrapを入れてsqueeze環境を作ってみようと思う。
こちらのサイトを見ながら設定
今までVirtualBoxをいろんな場面で使ってきたけど、エミュじゃないだけあって非常に早い。まぁ何も入ってないから早いだけかもしれないけど、起動はVirtualBoxとは本当に比較にならないほど早い。これでapacheやらmuninやらを入れたときにどの程度の動きになるのか気になる。
GUIやサウンドの環境は貧弱らしいけど、VBoxHeadlessを愛用してるような人はすぐにでも乗り換えて正解だと思う。
これからLinuxに触れてみたいって人には普通の仮想マシンなんかの方がいいかもしれない。grubとかもないし、カーネルも専用っぽいから最初のうち勉強すべき箇所がごっそり抜け落ちるかもしれないから。
しょっちゅう躓きながら勉強したいなら何でもいいんでしょうけどね、私も玄箱から始めましたし。
設定ファイルを手書きで編集したり、仮想ディスクを作るために空ファイルを用意したりと、かなりlinux寄りなのかなぁと思わせる作業が発生する。
空ファイルは/dev/zeroをddして作ったのをコピーして来てもいいけど、fsutil file createnewしたほうが一瞬で作れていい気がする。
coLinuxはネットワーク接続の選択肢がいくつかあって
1.SLiRP(簡単だけど遅いらしい)
2.TUN/TAP(仮想LANドライバ)
3.パケットキャプチャツールでのブリッジ(最も高速、らしい)
2はさらに
2a.ネットワーク接続の共有を使う
2b.windowsのRouting and Remote Accessサービスを使う
2c.ネットワークブリッジを使う
どれもこれも一長一短で、余計なツール入れなきゃならなかったり、既存のネットワーク環境を設定しなおしたりと悩まされる。いろいろ考えて2bにしたが、ルーティング設定の勉強になって良かったものの、人にはすすめたくないなぁ。
今まで手を出さなかったのはcygwinみたいなディストリビューション環境だと思ってたから。仮想マシン風なイメージで使えて、debianも使えると分かった時点で即導入決定。
今はまだlennyしかなかったので、debootstrapを入れてsqueeze環境を作ってみようと思う。
FOMA+squeezeで定額モバイル
*FOMA+squeezeで定額モバイル
NTT DoCoMoのFOMAにはパケホーダイという定額通信サービスがある。これは携帯電話用の回線網を使った、所謂iモードの通信などが定額になるのであって、USBケーブルでパソコンに繋いで利用するデータ通信は別の料金体系になる。
ただ、例外もあって、パケホーダイユーザであれば、低速通信(D:128k U:64k)の専用アクセスポイントmpr.ex-pkt.netを利用することで定額通信ができる。
http://www.nttdocomo.co.jp/service/data/foma/bill_plan/for_phone/128k/
最大で、パケホーダイのフルブラウザ上限金額(iモードのみの通信より千円ほど上限が高い)に加えてmoperaUの利用料金(100~200円月程度?)が掛かってくる。
moperaUの料金は使った月だけ加入している状態になるようで、出張中だけ使って解約を忘れても、悪徳フレッツのオプション料金のように後から請求されることはない。
通信の設定内容の説明がドコモサイト内でも結構散らかっていて、モデム設定とかが苦手な人だと調べながら一人でやるのは割と難しいが、通話料無料の151でwindows環境からダイアルアップできる状態まではサポートしてもらえる。比較的知識豊富で訓練されてる感じで、技術面から料金の質問まで素早く答えてもらえる。他のNTTグループ企業のサポセンで嫌な思いをしている人も、ここは勇気を出して電話してみるべきだと思う。
残念な点は、
+通信速度が遅い
+Linux環境から使うのが難しい
ザウルスなんて恐竜がいた頃に@freedとかを使ってた人からすれば128kが非常に高速に見えると思うが、フルHD動画なんていう悪夢が実現してる世の中なので使い方によっては非常に厳しい。今じゃメールすら暗号化通信が使用されるらしいので128kという速度は大抵の人にとってストレス源になるんじゃないかと思う。
後者はもっと単純で困難な問題、USBでFOMAを繋いでもLinuxではドライバがない。(データ通信専用モデルならドライバがあるらしいが)
こんな面倒なことをするより、テザリング可能なスマホや、ポケットwifiを使うのがより現代的だと思う。
*設定方法
準備物:
-windowsからmpr.ex-pkt.netにダイアルアップ出来るように設定した携帯
-Debian squeezeの入ったパソコン
[pepolinux:http://sourceforge.jp/projects/pepolinux/]よりパッチを頂いてきてFOMA対応にする。最新版は09というパッチを置いてあるが、今のsqueezeはlinux2.6.32-5なので最新パッチを当てるとmakeした際に関数やマクロが足りないと叱られる、なのでひとつ古い0.26.08のパッチを頂いてくる。
linuxのソースをダウンロードする。
#aptitude install linux-source
これで、/usr/src/以下に圧縮ファイルが出来るのでその場に解凍する。makeなどはソースと一緒に入ってくると思うが、他にpatchやdiffなども入れておく。README通りにmenuconfigしたい場合はncurses関連も必要。
展開したソースのディレクトリに移動して、makeできるかチェック
#make oldconfig
#make prepare
#make
数時間掛かったが、問題なくmakeできたのでpatchをあててみる。
#patch -p1 < acm-FOMA.v0.26.08.patch
既にファイルがあるとか何とか聞いてくるが、気にせずEnter連打で進む。
#make oldconfig
acm-fomaの扱いを聞いてくるので、「m」を入力。
パッチが当たったらビルド
#make modules
ビルドが通り、acm-foma.koが出来上がる。コメントが何とかとエラーが出ていたが、必要なものは出来上がったので気にしない。
/usr/src/linux(バージョン)/drivers/usb/class/acm-FOMA.koを/lib/modules/(バージョン)/kernel/drivers/usb/class/にコピーして、
#depmod -a
で、有効化。念のため一覧でもチェック
#modplobe -l
**動作チェック
$ lsusb
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
↑指す前、刺した後↓
$ lsusb
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0409:0224 NEC Corp.
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
認識する。
/var/log/messages
May 23 13:13:02 kandelaar kernel: [94992.204067] usb 2-1: new full speed USB device using uhci_hcd and address 4
May 23 13:13:03 kandelaar kernel: [94992.377380] usb 2-1: New USB device found, idVendor=0409, idProduct=0224
May 23 13:13:03 kandelaar kernel: [94992.377386] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
May 23 13:13:03 kandelaar kernel: [94992.377391] usb 2-1: Product: FOMA N705i
May 23 13:13:03 kandelaar kernel: [94992.377394] usb 2-1: Manufacturer: NEC
May 23 13:13:03 kandelaar kernel: [94992.377396] usb 2-1: SerialNumber: xxxxxxxxxxxxxxx
May 23 13:13:03 kandelaar kernel: [94992.377597] usb 2-1: configuration #1 chosen from 1 choice
May 23 13:13:03 kandelaar kernel: [94992.675825] acm-FOMA 2-1:1.0: ttyACM0: USB ACM device
May 23 13:13:03 kandelaar kernel: [94992.678809] acm-FOMA 2-1:1.2: ttyACM1: USB ACM device
May 23 13:13:03 kandelaar kernel: [94992.681066] usbcore: registered new interface driver acm-FOMA
May 23 13:13:03 kandelaar kernel: [94992.681894] acm_FOMA: v0.26-FOMA.08:USB Abstract Control Model driver for USB modems driver for docomo FOMA Cellular phone
認識するとttyACM0ができる。なぜかttyACM1まで出来てるが、cuで接続してみた感じだとttyACM0しか使えないようだ。
pppconfigで設定
-設定名:mopera
--ponで接続するたびに使うので、出来るだけ短くて覚えやすい名前のほうがいい
-number:186*99***2#
--186(発信者番号通知)を付ければユーザ名とパスワードが不要。
-user:
--空欄に出来ないためスペース一つ入れておいた
-password:
--空欄に出来ないためスペース一つ入れておいた
-speed:115200
-com:/dev/ttyACM0
-method:PAP
ダイアルアップは
pon 設定名
切断は
poff
pppconfigはコマンドラインのツールなので、GUIがいいって場合はgnome-pppというのもある。ちなみに利用するuserがdialoutグループに属してないとダイアルアップに成功しても、その回線を使えないようなので注意。
*埋立地
**一人反省会
このacm-fomaパッチ適用を知って作業開始したのが去年の秋頃。やっと今日になってビルド成功、その数時間後に通信できるまで設定できた。
はまったのはパッチを当てた後ビルドが通らないこと。原因は単純で、最新パッチが新しいカーネルを対象にしてたから。こんな単純なことに気づかなかったのは、
-何でも最新版を使うのが正しいという思い込み
-パッチ配布サイトの変更履歴を読んでなかった
-そもそもlinuxのプログラム環境が未知の世界なのでエラーの対処が分からない
こんなところ。
エラー内容は関数が未定義って感じだったので、おそらくパッチ作成時には使えた関数が今のバージョンでは無くなってるんだなと予想をつけて、手作業でソースコードを直そうと、linuxのAPIを調べ始めて数日、やっとバージョンによって使える関数が異なるかもしれないという事実に出くわし、linux公式ドキュメントを眺めたところ、実際は逆にパッチのほうが自分のシステムより新しすぎたという結果。
失敗記録なんか外に晒してもしょうがないから個人用wikiに放り込むだけにしよと思ってたけど、参考サイトとかいろいろ書いてあるから、お礼の気持を込めてブログの方にも追加。私ほどの馬鹿もいないだろうけど、同じ問題で悩んだ人の助けになるといいなあ。
**ここ以下迷走の記録
前提条件:
-windowsから接続できる状態まで携帯電話側を設定している。
ターゲット:
-FOMA n705i
-DynaBook Satellite J12
USBケーブルで繋ぐと充電を始める。ケーブルは充電専用と通信可能なものがあり、コンビニで売ってるようなものは大抵充電専用。
接続されているUSB機器の一覧は、
$ lsusb
で調べる。
まだドライバが入ってないのでroot hub以外のものは表示されない。
http://plaza.rakuten.co.jp/tutumikun/diary/200809270000/
こちらと同じ作業を行う。
まずlinuxカーネルソースを取得
# aptitude install linux-source-2.6.32
http://sourceforge.jp/projects/pepolinux/releases/
パッチはこちらのacm-FOMA.v0.26.09.tar.gzを使用。acm-FOMAは他のサイトでも見かけるが、pepolinuxのものが最近まで更新されてるようなので、おそらくこちらが最新版かと思われる。
解凍するとREADMEが入っています。とりあえず簡単と書いてある方を試します。
# make
if test ! -f /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h ; then \
echo not exit ! /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h ; \
exit 1; \
fi
not exit ! /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h
make: *** [acm-FOMA] エラー 1
残念、叱られた。確かに該当ファイルはない。
そういえばカーネルのソースを取ってきたまま解凍してない。
http://packages.debian.org/squeeze/all/linux-source-2.6.32/filelist
debianパッケージのサイトを見れば、何のファイルが何処に落ちてきたのかが分かる。
/usr/src/linux-source-2.6.32.tar.bz2 これがそうか
bzip2のtarオプションはj
# tar xjf linux-source-2.6.32.tar.bz2
足りないといわれてるacm-foma.hは drivers/usb/class/ に入っている。
これを対象ディレクトリにコピーして再度実行。
# make
if test ! -f /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h ; then \
echo not exit ! /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h ; \
exit 1; \
fi
if test ! -f /home/meatball/acm-foma/acm-FOMA.v0.26.09/cdc-acm.h ; then \
ln -s /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h cdc-acm.h ; \
fi
make -C /lib/modules/2.6.32-5-686/build M=/home/meatball/acm-foma/acm-FOMA.v0.26.09 modules
make[1]: ディレクトリ `/lib/modules/2.6.32-5-686/build' に入ります
make[1]: *** ターゲット `modules' を make するルールがありません. 中止.
make[1]: ディレクトリ `/lib/modules/2.6.32-5-686/build' から出ます
make: *** [acm-FOMA] エラー 2
ヘッダ一個じゃなく、もっと必要なファイルがあるのかもしれない、
# cp -r /usr/src/linux-source-2.6.32/drivers /lib/modules/2.6.32-5-686/build/
これでmakeしてみるが、エラーメッセージはさっきと変わらず。
なんかいろいろ入ってないな
diff
patch
autoconf
ncurses-dev
http://d.hatena.ne.jp/kakurasan/20070724/p1
ここを頼りに環境を整備、なんとか素の状態でビルドできるまでやってからパッチをあててみる。
# make
CHK include/linux/version.h
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-x86
CALL scripts/checksyscalls.sh
CHK include/linux/compile.h
VDSOSYM arch/x86/vdso/vdso32-int80-syms.lds
VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds
VDSOSYM arch/x86/vdso/vdso32-syms.lds
LD arch/x86/vdso/built-in.o
LD arch/x86/built-in.o
CC [M] drivers/usb/class/acm-FOMA.o
drivers/usb/class/acm-FOMA.c: In function ‘acm_write_buffers_free’:
drivers/usb/class/acm-FOMA.c:974: error: implicit declaration of function ‘usb_free_coherent’
drivers/usb/class/acm-FOMA.c: In function ‘acm_write_buffers_alloc’:
drivers/usb/class/acm-FOMA.c:994: error: implicit declaration of function ‘usb_alloc_coherent’
drivers/usb/class/acm-FOMA.c:995: warning: assignment makes pointer from integer without a cast
drivers/usb/class/acm-FOMA.c: In function ‘acm_probe’:
drivers/usb/class/acm-FOMA.c:1093: error: ‘NOT_A_MODEM’ undeclared (first use in this function)
drivers/usb/class/acm-FOMA.c:1093: error: (Each undeclared identifier is reported only once
drivers/usb/class/acm-FOMA.c:1093: error: for each function it appears in.)
drivers/usb/class/acm-FOMA.c:1260: warning: assignment makes pointer from integer without a cast
drivers/usb/class/acm-FOMA.c:1294: warning: assignment makes pointer from integer without a cast
make[3]: *** [drivers/usb/class/acm-FOMA.o] エラー 1
make[2]: *** [drivers/usb/class] エラー 2
make[1]: *** [drivers/usb] エラー 2
make: *** [drivers] エラー 2
エラーの出てる関数やマクロは先のバージョンのカーネルでないとサポートしてない。
http://www.kernel.org/doc/htmldocs/usb.html
http://lxr.free-electrons.com/ident?v=2.6.29;i=NOT_A_MODEM
パッチが新しすぎたらしい。うちの環境には早すぎたんだ、腐ってやがる・・・。
NTT DoCoMoのFOMAにはパケホーダイという定額通信サービスがある。これは携帯電話用の回線網を使った、所謂iモードの通信などが定額になるのであって、USBケーブルでパソコンに繋いで利用するデータ通信は別の料金体系になる。
ただ、例外もあって、パケホーダイユーザであれば、低速通信(D:128k U:64k)の専用アクセスポイントmpr.ex-pkt.netを利用することで定額通信ができる。
http://www.nttdocomo.co.jp/service/data/foma/bill_plan/for_phone/128k/
最大で、パケホーダイのフルブラウザ上限金額(iモードのみの通信より千円ほど上限が高い)に加えてmoperaUの利用料金(100~200円月程度?)が掛かってくる。
moperaUの料金は使った月だけ加入している状態になるようで、出張中だけ使って解約を忘れても、悪徳フレッツのオプション料金のように後から請求されることはない。
通信の設定内容の説明がドコモサイト内でも結構散らかっていて、モデム設定とかが苦手な人だと調べながら一人でやるのは割と難しいが、通話料無料の151でwindows環境からダイアルアップできる状態まではサポートしてもらえる。比較的知識豊富で訓練されてる感じで、技術面から料金の質問まで素早く答えてもらえる。他のNTTグループ企業のサポセンで嫌な思いをしている人も、ここは勇気を出して電話してみるべきだと思う。
残念な点は、
+通信速度が遅い
+Linux環境から使うのが難しい
ザウルスなんて恐竜がいた頃に@freedとかを使ってた人からすれば128kが非常に高速に見えると思うが、フルHD動画なんていう悪夢が実現してる世の中なので使い方によっては非常に厳しい。今じゃメールすら暗号化通信が使用されるらしいので128kという速度は大抵の人にとってストレス源になるんじゃないかと思う。
後者はもっと単純で困難な問題、USBでFOMAを繋いでもLinuxではドライバがない。(データ通信専用モデルならドライバがあるらしいが)
こんな面倒なことをするより、テザリング可能なスマホや、ポケットwifiを使うのがより現代的だと思う。
*設定方法
準備物:
-windowsからmpr.ex-pkt.netにダイアルアップ出来るように設定した携帯
-Debian squeezeの入ったパソコン
[pepolinux:http://sourceforge.jp/projects/pepolinux/]よりパッチを頂いてきてFOMA対応にする。最新版は09というパッチを置いてあるが、今のsqueezeはlinux2.6.32-5なので最新パッチを当てるとmakeした際に関数やマクロが足りないと叱られる、なのでひとつ古い0.26.08のパッチを頂いてくる。
linuxのソースをダウンロードする。
#aptitude install linux-source
これで、/usr/src/以下に圧縮ファイルが出来るのでその場に解凍する。makeなどはソースと一緒に入ってくると思うが、他にpatchやdiffなども入れておく。README通りにmenuconfigしたい場合はncurses関連も必要。
展開したソースのディレクトリに移動して、makeできるかチェック
#make oldconfig
#make prepare
#make
数時間掛かったが、問題なくmakeできたのでpatchをあててみる。
#patch -p1 < acm-FOMA.v0.26.08.patch
既にファイルがあるとか何とか聞いてくるが、気にせずEnter連打で進む。
#make oldconfig
acm-fomaの扱いを聞いてくるので、「m」を入力。
パッチが当たったらビルド
#make modules
ビルドが通り、acm-foma.koが出来上がる。コメントが何とかとエラーが出ていたが、必要なものは出来上がったので気にしない。
/usr/src/linux(バージョン)/drivers/usb/class/acm-FOMA.koを/lib/modules/(バージョン)/kernel/drivers/usb/class/にコピーして、
#depmod -a
で、有効化。念のため一覧でもチェック
#modplobe -l
**動作チェック
$ lsusb
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
↑指す前、刺した後↓
$ lsusb
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0409:0224 NEC Corp.
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
認識する。
/var/log/messages
May 23 13:13:02 kandelaar kernel: [94992.204067] usb 2-1: new full speed USB device using uhci_hcd and address 4
May 23 13:13:03 kandelaar kernel: [94992.377380] usb 2-1: New USB device found, idVendor=0409, idProduct=0224
May 23 13:13:03 kandelaar kernel: [94992.377386] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
May 23 13:13:03 kandelaar kernel: [94992.377391] usb 2-1: Product: FOMA N705i
May 23 13:13:03 kandelaar kernel: [94992.377394] usb 2-1: Manufacturer: NEC
May 23 13:13:03 kandelaar kernel: [94992.377396] usb 2-1: SerialNumber: xxxxxxxxxxxxxxx
May 23 13:13:03 kandelaar kernel: [94992.377597] usb 2-1: configuration #1 chosen from 1 choice
May 23 13:13:03 kandelaar kernel: [94992.675825] acm-FOMA 2-1:1.0: ttyACM0: USB ACM device
May 23 13:13:03 kandelaar kernel: [94992.678809] acm-FOMA 2-1:1.2: ttyACM1: USB ACM device
May 23 13:13:03 kandelaar kernel: [94992.681066] usbcore: registered new interface driver acm-FOMA
May 23 13:13:03 kandelaar kernel: [94992.681894] acm_FOMA: v0.26-FOMA.08:USB Abstract Control Model driver for USB modems driver for docomo FOMA Cellular phone
認識するとttyACM0ができる。なぜかttyACM1まで出来てるが、cuで接続してみた感じだとttyACM0しか使えないようだ。
pppconfigで設定
-設定名:mopera
--ponで接続するたびに使うので、出来るだけ短くて覚えやすい名前のほうがいい
-number:186*99***2#
--186(発信者番号通知)を付ければユーザ名とパスワードが不要。
-user:
--空欄に出来ないためスペース一つ入れておいた
-password:
--空欄に出来ないためスペース一つ入れておいた
-speed:115200
-com:/dev/ttyACM0
-method:PAP
ダイアルアップは
pon 設定名
切断は
poff
pppconfigはコマンドラインのツールなので、GUIがいいって場合はgnome-pppというのもある。ちなみに利用するuserがdialoutグループに属してないとダイアルアップに成功しても、その回線を使えないようなので注意。
*埋立地
**一人反省会
このacm-fomaパッチ適用を知って作業開始したのが去年の秋頃。やっと今日になってビルド成功、その数時間後に通信できるまで設定できた。
はまったのはパッチを当てた後ビルドが通らないこと。原因は単純で、最新パッチが新しいカーネルを対象にしてたから。こんな単純なことに気づかなかったのは、
-何でも最新版を使うのが正しいという思い込み
-パッチ配布サイトの変更履歴を読んでなかった
-そもそもlinuxのプログラム環境が未知の世界なのでエラーの対処が分からない
こんなところ。
エラー内容は関数が未定義って感じだったので、おそらくパッチ作成時には使えた関数が今のバージョンでは無くなってるんだなと予想をつけて、手作業でソースコードを直そうと、linuxのAPIを調べ始めて数日、やっとバージョンによって使える関数が異なるかもしれないという事実に出くわし、linux公式ドキュメントを眺めたところ、実際は逆にパッチのほうが自分のシステムより新しすぎたという結果。
失敗記録なんか外に晒してもしょうがないから個人用wikiに放り込むだけにしよと思ってたけど、参考サイトとかいろいろ書いてあるから、お礼の気持を込めてブログの方にも追加。私ほどの馬鹿もいないだろうけど、同じ問題で悩んだ人の助けになるといいなあ。
**ここ以下迷走の記録
前提条件:
-windowsから接続できる状態まで携帯電話側を設定している。
ターゲット:
-FOMA n705i
-DynaBook Satellite J12
USBケーブルで繋ぐと充電を始める。ケーブルは充電専用と通信可能なものがあり、コンビニで売ってるようなものは大抵充電専用。
接続されているUSB機器の一覧は、
$ lsusb
で調べる。
まだドライバが入ってないのでroot hub以外のものは表示されない。
http://plaza.rakuten.co.jp/tutumikun/diary/200809270000/
こちらと同じ作業を行う。
まずlinuxカーネルソースを取得
# aptitude install linux-source-2.6.32
http://sourceforge.jp/projects/pepolinux/releases/
パッチはこちらのacm-FOMA.v0.26.09.tar.gzを使用。acm-FOMAは他のサイトでも見かけるが、pepolinuxのものが最近まで更新されてるようなので、おそらくこちらが最新版かと思われる。
解凍するとREADMEが入っています。とりあえず簡単と書いてある方を試します。
# make
if test ! -f /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h ; then \
echo not exit ! /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h ; \
exit 1; \
fi
not exit ! /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h
make: *** [acm-FOMA] エラー 1
残念、叱られた。確かに該当ファイルはない。
そういえばカーネルのソースを取ってきたまま解凍してない。
http://packages.debian.org/squeeze/all/linux-source-2.6.32/filelist
debianパッケージのサイトを見れば、何のファイルが何処に落ちてきたのかが分かる。
/usr/src/linux-source-2.6.32.tar.bz2 これがそうか
bzip2のtarオプションはj
# tar xjf linux-source-2.6.32.tar.bz2
足りないといわれてるacm-foma.hは drivers/usb/class/ に入っている。
これを対象ディレクトリにコピーして再度実行。
# make
if test ! -f /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h ; then \
echo not exit ! /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h ; \
exit 1; \
fi
if test ! -f /home/meatball/acm-foma/acm-FOMA.v0.26.09/cdc-acm.h ; then \
ln -s /lib/modules/2.6.32-5-686/build/drivers/usb/class/cdc-acm.h cdc-acm.h ; \
fi
make -C /lib/modules/2.6.32-5-686/build M=/home/meatball/acm-foma/acm-FOMA.v0.26.09 modules
make[1]: ディレクトリ `/lib/modules/2.6.32-5-686/build' に入ります
make[1]: *** ターゲット `modules' を make するルールがありません. 中止.
make[1]: ディレクトリ `/lib/modules/2.6.32-5-686/build' から出ます
make: *** [acm-FOMA] エラー 2
ヘッダ一個じゃなく、もっと必要なファイルがあるのかもしれない、
# cp -r /usr/src/linux-source-2.6.32/drivers /lib/modules/2.6.32-5-686/build/
これでmakeしてみるが、エラーメッセージはさっきと変わらず。
なんかいろいろ入ってないな
diff
patch
autoconf
ncurses-dev
http://d.hatena.ne.jp/kakurasan/20070724/p1
ここを頼りに環境を整備、なんとか素の状態でビルドできるまでやってからパッチをあててみる。
# make
CHK include/linux/version.h
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-x86
CALL scripts/checksyscalls.sh
CHK include/linux/compile.h
VDSOSYM arch/x86/vdso/vdso32-int80-syms.lds
VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds
VDSOSYM arch/x86/vdso/vdso32-syms.lds
LD arch/x86/vdso/built-in.o
LD arch/x86/built-in.o
CC [M] drivers/usb/class/acm-FOMA.o
drivers/usb/class/acm-FOMA.c: In function ‘acm_write_buffers_free’:
drivers/usb/class/acm-FOMA.c:974: error: implicit declaration of function ‘usb_free_coherent’
drivers/usb/class/acm-FOMA.c: In function ‘acm_write_buffers_alloc’:
drivers/usb/class/acm-FOMA.c:994: error: implicit declaration of function ‘usb_alloc_coherent’
drivers/usb/class/acm-FOMA.c:995: warning: assignment makes pointer from integer without a cast
drivers/usb/class/acm-FOMA.c: In function ‘acm_probe’:
drivers/usb/class/acm-FOMA.c:1093: error: ‘NOT_A_MODEM’ undeclared (first use in this function)
drivers/usb/class/acm-FOMA.c:1093: error: (Each undeclared identifier is reported only once
drivers/usb/class/acm-FOMA.c:1093: error: for each function it appears in.)
drivers/usb/class/acm-FOMA.c:1260: warning: assignment makes pointer from integer without a cast
drivers/usb/class/acm-FOMA.c:1294: warning: assignment makes pointer from integer without a cast
make[3]: *** [drivers/usb/class/acm-FOMA.o] エラー 1
make[2]: *** [drivers/usb/class] エラー 2
make[1]: *** [drivers/usb] エラー 2
make: *** [drivers] エラー 2
エラーの出てる関数やマクロは先のバージョンのカーネルでないとサポートしてない。
http://www.kernel.org/doc/htmldocs/usb.html
http://lxr.free-electrons.com/ident?v=2.6.29;i=NOT_A_MODEM
パッチが新しすぎたらしい。うちの環境には早すぎたんだ、腐ってやがる・・・。
さよならhosts.allowとhosts.deny
/etc/hosts.allow
/etc/hosts.deny
Linux系のOS触ってたら初心者のうちから割と触る馴染み深い設定ファイル。
しかし最近では時代遅れになりつつあるらしい。
玄箱に入れてみようとdebootstrapでsqueeze環境作っているときに気がついたんだけど、なんと最小構成ではこれらの設定ファイルは入ってこないらしい。
lennyでは最小構成でも入ってたし、正式リリース前の今年初めに入れたsqueezeでも確か入ってたはず。すわdebootstrapのバグ発見かとVirtualBoxで通常のインストーラを使って検証しても、やっぱり入ってなかった。
今までこれらの設定はlinuxの通信機能そのもので使われてるものと思ってたけど、実際はtcpdってパッケージで使われてるものらしい。
だからaptitude install tcpdすれば今まで通り使えるようだ。
なぜ標準装備っぽいイメージのtcpdが最初から入ってこないようになったのか?
debianスレで聞いてみたところiptablesを使えばtcpdは使っても使わなくてもいいらしい。そこではiptablesを使うことを「元栓から閉める」と表現していた。
今のところ必須パッケージではなくなった程度だけど、将来的には時代遅れだから使うと危険とか言われちゃう日も来るかもしれない。
grub2移行時にmenu.lstがない、バグか?って騒いだ人は今のうちにiptablesを勉強したほうがいいのかも。
/etc/hosts.deny
Linux系のOS触ってたら初心者のうちから割と触る馴染み深い設定ファイル。
しかし最近では時代遅れになりつつあるらしい。
玄箱に入れてみようとdebootstrapでsqueeze環境作っているときに気がついたんだけど、なんと最小構成ではこれらの設定ファイルは入ってこないらしい。
lennyでは最小構成でも入ってたし、正式リリース前の今年初めに入れたsqueezeでも確か入ってたはず。すわdebootstrapのバグ発見かとVirtualBoxで通常のインストーラを使って検証しても、やっぱり入ってなかった。
今までこれらの設定はlinuxの通信機能そのもので使われてるものと思ってたけど、実際はtcpdってパッケージで使われてるものらしい。
だからaptitude install tcpdすれば今まで通り使えるようだ。
なぜ標準装備っぽいイメージのtcpdが最初から入ってこないようになったのか?
debianスレで聞いてみたところiptablesを使えばtcpdは使っても使わなくてもいいらしい。そこではiptablesを使うことを「元栓から閉める」と表現していた。
今のところ必須パッケージではなくなった程度だけど、将来的には時代遅れだから使うと危険とか言われちゃう日も来るかもしれない。
grub2移行時にmenu.lstがない、バグか?って騒いだ人は今のうちにiptablesを勉強したほうがいいのかも。
Debianのランレベル
init 2とかしてもgnomeが終了しないのは何故か。
http://debian.fam.cx/index.php?Software%2FInit
↑によるとDebianではランレベルの扱いが他のディストリとは異なるとのこと。
ランレベル0:停止
ランレベル1:シングルユーザモード(root専用)
ランレベル2~5:通常の環境
ランレベル6:再起動
gnomeだのKDEだのを入れてると、必ず起動してくる。他のデーモン類も同様の扱いのようで、入ってれば起動するし、起動して欲しくなければaptitude removeせよっていうのが方針らしい。
そのコマンドは入ってないから念のため今入れておくかい?って聞いてくるredhat系とは根本から違うんだなあと。
設定でこの挙動は変えられるけど、CLIにしたけりゃtty1~6使えばいいし、xの設定変えるときなんかはinit 1で作業してから戻ったほうがよさそうだ。
http://debian.fam.cx/index.php?Software%2FInit
↑によるとDebianではランレベルの扱いが他のディストリとは異なるとのこと。
ランレベル0:停止
ランレベル1:シングルユーザモード(root専用)
ランレベル2~5:通常の環境
ランレベル6:再起動
gnomeだのKDEだのを入れてると、必ず起動してくる。他のデーモン類も同様の扱いのようで、入ってれば起動するし、起動して欲しくなければaptitude removeせよっていうのが方針らしい。
そのコマンドは入ってないから念のため今入れておくかい?って聞いてくるredhat系とは根本から違うんだなあと。
設定でこの挙動は変えられるけど、CLIにしたけりゃtty1~6使えばいいし、xの設定変えるときなんかはinit 1で作業してから戻ったほうがよさそうだ。
