summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile.am14
-rw-r--r--configure.ac3
-rwxr-xr-xmake-initramfs.sh.in14
-rwxr-xr-xupdate-initramfs.sh.in35
5 files changed, 56 insertions, 11 deletions
diff --git a/.gitignore b/.gitignore
index 8d797667..ebfc2a3b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,4 +36,5 @@ m4/ltsugar.m4
m4/ltversion.m4
m4/lt~obsolete.m4
stamp-h1
+update-initramfs.sh
vmlinuz.*
diff --git a/Makefile.am b/Makefile.am
index 31cb6e3a..05613bbd 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -33,17 +33,21 @@ VMLINUZ = vmlinuz.$(REPO).$(host_cpu)
fs_DATA = $(INITRAMFSIMG) $(VMLINUZ)
-$(VMLINUZ) $(INITRAMFSIMG): initramfs.timestamp
+$(INITRAMFSIMG) $(VMLINUZ): initramfs/fakeroot.log
-#initramfs.timestamp: make-initramfs.sh.in daemon/guestfsd
-initramfs.timestamp: make-initramfs.sh.in
+initramfs/fakeroot.log: make-initramfs.sh.in
+ -mv $(INITRAMFSIMG) $(INITRAMFSIMG).bak
+ -mv $(VMLINUZ) $(VMLINUZ).bak
+ bash $(builddir)/make-initramfs.sh || rm -f $@
+
+$(INITRAMFSIMG): initramfs/fakeroot.log daemon/guestfsd
rm -f $@
- bash $(builddir)/make-initramfs.sh
+ bash $(builddir)/update-initramfs.sh
touch $@
# Make clean.
-CLEANFILES = $(fs_DATA) initramfs.timestamp emptydisk
+CLEANFILES = $(fs_DATA) emptydisk
clean-local:
rm -rf initramfs
diff --git a/configure.ac b/configure.ac
index 03bdb9e7..69a55f2e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -91,7 +91,8 @@ AC_CONFIG_SUBDIRS([daemon])
dnl Produce output files.
AC_CONFIG_HEADERS([config.h])
-AC_CONFIG_FILES([Makefile src/Makefile examples/Makefile make-initramfs.sh])
+AC_CONFIG_FILES([Makefile src/Makefile examples/Makefile
+ make-initramfs.sh update-initramfs.sh])
AC_OUTPUT
dnl WTF?
diff --git a/make-initramfs.sh.in b/make-initramfs.sh.in
index 0812edbe..aaaa92ef 100755
--- a/make-initramfs.sh.in
+++ b/make-initramfs.sh.in
@@ -34,7 +34,8 @@ fi
# Decide on names for the final output. These have to match Makefile.am.
output=initramfs.@REPO@.@host_cpu@.img
koutput=vmlinuz.@REPO@.@host_cpu@
-rm -f $output $koutput
+rm -f $output
+rm -f $koutput
# Create the basic initramfs.
@FEBOOTSTRAP@ $modules @REPO@ initramfs @MIRROR@
@@ -47,7 +48,7 @@ find initramfs -name '*python*' -print0 | xargs -0 rm -rf
# Modules take up nearly half of the image. It's a rough guess that
# we don't need any drivers (which take up most of the space).
# (We need to keep kernel/net/sunrpc for NFS)
-rm -rf initramfs/lib/modules/*/kernel/{drivers,sound}
+#rm -rf initramfs/lib/modules/*/kernel/{drivers,sound}
rm -rf initramfs/lib/modules/*/kernel/arch/x86/kvm
# Pull the kernel out into the current directory. We don't want it in
@@ -73,9 +74,6 @@ if [ ! -f initramfs/etc/fstab ]; then
@FEBOOTSTRAP_RUN@ initramfs -- touch /etc/fstab
fi
-# Copy the daemon into the filesystem.
-#cp daemon/guestfsd initramfs/sbin
-
# Create the init script.
cat > initramfs/init.new <<'__EOF__'
#!/bin/sh
@@ -105,6 +103,12 @@ fi
@FEBOOTSTRAP_RUN@ initramfs -- install -m 0755 -o root -g root /init.new /init
rm initramfs/init.new
+# Copy the daemon into the filesystem.
+cp @abs_builddir@/daemon/guestfsd initramfs/sbin/guestfsd.new
+@FEBOOTSTRAP_RUN@ initramfs -- \
+ install -m 0755 -o root -g root /sbin/guestfsd.new /sbin/guestfsd
+rm initramfs/sbin/guestfsd.new
+
# Generate final image.
@FEBOOTSTRAP_TO_INITRAMFS@ initramfs > $output-t
mv $output-t $output
diff --git a/update-initramfs.sh.in b/update-initramfs.sh.in
new file mode 100755
index 00000000..89f629c4
--- /dev/null
+++ b/update-initramfs.sh.in
@@ -0,0 +1,35 @@
+#!/bin/bash -
+# @configure_input@
+# Copyright (C) 2009 Red Hat Inc.
+#
+# 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; either version 2 of the License, or
+# (at your option) any later version.
+#
+# 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# Update the daemon inside an existing initramfs. Avoids the
+# timeconsuming rebuild.
+
+set -e
+
+output=initramfs.@REPO@.@host_cpu@.img
+
+# Copy the daemon into the filesystem.
+cp @abs_builddir@/daemon/guestfsd initramfs/sbin/guestfsd.new
+@FEBOOTSTRAP_RUN@ initramfs -- \
+ install -m 0755 -o root -g root /sbin/guestfsd.new /sbin/guestfsd
+rm initramfs/sbin/guestfsd.new
+
+# Generate final image.
+@FEBOOTSTRAP_TO_INITRAMFS@ initramfs > $output-t
+mv $output-t $output
+ls -lh $output