Plymouth codename для проекта freedesktop.org начатый в 2007 стробом Рэй Redhat для того чтобы начать графическое применение для показа экрана выплеска фликера свободно одушевлянного во время процесса ботинка пока внося в журнал текст пульта вывел наружу к архиву журнала. Fedora 10 (Кембридж) был первым отпуском Fedora для того чтобы содержать Plymouth. Техническая разработка активно продолжающийся и текущий выпуск 0.71.
Plymouth предназначен быть заменой для RHGB (ботинка красного шлема графического) которое в настоящее время использовано красным шлемом для того чтобы обеспечить графический дисплей ботинка. Если rhgb часть линии передачи команд стерженя, то rhgb начато в самом начале процесс ботинка /etc/sysinit. rhgb начинает сервера x для дисплея: 1 на одном фактически стержне так, что он во избежание конфликт с регулярн сервером x который может начинать для дисплея: 0 на другом фактически стержне. Он также создает гнездо домена Unix (/etc/rhgb/temp/rhgb-socket) так, что сценарии ботинка смогут связывать с им. По мере того как сценарии ботинка исполняют, они могут использовать rhgb-клиента для посылки сообщений к rhgb, которое после этого уточняет дисплей текста и прогресса. Когда система законченный booting, rhgb-клиент призван с - прекращенным вариантом для посылки запроса прекращать к rhgb. Потребитель после этого переключен к серверу x используемому менеджером дисплея. Несчастливо последовательность переключать от режима текста к серверу `s x rhgb к режиму текста к серверу x менеджера дисплея может причинить значительно мелькать экрана. Другой главный недостаток rhgb что сообщения ботинка не внесены в журнал.
Главным образом задача за Plymouth обеспечить опыт booting системы фликера свободный куда по мере того как Рэй Strode положите его «уродские детали ботинка вверх» спрятаны за графическим (и по возможности одушевляны) экраном выплеска. Вторичная задача внести последовательность в журнал ботинка. Plymouth конструирован для работы на системах с водителями сразу стерженя менеджера перевода (DRM) modesetting (KMS). DRM компонент сразу проекта инфраструктуры перевода. Оно состоит из 2 модулей стерженя, родового водителя DRM, и другого которое имеет поддержку для специфического оборудования видеокарты. Эта пара водителей позволяет клиенту userspace сразу доступу к оборудованию видеокарты. См. здесь для дальнейшей информации относительно установки режима DRM. Таким образом очень скоро дальше в процессе ботинка оптимальный родной режим видео-дисплей для системы установлен водителем установки режима стерженя. В свою очередь пользы Plymouth которые режим, и которые режим остают этими же во время всего процесса ботинка до и после того как сервер x начинает. Сервер x, начинано, принимает сверх существующий режим, фактически стержни и содержание framebuffer. Наличие водителя стерженя modesetting ключевой enabler для Plymouth. Однако, для систем без водителей стерженя modesetting, режим текста перехода на аварийный режим который знакомое tricolor адвокатское сословие голубых/белизны/черноты прогресса. Plymouth также падает назад к этому режиму текста если терпеть неудачу значения по умолчанию вставляемые для, то любая причина.
Водители стерженя modesetting все еще в активном развитии и несколько багги. От Fedora 11, только Radeon R500 и более высокие видеокарты серии поддерживают стержень modesetting значением по умолчанию. Работа в процессе для того чтобы обеспечить поддержку стерженя modesetting для видеокарт R100 и R200. Водители стерженя Intel modesetting существуют но не повернуты дальше значением по умолчанию. Поддержка для стерженя modesetting в карточках nVidia графических через водителя Nouveau все еще экспириментально. Если вы кончаетесь вверх с ничего но черным экраном во время ботинка вверх, или экраном с ничего но случайным шумом на ем, то попытка добавляя nomodeset к линии передачи команд стерженя к установке режима стерженя disable.
Если никакой водитель соответствующего стерженя modesetting имеющийся для вашей определенной видеокарты или вы хотите установить точный режим, то вы можете добавить vga=XXX шнура к линии передачи команд стерженя. Линия передачи команд vga=ask стерженя варианта призывает встроенного водителя framebuffer vesa, показывает список поддержанных режимов и спрашивает, что вы выбираете режим. Он после этого boots стержень используя этот режим. Линия передачи команд vga=mode стерженя варианта, где режим или hexadecimal 4 чисел с ведущим никаким письма `x zero и или номером 3 чисел десятичным, позволяет вы установить специфический режим.
Как можете вы сказать какие определенные режимы имеющиеся и чточто будет работать наиболее наилучшим образомнаилучшим образом для вас? Эт действительно быть в зависимости от тип видеокарты который вы имеете в вашей системе, и имеющееся количество видео- памяти. Единственный путь экспериментировать с различными режимами.
Следующая таблица показывает номера режима вы можете input на подсказке vga= используя hexadecimals
| ЦВЕТЫ | 640x480 | 800x600 | 1024x768 | 1280x1024 | 1600x1200 |
|---|---|---|---|---|---|
| 256 | 0301 | 0303 | 0305 | 0307 | 031C |
| 32768 | 0310 | 0313 | 0316 | 0319 | 031D |
| 65536 | 0311 | 0314 | 0317 | 031A | 031E |
| 16.8M | 0312 | 0315 | 0318 | 031B | 031F |
и здесь такая же таблица используя десятичные номера.
| ЦВЕТЫ | 640x480 | 800x600 | 1024x768 | 1280x1024 | 1600x1200 |
|---|---|---|---|---|---|
| 256 | 769 | 771 | 773 | 775 | 796 |
| 32768 | 784 | 787 | 790 | 793 | 797 |
| 65536 | 785 | 788 | 791 | 794 | 798 |
| 16.8M | 786 | 789 | 792 | 795 | 799 |
Заметьте что 8 битов = 256 цветов, 15 битов [5: 5: 5] = 32.768 цветов, 16 битов [5: 6: 5] = 65.536 цветов и 24 бита [8: 8: 8] = 16.8 миллионов цветы. Дополнительные режимы на усмотрение изготовления видеокарты, по мере того как спецификация VESA 2.0 только определяет режимы до 0x31F. Для больше информации о режимах VESA, см. эту статью о карточках выдвижения VESA BIOS уступчивых графических.
Plymouth работает с темами которые аналогичны к хранителям экрана которые показаны на времени ботинка. Fedora 11 грузил с 3 графическими темами солнечными, fade-in и spinfinity, и 2 non-graphical темами текстом и деталями. Тема текста тема значения по умолчанию которая показана если другая тема терпит неудачу для, то любая причина.
Терминология и технология вокруг тем и plugins эволюционировали по мере того как проект развил. Версия Plymouth которая грузила в Fedora 10 была основана на вставляемой системе где каждый экран выплеска должен быть закодирован от скреста. Эта проблема и на Fedora 11 Plymouth пошел через главный переработанный вариант whereby он теперь поддерживает темы которые в свою очередь используют стандартные plugins. Таким образом проявители темы могут теперь сфокусировать на графиках темы довольно чем должно для того чтобы сделать сырцовое кодирвоание.
В настоящее время 5 тем в архивах Fedora. Обязанность тема значения по умолчанию на Fedora 11 (Leonidas). Spinfinity throbber которое двигает в путь сформированный как знак безграничности. Fade-In выставки логос Fedora увядая внутри и вне в поле звезды. детали показывают классицистический scrolling ый от процесса ботинка. текст дно перехода на аварийный режим темы экрана tricolor. Солнечно, мо лично фавориты датировать, и темы значения по умолчанию на Fedora 10, не установлен в Fedora 11 значением по умолчанию а в опционном пакете. Оно показывает планету с взрывая пульсарами.
Установить все темы Plymouth в архивы Fedora:
# yum -y install plymouth-theme-*
Установленные темы Plymouth могут быть перечисленной пользой сценарий plymouth-устанавливать-не выполнять обязательство-темы:
# /usr/sbin/plymouth-set-default-theme --list charge details fade-in spinfinity text
Архивы темы хранятся в subdirectory /usr/share/plymouth/themes.
# ls /usr/share/plymouth/themes/ charge default.plymouth details fade-in spinfinity text
Заметьте что default.plymouth символическое соединение к фактической конструированной теме значения по умолчанию.
2 типа plugins: выплеск и управление. Могут только быть один выплеск вставляемый в пользе одновременно. Выплеск вставляемый что рисует экран выплеска, просит пароль, показывает сообщения, и больше. Тема вызывает выплеск вставляемым для того чтобы сделать фактическую работу. Например, здесь перечисление архивов связанных с темой обязанности.
$ ls /usr/share/plymouth/themes/charge box.png progress-01.png progress-07.png progress-13.png throbber-00.png throbber-06.png throbber-12.png bullet.png progress-02.png progress-08.png progress-14.png throbber-01.png throbber-07.png throbber-13.png charge.plymouth progress-03.png progress-09.png progress-15.png throbber-02.png throbber-08.png throbber-14.png entry.png progress-04.png progress-10.png progress-16.png throbber-03.png throbber-09.png throbber-15.png lock.png progress-05.png progress-11.png progress-17.png throbber-04.png throbber-10.png progress-00.png progress-06.png progress-12.png progress-18.png throbber-05.png throbber-11.png
Архив конфигурации темы который прочитан plymouthd имя темы с выдвижением .plymouth. В этот случай это charge.plymouth.
$ cat /usr/share/plymouth/themes/charge/charge.plymouth [Plymouth Theme] Name=Charge Description=A theme that features the shadowy hull of a Fedora logo charge up and and finally burst into into full form. ModuleName=two-step [two-step] ImageDir=/usr/share/plymouth/themes/charge HorizontalAlignment=.5 VerticalAlignment=.5 Transition=none TransitionDuration=0.0 BackgroundStartColor=0x416fa7 BackgroundEndColor=0x4b83c1
Эта тема вызывает two-step вставляемое для того чтобы сделать фактическую работу показа темы. Two-step вставляемое надеется некоторые количество и тип архивов изображения с специфическими именами. Различные директивы можно пройти к plugins; номер и тип вставляемым специфическим. Например разный вид переходов можно определить для two-step вставляемого используя директиву перехода, т.е. увядать-над, крест-увянуть и сливать-увянуть.
Некоторые plugins не грузили с Fedora 11. Одно такое вставляемое ярлык вставляемый. Нет части initrd а loadable как только система файлов корня установлена. Оно неявно нагружен когда попытки выплеска вставляемые показать текст. После того как ярлык нагружен, он использует pango и Каир для того чтобы отрегулировать локализацию сообщения.
Другое такое вставляемое сценарий который поддерживает scripting язык для тем. Оно поддерживает 2 основных предмета, т.е. изображение и Sprite. Если вы знакомы с яваскриптом или c - языком, то вы должны быть удобны с синтаксисом и идиоматизмом. Заметьте что scripting язык проходит быстрое развитие в настоящее время с целью делать его больше предмета ориентировал поэтому вы можете прочитать журналы git или исходный код к давати в численном выражении что или не поддержано.
Для примеров написанных тем, я рекомендую вас взгляд на источниках для Vizta или тем одуванчика. Эти темы оба были начаты Чарли Brej, ассистентом по исследованиям на университете Manchester Великобритании, который главный проявитель за scripting языком. Если вы хотите попробовать эти темы вне на Fedora 11, то вы импортировать источники от вала Plymouth Git, устанавливаете, восстановляете и устанавливаете на вашу систему.
2 главных binaries, котор включили в Plymouth /sbin/plymouthd, демон который делает большую часть из фактической работы путем показ экрана выплеска и вносить встречу в журнал ботинка, и /bin/plymouth которая интерфейс к /sbin/plymouthd. Несчастливо никакая страница человека не поставлена для /bin/plymouth но некоторая информация в subdirectory /usr/share/doc/plymouth-0.7.0. Оба имеют несколько полезных вариантов.
$ /sbin/plymouthd --help Boot splash control server USAGE: plymouthd [OPTION...] Options: --help This help message --attach-to-session Redirect console messages from screen to log --no-daemon Do not daemonize --debug Output debugging information --mode=Mode is one of: boot, shutdown $ /bin/plymouth --help Boot splash control client USAGE: plymouth [OPTION...] [COMMAND [OPTION...]...] Options: --help This help message --debug Enable verbose debug logging --newroot= Tell boot daemon that new root filesystem is mounted --quit Tell boot daemon to quit --ping Check of boot daemon is running --sysinit Tell boot daemon root filesystem is mounted read-write --show-splash Show splash screen --hide-splash Hide splash screen --ask-for-password Ask user for password --ignore-keystroke= Remove sensitivity to a keystroke --update= Tell boot daemon an update about boot progress --details Tell boot daemon there were errors during boot --wait Wait for boot daemon to quit Available commands: ask-for-password Ask user for password ask-question Ask user a question message Display a message watch-keystroke Become sensitive to a keystroke pause-progress Pause boot progress bar unpause-progress Unpause boot progress bar report-error Tell boot daemon there were errors during boot quit Tell boot daemon to quit Options for ask-for-password command: --command= Command to send password to via standard input --prompt= Message to display when asking for password --number-of-tries= Number of times to ask before giving up (requires --command) --dont-pause-progress Don't pause boot progress bar while asking Options for ask-question command: --command= Command to send the answer to via standard input --prompt= Message to display when asking the question --dont-pause-progress Don't pause boot progress bar while asking Options for message command: --text= The message text Options for watch-keystroke command: --command= Command to send keystroke to via standard input --keys= Keys to become sensitive to Options for quit command: --retain-splash Don't explicitly hide boot splash on exit
В Fedora /usr/bin/rhgb-client символическое соединение к /usr/bin/plymouth
One-way, котор нужно экспериментировать с Plymouth призвать его от runlevel 2 или 3. например, здесь просто сценарий для показа темы значения по умолчанию на 5 секунд, котор нужно попросить пароль, и попросить ваше имя перед окончательно прекращать.
#!/bin/sh
# first check that we are in an appropriate runlevel
rlevel=$(runlevel | cut -d " " -f 2)
if [[ "$rlevel" != "2" && "$rlevel" != "3" ]]
then
echo "ERROR: You must be at runlevel 2 or 3"
exit 1
fi
echo "Testing plymouth default theme ..."
plymouthd
sleep 1
# check if the plymouthd daemon is alive
plymouth --ping
if [[ $? -eq 1 ]]
then
echo "ERROR: Plymouth daemon not running"
exit 1
fi
# show the default splash screen for 5 seconds
plymouth --show-splash
sleep 5
plymouth --ask-for-password
sleep 2
# using a command rather than an option
plymouth ask-question --prompt="What is your name?"
sleep 5
plymouth --quit
echo "Done ..."
exit 0
Заметьте что не все plugins поддерживают каждые команду и вариант в настоящее время. Вышеуказанный сценарий работает с солнечной темой которая использует космос-flares вставляемо. Однако это вставляемое не поддерживает команду сообщения например. Полезный вариант который пропавш от plymouth был бы вариантом для того чтобы перечислить которые команды были поддержаны.
Plymouth действительно не конструирован быть построенным от источника конечными пользователями. Для его, котор нужно работать правильно, он должен быть интегрирован в основное распределение. Потому что он начинает настолько в самом начале процесс ботинка, для этого нужно быть добавленным к initrd распределения (начальному псевдодиску) и распределению нужно взаимодействовать с plymouthd для того чтобы сказать ему как ботинок развивает. Furthermore initramfs должны включить все необходимые архивы необходимы сервером x. Например, здесь сценарий nash в моем initrd Fedora 11. Извещение как экран выплеска Plymouth вызван как только пульт имеющийся и также нескольк другого времени в сценарии.
lsinitrd /boot/initrd-2.6.29.5-191.fc11.x86_64.img ......................... #!/bin/nash mount -t proc /proc /proc setquiet echo Mounting proc filesystem echo Mounting sysfs filesystem mount -t sysfs /sys /sys echo Creating /dev mount -o mode=0755 -t tmpfs /dev /dev mkdir /dev/pts mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts mkdir /dev/shm mkdir /dev/mapper echo Creating initial device nodes mknod /dev/null c 1 3 mknod /dev/zero c 1 5 mknod /dev/systty c 4 0 mknod /dev/tty c 5 0 mknod /dev/console c 5 1 mknod /dev/ptmx c 5 2 mknod /dev/fb c 29 0 mknod /dev/hvc0 c 229 0 mknod /dev/tty0 c 4 0 mknod /dev/tty1 c 4 1 mknod /dev/tty2 c 4 2 mknod /dev/tty3 c 4 3 mknod /dev/tty4 c 4 4 mknod /dev/tty5 c 4 5 mknod /dev/tty6 c 4 6 mknod /dev/tty7 c 4 7 mknod /dev/tty8 c 4 8 mknod /dev/tty9 c 4 9 mknod /dev/tty10 c 4 10 mknod /dev/tty11 c 4 11 mknod /dev/tty12 c 4 12 mknod /dev/ttyS0 c 4 64 mknod /dev/ttyS1 c 4 65 mknod /dev/ttyS2 c 4 66 mknod /dev/ttyS3 c 4 67 daemonize --ignore-missing /bin/plymouthd /lib/udev/console_init tty0 plymouth --show-splash echo Setting up hotplug. hotplug echo Creating block device nodes. mkblkdevs echo Creating character device nodes. mkchardevs echo Making device-mapper control node mkdmnod modprobe scsi_wait_scan rmmod scsi_wait_scan mkblkdevs echo Scanning logical volumes lvm vgscan --ignorelockingfailure echo Activating logical volumes lvm vgchange -ay --ignorelockingfailure vg_ultra resume /dev/mapper/vg_ultra-lv_swap echo Creating root device. mkrootdev -t ext4 -o defaults,ro /dev/mapper/vg_ultra-lv_root echo Mounting root filesystem. mount /sysroot cond -ne 0 plymouth --hide-splash echo Setting up other filesystems. setuproot loadpolicy plymouth --newroot=/sysroot echo Switching to new root and running init. switchroot echo Booting has failed. sleep -1 init
Во время прогресса ботинка состояние ботинка регулярно обновлено с шнурами знаменующ что случается. Plugins могут слушать к этим если они выбирают к, то но они вообще проигнорированы в настоящих plugins, и только использованы для высчитывать оценку времени ботинка. В Fedora 11, например сценарий rc.sysinit включает несколько звоноков к plymouth для того чтобы спрятать или показать экран выплеска согласно ли пароль необходим для того чтобы достигнуть системы файлов или система файлов быть relabeled selinux.
Так как Plymouth знает когда прекратить? Фактически, он не имеет никакой путь знать. Он как раз держит на идти до тех пор пока он не будет получать прекращенное сообщение. В случае Fedora 11, сценарий /etc/event.d/quit-plymouth посылает прекращенное сообщение.
# quit-plymouth - script to stop boot splash
#
# This service triggers plymouth to quit when we reach the
# end of the boot cycle. We start on 'stopping rcX' to make sure
# this completes before the getty starts.
# prefdm handles quit differently, though.
start on runlevel S
start on stopping rc2
start on stopping rc3
start on stopping rc4
script
/usr/bin/plymouth quit || :
end script
Специальный случай когда ботинки потребителя к одиночному потребителю. В этот случай сценарий /etc/event.d/rcS-sulogin исполнен.
# rcS-sulogin - "single-user" runlevel compatibility
#
# This task runs /bin/bash during "single-user" mode,
# then continues to the default runlevel.
start on runlevel S
stop on runlevel
console owner
script
runlevel --set S >/dev/null || true
plymouth --hide-splash || true
exec /bin/bash
end script
post-stop script
if [ "$1" = "S" ]; then
runlevel=$(/bin/awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' /etc/inittab)
[ -z "$runlevel" ] && runlevel="3"
exec telinit $runlevel
fi
end script
Что обыкновенно не знано что вы можете также использовать Plymouth для того чтобы обеспечить экран выплеска во время выключения или reboot системы. Это сделано в Fedora 11 через сценарий /etc/event.d/plymouth-shutdown. как показан ниже.
# plymouth-shutdown - put up shutdown splash
#
# This service triggers plymouth to put up a splash
# when leaving runlevel 5.
start on stopped prefdm
console output
script
set $(runlevel || true)
if [ "$2" != "0" ] && [ "$2" != "6" ]; then
exit 0
fi
/sbin/plymouthd --mode=shutdown || exit 1
/bin/plymouth --sysinit
/bin/plymouth --show-splash
if [ "$2" = "0" ]; then
/bin/plymouth message --text="Shutting down..."
elif [ "$2" = "6" ]; then
/bin/plymouth message --text="Restarting..."
fi
end script
Сообщения ботинка пульта перенаправлены к pseudo-terminal который созданный очень скоро дальше в процессе ботинка. Эти сообщения амортизированы до тех пор пока системы файлов полно не установлены. После этого буфер сброшен к /var/log/boot. В или тексте или режиме графиков, затемнены сообщения ботинка. Однако вы можете увидеть эти сообщения в любое время во время последовательности ботинка путем ударять ключа ESC.
Один из побочных эффектов изменять темы Plymouth что вы должны произвести новое изображение initrd. Обычно это сделано используя сценарий mkinird. Как бы алтернатива к делать это. Вы можете доработать ваше существующее изображение initrd для того чтобы извлечь все Plymouth-родственные архивы и создать второе изображение initrd которое содержит как раз Plymouth-родственные архивы. Когда вы изменяете тему, только изображению Plymouth нужно быть произведенным. Вы должны доработать grub.conf для того чтобы нагрузить оба изображения booting. Здесь stanza от моего grub.conf которое делает как раз то.
title Graphical Boot (Fedora 2.6.29.6-217.2.16.fc11.x86_64)
root (hd0,1)
kernel /vmlinuz-2.6.30.5-43.fc11.x86_64 ro root=/dev/mapper/vg_ultra-lv_root rhgb quiet nopat vga=0x37b 2
initrd /initrd-2.6.30.5-43.fc11.x86_64.img /initrd-plymouth.img
Здесь сценари заполнения которые произведут 2 изображения. Он основаны на существующих сценариях в codebase Plymouth.
#!/bin/bash
#
#
# FPMurphy 9/12/2009
#
[ -z "$TMPDIR" ] && TMPDIR="/var/tmp"
[ -z "$LIBEXECDIR" ] && LIBEXECDIR="/usr/libexec"
[ -z "$DATADIR" ] && DATADIR="/usr/share"
[ -z "$PLYMOUTH_PLUGIN_PATH" ] && PLYMOUTH_PLUGIN_PATH="$(plymouth --get-splash-plugin-path)"
[ -z "$PLYMOUTH_LOGO_FILE" ] && PLYMOUTH_LOGO_FILE="/usr/share/plymouth/bizcom.png"
[ -z "$PLYMOUTH_THEME_NAME" ] && PLYMOUTH_THEME_NAME=$(plymouth-set-default-theme)
[ -z "$PLYMOUTH_IMAGE_FILE" ] && PLYMOUTH_IMAGE_FILE="/boot/initrd-plymouth.img"
[ -z "$IMAGE_FILE" ] && IMAGE_FILE="/boot/initrd-$(uname -r).img"
if [ -z "$PLYMOUTH_POPULATE_SOURCE_FUNCTIONS" ]; then
if [ -f "${LIBEXECDIR}/initrd-functions" ]; then
PLYMOUTH_POPULATE_SOURCE_FUNCTIONS="${LIBEXECDIR}/initrd-functions"
fi
if [ -f "${DATADIR}/dracut/dracut-functions" ]; then
PLYMOUTH_POPULATE_SOURCE_FUNCTIONS="${DATADIR}/dracut/dracut-functions"
fi
fi
if [ -n "$PLYMOUTH_POPULATE_SOURCE_FUNCTIONS" ]; then
source $PLYMOUTH_POPULATE_SOURCE_FUNCTIONS
fi
if [ " $(type -t inst) " != " function " ]; then
echo "Need 'inst' function, try setting PLYMOUTH_POPULATE_SOURCE_FUNCTIONS to a file that defines it" 1>&2
exit 1
fi
if [ " $(type -t set_verbose) " != " function " ]; then
function set_verbose { true; }
fi
Function usage() {
local output="/dev/stdout"
local rc=0
if [ "$1" == "error" ]; then
output="/dev/stderr"
rc=1
fi
echo "usage: plymouth_setup_initrds [ --verbose | -v ]" > $output
exit $rc
}
verbose=false
INITRDDIR=""
while [ $# -gt 0 ]; do
case $1 in
--verbose|-v)
verbose=true
;;
--help|-h)
usage normal
;;
*)
usage error
break
;;
esac
shift
done
set_verbose $verbose || :
CURRENTDIR=`pwd`
INITRDDIR=`mktemp -d ${TMPDIR}/initrd.XXXXXX`
[ -z "$INITRDDIR" ] && {
echo "mktemp failed"
exit 1
}
mkdir -p ${INITRDDIR}${DATADIR}/plymouth/themes
inst /sbin/plymouthd $INITRDDIR /bin/plymouthd
inst /bin/plymouth $INITRDDIR
inst ${DATADIR}/plymouth/themes/text/text.plymouth $INITRDDIR
inst ${PLYMOUTH_PLUGIN_PATH}/text.so $INITRDDIR
inst ${DATADIR}/plymouth/themes/details/details.plymouth $INITRDDIR
inst ${PLYMOUTH_PLUGIN_PATH}/details.so $INITRDDIR
inst ${PLYMOUTH_LOGO_FILE} $INITRDDIR
inst /etc/system-release $INITRDDIR
if [ -z "$PLYMOUTH_THEME_NAME" ]; then
echo "No default plymouth plugin is set" > /dev/stderr
exit 1
fi
PLYMOUTH_MODULE_NAME=$(grep "ModuleName *= *" ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//')
if [ ! -f ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then
echo "The default plymouth plugin (${PLYMOUTH_MODULE_NAME}) doesn't exist" > /dev/stderr
exit 1
fi
inst ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so $INITRDDIR
if [ -d ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME} ]; then
for x in ${DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/* ; do
[ ! -f "$x" ] && break
inst $x $INITRDDIR
done
fi
if [ -L ${DATADIR}/plymouth/themes/default.plymouth ]; then
cp -a ${DATADIR}/plymouth/themes/default.plymouth $INITRDDIR${DATADIR}/plymouth/themes
fi
# generate the initrd-plymouth image
if [ -f ${PLYMOUTH_IMAGE_FILE} ]; then
mv ${PLYMOUTH_IMAGE_FILE} ${PLYMOUTH_IMAGE_FILE}.bak
fi
echo "Generating image: $PLYMOUTH_IMAGE_FILE"
cd ${INITRDDIR}
rm -f lib*/{ld*,libc*,libdl*,libm*,libz*,libpthread*,libpng*,librt*}
rm -f usr/lib*/libpng*
find . | cpio -H newc --quiet -o | gzip -9 > ${PLYMOUTH_IMAGE_FILE}
cd ${CURRENTDIR}
rm -rf ${INITRDDIR}
# now remove all plymouth items from regular initrd
INITRDDIR=`mktemp -d ${TMPDIR}/initrd.XXXXXX`
[ -z "$INITRDDIR" ] && {
echo "mktemp failed"
exit 1
}
cd ${INITRDDIR}
zcat ${IMAGE_FILE} | cpio -i
rm -f ${INITRDDIR}/bin/plymout*
rm -f ${INITRDDIR}/lib64/libply*
rm -f ${INITRDDIR}/usr/lib64/libply*
rm -rf ${INITRDDIR}/usr/lib64/plymouth
rm -rf ${INITRDDIR}/usr/share/plymouth
echo "Generating image: ${IMAGE_FILE}"
mv ${IMAGE_FILE} ${IMAGE_FILE}.bak
findall . | cpio -H newc --quiet -o | gzip -9 > ${IMAGE_FILE}
cd ${CURRENTDIR}
rm -rf ${INITRDDIR}
exit 0
Здесь перечисление произведенного изображения /boot/initrd-plymouth.img.
$ lsinitrd /boot/initrd-plymouth.img drwx------ 6 root root 0 Sep 12 16:43 . drwxr-xr-x 2 root root 0 Sep 12 16:43 etc -rw-r--r-- 1 root root 29 May 11 18:45 etc/fedora-release lrwxrwxrwx 1 root root 14 Sep 12 16:43 etc/system-release -> fedora-release drwxr-xr-x 4 root root 0 Sep 12 16:43 usr drwxr-xr-x 3 root root 0 Sep 12 16:43 usr/lib64 drwxr-xr-x 2 root root 0 Sep 12 16:43 usr/lib64/plymouth -rwxr-xr-x 1 root root 27242 Sep 12 01:42 usr/lib64/plymouth/details.so -rwxr-xr-x 1 root root 28471 Sep 12 01:42 usr/lib64/plymouth/text.so -rwxr-xr-x 1 root root 80032 Sep 12 01:42 usr/lib64/plymouth/space-flares.so -rwxr-xr-x 1 root root 200218 Sep 12 01:42 usr/lib64/libplybootsplash.so.2.0.0 lrwxrwxrwx 1 root root 25 Sep 12 16:43 usr/lib64/libplybootsplash.so.2 -> libplybootsplash.so.2.0.0 drwxr-xr-x 3 root root 0 Sep 12 16:43 usr/share drwxr-xr-x 3 root root 0 Sep 12 16:43 usr/share/plymouth -rw-r--r-- 1 root root 5529 Sep 12 01:42 usr/share/plymouth/bizcom.png drwxr-xr-x 5 root root 0 Sep 12 16:43 usr/share/plymouth/themes drwxr-xr-x 2 root root 0 Sep 12 16:43 usr/share/plymouth/themes/details -rw-r--r-- 1 root root 84 Sep 12 01:42 usr/share/plymouth/themes/details/details.plymouth drwxr-xr-x 2 root root 0 Sep 12 16:43 usr/share/plymouth/themes/text -rw-r--r-- 1 root root 98 Sep 12 01:42 usr/share/plymouth/themes/text/text.plymouth lrwxrwxrwx 1 root root 20 Sep 12 16:43 usr/share/plymouth/themes/default.plymouth -> solar/solar.plymouth drwxr-xr-x 2 root root 0 Sep 12 16:43 usr/share/plymouth/themes/solar -rw-r--r-- 1 root root 246 Sep 12 01:42 usr/share/plymouth/themes/solar/progress_bar.png -rw-r--r-- 1 root root 355666 Sep 12 01:42 usr/share/plymouth/themes/solar/star.png -rw-r--r-- 1 root root 1896 Sep 12 01:42 usr/share/plymouth/themes/solar/lock.png -rw-r--r-- 1 root root 165 Sep 12 01:42 usr/share/plymouth/themes/solar/solar.plymouth -rw-r--r-- 1 root root 296 Sep 12 01:42 usr/share/plymouth/themes/solar/bullet.png -rw-r--r-- 1 root root 870 Sep 12 01:42 usr/share/plymouth/themes/solar/box.png -rw-r--r-- 1 root root 350 Sep 12 01:42 usr/share/plymouth/themes/solar/entry.png drwxr-xr-x 2 root root 0 Sep 12 16:43 lib64 -rwxr-xr-x 1 root root 293522 Sep 12 01:42 lib64/libply.so.2.0.0 lrwxrwxrwx 1 root root 15 Sep 12 16:43 lib64/libply.so.2 -> libply.so.2.0.0 drwxr-xr-x 2 root root 0 Sep 12 16:43 bin -rwxr-xr-x 1 root root 70256 Sep 12 01:42 bin/plymouth -rwxr-xr-x 1 root root 110319 Sep 12 01:42 bin/plymouthd
По мере того как вы можете увидеть оно только содержит Plymouth-родственные архивы. Оно не содержит ярлык вставляемый потому что это нагружено в использовании dlopen ().
Вы можете отлаживать Plymouth путем добавлять plymouth: отлаживайте, plymouth: debug= file:, или plymouth: debug= file:path_to_log_file на линии передачи команд стерженя. Архив значения по умолчанию /var/log/plymouth-debug.log если вносящ в журнал к архиву определяет, то но не определен никакой архив, т.е. вариант 2. Другая линия передачи команд варианты стерженя включает console=/dev/what_ever_works для того чтобы отвергнуть пульт значения по умолчанию (/dev/tty0) и plymouth: splash=name_of_theme для того чтобы отвергнуть тему значения по умолчанию.
Также несколько ключевых комбинаций как CTRL-L для того чтобы redraw экран, CTRL-V, котор нужно toggle отлаживают режим и CTRL-T для того чтобы включить режим текста. Несчастливо я был неспособен получить, что любые из этих ключевые комбинации работал. Однако ключ ESC работал как предположено и toggled дисплею между детальным и темой значения по умолчанию.
Plymouth делает всю манипуляцию пиксела в програмном обеспечении. Никакое ускорение GPU. Оно не делает польза MMX (выдвижение математики матрицы) или SSE (выдвижение SIMD) следовательно там отсутствие ускорения C.P.U. также. Вставляемое которое нагружает много изображения или делает много новые версии полного экрана будет более медленно чем одно которое нагружает немного изображения и как раз новых версий малые части экрана. Много из что было написано о Plymouth в вычисляя давлении подразумевает что цель Plymouth обеспечить более быстрый ботинок вверх по опыту только то нет точной цели конструкции Plymouth.
Хлынитесь которое о полностью полезном сведении на Plymouth что я имею время написать около в настоящее время. После читать этот столб, я надеюсь что вы имеет более лучшее вникание Plymouth и как оно относит к последовательности ботинка. Вспомните однако что этот проект в активном развитии. и ничего брошено в камне. Например, включение Dracut, замена для nash, в Fedora 12 (Constantine) может повлиять на как Plymouth призван. Темы и plug-ins также быстро эволюционируют.
По мере того как Plymouth снабжен в других распределениях GNU/Linux как Ubuntu, рассчитывайте увидеть процветать графических тем ботинка от независимых авторов. Я смотрю вперед к тому дню.



























«Ключевая идея за Plymouth начать очень скоро сервера x дальше
процесс ботинка и продолжать использовать того сервера x во время имени пользователя и
встречи потребителя.»
Тот проход звучает больше как OS крома чем plymouth.
Архивохранилища http://lists.freedesktop.org/archives/plymouth/2009-December/thread.html списка адресатов также упоминают что даже если Brie хозяйничает 2 plugins, не значит он себя начало их. Моя одичалая догадка что несколько людей были involved.
Вы правы о том предложении! Я дорабатывал его.
Nope, насколько я могу сказать, весь кредит должно пойти к Чарли Brej для этих 2 plugins.