Traduzca

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
Imagen de la programación avanzada en el ambiente de UNIX, segunda edición (series computacionales del profesional de Addison-Wesley)
Imagen de XSLT 2.0 y de la referencia de programador de XPath 2.0 (programador al programador)
Imagen de los conceptos del sistema operativo
Imagen de los sistemas operativos modernos (3ro edición)

Proyecto Plymouth

Plymouth es el código para un proyecto de freedesktop.org comenzada en 2007 por Ray Strobe de Redhat para desarrollar un uso gráfico para exhibir una pantalla libremente animada del chapoteo del parpadeo durante el proceso de cargador mientras que registra el texto de la consola hecho salir a un fichero de diario. Fedora 10 (Cambridge) era el primer lanzamiento de Fedora para contener Plymouth. El trabajo de desarrollo está activamente en curso y la versión actual es 0.71.

Plymouth se piensa para ser un reemplazo para RHGB (cargador gráfico de Red Hat) que sea utilizado actualmente por Red Hat para proporcionar una exhibición gráfica del cargador. Si el rhgb es parte de la línea de comando del núcleo, el rhgb es comenzado temprano en el proceso de cargador por /etc/sysinit. el rhgb enciende un servidor de X para la exhibición: 1 en un terminal virtual de modo que evite conflicto con el servidor regular de X que puede encender para la exhibición: 0 en otro terminal virtual. También crea un zócalo del dominio de Unix (/etc/rhgb/temp/rhgb-socket) de modo que las escrituras del cargador puedan comunicar con él. Mientras que las escrituras del cargador ejecutan, pueden utilizar al rhgb-cliente para enviar mensajes al rhgb, que entonces pone al día la exhibición del texto y del progreso. Cuando el sistema es el patear acabado, invocan el rhgb-cliente con - la opción parada para enviar una petición del terminal al rhgb. Entonces cambian al usuario al servidor de X usado por el encargado de la exhibición. Desafortunadamente la secuencia de cambiar de modo de texto al servidor del `s X del rhgb al modo de texto al servidor de X del encargado de la exhibición puede causar oscilar significativo de la pantalla. Otra desventaja importante del rhgb es que los mensajes del cargador no están registrados.

El objetivo principal detrás de Plymouth es proporcionar una experiencia libre del booting del sistema del parpadeo donde como anduvo a trancos el rayo póngalo que los detalles feos del cargador para arriba se ocultan detrás (y que se animan posiblemente) de una pantalla gráfica del chapoteo. Un objetivo secundario es registrar la secuencia del cargador. Plymouth se diseña para trabajar en sistemas con los conductores modesetting de la representación del núcleo directo del encargado (DRM) (KMS). DRM es un componente del proyecto directo de la infraestructura de la representación. Consiste en dos módulos del núcleo, un conductor genérico de DRM, y otro que tenga ayuda para el hardware específico de la tarjeta gráfica. Este par de conductores permite una acceso directa del cliente del userspace al hardware de la tarjeta gráfica. Vea aquí para más información en el ajuste del modo de DRM. Así muy a principios de en el proceso de cargador el modo de exhibición video nativo óptimo para el sistema es fijado por un conductor del ajuste del modo del núcleo. Alternadamente las aplicaciones de Plymouth que modo, y hasta las cuales modo siguen siendo iguales durante el proceso de cargador entero y después de que un servidor de X comience. El servidor de X, cuando está encendido, asume el control el modo existente, los terminales virtuales y el contenido del framebuffer. La disponibilidad de un conductor modesetting del núcleo es el enabler dominante para Plymouth. Sin embargo, para los sistemas sin los conductores modesetting del núcleo, hay un modo de texto del retraso que es la barra azul/del blanco/del negro tricolora familiar del progreso. Plymouth también cae de nuevo a este modo de texto si los fall enchufables del defecto para cualquier razón.

Los conductores modesetting del núcleo todavía están en el desarrollo activo y algo el cochecillo. En fecha Fedora 11, solamente Radeon R500 y tarjetas gráficas más altas de la serie apoyan el núcleo modesetting por abandono. Hay obras en fase de creación para proporcionar la ayuda modesetting del núcleo para las tarjetas gráficas R100 y R200. Los conductores modesetting del núcleo de Intel existen pero no se giran por abandono. La ayuda para el núcleo modesetting en las tarjetas gráficas del nVidia vía el conductor de Nouveau es todavía experimental. Si usted termina para arriba con nada pero una pantalla negra durante cargador para arriba, o una pantalla con nada pero ruido al azar en él, intento que agrega el nomodeset a la línea de comando del núcleo al ajuste del modo del núcleo de la neutralización.

Si no hay conductor modesetting del núcleo conveniente disponible para su tarjeta gráfica particular o usted quiere fijar un modo explícito, usted puede agregar el vga=XXX de la secuencia a la línea de comando del núcleo. La línea de comando del núcleo vga=ask de la opción invoca el conductor incorporado del framebuffer del vesa, exhibe una lista de modos apoyados y pide que usted seleccione un modo. Entonces patea el núcleo usando este modo. La línea de comando del núcleo vga=mode de la opción, donde está un hexadecimal el modo de 4 dígitos con un ninguÌn de la letra del `x principal cero y o un número decimal de 3 dígitos, le permite fijar un modo específico.

