Aller au contenu

[Cours : La ligne de commande] les bases de ADB, Busybox et Root


Recommended Posts

crée par nounours

Dernière version du cours transféré sur le WIKI

Dans ce cours nous allons voir comment se servir d'un outil très puissant, mais aussi très complexe, et très moche : la ligne de commande.

Rappel : Je ne suis pas responsable si vous avez des problèmes avec votre téléphone.

Je ne suis pas responsable si vous ne comprenez pas ce que j'essaye d'expliquer, et que vous faites une manipulation qui fait exploser votre téléphone. Je ne suis pas responsable si votre téléphone se transforme en arme nucléaire, qu'il développe sa propre intelligence et que la population terrienne est asservie par les terminaux android.

Et enfin : a la seconde où vous modifiez un élément de votre téléphone : VOUS PERDEZ LA GARANTIE.

Rooter un téléphone est une modification, donc vous perdez la garantie.

Le but de ce cours est de vous donner les bases nécessaires pour réaliser diverses taches telles que :

- Remplacer le home, ou d'autres applications système

- Accéder au cœur d'android, pour l'explorer, le modifier, l'optimiser (et le briquer si vous faites n'importe quoi)

- Accéder aux partitions, paramètres, options, etc .. du système

Vous comprendrez que je doit faire ce cours avant de donner une procédure pour faire une sauvegarde de votre firmware. Sans cela, beaucoup trop de questions serait posées, et ruinerais mon effort pour améliorer la scène du Spica actuelle.

Si un des termes employés dans ce cours vous est inconnu, je vous conseille de faire une recherche sur Wikipédia : http://fr.wikipedia.org/

Contenu de ce cours :

0 - Prérequis

Avant d'entamer ce cours, vous devez avoir lu et assimilé le contenu de mon premier cours :

[Flasher son tél] Cours sur Odin et les bases d'Android et du Spica

Sa compréhension est obligatoire pour suivre ce cours, je ne répèterais pas ce qui est déjà expliqué dedans.

Vous devez également connaitre un minimum de choses concernant l'invite de commande dans windows. Je vous invite donc a consulter le dossier de zebulon.fr, jusqu'à la troisième page : http://www.zebulon.fr/dossiers/63-invit … s-cmd.html

Ce dossier devrais vous permettre de vous familiariser aussi avec les c:\dossiers\dossiers\fichier.ext, couramment appelés chemin vers un fichier.

Vous pouvez aussi taper invite de commande sur google pour plus d'info.

Pour ce cours, nous allons avoir besoin :

- du SDK d'android : http://developer.android.com/intl/fr/sdk/index.html

- d'un téléphone rooté, avec busybox installé : Si vous êtes sous Android 1.5, suivez le tutoriel de Hantiz jusqu'à la fin : https://www.frandroid.com/forum/viewtopic.php?id=6112. Si vous êtes sous Android 2.1, lisez le post de LeshaK sur samdroid : http://forum.samdroid.net/threads/252-N … -upd-03-30. Si vous avez la ROM de fabricez, alors pas de probleme, elle est déjà rootée.

1 - ADB

ADB signifie Android Debug Bridge. C'est un outil qui permet l'accès a la console du téléphone (car vous n'êtes pas sans savoir que android est basé sur un kernel linux, et que la base de linux est de proposer des consoles pour avoir accès au système).

Pour ceux qui veulent plus d'info sur ADB et le SDK en général, voir le site de google : http://developer.android.com/intl/fr/gu … s/adb.html

1.1 - ADB, installation et conseils

ADB fait partit des outils du SDK d'android.

Pour installer le SDK d'android, rien de plus simple, vous n'avez qu'a extraire le .zip dans un répertoire de votre choix.

Pour faciliter l'utilisation d'ADB, je vous conseille de créer un répertoire a la racine de votre disque dur. Pour le reste de ce cours, je supposerais que vous avez crée le dossier "Spica" a la racine de votre disque C:

Dans ce dossier, copiez les fichiers suivants, que vous trouverez dans le dossier tools de votre dossier android-sdk :

- adb.exe

- AdbWinApi.dll

- AdbWinUsbApi.dll

Ce sera votre répertoire de travail, dans lequel vous mettrez et récupèrerez les fichiers en transit entre votre pc et votre téléphone.

Cette technique que j'utilise permet de simplifier au maximum les commandes, on n'a plus besoin de taper les chemins des fichiers qui peuvent être très longs.

1.2 - ADB, Connexion du téléphone

Dans une fenêtre DOS (=invite de commande, CMD) allez dans votre dossier de travail et tapez :

adb devices

Cette commande est surement la première a effectuer, elle permet de vérifier que le téléphone est bien connecté.

Elle devrait vous envoyer le résultat suivant :

* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
5700XXXXXXXX       device

Les deux premiers messages concerne le lancement du processus nécessaire a ADB pour communiquer avec votre téléphone. Si vous n'utilisez pas ADB pendant un moment, le processus se lance ou se relance automatiquement.

La dernière ligne indique qu'un téléphone est connecté (J'ai masquer la fin du numéro).

