Oversett

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
Avbilde av Android Wireless Anvendelsesutvikling
Avbilde av Moderne Operativsystemer (3 Utgave)
Avbilde av XSLT 2,0 og XPath 2,0 Programmerers Referanse (Programmerer til Programmerer)
Avbilde av RHCE Rød Hatt Sertifiserte Ingeniør Linux Studiumhåndbok (Eksamen RH302) (Certification Presse)

Prosjekter Plymouth

Plymouth er codename for et freedesktop.organisasjon prosjekt startet i 2007 ved Ray Stroboskop av Redhat Å utvikle en grafisk anvendelse å vise et flimmer befrir levende skvetter skjerm i løpet av støvelen prosessen mens å logging trøster tekstutgang til et loggarkiv. Fedora 10 (Cambridge) var første utløsningen av Fedora å inneholde Plymouth. Utviklingsarbeid er aktivt pågåendet og den nåværende utløsningen er 0,71.

Plymouth blir tilsiktet å være en utskiftning for RHGB (Rød Hatt Grafisk Støvel) som for tiden blir brukt av Rød Hatt å gi en grafisk støvelutstilling. Hvis rhgb er del av kjernen kommandoen ledningen, blir startet rhgb tidlig i støvelen prosessen ved /osv/sysinit. Rhgb starter en X tjener for utstilling :1 på en virtuell terminal slik at det unngår konflikt med den regulære X tjeneren som kan være start for utstilling :0 på enda en virtuell terminal. Det skaper også en Unix domenestikk-kontakt (/etc/rhgb/temp/rhgb-socket) slik at støvelskrifttyper kan kommunisere med det. Mens støvelskrifttyper utfører, kan bruke de rhgb-klient om å sende rhgb budskap, som da oppdaterer teksten og framgangutstilling. Når systemet er avsluttet å starting, er rhgb-klient påkalt med –quit alternativ å sende et avslutter anmodning til rhgb. Brukeren er da koplet til X tjener brukt av utstillingen sjefen. Dessverre kan rekkefølgen av omkopling fra tekstmodus til rhgb‘s X tjener til tekstmodus til utstillingen sjefen’s X tjener forårsake signifikant skjerm flimre. Enda en hovedulempe av rhgb er de støvlene budskapene er ikke logget.

Hovedformålet bak Plymouth er å gi et flimmer befrir systemstartingserfaring hvor mens Ray Skred anbringer det “the stygge detaljer av støvelen opp” er gjemt bak et grafisk (og muligens levende) skvetter skjerm. Et sekundært formål er å logge støvelen rekkefølgen. Plymouth blir utformet å bearbeide systemer med direkte ytelsessjef (DRM) kjerne modesetting (KM) førere. DRM er en komponent av det Diriger Gi Infrastruktur Prosjekt. Det består av to kjernemoduler, en generisk DRM fører, og enda et som har støtte for den spesifikke grafikk kortet jernvaren. Dette paret førere tillater en userspace klient å dirigere adgang til grafikken kortet jernvaren. Se her For ytterligere opplysninger om DRM modusinnstilling. Følgelig meget allerede tidlig i støvelen bearbeider den optimale innfødte videoen utstillingen modusen for det systemet blir satt av en kjernemodusinnstillingsfører. Inn vend Plymouth bruk som modus, og som modus forblir det samme i løpet av den hele støvel prosessen opp til og etter en X tjenerstarter. X tjener, når startet, overtar den finnesende modusen, de virtuelle terminaler og framebuffer innhold. Tilgangen av en kjerne modesetting fører er nøkkelen 20000000000000000000 for Plymouth. Imidlertid for systemer uten kjerner modesetting førere, er det en tilbakefalltekstmodus som er den fortrolige tricolor blå/hvit/svart framgangbar. Plymouth faller også tilbake til denne teksten modusen hvis standardverdien plugin svikter uansett hva resonnerer for.

Kjerne modesetting førere er stille i aktiv utvikling og noe forvorpen. Fra og med Fedora 11 støtter bare Radeon R500 og høyere seriegrafikkkortkjerne modesetting ved standardverdi. Det er arbeid i gang å gi kjerne modesetting støtte for R100 og R200 grafikkkort. Intel kjerne modesetting førere finnes men skrur ikke på ved standardverdi. Støtt for kjerne modesetting i nVidia grafiske kort via Nouveau fører er enda eksperimental. Hvis du havner med bare en svart skjerm i løpet av støvel opp, eller en skjerm med bare tilfeldig støy på det, forsøk som tilføyer nomodeset til kjernen kommandoen ledningen å udyktiggjøre kjernemodusinnstilling.

