読者です 読者をやめる 読者になる 読者になる

自宅にファイルサーバーを建てる Vol.0 AndroidでExt3フォーマットのHDDをマウント

PC等/一般
自宅サーバーを持っている人はどれくらいいるだろうか。
自宅にサーバーを置こうとすれば、基本的にPCを使うことになると思う。しかし、PCを常時つけっぱなしにするのは少々心配である。

そこで、AndroidやMaemoなど、LinuxベースのOSを積んだスマートフォンにハードディスクをつなげてサーバーを作るのはどうかということを考えた。(過去記事参照)

で、いよいよ実践編に入ったのでまとめる。

最初はAndroidネットブックを使って~と考えていたのだが、Androidには満足の行くsambaサーバーがなかったので使えなさそうだということがわかった。

しかし、試行錯誤の過程でAndroidでFAT32以外のファイルシステムのストレージをマウントする方法を見つけたので一応メモ。


Androidで特に手間なくマウントできるのはFAT32の外部ストレージだけであるということ。一部メーカーではSDXCに対応させるためにexFATにも対応させているものもあるらしいが、基本はFAT32だけ。
Microsoft社製ではないソフトを使えば32GB以上の記憶領域もFAT32としてフォーマットすることは不可能ではない。
だがFAT32はファイルシステムとしての信頼性に問題があるため、本当にサーバーとして運用するならext4を使いたい。

Android4.xでは内部ファイルシステムとしてext4を使っているくせに、外付けドライブにext4フォーマットのものをつないでもうんともすんとも言わない。(または、「破損しています」とのたまう)
そのくせ外した時には「SDカードが取り外されました」というメッセージが出るので、接続されたことはわかっているようだ。(USB接続のものもすべてSDカード扱い。)
また、「設定」→「端末」→「ストレージ」を見ても、何かが接続されているということは表示される。

これを使うには、自分でマウントする必要がある。
ちなみに、この方法はAndoroid4.x系では全部共通のはず。 実際、以下の説明は全部Ployer momo7 talentでやってみたものを載せている。
また、WIndowsのアプリケーションではExt3までしか作れなかったのでext3でフォーマットしたものを使ったが、全く同じようにext4でもいけるはず。

前提として、スーパーユーザー権限をとることができる(つまり、「rootをとっている」 )のが条件。
あとは、必要なアプリとして以下のものを入れておく。
・端末エミュレーター  なんでもいいけど、これとか
・ファイルエクスプローラー  ESとかが定番
ハードディスクをフォーマット。どういうわけかWindows用のEaseUS Partiton Masterというのでやると全領域を使えず、先頭に10MBほどの未割り当ての領域ができてしまう…。

まずは、マウント先のディレクトリを作る。
Android的には/mnt以下に作るのがいいのかな?
/mnt/ext_hdd


そうしたら、次にマウントしたいHDDを調べる。
もっと洗練されたやり方があるのかもしれないが、自分は接続前と接続後で/dev/block以下を見比べて、/dev/block/sda*がHDDのものと判断。
(sda1とsda5のどちらかがマウントしたいパーティションかは判断できなかったので勘に頼ってsda5の方をマウントしてみた。sda1とsda5、どちらかがext3パーティション。)


どれをマウントすべきかわかったら、端末エミュレーターを開く。
suしてからmount -t ext3 /dev/block/sda5 /mnt/ext_hdd

これでマウントできたか。とりあえずdfして確認してみよう。

/mnt/ext_hddには110GBほどの空き容量が!つまりこっちが正解だったということだ。

これで晴れて外付けHDDを使うことができるようになった。

あとは煮るなり焼くなりお好きにどうぞ。