Si vous ne voyez pas d'inscription sous la ligne "List of devices attached", c'est que votre téléphone n'est pas reconnu. Vérifiez les paramètres du téléphone (mode débogage USB) et vos drivers.

1.3 - ADB, les commandes les plus utilisées

adb install c:\Spica\fichier.apk

Envoie l'application située dans c:\Spica\fichier.apk, et l'installe sur le téléphone.

Cette commande est particulièrement utile pour installer des applis genre Astro ou même l'appli market, quand vous n'avez pas d'autre connexion a disposition.

adb push c:\Spica\fichier /sdcard/

Envoie le fichier c:\Spica\fichier vers le dossier /sdcard du téléphone. A noter que le dossier /sdcard est en fait la carte SD.

adb pull /sdcard/fichier c:\Spica\

Récupère le fichier /sdcard/fichier depuis le téléphone et le met dans le dossier c:\Spica

A noter :

Avec ces deux commandes (push et pull), notez que le fichier peut être renommé au passage.

Par exemple "adb push c:\Spica\souris /sdcard/clavier" envoie le fichier "souris" et le renomme en "clavier" sur le téléphone. Le contenu du fichier reste inchangé.

Si vous ne précisez pas le nom du fichier de destination, vous devez impérativement finir le chemin avec un / dans le cas du push et un \ dans le cas du pull. Si vous tapez "adb push c:\Spica\fichier /sdcard" alors votre fichier sera envoyé a la racine du téléphone (le /) sous le nom sdcard.

adb shell

Ouvre le shell du téléphone (shell = console = invite de commande -pas l'invite de commande windows, mais celle d'android- ). Vous devez alors voir un $ suivit du curseur clignotant.

Ce $ est ce qu'on appelle l'invite ou prompt.

Toutes les commandes que vous entrerez dès lors seront envoyées au téléphone.

Pour quitter le shell, vous pouvez taper exit, vous revenez alors sur la ligne de commande DOS.

adb shell 'commande'

Exécute la 'commande', affiche le résultat et quitte le shell.

Utile si vous n'avez qu'une commande a effectuer.

Il existe d'autres commandes pour adb, vous pouvez les consulter sur http://developer.android.com/intl/fr/gu … s/adb.html

Il existe même des commandes pour bidouiller les databases SQL présentes dans le téléphone !

2 - Busybox

Source Wikipédia : http://fr.wikipedia.org/wiki/BusyBox

BusyBox est un logiciel qui implémente un grand nombre des commandes du standards Unix

Dans le cas de notre téléphone, on dispose d'une version de busybox compilée spécialement pour l'architecture du processeur présent.

Nous allons voir les commandes les plus utiles, pour les autres, je vous conseille de suivre une initiation au shell linux/unix, que vous trouverez surement en cherchant un peu sur google.

Veuillez noter que la syntaxe de la ligne de commande linux est complexe, et qu'il existe de multiples façon de les utiliser. Je n'aborderais ici que les plus simple, afin de permettre a tous d'acquérir le minimum de connaissances nécessaire pour utiliser Android.

Notez également que certaines commandes doivent être exécutées en root, sinon elles renvoient une erreur.

Passons a la description des commandes les plus utiles :

cd

La commande 'cd' (Change Directory) fonctionne de la même manière sous linux, android, et l'invite de commande de windows. Voir le lien sur l'invite de commande windows dans le chapitre 0 - prérequis pour plus de détails sur cette commande.

A noter que taper 'cd' sans indiquer de dossier va renvoyer une erreur "cd: HOME not set".

L'explication est simple : la commande 'cd' utilisée est issue de linux, l'entrer sans préciser de dossier vous envoie (sous linux) dans votre dossier 'home'. Hors dans android, ce dossier n'existe pas.

cp

Permet de copier un fichier.

La syntaxe exacte est : "cp fichier-origine fichier-destination"

Vous pouvez changer de dossier et/ou renommer le fichier avec cette commande.

Quelques exemples :

"cp toto /sdcard/" : copie le fichier toto (depuis le dossier ou vous êtes) dans le dossier sdcard.

"cp /system/toto toto2" : copie le fichier toto du dossier system vers le dossier ou vous êtes, et le renomme en toto2.

"cp /system/toto /sdcard/toto2" : copie le fichier toto du dossier system vers le dossier sdcard, et le renomme en toto2.

Les trois commandes qui suivent on leur utilisation détaillée uniquement pour les éléments se trouvant dans le dossier ou vous êtes.

