summaryrefslogtreecommitdiff
path: root/morphlib/exts
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2014-06-03 16:41:51 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2014-06-03 16:41:51 +0000
commit11b7c965debe5da58cc8f07d516fcd44aff30389 (patch)
tree8c331090ac5b68622e61d96cb111159f18597cb8 /morphlib/exts
parent64263de0123f9e513a300fd179e5b84384fa5343 (diff)
parent1ab034dc56b8eb3fff8f8f2abf730450048e9dfc (diff)
downloadmorph-11b7c965debe5da58cc8f07d516fcd44aff30389.tar.gz
Merge branch 'baserock/richardmaw/S11159/initramfs-support'
Reviewed-by: Sam Thursfield and Richard Ipsum
Diffstat (limited to 'morphlib/exts')
-rwxr-xr-xmorphlib/exts/initramfs.write27
-rw-r--r--morphlib/exts/initramfs.write.help35
-rw-r--r--morphlib/exts/kvm.write.help4
-rw-r--r--morphlib/exts/rawdisk.write.help4
-rw-r--r--morphlib/exts/virtualbox-ssh.write.help4
5 files changed, 74 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"
diff --git a/morphlib/exts/initramfs.write.help b/morphlib/exts/initramfs.write.help
new file mode 100644
index 00000000..29a9d266
--- /dev/null
+++ b/morphlib/exts/initramfs.write.help
@@ -0,0 +1,35 @@
+help: |
+ Create an initramfs for a system by taking an existing system and
+ converting it to the appropriate format.
+
+ The system must have a `/init` executable as the userland entry-point.
+ This can have a different path, if `rdinit=$path` is added to
+ the kernel command line. This can be added to the `rawdisk`,
+ `virtualbox-ssh` and `kvm` write extensions with the `KERNEL_CMDLINE`
+ option.
+
+ It is possible to use a ramfs as the final rootfs without a `/init`
+ executable, by setting `root=/dev/mem`, or `rdinit=/sbin/init`,
+ but this is beyond the scope for the `initramfs.write` extension.
+
+ The intended use of initramfs.write is to be part of a nested
+ deployment, so the parent system has an initramfs stored as
+ `/boot/initramfs.gz`. See the following example:
+
+ name: initramfs-test
+ kind: cluster
+ systems:
+ - morph: minimal-system-x86_64-generic
+ deploy:
+ system:
+ type: rawdisk
+ location: initramfs-system-x86_64.img
+ DISK_SIZE: 1G
+ HOSTNAME: initramfs-system
+ INITRAMFS_PATH: boot/initramfs.gz
+ subsystems:
+ - morph: initramfs-x86_64
+ deploy:
+ initramfs:
+ type: initramfs
+ location: boot/initramfs.gz
diff --git a/morphlib/exts/kvm.write.help b/morphlib/exts/kvm.write.help
new file mode 100644
index 00000000..8b5053a5
--- /dev/null
+++ b/morphlib/exts/kvm.write.help
@@ -0,0 +1,4 @@
+help: |
+ The INITRAMFS_PATH option can be used to specify the location of an
+ initramfs for syslinux to tell Linux to use, rather than booting
+ the rootfs directly.
diff --git a/morphlib/exts/rawdisk.write.help b/morphlib/exts/rawdisk.write.help
index a514a4e8..298d441c 100644
--- a/morphlib/exts/rawdisk.write.help
+++ b/morphlib/exts/rawdisk.write.help
@@ -5,3 +5,7 @@ help: |
The `location` argument is a pathname to the image to be
created or upgraded.
+
+ The INITRAMFS_PATH option can be used to specify the location of an
+ initramfs for syslinux to tell Linux to use, rather than booting
+ the rootfs directly.
diff --git a/morphlib/exts/virtualbox-ssh.write.help b/morphlib/exts/virtualbox-ssh.write.help
new file mode 100644
index 00000000..8b5053a5
--- /dev/null
+++ b/morphlib/exts/virtualbox-ssh.write.help
@@ -0,0 +1,4 @@
+help: |
+ The INITRAMFS_PATH option can be used to specify the location of an
+ initramfs for syslinux to tell Linux to use, rather than booting
+ the rootfs directly.