2017年2月8日水曜日

Android 6.0のSDカードの扱い

現在メインで使っているスマートフォンalcatel IDOL3には
一応microSDカードを取り付けることができます。
ただし、抜き差しするにはSIMカードも取り出す必要があるため
とてもリムーバブルメディアとは呼べず、私は使ったことはありません。

しかし、Androidは6.0以降でこの辺りの仕様が変わり、
システムがSDカードを内部ストレージと同一視できるようになり、
意識することなくアプリケーションをSDカードに
インストールできることを、最近になって知りました。
ということで早速実験です。

exFATフォーマットの32GBのmicroSDHCカードをセットして起動すると、
[破損しています SDカード]なる通知が届きます。
開くと[SDカードは破損しています。タッチして修復します。]
と書かれているのでそれをタップすると
[SDカードのセットアップ]が開きます。
[ポータブルストレージとして使用]と[内部ストレージとして使用]が
選択出きるので後者を選んで[次へ]をタップします。
[内部ストレージとしてフォーマット]画面で
[消去してフォーマット]をタップします。
途中で
このSDカードは遅くなっているよ
うです。

このまま続けても構いませんが、こ
の場所に移動したアプリの動作がス
ムーズではなく、データ転送に時間
が掛かる可能性があります。

より快適に動作させるには、より高
速なSDカードの使用をお勧めしま
す。
と表示されましたが気にせず[OK]をタップです。
[新しいストレージへデータを移動]画面では
[今すぐ移動]と[後から移動]を選べますが、
後者を選択して[次へ]をタップし[完了]します。
なおこの作業によりSDカードは
その端末専用にフォーマットされてしまうので、
以後使いまわしできなくなります。

この作業を行う前は[設定]アプリケーションの
[ストレージおよびUSB]メニューで
"10.56GB使用中/16GB"と表示されていましたが、
作業後は表示形式が変わり、
新たに中間メニューが表示されて、
"10.60GB 合計使用量/45GB"との記述が。
[内部ストレージ]は"10.56GB使用中/16GB"、
[SDカード]は"44.05MB使用中/29.53GB"となっています。

ここで[SDカード]をタップし、
[:]アイコンで開くメニューから[データの移行]を実行すれば、
先に保留していたデータ移行作業が実行できます。
ちなみに[ポータブルとしてフォーマット]を実行すると、
SDカードを通常の使いまわし可能な
リムーバブルメディアの状態に戻せます。
フォーマットはFAT32になります。
なおその後でも同メニュー階層の[内部としてフォーマット]で
また専用状態にできます。

先のメニューでは移行可能なすべてのデータを
SDカードに移すことができますが、
各アプリケーション毎に移動させる事もできます。
[設定]アプリケーションの[アプリ]メニューで
適当なアプリケーションを選択して
[SDカードと端末容量]をタップし、
[使用済ストレージ]の[変更]をタップすると
[内部ストレージ]と[SDカード]を選択することが可能です。
ただしすべてのアプリケーションで可能なわけではなく、
できないものだとメニューが現れません。

で、SDカードにアプリケーションを移動させた状態で
そのSDカードを抜いて電源を入れると、
[SDカード が見つかりません]通知が届きます。
SDカードに移動済みのアプリケーションは、
システム的にも[Google Play]的にも
そもそもインストールされてないことになっています。
元のSDカードを挿して電源を入れれば復帰します。
ところで抜いたときに[この端末を再挿入]をタップすると
[切断]ボタンが現れ、それによりもともと
SDカードを使ってなかった状態に戻すこともできます。
そのSDカードを紛失してしまった場合に実行しましょう。

さて、[内部ストレージ]にしたSDカードはどういう状態なのか、
Linux PCにつないで調べてみました。
結果は以下のような感じです。
# parted /dev/sdc
(parted) print                                                            
モデル: Mass Storage Device (scsi)
ディスク /dev/sdc: 32.2GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始    終了    サイズ  ファイルシステム  名前            フラグ
 1    1049kB  17.8MB  16.8MB                    android_meta
 2    17.8MB  32.2GB  32.2GB                    android_expand
またAndroid端末に"adb shell"でログインし、
"mount"コマンドの結果をSDカードの有無で比べてみると、
SDカードがある時には余分に
/dev/block/dm-0 /mnt/expand/6c246bfb-d4f9-48ce-aa34-ba0e0f6cd903 ext4 rw,dirsync,seclabel,nosuid,nodev,noatime 0 0
があります。
つまりフォーマット的にはext4なんですけど、
Linuxのdm-cryptでボリューム全体を
暗号化してるということですね。
復号鍵は端末内部に厳重に置かれているでしょうから
取り出したSDカードから情報を引き抜くのは困難でしょう。
まあ当然の措置です。

ところで、このような用途を意識した
"Application Performance Class 1"なる
SDカードの規格と[A1]ロゴが新たに制定され、
どうもランダムアクセス時のデータ転送速度を保証しているようです。
今のところサンディスクのUltra microSDXC UHS-Iぐらいしか
正式な対応製品がないようですが、今後徐々に増えていくでしょう。
ちなみにA1ロゴがついていない類似品と間違えないようご注意を。

0 件のコメント:

コメントを投稿