Traduza

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
Imagem de XSLT 2.0 e de referência de programador de XPath 2.0 (programador ao programador)
Imagem do desenvolvimento de aplicações do rádio do Android
Imagem de começar Google Maps API 3
Imagem do desenvolvimento da semente do linux (ó edição)

Projeto Plymouth

Plymouth é o nome de código para um projeto de freedesktop.org começada em 2007 por Raio Estroboscópio de Redhat desenvolver uma aplicação gráfica para indicar livre uma tela animado do respingo da cintilação durante o processo de carregador quando o texto de registo do console output a uma lima de registro. Fedora 10 (Cambridge) era a primeira liberação de Fedora para conter Plymouth. O trabalho de desenvolvimento é ativamente em curso e a liberação atual é 0.71.

Plymouth é pretendida ser uma recolocação para RHGB (carregador gráfico de Red Hat) que é usado atualmente por Red Hat para fornecer uma exposição gráfica do carregador. Se o rhgb é parte da linha de comando da semente, o rhgb está começado cedo no processo de carregador por /etc/sysinit. o rhgb liga um usuário de X para a exposição: 1 em um terminal virtual de modo que evite o conflito com o usuário regular de X que pode ligar para a exposição: 0 em um outro terminal virtual. Igualmente cria um soquete do domínio de Unix (/etc/rhgb/temp/rhgb-socket) de modo que os certificados do carregador possam se comunicar com ele. Enquanto os certificados do carregador executam, podem usar o rhgb-cliente para emitir mensagens ao rhgb, que actualiza então a exposição do texto e do progresso. Quando o sistema é carreg terminado, o rhgb-cliente está invocado com - a opção parada para emitir um pedido da terminação ao rhgb. O usuário é comutado então ao usuário de X usado pelo gerente da exposição. Infelizmente a seqüência da comutação da modalidade de texto ao usuário do `s X do rhgb à modalidade de texto ao usuário de X do gerente da exposição pode causar a cintilação significativa da tela. Um outro inconveniente principal do rhgb é que as mensagens do carregador não estão registradas.

O objetivo principal atrás de Plymouth é fornecer uma experiência livre do booting do sistema da cintilação onde como o raio Strode o põr que os detalhes feios de carregador são escondidos acima atrás de uma tela do respingo gráfico (e possivelmente animado). Um objetivo secundário é registrar a seqüência do carregador. Plymouth é projetada trabalhar em sistemas com os excitadores modesetting da semente direta do gerente da rendição (DRM) (KMS). DRM é um componente do projeto direto da infra-estrutura da rendição. Consiste em dois módulos da semente, em um excitador genérico de DRM, e em outro que tem a sustentação para a ferragem específica da placa gráfica. Este par de excitadores permite a um cliente do userspace o acesso direto à ferragem da placa gráfica. Veja aqui para mais informações no ajuste da modalidade de DRM. Assim sobre no processo de carregador a modalidade de exposição video nativa óptima para o sistema é ajustada muito cedo por um excitador do ajuste da modalidade da semente. Por sua vez os usos de Plymouth que modalidade, e que modalidade permanecem os mesmos durante o processo de carregador inteiro até e depois que um usuário de X começa. O usuário de X, quando ligado, toma sobre a modalidade existente, os terminais virtuais e o índice do framebuffer. A disponibilidade de um excitador modesetting da semente é o enabler chave para Plymouth. Entretanto, para sistemas sem os excitadores modesetting da semente, há uma modalidade de texto do recuo que seja a barra tricolor familiar azul/do branco/preto progresso. Plymouth igualmente deixa cair de volta a esta modalidade de texto se as falhas de encaixe do defeito para o que razão.

Os excitadores modesetting da semente estão ainda no desenvolvimento ativo e um tanto no carrinho. Até à data de Fedora 11, somente Radeon R500 e umas placas gráficas mais elevadas da série suportam a semente que modesetting à revelia. Há uns trabalhos em curso para fornecer a sustentação modesetting da semente para as placas gráficas R100 e R200. Os excitadores modesetting da semente de Intel existem mas não são girados sobre à revelia. A sustentação para a semente que modesetting nos cartões gráficos do nVidia através do excitador de Nouveau é ainda experimental. Se você termina acima com nada mas uma tela preta durante o carregador acima, ou uma tela com nada mas ruído aleatório nele, tentativa que adiciona o nomodeset à linha de comando da semente ao ajuste da modalidade da semente da inutilização.

Se não há nenhum excitador modesetting da semente apropriada disponível para sua placa gráfica particular ou você quer ajustar uma modalidade explícita, você pode adicionar o vga=XXX da corda à linha de comando da semente. A linha de comando vga=ask da semente da opção invoca o o excitador interno do framebuffer do vesa, indica uma lista de modalidades suportadas e pede que você selecione uma modalidade. Carreg então a semente usando esta modalidade. A linha de comando vga=mode da semente da opção, onde a modalidade é um hexadecimal de 4 dígitos com nenhum da letra do `x principal zero e ou um número decimal de 3 dígitos, permite-o de ajustar uma modalidade específica.

