Traduisez

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
Image du développement de grain de Linux (3ème édition)
Image de développement d'applications sans fil androïde
Image de XSLT 2.0 et de référence de programmeur de XPath 2.0 (programmeur au programmeur)
Image de commencer Google Maps api 3

Projet Plymouth

Plymouth est le nom de code pour un projet de freedesktop.org commencée en 2007 par Ray Strobe de Redhat pour développer une application graphique pour montrer un écran librement animé d'éclaboussure de clignotement pendant le processus de botte tandis que le texte de notation de console produisait à un fichier de consignation. Fedora 10 (Cambridge) était le premier dégagement de Fedora pour contenir Plymouth. Le travail de développement est activement continu et la version actuelle est 0.71.

Plymouth est prévue pour être un remplacement pour RHGB (botte graphique de Red Hat) qui est actuellement employé par Red Hat pour fournir un affichage graphique de botte. Si le rhgb fait partie de la ligne de commande de grain, le rhgb est commencé tôt dans le processus de botte par /etc/sysinit. le rhgb met en marche un serveur de X pour l'affichage : 1 sur une borne virtuelle de sorte qu'elle évite le conflit avec le serveur régulier de X qui peut démarrer pour l'affichage : 0 sur une autre borne virtuelle. Elle crée également une douille de domaine d'Unix (/etc/rhgb/temp/rhgb-socket) de sorte que les manuscrits de botte puissent communiquer avec elle. Pendant que les manuscrits de botte s'exécutent, ils peuvent employer le rhgb-client pour envoyer des messages au rhgb, qui met à jour alors l'affichage des textes et de progrès. Quand le système est initialisation de finition, le rhgb-client est appelé avec - l'option stoppée pour envoyer une demande de terminaison au rhgb. L'utilisateur est alors commuté au serveur de X employé par le directeur d'affichage. Malheureusement l'ordre du changement du mode des textes au serveur du `s X de rhgb au mode des textes au serveur de X du directeur d'affichage peut causer le clignotement significatif d'écran. Un autre inconvénient principal de rhgb est que des messages de botte ne sont pas notés.

L'objectif principal derrière Plymouth est de fournir une expérience libre d'initialisation de système de clignotement où car le rayon a progressé mettez-le « que les détails laids de initialisent » sont cachés derrière (et probablement animés) un écran graphique d'éclaboussure. Un second objectif est de noter l'ordre de botte. Plymouth est conçue pour travailler sur des systèmes avec les conducteurs modesetting de rendu de grain direct du directeur (DRM) (KMS). DRM est un composant du projet direct d'infrastructure de rendu. Il se compose de deux modules de grain, d'un conducteur générique de DRM, et d'un autre qui ont le soutien du matériel spécifique de carte graphique. Cette paire de conducteurs permet un accès direct de client d'userspace au matériel de carte graphique. Voyez ici pour de plus amples informations sur l'arrangement de mode de DRM. Ainsi très dès l'abord dans le processus de botte le mode d'affichage visuel indigène optimal pour le système est placé par un conducteur d'arrangement de mode de grain. Alternativement les utilisations de Plymouth à qui mode, et jusqu'aux lesquelles mode demeure les mêmes pendant le processus de botte entier et après qu'un serveur de X démarre. Le serveur de X, une fois démarré, assure le mode existant, les bornes virtuelles et le contenu de framebuffer. La disponibilité d'un conducteur modesetting de grain est l'enabler principal pour Plymouth. Cependant, pour des systèmes sans conducteurs modesetting de grain, il y a un mode des textes de chute qui est la barre tricolore familière bleue/de blanc/noir progrès. Plymouth se laisse tomber également de nouveau à ce mode des textes si les échouer embrochables de défaut pour quelque raison.

Les conducteurs modesetting de grain sont toujours dans le développement actif et légèrement le boguet. En date de Fedora 11, seulement Radeon R500 et plus hautes cartes graphiques de série soutiennent le grain modesetting par défaut. Il y a des travaux en cours pour fournir l'appui modesetting de grain pour les cartes graphiques R100 et R200. Les conducteurs modesetting de grain d'Intel existent mais ne sont pas allumés par défaut. Le soutien du grain modesetting dans les cartes graphiques de nVidia par l'intermédiaire du conducteur de Nouveau est encore expérimental. Si vous finissez vers le haut avec rien mais un écran noir pendant initialisent, ou un écran avec rien mais le bruit aléatoire là-dessus, essai ajoutant le nomodeset à la ligne de commande de grain à l'arrangement de mode de grain de débronchement.

S'il n'y a aucun conducteur modesetting de grain approprié disponible pour votre carte graphique particulière ou vous voulez placer un mode explicite, vous pouvez ajouter le vga=XXX de corde à la ligne de commande de grain. La ligne de commande de grain vga=ask d'option appelle le le conducteur intégré de framebuffer de vesa, montre une liste de modes soutenus et te demande de choisir un mode. Il initialise alors le grain utilisant ce mode. La ligne de commande de grain vga=mode d'option, où le mode est un hexadécimal de 4 chiffres avec un principal aucun de lettre de `x nul et ou un nombre décimal de 3 chiffres, te permet de placer un mode spécifique.

