Plymouth (Русский)
Plymouth — это проект из Fedora, обеспечивающий загрузку системы без бегущих надписей (логов) на экране. Он базируется на kernel mode setting (KMS, установка разрешения и глубины цвета на уровне ядра) для обеспечения родного разрешения экрана на раннем этапе загрузки, после чего отображает привлекательный загрузочный экран вплоть до этапа выбора пользователя.
Подготовка
'Plymouth главным образом использует KMS (Kernel Mode Setting) для отображения графики. На EFI/UEFI системах plymouth может использовать EFI framebuffer. Если вы не можете использовать KMS, например, из-за использования проприетарного драйвера или не хотите использовать EFI framebuffer, обратите внимание на Uvesafb, поскольку он поддерживает широкоформатные разрешения.
Если у вас не настроены ни KMS ни framebuffer, то Plymouth вернется в текстовый режим.
Установка
Plymouth пока недоступен в официальных репозиториях и должен быть установлен из AUR.
Стабильная версия называется plymouthAUR, но можно использовать версию plymouth-gitAUR.
Включение Plymouth в Initcpio
Добавьте Plymouth в HOOKS в mkinitcpio.conf. Он обязательно должен быть добавлен после base
и udev
:
/etc/mkinitcpio.conf
HOOKS="base udev [...] plymouth"
- Если используется шифрование жестких дисков с хуком
encrypt
, необходимо заменитьencrypt
наplymouth-encrypt
и поместить его после хукаplymouth
, чтобы получить доступ к запросу пароля TTY. - Хук
plymouth-encrypt
не поддерживает использование параметровPARTUUID
илиPARTLABEL
вcryptdevice=
. - При использовании ZFS encrypted root нужно установить plymouth-zfsAUR и заменить хук
zfs
наplymouth-zfs
Если после добавления хука plymouth-encrypt
вводимый пароль попадает в фон в текстовом виде, необходимо добавить модуль radeon (для видеокарт radeon), i915 (для видеокарт Intel) или nouveau (для видеокарт nvidia) в строку MODULES в /etc/mkinitcpio.conf
/etc/mkinitcpio.conf
MODULES=(i915 ...) или MODULES=(radeon ...) или MODULES=(nouveau ...)
Также этот шаг может потребоваться для работоспособности некоторых тем.
Альтернативный хук plymouth (systemd)
Если в mkinitcpio.conf используется хук systemd
, необходимо заменить plymouth
на sd-plymouth
. На зашифрованной системе вместо encrypt
или plymouth-encrypt
используйте sd-encrypt
:
/etc/mkinitcpio.conf
HOOKS=(base systemd sd-plymouth ... sd-encrypt ...)
Переконфигурация образа ядра (смотрите статью mkinitcpio (Русский) для более детальной информации)
# mkinitcpio -p [имя вашего ядра]
Командная строка ядра и настройка загрузчика
Необходимо установить quiet splash loglevel=3 rd.udev.log_priority=3 vt.global_cursor_default=0
в параметрах ядра загрузчика. Для Grub2 наиболее простым и безопасным способом сделать это является редактирование файла /etc/default/grub
. Приведите указанные переменные к следующему виду:
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_GFXMODE=1366x768x24 GRUB_GFXPAYLOAD_LINUX=keep
Можно заставить KMS принудительно запускаться раньше добавив "radeon.modeset=1" (для видеокарт radeon) или "i915.modeset=1" (для видеокарт Intel) в опции ядра:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.modeset=1"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.modeset=1"
Чтобы сгенерировать grub.cfg
, выполните:
# grub-mkconfig -o /boot/grub/grub.cfg
Для GRUB и LILO шаблон аналогичен.
Конфигурация
Плавный переход к дисплейному менеджеру
Для активации плавного перехода следует заменить существующий сервис дисплейного менеджера на поставлющийся вместе с Plymouth (на примерe LightDM):
- Отключите существующий сервис:
systemctl disable lightdm.service
- Включите аналогичный сервис, совместимый с Plymouth:
systemctl enable lightdm-plymouth.service
Если вы предпочитаете GDM, установите пакет gdm-plymouthAUR, содержащий патчи для "бесшовного" перехода от анимации Plymouth к дисплейному менеджеру.
Задержка загрузки
Если система загружается настолько быстро, что загрузочная анимация не успевает нормально воспроизвестись до запуска DM, можно установить задержку загрузки ShowDelay
(в секундах), чтобы вместо мерцания темы показать пустой экран.
По умолчанию время задержки равно 5 секундам, однако его можно изменить, чтобы увидеть анимацию на более ранних этапах загрузки.
/etc/plymouth/plymouthd.conf
[Daemon] Theme=spinner ShowDelay=5
Изменение фонового изображения темы
В некоторых темах (таких как spinner) можно изменить фоновое изображение. Для этого следует заменить файл /usr/share/plymouth/themes/theme/background-tile.png
на собственный. Во избежание перезаписи измененной темы при обновлении plymouth, все действия проводите над копией темы.
Выбор темы
Plymouth поставляется со следующими темами:
- Fade-in: "Простая тема с затухающими и разгорающимися мерцающими звездами"
- Glow: "Производственная тема, показывающая процесс загрузки в виде круговой диаграммы"
- Script: "Пример скрипта" (Несмотря на описание выглядит очень симпатичной темой с логотипом Arch)
- Solar: "Космическая тема, голубая звезда с протуберанцами"
- Spinner: "Простая тема с вращающимся индикатором загрузки"
- Spinfinity: "Простая тема, показывающая вращающийся знак бесконечности в центре экрана"
- (Text: "Текстовый режим с трехцветной полосой прогресса")
- (Details: "Резервная тема с подробностями загрузки")
Список установленных тем можно вызвать командой:
plymouth-set-default-theme -l
Изначально выбрана тема spinner. Чтобы выбрать другую, следует изменить строку Theme= в /etc/plymouth/plymouthd.conf
или воспользоваться командой
# plymouth-set-default-theme theme
При каждой смене темы необходимо пересобирать initrd
. Это произойдет автоматически при выборе темы темы с помощью plymouth-set-default-theme
с опцией -R
(в противном случае самостоятельно запустите mkinitcpio -P
).
Для просмотра тем без перезагрузки следует нажать Ctrl+Alt+F6
, войти как root и набрать:
# plymouthd # plymouth --show-splash
Для выхода из просмотра нажать Ctrl+Alt+F6
снова и набрать:
# plymouth --quit
Советы и рекомендации
Отображение сообщений ядра
Чтобы включить отображение сообщений ядра, во время загрузки нажмите Home
или Esc
.
Добавление логотипа ArchLinux к темам spinner и BGRT
Чтобы добавить логотип к темам spinner и BGRT, нужно поместить его в папку темы с названием watermark.png
:
# cp /usr/share/plymouth/arch-logo.png /usr/share/plymouth/themes/spinner/watermark.png
Замена логотипа Arch и создание кастомных тем
Темы, поставляемые с plymouth (fade-in, script, solar, spinfinity), используют логотип, расположенный в /usr/share/plymouth/arch-logo.png
. Чтобы заменить логитип, можно позаимствовать любой по вкусу из тем в AUR, изменить *.plymouth
(и, возможно, *.script
), заменив изображение на выбранное. Из созданной темы следует создать пакет, поскольку изменения в /usr/share/plymouth
могут быть переписаны при обновлении.
Устранение неполадок
Маленькие черные квадраты
По каким-то причинам после выполнения команды выйти, Plymouth может оставить черные квадраты вверху экрана видимые поверх всех окон. Два подтвержденных случая, это ноутбук с видеокартой ATI при использовании KMS, и десктоп с видеокартой nVidia использующий framebuffer. Источником проблемы является опция --retain-splash
, которая требуется для максимально плавного отображения в процессе загрузки. Обходным путем является принудительное закрытие Plymouth после логина, когда опция --retain-splash
более не требуется.
Нужно отредактировать ~/.xinitrc
и добавить следующую линию перед линией запускающей менеджер окружения рабочего стола (подобной "exec openbox-session") чтобы выключить Plymouth:
sudo /bin/plymouth quit &
--retain-splash
и дополнительный знак &
требуются чтобы xinitrc мог продолжать запуск графического окружения и оставить Plymouth выключаться в фоновом режиме.Чтобы получить разрешение на принудительное отключение Plymouth без пароля, нужно отредактировать /etc/sudoers
:
$ su # EDITOR=nano visudo
и добавить:
Ваш_Логин ALL=(ALL) NOPASSWD: /bin/plymouth
После этого необходимо перезагрузиться.
Выключение <-- Все еще проблема?
Если имеется проблема с выключением Power Off, к примеру компьютер перезагружается вместо выключения, причиной может быть или KMS или Plymouth. Если причина в Plymouth, то необходимо или запустить "plymouth --mode ..." в случае перезагрузки или halt или отредактировать /etc/rc.d/functions.d/plymouth.functions
и закомментировать следующий блок:
if [ "$0" == "/etc/rc.shutdown" ]; then ... fi