Как отключить последовательную консоль после успешной загрузки (systemd/grub2)
Я включаю последовательную консоль во время процесса загрузки на centos7, который использует grub2 и systemd (вместо inittab)
Я хотел бы отменить этот последовательный ввод / вывод в самом конце загрузки, после полностью успешного запуска, из соображений безопасности.
Как я могу сделать это?
Обновить:
Пройдя через сервисы systemd, я обнаружил, что консоль распознается / включается через нее, даже если grub2 ее запустил, так что, думаю, это отключает ее.
systemctl stop serial-getty@ttyS2.service
Как я могу сделать это автоматически после полностью успешного запуска, когда все другие сервисы подключены к сети. Я мог бы использовать rc.local
но это наследие init.d и не учитывает, что другие сервисы подключены правильно.
2 ответа
Это кажется ужасно хакерским, но это делает работу. Он остановит последовательный терминал после загрузки машины.
/etc/systemd/system/killconsole.service:
[Unit]
Description=kill console after boot
After=default.target
[Service]
Type=simple
ExecStart=/bin/systemctl stop serial-getty@ttyS2.service
[Install]
WantedBy=default.target
Тогда просто беги systemctl enable /etc/systemd/system/killconsole.service
чтобы включить устройство.
Вы также можете запустить вышеупомянутое, используя отдельный таймер, который не срабатывает до X минут после загрузки. Если вы попробуете, обязательно вырвите Install
раздел из службы и запустить systemctl disable
на это, чтобы удалить его из default.target
Список желаний.
Обратите внимание, что определение "успешной загрузки" может отличаться. Например, если сеть ящика подключена, все службы могут нормально запускаться, но вам все равно может потребоваться последовательный доступ. Поэтому я настоятельно рекомендую создать небольшой скрипт, чтобы убедиться, что система жива и исправна (и в сети), и поместить его в ExecStartPre
вариант. Если сценарий Pre возвращает ошибочный код завершения, служба не будет запущена и последовательная консоль не будет отключена.
Это может быть достигнуто моей маскировки этой службы:
systemctl mask serial-getty@ttyS2.service
Престижность к этому ответу.