Comment pouvez-vous dire quels modes particuliers sont disponibles et ce qui fonctionnera bien pour vous ? Ceci dépend vraiment du type de carte graphique que vous avez dans votre système, et de la quantité de mémoire visuelle disponible. La seule manière est d'expérimenter avec différents modes.

La table suivante montre les nombres de mode que vous pouvez entrer au message de sollicitation de vga= utilisant des hexadécimaux

COULEURS640x480800x6001024x7681280x10241600x1200
2560301030303050307031C
327680310031303160319031D
65536031103140317031A031E
16.8M031203150318031B031F

et voici la même table utilisant des nombres décimaux.
COULEURS640x480800x6001024x7681280x10241600x1200
256769771773775796
32768784787790793797
65536785788791794798
16.8M786789792795799

Notez que 8 bits = 256 couleurs, 15 bits [5 : 5 : 5] = 32.768 couleurs, 16 bits [5 : 6 : 5] = 65.536 couleurs et 24 bits [8 : 8 : 8] = 16.8 millions de couleurs. Les modes additionnels sont à la discrétion du fabricant de carte graphique, car les spécifications de VESA 2.0 définissent seulement des modes jusqu'à 0x31F. Pour plus d'informations sur des modes de VESA, voir le cet article concernant les cartes graphiques conformes de prolongation de VESA BIOS.

Plymouth fonctionne avec les thèmes qui sont analogues aux circuits économiseurs d'écran qui sont montrés au temps de botte. Fedora 11 s'est transporté avec trois thèmes graphiques solaires, enchaînés et spinfinity, et deux thèmes non graphiques texte et détails. Le thème des textes est le thème de défaut qui est montré si un autre thème échoue pour quelque raison.

La terminologie et la technologie autour des thèmes et des connexions a évolué comme le projet a progressé. La version de Plymouth qui s'est transportée dans Fedora 10 a été basée sur un système embrochable où chaque écran d'éclaboussure a dû être codé à partir de zéro. Ce problème a été identifié et pour Fedora 11 Plymouth est passée par une réécriture importante par lequel elle soutienne maintenant les thèmes qui emploient à leur tour les connexions standard. Ainsi les réalisateurs de thème peuvent maintenant se concentrer sur les graphiques de thème plutôt que devant faire le codage cru.

Actuellement il y a cinq thèmes dans les dépôts de Fedora. La charge est le thème de défaut pour Fedora 11 (Leonidas). Spinfinity est un throbber qui se déplace dans un chemin formé comme le signe d'infini. Expositions enchaînées le logo de Fedora se fanant dedans et dehors dans un domaine d'étoile. les détails montre le défilement classique produit du processus de botte. le texte est le fond de chute du thème tricolore d'écran. Solaire, mon favori personnel jusqu'ici, et le thème de défaut pour Fedora 10, n'est pas installé dans Fedora 11 par défaut mais est dans un paquet facultatif. Il montre une planète avec les pulsars de explosion.

Pour installer tous les thèmes de Plymouth dans les dépôts de Fedora :

# yum -y install plymouth-theme-*


Les thèmes installés de Plymouth peuvent être utilisation énumérée le manuscrit de Plymouth-placer-transférer-thème :

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


Des dossiers de thème sont stockés dans le sous-répertoire de /usr/share/plymouth/themes.

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


Notez que default.plymouth est un lien symbolique au thème conçu réel de défaut.

Il y a deux types de connexions : éclaboussure et commande. Il peut seulement y avoir un en service embrochable d'éclaboussure à la fois. Une éclaboussure embrochable est ce qui dessine l'écran d'éclaboussure, demande un mot de passe, affiche des messages, et plus. Un thème appelle une éclaboussure embrochable pour effectuer le travail réel. Par exemple, voici une liste des dossiers liés au thème de charge.

$ 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


Le fichier de configuration de thème qui est lu par le plymouthd est le nom du thème avec une prolongation de .plymouth. Dans ce cas-ci c'est 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


Ce thème appelle l'embrochable en deux étapes pour effectuer le travail réel de montrer le thème. L'embrochable en deux étapes s'attend un certains nombre et type de dossiers d'image avec des noms spécifiques. De diverses directives peuvent être passées aux connexions ; le nombre et le type étant détail embrochable. Par exemple le type différent de transitions peut être spécifié pour l'embrochable en deux étapes utilisant la directive de transition, c.-à-d. faner-au-dessus de, croix-se faner et fusionner-se faner.