rm

Supprime un fichier. Utilisation : "rm fichier"

mkdir

Crée un dossier. Utilisation : "mkdir dossier"

rmdir

Supprime un dossier. Utilisation : "rmdir dossier"

df

Indique l'espace total, utilisé et disponible sur chaque partition montée sur le système.

ls

Liste le contenu d'un dossier.

Utilisée seule, elle affiche juste la liste des fichiers et dossiers contenus dans le dossier ou vous vous trouvez lorsque vous lancez la commande.

ls -l

Liste le contenu d'un dossier, et affiche les attributs des fichiers : Permissions, propriétaire, date et heure de la dernière modification.

Regardons cela en détails :

-rw-r--r-- root root 2375 2010-03-16 13:56 build

drwxr-xr-x root root 2010-03-16 13:56 etc

drwxr-xr-x root root 2010-03-16 15:56 lib

drwxr-xr-x root shell 2010-03-16 15:56 bin

La première colonne affiche les permissions du fichier, et précise si il s'agit d'un dossier, d'un lien, ou d'un fichier.

La deuxième affiche le groupe d'utilisateurs propriétaire du fichier.

La troisième affiche l'utilisateur propriétaire du fichier.

Ensuite on a la date et l'heure de la dernière modification, puis le nom du fichier.

Quelques explications sur les permissions :

Le code que vous voyez pour chaque fichier représente les permissions attribuées. Je vais vous montrer comment ca marche avec cet exemple :

drwxrwxrwx

Ceci est le code d'un dossier ou toutes les permissions sont accordées.

La première lettre indique le type de l'élément :

- (le tiret) : indique que c'est un fichier.

d : indique que c'est un dossier

l : indique que c'est un lien vers un élément.

Le reste du code est composé de 3 séries de 3 caractères : rwx

Ces caractères sont toujours dans cet ordre.

Le 'r' (Read) indique le droit de lecture, le 'w' (Write) indique le droit d'écriture, le 'x' (eXecute) indique le droit d'exécution.

La première série concerne les droits pour l'utilisateur propriétaire du fichier.

La deuxième série concerne les droits pour le groupe de l'utilisateur du fichier.

La troisième série concerne les droits des autres utilisateurs.

Deux exemples :

-rw-r--r-- root root 2375 2010-03-16 13:56 build

Le premier caractère ' - ' indique que c'est un fichier.

Le premier groupe de permissions 'rw-' indique que l'utilisateur, ici 'root' a les droits de lecture et d'écriture, mais pas d'exécution.

Le deuxième groupe de permissions 'r--' indique le groupe 'root' a uniquement le droit de lecture.

Le troisième groupe de permissions 'r--' indique que les autres utilisateurs on uniquement le droit de lecture.

drwxr-xr-x root shell 2010-03-16 15:56 bin

Le premier caractère ' d ' indique que c'est un dossier.

Le premier groupe de permissions 'rwx' indique que l'utilisateur, ici 'shell' a les droits de lecture, d'écriture, et d'exécution.

Le deuxième groupe de permissions 'r-x' indique le groupe 'root' a les droits de lecture, d'exécution, mais pas d'écriture.

Le troisième groupe de permissions 'r-x' indique que les autres utilisateurs on les droits de lecture, d'exécution, mais pas d'écriture.

Pour résumer :

- premier caractère = fichier (-), dossier (d), lien (l)

- rwx = Read : lecture; Write : écriture; eXecution : exécution

- 3 séries dans l'ordre : utilisateur, groupe, les autres.

chmod

Change les permissions d'un fichier ou d'un dossier.

Pour cela on lance des commandes du type : chmod 644 fichier

On code les groupes de permissions avec un code hexadécimal, chaque groupe représentant un chiffre.

En détails, pour chaque groupe, on calcule le chiffre correspondant aux permissions :

R = 4

W = 2

X = 1

Donc si on veut donner les permissions rwxrw-wx a un fichier, on code comme suit :

rwx : 4+2+1=7

rw- : 4+2+0=6

-wx : 0+2+1=3

donc on tape chmod 763 fichier

Un autre exemple :

rw-w-r-x :

rw- : 4+2+0=6

-w- : 0+2+0=2

r-x : 4+0+1=5

donc on tape chmod 625 fichier.

Petit cadeaux bonus pour ceux qui en aurait besoin :

effer5001199115366.th.jpg

chown

Change le propriétaire et/ou le groupe a qui appartient le fichier. Utilisation : "chown user:group fichier"

Par exemple :

"chown shell:root /system/toto" : change l'utilisateur et le groupe du fichier toto en shell et root.

cat

La commande cat affiche le contenu du fichier indiqué.

Utilisation : "cat /sdcard/toto.txt"

