[ostree] Add --with-dracut



commit 6496abacbdd93c813a3a5f8c4202537581c0280a
Author: Colin Walters <walters verbum org>
Date:   Mon Jun 3 14:12:40 2013 -0400

    Add --with-dracut
    
    This installs a Dracut module which parses the ostree= kernel command
    line argument, and if given, sets up the OS/ at /sysroot, which
    systemd's switch-root then moves into.  This only works if dracut is
    configured to use systemd itself.

 Makefile-dracut.am                     |   30 +++++++++++++++++++++++
 Makefile.am                            |    1 +
 configure.ac                           |    7 +++++
 src/dracut/module-setup.sh             |   41 ++++++++++++++++++++++++++++++++
 src/dracut/ostree-prepare-root.service |   32 +++++++++++++++++++++++++
 src/dracut/ostree.conf                 |   18 ++++++++++++++
 6 files changed, 129 insertions(+), 0 deletions(-)
---
diff --git a/Makefile-dracut.am b/Makefile-dracut.am
new file mode 100644
index 0000000..92a4895
--- /dev/null
+++ b/Makefile-dracut.am
@@ -0,0 +1,30 @@
+# Makefile for dracut module
+#
+# Copyright (C) 2013 Colin Walters <walters verbum org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+if BUILDOPT_DRACUT
+# Not using $(libdir) here is intentional, dracut modules go in prefix/lib
+dracutmoddir = $(prefix)/lib/dracut/modules.d/98ostree
+dracutmod_SCRIPTS = src/dracut/module-setup.sh
+dracutmod_DATA = src/dracut/ostree-prepare-root.service
+
+dracutconfdir = $(sysconfdir)/dracut.conf.d
+dracutconf_DATA = src/dracut/ostree.conf
+endif
+
+EXTRA_DIST += $(dracutmod_DATA) $(dracutmod_SCRIPTS)
diff --git a/Makefile.am b/Makefile.am
index 0ad12e4..722ac77 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -86,6 +86,7 @@ include Makefile-ostree.am
 include Makefile-switchroot.am
 include Makefile-triggers.am
 include Makefile-tests.am
+include Makefile-dracut.am
 
 
 #  Docbook generation copied from systemd/Makefile.am
diff --git a/configure.ac b/configure.ac
index 8acf7da..5e82221 100644
--- a/configure.ac
+++ b/configure.ac
@@ -146,6 +146,12 @@ AC_ARG_ENABLE(grub2-hook,
              enable_grub2_hook=${grub2_hook_default})
 AM_CONDITIONAL(ENABLE_GRUB2_HOOK, test $enable_grub2_hook != no)
 
+AC_ARG_WITH(dracut,
+            AS_HELP_STRING([--with-dracut],
+                           [Install dracut module (default: no)]),,
+              [with_dracut=no])
+AM_CONDITIONAL(BUILDOPT_DRACUT, test x$with_dracut = xyes)
+
 AC_CONFIG_FILES([
 Makefile
 embedded-dependencies/Makefile
@@ -164,4 +170,5 @@ echo "
     documentation: $enable_documentation
     kernel updates integration: $enable_kernel_updates
     GRUB2 hook: $enable_grub2_hook
+    dracut: $with_dracut
 "
diff --git a/src/dracut/module-setup.sh b/src/dracut/module-setup.sh
new file mode 100755
index 0000000..b2af772
--- /dev/null
+++ b/src/dracut/module-setup.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+#
+# Copyright (C) 2013 Colin Walters <walters verbum org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+check() {
+    if [[ -x $systemdutildir/systemd ]] && [[ -x /usr/sbin/ostree-prepare-root ]]; then
+       return 255
+    fi
+
+    return 1
+}
+
+depends() {
+    return 0
+}
+
+install() {
+    dracut_install ostree-prepare-root
+    inst_simple "$moddir/ostree-prepare-root.service" "${systemdsystemunitdir}/ostree-prepare-root.service"
+    mkdir -p "${initdir}${systemdsystemconfdir}/initrd-switch-root.target.wants"
+    ln_r "${systemdsystemunitdir}/ostree-prepare-root.service" \
+        "${systemdsystemconfdir}/initrd-switch-root.target.wants/ostree-prepare-root.service"
+}
+
diff --git a/src/dracut/ostree-prepare-root.service b/src/dracut/ostree-prepare-root.service
new file mode 100644
index 0000000..230c856
--- /dev/null
+++ b/src/dracut/ostree-prepare-root.service
@@ -0,0 +1,32 @@
+# Copyright (C) 2013 Colin Walters <walters verbum org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+[Unit]
+Description=OSTree Prepare OS/
+DefaultDependencies=no
+ConditionKernelCommandLine=ostree
+ConditionPathExists=/etc/initrd-release
+OnFailure=emergency.service
+After=initrd-switch-root.target
+Before=initrd-switch-root.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/ostree-prepare-root /sysroot
+StandardInput=null
+StandardOutput=syslog
+StandardError=syslog+console
diff --git a/src/dracut/ostree.conf b/src/dracut/ostree.conf
new file mode 100755
index 0000000..3d86ec4
--- /dev/null
+++ b/src/dracut/ostree.conf
@@ -0,0 +1,18 @@
+# Copyright (C) 2013 Colin Walters <walters verbum org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+add_dracutmodules+="ostree"


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]