From 0a84f3915c7b827e65505c51bb2454b44adddbc9 Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Mon, 15 Jun 2009 14:57:41 +0100 Subject: [PATCH] Add febootstrap-to-initramfs --files option, version 2.2 --- configure.ac | 2 +- febootstrap-to-initramfs.pod | 17 ++++++++++++++- febootstrap-to-initramfs.sh | 52 ++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 65 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index cbed71b..e6b6df0 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. dnl dnl Written by Richard W.M. Jones -AC_INIT(febootstrap,2.1) +AC_INIT(febootstrap,2.2) AM_INIT_AUTOMAKE AC_CHECK_PROG(PERLDOC,[perldoc],[perldoc],[no]) diff --git a/febootstrap-to-initramfs.pod b/febootstrap-to-initramfs.pod index be5985c..951cc10 100644 --- a/febootstrap-to-initramfs.pod +++ b/febootstrap-to-initramfs.pod @@ -4,7 +4,7 @@ febootstrap-to-initramfs - Convert febootstrap root to initramfs (cpio) file. =head1 SYNOPSIS - febootstrap-to-initramfs DIR > initrd.img + febootstrap-to-initramfs [--files=filelist] DIR > initrd.img =head1 DESCRIPTION @@ -20,6 +20,21 @@ The permissions inside the initrd image are corrected automatically (see the discussion of fakeroot logfile in the L page). You do I need to run this command as root. +=head1 OPTIONS + +=over 4 + +=item --files=filelist + +C should be a file containing a list of the files to be +added to the initramfs (one per line). Only those files are added and +any others are ignored. + +When the C<--files> option is not given, all files in C are added +to the initramfs image. + +=back + =head1 /init Normal initramfs images start by executing the program or script diff --git a/febootstrap-to-initramfs.sh b/febootstrap-to-initramfs.sh index 93d415a..83c661c 100755 --- a/febootstrap-to-initramfs.sh +++ b/febootstrap-to-initramfs.sh @@ -20,8 +20,43 @@ unset CDPATH +TEMP=`getopt \ + -o '' \ + --long files:,help \ + -n febootstrap-to-initramfs -- "$@"` +if [ $? != 0 ]; then + echo "febootstrap-to-initramfs: problem parsing the command line arguments" + exit 1 +fi +eval set -- "$TEMP" + +files= + +usage () +{ + echo "Usage: febootstrap-to-initramfs [--files=filelist] DIR" + echo "Please read febootstrap-to-initramfs(8) man page for more information." +} + +while true; do + case "$1" in + --files) + files=$2 + shift 2;; + --help) + usage + exit 0;; + --) + shift + break;; + *) + echo "Internal error!" + exit 1;; + esac +done + if [ $# -ne 1 ]; then - echo "febootstrap-to-initramfs DIR > initrd.img" + usage exit 1 fi @@ -35,8 +70,17 @@ fi set -e if [ -f fakeroot.log ]; then - fakeroot -i fakeroot.log \ - sh -c 'find -not -name fakeroot.log -a -print0 | cpio -o -0 -H newc | gzip --best' + if [ -z "$files" ]; then + fakeroot -i fakeroot.log \ + sh -c 'find -not -name fakeroot.log -a -print0 | cpio -o -0 -H newc | gzip --best' + else + fakeroot -i fakeroot.log \ + sh -c 'cpio -o -H newc | gzip --best' < $files + fi else - find -not -name fakeroot.log -a -print0 | cpio -o -0 -H newc | gzip --best + if [ -z "$files" ]; then + find -not -name fakeroot.log -a -print0 | cpio -o -0 -H newc | gzip --best + else + cpio -o -H newc < $files | gzip --best + fi fi -- 1.8.3.1