Arrêter le Pi en toute sécurité sans SSH ou moniteur?

25

Mon Pi ne répond pas actuellement à SSH, et le seul moniteur HDMI que j'ai est un grand téléviseur à plusieurs mètres. J'ai entendu de mauvaises choses à propos de le débrancher, mais ai-je une autre option?

Actuellement en cours d'exécution raspbian sans tête, peut-être que je pourrais connecter un clavier et deviner les commandes?

vpzomtrrfrt
la source
3
Cela ne fonctionnera pas pour l'instant, mais vous pouvez ajouter un bouton à vos broches GPIO pour le fermer correctement à l'avenir
Rizzle Light
En tant que point de données: depuis plusieurs années, j'utilise RPis pour diverses tâches sur des robots mobiles alimentés par batterie. Ceux-ci obtiennent leur coupure de courant souvent et sans avertissement. Je n'ai pas encore rencontré de problème avec l'une des cartes Pis / SD (enfin, à part la connexion SD qui se détache à cause des vibrations constantes et des bris de murs).
Mike Ounsworth
Vous ne pouvez pas déplacer temporairement le moniteur HDMI sur quelques mètres, puis le remettre en place lorsque vous avez terminé?
jpmc26
@ jpmc26 c'est en bas d'un escalier et c'est une très grosse télé.
vpzomtrrfrt

Réponses:

25

Bien qu'il doive être considéré comme un dernier recours car il augmente le risque de corruption du système de fichiers, le débranchement du cordon est généralement correct si le voyant ACT vert ne clignote pas intensément .

Par défaut, la LED ACT indique l'activité d'E / S sur la carte SD. S'il est éteint, le système est probablement inactif. Ce n'est pas nécessairement vrai, mais tuer un système qui est occupé par une activité gourmande en CPU (et non par E / S) n'est pas intrinsèquement un problème de toute façon. Le système d'exploitation met en cache les informations du système de fichiers en mémoire, ce qui signifie qu'il peut être désynchronisé avec le stockage réel sur la carte SD, mais cela doit être traité au moins toutes les quelques secondes (vous pourriez parfois être en mesure de déduire ce modèle à partir de l'ACT LED).

Donc, s'il semble inactif après l'avoir regardé pendant 5 à 10 secondes et que vous n'avez pas d'autre choix, allez-y et débranchez l'alimentation. Encore une fois, cela ne garantit rien et il existe des scénarios malheureux où le système peut être verrouillé et la synchronisation du système de fichiers ne se produit pas correctement, mais dans la plupart des cas, vous devriez être d'accord.

J'ai probablement dû tirer le cordon sur un pi (ou j'ai eu une panne de courant) plus d'une centaine de fois de cette façon et je ne me souviens pas avoir eu de chagrin à cause de cela. Parfois, je vais mettre la carte sur une autre machine et l'exécuter e2fsck -fsur le système de fichiers racine, ce qui en vaut la peine. Le système d'exploitation vérifiera automatiquement le système de fichiers au démarrage, mais il est possible que cette vérification échoue (ou ne soit pas effectuée correctement) et passe inaperçue.

Boucles d'or
la source
8
La période d'inactivité de 5 à 10 secondes est due au fait que le paramètre par défaut de Linux /proc/sys/vm/dirty_writeback_centisecsest de 500 centisecondes (5 secondes). Donc, si Linux contient des données non écrites dans des tampons d'E / S, il commencera à les vider sur le disque après 5 secondes, sauf si vous les avez modifiées. En théorie, un journaling FS devrait être sûr contre la corruption de l'ensemble du système de fichiers même si vous le mettez hors tension pendant une écriture, mais attendre qu'il soit inactif vous donne une bien meilleure chance de ne pas endommager les fichiers récemment modifiés. (Quelle journalisation protège uniquement avec ext3 / ext4 data = journal, ce qui n'est pas la valeur par défaut)
Peter Cordes
31

Magic SysRq Key

Cela devrait vous aider à démarrer.

La clé magique SysRq est une combinaison de touches comprise par le noyau Linux, qui permet à l'utilisateur d'exécuter diverses commandes de bas niveau quel que soit l'état du système. Il est souvent utilisé pour récupérer après un gel ou pour redémarrer un ordinateur sans corrompre le système de fichiers . Son effet est similaire au bouton de réinitialisation matérielle (ou interrupteur d'alimentation) de l'ordinateur, mais avec beaucoup plus d'options et beaucoup plus de contrôle.