Hvis det ikke er noen passende kjerne modesetting fører som er tilgjengelig for din spesielt grafikkkort eller du vil sette en eksplisitt modus, kan tilføye du snoret vga = XXX til kjernen kommandoen ledningen. Kjernen kommandoen ledningen alternativet vga = spør påkaller den den innebygde vesa framebuffer føreren, viser en liste av støttede modi og spør deg å velge ut en modus. Det starter da kjernen som bruker denne modusen. Kjernen kommandoen ledningen alternativet vga = modus, hvor er modus enten et 4 siffer som er heksadesimal med en å leding null og ingen brev ‘x’ eller et 3 sifferdesimalantall, muliggjører deg å sette en spesifikk modus.

Hvordan kan du fortelle hva spesielle modi er tilgjengelig og hvilken vil arbeide best for du ? Dette er virkelig avhengig av typen grafikken kortet som du har i din system, og mengden av videohukommelse tilgjengelig. Den eneste måten er å eksperimentere med forskjellige modi.

Den følgende tabellen viser modiene antallene som du kan tilføre på vga = tilskynder bruke heksadesimal

FARGER640x480800x6001024x7681280x10241600x1200
2560301030303050307031C
327680310031303160319031D
65536031103140317031A031E
16.8M031203150318031B031F

Og her er de samme tabell brukene desimalene antallene.
FARGER640x480800x6001024x7681280x10241600x1200
256769771773775796
32768784787790793797
65536785788791794798
16.8M786789792795799

Bemerk som 8 biter = 256 farger, 15 biter Æ5:5:5å = 32.768 farger, 16 biter Æ5:6:5å = 65.536 farger og 24 biter Æ8:8:8å = 16,8 millionfarger. Ytterligere modi er på diskresjonen av grafikken kortet produsenten, som VESA 2,0 spesifikasjoner bare definerer modi opp til 0x31f. For mer informasjon om VESA modi se denne artikkelen om VESA BIOS Utvidelse Ettergivende grafisk kort.

Plymouth arbeider med temaer som er screensavers analog som er vist på støveltid. Fedora 11 som blir transportert med tre grafiske temaer solar, bl tydeligere og spinfinity, og to ikke--grafiske tema tekster og detaljer. Teksten temaet er standardverdien temaet som er vist hvis enda et tema svikter for uansett hva resonnerer.

Terminologien og teknologien omkring temaer og plugins har utviklet seg mens prosjektet avanserte. Versjonen av Plymouth som transporterte i Fedora 10 ble basert på et plugin system hvor hver skvetter skjerm som blir måttet blir kodet fra risp. Dette problemet ble anerkjent og for Fedora 11 Plymouth som blir dradd gjennom en major omarbeider whereby som det nå støtter temaer som i vender bruk normal plugins. Følgelig kan temafremkallere nå fokusere på temaet grafikken heller enn måtte gjøre rå kode.

For tiden er det fem temaer i Fedora oppbevaringssteder. Pris Er standardverdien temaet for Fedora 11 (Leonidas). Spinfinity er en throbber som flytter inn en sti formet som uendeligheten skiltet. Bl tydeligere viser Fedora logo som blir tydeligere og ut i et stjernefelt. Detaljer viser klassikeren å rulle utgang fra støvelen prosessen. Tekst er tilbakefallet bunnen av skjermen tricolor temaet. Solar, mitt personlig som er yndlings å datere seg, og standardverdien temaet for Fedora 10 blir, ikke installert i Fedora 11 ved standardverdi men er i en valgfri pakke. Det viser en planet med å eksplodere pulsarer.

Å installere all Plymouth temaer i Fedora oppbevaringssteder :

# yum -y install plymouth-theme-*


Installert Plymouth temaer kan bli listet opp bruk plymouth-settee-standardverdien-temaet skrifttypen :

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


Temaarkiver er lagret i /usr/share/plymouth/themes underkatalog.

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


Bemerk den standardverdi.plymouth er et symbolsk ledd til det aktuelle utformte standardverdien temaet.

Det er to typer plugins : Skvett og styr. Det kan bare være en skvetter plugin i bruk om gangen. Et skvetter plugin er hva tegner det skvetter skjerm, ber om et passord, viser budskap, og mer. Et tema kaller et skvetter plugin å gjøre det aktuelle arbeidet. For eksempel, her er en å listing opp av arkivene som er tilknyttet med pris temaet.

$ 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


