Sauvegarder son Android phone the Unix way…

Bien, je poursuis donc mon exploration d’Android et surtout ma préparation au « grand saut » qui est le changement de ROM. Avec ce type de passage il convient de prendre toutes ces précautions. Les choses ne se déroulent que rarement « comme prévues ».

La sauvegarde des données du téléphone apparaît presque comme le plus facile: une app du type Helium vous permet facilement de sauvegarder des données pas essentielles mais parfois importantes (sms par exemple ou logs des appels). D’autres, peut être plus importantes, peuvent faire l’objet d’une plus grande attention comme vos contacts. Deux solutions: une app comme Bump (si vous avez un iPad ou une tablette ou un autre téléphone) ou la sauvegarde via un clic gauche, puis « Import/Export » on choisit une formule (export sur SD ou SIM card etc…) et hop! Perso j’ai fait le choix de les sauvegarder sur ma carte SD + d’utiliser Bump. Deux sécurités valent mieux qu’une.

Une fois ces données superficielles (mais néanmoins importantes) on peut se pencher plus avant sur la restauration du téléphone en lui-même. La ROM en clair. Si je foire malencontreusement un flashage, comment je peux retrouver ma rom originel? Ben je fais un NAND-backup sur une carte SD via ClockWorkMod. Chez moi cela donne:

[root@hades 2013-06-18.14.13.06_backup]# ls
boot.img      data.ext4.tar.a  recovery.img       system.ext4.tar.b
cache.ext4.tar    data.ext4.tar.b  recovery.log
cache.ext4.tar.a  data.ext4.tar.c  system.ext4.tar
data.ext4.tar     nandroid.md5     system.ext4.tar.a

Sont donc sauvegardées les partitions /boot, /data, /system, /cache et /recovery . Cependant nulle trace de la partition /EFS. En étant parano, si ça se passe mal /EFS peut être corrompu. Si /EFS est corrompu et que vous avez pas de sauvegardes c’est le brick assuré. En effet /EFS contient toutes les données de connexion au réseau téléphonique, en particulier votre précieux International Mobile station Equipment Identity (aka IMEI). Si on en croit Wikipedia: « The IMEI number is used by a GSM network to identify valid devices ». Autant dire qu’il ne faut pas le perdre sinon vous ne pouvez plus accéder au réseau téléphonique avec votre … téléphone. Un peu balôt quoi…
J’ai donc sauvegardé /EFS et ce de façon bien plus simple que les nombreux tutos à base d’installations de *.exe en folie. En fait j’ai juste fait ça, après avoir isolé ma partition EFS grâce à mount:

shell@android:/ $ su
root@android:/ # dd if=/dev/block/mmcblk0p3 of=/storage/extSdCard/efs.rfs
40960+0 records in
40960+0 records out
20971520 bytes transferred in 4.489 secs (4671757 bytes/sec)

Cela m’a crée un magnifique fichier *.rfs . Le RFS, comme son nom ne l’indique pas, est un format de fichier propre à Samsung, le Linux Robust File System . Je voulais quand même m’assurer que tout y était. J’ai donc regagné mon bash favori et:

[xxx@hades ~]$ adb pull /storage/extSdCard/efs.rfs SGS3/
5442 KB/s (20971520 bytes in 3.763s)

Puis ensuite:

[root@hades ~]# mount -o loop SGS3/efs.rfs /mnt/rfs/
[root@hades ~]# ls /mnt/rfs/
00000000.authtokcont  FactoryApp     imei         nv.log      wv.keys
bluetooth         gyro_cal_data  nv_data.bin      redata.bin
drm           h2k.dat        nv_data.bin.md5  wifi

Bien, ça m’a l’air d’être complet. Et si jamais je me rate, comment je vais faire pour la restaurer. Eh bien ma solution qui est non testée et que j’espère ne JAMAIS devoir tester est la suivante:

# heimdall flash --EFS --efs.rfs

Pourvu que ça n’arrive jamais, mais là j’ai au moins le sentiment rassurer d’avoir vraiment sauvegarder tout ce qui était vraiment nécessaire avant de me lancer.

Le prochain post concernera la ROM et ses déclinaisons. Ainsi que les raisons qui m’ont poussé à choisir une custom rom plutôt qu’une autre…

EDIT: je ne l’avais pas anticipé mais tous mes contacts et toutes mes applications ont été restaurés via mon compte Google qui était synchronisé avec mon téléphone!! Ca m’a simplifié considérablement la vie. Je suis néanmoins content d’avoir une sauvegarde en « dur » de l’essentiel de mon téléphone. J’ai d’ailleurs refait un backup complet dès ma nouvelle ROM installée…

Comment j’ai « rooté » mon Samsung Galaxy S3 avec Heimdall…

Ceci est un récit, d’une histoire vraie, la mienne (palpitant non?). Si jamais vous me copiez et que vous brickez votre téléphone, c’est pas ma faute. Désolé, il ne faudra vous en prendre qu’à vous même :)

Voilà près de une année que je possède ce téléphone. C’est un très bon téléphone. Je l’aime beaucoup. Je le préfère nettement au iPhone que je possédais auparavant. A un détail près: la durée de vie de la batterie. Franchement avec toutes ces apps qui tournent, sans que je sache bien lesquelles d’ailleurs, je suis quasi obligé d’éteindre mon portable tous les soirs si je ne veux pas me retrouver à court de batterie au petit matin!!! Je trouve ça scandaleux!!!

Etant (un chouilla) bidouilleur et un (gros) geek, j’avais bien entendu connaissance des ROMs alternatives. Mais j’avoue, je n’avais pas creusé le sujet. En fait, ce qui m’agacait c’était de lire des forums où des manoeuvres toutes connes passaient pour des trucs de hackxxor. Mais là, trop c’est trop. Entre la batterie, les updates à la con de AllShareCast et les applis que je veux pas qui tournent en tâche de fond; c’est décidé je reprends le contrôle!!!

