From 510aecdbd8e18beedaf34205f63bbf0d6596f80a Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 7 Mar 2013 10:19:25 +0100 Subject: [PATCH] systemd: add missing dracut-mount.sh dracut-pre-mount.sh dracut.target --- modules.d/98systemd/dracut-mount.sh | 41 +++++++++++++++++++++++++++++++++ modules.d/98systemd/dracut-pre-mount.sh | 22 ++++++++++++++++++ modules.d/98systemd/dracut.target | 11 +++++++++ 3 files changed, 74 insertions(+) create mode 100755 modules.d/98systemd/dracut-mount.sh create mode 100755 modules.d/98systemd/dracut-pre-mount.sh create mode 100644 modules.d/98systemd/dracut.target diff --git a/modules.d/98systemd/dracut-mount.sh b/modules.d/98systemd/dracut-mount.sh new file mode 100755 index 0000000..6cb4519 --- /dev/null +++ b/modules.d/98systemd/dracut-mount.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh +export DRACUT_SYSTEMD=1 +if [ -f /dracut-state.sh ]; then + . /dracut-state.sh 2>/dev/null +fi +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + +source_conf /etc/conf.d + +make_trace_mem "hook mount" '1:shortmem' '2+:mem' '3+:slab' + +getarg 'rd.break=mount' -d 'rdbreak=mount' && emergency_shell -n mount "Break mount" +# mount scripts actually try to mount the root filesystem, and may +# be sourced any number of times. As soon as one suceeds, no more are sourced. +i=0 +while :; do + if ismounted "$NEWROOT"; then + usable_root "$NEWROOT" && break; + umount "$NEWROOT" + fi + for f in $hookdir/mount/*.sh; do + [ -f "$f" ] && . "$f" + if ismounted "$NEWROOT"; then + usable_root "$NEWROOT" && break; + warn "$NEWROOT has no proper rootfs layout, ignoring and removing offending mount hook" + umount "$NEWROOT" + rm -f "$f" + fi + done + + i=$(($i+1)) + [ $i -gt 20 ] && emergency_shell "Can't mount root filesystem" +done + +export -p > /dracut-state.sh + +service="${0##*/}" +cp "/etc/systemd/system/${service%.sh}.service" /run/systemd/system/ +exit 0 diff --git a/modules.d/98systemd/dracut-pre-mount.sh b/modules.d/98systemd/dracut-pre-mount.sh new file mode 100755 index 0000000..cc2aa43 --- /dev/null +++ b/modules.d/98systemd/dracut-pre-mount.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh +export DRACUT_SYSTEMD=1 +if [ -f /dracut-state.sh ]; then + . /dracut-state.sh 2>/dev/null +fi +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + +source_conf /etc/conf.d + +make_trace_mem "hook pre-mount" '1:shortmem' '2+:mem' '3+:slab' +# pre pivot scripts are sourced just before we doing cleanup and switch over +# to the new root. +getarg 'rd.break=pre-mount' 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount" +source_hook pre-mount + +export -p > /dracut-state.sh + +service="${0##*/}" +cp "/etc/systemd/system/${service%.sh}.service" /run/systemd/system/ +exit 0 diff --git a/modules.d/98systemd/dracut.target b/modules.d/98systemd/dracut.target new file mode 100644 index 0000000..08a22d2 --- /dev/null +++ b/modules.d/98systemd/dracut.target @@ -0,0 +1,11 @@ +[Unit] +Description=dracut +Requires=basic.target +Conflicts=rescue.service rescue.target +After=basic.target rescue.service rescue.target +AllowIsolate=yes +OnFailure=emergency.target +OnFailureIsolate=yes + +[Install] +Alias=default.target -- 2.7.4