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
| COULEURS | 640x480 | 800x600 | 1024x768 | 1280x1024 | 1600x1200 |
|---|---|---|---|---|---|
| 256 | 0301 | 0303 | 0305 | 0307 | 031C |
| 32768 | 0310 | 0313 | 0316 | 0319 | 031D |
| 65536 | 0311 | 0314 | 0317 | 031A | 031E |
| 16.8M | 0312 | 0315 | 0318 | 031B | 031F |
et voici la même table utilisant des nombres décimaux.
| COULEURS | 640x480 | 800x600 | 1024x768 | 1280x1024 | 1600x1200 |
|---|---|---|---|---|---|
| 256 | 769 | 771 | 773 | 775 | 796 |
| 32768 | 784 | 787 | 790 | 793 | 797 |
| 65536 | 785 | 788 | 791 | 794 | 798 |
| 16.8M | 786 | 789 | 792 | 795 | 799 |
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.



























« 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.