Como pode você dizer que modalidades particulares estão disponíveis e qual trabalhará melhor para você? Isto depende realmente do tipo de placa gráfica que você tem em seu sistema, e da quantidade da memória video disponível. A única maneira é experimentar com as modalidades diferentes.

A seguinte tabela mostra os números que da modalidade você pode entrar nos hexadecimals de utilização alertas do vga=

CORES640x480800x6001024x7681280x10241600x1200
2560301030303050307031C
327680310031303160319031D
65536031103140317031A031E
16.8M031203150318031B031F

e está aqui a mesma tabela usando números decimais.
CORES640x480800x6001024x7681280x10241600x1200
256769771773775796
32768784787790793797
65536785788791794798
16.8M786789792795799

Anote que 8 bocados = 256 cores, 15 bocados [5: 5: 5] = 32.768 cores, 16 bocados [5: 6: 5] = 65.536 cores e 24 bocados [8: 8: 8] = 16.8 milhão cores. As modalidades adicionais estão na discreção do fabricante da placa gráfica, porque a especificação de VESA 2.0 define somente modalidades até 0x31F. Para mais informação sobre modalidades de VESA, veja este artigo sobre cartões gráficos complacentes da extensão de VESA BIOS.

Plymouth trabalha com temas que são análogos aos screensavers que são indicados no tempo do carregador. Fedora 11 enviou com os três temas gráficos solares, fade-in e o spinfinity, e dois temas non-graphical texto e detalhes. O tema do texto é o tema do defeito que é indicado se um outro tema falha para o que razão.

A terminologia e a tecnologia em torno dos temas e dos encaixes evoluíram como o projeto progrediu. A versão de Plymouth que enviou em Fedora 10 foi baseada em um sistema de encaixe onde cada tela do respingo tivesse que ser codificada do risco. Este problema foi reconhecido e para Fedora 11 Plymouth atravessou uma reescrita principal por meio de que suporta agora os temas que usam por sua vez encaixes padrão. Assim os colaboradores do tema podem agora focalizar nos gráficos do tema um pouco do que tendo que fazer a codificação crua.

Atualmente há cinco temas nos repositórios de Fedora. A carga é o tema do defeito para Fedora 11 (Leonidas). Spinfinity é um throbber que se mova em um trajeto dado forma como o sinal da infinidade. Mostras Fade-In o logotipo de Fedora que desvanece-se dentro e para fora em um campo de estrela. os detalhes mostram o desdobramento clássico output do processo de carregador. o texto é a parte inferior do recuo do tema tricolor da tela. Solar, meu favorito pessoal até agora, e o tema do defeito para Fedora 10, não é instalado em Fedora 11 à revelia mas está em um pacote opcional. Indica um planeta com pulsar de explosão.

Para instalar todos os temas de Plymouth nos repositórios de Fedora:

# yum -y install plymouth-theme-*


Os temas instalados de Plymouth podem ser uso listado o certificado do Plymouth-ajustar-optar-tema:

# /usr/sbin/plymouth-set-default-theme --list
charge
details
fade-in
spinfinity
text


As limas do tema são armazenadas no sub-directório de /usr/share/plymouth/themes.

# ls /usr/share/plymouth/themes/
charge  default.plymouth  details  fade-in  spinfinity  text


Anote que default.plymouth é uma ligação simbólica ao tema projetado real do defeito.

Há dois tipos de encaixes: respingo e controle. Pode somente haver um respingo de encaixe no uso em um momento. Um respingo de encaixe é o que extrai a tela do respingo, pede uma senha, indica mensagens, e mais. Um tema chama um respingo de encaixe para fazer o trabalho real. Por exemplo, está aqui uma lista das limas associadas com o tema da carga.

$ 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


A lima de configuração do tema que é lida pelo plymouthd é o nome do tema com uma extensão de .plymouth. Neste caso é 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


