X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=febootstrap-to-initramfs.sh;h=dc7296319fa03c07ca5950af1ef951d1259efaab;hb=c6c690b5afca968fb2e87343646f51a13f0c2337;hp=5fa7f5e9c6f108a0699602bf79ceabf41d9b0603;hpb=b900dfdd10cab92a5c6978bc0f4db8f167ae82a9;p=febootstrap.git diff --git a/febootstrap-to-initramfs.sh b/febootstrap-to-initramfs.sh index 5fa7f5e..dc72963 100755 --- a/febootstrap-to-initramfs.sh +++ b/febootstrap-to-initramfs.sh @@ -20,21 +20,79 @@ unset CDPATH +TEMP=`getopt \ + -o '' \ + --long files:,nocompress,help \ + -n febootstrap-to-initramfs -- "$@"` +if [ $? != 0 ]; then + echo "febootstrap-to-initramfs: problem parsing the command line arguments" + exit 1 +fi +eval set -- "$TEMP" + +compress=yes +files= + +usage () +{ + echo "Usage: febootstrap-to-initramfs [--files=filelist] [--nocompress] 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;; + --nocompress) + compress=no + shift;; + --) + shift + break;; + *) + echo "Internal error!" + exit 1;; + esac +done + if [ $# -ne 1 ]; then - echo "febootstrap-to-initramfs DIR > initrd.img" + usage exit 1 fi -cd "$1" +cd "$1" > /dev/null if [ ! -f fakeroot.log -a $(id -u) -ne 0 ]; then echo "no fakeroot.log and not running as root" exit 1 fi +set -e + +( if [ -f fakeroot.log ]; then - fakeroot -i fakeroot.log \ - sh -c 'find -not -name fakeroot.log -a -print0 | cpio -o0c | gzip --best' + if [ -z "$files" ]; then + fakeroot -i fakeroot.log \ + sh -c 'find -not -name fakeroot.log -a -print0 | cpio --quiet -o -0 -H newc' + else + fakeroot -i fakeroot.log \ + sh -c 'cpio --quiet -o -H newc' < $files + fi +else + if [ -z "$files" ]; then + find -not -name fakeroot.log -a -print0 | cpio --quiet -o -0 -H newc + else + cpio --quiet -o -H newc < $files + fi +fi +) | ( +if [ "$compress" = "yes" ]; then + gzip --best else - find -not -name fakeroot.log -a -print0 | cpio -o0c | gzip --best + cat fi +)