Quelques connexions ne se sont pas transportées avec Fedora 11. Tel embrochable est l'étiquette embrochable. Ce n'est pas une partie d'initrd mais est chargeable une fois que le système de fichiers de racine est monté. Il est implicitement chargé quand des tentatives embrochables d'une éclaboussure de montrer le texte. Après que l'étiquette soit chargée, elle emploie le pango et le Caire pour manipuler la localisation de message.

Un autre de ce genre embrochable est le manuscrit qui soutient une langue scripting pour des thèmes. Il soutient deux objets de base, c.-à-d. image et Sprite. Si vous êtes au courant du Javascript ou du langage C vous devriez être confortable avec la syntaxe et l'idiome. Notez que la langue scripting subit le développement rapide actuellement en vue de le faire que plus d'objet a orienté ainsi vous pouvez devoir lire les notations de git ou le code source pour figurer dehors ce qui est ou n'est pas soutenu.

Pour des exemples des thèmes préétablis, je vous recommande regard aux sources pour le Vizta ou les thèmes de pissenlit. Ces thèmes tous les deux ont été développés par Charlie Brej, un aide de recherches à l'université de Manchester R-U, qui est le réalisateur principal derrière la langue scripting. Si vous voulez essayer ces thèmes dehors sur Fedora 11, vous devrez importer les sources de l'arbre de Plymouth Git, configurez, reconstruisez et installez sur votre système.

Les deux binaires principales impliquées dans Plymouth sont /sbin/plymouthd, un démon qui effectue la majeure partie du travail réel en montrant l'écran d'éclaboussure et en notant la session de botte, et /bin/plymouth qui est l'interface à /sbin/plymouthd. Malheureusement aucune page d'homme n'est fournie pour /bin/plymouth mais il y a de l'information dans le sous-répertoire de /usr/share/doc/plymouth-0.7.0. Tous les deux ont un certain nombre d'options utiles.

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


Dans Fedora /usr/bin/rhgb-client est un lien symbolique à /usr/bin/plymouth

L'one-way à expérimenter avec Plymouth est de l'appeler du runlevel 2 ou 3. par exemple, voici un manuscrit simple pour montrer le thème de défaut pendant 5 secondes, à demander un mot de passe, et à demander votre nom avant de stopper finalement.

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


Notez que non toutes les connexions soutiennent chaque commande et option à l'heure actuelle. Le manuscrit ci-dessus fonctionne avec le thème solaire qui emploie espace-évase embrochable. Cependant cet embrochable ne soutient pas la commande de message par exemple. Une option utile qui est absente de Plymouth serait une option pour énumérer quelles commandes ont été soutenues.

Plymouth n'est pas vraiment conçue pour être construite de la source par des utilisateurs. Pour qu'il travaille correctement, il doit être intégré dans la distribution fondamentale. Puisqu'il commence tellement tôt dans le processus de botte, il doit être ajouté à l'initrd d'une distribution (disque virtuel initial) et la distribution doit se connecter par interface au plymouthd pour lui indiquer que la botte progresse. En outre les initramfs doit inclure tous les dossiers nécessaires requis par un serveur de X. Par exemple, voici le manuscrit de nash dans mon initrd de Fedora 11. Notification comment l'écran d'éclaboussure de Plymouth s'appelle dès qu'une console sera disponible et également plusieurs autres fois dans le manuscrit.

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


Pendant le progrès de botte le statut de botte est régulièrement mis à jour avec des cordes signifiant ce qui se produit. Les connexions peuvent écouter ces derniers si elles choisissent à mais elles sont généralement ignorées dans les connexions courantes, et sont seulement employées pour calculer l'évaluation de temps de botte. Dans Fedora 11, par exemple le manuscrit de rc.sysinit inclut plusieurs appels à Plymouth pour cacher ou montrer l'écran d'éclaboussure selon qu'un mot de passe est nécessaire pour accéder à un système de fichiers ou un système de fichiers doit relabeled par le selinux.

Ainsi comment Plymouth sait-elle quand stopper ? En fait, elle n'a aucune manière de savoir. Elle continue juste à aller jusqu'à ce qu'elle reçoive un message stoppé. Dans le cas de Fedora 11, le manuscrit de /etc/event.d/quit-plymouth envoie le message stoppé.

# 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 cas spécial est quand un utilisateur initialise à l'utilisateur simple. Dans ce cas-ci le manuscrit de /etc/event.d/rcS-sulogin est exécuté.

# 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


Ce qui n'est pas généralement connu est que vous pouvez également employer Plymouth pour fournir un écran d'éclaboussure pendant l'arrêt normal du système ou la remise à zéro. Ceci est fait dans Fedora 11 par l'intermédiaire du manuscrit de /etc/event.d/plymouth-shutdown. comme montré ci-dessous.

# 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