Temaet konfigurasjonen arkivet som blir lest av plymouthd er navnet av temaet med et . plymouth utvidelse. I dette tilfellen er det pris.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


Dette temaet kaller to-trinn plugin å gjøre det aktuelle arbeidet av å vise temaet. To-trinn plugin venter et visst antall og type avbildearkiver med spesifikke navn. Forskjellige direktiver kan bli passert til plugins ; antallet og typen er plugin spesifikk. For eksempel forskjellig type overganger kan bli spesifisert for to-trinn plugin som bruker Overgangen direktiv, dvs. falmer-over, kors-falmer og sammensmeltingende-falmer.

Noen plugins har ikke transportert med Fedora 11. En slik plugin er merket plugin. Det er del av initrd ikke men er loadable en gang roten filesystem er montert. Det blir implisitt lastet når et skvetter plugin forsøk å vise tekst. Etter merke er lastet, bruker det pango og cairo Å håndtere budskaplokalisering.

Enda en slik plugin er skrifttype som støtter et scripting språk For temaer. Det støtter to grunnleggende objekt, dvs. Avbilde og Sprite. Hvis du er fortrolig med Javascript eller C språk som du burde være behagelig med syntaksen og idiomet. Bemerk at scripting språket gjennomgår hurtig utvikling på det nåværende tidspunkt med en sikt til å lage det mer objekt orienteret slik deg kan måtte lese git loggene eller kilden koden å utpønske hva er eller er ikke støttet.

For eksempeler på scripted temaer anbefaler jeg du ser på kildene for det Vizta eller det Løvetann Temaer. Disse temaene som begge ble utviklet av Charlie Brej, en forskningsassistent på Universitetet av Manchester STORBRITANNIA, som er hovedfremkalleren bak scripting språket. Hvis du vil prøve disse temaene ut på Fedora 11, vil du måtte importere kildene fra Plymouth Git tre, form, gjenoppbygg og installer på din system.

De to hovedbinær involveredd i Plymouth er /sbin/plymouthd, en daemon som gjør mest av det aktuelle arbeidet ved å vise av det skvetter skjerm og å logging støvelen sesjonen, og /beholder/plymouth som er grensesnittet til /sbin/plymouthd. Dessverre er ingen mannside forsynt for /beholder/plymouth men det er noen opplysninger i /usr/share/doc/plymouth-0.7.0 underkatalog. Begge har flere nyttig alternativer.

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


I Fedora /usr/bin/rhgb-client er et symbolsk ledd til /usr/bin/plymouth

Enveiskjørt å eksperimentere med Plymouth er å påkalle det fra runlevel 2 eller 3. For eksempel, her er en enkel skrifttype å vise standardverdien temaet for 5 nest, be om et passord, og be om din navn før til slutt slutte.

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


Bemerk som ikke alle plugins støtter hver kommando og alternativ på den aktuelle tiden. Den ovenfor skrifttypen arbeider med solar temaet som bruker område-flakker plugin. Men denne plugin støtter ikke budskapet kommandoen for eksempel. Et nyttig alternativ som mangler fra plymouth ville være et alternativ å spesifisere hvilke kommandoene ble støttet.

Plymouth blir ikke virkelig utformet å bli bygd fra kilde ved sluttbrukere. For det å arbeide riktig, må bli integrert det inn i det som ligger under distribusjon. Fordi det starter slik tidlig i støvelen prosessen, må bli tilføyd det til en distribusjon’s initrd (Første rambukkskive) og distribusjonen må tilslutte med plymouthd å fortelle det hvordan støvelen avanserer. Dessuten må initramfs inkludere alle de nødvendige arkivene nødvendig av en X tjener. For eksempel, her er nash skrifttypen i min Fedora 11 initrd. Legg merke til hvordan Plymouth skvetter skjerm heter så snart et konsoll er tilgjengelig og også adskillige andre tider i skrifttypen.

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


I løpet av støvelen avanserer støvelen statusen regulært er oppdatert med snorer som betyr hva er begivenhet. Plugins lytter til disse hvis de velger til men de er vanligvis ignorert i den nåværende plugins, og er bare brukt for kalkulereen støvelens tiden vurderingen. I Fedora 11 For eksempel inkluderer rc.sysinit skrifttypen adskillige roper til plymouth å gjemme eller å vise det skvetter skjerm som gir til om et passord er trenger å komme til en filesystem eller en filesystem er å bli relabeled av selinux.

Slik hvordan vet Plymouth når å slutte ? Faktisk har det ikke noen måte av å vite. Det fortsetter akkurat å draing til det mottar et slutter budskap. I tilfelle Fedora 11 sender /etc/event.d/quit-plymouth skrifttype det sluttet budskap.

