[ostree] Add --with-dracut
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] Add --with-dracut
- Date: Mon, 3 Jun 2013 23:36:17 +0000 (UTC)
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]