Des messages de botte de console sont réorientés à un pseudo-terminal qui est créé très dès l'abord dans le processus de botte. Ces messages sont protégés jusqu'à ce que des systèmes de fichiers soient entièrement montés. Alors l'amortisseur est vidé à /var/log/boot. Dans le texte ou le mode de graphiques, les messages de botte sont obscurcis. Cependant vous pouvez voir ces messages à tout moment pendant l'ordre de botte en frappant la touche ESC.

Un des effets secondaires de changer des thèmes de Plymouth est que vous devez produire d'une nouvelle image d'initrd. Habituellement ceci est fait utilisant le manuscrit de mkinird. De quelque manière qu'il y a une alternative à faire ceci. Vous pouvez modifier votre image existante d'initrd pour enlever tous les dossiers Plymouth-connexes et pour créer une deuxième image d'initrd qui contient juste les dossiers Plymouth-connexes. Quand vous changez un thème, seulement l'image de Plymouth doit être produite. Vous devez modifier grub.conf pour charger les deux images en initialisant. Voici une strophe de mon grub.conf qui fait juste cela.

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


Voici un manuscrit de coquille qui produira des deux images. Il est basé sur les manuscrits existants dans le 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


Voici une liste de l'image produite 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


Comme vous pouvez voir elle contient seulement les dossiers Plymouth-connexes. Elle ne contient pas l'étiquette embrochable parce que ceci est chargé dans l'utilisation dlopen () une fois nécessaire.

Vous pouvez corriger Plymouth en ajoutant Plymouth : corrigez, Plymouth : debug= file:, ou Plymouth : debug= file:path_to_log_file sur la ligne de commande de grain. Le dossier de défaut est /var/log/plymouth-debug.log si notant à un dossier est spécifié mais aucun dossier n'est spécifié, c.-à-d. l'option deux. L'autre ligne de commande de grain options incluent console=/dev/what_ever_works pour dépasser la console de défaut (/dev/tty0) et Plymouth : splash=name_of_theme pour dépasser le thème de défaut.

Il y a également un certain nombre de combinaisons principales telles que CTRL-L pour refaire l'écran, CTRL-V à basculer corrigent le mode et le CTRL-T pour permettre le mode des textes. Malheureusement je ne pouvais pas obtenir quelconque d'entre ces combinaisons principales pour fonctionner. Cependant la touche ESC A fonctionné comme prévu et basculé l'affichage entre détaillé et le thème de défaut.

Plymouth fait tout la manipulation de Pixel dans le logiciel. Il n'y a aucune accélération de GPU. Il ne fait pas l'utilisation MMX (prolongation de maths de Matrix) ou SSE (coulant la prolongation de SIMD) par conséquent là n'est aucune accélération d'unité centrale de traitement non plus. Un embrochable qui charge beaucoup d'images ou fait beaucoup de mises à jour pleine page sera plus lent qu'une qui chargent quelques images et juste mises à jour de petites pièces de l'écran. Beaucoup de ce qui a été écrite au sujet de Plymouth dans la presse de calcul implique que le but de Plymouth est de fournir un plus rapide initialisent l'expérience mais cela n'est pas un but explicite de conception de Plymouth.

Jaillissez qui est au sujet de toute l'information utile sur Plymouth que j'ai le temps pour écrire environ actuellement. Après lecture de ce poteau, j'espère que vous avez un meilleur arrangement de Plymouth et comment il se rapporte à l'ordre de botte. Rappelez-vous cependant que ce projet est dans le développement actif. et rien n'est moulé dans la pierre. Par exemple, l'inclusion de Dracut, un remplacement pour le nash, dans Fedora 12 (Constantine) peut affecter comment Plymouth est appelée. Les thèmes et les connexions sont également en pleine évolution.

Comme Plymouth est mise en application dans d'autres distributions de GNU/Linux telles qu' Ubuntu, comptez voir un épanouissement des thèmes graphiques de botte des auteurs indépendants. J'attends avec intérêt ce jour.
 

2 commentaires pour projeter Plymouth

  • Simon B.

    « L'idée principale derrière Plymouth est de mettre en marche le serveur de X très dès l'abord
    le processus de botte et pour continuer d'à l'aide de ce serveur de X pendant l'ouverture et
    sessions d'utilisateur. »
    Ce passage retentit plutôt l'OS de chrome que Plymouth.

    Les archives http://lists.freedesktop.org/archives/plymouth/2009-December/thread.html de liste d'adresses mentionnent également que quoique le brie accueille deux connexions, ne signifie pas qu'il les a développées lui-même. Ma conjecture sauvage est que plusieurs personnes étaient impliquées.

  • Vous avez raison au sujet de cette phrase ! Je l'ai modifiée.

    Nope, dans la mesure où je peux dire, tout le crédit devrait aller à Charlie Brej pour ces deux connexions.