Многие пользователи Raspberry Pi хотят получить чистый и профессиональный процесс загрузки, вместо того чтобы видеть длинные логи ядра и системные сообщения.
Хотя сообщество часто рекомендует использовать инструменты вроде fbi (просмотрщик изображений для фреймбуфера), у них есть фундаментальное ограничение: устройство фреймбуфера /dev/fb0 недоступно до запуска системных служб. Следовательно, они не могут отображать изображения достаточно рано в процессе загрузки.
В этом руководстве описывается надёжный метод с использованием Plymouth для отображения пользовательского заставочного экрана уже на ранних стадиях загрузки.
Этап 1: Отключение вывода ядра
Во время загрузки на экране прокручиваются логи ядра, мешающие отображению пользовательской заставки.
Добавьте следующие параметры в командную строку загрузки:
sudo sed -i '$s/$/ logo.nologo quiet loglevel=0/' /boot/firmware/cmdline.txt
Объяснение параметров:
-
logo.nologo
Удаляет логотип Raspberry Pi (или дистрибутива) в верхнем левом углу. -
quiet
Уменьшает объём выводимой информации от ядра. -
loglevel=0
Показывает только аварийные сообщения, делая вывод ядра практически полностью тихим.
Важно:
Файл cmdline.txt должен оставаться одной строкой, где параметры разделены пробелами. Неправильное форматирование может помешать загрузке системы.
Скрытие мигающего курсора
Даже после отключения вывода ядра некоторые системы всё ещё могут показывать мигающий терминальный курсор.
Добавьте следующий параметр в конец той же строки:
vt.global_cursor_default=0
Этап 2: Подготовка ресурсов загрузки
Оптимизация изображения
Рекомендуемые характеристики:
- Формат: PNG или JPG (PNG предпочтительнее при наличии прозрачности)
- Разрешение: ≤ 1920×1080
- Палитра цветов: ≤ 224 цветов (ускоряет загрузку)
- Имя файла:
splash.png
Поместите изображение по пути:
/boot/splash.png
Это расположение позволяет ядру получить к нему доступ на ранней стадии загрузки.
Проверка конфигурации драйвера дисплея
Убедитесь, что включён правильный драйвер дисплея в файле:
/boot/firmware/config.txt
Пример конфигурации:
dtparam=vc4-kms-v3d
Избегайте параметров, которые могут вызвать повторную инициализацию HDMI, например:
hdmi_force_hotplug=1
Этап 3: Развертывание темы Plymouth
1. Установка необходимых пакетов
sudo apt update
sudo apt install plymouth plymouth-themes -y
2. Создание минимальной темы
Создайте каталог темы:
sudo mkdir -p /usr/share/plymouth/themes/silent
Создайте файл конфигурации темы:
/usr/share/plymouth/themes/silent/silent.plymouth
[Plymouth Theme]
Name=silent
Description=Static splash screen
ModuleName=script
[script]
ImageDir=/usr/share/plymouth/themes/silent
ScriptFile=/usr/share/plymouth/themes/silent/silent.script
3. Создание скрипта отрисовки
Создайте файл:
/usr/share/plymouth/themes/silent/silent.script
wallpaper_image = Image("splash.png");
screen_width = Window.GetWidth();
screen_height = Window.GetHeight();
wallpaper_sprite = Sprite(wallpaper_image);
wallpaper_sprite.SetPosition(0, 0, -100);
Логика скрипта:
- Загружает подготовленное изображение загрузки
- Получает текущее разрешение экрана
- Создаёт полноэкранный объект-спрайт
- Устанавливает порядок слоя так, чтобы изображение оставалось внизу
4. Размещение ресурсов и активация темы
Скопируйте изображение:
sudo cp /boot/splash.png /usr/share/plymouth/themes/silent/
Активируйте тему:
sudo plymouth-set-default-theme -R silent
Важное замечание:
Параметр -R не только устанавливает тему по умолчанию, но также выполняет:
update-initramfs -u
Это компилирует тему в initramfs, позволяя Plymouth отображать заставку на ранней стадии загрузки ядра.
Техническое объяснение
Последовательность загрузки Raspberry Pi 5
Процесс загрузки Raspberry Pi 5 значительно отличается от более старых версий.
-
Стадия прошивки
Инициализирует оборудование, такое как PCIe и HDMI. -
Стадия systemd-boot
Загружает ядро и initramfs. -
Базовая система (
basic.target)
Устройство фреймбуфера становится полностью доступным.
Именно поэтому метод fbi не работает: он запускается как системная служба, но устройство фреймбуфера ещё может быть не готово. Plymouth запускается раньше — как часть процесса загрузки.
Управление визуальными слоями
В скрипте:
SetPosition(0, 0, -100)
Отрицательное значение по оси Z помещает изображение на нижний слой, гарантируя, что последующие элементы интерфейса его не перекроют.
Этот механизм слоёв важен для создания чистого заставочного экрана.
Проверка и тестирование
Перезагрузите систему:
sudo sync
sudo reboot
Ожидаемые результаты:
Нет радужного квадрата при загрузке
Нет вывода логов ядра
Нет мигающего курсора
Пользовательское изображение отображается в течение всего процесса загрузки
Если символы всё ещё появляются на стадии прошивки, они исходят из start.elf. Чтобы их убрать, нужно заменить ресурсы логотипа загрузчика, что требует более глубоких изменений.
После завершения этой настройки ваш Raspberry Pi будет отображать полностью пользовательский заставочный экран с момента подачи питания, обеспечивая аккуратный и профессиональный опыт загрузки.
