Вопрос или проблема
Я использую Raspberry Pi 5 с Debian Bookworm. Я создал bash-скрипт и запускаю его на экране загрузки.
В скрипте есть задержка в 100 секунд, но это не влияет на экран загрузки. Операционная система запускается так, как будто в скрипте нет задержки, но мой скрипт начал выполняться.
Моя цель – приостановить систему во время загрузки…
Вот мой bash-скрипт…
#!/bin/bash
LOGFILE="/home/cnc/Desktop/brt.txt"
echo "A $(date)" >> "$LOGFILE"
sleep 100
echo "B $(date)" >> "$LOGFILE"
Вот мой файл службы для запуска скрипта на экране загрузки
[Unit]
Description=My Sleep Script
After=systend-user-sessions.service
[Service]
Type=simple
ExecStart=/home/cnc/Desktop/sleepScript.sh
После того как экран загрузки прошел, я проверил свой лог-файл и увидел только первую строку:
A Mon Oct 14 16:32:59 +03 2024
Но через некоторое время (и это 100 секунд после запуска программы) я снова проверил свой лог-файл и увидел там вторую строку…
A Mon Oct 14 16:32:59 +03 2024
B Mon Oct 14 16:34:39 +03 2024
Моя цель, как я уже писал, – приостановить систему на определенный период времени во время загрузки. В моем втором сценарии полностью предотвратить загрузку системы….
Ответ или решение
Как задержать/приостановить/поставить на паузу на экране загрузки Raspberry Pi 5 с Debian Bookworm
Введение
Если вы пытаетесь задержать загрузку системы на Raspberry Pi 5 с Debian Bookworm во время экранной загрузки, вам необходимо учитывать, что при старте системы выполняются определённые сервисы и процессы, которые могут не предоставлять возможности остановить загрузку. В данной статье мы рассмотрим, как правильно настроить систему для достижения желаемого эффекта.
Проблема
Как вы уже заметили, скрипт, содержащий команду sleep
, не приостанавливает сам процесс загрузки операционной системы. Это связано с тем, что ваш скрипт запускается в рамках другого выполнения (например, в фоновом режиме), и сам по себе не влияет на процесс загрузки.
Решение
Если вам нужно заставить систему зависнуть на экране загрузки, вам необходимо использовать специальные механизмы, такие как задержка в процессе инициализации в системных службах.
1. Изменение конфигурации службы
Вместо использования кастомного bash-скрипта, давайте изменим вашу конфигурацию службы, чтобы задержка происходила до завершения процесса загрузки. Вам нужно изменить ваш файл службы:
[Unit]
Description=My Sleep Script
DefaultDependencies=no
Before=graphical.target
Conflicts=shutdown.target
[Service]
Type=simple
ExecStart=/bin/sleep 100
TimeoutStartSec=100
DefaultDependencies=no
отключает стандартные зависимости, что позволяет Вашему сервису запускаться раньше.Before=graphical.target
указывает, что ваша служба должна выполниться прежде, чем загрузится графическая среда.ExecStart=/bin/sleep 100
— это команда для заставления сервиса спать 100 секунд.
Сохраните изменения и активируйте новую службу:
sudo systemctl daemon-reload
sudo systemctl enable my_sleep_script.service
Теперь ваша служба будет приостанавливать процесс загрузки на 100 секунд.
2. Полная пауза
Чтобы полностью предотвратить загрузку системы, можно добавить в ваш скрипт условие, которое будет останавливать систему. Например, используйте systemctl
для отключения всех целевых служб:
#!/bin/bash
LOGFILE="/home/cnc/Desktop/brt.txt"
echo "A $(date)" >> "$LOGFILE"
sleep 100
echo "Delaying boot..." >> "$LOGFILE"
systemctl halt
В данной конфигурации после задержки система будет остановлена. Это полезно для диагностики или проведения тестов, но может потребовать дальнейших настроек в зависимости от потребностей вашего проекта.
3. Добавление параметров загрузки
Как альтернативный метод, вы можете изменить параметры загрузки, добавив временную задержку в Grub:
-
Отредактируйте файл конфигурации Grub:
sudo nano /etc/default/grub
-
Найдите строку
GRUB_CMDLINE_LINUX_DEFAULT
и добавьтеquiet splash
или аналогичные параметры, указывающие на ожидание.
Пример:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash timer=100"
- После изменения, обновите настройки Grub:
sudo update-grub
Заключение
Эти решения помогут вам управлять процессом загрузки на Raspberry Pi 5 с Debian Bookworm. В зависимости от ваших потребностей, вы можете выбрать подходящий метод для приостановки или полной остановки загрузки системы. Если вы планируете использовать эти задержки в производственной среде, убедитесь, что это не приведёт к снижению работоспособности или доступности системы.