Formater une carte mémoire (Secure Digital) pour le stockage externe d’Android, en Ext4
, et y créer un conteneur chiffré via luks
.
1. Why ?
1.1. version : en
This tutorial explains how to set an external storage SDcard in Android 4.4 to 8 (tested on 8.1), divided in two parts:
-
a public non-ciphered part ;
-
a secret ciphered container.
The public part allows to store musics (to be read by VLC for Android for
instance), or .img
to update the phone from TWRP
when your local storage is
ciphered (current TWRP
3.2.3 can’t decipher a local storage with schemas, or
at least more than 9-dots schemas).
The secret part allows you to store your personal data (such as family pictures, or contact backups) in a storage peripheral that could be saved from a broken phone, but not accessed by a theft.
The container is in fact a big file stored in the SDcard. This file is itself used as a storage peripheral, only accessible via a password.
Ext4
is needed to permit to create a container bigger than 4Go, as vFat
/
FAT32
(the file system that Android 8 would use if you format the card from
the Welcome New Card notification) can’t store files bigger than 4Go.
It’s interesting to notice that Ext4
is a default Linux
kernel file system,
and so the default Android file system, used for system partitions… Ext4
is
said to be faster and more reliable than FAT32
. I already gave
advices for ext
file systems.
With this setting, it’s possible to remove the SDcard from the phone, to plug
it in a regular GNU+Linux computer, and to mount the card and luks
container,
provided you remember the container password.
1.2. version : fr
Ce tutoriel explique comment configurer une carte SD comme un stockage externe dans Android 4.4 à 8 (testé avec 8.1), en le divisant en deux :
-
une partie publique (non-chiffrée) ;
-
une partie secrète (chiffrée).
La partie publique permet de stocker ses musiques (que VLC viendra lire là), ou
un fichier .img
pour la mise à jour du système via TWRP
, si le téléphone est
lui-même chiffré (car TWRP
pour Fairephone 3.2.3 ne sait pas déchiffrer le
stockage d’un téléphone protégé par un schéma de plus de 9 points).
La partie secrète permet de stocker ses données privées (comme ses photos de famille, ou les sauvegardes de ses contacts), dans un périphérique de stockage qui peut être extrait d’un téléphone cassé, mais pas lu par un voleur.
Le conteneur est en fait un gros fichier stocké sur la carte SD. Ce fichier est
utilisé comme un périphérique de stockage à part entière par le logiciel EDS
Lite (ou cryptsetup
).
Ext4
est nécessaire ici pour pouvoir créer un conteneur de plus de 4Go. En
effet, Android formaterait la carte SD en FAT32
si on le laissait faire,
mais FAT32
ne peut pas stocker de fichier de plus de 4Go.
Il est toutefois intéressant de noter qu' Ext4
est un système de fichier par
défaut dans le noyau Linux
, et qu’à ce titre il est utilisé par défaut dans
Android pour les partitions systèmes. Ext4
est réputé plus rapide et plus
fiable que FAT32
. J’ai déjà donné quelques
astuces à propose d' Ext4
sur ce
blog.
Avec cette configuration de carte mémoire, il est possible à tout moment de
retirer la carte SD du téléphone où elle est utilisée, de la brancher à un
ordinateur (par exemple sous GNU+Linux) et de monter la carte ainsi que le
conteneur luks
(à partir du moment où on se souvient du mot de passe de ce
dernier).
2. How ?
-
Insert SDcard in rooted Android peripheral (such as Fairphone)
-
Eject the detected new storage
-
Start
$ adb shell
from an USB-connected computer (or use the localterminal
app, to activate from developper tools of Android 8) -
# mke2fs -t ext4 /dev/block/mmcblk1p1
to format the 1st partition of the 1st SDcard, must be done from the phone -
Now configure the newly detected SDcard as external storage, it must not ask to format it again
3. Eventually fix permissions of the ext4
partition
If you encounter unsolvable storage access (by applications) problems, you can "fix" the storage card access permissions. Amaze or EDS Lite should not have problems accessing the card, provided that you gave them the rights from the root of the storage card when asked.
From adb shell
or the local terminal
:
$ su
# cd /mnt/media_rw/
# find 7* -type d -exec chmod 0775 {} \;
# find 7* -type d -exec chown media_rw.media_rw {} \;
# find 7* -type f -exec chmod 0775 {} \;
# find 7* -type f -exec chown media_rw.media_rw {} \;
4. Install EDS Lite with ExFat support
Download the additional librabry EDS ExFat. Copy it on your storage card, and from the bottom of the EDS Lite Settings, select the path to the EDS ExFat .so
library.
4.1. Create an EDS Lite luks
container
-
In the left sidebar menu, click on "Manage containers" and then on the "+" to create one.
-
Change the default encryption algorithm to
luks
. -
Select where to create the container:
-
hint: somewhere in the
ext4
external storage is appropriate -
hint: can be called something like :
.data.tmp
not to attract too much attention
-
-
Select the size of the
luks
container file to create in MB. Something like 66% for the storage card capacity can do the job. -
Validate, the creation will take a few seconds.
It’s possible to set EDS Lite to remember the container password to accelerate each opening of the container.
I recommend to close the container after each use to keep it safe in case of unwanted reboot of the phone.