スポンサーサイト

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

SH-12C CIFS

久しぶりの更新となるのだけど、どうにもSH-12Cでやること(弄ること)が無くなってきちゃって、普通に使っていて不便はさほど感じないのだけれど、なにかしたいぞ!と思ったのであった。。。w

それで思いついたのが、CIFS。

スマホは外に持って出る端末なので、ネットワークファイルをマウントするなんて必要はほとんど無いと思う。
しかし! やることがないから。。。w

現在452さんが作ってくれたカスタムカーネルイメージを使っているのだけど、CIFSは対応していない。
それなら、cifs.koを作ってやろう!

と言う訳で、あれこれ調べて、やっと動くモジュール達が出来たので、晒すことにした。

まずはじめに、CIFSとは何ぞ?

CIFSとは、ネットワーク上にある共有フォルダを、Windows以外でも使ってしまおうと言う物。
それを使うと、Android上にネットワーク共有フォルダをマウントできてしまう。
マウントするか、ネットワークファイルとして使うかの違いはと言うと。。。
マウントすると、あたかもそのファイル達が端末内にあるように見えるので、ネットワークファイルに対応していないアプリ等でそのファイルを開けたり使えたりする。
今のアプリはネットワークに対応しているものが多いので、使うメリットはそんなに無いんだけど、、、
でもでも、例えば1TBのHDDをマウントしたとすると、端末の容量が1TB以上になるって事!!!w
HDD内のあんな動画も、こんなマンガもSDに移動すること無く開くことが出来るってことだよね〜www

まあ、ネットワーク環境内に居ること前提になってしまうんだけど。。。ね。


説明がちょっと長くなったけど、とりあえずファイル。。。
SH-12C カーネルバージョン 2.6.35.7-perf  専用 CIFSに必要なファイル
cifs.zip

最近、4Sharedは、サインアップしないとDLできなくなってしまったみたい。
めんどくさいと思うけど我慢してください。。。ごめんなさいw

それでは、使い方。


導入

まず、ダウンロードしたzipファイルを好きな場所に解凍する。
ここでは、例として
C:\Android\cifs
と言う場所に解凍することにする。
その中には下の4つのファイルがあるはず。

slow-work.ko
cifs.ko
nls_utf8.ko
readme.txt

ここ迄いったら、SH-12CをPCに繋ぐ。
そしてコマンドプロンプト(又はターミナル)より、(#部分はコメントなので打つ必要なし)

#ディレクトリ移動
cd C:\Android\cifs

#必要モジュールを端末に移動
adb push slow-work.ko /data/local
adb push cifs.ko /data/local
adb push nls_utf8.ko /data/local

#adb shellに入りsuする
adb shell
su

#systemが読み取り専用なので、読み書き可能にする
mount -o rw,remount /system

#モジュールをコピーする(mvで移動でもOK)
cp /data/local/slow-work.ko /system/lib/modules
cp /data/local/cifs.ko /system/lib/modules
cp /data/local/nls_utf8.ko /system/lib/modules

#パーミッションを変更
chmod 644 /system/lib/modules/slow-work.ko
chmod 644 /system/lib/modules/cifs.ko
chmod 644 /system/lib/modules/nls_utf8.ko

#なんか嫌なので、読み取り専用に戻す
mount -o ro,remount /system

#マウントポイントを作る※1
#/mnt以下にフォルダを作りたいからrwでリマウントし、作成、roに戻す
mount -o rw,remount /
mkdir -p /mnt/cifs/ShareFolder   #※2
mount -o ro,remount /

#モジュールをロードする※3
insmod /system/lib/modules/slow-work.ko
insmod /system/lib/modules/cifs.ko
insmod /system/lib/modules/nls_utf8.ko

あとは、マウントするだけ。

※1 マウントポイントとは、マウント先のフォルダとなるもの。
   例えば、/mnt/cifs/ShareFolderにマウントしたら、そこにネットワーク上のファイル達が展開されて見える。

※2 例として ShareFolder と言う名前のフォルダを作ったけど、好きな名前でOK。
   ネットワーク共有フォルダ名が Documents だったら、 /mnt/cifs/Documents とかにする。
   複数の共有フォルダをマウントしたい場合は、その数ぶんフォルダを作成する。

※3 insmodの順番は、この通りにする事推奨。とりあえず、一番最初はslow-work.koで。



マウント

マウントする方法は、大きく分けて2つある。
①コマンドによるマウント
②アプリを使用してマウント


①コマンドによるマウント
コマンドプロンプト(又はターミナル)より、adb shellに入り、suした上で、

mount -t cifs -o username=USERNAME,password=USERPASS,iocharset=utf8 //192.168.*.*/ShareFolder /mnt/cifs/ShareFolder

改行は入らないで1行。
USERNAME、USERPASS、IPアドレス、ShareFolderの部分は自分の環境に合わせて。

②アプリを使用してマウント

GooglePlayからインストール出来るアプリ
CifsManager とか MountManager とかを使う。

この2つを使ってみたけど、一長一短。
MountManagerは、必要モジュールを登録して、自動でinsmodしてくれたりするんだけど、
読み込み専用のところにあるマウントポイントにはマウントできないし。。。
CifsManagerは、cifs.koしか登録できないので、自分でモジュールをinsmodしないといけない。

自分の中で面倒だけどこれでいいかな。。。と思った使用方法は、

MountManagerにモジュールを登録しておいて、自動でinsmodさせて、
マウント自体はCifsManagerでする

って事かな。

(再起動すると、モジュールのロード(insmod)を再びやらなければならない。)
(MountManagerでモジュールロードは1回やれば再起動しなければやらなくて良い)

アプリは英語だけど、調べる必要もなく簡単(だと思う)ので、自分で弄ってみてください(手抜きw)。



アンマウント

umount /mnt/cifs/ShareFolder

当然のことながら、ShareFolder部分は、マウントポイント名で。
アプリでアンマウントなら、コマンド打つ必要はなし。



ネットワーク環境から外れる時、もしくはWiFiを切るときには、アンマウントすることをおすすめする。
自分はそれでちょっとおかしな状態になったことがあるので。(アプリ側で)


後書き

上にもちょろっと書いたけど、再起動するとモジュールはもう一度ロードし直さなければならない(insmod)。

やっぱり、再起動のたびにコマンドで insmod とか、 mount / umount するのはかなり面倒なので、
アプリを使ってやってもらうのがおすすめ。。。

readmeには、autoexec.shにinsmod部分を書けばとか書いたけど、
上でちょろっと書いた方法(MountManagerでinsmodをやってもらい、CifsManagerでmount)を実行すれば、
モジュールロードは再起動後1回やればいい(自動化も出来る)ことだし、
わざわざautoexec.shに書く必要なんか無いなって思ってきたw

と言う訳で、今更cifs楽しんで〜^^w

スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

tozionsdoor

Author:tozionsdoor
ただ書くだけ。スクショとか取るの面倒。貼るのも面倒w

検索フォーム
FC2カウンター
最新記事 5件
最新コメント
月別アーカイブ
カテゴリ
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。