En fait, sans retirer la batterie, il est impossible d'éteindre un appareil. complètement afin d'éviter les pertes qui pourraient éventuellement se produire en raison d'un court-circuit causé par l'eau.
Jetons un bref coup d'œil à ce que fermer et quelles sont les options possibles pour y parvenir.
COMMENT FONCTIONNE LE SHUTDOWN ?
Android est basé sur le noyau Linux, qui est le tout premier exécutable du système d'exploitation qui est exécuté lors de l'utilisation du système. processus de démarrage . Le noyau initialise le matériel nécessaire et prépare un environnement de base avant de s'exécuter. init
le tout premier processus en userspace que nous pouvons voir. C'est init
qui démarre alors et s'occupe de tous les services et processus. À l'arrêt, c'est l'inverse qui se produit.
INIT
Lorsque vous appuyez sur Power Off
à partir de Power Menu, ou lorsque vous émettez reboot -p
à partir d'une application terminale ou adb
il définit la propriété Android sys.powerctl
a shutdown
(avec une raison facultative pour l'arrêt) qui indique init
il est temps de sauvegarder tout le travail non sauvegardé dans un stockage persistant, d'arrêter tous les services et processus de manière élégante (ou brutale), de synchroniser les caches des systèmes de fichiers, de démonter les systèmes de fichiers et de passer le relais au noyau en effectuant un appel système. redémarrer ( réf. ) . Le noyau s'assure ensuite que tous les processus de l'espace utilisateur sont arrêtés, y compris les processus suivants init
Il démonte de force tout système de fichiers récalcitrant et finit par mettre hors tension les périphériques matériels, notamment les processeurs et la mémoire vive.
Android init
prend en charge deux modes : shutdown
y reboot
. Linux init
dispose de quelques options d'arrêt supplémentaires, notamment halt
y poweroff
. Voir cette réponse pour plus de détails.
KERNEL
La plupart du temps pendant l'arrêt est occupé par init
. Afin de gagner du temps, vous pouvez contourner init
et demander directement au noyau de couper l'alimentation en faisant syscall :
reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_POWER_OFF)
C'est ce que busybox poweroff -f
ou la commande Clé magique SysRq O
(équivalent à Alt - SysRq - O sur un PC) ferait ( réf. ) . Les deux doivent être précédés de sync
pour éviter d'endommager les systèmes de fichiers. En ligne de commande, on peut faire :
~# echo 1 >/proc/sys/kernel/sysrq
~# echo s >/proc/sysrq-trigger
~# echo o >/proc/sysrq-trigger
C'est le moyen le plus rapide d'arrêter le système d'exploitation sur un ordinateur. enraciné appareil.
HARD REBOOT
Mais comment éteindre l'appareil si même le noyau ne répond plus ? Le matériel peut généralement s'en charger, c'est-à-dire si vous maintenez le bouton d'alimentation enfoncé pendant un intervalle de temps fixe. Il y a une certaine valeur codée en dur (généralement 10 secondes) dans l'unité de gestion de l'alimentation (PMIC). Aucun processus ne sera arrêté, aucun système de fichiers ne sera démonté, aucun message d'adieu ne sera transmis, seule l'alimentation du CPU, de la RAM et d'autres ressources matérielles pertinentes sera coupée. La plupart des SoC (qui ont un PMIC intégré) implémentent ceci comme un redémarrage, et non un arrêt.
Donc, pour résumer les lignes ci-dessus, il y a deux façons d'arrêter le dispositif : par le biais de init
ou en appelant directement le noyau. Les deux peuvent être réalisés par de simples commandes shell ou peuvent être mappés à une touche matérielle ou une combinaison de touches spéciales. Mais l'eau peut rendre toute touche matérielle inutile, donc cette méthode ne peut pas être une solution universelle.
BOUTON D'ALIMENTATION
Mais le fait est que votre appareil n'est pas complètement éteint, quel que soit le chemin que vous avez choisi. Pendant le processus de démarrage, il y a des choses qui sont mises sous tension avant le chargement du système d'exploitation (et qui peuvent être mises sous tension même s'il n'y a pas de système d'exploitation sur le périphérique). Il doit y avoir un circuit dans le PMIC (par exemple un microcontrôleur en mode basse consommation et peut-être aussi une pile logicielle) qui est toujours sous tension afin qu'il puisse écouter votre demande de mise sous tension de l'appareil lorsque vous appuyez sur le bouton d'alimentation pendant quelques secondes, ou même lorsque vous connectez un chargeur à un appareil éteint.
PROCESSEUR DE COMMUNICATION
De même, le processeur de bande de base (BP) - qui fait fonctionner le modem et est responsable de toutes les communications via les réseaux mobiles (appels, SMS et Internet) - est totalement isolé du processeur d'application (celui que nous appelons CPU) et n'est pas régi par le noyau Android ; il exécute un RTOS indépendant. Et comme ils disent Les agences gouvernementales peuvent l'utiliser pour vous suivre à la trace même si vous pensez que votre appareil est éteint. Cela signifie donc qu'il peut éventuellement être (partiellement ou totalement ou périodiquement) en cours d'exécution lorsque Android ne fonctionne pas.
Si rien d'autre, au moins les bornes de la batterie sont toujours sous tension, connectées à une partie de la carte mère qui peut être court-circuitée si elle est mouillée. Donc, si votre appareil n'est pas résistant à l'eau et que la batterie n'a pas de protection contre les courts-circuits intégrée, vous ne pouvez jamais être sûr que votre appareil ne sera pas endommagé si de l'eau est versée dessus.