Переведите

Translate to EnglishÜbersetzen Sie zum Deutsch/GermanΜεταφράστε στα ελληνικά/GreekПереведите к русскому/RussianOversetter til Norsk/NorwegianÖversätta till Svensk/Swedishहिन्दी अनुवाद करने के लिए/Hindi
Tradueix al català/CatalanTulkot uz latviešu/LatvianPreložiť do slovenčiny/SlovakVertaal aan het Nederlands/Dutchترجمة الى العربية/ArabicTraduzca al Español/SpanishTraduisez au Français/French
Traduca ad Italiano/ItalianTraduza ao Português/Portuguese日本語に翻訳しなさい /Japanese한국어에게 번역하십시오/Korean中文翻译/Chinese Simplified中文翻译/Chinese TraditionalПереклад на українську/Ukrainian
Изображение шлема RHCE красного аттестовало направляющий выступ изучения Линукс инженера (экзамен RH302) (давление аттестации)
Изображение развития стерженя Линукс (3-его варианта)
Изображение принципиальных схем операционной системы
Изображение начинать Google составляет карту API 3

Проект Plymouth

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

ЦВЕТЫ640x480800x6001024x7681280x10241600x1200
2560301030303050307031C
327680310031303160319031D
65536031103140317031A031E
16.8M031203150318031B031F

и здесь такая же таблица используя десятичные номера.
ЦВЕТЫ640x480800x6001024x7681280x10241600x1200
256769771773775796
32768784787790793797
65536785788791794798
16.8M786789792795799

Заметьте что 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, рассчитывайте увидеть процветать графических тем ботинка от независимых авторов. Я смотрю вперед к тому дню.
 

2 комментария для того чтобы запроектировать Plymouth

  • B. Simon.

    «Ключевая идея за Plymouth начать очень скоро сервера x дальше
    процесс ботинка и продолжать использовать того сервера x во время имени пользователя и
    встречи потребителя.»
    Тот проход звучает больше как OS крома чем plymouth.

    Архивохранилища http://lists.freedesktop.org/archives/plymouth/2009-December/thread.html списка адресатов также упоминают что даже если Brie хозяйничает 2 plugins, не значит он себя начало их. Моя одичалая догадка что несколько людей были involved.

  • Вы правы о том предложении! Я дорабатывал его.

    Nope, насколько я могу сказать, весь кредит должно пойти к Чарли Brej для этих 2 plugins.