]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
[scripts] add plymouth-generate-initrd script
authorRay Strode <rstrode@redhat.com>
Sat, 29 Aug 2009 00:00:08 +0000 (20:00 -0400)
committerRay Strode <rstrode@redhat.com>
Sat, 29 Aug 2009 00:04:17 +0000 (20:04 -0400)
One useful way to use plymouth is by installing it into
an auxillary initrd image, that overlays the primary one.

This allows plymouth and its current theme to get updated
indepedently of the kernel and the rest of the initrd
stuff.

plymouth-generate-initrd creates an initrd named:

     initrd-plymouth.img

in /boot that is suitable for use a second initrd on
the initrd line in grub.conf.

scripts/Makefile.am
scripts/plymouth-generate-initrd [new file with mode: 0755]

index 714bd03b277e3c1d903a9386aa6793594dec8c3e..3de5046fdc5cb47ec2c40ae6d13d9d11903e2c37 100644 (file)
@@ -1,7 +1,7 @@
 noinst_SCRIPTS = new-object.sh 
 
 initrdscriptdir = $(libexecdir)/plymouth
-initrdscript_SCRIPTS = plymouth-update-initrd plymouth-populate-initrd
+initrdscript_SCRIPTS = plymouth-update-initrd plymouth-generate-initrd plymouth-populate-initrd
 
 sbinscriptsdir = $(sbindir)
 sbinscripts_SCRIPTS = plymouth-set-default-theme
@@ -20,6 +20,7 @@ plymouth-set-default-theme: $(srcdir)/plymouth-set-default-theme.in
            $(srcdir)/plymouth-set-default-theme.in > plymouth-set-default-theme
 
 EXTRA_DIST= plymouth-update-initrd                                             \
+           plymouth-generate-initrd                                           \
            plymouth-populate-initrd.in                                        \
            plymouth-set-default-theme.in                                     \
            $(noinst_SCRIPTS)                                                  \
diff --git a/scripts/plymouth-generate-initrd b/scripts/plymouth-generate-initrd
new file mode 100755 (executable)
index 0000000..1a2ca83
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+[ -z "$DESTDIR" ] || exit 0
+
+[ -z "$PLYMOUTH_LIBEXECDIR" ] && PLYMOUTH_LIBEXECDIR="/usr/libexec"
+[ -z "$PLYMOUTH_DATADIR" ] && PLYMOUTH_DATADIR="/usr/share"
+[ -z "$PLYMOUTH_POPULATE_INITRD" ] && PLYMOUTH_POPULATE_INITRD="$PLYMOUTH_LIBEXECDIR/plymouth/plymouth-populate-initrd"
+[ -z "$PLYMOUTH_DESTDIR" ] && PLYMOUTH_DESTDIR="/boot"
+[ -z "$PLYMOUTH_IMAGE_FILE" ] && PLYMOUTH_IMAGE_FILE="$PLYMOUTH_DESTDIR/initrd-plymouth.img"
+
+PLYMOUTH_INITRD_DIR="$(mktemp --tmpdir -d plymouth-XXXXXXX)"
+
+$PLYMOUTH_POPULATE_INITRD -t "$PLYMOUTH_INITRD_DIR"
+
+if [ $? -eq 0 ]; then
+    (cd $PLYMOUTH_INITRD_DIR;
+        # FIXME: might make sense to add a flag to plymouth-populate-initrd to
+        #        skip these from the start
+        rm -f lib*/{ld*,libc*,libdl*,libm*,libz*,libpthread*}
+        find | cpio -Hnewc -o | gzip -9 > $PLYMOUTH_IMAGE_FILE
+    )
+fi
+
+rm -rf $PLYMOUTH_INITRD_DIR