Я включаю последовательную консоль во время процесса загрузки на centos7, который использует grub2 и systemd (вместо inittab)
Я хотел бы отменить этот последовательный ввод / вывод в самом конце загрузки, после полностью успешного запуска, по соображениям безопасности.
Как я могу этого добиться?
Обновить:
Пройдя через службы systemd, я обнаружил, что консоль распознается / включается через нее, хотя grub2 запустил ее, так что, я думаю, это отключает ее.
systemctl stop serial-getty@ttyS2.service
Как сделать так, чтобы это происходило автоматически после полностью успешного старта, когда все остальные сервисы подключились к сети? Я мог бы использовать rc.local
но это унаследовано от init.d и не учитывает, что другие службы подключились должным образом.
Это выглядит ужасно хакерским, но работает. Он остановит последовательный терминал после загрузки машины.
/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
Престижность этот ответ.