¿Cómo puede usted decir qué modos particulares están disponibles y cuáles trabajarán mejor para usted? Esto depende realmente del tipo de tarjeta gráfica que usted tiene en su sistema, y de la cantidad de memoria video disponible. La única manera es experimentar con diversos modos.

La tabla siguiente demuestra los números del modo que usted puede entrar en el aviso del vga= usando hexadecimals

COLORES640x480800x6001024x7681280x10241600x1200
2560301030303050307031C
327680310031303160319031D
65536031103140317031A031E
el 16.8M031203150318031B031F

y aquí está la misma tabla usando números decimales.
COLORES640x480800x6001024x7681280x10241600x1200
256769771773775796
32768784787790793797
65536785788791794798
el 16.8M786789792795799

Observe que 8 pedacitos = 256 colores, 15 pedacitos [5: 5: 5] = 32.768 colores, 16 pedacitos [5: 6: 5] = 65.536 colores y 24 pedacitos [8: 8: 8] = 16.8 millones de colores. Los modos adicionales están en la discreción del fabricante de la tarjeta gráfica, pues la especificación de VESA 2.0 define solamente modos hasta 0x31F. Para más información sobre modos de VESA, vea este artículo acerca de tarjetas gráficas obedientes de la extensión de VESA BIOS.

Plymouth trabaja con los temas que son análogos a los screensavers que se exhiben en el tiempo del cargador. Fedora 11 envió con tres temas gráficos solares, fade-in y spinfinity, y dos temas no gráficos texto y detalles. El tema del texto es el tema del defecto se exhibe que si otro tema falla para cualquier razón.

La terminología y la tecnología alrededor de temas y de enchufes se ha desarrollado como progresó el proyecto. La versión de Plymouth que envió en Fedora 10 fue basada en un sistema enchufable donde cada pantalla del chapoteo tuvo que ser cifrada de rasguño. Este problema fue reconocido y para Fedora 11 Plymouth pasó con una reescritura importante por el que ahora apoye los temas que alternadamente utilizan enchufes estándar. Así los reveladores del tema pueden ahora centrarse en los gráficos del tema algo que teniendo que hacer la codificación cruda.

Hay actualmente cinco temas en los depósitos de Fedora. La carga es el tema del defecto para Fedora 11 (Leonidas). Spinfinity es un throbber que se mueve en una trayectoria formada como la muestra del infinito. Demostraciones Fade-In la insignia de Fedora que se descolora adentro y hacia fuera en un campo de estrella. los detalles demuestran el movimiento en sentido vertical clásico hecho salir del proceso de cargador. el texto es la parte inferior del retraso del tema tricolor de la pantalla. Solar, mi favorito personal hasta la fecha, y el tema del defecto para Fedora 10, no está instalado en Fedora 11 por abandono sino está en un paquete opcional. Exhibe un planeta con los pulsares de estallido.

Para instalar todos los temas de Plymouth en los depósitos de Fedora:

# yum -y install plymouth-theme-*


Los temas instalados de Plymouth pueden ser uso mencionado la escritura del Plymouth-fijar-omitir-tema:

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


Los archivos del tema se almacenan en el sub-directório de /usr/share/plymouth/themes.

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


Observe que default.plymouth es un acoplamiento simbólico al tema diseñado real del defecto.

Hay dos tipos de enchufes: chapoteo y control. Puede solamente haber un funcionando enchufable del chapoteo a la vez. Un chapoteo enchufable es qué dibuja la pantalla del chapoteo, pide una contraseña, exhibe mensajes, y más. Un tema llama un chapoteo enchufable para hacer el trabajo real. Por ejemplo, aquí está un listado de los archivos asociados al tema de la 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


El archivo de configuración del tema que es leído por el plymouthd es el nombre del tema con una extensión de .plymouth. En este caso es 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 llama el enchufable de dos etapas para hacer el trabajo real de exhibir el tema. El enchufable de dos etapas cuenta con un ciertos número y tipo de archivos de imagen con nombres específicos. Los varios directorios se pueden pasar a los enchufes; el número y el tipo que son específico enchufable. Por ejemplo diverso tipo de transiciones puede ser especificado para el enchufable de dos etapas usando el directorio de la transición, es decir descolorar-sobre, cruz-descolorarse y combinar-descolorarse.

