poweroff
narzeka, że nie może połączyć się z systemd przez DBus (oczywiście nie żyje). I nie sync
następuje kill $$
, myśląc, że będzie umierał PID 1 cue jądra do poweroff, ale to wywołało panikę jądra. Następnie przytrzymałem przycisk zasilania, aby wymusić wyłączenie zasilania.
Jaki jest najbardziej odpowiedni sposób na wyłączenie zasilania w tym scenariuszu?
init=/bin/bash
wskazówkę / implikację, nie jest jednoznaczne, czy systemd jest zainstalowany, czy nie. Miałem na myśli, że nie ma uruchomionego systemu . W każdym razie, nie mając uruchomionego systemd, pomyślałem, że zestaw narzędzi systemd byłby bezużyteczny i że odpowiedzi wykorzystałyby inne środki, takie jak te dotyczące sysrq.Odpowiedzi:
Odmontuj zamontowane systemy plików. Główny system plików to szczególny przypadek; do tego możesz użyć
mount / -o remount,ro
. W Linuksieumount /
również działa, ponieważ jest skutecznie konwertowany na poprzednie polecenie.To powiedziawszy, nie musisz się martwić zbytnim odmontowaniem, chyba że
sync
ma to wystarczyć, a system plików naprawi się bardzo szybko przy następnym uruchomieniu.Powyższe jest ważną częścią. Następnie możesz wygodnie wyłączyć sprzęt za pomocą
poweroff -f
. Lub uruchom ponownie za pomocąreboot -f
.Jest
systemd
-specyficznych odpowiednikpoweroff -f
:systemctl poweroff -f -f
. Jednakpoweroff -f
robi to samo isystemd
obsługuje to polecenie, nawet jeśli zostało zbudowane bez kompatybilności z SysV.Technicznie pamiętam, że mój dysk twardy USB został udokumentowany jako wymagający „bezpiecznego usunięcia” systemu Windows lub równoważnego. Ale to wymaganie nie jest bezpieczne dla PowerFail, a Linux i tak nie robi tego podczas normalnego zamykania. Lepiej jest to interpretowane jako oznaczające, że nie należy biegać po dysku twardym, gdy się obraca - w tym próbując go odłączyć. Całkowite wyłączenie zasilania powinno zatrzymać wirowanie napędu. Prawdopodobnie możesz usłyszeć, poczuć lub zobaczyć, czy to się nie skończy :-).
źródło
sync()
wystarcza na ext2. Będzie narzekać na brudność, ale tak naprawdę nie zostanie uszkodzony, z wyjątkiem informacji podsumowujących. Generalnie uważam, że init = / bin / bash lub jakikolwiek lokalny ekwiwalent to sytuacja wyjątkowa.fsck.mode=skip
?fsck.mode=skip
do uruchamiania normalnie po nieczystym odmontowaniu!Po prostu wykonam poniżej dwóch poleceń:
Zakładając, że magiczny klucz jest włączony w jądrze
źródło
Ok, więc przyszło mi do głowy, że mam taką opcję
exec init
. Stamtąd prawdopodobnie byłbym w stanie późniejpoweroff
. Zastanawiam się jednak, czy są lepsze alternatywy.źródło
exec init 0
. To nie zadziała ze wszystkimi systemami init, ale te same przejdą sekwencję zamykania.W efekcie tou chce wywołać syscall reboot (2) .
Możesz to zrobić na dwa sposoby:
Uruchom
reboot -f
lubpoweroff -f
, to powinno zadzwonićreboot(2)
bezpośrednio.Jeśli korzystasz z wirtualnego terminala Linux (nie emulatora terminala GUI), naciśnij Ctrl+ Alt+ Delete.
Zauważ, że skrót klawiaturowy może zostać wyłączony przez jakiś program użytkownika (zwykle init), kiedy wyłączony skrót wyśle sygnał do init zamiast tego.
Wszystkie powyższe polecenia należy wykonać po zamontowaniu wszystkich dysków lub ponownym zamontowaniu jako tylko do odczytu i uruchomieniu synchronizacji, w przeciwnym razie możesz utracić niepisane dane. Jeśli twoja powłoka jest jedynym uruchomionym procesem, synchronizacja może wystarczyć.
źródło
Możesz użyć klawiszy Magic SysRq ( https://en.wikipedia.org/wiki/Magic_SysRq_key ), aby wyłączyć komputer.
Aby poprawnie zamknąć, możesz użyć następujących (cytat z Wikipedii):
Ale podstawienie ostatniego B przez O (dla azerty / qwerty) zamiast „power O ff”
źródło