スポンサーサイト

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

Asus TF300Tからsamba/NFSサーバーをマウントする

表題の通りのことを、自分と同じタブレットを使っている人のためにメモしておく。

まず、前提として、私のTF300Tはroot化されており、Asusのダウンロードサイトで提供されているJellyBeanのROMイメージを用いて、ICSからアップデート済みである。「設定」→「タブレット情報」→「ビルド番号」の項を見ると JRO03C.JP_epad-10.4.2.17-20121018 となっている。

一般論として、まずandroidというOSはカーネルにはLinuxカーネルそのものが使用されている。そして、Linuxカーネルの持つさまざまな機能は、

無効化
カーネルに組み込んで有効化
モジュールとしてコンパイルし、必要に応じてカーネルに動的にロードする

の3つの状態のいずれかになっている。単純に考えると何でも有効になっていれば便利な気がするが、実際には有効になっている機能が多ければその分カーネルの使用するメモリが増えていくので、特にandroidデバイスの場合、有効にする機能は厳選しなければならない。モジュール化しておけば、必要な時だけカーネルに組み込むことができるのでその点は問題ないが、やはり潜在的に使用するかどうかわからない多数のモジュールをシステムに置いておくことはストレージ容量の圧迫にもつながる。

当然のことながら、無効化されている機能は使うことができない。さてそこで、TF300Tの場合であるが、JellyBeanにアップデート後、端末内で以下を実行して、カーネルの設定をチェックしてみる。ネットワーク経由でサーバーの持つファイルシステムをマウントする機能には、代表的なものとしてCIFS(Windows共有/samba)と、NFS(unix系)があるので、この両者について調べる。

$ zcat /proc/config.gz | grep CIFS
# CONFIG_CIFS is not set
$ zcat /proc/config.gz | grep NFS
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_NFS_V4 is not set
CONFIG_ROOT_NFS=y
#CONFIG_NFSD is not set
CONFIG_NFS_COMMON=y

これから分かることは、Asusの提供するカーネルでは、CIFSについては、無効化されている。また、NFSに関しては、一番古いversion 2プロトコルだけがサポートされており、より効率化されたversion 3, 4については残念ながら無効になっているということである。

これを見る限り、CIFSは使えない、という結論になりそうなのだが、実は【朗報】無効化された機能でも、バージョンのマッチするカーネルで別途コンパイル済みのモジュールがあれば、それをカーネルに組み込める…のである。

で、ちょっと探したら、ここにあった。

ここからいただいてきたcifs_md4_10.4.2.17.zipを展開すると、cifs.koとmd4.koができる。.koはカーネルオブジェクト、つまりカーネルモジュールであることを表している。

これさえ手に入れば、あとは基本的に、PC・NASの動画をAndroidから「直接」再生する方法(要root)に従って設定すればいいのであるが、CifsManagerに上記モジュールのありかを教えておく必要がある。

cifs.koとmd4.koを任意のフォルダに…例えば/sdcard/cifsというフォルダを作ってその中に置く。そして、CifsManagerのSettingで、「Path to cifs.ko[:]*」の項目に、/sdcard/cifs/md4.ko:/sdcard/cifs/cifs.ko と入力した上で、「Load cifs module」、「Load via insmod」の項目をチェックしておく。その他は、上記ブログの記事を参照していただけばいいだろう。

ついでに、NFSについても触れておく。こちらはおおむね弁財天: AndroidにLinuxサーバのディレクトリをNFSマウントする:を参考にする。既にチェックした通り、Asus提供のJellyBeanカーネルではNFS version 2だけが使用可能(これにはモジュールは不要)である。実際にNFSサーバをマウントするには、クライアント側のツールが必要になるが、これはbusyboxがインストールされていればよい。root権限で、あらかじめマウントポイントとなるディレクトリを

# mount -o remount,rw /
# mkdir /mnt/test
# mount -o remount,ro /

などとして作成しておき、

# busybox -mount -o nolock,soft,intr,nfsvers=2 -t nfs NFSサーバのIPアドレス:NFSサーバのディレクトリ /mnt/test

のようにすればマウント可能である。アンマウント時は

# umount /mnt/test

とする。むろん、NFSサーバ側の/etc/exports等は正しく設定されていなければならない。

なお、より正式なアプローチとしては、自前でカーネルを再コンパイルして、自分が使う機能を有効化なりモジュール化なりしておくことである。しかし、一歩間違えばブートしなくなってしまうし、そもそも私自身がandroidでのカーネルコンパイル手順の詳細をまだチェックしていないので、当面はこのまま使用することにする。

Delicious Save this on Delicious
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

GM3D

Author:GM3D
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

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