Algunos enchufes no enviaron con Fedora 11. Un tal enchufable es la etiqueta enchufable. No es parte de initrd sino es cargable una vez que se monta el sistema de ficheros de la raíz. Se carga implícito cuando las tentativas enchufables de un chapoteo de exhibir el texto. Después de que se cargue la etiqueta, utiliza pango y El Cairo para manejar la localización del mensaje.

Otro tal enchufable es la escritura que apoya una lengua scripting para los temas. Apoya dos objetos básicos, es decir imagen y Sprite. Si usted es familiar con Javascript o el lenguaje-c usted debe ser cómodo con el sintaxis y el idioma. Observe que la lengua scripting está experimentando el desarrollo rápido actualmente con objeto de hacerlo que más objeto orientó así que usted puede tener que leer los registros del git o el código fuente para imaginar cuál es o no se apoya.

Por ejemplos de temas con guión, le recomiendo mirada en las fuentes para el Vizta o los temas del diente de león. Estos temas ambos fueron desarrollados por Charlie Brej, asistente de investigación en la universidad de Manchester Reino Unido, que es el revelador principal detrás de la lengua scripting. Si usted quiere intentar estos temas hacia fuera en Fedora 11, usted tendrá que importar las fuentes del árbol de Plymouth Git, configura, reconstruye e instala en su sistema.

Los dos binarios principales implicados en Plymouth son /sbin/plymouthd, demonio que haga la mayor parte de el trabajo real exhibiendo la pantalla del chapoteo y registrando la sesión del cargador, y /bin/plymouth que es el interfaz a /sbin/plymouthd. Desafortunadamente no se suministra ninguna página de hombre para /bin/plymouth pero hay una cierta información en el sub-directório de /usr/share/doc/plymouth-0.7.0. Ambos tienen un número de opciones útiles.

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


En Fedora /usr/bin/rhgb-client es un acoplamiento simbólico a /usr/bin/plymouth

Una forma a experimentar con Plymouth es invocarla del runlevel 2 o 3. por ejemplo, aquí es una escritura simple para exhibir el tema del defecto por 5 segundos, a pedir una contraseña, y a pedir su nombre 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


Observe que no todos los enchufes apoyan cada comando y opción actualmente. La escritura antedicha trabaja con el tema solar que utiliza espacio-señala por medio de luces enchufable. Sin embargo este enchufable no apoya el comando del mensaje por ejemplo. Una opción útil que falta de Plymouth sería una opción para enumerar qué comandos fueron apoyados.

Plymouth no se diseña realmente para ser construida de fuente por los usuarios finales. Para que trabaje correctamente, tiene que ser integrado en la distribución subyacente. Porque comienza tan temprano en el proceso de cargador, necesita ser agregado al initrd de una distribución (disco de espolón inicial) y la distribución necesita interconectar con el plymouthd para decirle cómo está progresando el cargador. Además los initramfs tienen que incluir todos los archivos necesarios necesarios por un servidor de X. Por ejemplo, aquí está la escritura del nash en mi initrd de Fedora 11. Aviso cómo se llama la pantalla del chapoteo de Plymouth tan pronto como una consola sea disponible y también varias otras veces en la escritura.

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 el progreso del cargador el estado del cargador se pone al día regularmente con las secuencias significando qué está sucediendo. Los enchufes pueden escuchar éstos si eligen a pero se no hacen caso generalmente en los enchufes actuales, y se utilizan solamente para calcular la valoración del tiempo del cargador. En Fedora 11, por ejemplo la escritura de rc.sysinit incluye varias llamadas a Plymouth para ocultar o para demostrar la pantalla del chapoteo según si una contraseña es necesaria tener acceso a un sistema de ficheros o un sistema de ficheros debe relabeled por el selinux.

¿Tan cómo Plymouth sabe cuándo parar? Realmente, no tiene ninguna manera de saber. Apenas guarda en ir hasta que reciba un mensaje parado. En el caso de Fedora 11, la escritura de /etc/event.d/quit-plymouth envía el mensaje parado.

# 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


Un caso especial está cuando los cargadores de un usuario al solo usuario. En este caso la escritura de /etc/event.d/rcS-sulogin se ejecuta.

# 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


Qué no se sabe comúnmente es que usted puede también utilizar Plymouth para proporcionar una pantalla del chapoteo durante parada normal del sistema o la reinicialización. Esto se hace en Fedora 11 vía la escritura de /etc/event.d/plymouth-shutdown. como se muestra abajo.

