относительно «как при выключении»:
это только почти как при выключении :все процессы в том числе и pid 1
затираются, естественно, так как даже ядро затирается и перезагружается. Но некоторые прошивки (переменные EFI )могут зависать, потому что kexec не является полной перезагрузкой.
Если вы не (компилируете и )тестируете одно ядро за другим, использование kexec ограничено. Это "экспериментальный".
Но попробовать неплохо :это «между» перезагрузкой и изменением уровня запуска (что бы это ни значило во времена systemd или, фактически, всегда, в linux ). После нескольких успешных попыток он разбился, так что я оставил его. (Но ничего не произошло.)
Я только что прочитал последний комментарий:
The idea was to at least unmount existing file systems etc.
Но это та же проблема, что и с ctrl -alt -del, особенно без systemd. Извините за скептицизм, но процесс выключения с помощью sysvinit действительно немного сложен уже (с systemd также ).Несколько парадоксальным мне кажется "управляемое отключение" вместе с kexec (или ctrl -alt -del ).
Я всегда делаю "и т.д." прежде чем я «выдерну вилку» из моей системы :закройте/сохраните файлы, закройте firefox, проверьте монтирование tmpfs, размонтируйте разделы... и затем :reboot
, poweroff
, halt
, shutdown
, init 6,
init 0
, ctrl -alt -del или даже кнопку ON/OFF в течение пяти секунд... Я не хочу, чтобы kexec был еще одним источником потенциальных проблем.
добавлено через несколько дней:
На самом деле systemd интегрирует kexec(man systemctl
). Я сожалею, что назвал эту идею «немного парадоксальной», но поддерживаю мою точку зрения :, почему бы не выбрать (или вручную не ввести )эту командную строку ядра несколькими секундами позже в командной строке загрузчика после обычной перезагрузки?
Вы почти у цели. Правила на сервере Ubuntu должны выглядеть так:
# Flush away previous broken rules
sudo iptables -F
# Allow SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allow HTTP on TCP 8888
sudo iptables -A INPUT -p tcp -s 192.168.36.202 --dport 8888 -j ACCEPT
# Allow return traffic
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# And finally deny everything (inbound)
sudo iptables -A INPUT -j DROP