Bezpiecznie wyłączasz Pi bez SSH lub monitora?

25

Moje Pi obecnie nie reaguje na SSH, a jedynym monitorem HDMI, jaki mam, jest duży telewizor oddalony o kilka metrów. Słyszałem złe rzeczy o odłączeniu go, ale czy mam inną opcję?

Obecnie działam bezgłowy raspbian, może mógłbym podłączyć klawiaturę i zgadywać polecenia?

vpzomtrrfrt
źródło
3
Na razie nie będzie działać, ale możesz dodać przycisk do pinów GPIO, aby w przyszłości poprawnie go wyłączyć
Rizzle Light
Jako punkt danych: od kilku lat używam RPis do różnych zadań w robotach mobilnych zasilanych bateryjnie. Ci zostają odcięci od prądu często i bez ostrzeżenia. Nie spotkałem się jeszcze z żadnym problemem z żadną kartą Pis / SD (no cóż, poza połączeniem SD rozluźniającym się na skutek ciągłych wibracji i uderzania w ścianę).
Mike Ounsworth
Nie możesz tymczasowo przesunąć monitora HDMI o kilka metrów, a następnie odłożyć go, gdy skończysz?
jpmc26,
@ jpmc26 to po schodach i to całkiem duży telewizor.
vpzomtrrfrt

Odpowiedzi:

25

Chociaż powinno to być traktowane jako ostateczność, ponieważ zwiększa ryzyko uszkodzenia systemu plików, odłączenie przewodu zwykle jest w porządku, jeśli zielone światło ACT nie miga intensywnie .

Domyślnie dioda ACT pokazuje aktywność we / wy na karcie SD. Jeśli jest wyłączony, najprawdopodobniej system jest bezczynny. To niekoniecznie prawda, ale zabicie systemu, który jest zajęty intensywną pracą procesora (a nie We / Wy), nie jest z natury problemem. System operacyjny buforuje informacje o systemie plików w pamięci, co oznacza, że ​​może on nie być zsynchronizowany z faktycznym miejscem na karcie SD, ale powinno to być rozwiązywane co najmniej co kilka sekund (czasami możesz być w stanie wywnioskować ten wzorzec z ACT doprowadziło).

Jeśli więc wydaje się bezczynny po obejrzeniu go przez 5–10 sekund i nie masz innego wyboru, idź dalej i odłącz zasilanie. Ponownie, to nie gwarantuje niczego i istnieją niefortunne scenariusze, w których system może zostać zablokowany, a synchronizacja systemu plików nie nastąpi poprawnie, ale w większości przypadków powinieneś być w porządku.

Prawdopodobnie musiałem pociągnąć za sznur na pi (lub miałem awarię zasilania) ponad sto razy w ten sposób i nie mogę sobie przypomnieć, że kiedykolwiek miałem z tego powodu żalu. Czasami włożę kartę na inną maszynę i uruchomię e2fsck -fna głównym systemie plików, co jest warte zachodu. System operacyjny sprawdzi system plików automatycznie podczas rozruchu, ale może się nie powieść (lub nie zostanie wykonany poprawnie) i pozostanie niezauważony.

Złotowłosa
źródło
8
Okres bezczynności od 5 do 10 sekund wynika z tego, że domyślnym ustawieniem Linuksa /proc/sys/vm/dirty_writeback_centisecsjest 500 centisekund (5 sekund). Więc jeśli Linux ma niepisane dane w buforach I / O, zacznie przepłukiwać je na dysk po 5 sekundach, chyba że je zmieniłeś. Teoretycznie kronikowanie FS powinno być bezpieczne przed uszkodzeniem całego systemu plików, nawet jeśli wyłączysz się podczas zapisu, ale czekanie na bezczynność daje znacznie większą szansę na to, aby nie uszkodzić ostatnio zmodyfikowanych plików. (Które kronikowanie chroni tylko przy użyciu danych ext3 / ext4 = kronika, co nie jest ustawieniem domyślnym)
Peter Cordes,
31

Magiczny klucz SysRq

To powinno zacząć.

Magiczny klucz SysRq to kombinacja klawiszy rozumiana przez jądro Linuksa, która pozwala użytkownikowi wykonywać różne polecenia niskiego poziomu, niezależnie od stanu systemu. Jest często używany do odzyskiwania po zawieszeniu się lub do ponownego uruchomienia komputera bez uszkodzenia systemu plików . Jego działanie jest podobne do przycisku resetowania sprzętu (lub przełącznika zasilania) komputera, ale z wieloma dodatkowymi opcjami i większą kontrolą.