# 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


Los mensajes del cargador de la consola se vuelven a dirigir a un pseudo-terminal que se cree muy a principios de en el proceso de cargador. Se protegen estos mensajes hasta que los sistemas de ficheros se monten completamente. Entonces el almacenador intermediario se descarga a /var/log/boot. En texto o modo de gráficos, se obscurecen los mensajes del cargador. Sin embargo usted puede ver estos mensajes en cualquier momento durante secuencia del cargador golpeando la tecla de salida.

Uno de los efectos secundarios de cambiar los temas de Plymouth es que usted tiene que generar una nueva imagen del initrd. Esto se hace generalmente usando la escritura del mkinird. Al menos hay una alternativa a hacer esto. Usted puede modificar su imagen existente del initrd para quitar cualquier archivo Plymouth-relacionado y para crear una segunda imagen del initrd que contenga apenas los archivos Plymouth-relacionados. Cuando usted cambia un tema, sólo la imagen de Plymouth necesita ser generada. Usted tiene que modificar grub.conf para cargar ambas imágenes al patear. Aquí está una estrofa de mi grub.conf que haga apenas eso.

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


Aquí está un shell script que generará las dos imágenes. Se basa en las escrituras existentes en el 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


Aquí está un listado de la imagen generada 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 usted puede ver contiene solamente archivos Plymouth-relacionados. No contiene la etiqueta enchufable porque esto se carga al usar dlopen () cuando está necesitada.

Usted puede eliminar errores de Plymouth agregando Plymouth: elimine errores, Plymouth: debug= file:, o Plymouth: debug= file:path_to_log_file en la línea de comando del núcleo. El archivo de defecto es /var/log/plymouth-debug.log si registra a un archivo se especifica pero no se especifica ninguÌn archivo, es decir la opción dos. La otra línea de comando del núcleo opciones incluye console=/dev/what_ever_works para eliminar la consola del defecto (/dev/tty0) y Plymouth: splash=name_of_theme para eliminar el tema del defecto.

Hay también un número de combinaciones dominantes tales como CTRL-L para rediseñar la pantalla, CTRL-V a accionar la palanca eliminan errores de modo y de CTRL-T para permitir modo de texto. Desafortunadamente no podía conseguir ninguno de estos combinaciones dominantes para trabajar. Sin embargo la tecla de salida Trabajó según lo esperado y accionado la palanca la exhibición entre detallado y el tema del defecto.

Plymouth hace toda la manipulación del pixel en software. No hay aceleración de GPU. No hace el uso MMX (extensión de la matemáticas de la matriz) o SSE (que fluye la extensión de SIMD) por lo tanto allí no es ninguna aceleración de la CPU tampoco. Un enchufable que carga muchas imágenes o hace muchas actualizaciones de plena pantalla será más lento de una que carga algunas imágenes y apenas actualizaciones las pequeñas piezas de la pantalla. Mucho de qué se ha escrito sobre Plymouth en la prensa computacional implica que la meta de Plymouth es proporcionar un cargador más rápido encima de la experiencia solamente eso no es una meta explícita del diseño de Plymouth.

Mane que es sobre toda la información útil sobre Plymouth que tengo tiempo para escribir alrededor actualmente. Después de leer este poste, espero que usted tiene una mejor comprensión de Plymouth y cómo se relaciona con la secuencia del cargador. Recuerde sin embargo que este proyecto está en el desarrollo activo. y no se echa nada en piedra. Por ejemplo, la inclusión de Dracut, un reemplazo para el nash, en Fedora 12 (Constantina) puede afectar a cómo se invoca Plymouth. Los temas y los enchufes son también en plena evolución.

Como Plymouth se ejecuta en otras distribuciones de GNU/Linux tales como Ubuntu, espere ver prosperar de los temas gráficos del cargador de autores independientes. Miro adelante a ese día.
 

2 comentarios para proyectar Plymouth

  • Simon B.

    La idea dominante detrás de Plymouth es encender el servidor de X muy a principios de
    el proceso de cargador y continuar usando ese servidor de X durante la conexión y
    sesiones de usuario.
    Ese paso suena más bién el OS del cromo que Plymouth.

    Los archivos http://lists.freedesktop.org/archives/plymouth/2009-December/thread.html de la lista de personas a quienes se mandan propaganda también mencionan que aunque el brie recibe dos enchufes, no significa que él sí mismo los desarrolló. Mi conjetura salvaje es que varias personas estaban implicadas.

  • ¡Usted tiene razón sobre esa oración! La he modificado.

    Nope, por lo que puedo decir, todo el crédito debe ir a Charlie Brej para estos dos enchufes.