Este tema chama o de encaixe two-step para fazer o trabalho real de indicar o tema. O de encaixe two-step espera alguns número e tipo de limas de imagem com nomes específicos. As várias diretrizes orientadoras podem ser passadas aos encaixes; o número e o tipo que são específico de encaixe. Por exemplo o tipo diferente de transições pode ser especific para o de encaixe two-step usando a diretriz orientadora da transição, isto é desvanecer-sobre, cruz-desvanecer-se e fundir-desvanecer-se.

Alguns encaixes não enviaram com Fedora 11. Um tal de encaixe é a etiqueta de encaixe. Não é parte do initrd mas é loadable uma vez que o filesystem da raiz é montado. For carregado implicitamente quando tentativas de encaixe de um respingo de indicar o texto. Depois que a etiqueta é carregada, usa o pango e o Cairo para segurar a localização da mensagem.

Um outro tal de encaixe é o certificado que suporta uma língua scripting para temas. Suporta dois objetos básicos, isto é imagem e Sprite. Se você é familiar com o Javascript ou o C - língua você deve ser confortável com a sintaxe e o idioma. Anote que a língua scripting se está submetendo ao desenvolvimento rápido presentemente com o propósito do fazer que mais objeto orientou assim que você pode ter que ler os registros do git ou o código fonte para figurar para fora o que é ou não é suportado.

Para exemplos de temas scripted, eu recomendo-o olhar nas fontes para o Vizta ou os temas do dente-de-leão. Estes temas ambos foram desenvolvidos por Charlie Brej, um assistente de pesquisa na universidade de Manchester Reino Unido, que é o colaborador principal atrás da língua scripting. Se você quer tentar estes temas para fora em Fedora 11, você terá que importar as fontes da árvore de Plymouth Git, configura, reconstrói e instala em seu sistema.

Os dois binários principais envolvidos em Plymouth são /sbin/plymouthd, um demónio que faça a maioria do trabalho real indicando a tela do respingo e registrando a sessão do carregador, e /bin/plymouth que é a relação a /sbin/plymouthd. Nenhuma página de homem é fornecida infelizmente para /bin/plymouth mas há alguma informação no sub-directório de /usr/share/doc/plymouth-0.7.0. Ambos têm um número de opções úteis.

$ /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


Em Fedora /usr/bin/rhgb-client é uma ligação simbólica a /usr/bin/plymouth

O one-way a experimentar com a Plymouth é invocá-la do runlevel 2 ou 3. são por exemplo, aqui um certificado simples para indicar o tema do defeito por 5 segundos, a pedi-lo uma senha, e a pedi-lo seu nome antes finalmente de parar.

#!/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


Anote que não todos os encaixes suportam cada comando e opção actualmente. O certificado acima trabalha com o tema solar que usa espaço-se alarga de encaixe. Entretanto este de encaixe não suporta o comando da mensagem por exemplo. Uma opção útil que faltasse de Plymouth seria uma opção para enumerar que comandos foram suportados.

Plymouth não é projetada realmente ser construída da fonte por utilizadores finais. Para que trabalhe corretamente, tem que ser integrado na distribuição subjacente. Porque começa tão cedo no processo de carregador, precisa de ser adicionado ao initrd de uma distribuição (disco de ram inicial) e a distribuição precisa de conectar com o plymouthd para dizer-lhe como o carregador está progredindo. Além disso os initramfs têm que incluir todas as limas necessárias necessários por um usuário de X. Por exemplo, está aqui o certificado do nash em meu initrd de Fedora 11. Observação como a tela do respingo de Plymouth é chamada assim que um console for disponível e igualmente diversas outras vezes no certificado.

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


Durante o progresso do carregador o status do carregador é regularmente actualizado com cordas significando o que está acontecendo. Os encaixes podem escutar estes se escolhem a mas estão ignorados geralmente nos encaixes atuais, e são usados somente calculando a avaliação do tempo do carregador. Em Fedora 11, por exemplo o certificado de rc.sysinit inclui diversas chamadas a Plymouth para esconder ou mostrar a tela do respingo conforme o que uma senha é necessário alcançar um filesystem ou um filesystem deve relabeled pelo selinux.

Assim como Plymouth sabe quando parar? Realmente, não tem nenhuma maneira de saber. Apenas mantem-se em ir até que receba uma mensagem parada. No caso de Fedora 11, o certificado de /etc/event.d/quit-plymouth emite a mensagem parada.

# 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


Um caso especial for quando carregadores de um usuário ao único usuário. O certificado de /etc/event.d/rcS-sulogin é executado neste caso.

# 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


O que não é sabido geralmente é que você pode igualmente usar Plymouth para fornecer uma tela do respingo durante a parada programada ou a repartição de sistema. Isto é feito em Fedora 11 através do certificado de /etc/event.d/plymouth-shutdown. como mostrado abaixo.