Vous pouvez brancher un clavier et taper ce truc en aveugle (sans moniteur.)

Aucune corruption du système de fichiers, aucun matériel supplémentaire requis.


Bouton GPIO

Comme l'a suggéré Rizzle Light, vous pouvez saisir une sorte de bouton et le connecter aux broches GPIO, et faire un peu de magie de programmation pour faire en appuyant sur le bouton exécuter la commande "poweroff" (avec des privilèges d'administrateur, bien sûr.)

Il existe des tonnes de tutoriels de programmation GPIO en ligne que vous pouvez adapter, comme celui-ci .

Rahul R Dhobi a un joli script python à deux lignes qui arrêtera un Raspberry Pi:

import os
os.system("shutdown now -h")

exécutez votre script avec les privilèges root.

Hydraxan14
la source
3
La documentation magic-SysRQ du noyau Linux est le seul document que j'ai jamais imprimé sur du papier :). (Et c'était de retour quand je n'avais qu'un seul ordinateur.)
Peter Cordes
3

Pas besoin de deviner; branchez simplement le clavier et tapez ceci et appuyez sur enter:

sudo shutdown -h now

La shutdowncommande a besoin d'un privilège root pour s'exécuter.

Courses de légèreté avec Monica
la source
4
Vous devez d'abord vous connecter (à l'aveugle) et utiliser un compte privilégié ou (en supposant que l' piutilisateur super puissant de Raspbian ...) préfixe sudo.
goldilocks
2
@goldilocks: Vous voudrez probablement mettre sudoau début de la commande, plutôt que de l' ajouter :-)
psmears
@goldilocks: D'accord, la connexion ne semble pas être une corvée.
Courses de légèreté avec Monica
1
Je ne commentais pas le niveau de difficulté;) @psmears Oups, vous êtes parti! Corrigée.
goldilocks
@goldilocks: Assez juste :)
Courses de légèreté avec Monica
1

Le port série est une bonne solution de rechange pour de telles situations, et il est activé par défaut.

Vous pouvez essayer de vous connecter au port série à l'aide de Putty. Si cela fonctionne, connectez-vous à l'aide de votre nom d'utilisateur et lancez "sudo poweroff" pour arrêter en toute sécurité.

Voir http://elinux.org/RPi_Serial_Connection pour plus d'informations ...

Quartz
la source
0

Je testais un serveur de fichiers dans une partie de la maison sans accès facile à un moniteur lorsque j'ai rencontré le même problème. Ce qui suit a fonctionné pour moi, en supposant que votre pi démarre sur l'environnement GUI par défaut:

  1. Branchez un clavier (si ce n'est pas déjà fait).
  2. Appuyez sur Alt-F2pour ouvrir une boîte de dialogue Exécuter.
  3. Tapez ce qui suit et appuyez sur Entrée pour démarrer une fenêtre de terminal:

    lxterminal
    
  4. Attendez quelques secondes pour être en sécurité, puis tapez ce qui suit:

    sudo shutdoown now -h
    
  5. Appuyez sur Entrée.

Cela devrait arrêter le Pi. Si cela fonctionne, les voyants du clavier et tous les périphériques USB connectés s'éteignent. Sinon, vous pouvez répéter les étapes ci-dessus au cas où vous auriez fait une erreur en tapant les commandes.

Nealios
la source
-1

Bouton de la fenêtre - touche de descente de neuf fois - entrée 2 fois ... Profitez ...

Prakhar Pandey
la source
1
Merci pour la réponse - toutes les contributions sont appréciées. On m'a demandé de suggérer quelques changements pour vous aider à améliorer votre réponse: Tout d'abord, je suppose que par "bouton Fenêtre", vous voulez dire le bouton avec le logo Microsoft sur les claviers Windows. Si tel est le cas, vous devez l'indiquer explicitement. De plus, une séquence de touches est implicite dans votre réponse, mais pas suffisamment précise. En bref, veuillez réécrire votre réponse pour clarifier clairement votre réponse, plutôt que de vous fier à des hypothèses.
Seamus
Notez également que le demandeur utilise un raspbian sans tête . Cela signifie que l'environnement de bureau n'est pas installé, donc cette séquence de touches n'aidera probablement pas.
Hydraxan14