Możesz podłączyć klawiaturę i wpisać te rzeczy na ślepo (bez monitora).

Bez uszkodzenia systemu plików, nie wymaga dodatkowego sprzętu.


Przycisk GPIO

Jak sugeruje Rizzle Light, możesz złapać jakiś przycisk i podłączyć go do styków GPIO, i wykonać trochę magii programistycznej, aby naciśnięcie przycisku wykonało polecenie „poweroff” (oczywiście z uprawnieniami administratora).

Istnieje wiele samouczków programowania GPIO online, które można dostosować, takich jak ten .

Rahul R Dhobi ma ładny dwuliniowy skrypt Pythona , który zamyka Raspberry Pi:

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

wykonaj swój skrypt z uprawnieniami roota.

Hydraxan14
źródło
3
Dokumentacja magicznego systemu SysRQ jądra Linuksa jest jedyną dokumentacją, jaką kiedykolwiek wydrukowałem na papierze :). (I to było wtedy, gdy miałem tylko jeden komputer.)
Peter Cordes,
3

Nie musisz zgadywać; po prostu podłącz klawiaturę, wpisz ją i naciśnij enter:

sudo shutdown -h now

shutdownKomenda potrzebuje uprawnienia roota do wykonania.

Lekkość Wyścigi z Moniką
źródło
4
Musisz się najpierw zalogować (w ciemno) i albo użyć konta uprzywilejowanego, albo (zakładając, że superprawny użytkownik Raspbian pi...) dokończyć sudo.
złotowłosy
2
@goldilocks: prawdopodobnie chcesz umieścić sudona początku polecenia, zamiast dołączania go :-)
psmears
@gililocks: Racja, nadal logowanie nie wydaje się aż takim obowiązkiem.
Wyścigi lekkości z Moniką
1
Nie komentowałem poziomu trudnego;) @psmears Ups, zostawiłem cię! Poprawione
Złotowłosa
@gililocks: Wystarczająco :)
Lekkość
1

Port szeregowy jest dobrym rozwiązaniem w takich sytuacjach i jest domyślnie włączony.

Możesz spróbować połączyć się z portem szeregowym za pomocą Putty. Jeśli to zadziała, zaloguj się przy użyciu swojej nazwy użytkownika i wydaj „sudo poweroff”, aby bezpiecznie się zamknąć.

Zobacz http://elinux.org/RPi_Serial_Connection aby uzyskać więcej informacji ...

Kwarc
źródło
0

Testowałem serwer plików w części domu bez łatwego dostępu do monitora, gdy napotkałem ten sam problem. Poniższe działało dla mnie, zakładając, że twoja pi uruchamia się w domyślnym środowisku GUI:

  1. Podłącz klawiaturę (jeśli jeszcze tego nie zrobiono).
  2. Naciśnij, Alt-F2aby otworzyć okno dialogowe Uruchom.
  3. Wpisz następujące polecenie i naciśnij klawisz Enter, aby uruchomić okno terminala:

    lxterminal
    
  4. Poczekaj kilka sekund, aby być bezpiecznym, a następnie wpisz następujące polecenie:

    sudo shutdoown now -h
    
  5. Wciśnij Enter.

To powinno wyłączyć Pi. Jeśli to zadziała, klawiatura się zaświeci i wszelkie podłączone urządzenia USB zostaną wyłączone. Jeśli nie, możesz powtórzyć powyższe kroki w przypadku popełnienia błędu podczas wpisywania poleceń.

Nealios
źródło
-1

Przycisk okna - dziewięć razy klawisz w dół - 2 razy wejdź ... Ciesz się ...

Prakhar Pandey
źródło
1
Dzięki za odpowiedź - wszystkie uwagi są mile widziane. Poproszono mnie o zasugerowanie kilku zmian, które pomogą Ci poprawić odpowiedź: po pierwsze, zakładam, że przez „przycisk okna” masz na myśli przycisk z logo Microsoft na klawiaturach Windows. Jeśli tak, powinieneś to wyraźnie zaznaczyć. W odpowiedzi sugerowana jest również sekwencja klawiszy, ale nie jest ona wystarczająco szczegółowa. Krótko mówiąc, proszę ponownie napisać odpowiedź, aby jednoznacznie wyjaśnić, jaka jest twoja odpowiedź, zamiast opierać się na założeniach.
Seamus
Zauważ też, że pytający używa bezgłowego raspbian. Oznacza to, że środowisko pulpitu nie jest zainstalowane, więc ta sekwencja klawiszy prawdopodobnie nie pomoże.
Hydraxan14