# 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


As mensagens do carregador do console são reorientadas a um pseudo-terminal que seja criado muito cedo sobre no processo de carregador. Estas mensagens são protegidas até que os filesystems estejam montados inteiramente. O amortecedor é despejado então a /var/log/boot. No texto ou na modalidade de gráficos, as mensagens do carregador são obscurecidas. Entretanto você pode ver estas mensagens a qualquer hora durante a seqüência do carregador batendo a chave de ESC.

Um dos efeitos secundários de mudar temas de Plymouth é que você tem que gerar uma imagem nova do initrd. Isto é feito geralmente usando o certificado do mkinird. De qualquer modo há uma alternativa a fazer isto. Você pode modificar sua imagem existente do initrd para remover todas as limas Plymouth-relacionadas e para criar uma segunda imagem do initrd que contenha apenas as limas Plymouth-relacionadas. Quando você mudar um tema, simplesmente a imagem de Plymouth precisa de ser gerada. Você tem que modificar grub.conf para carregar ambas as imagens ao carreg. Está aqui uma estância de meu grub.conf que faz apenas aquele.

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


Está aqui um certificado de escudo que gere as duas imagens. É baseado em certificados existentes no codebase de 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


Está aqui uma lista da imagem gerada de /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


Como você pode ver contem somente limas Plymouth-relacionadas. Não contem a etiqueta de encaixe porque esta é carregada na utilização dlopen () quando necessário.

Você pode eliminar erros de Plymouth adicionando Plymouth: elimine erros, Plymouth: debug= file:, ou Plymouth: debug= file:path_to_log_file na linha de comando da semente. A lima de defeito é /var/log/plymouth-debug.log se registrando a uma lima é especific mas nenhuma lima esta, isto é a opção dois. A outra linha de comando opções da semente incluído console=/dev/what_ever_works para cancelar o console do defeito (/dev/tty0) e Plymouth: splash=name_of_theme para cancelar o tema do defeito.

Há igualmente um número de combinações chaves tais como CTRL-L para redesenhar a tela, CTRL-V a firmar eliminam erros da modalidade e do CTRL-T para permitir a modalidade de texto. Infelizmente eu era incapaz de conseguir qualqueras um combinações chaves trabalhar. Entretanto a chave de ESC trabalhou como esperado e firmado a exposição entre detalhado e o tema do defeito.

Plymouth faz toda a manipulação do pixel no software. Não há nenhuma aceleração de GPU. Não faz o uso MMX (extensão da matemática da matriz) ou SSE (que flui a extensão de SIMD) daqui lá não é nenhuma aceleração do processador central tampouco. Um de encaixe que carregue muitas imagens ou faça muitas actualizações da tela cheia seja mais lento de uma que carrega algumas imagens e apenas actualizações as peças pequenas da tela. Muita do que foi escrita sobre Plymouth na imprensa de computação implica que o objetivo de Plymouth é fornecer um carregador mais rápido acima da experiência mas isso não é um objetivo explícito do projeto de Plymouth.

Jorre que é sobre toda a informação útil em Plymouth que eu tenho o tempo para escrever aproximadamente presentemente. Após ter lido este borne, eu espero que você tem uma compreensão melhor de Plymouth e como se relaciona à seqüência do carregador. Recorde entretanto que este projeto está no desenvolvimento ativo. e nada é moldado na pedra. Por exemplo, a inclusão de Dracut, uma recolocação para o nash, em Fedora 12 (Constantim) pode afetar como Plymouth é invocada. Os temas e os encaixes igualmente estão evoluindo ràpida.

Como Plymouth é executada em outras distribuições de GNU/Linux tais como Ubuntu, espere ver uma florescência de temas gráficos do carregador dos autores independentes. Eu olho para a frente a esse dia.
 

2 comentários para projetar Plymouth

  • Simon B.

    A idéia chave atrás de Plymouth é ligar muito cedo o usuário de X sobre
    o processo de carregador e para continuar a usar esse usuário de X durante o início de uma sessão e
    sessões de usuário.
    Essa passagem soa mais como o ósmio do cromo do que Plymouth.

    Os arquivos http://lists.freedesktop.org/archives/plymouth/2009-December/thread.html da lista de endereços igualmente mencionam que mesmo que o brie hospede dois encaixes, não significa que ele mesmo os desenvolveu. Minha suposição selvagem é que diversos povos eram involvidos.

  • Você é direito sobre essa sentença! Eu modifiquei-a.

    Nope, tanto quanto eu posso dizer, todo o crédito deve ir a Charlie Brej para estes dois encaixes.