passive log strage

バイク、ガジェット、ゲーム、ツール・・・等。

外部SDカードへのシンボリックリンク

2GBモデルの最大の欠点

IdeaPad A1の2GBモデルで気になっていたのが、内蔵SDカードの容量の少なさ。
まぁ、それも見越しての2GBであって、「まぁ、外部SDカードがあるからいらんかぁ」と楽天的に考えていたんだけど、Evernoteを使い始めるととたんに問題が再浮上した。

Evernoteのキャッシュディレクトリは内蔵SDに固定になっていて、ディレクトリ指定ができない。主に各ノートのインデックスとサムネイルらしいが、ヘビーに使っているとその容量がかなり膨らむ。
Evernoteを起動すると、自動的に同期を開始してインデックスを作り始めるので、参照しなくてもノートを作成するだけで「SDカードの容量が足りません」となる。

それに、せっかくの大画面でノートの閲覧ができないのもなんとももったいない。

さてどうしたものか。

内蔵SDから外部SDへのシンボリックリンクを張る。

昨日、CUIコマンドを突っ込んだばかりだが、busyboxには「ln」コマンドも含まれている。そこで、内蔵SDから外部SDのディレクトリへシンボリックリンクを張ることを考える。

内蔵SDカードのパスは「/mnt/sdcard」
外部SDカードのパスは「/mnt/sdcard/removable_sdcard」

Evernoteのキャッシュディレクトリは「/mnt/sdcard/Evernote」なので、「/mnt/sdcard/removable_sdcard/Evernote」へ実体をコピーし、「/mnt/sdcard/Evernote」からシンボリックリンクを張ればよいはず。

とりあえず、コンソールにてディレクトリをまるごとコピー

$ cd /mnt/sdcard/
$ cp -r ./Evernote ./removable_sdcard/
cp: cannot preserve premissions of './removable_sdcard/Evernote ・・・・ ': Operation not permitted
cp: cannot preserve premissions of './removable_sdcard/Evernote ・・・・ ': Operation not permitted
cp: cannot preserve premissions of './removable_sdcard/Evernote ・・・・ ': Operation not permitted
	:
	:
	:

ふむ、権限が足りんか。root権限が必要だとするとやっかいだな。rootingしてないし。

CUIじゃなくて、ファイルマネージャでやればなんとかできるかもしれない。

K2FileManagerにてディレクトリのコピーを行ったら成功したので、内蔵SDカード内のディレクトリを削除したら成功した。

「ln -s」できない

ディレクトリ実体の移動は成功したので、あとはシンボリックリンクを張る。

$ cd /sdcard
$ ln -s /mnt/sdcard/removable_sdcard/Evernote ./Evernote
ln: ./Evernot: Operation not permitted

ありゃりゃこちらも権限不足。もしかするとEvernoteのプロセスがディレクトリのファイルハンドルを掴みっぱなしなのかも。
一度再起動してみるかな。

再起動直後、こんなダイアログが表示された。

SDカードの変更?これって、外部SDカードを認識してるんじゃなくて、既存のディレクトリがないから出してるのか?
とりあえず一番上でOKしてみると、やっぱり内蔵SDに新しいEvernoteディレクトリを作った。やっぱりか。

もう一度内蔵SDのEvernoteディレクトリを削除して再起動。
それでもやはりEverenoteディレクトリが作成されてしまう。


仕方がないので、一旦Evernoteをアンインストールする。
その上で、Evernoteディレクトリへのシンボリックリンクを張る・・・が、やっぱり権限不足。うむ。

というか、そもそもシンボリックリンク自体ができるんだろうか?
ファイルシステムがFATの場合、その上にシンボリックリンクを置くことはできないが、FAT上のファイル・ディレクトリをext2ディレクトリに置くことはできるはず・・・

あれ?

そういや、「/mnt/sdcard」はあくまで「内蔵SDカード」なんだよな・・・

$ mount
\rootfs on type rootfs (ro,relatime)
tmpfs on /dev type fmpfs (rw,relatime,mode=755)
  :
  :
  :
/dev/block/mmcblk0p5 on /mnt/sdcard vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
  :
  :

どうみてもFATです。本当に(ry

さて、どうしたものか

シンボリックリンクが利かない上に、アプリ側で変更できない以上、どうしようもならない。とりあえずEvernoteはあきらめるか。
AndroidにはPostEverという送信専用のアプリがあるので、送信はこちらを使うか。閲覧は・・・しばらくはWeb版を使うしか・・・。

ほかにもSDカード上に固定ディレクトリを作るアプリはあるが、同じ手段が使えない以上、なんとかやりくりしながら使うしかないか・・・。

結論:保留!