La première étape est de passer root. Pour toute personne un tant soit peu informé, root c’est l’administrateur Unix basique. Il s’agit simplement d’élever ses privilèges pour pouvoir supprimer des merdes applis non désirés qui bouffent de la batterie. Arrivé là, c’est très simple: il faut flasher sa recovery pour installer un SU. Flasher est un bien grand mot pour indiquer que l’on va copier une image à la place d’une autre (en croisant les doigts pour que tout se passe bien!). La recovery est une partition à part sur le Samsung S3 (pas sur tous les téléphones de la série Samsung S, le S2 il paraît que c’est pas le cas, mais qui utilise encore un S2 pff…^^). Ce qui est plutôt sympa: aucune perte de données à envisager!!!

Comme je travaille sous Linux, l’outil de base est Heimdall. On l’utilise en download mode. C’est le mode que l’on utilise lorsque l’on veut charger quelque chose sur son téléphone. Sur le S3, un simple VolDown + Power + bouton central (ou Home Button ou button pour les intimes ^^) et vous y êtes. L’utilisation d’après

# heimdall help

est très simple:

# heimdall flash --partition_à_flasher image_à_flasher

C’est vraiment pas compliqué. Ca va aller vite, me voilà rassuré!! Je me suis quand même assuré d’avoir une partition recovery (on sait jamais, le diable est dans les détails!!). Là aussi c’est assez simple, il suffit de demander à heimdall de m’afficher la table des … partitions ou PIT (Partition Information Table)!!

# heimdall print-pit

--- Entry #9 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 6
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 98304
Partition Block Count: 16384
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: RECOVERY
Flash Filename: recovery.img
FOTA Filename:

Bon, pas besoin de faire de sauvegarde. A priori on va prendre une image pour en écraser une autre à un endroit bien précis, qui n’est pas un endroit sensible comme DATA ou SYSTEM ou EFS. C’est pas aujourd’hui que je vais bricker mon téléphone. On attendra le changement de ROM pour frissonner. Je note quand même au passage que j’ai 15 entries. 15!!! Je n’ai jamais eu autant de partition sur un de mes disques à usage perso!!

Bon, pas de quoi fouetter un chat. Allons-y: passage en download mode (VDown, Power, button) puis

[root@hades SGS3]# heimdall flash --RECOVERY recovery.img
Heimdall v1.4.0

Copyright (c) 2010-2013, Benjamin Dobell, Glass Echidna
http://www.glassechidna.com.au/

This software is provided free of charge. Copying and redistribution is
encouraged.

If you appreciate this software and you would like to support future
development please consider donating:
http://www.glassechidna.com.au/donate/

Initialising connection...
Detecting device...
Claiming interface...
Attempt failed. Detaching driver...
Claiming interface again...
Setting up interface...

Initialising protocol...
Protocol initialisation successful.

Beginning session...

Some devices may take up to 2 minutes to respond.
Please be patient!

Session begun.

Downloading device's PIT file...
PIT file download successful.

Uploading RECOVERY
100%
RECOVERY upload successful

Ending session...
Releasing device interface...
Re-attaching kernel driver...

Je n’ai même pas eu le temps de frissonner que c’est déjà fait. Notez que recovery doit être mis en majuscules: Unix est case-sensitive, c’est sensible ces bêtes-là. J’ai choisi d’installer ClockWorkMod . Y’en a d’autres. Mais celle-ci m’avait l’air attrayante au niveau richesse des fonctionnalités et design. Ca avait l’air beau sur le prospectus ^^

D’ailleurs, il serait peut-être temps d’aller voir. Le téléphone redémarre comme un grand, tout seul, une fois le flashage effectué. Je décide donc d’aller direct dans le recovery mode pour installer SuperSU (je sais, c’est un nom ridicule!). Et là, stupeur, je me retrouve face à « Android System Recovery ». Plutôt que face à « ClockWorkMod Recovery ». Késako??? Eh bien, après un peu beaucoup de recherches, j’ai découvert que lors du reboot le système pouvait réinstaller lui-même tout seul comme un grand une « stock recovery » qui écrase votre audacieux et fort risqué flashage. La bonne commande est donc:

[root@hades SGS3]# heimdall flash --RECOVERY recovery.img --no-reboot

et ensuite une fois la barre bleue complète, vous retirez le câble USB et la batterie pour éteindre le téléphone. Franchement c’est le moment qui m’a le plus fait flipper: retirer la batterie pour sortir du download mode. Ca fait débranchage sauvage, et sous Linux, c’est pas bon, mais pas bon du tout. Mais là ça a marché: j’ai ensuite rebooté directement dans le recovery mode (VolUP + Power + Button) et j’ai pu installer tranquillement SuperSU. A noter que ClockWorkMod prévient à un moment qu’il peut être écrasé lors du reboot, j’aurai apprécié de le savoir avant…

Les prochaines étapes sont les suivantes: un NAND-backup, terme barbare qui signifie que je vais sauvegarder ma ROM (stock samsung) avant de passer à la deuxième étape: CyanogenMod. Parce que, là, c’est un chouilla plus risqué et il faut posséder une sauvegarde pour restaurer le téléphone si ça va pas (ou si on veut plus de Cyanogen). Je vous raconterai certainement tout ça…

EDIT: lors de la première sortie de Clockworkmod, après l’installation de SuperSU, il faut bien cliquer sur « Yes, prevent ROM recovery flash », sinon votre ROM standard re-flashera une image stock recovery et il faudra recommencer toute la procédure.