La commande 'cat', avec Android, est principalement utilisée avec une redirection.

Une redirection permet tout simplement de rediriger la sortie de la commande précédente vers un fichier ou un périphérique.

La redirection la plus utilisée avec Android est symbolisée par le signe >

La combinaison de la cat et de la redirection permet d'effectuer des opérations très intéressantes, telles que la copie d'un fichier vers un autre. Vous aurez deviné qu'avec cette combinaison, on peut copier des fichiers systèmes protégés, ou même le contenu d'une partition.

L'utilisation de cette combinaison est : "cat fichier > fichier2". On effectue alors la copie de 'fichier' vers 'fichier2'.

A noter que si le 'fichier2' n'existe pas, il sera crée, et que si il existe déjà, il sera remplacé. Aucune confirmation ne sera demandée, alors faites attention a ce que vous faites !

3 - Le Root

Un téléphone "rooté" est un téléphone sur lequel le compte 'administrateur' est accessible.

L'administrateur sous linux, et donc Android, est en fait l'utilisateur 'ROOT', qui est le super-utilisateur du système. Il a absolument tout les droits, y compris le droit de supprimer des fichiers indispensables au système, ou même de supprimer son compte d'utilisateur.

Vous comprendrez donc que être root sur son système c'est :

- ca parait cool

- ca permet de modifier son système

Mais c'est surtout :

- dangereux

- très dangereux : vous pouvez faire une erreur, et supprimer/modifier un élément important du système

- encore plus dangereux : si vous avez accès au root, n'importe qui y a accès, et peu faire les modifications, lire n'importe quel fichier, etc ...

Vous devez utiliser l'utilisateur ROOT que si vous savez ce que vous faites, et uniquement lorsque cela est nécessaire.

Lorsque vous êtes sur la console du téléphone, pour gagner les privilèges de l'utilisateur ROOT, vous devez taper :

su

L'invite (le caractère qui est avant le curseur, la ou vous entrez une commande) va changer.

Quand vous n'etes pas root, le $ s'affiche.

Quand vous êtes root, le # s'affiche.

4 - Modifier les fichiers systèmes

La plupart des procédures permettant de 'rooter' le Spica incluent un petit utilitaire : remount

remount permet de changer le type d'accès au système de fichier, soit en lecture seule, soit en lecture-écriture.

Par défaut, au démarrage du téléphone, le système Android est en lecture seule, cela permet d'éviter qu'une application ou un utilisateur malveillant modifie le contenu du système.

Pour faire des modification, on doit activer le mode lecture-écriture en tapant :

 remount rw

(rw signifie : Read Write)

Quand vous avez terminé les modifications, vous devez remettre le système en lecture seule :

remount ro

(ro signifie : Read Only)

Si vous avez fait des modifications sur des fichiers systèmes importants, le mieux et encore de redémarrer le téléphone en tapant :

reboot

Voila, j'espère ne rien avoir oublié, et si tel était le cas, je ferait les ajouts nécessaires.

Votre prof, nounours.

Modifié par taz067
Lien vers le commentaire
Partager sur d’autres sites

Je précise pour ceux qui ne veulent pas installer le SDK d'Android, que cela n'est pas nécessaire.

Il n'est pas non plus nécessaire de rooter son téléphone, les commandes exécutées en mode shell le seront alors uniquement en mode utilisateur "guest".

Cela peut être suffisant, à moins que l'on veuille supprimer des applications systèmes par exemple. Cela peut même éviter des fausses manips ! :mad:

Pour ce faire, il suffit d'aller sur le site de proxoid, http://code.google.com/p/proxoid/

et télécharger un package contenant les adb, sa .dll et les scripts. 1Mo tout au plus.

Enfin pour les plus aguerris, les drivers usb sont disponibles dans le pacage et peuvent ainsi éviter d'installer les "infâmes" produits de Samsung (j'ai nommé ainsi Kies et PC studio) :o Je n'ai pas testé cette partie usb personnellement, mais si quelqu'un l'a fait, qu'il le dise !

En prime, rien ne vous interdit de télécharger proxid qui permet de faire du tethering sans root qui marche (testé :) )

J'utilise pour ma part plus volontiers le tethering du root de la LK02... :D

Modifié par Ricou
Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...
  • 2 weeks later...
  • 1 month later...

j'ai une question, voila je veux installer une application sur ma carte sd, donc apparament passer en root, ça c'est pas une soucci mais ce que je faire c'est :

-rooter le phone

-installer les softs sur la sd

-ne plus être en root et lancer les soft installer sur la sd ?

c'est possible ? Existe-t-il un autre moyen que celui là (le root) pour installer les softs sur le portable ?

Modifié par abdess47
  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...
  • 2 weeks later...
  • 3 months later...

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...