# 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


Et særtilfelle er når en bruker starter til enkel bruker. I dette tilfellen er /etc/event.d/rcs-sulogin skrifttype utført.

# 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


Hva ikke vanligvis er visst er at du også kan bruke Plymouth om å gi et skvetter skjerm i løpet av systemavstengning eller gjenlader. Dette er gjort i Fedora 11 via /etc/event.d/plymouth-shutdown skrifttype. som vist nedenfor.

# 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


Trøst støvelbudskap er omdirigert til en pseudo-terminal som er skapt meget allerede tidlig i støvelen prosessen. Disse budskapene er støtt til filesystems er fullt montert. Da er bufferen tømt til /var/log/boot.. I hvert tekst eller grafikkmodus er skjult støvlene budskapene. Men du kan se disse budskapene når som helst i løpet av støvelrekkefølge ved å slå av ESC nøkkel.

En av bivirkningene av å forandre Plymouth temaer er at du må generere et nytt initrd avbilde. Vanligvis dette er gjort bruke mkinird skrifttypen. Men det er et alternativ til å gjøre dette. Du kan modifisere din finnesende initrd avbilde å fjerne noen Plymouth-Fortalt arkiver og å skape et andre initrd avbilde som inneholder akkurat Plymouth-Fortalt arkivene. Når du forandrer et tema, må bli generert bare Plymouth avbilde. Du må modifisere grub.conf å laste begge avbilder når starte. Her er en strofe fra min grub.conf som gjør akkurat det.

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


Her er en mantelskrifttype som vil generere de to avbildene. Det er basert på finnes skrifttyper i Plymouth codebase.

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


Her er en å listing opp av den genererede /boot/initrd-plymouth.img avbildet.

$ 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


Mens du kan se det bare inneholder Plymouth-Fortalt arkiver. Det inneholder ikke merket plugin fordi dette er lastet ved bruken dlopens () når nødvendig.

Du kan avluse Plymouth ved å tilføye plymouth : avlus, plymouth : avlus = arkiv :, Eller plymouth:debug=file:path_to_log_file på kjernen kommandoen ledningen. Standardverdien arkivet er /var/log/plymouth-debug.log hvis logge til et arkiv er spesifisert men ingen arkiv er spesifisert, dvs. alternativ to. Andre kjernekommandoledningsalternativer inkluderer konsoll = /dev/what_ever_works å tilsidesette standardverdien konsollet (/dev/tty0) og plymouth:splash=name_of_theme å tilsidesette standardverdien temaet.

Det er også flere nøkkelkombinasjoner slik som KTRL-L til redraw skjermen, KTRL-V å omkople avluser modus og KTRL-T å muliggjøre tekstmodus. Dessverre var ute av stand til få jeg noen av disse fester kombinasjoner å arbeide. Men ESC nøkkel arbeidet mens ventet og omkoplet utstillingen mellom detaljert og standardverdien temaet.

Plymouth gjør all pikselmanipulering i programvare. Det er nei GPU Akselerasjon. Det bruker ikke MMX (MatriseMatteutvidelse) eller SSE (Strømme SIMD Utvidelse) derfor det ikke er noen CPUakselerasjon heller. En plugin som laster mye avbilder eller gjør mye fulle skjermoppdateringer vil være langsomere enn en som laster et par avbilder og akkurat oppdaterer små deler av skjermen. Mye hva skrevet ha blitt om Plymouth i de beregnende presse å antyde som målet av Plymouth er av å gi en fortere støvel opp erfaring men det er ikke eksplisitt designmål av Plymouth.

Godt er det om alle de nyttige opplysningene om Plymouth som jeg har tid å skrive om på det nåværende tidspunkt. Etter lesning håper denne posten, jeg at du har et bedre forståelse av Plymouth og hvordan det seg forholder til støvelen rekkefølgen. Husk imidlertid at dette prosjektet er i aktiv utvikling. og ingenting er støpt i stein. For eksempel innbefatningen av Dracut, Kan en utskiftning for nash, i Fedora 12 (Constantine) berøre hvordan Plymouth er påkalt. Temaer og plugger inn også hurtig utvikler seg.

Mens Plymouth er iverksatt i andre GNU/Linux distribusjoner slik som Ubuntu, Vent til å se en å florering av grafisk støveltemaer fra uavhengige forfattere. Jeg ser frem til den dagen.

2 kommentarer Å Prosjektere Plymouth