poweroff
жалуется, что не может подключиться к systemd через DBus (конечно, он не жив). sync
Затем я решил kill $$
, что умирание pid 1 вызовет выключение ядра, но это вызвало панику ядра. Затем я удерживал кнопку питания, чтобы выключить питание.
Какой самый правильный способ отключения питания в этом сценарии?
init=/bin/bash
подсказку / подтекст, двусмысленно, установлен systemd или нет. Я имел в виду, что systemd не работает . В любом случае, не запустив systemd, я думал, что набор инструментов systemd будет бесполезен, и что в ответах будут использоваться другие средства, такие как в sysrq.Ответы:
Размонтируйте файловые системы, которые вы смонтировали. Корневая файловая система - это особый случай; для этого вы можете использовать
mount / -o remount,ro
. В Linuxumount /
тоже бывает работать, потому что он эффективно преобразуется в предыдущую команду.Тем не менее, вам не нужно беспокоиться о размонтировании слишком много, если
sync
должно быть, достаточно, и файловая система будет восстанавливаться очень быстро при следующей загрузке.Выше это важная часть. После этого вы также можете удобно отключить аппаратное обеспечение с помощью
poweroff -f
. Или перезагрузите сreboot -f
.Существует
systemd
-специфический эквивалентpoweroff -f
:systemctl poweroff -f -f
. Однакоpoweroff -f
делает то же самое иsystemd
поддерживает эту команду, даже если она была собрана без совместимости с SysV.Технически я помню, что мой жесткий диск USB был задокументирован как требующий «безопасного удаления» Windows или аналогичного. Но это требование небезопасно, и в любом случае Linux не делает этого во время обычного выключения. Это лучше интерпретировать как означающее, что вы не должны бегать по жесткому диску во время его вращения, в том числе пытаясь отключить его от сети. Полное отключение должно остановить вращение привода. Вы можете услышать, почувствовать или посмотреть, не остановится ли это :-).
источник
sync()
достаточно для ext2. Он будет жаловаться на то, что он грязный, но на самом деле не будет поврежден, за исключением сводной информации. Обычно я считаю init = / bin / bash или любой другой локальный эквивалент аварийной ситуацией.fsck.mode=skip
праве?fsck.mode=skip
для нормальной загрузки после нечистого размонтирования!Я просто выполню ниже две команды:
Предполагая, что магический ключ включен в ядре
источник
Хорошо, так что мне пришло в голову, что у меня была возможность
exec init
. Оттуда я, вероятно, смогу позжеpoweroff
. Интересно, есть ли лучшие альтернативы, хотя?источник
exec init 0
. Это не будет работать со всеми системами инициализации, но те же самые будут проходить последовательность выключения.По сути, вы хотите вызвать системный вызов reboot (2) .
Это можно сделать двумя способами:
Запустите
reboot -f
илиpoweroff -f
, это должно позвонитьreboot(2)
напрямую.Если вы используете настоящий виртуальный терминал Linux (не эмулятор терминала с графическим интерфейсом пользователя), нажмите Ctrl+ Alt+ Delete.
Обратите внимание, что сочетание клавиш может быть отключено какой-либо программой пользовательского пространства (обычно init), когда эта опция отключена, она отправит сигнал init.
Все вышеперечисленные команды должны быть выполнены после размонтирования всех дисков или перемонтирования в режиме «только чтение» и выполнения синхронизации, в противном случае вы можете потерять неписанные данные. Если ваша оболочка - единственный запущенный процесс, синхронизации может быть достаточно.
источник
Вы можете использовать ключи Magic SysRq ( https://en.wikipedia.org/wiki/Magic_SysRq_key ), чтобы выключить компьютер.
Чтобы правильно завершить работу, вы можете использовать следующее (цитата из Википедии):
Но заменив последний B на O (для azerty / qwerty) на «power O ff»
источник