先に結論を書いておく。
今日のところは無駄骨だった。




最近どうも、ndsスロットに差しているmk4-miniの調子が悪い。
具体的には、差しているのに認識されない(何も差さっていないようになる)事がたまにある。
矢張り、どうにも品質に問題があるようだ。


このまま行くと、完全に認識されなくなる恐れもある為、そうなる前にflashmeをすべきように思えてきた。
しかし、最近はflashmeしていると動作が怪しくなるゲームが登場してきたという話もあるので、flashmeする前に現在のファームをdumpして保存しておきたい。
そう思い、某所からfwdumper.ndsを貰ってきて実行してみたものの、これは書き込みがCFのみなのか、とにかく自分が使っているm3liteには保存できなかった(吸い出す段階までは動作したようだ)。
仕方が無いので、自分でgba_nds_fatをm3対応のものに変更するか、と思ったら、ソースは非公開なのか見付からなかった。


他に手段が無いか探してみたところ、dslinuxの/devに、firmwareという、そのまんまなデバイスがあり、cat /dev/firmware > firmware.bin等でそのまま吸い出せるらしい。
やってみた。
吸い出せた。


ところで、dslinuxはm3のSD系デバイスには対応していない。
よって、この吸い出したデータは、wi-fi経由で取り出す必要がある。
なので、まず、dslinuxからwi-fiを使えるようにする。
具体的には、

この辺を見て、m3のsramを一時記憶媒体として使えるようにし、そこにrc.confを置けば良い。
(/etc/rc.confがシンボリックリンクになっていて、/sram/rc.confを差している。尚、/etcはroでmountされているので変更不可。)
サンプルが/etc/rc.defaults等の名前で置いてあるので、それをcpしてからviで編集する事になる。使いにくいソフトウェアキーボードで。
とは言え、具体的に編集する必要があるのは、他のゲームで本体に無線lanの接続設定がされているなら、数箇所だけで済む(そうでないなら、無線lanのwep key等を全部手入力する必要がある)。
とは言え、本体の無線lan接続設定の何番を使用するかを指定しただけでは何故か自分の環境では動作しなかった。
しかし追加でessidやチャンネル番号を指定したところ動作した(wep keyは面倒だったので省略したが問題は無かったようだ。どうやら本体の設定を使ってくれたらしい)。
ついでにtelnetdを起動するように変更した(※このtelnetdはセキュリティ的に極悪なので、外部からアクセスされる可能性があるところでは絶対に起動させない事)。

  • 具体的には、wfc_configに1を設定し、essidに自分ところのssidを設定し、channelにチャンネル番号を設定し、start_telnetdをYESにした。

上記の編集が完了したら、 /etc/rc.d/network start と /etc/rc.d/telnetd start を実行する。
(ちなみに、sramの内容が残っていれば、起動後そのまま/sramがmountされ、rc.confが読み込まれてnetworkとtelnetdが起動するので、以降は、何やら怪しげな状態になっても気軽に再起動できる。但し、他のソフトを動かしてしまうとsramの内容が書き換わってしまい、またrc.confを再設定しないといけなくなってしまう為、注意が必要だが。)
そして、PCからtelnetでログイン。
接続後、パスワード入力も何も無しに、いきなりroot状態だ。
だが、これでとりあえず、ソフトウェアキーボードを使わずに済む。
尚、export TERM=linuxしておいた方が無難。


あとは、適当にファイルを転送すれば完了なのだが、今回はどうやってもファイルを転送する事が出来なかった。

  • まず最初にscpを試す。scpのバイナリは何故か壊れてるらしくエラーが出て動かない。ローカル→ローカルの転送すら動作せず。
  • sshクライアントはちゃんと動作している。しかし、ログイン後コマンド自動実行の機能が無い為、ファイルの転送は出来ない。
  • ds側にsshdサーバを立てて、PC側から接続してもらおうと思ったが、sshdサーバを起動する為の秘密鍵を生成する際に、/dev/randomだか/dev/urandom辺りがおかしいらしく、秘密鍵が生成できず、sshdサーバを起動できない。
  • ftpクライアント/サーバは無し。
  • httpクライアント(retawq)が入っていたので、それ経由でnetcatのバイナリを取得。さて実行しようと思ったら実行権限が無い。そしてchmodコマンドも無い。busyboxにも入ってない。何故だ。
  • mountの-o modeオプションや-o umaskオプションで無理矢理実行権限を付けられないかも試してみたが、jffs2にはそういうオプションは無いようだ。
  • dslinuxのサイトを見ると、平然とnetcatやchmod等を実行している。バイナリ無いのに。
    • どうやら、外付けで用意する/linuxディレクトリがあると、そこから色々と補完されるようだ。m3sd用のは存在しないが。


今日はここまでとする。
明日は、以下を試す予定。

  • 適当なマシンでsshd秘密鍵を生成し、http経由でdslinuxに転送し、それを使ってsshdサーバを起動できないか試す(この文章を書いてる最中に、この方法に気付いた)。
  • dslinuxのromイメージを最新版にしてみる。9日に更新されているようだが……。
  • m3のromマネージャ経由で、sram内のファイルを取得できないか試す(多分無理そう)。
  • readonlyで構わないので、m3のsdをmountできる方法を模索する(これも無理そう)。