Как задержать/приостановить/поставить на паузу на экране загрузки?

Вопрос или проблема

Я использую 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:

  1. Отредактируйте файл конфигурации Grub:

    sudo nano /etc/default/grub
  2. Найдите строку GRUB_CMDLINE_LINUX_DEFAULT и добавьте quiet splash или аналогичные параметры, указывающие на ожидание.

Пример:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash timer=100"
  1. После изменения, обновите настройки Grub:
    sudo update-grub

Заключение

Эти решения помогут вам управлять процессом загрузки на Raspberry Pi 5 с Debian Bookworm. В зависимости от ваших потребностей, вы можете выбрать подходящий метод для приостановки или полной остановки загрузки системы. Если вы планируете использовать эти задержки в производственной среде, убедитесь, что это не приведёт к снижению работоспособности или доступности системы.

Оцените материал
Добавить комментарий

Капча загружается...