summaryrefslogtreecommitdiff
path: root/morphlib/exts/initramfs.write
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2014-06-02 10:53:29 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2014-06-02 12:10:18 +0000
commit23e08ef984ba784d9d74332ffe2d70125ce756e0 (patch)
treecbbc1bfa940e7e1569585ddf34ab5ecd72157ad6 /morphlib/exts/initramfs.write
parent64263de0123f9e513a300fd179e5b84384fa5343 (diff)
downloadmorph-23e08ef984ba784d9d74332ffe2d70125ce756e0.tar.gz
Add initramfs write extension
This creates a gzipped cpio archive that may be used as an initramfs. It is hard-coded to use gzip to compress the initramfs, since it's the most common way to do it. This is unfortunate, since the busybox gzip utility only allows maximum compression, which is rather slow and doesn't give progress reporting, so you can easily think it's gotten stuck. It's possible to use other compression formats, but they need the kernel to be built with them supported, and in the case of lz4, unusual userland tools to create it, since the version of lz4 supported in the kernel is not what the standard lz4 tools produce.
Diffstat (limited to 'morphlib/exts/initramfs.write')
-rwxr-xr-xmorphlib/exts/initramfs.write27
1 files changed, 27 insertions, 0 deletions
diff --git a/morphlib/exts/initramfs.write b/morphlib/exts/initramfs.write
new file mode 100755
index 00000000..815772f2
--- /dev/null
+++ b/morphlib/exts/initramfs.write
@@ -0,0 +1,27 @@
+#!/bin/sh
+# Copyright (C) 2014 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# =*= License: GPL-2 =*=
+
+set -e
+
+ROOTDIR="$1"
+INITRAMFS_PATH="$2"
+
+(cd "$ROOTDIR" &&
+ find . -print0 |
+ cpio -0 -H newc -o |
+ gzip -c) >"$INITRAMFS_PATH"