Вопрос или проблема
Я хочу выполнять cmatrix
в моей TTY, когда я подключаю Raspberry Pi к монитору по умолчанию. Я нашел пример файла .service
здесь, и мне интересно, может ли он сработать в моем случае.
Снова, я просто хочу, чтобы cmatrix
запускался автоматически при загрузке до логина TTY, но когда я нажимаю q
, появляется вход в систему TTY, и на этом все.
Может ли ответ по ссылке выше сработать для меня, прежде чем я испорчу свою систему?
Да, у меня были те же требования с моим Raspberry 3B и 3,5″ монитором, который не переходит в режим ожидания.
Создайте файл
/root/loginMatrix.sh
и дайте права на выполнение
chmod ug+x /root/loginMatrix.sh
создайте файл
/etc/systemd/system/[email protected]/override.conf
со следующим содержимым
[Service]
ExecStart=
ExecStart=-/root/loginMatrix.sh
StandardInput=tty
StandardOutput=tty
затем активируйте это
systemctl daemon-reload; systemctl restart [email protected]
или перезагрузите.
Вы получите cmatrix в качестве заставки, просто нажмите клавишу, чтобы получить приглашение для входа. Нажмите CTRL+D для выхода из сессии, и вы снова увидите cmatrix.
Обновление для Bookworm:
Нет необходимости создавать какие-либо скрипты или добавлять новые «переопределения» сервиса.
Откройте следующее с вашим любимым редактором:
/etc/systemd/system/getty.target.wants/[email protected]
Вы можете просто закомментировать…
# ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear - $TERM
и заменить на…
ExecStart=-/usr/bin/cmatrix
Затем необходимо перезагрузить демон службы, как упоминал Mechano…
systemctl daemon-reload; systemctl restart [email protected]
Ответ или решение
Вопрос о том, можно ли запустить программу перед появлением TTY (телетайп) входа на экране, является актуальной темой для владельцев Raspberry Pi и других устройств, работающих под управлением Linux. Особенно это важно в тех случаях, когда вам нужно автоматизировать выполнение некоторых задач сразу после загрузки системы, ещё до того, как пользователь получит возможность ввода своих учетных данных.
Теория
При загрузке операционной системы Linux первым делом запускается ряд демонов и служб, которые делают систему готовой для пользователя. Обычно перед тем, как пользователь видит приглашение на вход и может ввести свои учетные данные, операционная система уже завершила загрузку этих служб. Одной из таких служб является getty
, которая ответственна за отображение TTY-приглашения, когда пользователь подключает монитор к устройству, например, к Raspberry Pi.
Цель состоит в том, чтобы запустить программу cmatrix
до того, как появится стандартный TTY-вход. cmatrix
— это программа, которая выводит на экран анимированные буквы, напоминающие "Матрицу". Это может быть не только декоративной функцией, но и удобным способом проверки состояния загрузки системы, пока пользователь не ввел свои учетные данные.
Пример
Рассмотрим приведенный метод для автоматического запуска cmatrix
при загрузке. Первый способ предполагает создание скрипта и использования системы systemd
для его запуска. Шаги включают следующие действия:
-
Создание скрипта
/root/loginMatrix.sh
и предоставление ему прав на выполнение:chmod ug+x /root/loginMatrix.sh
-
Далее создается файл конфигурации
override.conf
для замены стандартного запускаgetty
на запуск вашего скрипта:[Service] ExecStart= ExecStart=-/root/loginMatrix.sh StandardInput=tty StandardOutput=tty
-
Перезапуск демонов systemd для применения изменений:
systemctl daemon-reload systemctl restart [email protected]
Такая настройка позволяет запускать cmatrix
автоматически, а нажатие клавиши q
закроет программу и откроет стандартное TTY-приглашение.
Альтернативный подход описан для более новой версии системы (например, Debian Bookworm). Он подразумевает редактирование файла юнита getty
напрямую:
# ExecStart=-/sbin/agetty -o '-p -- \u' --noclear - $TERM
ExecStart=-/usr/bin/cmatrix
Это убирает необходимость в написании дополнительного скрипта и делает конфигурацию более прямолинейной.
Применение
Преимущества такого подхода очевидны: вы получаете автоматический запуск заданной программы сразу после загрузки, без нужды входа в систему. Это полезно в сценариях, где устройство выполняет специфические задачи, такие как инфокиоски, терминальные устройства или даже для создания впечатляющей демонстрации работы системы.
И все-таки, при внесении таких изменений необходимо быть предельно аккуратным. Изменение конфигурации ключевых системных служб может сделать вашу систему недоступной, если что-то пойдет не так. Поэтому всегда рекомендуется иметь резервный доступ (например, через SSH) и подготовленный план действий на случай непредвиденных ситуаций.
Подводя итоги, запуск программы до появления TTY-входа возможен и для этого предоставляются конкретные методики изменения конфигурации systemd. Однако, всегда важно проверять корректность внесенных изменений и понимать последствия для системы.