dracut-022-63.git20120727

- fixed dracut-install bug if /var/tmp contains a symlink
- fixed some partx issues
This commit is contained in:
Harald Hoyer 2012-07-27 06:28:40 +02:00
parent 762076093e
commit 12f6cc01aa
59 changed files with 4193 additions and 1 deletions

View File

@ -0,0 +1,423 @@
From 13f77e9fd53682202bbd32faf8f9e55e0b99fec2 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 23 Jul 2012 11:10:13 +0200
Subject: [PATCH] add documentation for systemd services in the initramfs
---
Makefile | 52 +++++++++++++---------
dracut.spec | 1 +
modules.d/98systemd/dracut-cmdline.service | 1 +
modules.d/98systemd/dracut-cmdline.service.8.asc | 26 +++++++++++
modules.d/98systemd/dracut-initqueue.service | 1 +
modules.d/98systemd/dracut-initqueue.service.8.asc | 25 +++++++++++
modules.d/98systemd/dracut-pre-pivot.service | 1 +
modules.d/98systemd/dracut-pre-pivot.service.8.asc | 25 +++++++++++
modules.d/98systemd/dracut-pre-trigger.service | 1 +
.../98systemd/dracut-pre-trigger.service.8.asc | 25 +++++++++++
modules.d/98systemd/dracut-pre-udev.service | 1 +
modules.d/98systemd/dracut-pre-udev.service.8.asc | 25 +++++++++++
modules.d/98systemd/initrd-switch-root.service | 1 +
.../98systemd/initrd-switch-root.service.8.asc | 25 +++++++++++
modules.d/98systemd/udevadm-cleanup-db.service | 1 +
.../98systemd/udevadm-cleanup-db.service.8.asc | 25 +++++++++++
16 files changed, 215 insertions(+), 21 deletions(-)
create mode 100644 modules.d/98systemd/dracut-cmdline.service.8.asc
create mode 100644 modules.d/98systemd/dracut-initqueue.service.8.asc
create mode 100644 modules.d/98systemd/dracut-pre-pivot.service.8.asc
create mode 100644 modules.d/98systemd/dracut-pre-trigger.service.8.asc
create mode 100644 modules.d/98systemd/dracut-pre-udev.service.8.asc
create mode 100644 modules.d/98systemd/initrd-switch-root.service.8.asc
create mode 100644 modules.d/98systemd/udevadm-cleanup-db.service.8.asc
diff --git a/Makefile b/Makefile
index 0b29161..548952d 100644
--- a/Makefile
+++ b/Makefile
@@ -9,28 +9,41 @@ sysconfdir ?= ${prefix}/etc
bindir ?= ${prefix}/bin
mandir ?= ${prefix}/share/man
-manpages = dracut.8 \
- dracut.cmdline.7 \
- dracut.conf.5 \
- dracut-catimages.8 \
- lsinitrd.1 \
- mkinitrd.8
+man1pages = lsinitrd.1
+
+man5pages = dracut.conf.5
+
+man7pages = dracut.cmdline.7
+
+man8pages = dracut.8 \
+ dracut-catimages.8 \
+ mkinitrd.8 \
+ modules.d/98systemd/dracut-cmdline.service.8 \
+ modules.d/98systemd/dracut-initqueue.service.8 \
+ modules.d/98systemd/dracut-pre-pivot.service.8 \
+ modules.d/98systemd/dracut-pre-trigger.service.8 \
+ modules.d/98systemd/dracut-pre-udev.service.8 \
+ modules.d/98systemd/initrd-switch-root.service.8 \
+ modules.d/98systemd/udevadm-cleanup-db.service.8
+
+manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages)
+
.PHONY: install clean archive rpm testimage test all check AUTHORS doc
all: syncheck dracut-version.sh dracut-install
DRACUT_INSTALL_SOURCE = \
- install/dracut-install.c \
- install/hashmap.c\
- install/log.c \
- install/util.c
+ install/dracut-install.c \
+ install/hashmap.c\
+ install/log.c \
+ install/util.c
DRACUT_INSTALL_HEADER = \
- install/hashmap.h \
- install/log.h \
- install/macro.h \
- install/util.h
+ install/hashmap.h \
+ install/log.h \
+ install/macro.h \
+ install/util.h
dracut-install: $(DRACUT_INSTALL_SOURCE) $(DRACUT_INSTALL_HEADER)
gcc -std=gnu99 -O2 -g -Wall -o dracut-install $(DRACUT_INSTALL_SOURCE)
@@ -73,13 +86,10 @@ install: doc dracut-version.sh
install -m 0755 dracut-logger.sh $(DESTDIR)$(pkglibdir)/dracut-logger.sh
install -m 0755 dracut-initramfs-restore.sh $(DESTDIR)$(pkglibdir)/dracut-initramfs-restore
cp -arx modules.d $(DESTDIR)$(pkglibdir)
- install -m 0644 lsinitrd.1 $(DESTDIR)$(mandir)/man1/lsinitrd.1
- install -m 0644 mkinitrd.8 $(DESTDIR)$(mandir)/man8/mkinitrd.8
- install -m 0644 dracut.8 $(DESTDIR)$(mandir)/man8/dracut.8
- install -m 0644 dracut-catimages.8 \
- $(DESTDIR)$(mandir)/man8/dracut-catimages.8
- install -m 0644 dracut.conf.5 $(DESTDIR)$(mandir)/man5/dracut.conf.5
- install -m 0644 dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.cmdline.7
+ for i in $(man1pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man1/$${i##*/}; done
+ for i in $(man5pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man5/$${i##*/}; done
+ for i in $(man7pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man7/$${i##*/}; done
+ for i in $(man8pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man8/$${i##*/}; done
ln -s dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.kernel.7
if [ -n "$(systemdsystemunitdir)" ]; then \
mkdir -p $(DESTDIR)$(systemdsystemunitdir); \
diff --git a/dracut.spec b/dracut.spec
index 25e48a2..9a93e57 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -258,6 +258,7 @@ rm -rf $RPM_BUILD_ROOT
%endif
%dir /etc/dracut.conf.d
%{_mandir}/man8/dracut.8*
+%{_mandir}/man8/*service.8*
%if 0%{?fedora} > 12 || 0%{?rhel} >= 6 || 0%{?suse_version} > 9999
%{_mandir}/man8/mkinitrd.8*
%{_mandir}/man1/lsinitrd.1*
diff --git a/modules.d/98systemd/dracut-cmdline.service b/modules.d/98systemd/dracut-cmdline.service
index 1ed50a9..5073dbd 100644
--- a/modules.d/98systemd/dracut-cmdline.service
+++ b/modules.d/98systemd/dracut-cmdline.service
@@ -9,6 +9,7 @@
[Unit]
Description=Dracut cmdline hook
+Documentation=man:dracut-cmdline.service(8)
DefaultDependencies=no
Before=dracut-pre-udev.service
After=systemd-journald.socket
diff --git a/modules.d/98systemd/dracut-cmdline.service.8.asc b/modules.d/98systemd/dracut-cmdline.service.8.asc
new file mode 100644
index 0000000..eaed6aa
--- /dev/null
+++ b/modules.d/98systemd/dracut-cmdline.service.8.asc
@@ -0,0 +1,26 @@
+DRACUT-CMDLINE.SERVICE(8)
+=========================
+:doctype: manpage
+:man source: dracut
+:man manual: dracut
+
+NAME
+----
+dracut-cmdline.service - runs the dracut hooks to parse the kernel command line
+
+SYNOPSIS
+--------
+dracut-cmdline.service
+
+DESCRIPTION
+-----------
+This service runs all the dracut hooks to parse the kernel command line in
+the initramfs.
+
+AUTHORS
+-------
+Harald Hoyer
+
+SEE ALSO
+--------
+*dracut*(8)
diff --git a/modules.d/98systemd/dracut-initqueue.service b/modules.d/98systemd/dracut-initqueue.service
index e611e93..f43aa21 100644
--- a/modules.d/98systemd/dracut-initqueue.service
+++ b/modules.d/98systemd/dracut-initqueue.service
@@ -9,6 +9,7 @@
[Unit]
Description=Dracut initqueue hook
+Documentation=man:dracut-initqueue.service(8)
DefaultDependencies=no
After=systemd-udev-trigger.service
Wants=systemd-udev-trigger.service
diff --git a/modules.d/98systemd/dracut-initqueue.service.8.asc b/modules.d/98systemd/dracut-initqueue.service.8.asc
new file mode 100644
index 0000000..d405d04
--- /dev/null
+++ b/modules.d/98systemd/dracut-initqueue.service.8.asc
@@ -0,0 +1,25 @@
+DRACUT-INITQUEUE.SERVICE(8)
+===========================
+:doctype: manpage
+:man source: dracut
+:man manual: dracut
+
+NAME
+----
+dracut-initqueue.service - runs the dracut main loop to find the real root
+
+SYNOPSIS
+--------
+dracut-initqueue.service
+
+DESCRIPTION
+-----------
+This service runs all the main loop of dracut in the initramfs to find the real root.
+
+AUTHORS
+-------
+Harald Hoyer
+
+SEE ALSO
+--------
+*dracut*(8)
diff --git a/modules.d/98systemd/dracut-pre-pivot.service b/modules.d/98systemd/dracut-pre-pivot.service
index 317b476..25ef697 100644
--- a/modules.d/98systemd/dracut-pre-pivot.service
+++ b/modules.d/98systemd/dracut-pre-pivot.service
@@ -9,6 +9,7 @@
[Unit]
Description=Dracut pre-pivot and cleanup hook
+Documentation=man:dracut-pre-pivot.service(8)
DefaultDependencies=no
After=dracut-initqueue.service
ConditionPathExists=/etc/initrd-release
diff --git a/modules.d/98systemd/dracut-pre-pivot.service.8.asc b/modules.d/98systemd/dracut-pre-pivot.service.8.asc
new file mode 100644
index 0000000..2e19a6e
--- /dev/null
+++ b/modules.d/98systemd/dracut-pre-pivot.service.8.asc
@@ -0,0 +1,25 @@
+DRACUT-PRE-PIVOT.SERVICE(8)
+===========================
+:doctype: manpage
+:man source: dracut
+:man manual: dracut
+
+NAME
+----
+dracut-pre-pivot.service - runs the dracut hooks before switching root
+
+SYNOPSIS
+--------
+dracut-pre-pivot.service
+
+DESCRIPTION
+-----------
+This service runs all dracut hooks before the system switched to the real root.
+
+AUTHORS
+-------
+Harald Hoyer
+
+SEE ALSO
+--------
+*dracut*(8)
diff --git a/modules.d/98systemd/dracut-pre-trigger.service b/modules.d/98systemd/dracut-pre-trigger.service
index b2dcf68..468249b 100644
--- a/modules.d/98systemd/dracut-pre-trigger.service
+++ b/modules.d/98systemd/dracut-pre-trigger.service
@@ -9,6 +9,7 @@
[Unit]
Description=Dracut pre-trigger hook
+Documentation=man:dracut-pre-trigger.service(8)
DefaultDependencies=no
Before=systemd-udev-trigger.service dracut-initqueue.service
After=dracut-pre-udev.service systemd-udevd.service
diff --git a/modules.d/98systemd/dracut-pre-trigger.service.8.asc b/modules.d/98systemd/dracut-pre-trigger.service.8.asc
new file mode 100644
index 0000000..7a856a9
--- /dev/null
+++ b/modules.d/98systemd/dracut-pre-trigger.service.8.asc
@@ -0,0 +1,25 @@
+DRACUT-PRE-TRIGGER.SERVICE(8)
+=============================
+:doctype: manpage
+:man source: dracut
+:man manual: dracut
+
+NAME
+----
+dracut-pre-trigger.service - runs the dracut hooks before udevd is triggered
+
+SYNOPSIS
+--------
+dracut-pre-trigger.service
+
+DESCRIPTION
+-----------
+This service runs all dracut hooks before udevd is triggered in the initramfs.
+
+AUTHORS
+-------
+Harald Hoyer
+
+SEE ALSO
+--------
+*dracut*(8)
diff --git a/modules.d/98systemd/dracut-pre-udev.service b/modules.d/98systemd/dracut-pre-udev.service
index cc14f88..bedcf84 100644
--- a/modules.d/98systemd/dracut-pre-udev.service
+++ b/modules.d/98systemd/dracut-pre-udev.service
@@ -9,6 +9,7 @@
[Unit]
Description=Dracut pre-udev hook
+Documentation=man:dracut-pre-udev.service(8)
DefaultDependencies=no
Before=systemd-udevd.service dracut-pre-trigger.service
After=dracut-cmdline.service
diff --git a/modules.d/98systemd/dracut-pre-udev.service.8.asc b/modules.d/98systemd/dracut-pre-udev.service.8.asc
new file mode 100644
index 0000000..2126d46
--- /dev/null
+++ b/modules.d/98systemd/dracut-pre-udev.service.8.asc
@@ -0,0 +1,25 @@
+DRACUT-PRE-UDEV.SERVICE(8)
+==========================
+:doctype: manpage
+:man source: dracut
+:man manual: dracut
+
+NAME
+----
+dracut-pre-udev.service - runs the dracut hooks before udevd is started
+
+SYNOPSIS
+--------
+dracut-pre-udev.service
+
+DESCRIPTION
+-----------
+This service runs all dracut hooks before udevd is started in the initramfs.
+
+AUTHORS
+-------
+Harald Hoyer
+
+SEE ALSO
+--------
+*dracut*(8)
diff --git a/modules.d/98systemd/initrd-switch-root.service b/modules.d/98systemd/initrd-switch-root.service
index b443eab..bd9fb31 100644
--- a/modules.d/98systemd/initrd-switch-root.service
+++ b/modules.d/98systemd/initrd-switch-root.service
@@ -7,6 +7,7 @@
[Unit]
Description=Switch Root
+Documentation=man:initrd-switch-root.service(8)
DefaultDependencies=no
ConditionPathExists=/etc/initrd-release
OnFailure=emergency.service
diff --git a/modules.d/98systemd/initrd-switch-root.service.8.asc b/modules.d/98systemd/initrd-switch-root.service.8.asc
new file mode 100644
index 0000000..73d5c91
--- /dev/null
+++ b/modules.d/98systemd/initrd-switch-root.service.8.asc
@@ -0,0 +1,25 @@
+INITRD-SWITCH-ROOT.SERVICE(8)
+=============================
+:doctype: manpage
+:man source: dracut
+:man manual: dracut
+
+NAME
+----
+initrd-switch-root.service - switches root to the real root
+
+SYNOPSIS
+--------
+initrd-switch-root.service
+
+DESCRIPTION
+-----------
+This service triggers systemd to switch root from the initramfs to the real root.
+
+AUTHORS
+-------
+Harald Hoyer
+
+SEE ALSO
+--------
+*dracut*(8)
diff --git a/modules.d/98systemd/udevadm-cleanup-db.service b/modules.d/98systemd/udevadm-cleanup-db.service
index 7e47946..fba032a 100644
--- a/modules.d/98systemd/udevadm-cleanup-db.service
+++ b/modules.d/98systemd/udevadm-cleanup-db.service
@@ -7,6 +7,7 @@
[Unit]
Description=Cleanup udevd DB
+Documentation=man:udevadm-cleanup-db.service(8)
DefaultDependencies=no
ConditionPathExists=/etc/initrd-release
Conflicts=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket
diff --git a/modules.d/98systemd/udevadm-cleanup-db.service.8.asc b/modules.d/98systemd/udevadm-cleanup-db.service.8.asc
new file mode 100644
index 0000000..7837127
--- /dev/null
+++ b/modules.d/98systemd/udevadm-cleanup-db.service.8.asc
@@ -0,0 +1,25 @@
+UDEVADM-CLEANUP-DB.SERVICE(8)
+=============================
+:doctype: manpage
+:man source: dracut
+:man manual: dracut
+
+NAME
+----
+udevadm-cleanup-db.service - clean up the udev database
+
+SYNOPSIS
+--------
+udevadm-cleanup-db.service
+
+DESCRIPTION
+-----------
+Cleans up the udev database for later import in the real root by calling "udevadm info --cleanup-db".
+
+AUTHORS
+-------
+Harald Hoyer
+
+SEE ALSO
+--------
+*dracut*(8)

View File

@ -0,0 +1,27 @@
From b7c8f59fef3a2a36726f5ea988b74ba6bf1da695 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 23 Jul 2012 11:38:36 +0200
Subject: [PATCH] kernel-modules/module-setup.sh: fix modprobe.d install
if /lib/modprobe.d does not exist, it errors with:
find: `/lib/modprobe.d/': No such file or directory
---
modules.d/90kernel-modules/module-setup.sh | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
index f309de8..5391ed7 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -77,7 +77,10 @@ installkernel() {
install() {
local _f i
[ -f /etc/modprobe.conf ] && dracut_install /etc/modprobe.conf
- dracut_install $(find -L /{etc,lib}/modprobe.d/ -maxdepth 1 -type f -name '*.conf')
+ set -- /{etc,lib}/modprobe.d/*.conf
+ if [[ -f $1 ]]; then
+ dracut_install "$@"
+ fi
inst_hook cmdline 01 "$moddir/parse-kernel.sh"
inst_simple "$moddir/insmodpost.sh" /sbin/insmodpost.sh
}

View File

@ -0,0 +1,20 @@
From 5297d4f5b2167d26fee368d8014bd72ed93538a4 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 23 Jul 2012 15:36:58 +0200
Subject: [PATCH] lvm/lvm_scan.sh: udevadm settle after lvm scan
---
modules.d/90lvm/lvm_scan.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/modules.d/90lvm/lvm_scan.sh b/modules.d/90lvm/lvm_scan.sh
index 17c29bc..d86be9b 100755
--- a/modules.d/90lvm/lvm_scan.sh
+++ b/modules.d/90lvm/lvm_scan.sh
@@ -129,4 +129,6 @@ if [ "$lvmwritten" ]; then
fi
unset lvmwritten
+udevadm settle
+
need_shutdown

View File

@ -0,0 +1,26 @@
From 3e624cd9dc33f842a33a7152d613866569256df4 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 23 Jul 2012 15:40:20 +0200
Subject: [PATCH] kernel-modules/module-setup.sh: just optionally install all
modprobe.d
---
modules.d/90kernel-modules/module-setup.sh | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
index 5391ed7..1632367 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -77,10 +77,7 @@ installkernel() {
install() {
local _f i
[ -f /etc/modprobe.conf ] && dracut_install /etc/modprobe.conf
- set -- /{etc,lib}/modprobe.d/*.conf
- if [[ -f $1 ]]; then
- dracut_install "$@"
- fi
+ dracut_install -o /{etc,lib}/modprobe.d/*.conf
inst_hook cmdline 01 "$moddir/parse-kernel.sh"
inst_simple "$moddir/insmodpost.sh" /sbin/insmodpost.sh
}

View File

@ -0,0 +1,17 @@
From cef379bb0391356ecb9dd01a30e7af5bc8f19655 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 24 Jul 2012 11:52:28 +0200
Subject: [PATCH] i18n/10-console.rules: move console_init to the initqueue
---
modules.d/10i18n/10-console.rules | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/10i18n/10-console.rules b/modules.d/10i18n/10-console.rules
index 80ed090..385dff0 100644
--- a/modules.d/10i18n/10-console.rules
+++ b/modules.d/10i18n/10-console.rules
@@ -1,2 +1,2 @@
# Console initialization - keyboard, font, etc.
-KERNEL=="tty0", RUN+="/lib/udev/console_init $root/$name"
+KERNEL=="tty0", RUN+="/sbin/initqueue --unique --name console_init_$name /lib/udev/console_init $root/$name"

View File

@ -0,0 +1,22 @@
From f2271428d4760c7026dda9093c14fb1bf9035691 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 24 Jul 2012 14:08:32 +0200
Subject: [PATCH] dracut-functions.sh: small error print correction
---
dracut-functions.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 6358078..7f834f0 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -1135,7 +1135,7 @@ for_each_module_dir() {
for _mod in $_modcheck; do
strstr "$mods_to_load" "$_mod" && continue
strstr "$omit_dracutmodules" "$_mod" && continue
- derror "Dracut module \"$_mod\" cannot be found or installed."
+ derror "Dracut module '$_mod' cannot be found or installed."
done
}

View File

@ -0,0 +1,86 @@
From c072e131622f41ed90cf0d1510c96dd7cb0aad7a Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 24 Jul 2012 14:12:36 +0200
Subject: [PATCH] get rid of "basename"
---
dracut-functions.sh | 12 ++++++------
lsinitrd.sh | 2 +-
modules.d/95udev-rules/module-setup.sh | 2 +-
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 7f834f0..14c100d 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -710,12 +710,12 @@ inst_rule_programs() {
_bin=${udevdir}/$_prog
else
_bin=$(find_binary "$_prog") || {
- dinfo "Skipping program $_prog using in udev rule $(basename $1) as it cannot be found"
+ dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
continue;
}
fi
- #dinfo "Installing $_bin due to it's use in the udev rule $(basename $1)"
+ #dinfo "Installing $_bin due to it's use in the udev rule $(${1##*/})"
dracut_install "$_bin"
done
fi
@@ -725,12 +725,12 @@ inst_rule_programs() {
_bin=${udevdir}/$_prog
else
_bin=$(find_binary "$_prog") || {
- dinfo "Skipping program $_prog using in udev rule $(basename $1) as it cannot be found"
+ dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
continue;
}
fi
- #dinfo "Installing $_bin due to it's use in the udev rule $(basename $1)"
+ #dinfo "Installing $_bin due to it's use in the udev rule $(${1##*/})"
dracut_install "$_bin"
done
fi
@@ -740,12 +740,12 @@ inst_rule_programs() {
_bin=${udevdir}/$_prog
else
_bin=$(find_binary "$_prog") || {
- dinfo "Skipping program $_prog using in udev rule $(basename $1) as it cannot be found"
+ dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
continue;
}
fi
- #dinfo "Installing $_bin due to it's use in the udev rule $(basename $1)"
+ #dinfo "Installing $_bin due to it's use in the udev rule $(${1##*/})"
dracut_install "$_bin"
done
fi
diff --git a/lsinitrd.sh b/lsinitrd.sh
index a844932..3d6084d 100755
--- a/lsinitrd.sh
+++ b/lsinitrd.sh
@@ -21,7 +21,7 @@
usage()
{
- echo "Usage: $(basename $0) [-s] [<initramfs file> [<filename>]]"
+ echo "Usage: $(${0##*/}) [-s] [<initramfs file> [<filename>]]"
}
[[ $# -le 2 ]] || { usage ; exit 1 ; }
diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
index 90d4336..2e3c955 100755
--- a/modules.d/95udev-rules/module-setup.sh
+++ b/modules.d/95udev-rules/module-setup.sh
@@ -8,7 +8,7 @@ install() {
# Fixme: would be nice if we didn't have to know which rules to grab....
# ultimately, /lib/initramfs/rules.d or somesuch which includes links/copies
# of the rules we want so that we just copy those in would be best
- dracut_install udevadm cat uname basename blkid \
+ dracut_install udevadm cat uname blkid \
/etc/udev/udev.conf /etc/group
[ -d ${initdir}/lib/systemd ] || mkdir -p ${initdir}/lib/systemd

View File

@ -0,0 +1,28 @@
From 3e9b4330a98687fe8b1f50c122bb30c42c4413ae Mon Sep 17 00:00:00 2001
From: Leho Kraav <leho@kraav.com>
Date: Tue, 24 Jul 2012 15:08:51 +0300
Subject: [PATCH] 90crypt: recognize .img as loop key container
---
modules.d/90crypt/crypt-lib.sh | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/modules.d/90crypt/crypt-lib.sh b/modules.d/90crypt/crypt-lib.sh
index 5d0b272..3aed84d 100755
--- a/modules.d/90crypt/crypt-lib.sh
+++ b/modules.d/90crypt/crypt-lib.sh
@@ -177,6 +177,14 @@ readkey() {
die "No GPG support to decrypt '$keypath' on '$keydev'."
fi
;;
+ img)
+ if [ -f /lib/dracut-crypt-loop-lib.sh ]; then
+ . /lib/dracut-crypt-loop-lib.sh
+ loop_decrypt "$mntp" "$keypath" "$keydev" "$device"
+ else
+ die "No loop file support to decrypt '$keypath' on '$keydev'."
+ fi
+ ;;
*) cat "$mntp/$keypath" ;;
esac

View File

@ -0,0 +1,46 @@
From c5758f20902b37e3232cd6a1b79f914155457ffd Mon Sep 17 00:00:00 2001
From: Leho Kraav <leho@kraav.com>
Date: Tue, 24 Jul 2012 15:08:52 +0300
Subject: [PATCH] 90crypt: enhance crypt-lib keydev mounting
Combining $keydev and $keypath should result in a unique, re-usable keydev
mountpoint. mkuniqdir doesn't seem to have any an advantage here and lacks
reusability. Is there ever a use case where these are true:
* there are more than one rd.luks.key=$keypath:$keydev
* one is actually different from the other
---
modules.d/90crypt/crypt-lib.sh | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/modules.d/90crypt/crypt-lib.sh b/modules.d/90crypt/crypt-lib.sh
index 3aed84d..5f7567e 100755
--- a/modules.d/90crypt/crypt-lib.sh
+++ b/modules.d/90crypt/crypt-lib.sh
@@ -165,8 +165,15 @@ readkey() {
local keydev="$2"
local device="$3"
- local mntp=$(mkuniqdir /mnt keydev)
- mount -r "$keydev" "$mntp" || die 'Mounting rem. dev. failed!'
+ # This creates a unique single mountpoint for *, or several for explicitly
+ # given LUKS devices. It accomplishes unlocking multiple LUKS devices with
+ # a single password entry.
+ local mntp="/mnt/$(str_replace "keydev-$keydev-$keypath" '/' '-')"
+
+ if [ ! -d "$mntp" ]; then
+ mkdir "$mntp"
+ mount -r "$keydev" "$mntp" || die 'Mounting rem. dev. failed!'
+ fi
case "${keypath##*.}" in
gpg)
@@ -188,6 +195,8 @@ readkey() {
*) cat "$mntp/$keypath" ;;
esac
+ # General unmounting mechanism, modules doing custom cleanup should return earlier
+ # and install a pre-pivot cleanup hook
umount "$mntp"
rmdir "$mntp"
}

View File

@ -0,0 +1,79 @@
From f855f9daafe8f5f53c5bf78188587a18e9aca142 Mon Sep 17 00:00:00 2001
From: Leho Kraav <leho@kraav.com>
Date: Tue, 24 Jul 2012 15:08:53 +0300
Subject: [PATCH] 91crypt-loop: open root device with a key inside encrypted
loop container
---
modules.d/91crypt-loop/crypt-loop-lib.sh | 40 ++++++++++++++++++++++++++++++++
modules.d/91crypt-loop/module-setup.sh | 14 +++++++++++
2 files changed, 54 insertions(+)
create mode 100644 modules.d/91crypt-loop/crypt-loop-lib.sh
create mode 100644 modules.d/91crypt-loop/module-setup.sh
diff --git a/modules.d/91crypt-loop/crypt-loop-lib.sh b/modules.d/91crypt-loop/crypt-loop-lib.sh
new file mode 100644
index 0000000..63a553c
--- /dev/null
+++ b/modules.d/91crypt-loop/crypt-loop-lib.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=4 sw=4 sts=0 et filetype=sh
+
+command -v ask_for_password >/dev/null || . /lib/dracut-crypt-lib.sh
+
+# loop_decrypt mnt_point keypath keydev device
+#
+# Decrypts symmetrically encrypted key to standard output.
+#
+# mnt_point - mount point where <keydev> is already mounted
+# keypath - LUKS encrypted loop file path relative to <mnt_point>
+# keydev - device on which key resides; only to display in prompt
+# device - device to be opened by cryptsetup; only to display in prompt
+loop_decrypt() {
+ local mntp="$1"
+ local keypath="$2"
+ local keydev="$3"
+ local device="$4"
+
+ local key="/dev/mapper/$(basename $mntp)"
+
+ if [ ! -b $key ]; then
+ info "Keyfile has .img suffix, treating it as LUKS-encrypted loop keyfile container to unlock $device"
+
+ local loopdev=$(losetup -f "${mntp}/${keypath}" --show)
+ local opts="-d - luksOpen $loopdev $(basename $key)"
+
+ ask_for_password \
+ --cmd "cryptsetup $opts" \
+ --prompt "Password ($keypath on $keydev for $device)" \
+ --tty-echo-off
+
+ [ -b $key ] || die "Tried setting it up, but keyfile block device was still not found!"
+ else
+ info "Existing keyfile found, re-using it for $device"
+ fi
+
+ cat $key
+}
diff --git a/modules.d/91crypt-loop/module-setup.sh b/modules.d/91crypt-loop/module-setup.sh
new file mode 100644
index 0000000..8170694
--- /dev/null
+++ b/modules.d/91crypt-loop/module-setup.sh
@@ -0,0 +1,14 @@
+check() {
+ type -P losetup >/dev/null || return 1
+
+ return 255
+}
+
+depends() {
+ echo crypt
+}
+
+install() {
+ dracut_install losetup
+ inst "$moddir/crypt-loop-lib.sh" "/lib/dracut-crypt-loop-lib.sh"
+}

View File

@ -0,0 +1,40 @@
From df68781fca048de2f880be37ab9e1ede9bea5051 Mon Sep 17 00:00:00 2001
From: Leho Kraav <leho@kraav.com>
Date: Tue, 24 Jul 2012 15:08:54 +0300
Subject: [PATCH] 91crypt-loop: use initqueue for cleanup strategy
---
modules.d/90crypt/crypt-lib.sh | 3 +++
modules.d/91crypt-loop/crypt-loop-lib.sh | 5 +++++
2 files changed, 8 insertions(+)
diff --git a/modules.d/90crypt/crypt-lib.sh b/modules.d/90crypt/crypt-lib.sh
index 5f7567e..d5caa85 100755
--- a/modules.d/90crypt/crypt-lib.sh
+++ b/modules.d/90crypt/crypt-lib.sh
@@ -188,6 +188,9 @@ readkey() {
if [ -f /lib/dracut-crypt-loop-lib.sh ]; then
. /lib/dracut-crypt-loop-lib.sh
loop_decrypt "$mntp" "$keypath" "$keydev" "$device"
+ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-99-$(basename $mntp)" \
+ $(command -v umount) "$mntp; " $(command -v rmdir) "$mntp"
+ return 0
else
die "No loop file support to decrypt '$keypath' on '$keydev'."
fi
diff --git a/modules.d/91crypt-loop/crypt-loop-lib.sh b/modules.d/91crypt-loop/crypt-loop-lib.sh
index 63a553c..6774e7d 100644
--- a/modules.d/91crypt-loop/crypt-loop-lib.sh
+++ b/modules.d/91crypt-loop/crypt-loop-lib.sh
@@ -32,6 +32,11 @@ loop_decrypt() {
--tty-echo-off
[ -b $key ] || die "Tried setting it up, but keyfile block device was still not found!"
+
+ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-10-$(basename $key)" \
+ $(command -v cryptsetup) "luksClose $key"
+ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-20-$(basename $loopdev)" \
+ $(command -v losetup) "-d $loopdev"
else
info "Existing keyfile found, re-using it for $device"
fi

View File

@ -0,0 +1,55 @@
From e88e3b279784ca801996c5e32db8c3bc2df1ec29 Mon Sep 17 00:00:00 2001
From: Leho Kraav <leho@kraav.com>
Date: Tue, 24 Jul 2012 15:08:55 +0300
Subject: [PATCH] 91crypt-loop: replace basename calls with string matching
---
modules.d/90crypt/crypt-lib.sh | 2 +-
modules.d/91crypt-loop/crypt-loop-lib.sh | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/modules.d/90crypt/crypt-lib.sh b/modules.d/90crypt/crypt-lib.sh
index d5caa85..d66ba88 100755
--- a/modules.d/90crypt/crypt-lib.sh
+++ b/modules.d/90crypt/crypt-lib.sh
@@ -188,7 +188,7 @@ readkey() {
if [ -f /lib/dracut-crypt-loop-lib.sh ]; then
. /lib/dracut-crypt-loop-lib.sh
loop_decrypt "$mntp" "$keypath" "$keydev" "$device"
- initqueue --onetime --finished --unique --name "crypt-loop-cleanup-99-$(basename $mntp)" \
+ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-99-${mntp##*/}" \
$(command -v umount) "$mntp; " $(command -v rmdir) "$mntp"
return 0
else
diff --git a/modules.d/91crypt-loop/crypt-loop-lib.sh b/modules.d/91crypt-loop/crypt-loop-lib.sh
index 6774e7d..244b6ce 100644
--- a/modules.d/91crypt-loop/crypt-loop-lib.sh
+++ b/modules.d/91crypt-loop/crypt-loop-lib.sh
@@ -18,13 +18,13 @@ loop_decrypt() {
local keydev="$3"
local device="$4"
- local key="/dev/mapper/$(basename $mntp)"
+ local key="/dev/mapper/${mntp##*/}"
if [ ! -b $key ]; then
info "Keyfile has .img suffix, treating it as LUKS-encrypted loop keyfile container to unlock $device"
local loopdev=$(losetup -f "${mntp}/${keypath}" --show)
- local opts="-d - luksOpen $loopdev $(basename $key)"
+ local opts="-d - luksOpen $loopdev ${key##*/}"
ask_for_password \
--cmd "cryptsetup $opts" \
@@ -33,9 +33,9 @@ loop_decrypt() {
[ -b $key ] || die "Tried setting it up, but keyfile block device was still not found!"
- initqueue --onetime --finished --unique --name "crypt-loop-cleanup-10-$(basename $key)" \
+ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-10-${key##*/}" \
$(command -v cryptsetup) "luksClose $key"
- initqueue --onetime --finished --unique --name "crypt-loop-cleanup-20-$(basename $loopdev)" \
+ initqueue --onetime --finished --unique --name "crypt-loop-cleanup-20-${loopdev##*/}" \
$(command -v losetup) "-d $loopdev"
else
info "Existing keyfile found, re-using it for $device"

View File

@ -0,0 +1,784 @@
From 68e7661ca7625978f3a2b6f906d16a44043c4fbb Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 25 Jul 2012 10:32:42 +0200
Subject: [PATCH] deprecate old command line options
---
modules.d/10i18n/parse-i18n.sh | 8 ++---
modules.d/50gensplash/gensplash-pretrigger.sh | 2 +-
modules.d/50plymouth/plymouth-pretrigger.sh | 2 +-
modules.d/90crypt/crypt-cleanup.sh | 2 +-
modules.d/90crypt/cryptroot-ask.sh | 2 +-
modules.d/90crypt/parse-crypt.sh | 4 +--
modules.d/90dmraid/dmraid.sh | 2 +-
modules.d/90dmraid/parse-dm.sh | 6 ++--
modules.d/90dmsquash-live/dmsquash-live-root.sh | 14 ++++----
modules.d/90dmsquash-live/parse-dmsquash-live.sh | 2 +-
modules.d/90kernel-modules/insmodpost.sh | 2 +-
modules.d/90kernel-modules/parse-kernel.sh | 6 ++--
modules.d/90lvm/lvm_scan.sh | 8 ++---
modules.d/90lvm/parse-lvm.sh | 6 ++--
modules.d/90mdraid/parse-md.sh | 12 +++----
modules.d/95dasd/parse-dasd.sh | 2 +-
modules.d/95dasd_mod/parse-dasd-mod.sh | 2 +-
modules.d/95iscsi/iscsiroot.sh | 24 +++++++-------
modules.d/95nfs/parse-nfsroot.sh | 2 +-
modules.d/95rootfs-block/mount-root.sh | 2 +-
modules.d/95zfcp/parse-zfcp.sh | 4 +--
modules.d/95znet/parse-ccw.sh | 2 +-
modules.d/98syslog/parse-syslog-opts.sh | 6 ++--
modules.d/98systemd/dracut-cmdline.sh | 2 +-
modules.d/98systemd/dracut-initqueue.sh | 8 ++---
modules.d/98systemd/dracut-pre-pivot.sh | 2 +-
modules.d/98systemd/dracut-pre-trigger.sh | 4 +--
modules.d/99base/dracut-lib.sh | 42 ++++++++++++++++++++----
modules.d/99base/init.sh | 24 +++++++-------
modules.d/99base/mount-hook.sh | 2 +-
30 files changed, 117 insertions(+), 89 deletions(-)
diff --git a/modules.d/10i18n/parse-i18n.sh b/modules.d/10i18n/parse-i18n.sh
index b9bd5bb..5530136 100755
--- a/modules.d/10i18n/parse-i18n.sh
+++ b/modules.d/10i18n/parse-i18n.sh
@@ -19,10 +19,10 @@ inst_key_val() {
unset _value
}
-inst_key_val '' /etc/vconsole.conf KEYMAP vconsole.keymap KEYTABLE
-inst_key_val '' /etc/vconsole.conf FONT vconsole.font SYSFONT
-inst_key_val '' /etc/vconsole.conf FONT_MAP vconsole.font.map CONTRANS
-inst_key_val '' /etc/vconsole.conf FONT_UNIMAP vconsole.font.unimap UNIMAP
+inst_key_val '' /etc/vconsole.conf KEYMAP vconsole.keymap -d KEYTABLE
+inst_key_val '' /etc/vconsole.conf FONT vconsole.font -d SYSFONT
+inst_key_val '' /etc/vconsole.conf FONT_MAP vconsole.font.map -d CONTRANS
+inst_key_val '' /etc/vconsole.conf FONT_UNIMAP vconsole.font.unimap -d UNIMAP
inst_key_val 1 /etc/vconsole.conf UNICODE vconsole.unicode vconsole.font.unicode
inst_key_val '' /etc/vconsole.conf EXT_KEYMAP vconsole.keymap.ext
diff --git a/modules.d/50gensplash/gensplash-pretrigger.sh b/modules.d/50gensplash/gensplash-pretrigger.sh
index b697438..6b85bbf 100755
--- a/modules.d/50gensplash/gensplash-pretrigger.sh
+++ b/modules.d/50gensplash/gensplash-pretrigger.sh
@@ -2,7 +2,7 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if getargbool 1 rd.splash -n rd_NO_SPLASH; then
+if getargbool 1 rd.splash -d -n rd_NO_SPLASH; then
info "Starting Gentoo Splash"
[ -x /lib/udev/console_init ] && /lib/udev/console_init /dev/tty0
diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh
index 5cc9112..ddb8ddb 100755
--- a/modules.d/50plymouth/plymouth-pretrigger.sh
+++ b/modules.d/50plymouth/plymouth-pretrigger.sh
@@ -3,7 +3,7 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh
if [ -x /bin/plymouthd ]; then
- if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -n rd_NO_PLYMOUTH; then
+ if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -d -n rd_NO_PLYMOUTH; then
# first trigger graphics subsystem
udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1
# first trigger graphics and tty subsystem
diff --git a/modules.d/90crypt/crypt-cleanup.sh b/modules.d/90crypt/crypt-cleanup.sh
index e6beb83..04defde 100755
--- a/modules.d/90crypt/crypt-cleanup.sh
+++ b/modules.d/90crypt/crypt-cleanup.sh
@@ -4,7 +4,7 @@
# close everything which is not busy
rm -f /etc/udev/rules.d/70-luks.rules >/dev/null 2>&1
-if ! getarg rd.luks.uuid rd_LUKS_UUID >/dev/null 2>&1 && getargbool 1 rd.luks -n rd_NO_LUKS >/dev/null 2>&1; then
+if ! getarg rd.luks.uuid -d rd_LUKS_UUID >/dev/null 2>&1 && getargbool 1 rd.luks -d -n rd_NO_LUKS >/dev/null 2>&1; then
while true; do
local do_break="y"
for i in /dev/mapper/luks-*; do
diff --git a/modules.d/90crypt/cryptroot-ask.sh b/modules.d/90crypt/cryptroot-ask.sh
index d373a90..17955ec 100755
--- a/modules.d/90crypt/cryptroot-ask.sh
+++ b/modules.d/90crypt/cryptroot-ask.sh
@@ -36,7 +36,7 @@ fi
numtries=${3:-10}
# TODO: improve to support what cmdline does
-if [ -f /etc/crypttab ] && getargbool 1 rd.luks.crypttab -n rd_NO_CRYPTTAB; then
+if [ -f /etc/crypttab ] && getargbool 1 rd.luks.crypttab -d -n rd_NO_CRYPTTAB; then
while read name dev luksfile luksoptions; do
# ignore blank lines and comments
if [ -z "$name" -o "${name#\#}" != "$name" ]; then
diff --git a/modules.d/90crypt/parse-crypt.sh b/modules.d/90crypt/parse-crypt.sh
index f96b59a..a2b157f 100755
--- a/modules.d/90crypt/parse-crypt.sh
+++ b/modules.d/90crypt/parse-crypt.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if ! getargbool 1 rd.luks -n rd_NO_LUKS; then
+if ! getargbool 1 rd.luks -d -n rd_NO_LUKS; then
info "rd.luks=0: removing cryptoluks activation"
rm -f /etc/udev/rules.d/70-luks.rules
else
@@ -10,7 +10,7 @@ else
echo 'ACTION!="add|change", GOTO="luks_end"'
} > /etc/udev/rules.d/70-luks.rules.new
- LUKS=$(getargs rd.luks.uuid rd_LUKS_UUID)
+ LUKS=$(getargs rd.luks.uuid -d rd_LUKS_UUID)
tout=$(getarg rd.luks.key.tout)
if [ -n "$LUKS" ]; then
diff --git a/modules.d/90dmraid/dmraid.sh b/modules.d/90dmraid/dmraid.sh
index 574dc3b..e4f8799 100755
--- a/modules.d/90dmraid/dmraid.sh
+++ b/modules.d/90dmraid/dmraid.sh
@@ -4,7 +4,7 @@
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
-DM_RAIDS=$(getargs rd.dm.uuid rd_DM_UUID=)
+DM_RAIDS=$(getargs rd.dm.uuid -d rd_DM_UUID=)
DM_CLEANUP="no"
diff --git a/modules.d/90dmraid/parse-dm.sh b/modules.d/90dmraid/parse-dm.sh
index fe38d35..bc7ed42 100755
--- a/modules.d/90dmraid/parse-dm.sh
+++ b/modules.d/90dmraid/parse-dm.sh
@@ -2,17 +2,17 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# nodmraid for anaconda / rc.sysinit compatibility
-if ! getargbool 1 rd.dm -n rd_NO_DM || getarg nodmraid; then
+if ! getargbool 1 rd.dm -d -n rd_NO_DM || getarg "rd.dm=0" -d nodmraid; then
info "rd.dm=0: removing DM RAID activation"
udevproperty rd_NO_DM=1
fi
-if ! command -v mdadm >/dev/null || ! getargbool 1 rd.md.imsm -n rd_NO_MDIMSM || getarg noiswmd; then
+if ! command -v mdadm >/dev/null || ! getargbool 1 rd.md.imsm -d -n rd_NO_MDIMSM -n noiswmd; then
info "rd.md.imsm=0: no MD RAID for imsm/isw raids"
udevproperty rd_NO_MDIMSM=1
fi
-if ! command -v mdadm >/dev/null || ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF || getarg noddfmd; then
+if ! command -v mdadm >/dev/null || ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF -n noddfmd; then
info "rd.md.ddf=0: no MD RAID for SNIA ddf raids"
udevproperty rd_NO_MDDDF=1
fi
diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
index 08f2381..15f166b 100755
--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
+++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
@@ -6,7 +6,7 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
PATH=/usr/sbin:/usr/bin:/sbin:/bin
-if getargbool 0 rd.live.debug -y rdlivedebug; then
+if getargbool 0 rd.live.debug -n -y rdlivedebug; then
exec > /tmp/liveroot.$$.out
exec 2>> /tmp/liveroot.$$.out
set -x
@@ -17,19 +17,19 @@ livedev="$1"
# parse various live image specific options that make sense to be
# specified as their own things
-live_dir=$(getarg rd.live.dir live_dir)
+live_dir=$(getarg rd.live.dir -d live_dir)
[ -z "$live_dir" ] && live_dir="LiveOS"
-getargbool 0 rd.live.ram -y live_ram && live_ram="yes"
-getargbool 0 rd.live.overlay.reset -y reset_overlay && reset_overlay="yes"
-getargbool 0 rd.live.overlay.readonly -y readonly_overlay && readonly_overlay="--readonly" || readonly_overlay=""
-overlay=$(getarg rd.live.overlay overlay)
+getargbool 0 rd.live.ram -d -y live_ram && live_ram="yes"
+getargbool 0 rd.live.overlay.reset -d -y reset_overlay && reset_overlay="yes"
+getargbool 0 rd.live.overlay.readonly -d -y readonly_overlay && readonly_overlay="--readonly" || readonly_overlay=""
+overlay=$(getarg rd.live.overlay -d overlay)
# CD/DVD media check
[ -b $livedev ] && fs=$(blkid -s TYPE -o value $livedev)
if [ "$fs" = "iso9660" -o "$fs" = "udf" ]; then
check="yes"
fi
-getarg rd.live.check check || check=""
+getarg rd.live.check -d check || check=""
if [ -n "$check" ]; then
[ -x /bin/plymouth ] && /bin/plymouth --hide-splash
checkisomd5 --verbose $livedev
diff --git a/modules.d/90dmsquash-live/parse-dmsquash-live.sh b/modules.d/90dmsquash-live/parse-dmsquash-live.sh
index 5ccc0d0..3e9a347 100755
--- a/modules.d/90dmsquash-live/parse-dmsquash-live.sh
+++ b/modules.d/90dmsquash-live/parse-dmsquash-live.sh
@@ -7,7 +7,7 @@
[ -z "$root" ] && root=$(getarg root=)
# support legacy syntax of passing liveimg and then just the base root
-if getargbool 0 rd.live.image -y liveimg; then
+if getargbool 0 rd.live.image -d -y liveimg; then
liveroot="live:$root"
fi
diff --git a/modules.d/90kernel-modules/insmodpost.sh b/modules.d/90kernel-modules/insmodpost.sh
index 168a907..d2b8723 100755
--- a/modules.d/90kernel-modules/insmodpost.sh
+++ b/modules.d/90kernel-modules/insmodpost.sh
@@ -4,7 +4,7 @@
. /lib/dracut-lib.sh
-for modlist in $(getargs rd.driver.post rdinsmodpost=); do
+for modlist in $(getargs rd.driver.post -d rdinsmodpost=); do
(
IFS=,
for m in $modlist; do
diff --git a/modules.d/90kernel-modules/parse-kernel.sh b/modules.d/90kernel-modules/parse-kernel.sh
index 285ee90..485528b 100755
--- a/modules.d/90kernel-modules/parse-kernel.sh
+++ b/modules.d/90kernel-modules/parse-kernel.sh
@@ -2,7 +2,7 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-for i in $(getargs rd.driver.pre rdloaddriver=); do
+for i in $(getargs rd.driver.pre -d rdloaddriver=); do
(
IFS=,
for p in $i; do
@@ -11,7 +11,7 @@ for i in $(getargs rd.driver.pre rdloaddriver=); do
)
done
-for i in $(getargs rd.driver.blacklist rdblacklist=); do
+for i in $(getargs rd.driver.blacklist -d rdblacklist=); do
(
IFS=,
for p in $i; do
@@ -20,7 +20,7 @@ for i in $(getargs rd.driver.blacklist rdblacklist=); do
)
done
-for p in $(getargs rd.driver.post rdinsmodpost=); do
+for p in $(getargs rd.driver.post -d rdinsmodpost=); do
echo "blacklist $p" >> /etc/modprobe.d/initramfsblacklist.conf
_do_insmodpost=1
done
diff --git a/modules.d/90lvm/lvm_scan.sh b/modules.d/90lvm/lvm_scan.sh
index d86be9b..f5f5fcd 100755
--- a/modules.d/90lvm/lvm_scan.sh
+++ b/modules.d/90lvm/lvm_scan.sh
@@ -7,10 +7,10 @@
extraargs="$@"
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
-VGS=$(getargs rd.lvm.vg rd_LVM_VG=)
-LVS=$(getargs rd.lvm.lv rd_LVM_LV=)
-SNAPSHOT=$(getargs rd.lvm.snapshot rd_LVM_SNAPSHOT=)
-SNAPSIZE=$(getargs rd.lvm.snapsize rd_LVM_SNAPSIZE=)
+VGS=$(getargs rd.lvm.vg -d rd_LVM_VG=)
+LVS=$(getargs rd.lvm.lv -d rd_LVM_LV=)
+SNAPSHOT=$(getargs rd.lvm.snapshot -d rd_LVM_SNAPSHOT=)
+SNAPSIZE=$(getargs rd.lvm.snapsize -d rd_LVM_SNAPSIZE=)
[ -d /etc/lvm ] || mkdir -m 0755 -p /etc/lvm
# build a list of devices to scan
diff --git a/modules.d/90lvm/parse-lvm.sh b/modules.d/90lvm/parse-lvm.sh
index c1d00c6..2194abd 100755
--- a/modules.d/90lvm/parse-lvm.sh
+++ b/modules.d/90lvm/parse-lvm.sh
@@ -1,15 +1,15 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if [ -e /etc/lvm/lvm.conf ] && ! getargbool 1 rd.lvm.conf -n rd_NO_LVMCONF; then
+if [ -e /etc/lvm/lvm.conf ] && ! getargbool 1 rd.lvm.conf -d -n rd_NO_LVMCONF; then
rm -f /etc/lvm/lvm.conf
fi
-if ! getargbool 1 rd.lvm -n rd_NO_LVM; then
+if ! getargbool 1 rd.lvm -d -n rd_NO_LVM; then
info "rd.lvm=0: removing LVM activation"
rm -f /etc/udev/rules.d/64-lvm*.rules
else
- for dev in $(getargs rd.lvm.vg rd_LVM_VG=) $(getargs rd.lvm.lv rd_LVM_LV=); do
+ for dev in $(getargs rd.lvm.vg -d rd_LVM_VG=) $(getargs rd.lvm.lv -d rd_LVM_LV=); do
wait_for_dev "/dev/$dev"
done
fi
diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh
index 1482f2f..6920f40 100755
--- a/modules.d/90mdraid/parse-md.sh
+++ b/modules.d/90mdraid/parse-md.sh
@@ -1,11 +1,11 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if ! getargbool 1 rd.md -n rd_NO_MD; then
+if ! getargbool 1 rd.md -d -n rd_NO_MD; then
info "rd.md=0: removing MD RAID activation"
udevproperty rd_NO_MD=1
else
- MD_UUID=$(getargs rd.md.uuid rd_MD_UUID=)
+ MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
# rewrite the md rules to only process the specified raid array
if [ -n "$MD_UUID" ]; then
@@ -29,25 +29,25 @@ else
fi
-if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -n rd_NO_MDADMCONF; then
+if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
udevproperty rd_MDADMCONF=1
rm -f $hookdir/pre-pivot/*mdraid-cleanup.sh
fi
-if ! getargbool 1 rd.md.conf -n rd_NO_MDADMCONF; then
+if ! getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
rm -f /etc/mdadm/mdadm.conf /etc/mdadm.conf
ln -s $(command -v mdraid-cleanup) $hookdir/pre-pivot/31-mdraid-cleanup.sh 2>/dev/null
fi
# noiswmd nodmraid for anaconda / rc.sysinit compatibility
# note nodmraid really means nobiosraid, so we don't want MDIMSM then either
-if ! getargbool 1 rd.md.imsm -n rd_NO_MDIMSM || getarg noiswmd || getarg nodmraid; then
+if ! getargbool 1 rd.md.imsm -d -n rd_NO_MDIMSM -n noiswmd -n nodmraid; then
info "no MD RAID for imsm/isw raids"
udevproperty rd_NO_MDIMSM=1
fi
# same thing with ddf containers
-if ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF || getarg noddfmd || getarg nodmraid; then
+if ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF -n noddfmd -n nodmraid; then
info "no MD RAID for SNIA ddf raids"
udevproperty rd_NO_MDDDF=1
fi
diff --git a/modules.d/95dasd/parse-dasd.sh b/modules.d/95dasd/parse-dasd.sh
index b3d18fa..772ea47 100755
--- a/modules.d/95dasd/parse-dasd.sh
+++ b/modules.d/95dasd/parse-dasd.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
+for dasd_arg in $(getargs rd.dasd= -d rd_DASD= DASD=); do
(
IFS=","
set $dasd_arg
diff --git a/modules.d/95dasd_mod/parse-dasd-mod.sh b/modules.d/95dasd_mod/parse-dasd-mod.sh
index c37aca8..87c88ed 100755
--- a/modules.d/95dasd_mod/parse-dasd-mod.sh
+++ b/modules.d/95dasd_mod/parse-dasd-mod.sh
@@ -3,7 +3,7 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh
mod_args=""
-for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
+for dasd_arg in $(getargs rd.dasd= -d rd_DASD= DASD=); do
mod_args="$mod_args,$dasd_arg"
done
diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
index 19c5c1d..87b7fa7 100755
--- a/modules.d/95iscsi/iscsiroot.sh
+++ b/modules.d/95iscsi/iscsiroot.sh
@@ -40,14 +40,14 @@ modprobe crc32c 2>/dev/null
[ -e /sys/module/bnx2i ] && iscsiuio
-if getargbool 0 rd.iscsi.firmware -y iscsi_firmware ; then
+if getargbool 0 rd.iscsi.firmware -d -y iscsi_firmware ; then
if [ -z "$root" -o -n "${root%%block:*}" ]; then
# if root is not specified try to mount the whole iSCSI LUN
printf 'ENV{DEVTYPE}!="partition", SYMLINK=="disk/by-path/*-iscsi-*-*", SYMLINK+="root"\n' >> /etc/udev/rules.d/99-iscsi-root.rules
udevadm control --reload
fi
- for p in $(getargs rd.iscsi.param iscsi_param); do
+ for p in $(getargs rd.iscsi.param -d iscsi_param); do
iscsi_param="$iscsi_param --param $p"
done
@@ -66,25 +66,25 @@ handle_netroot()
local p
# override conf settings by command line options
- arg=$(getargs rd.iscsi.initiator iscsi_initiator=)
+ arg=$(getargs rd.iscsi.initiator -d iscsi_initiator=)
[ -n "$arg" ] && iscsi_initiator=$arg
- arg=$(getargs rd.iscsi.target.name iscsi_target_name=)
+ arg=$(getargs rd.iscsi.target.name -d iscsi_target_name=)
[ -n "$arg" ] && iscsi_target_name=$arg
- arg=$(getargs rd.iscsi.target.ip iscsi_target_ip)
+ arg=$(getargs rd.iscsi.target.ip -d iscsi_target_ip)
[ -n "$arg" ] && iscsi_target_ip=$arg
- arg=$(getargs rd.iscsi.target.port iscsi_target_port=)
+ arg=$(getargs rd.iscsi.target.port -d iscsi_target_port=)
[ -n "$arg" ] && iscsi_target_port=$arg
- arg=$(getargs rd.iscsi.target.group iscsi_target_group=)
+ arg=$(getargs rd.iscsi.target.group -d iscsi_target_group=)
[ -n "$arg" ] && iscsi_target_group=$arg
- arg=$(getargs rd.iscsi.username iscsi_username=)
+ arg=$(getargs rd.iscsi.username -d iscsi_username=)
[ -n "$arg" ] && iscsi_username=$arg
- arg=$(getargs rd.iscsi.password iscsi_password)
+ arg=$(getargs rd.iscsi.password -d iscsi_password)
[ -n "$arg" ] && iscsi_password=$arg
- arg=$(getargs rd.iscsi.in.username iscsi_in_username=)
+ arg=$(getargs rd.iscsi.in.username -d iscsi_in_username=)
[ -n "$arg" ] && iscsi_in_username=$arg
- arg=$(getargs rd.iscsi.in.password iscsi_in_password=)
+ arg=$(getargs rd.iscsi.in.password -d iscsi_in_password=)
[ -n "$arg" ] && iscsi_in_password=$arg
- for p in $(getargs rd.iscsi.param iscsi_param); do
+ for p in $(getargs rd.iscsi.param -d iscsi_param); do
iscsi_param="$iscsi_param --param $p"
done
diff --git a/modules.d/95nfs/parse-nfsroot.sh b/modules.d/95nfs/parse-nfsroot.sh
index 769d233..283420a 100755
--- a/modules.d/95nfs/parse-nfsroot.sh
+++ b/modules.d/95nfs/parse-nfsroot.sh
@@ -72,7 +72,7 @@ esac
# Check required arguments
-if nfsdomain=$(getarg rd.nfs.domain rd_NFS_DOMAIN); then
+if nfsdomain=$(getarg rd.nfs.domain -d rd_NFS_DOMAIN); then
if [ -f /etc/idmapd.conf ]; then
sed -i -e \
"s/^[[:space:]#]*Domain[[:space:]]*=.*/Domain = $nfsdomain/g" \
diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
index e61b0e8..670f6e3 100755
--- a/modules.d/95rootfs-block/mount-root.sh
+++ b/modules.d/95rootfs-block/mount-root.sh
@@ -76,7 +76,7 @@ mount_root() {
fi
rootopts=
- if getargbool 1 rd.fstab -n rd_NO_FSTAB \
+ if getargbool 1 rd.fstab -d -n rd_NO_FSTAB \
&& ! getarg rootflags \
&& [ -f "$NEWROOT/etc/fstab" ] \
&& ! [ -L "$NEWROOT/etc/fstab" ]; then
diff --git a/modules.d/95zfcp/parse-zfcp.sh b/modules.d/95zfcp/parse-zfcp.sh
index 5af454a..9b22d93 100755
--- a/modules.d/95zfcp/parse-zfcp.sh
+++ b/modules.d/95zfcp/parse-zfcp.sh
@@ -2,9 +2,9 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-getargbool 1 rd.zfcp.conf -n rd_NO_ZFCPCONF || rm /etc/zfcp.conf
+getargbool 1 rd.zfcp.conf -d -n rd_NO_ZFCPCONF || rm /etc/zfcp.conf
-for zfcp_arg in $(getargs rd.zfcp 'rd_ZFCP='); do
+for zfcp_arg in $(getargs rd.zfcp -d 'rd_ZFCP='); do
(
IFS=","
set $zfcp_arg
diff --git a/modules.d/95znet/parse-ccw.sh b/modules.d/95znet/parse-ccw.sh
index 876671c..cf1f41d 100755
--- a/modules.d/95znet/parse-ccw.sh
+++ b/modules.d/95znet/parse-ccw.sh
@@ -2,7 +2,7 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-for ccw_arg in $(getargs rd.ccw 'rd_CCW=') $(getargs rd.znet 'rd_ZNET='); do
+for ccw_arg in $(getargs rd.ccw -d 'rd_CCW=') $(getargs rd.znet -d 'rd_ZNET='); do
echo $ccw_arg >> /etc/ccw.conf
done
diff --git a/modules.d/98syslog/parse-syslog-opts.sh b/modules.d/98syslog/parse-syslog-opts.sh
index 02788dd..e58c8f5 100755
--- a/modules.d/98syslog/parse-syslog-opts.sh
+++ b/modules.d/98syslog/parse-syslog-opts.sh
@@ -11,9 +11,9 @@
# Don't auto detect syslog but set it
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
-syslogserver=$(getarg syslog.server syslog)
-syslogfilters=$(getargs syslog.filter filter)
-syslogtype=$(getarg syslog.type syslogtype)
+syslogserver=$(getarg syslog.server -d syslog)
+syslogfilters=$(getargs syslog.filter -d filter)
+syslogtype=$(getarg syslog.type -d syslogtype)
[ -n "$syslogserver" ] && echo $syslogserver > /tmp/syslog.server
[ -n "$syslogfilters" ] && echo "$syslogfilters" > /tmp/syslog.filters
diff --git a/modules.d/98systemd/dracut-cmdline.sh b/modules.d/98systemd/dracut-cmdline.sh
index 6a44815..77ad121 100755
--- a/modules.d/98systemd/dracut-cmdline.sh
+++ b/modules.d/98systemd/dracut-cmdline.sh
@@ -15,7 +15,7 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
source_conf /etc/conf.d
# run scriptlets to parse the command line
-getarg 'rd.break=cmdline' 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
+getarg 'rd.break=cmdline' -d 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
source_hook cmdline
[ -z "$root" ] && die "No or empty root= argument"
diff --git a/modules.d/98systemd/dracut-initqueue.sh b/modules.d/98systemd/dracut-initqueue.sh
index cfdb12d..112d2a8 100755
--- a/modules.d/98systemd/dracut-initqueue.sh
+++ b/modules.d/98systemd/dracut-initqueue.sh
@@ -9,9 +9,9 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
source_conf /etc/conf.d
-getarg 'rd.break=initqueue' 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
+getarg 'rd.break=initqueue' -d 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
-RDRETRY=$(getarg rd.retry 'rd_retry=')
+RDRETRY=$(getarg rd.retry -d 'rd_retry=')
RDRETRY=${RDRETRY:-20}
RDRETRY=$(($RDRETRY*2))
export RDRETRY
@@ -71,11 +71,11 @@ unset RDRETRY
# pre-mount happens before we try to mount the root filesystem,
# and happens once.
-getarg 'rd.break=pre-mount' 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"
+getarg 'rd.break=pre-mount' -d 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"
source_hook pre-mount
-getarg 'rd.break=mount' 'rdbreak=mount' && emergency_shell -n mount "Break mount"
+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
diff --git a/modules.d/98systemd/dracut-pre-pivot.sh b/modules.d/98systemd/dracut-pre-pivot.sh
index 31dded5..3fd7957 100755
--- a/modules.d/98systemd/dracut-pre-pivot.sh
+++ b/modules.d/98systemd/dracut-pre-pivot.sh
@@ -37,6 +37,6 @@ echo "NEWROOT=\"$NEWROOT\"" >> /run/initramfs/switch-root.conf
# remove helper symlink
[ -h /dev/root ] && rm -f /dev/root
-getarg rd.break rdbreak && emergency_shell -n switch_root "Break before switch_root"
+getarg rd.break -d rdbreak && emergency_shell -n switch_root "Break before switch_root"
exit 0
diff --git a/modules.d/98systemd/dracut-pre-trigger.sh b/modules.d/98systemd/dracut-pre-trigger.sh
index 52ecfaf..9850124 100755
--- a/modules.d/98systemd/dracut-pre-trigger.sh
+++ b/modules.d/98systemd/dracut-pre-trigger.sh
@@ -9,8 +9,8 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
source_conf /etc/conf.d
-getargbool 0 rd.udev.info -y rdudevinfo && udevadm control --log-priority=info
-getargbool 0 rd.udev.debug -y rdudevdebug && udevadm control --log-priority=debug
+getargbool 0 rd.udev.info -n -y rdudevinfo && udevadm control --log-priority=info
+getargbool 0 rd.udev.debug -n -y rdudevdebug && udevadm control --log-priority=debug
udevproperty "hookdir=$hookdir"
source_hook pre-trigger
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
index 1ee671e..786661e 100755
--- a/modules.d/99base/dracut-lib.sh
+++ b/modules.d/99base/dracut-lib.sh
@@ -103,24 +103,41 @@ _dogetarg() {
getarg() {
debug_off
+ local _deprecated _newoption
while [ $# -gt 0 ]; do
case $1 in
+ -d) _deprecated=1; shift;;
-y) if _dogetarg $2 >/dev/null; then
+ if [ "$_deprecated" = "1" ]; then
+ [ -n "$_newoption" ] && warn "Option '$2' is deprecated, use '$_newoption' instead." || warn "Option '$2' is deprecated."
+ fi
echo 1
debug_on
return 0
fi
+ _deprecated=0
shift 2;;
-n) if _dogetarg $2 >/dev/null; then
echo 0;
+ if [ "$_deprecated" = "1" ]; then
+ [ -n "$_newoption" ] && warn "Option '$2' is deprecated, use '$_newoption=0' instead." || warn "Option '$2' is deprecated."
+ fi
debug_on
return 1
fi
+ _deprecated=0
shift 2;;
- *) if _dogetarg $1; then
+ *) if [ -z "$_newoption" ]; then
+ _newoption=$1
+ fi
+ if _dogetarg $1; then
+ if [ "$_deprecated" = "1" ]; then
+ [ -n "$_newoption" ] && warn "Option '$1' is deprecated, use '$_newoption' instead." || warn "Option '$1' is deprecated."
+ fi
debug_on
return 0;
fi
+ _deprecated=0
shift;;
esac
done
@@ -168,15 +185,26 @@ _dogetargs() {
getargs() {
debug_off
- local _val _i _args _gfound
+ local _val _i _args _gfound _deprecated
unset _val
unset _gfound
+ _newoption="$1"
_args="$@"
set --
for _i in $_args; do
+ if [ "$i" = "-d" ]; then
+ _deprecated=1
+ continue
+ fi
_val="$(_dogetargs $_i)"
- [ $? -eq 0 ] && _gfound=1
+ if [ $? -eq 0 ]; then
+ if [ "$_deprecated" = "1" ]; then
+ [ -n "$_newoption" ] && warn "Option '$_i' is deprecated, use '$_newoption' instead." || warn "Option $_i is deprecated!"
+ fi
+ _gfound=1
+ fi
[ -n "$_val" ] && set -- "$@" "$_val"
+ _deprecated=0
done
if [ -n "$_gfound" ]; then
if [ $# -gt 0 ]; then
@@ -250,7 +278,7 @@ setdebug() {
if [ -z "$RD_DEBUG" ]; then
if [ -e /proc/cmdline ]; then
RD_DEBUG=no
- if getargbool 0 rd.debug -y rdinitdebug -y rdnetdebug; then
+ if getargbool 0 rd.debug -d -y rdinitdebug -d -y rdnetdebug; then
RD_DEBUG=yes
[ -n "$BASH" ] && \
export PS4='${BASH_SOURCE}@${LINENO}(${FUNCNAME[0]}): ';
@@ -314,8 +342,8 @@ die() {
check_quiet() {
if [ -z "$DRACUT_QUIET" ]; then
DRACUT_QUIET="yes"
- getargbool 0 rd.info -y rdinfo && DRACUT_QUIET="no"
- getargbool 0 rd.debug -y rdinitdebug && DRACUT_QUIET="no"
+ getargbool 0 rd.info -d -y rdinfo && DRACUT_QUIET="no"
+ getargbool 0 rd.debug -d -y rdinitdebug && DRACUT_QUIET="no"
getarg quiet || DRACUT_QUIET="yes"
a=$(getarg loglevel=)
[ -n "$a" ] && [ $a -ge 28 ] && DRACUT_QUIET="yes"
@@ -831,7 +859,7 @@ emergency_shell()
source_hook "$hook"
echo
- if getargbool 1 rd.shell -y rdshell || getarg rd.break rdbreak; then
+ if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then
if [ -x /lib/systemd/systemd ]; then
> /.console_lock
echo "PS1=\"$_rdshell_name:\${PWD}# \"" >/etc/profile
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index 3eb6424..c33f182 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -108,7 +108,7 @@ fi
source_conf /etc/conf.d
# run scriptlets to parse the command line
-getarg 'rd.break=cmdline' 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
+getarg 'rd.break=cmdline' -d 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
source_hook cmdline
[ -z "$root" ] && die "No or empty root= argument"
@@ -117,7 +117,7 @@ source_hook cmdline
export root rflags fstype netroot NEWROOT
# pre-udev scripts run before udev starts, and are run only once.
-getarg 'rd.break=pre-udev' 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Break before pre-udev"
+getarg 'rd.break=pre-udev' -d 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Break before pre-udev"
source_hook pre-udev
# start up udev and trigger cold plugs
@@ -131,11 +131,11 @@ if [ $UDEVVERSION -lt 140 ]; then
UDEV_QUEUE_EMPTY="udevadm settle --timeout=1"
fi
-getargbool 0 rd.udev.info -y rdudevinfo && udevadm control "$UDEV_LOG_PRIO_ARG=info"
-getargbool 0 rd.udev.debug -y rdudevdebug && udevadm control "$UDEV_LOG_PRIO_ARG=debug"
+getargbool 0 rd.udev.info -d -y rdudevinfo && udevadm control "$UDEV_LOG_PRIO_ARG=info"
+getargbool 0 rd.udev.debug -d -y rdudevdebug && udevadm control "$UDEV_LOG_PRIO_ARG=debug"
udevproperty "hookdir=$hookdir"
-getarg 'rd.break=pre-trigger' 'rdbreak=pre-trigger' && emergency_shell -n pre-trigger "Break before pre-trigger"
+getarg 'rd.break=pre-trigger' -d 'rdbreak=pre-trigger' && emergency_shell -n pre-trigger "Break before pre-trigger"
source_hook pre-trigger
udevadm control --reload >/dev/null 2>&1 || :
@@ -143,9 +143,9 @@ udevadm control --reload >/dev/null 2>&1 || :
udevadm trigger --type=subsystems --action=add >/dev/null 2>&1
udevadm trigger --type=devices --action=add >/dev/null 2>&1
-getarg 'rd.break=initqueue' 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
+getarg 'rd.break=initqueue' -d 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
-RDRETRY=$(getarg rd.retry 'rd_retry=')
+RDRETRY=$(getarg rd.retry -d 'rd_retry=')
RDRETRY=${RDRETRY:-20}
RDRETRY=$(($RDRETRY*2))
export RDRETRY
@@ -202,11 +202,11 @@ unset RDRETRY
# pre-mount happens before we try to mount the root filesystem,
# and happens once.
-getarg 'rd.break=pre-mount' 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"
+getarg 'rd.break=pre-mount' -d 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"
source_hook pre-mount
-getarg 'rd.break=mount' 'rdbreak=mount' && emergency_shell -n mount "Break mount"
+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
@@ -237,11 +237,11 @@ done
# pre pivot scripts are sourced just before we doing cleanup and switch over
# to the new root.
-getarg 'rd.break=pre-pivot' 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break pre-pivot"
+getarg 'rd.break=pre-pivot' -d 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break pre-pivot"
source_hook pre-pivot
# pre pivot cleanup scripts are sourced just before we switch over to the new root.
-getarg 'rd.break=cleanup' 'rdbreak=cleanup' && emergency_shell -n cleanup "Break cleanup"
+getarg 'rd.break=cleanup' -d 'rdbreak=cleanup' && emergency_shell -n cleanup "Break cleanup"
source_hook cleanup
# By the time we get here, the root filesystem should be mounted.
@@ -340,7 +340,7 @@ wait_for_loginit
# remove helper symlink
[ -h /dev/root ] && rm -f /dev/root
-getarg rd.break rdbreak && emergency_shell -n switch_root "Break before switch_root"
+getarg rd.break -d rdbreak && emergency_shell -n switch_root "Break before switch_root"
info "Switching root"
diff --git a/modules.d/99base/mount-hook.sh b/modules.d/99base/mount-hook.sh
index db07866..e32ecae 100755
--- a/modules.d/99base/mount-hook.sh
+++ b/modules.d/99base/mount-hook.sh
@@ -81,7 +81,7 @@ mount_root() {
fi
rootopts=
- if getargbool 1 rd.fstab -n rd_NO_FSTAB \
+ if getargbool 1 rd.fstab -d -n rd_NO_FSTAB \
&& ! getarg rootflags \
&& [ -f "$NEWROOT/etc/fstab" ] \
&& ! [ -L "$NEWROOT/etc/fstab" ]; then

View File

@ -0,0 +1,79 @@
From 8a240aca9e295eff3941d53d8d107b44859323b7 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 25 Jul 2012 13:00:08 +0200
Subject: [PATCH] require kpartx and partx for some modules
---
dracut.spec | 1 +
modules.d/90dmraid/module-setup.sh | 3 ++-
modules.d/90mdraid/module-setup.sh | 4 ++--
modules.d/90multipath/module-setup.sh | 15 ++++++++-------
4 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/dracut.spec b/dracut.spec
index 9a93e57..0d4062f 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -81,6 +81,7 @@ Requires: gzip xz
Requires: module-init-tools >= 3.7-9
Requires: sed
Requires: file
+Requires: kpartx
Requires: udev > 166
%if 0%{?fedora} || 0%{?rhel} > 6
Requires: util-linux >= 2.21
diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
index dad54a4..10c732c 100755
--- a/modules.d/90dmraid/module-setup.sh
+++ b/modules.d/90dmraid/module-setup.sh
@@ -51,7 +51,8 @@ depends() {
install() {
local _i
- dracut_install dmraid partx kpartx
+ dracut_install dmraid
+ dracut_install -o partx kpartx
inst "$moddir/dmraid.sh" /sbin/dmraid_scan
diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
index 7b6f0a9..7b3c759 100755
--- a/modules.d/90mdraid/module-setup.sh
+++ b/modules.d/90mdraid/module-setup.sh
@@ -43,8 +43,8 @@ installkernel() {
}
install() {
- dracut_install mdadm partx cat
- dracut_install -o mdmon
+ dracut_install mdadm cat
+ dracut_install -o mdmon partx
# XXX: mdmon really needs to run as non-root?
# If so, write only the user it needs in the initrd's /etc/passwd (and maybe /etc/group)
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index 5944d25..b14f829 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -70,13 +70,14 @@ installkernel() {
install() {
local _f
dracut_install -o \
- /sbin/dmsetup \
- /sbin/kpartx \
- /sbin/mpath_wait \
- /sbin/multipath \
- /sbin/multipathd \
- /sbin/xdrgetuid \
- /sbin/xdrgetprio \
+ dmsetup \
+ kpartx \
+ partx \
+ mpath_wait \
+ multipath \
+ multipathd \
+ xdrgetuid \
+ xdrgetprio \
/etc/xdrdevices.conf \
/etc/multipath.conf \
/etc/multipath/*

View File

@ -0,0 +1,23 @@
From 35022f987cfe680897ab2e83d1897a37c9ff67e0 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 25 Jul 2012 14:52:25 +0200
Subject: [PATCH] iscsiroot.sh: do not source /etc/conf.d
this should have been done already.
---
modules.d/95iscsi/iscsiroot.sh | 2 --
1 file changed, 2 deletions(-)
diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
index 87b7fa7..92414ee 100755
--- a/modules.d/95iscsi/iscsiroot.sh
+++ b/modules.d/95iscsi/iscsiroot.sh
@@ -27,8 +27,6 @@ PATH=/usr/sbin:/usr/bin:/sbin:/bin
netif="$1"
iroot="$2"
-source_all /etc/conf.d
-
# If it's not iscsi we don't continue
[ "${iroot%%:*}" = "iscsi" ] || exit 1

View File

@ -0,0 +1,36 @@
From a844fb1552d7867c77caa027ea38249c26866479 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 25 Jul 2012 14:53:23 +0200
Subject: [PATCH] dracut.asc: add doc about journalctl
---
dracut.asc | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/dracut.asc b/dracut.asc
index ca896ee..1791e40 100644
--- a/dracut.asc
+++ b/dracut.asc
@@ -459,6 +459,13 @@ dracut shell commands are printed as they are executed
# less /run/initramfs/init.log
# dmesg | less
----
+. With dracut >= 022 and systemd, you can inspect the rd.debug output with:
+----
+# journalctl -ab
+----
+
+If you want to save that output, simply mount /boot by hand or insert an USB stick and mount that.
+Then you can store the output for later inspection.
[[information-to-include-in-your-report]]
=== Information to include in your report
@@ -472,7 +479,7 @@ configuration file (e.g. _/etc/grub.conf_) or from _/proc/cmdline_.
* A copy of your disk partition information from _/etc/fstab_, which might be
obtained booting an old working initramfs or a rescue medium.
* A device listing from device-mapper. This can be obtained by running the
-command
+command
+
----
# dmsetup ls --tree

View File

@ -0,0 +1,21 @@
From bf7883ebcaccc0bf95303098e36896cc4872d468 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 25 Jul 2012 14:56:08 +0200
Subject: [PATCH] network/module-setup.sh: instmods af_packet
---
modules.d/40network/module-setup.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
index c69d81a..0ffdd07 100755
--- a/modules.d/40network/module-setup.sh
+++ b/modules.d/40network/module-setup.sh
@@ -73,6 +73,7 @@ installkernel() {
instmods bonding
# vlan
instmods 8021q
+ instmods af_packet
}
install() {

View File

@ -0,0 +1,30 @@
From e045e1f386b2e44e9be88ea53f45090dfc7e095d Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 25 Jul 2012 15:20:22 +0200
Subject: [PATCH] Makefile: honor CFLAGS
---
Makefile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 548952d..a109ef0 100644
--- a/Makefile
+++ b/Makefile
@@ -8,6 +8,7 @@ pkglibdir ?= ${libdir}/dracut
sysconfdir ?= ${prefix}/etc
bindir ?= ${prefix}/bin
mandir ?= ${prefix}/share/man
+CFLAGS ?= -std=gnu99 -O2 -g -Wall
man1pages = lsinitrd.1
@@ -46,7 +47,7 @@ DRACUT_INSTALL_HEADER = \
install/util.h
dracut-install: $(DRACUT_INSTALL_SOURCE) $(DRACUT_INSTALL_HEADER)
- gcc -std=gnu99 -O2 -g -Wall -o dracut-install $(DRACUT_INSTALL_SOURCE)
+ gcc $(CFLAGS) -o dracut-install $(DRACUT_INSTALL_SOURCE)
indent:
indent -i8 -nut -br -linux -l120 install/dracut-install.c

21
0023-TODO-update.patch Normal file
View File

@ -0,0 +1,21 @@
From 585fd00624d0799c2511d9f0f384a2aee9dc8a3b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 25 Jul 2012 15:20:37 +0200
Subject: [PATCH] TODO: update
---
TODO | 1 +
1 file changed, 1 insertion(+)
diff --git a/TODO b/TODO
index 4fc7728..61be5d5 100644
--- a/TODO
+++ b/TODO
@@ -6,6 +6,7 @@ Items are ordered in priority.
INITRAMFS TODO
+- add sosreport
- generate systemd unit dracut-initramfs-restore in /run/systemd dynamically
- put "root=" parsing hooks in separate hook dir
- call "root=" parsing hooks after getting new rootpath from dhcp

View File

@ -0,0 +1,70 @@
From f1040fc4702778b38e6cc9eaf5b4c1ff24a7c26c Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 25 Jul 2012 16:03:49 +0200
Subject: [PATCH] qemu*/module-setup.sh: provide alternative for
systemd-detect-virt
---
modules.d/90qemu-net/module-setup.sh | 19 +++++++++++++++----
modules.d/90qemu/module-setup.sh | 18 ++++++++++++++----
2 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/modules.d/90qemu-net/module-setup.sh b/modules.d/90qemu-net/module-setup.sh
index 35c8f0f..e617230 100755
--- a/modules.d/90qemu-net/module-setup.sh
+++ b/modules.d/90qemu-net/module-setup.sh
@@ -3,10 +3,21 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh
check() {
- vm=$(systemd-detect-virt --vm &>/dev/null)
- (($? != 0)) && return 255
- [[ $vm = "qemu" ]] && return 0
- [[ $vm = "kvm" ]] && return 0
+ if type -P systemd-detect-virt &>/dev/null; then
+ vm=$(systemd-detect-virt --vm &>/dev/null)
+ (($? != 0)) && return 255
+ [[ $vm = "qemu" ]] && return 0
+ [[ $vm = "kvm" ]] && return 0
+ [[ $vm = "bochs" ]] && return 0
+ fi
+
+ for i in /sys/class/dmi/id/*_vendor; do
+ [[ -f $i ]] || continue
+ read vendor < $i
+ [[ "$vendor" == "QEMU" ]] && return 0
+ [[ "$vendor" == "Bochs" ]] && return 0
+ done
+
return 255
}
diff --git a/modules.d/90qemu/module-setup.sh b/modules.d/90qemu/module-setup.sh
index 3e55f23..fc258ac 100755
--- a/modules.d/90qemu/module-setup.sh
+++ b/modules.d/90qemu/module-setup.sh
@@ -3,10 +3,20 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh
check() {
- vm=$(systemd-detect-virt --vm &>/dev/null)
- (($? != 0)) && return 255
- [[ $vm = "qemu" ]] && return 0
- [[ $vm = "kvm" ]] && return 0
+ if type -P systemd-detect-virt &>/dev/null; then
+ vm=$(systemd-detect-virt --vm &>/dev/null)
+ (($? != 0)) && return 255
+ [[ $vm = "qemu" ]] && return 0
+ [[ $vm = "kvm" ]] && return 0
+ [[ $vm = "bochs" ]] && return 0
+ fi
+
+ for i in /sys/class/dmi/id/*_vendor; do
+ [[ -f $i ]] || continue
+ read vendor < $i
+ [[ "$vendor" == "QEMU" ]] && return 0
+ [[ "$vendor" == "Bochs" ]] && return 0
+ done
return 255
}

View File

@ -0,0 +1,274 @@
From 386579a45a69c428cddffe30c473dd21213f3ea1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Wed, 25 Jul 2012 22:08:22 +0200
Subject: [PATCH] Remove object file from repo: install/hashmap.o
---
install/hashmap.o | Bin 46384 -> 0 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 install/hashmap.o
diff --git a/install/hashmap.o b/install/hashmap.o
deleted file mode 100644
index 70262be391ee9c816ebaf9c8601bc60a7bc8a2e3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 46384
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
Z;IjWdEpXX?_X}M1-z@5!Xs7JI{|kk}U*7-#

View File

@ -0,0 +1,77 @@
From ab8bfca7949cf18837ead4b3aebd5f2186a6f739 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Wed, 25 Jul 2012 22:08:23 +0200
Subject: [PATCH] Makefile: use implicit rules for install/dracut-install
Don't fail on install rule if install/dracut-install is not build - just
skip it. $(strip) is not used by install rule, because it is nowhere
set.
---
Makefile | 30 ++++++++++++++----------------
1 file changed, 14 insertions(+), 16 deletions(-)
diff --git a/Makefile b/Makefile
index a109ef0..d013cbc 100644
--- a/Makefile
+++ b/Makefile
@@ -8,7 +8,8 @@ pkglibdir ?= ${libdir}/dracut
sysconfdir ?= ${prefix}/etc
bindir ?= ${prefix}/bin
mandir ?= ${prefix}/share/man
-CFLAGS ?= -std=gnu99 -O2 -g -Wall
+CFLAGS ?= -O2 -g -Wall
+CFLAGS += -std=gnu99
man1pages = lsinitrd.1
@@ -32,22 +33,17 @@ manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages)
.PHONY: install clean archive rpm testimage test all check AUTHORS doc
-all: syncheck dracut-version.sh dracut-install
+DRACUT_INSTALL_BIN = install/dracut-install
-DRACUT_INSTALL_SOURCE = \
- install/dracut-install.c \
- install/hashmap.c\
- install/log.c \
- install/util.c
+DRACUT_INSTALL_OBJECTS = \
+ install/dracut-install.o \
+ install/hashmap.o\
+ install/log.o \
+ install/util.o
-DRACUT_INSTALL_HEADER = \
- install/hashmap.h \
- install/log.h \
- install/macro.h \
- install/util.h
+all: syncheck dracut-version.sh $(DRACUT_INSTALL_BIN)
-dracut-install: $(DRACUT_INSTALL_SOURCE) $(DRACUT_INSTALL_HEADER)
- gcc $(CFLAGS) -o dracut-install $(DRACUT_INSTALL_SOURCE)
+$(DRACUT_INSTALL_BIN): $(DRACUT_INSTALL_OBJECTS)
indent:
indent -i8 -nut -br -linux -l120 install/dracut-install.c
@@ -99,7 +95,9 @@ install: doc dracut-version.sh
ln -s ../dracut-shutdown.service \
$(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants/dracut-shutdown.service; \
fi
- install $(strip) -m 0755 dracut-install $(DESTDIR)$(pkglibdir)/dracut-install
+ if [ -x $(DRACUT_INSTALL_BIN) ]; then \
+ install -m 0755 $(DRACUT_INSTALL_BIN) $(DESTDIR)$(pkglibdir)/dracut-install; \
+ fi
dracut-version.sh:
@echo "DRACUT_VERSION=$(VERSION)-$(GITVERSION)" > dracut-version.sh
@@ -110,7 +108,7 @@ clean:
$(RM) */*/*~
$(RM) test-*.img
$(RM) dracut-*.rpm dracut-*.tar.bz2
- $(RM) dracut-install
+ $(RM) $(DRACUT_INSTALL_BIN) $(DRACUT_INSTALL_OBJECTS)
$(RM) $(manpages) dracut.html
$(MAKE) -C test clean

View File

@ -0,0 +1,22 @@
From 06c6ea654f09c9993aaddab137b4af011d9d6c0e Mon Sep 17 00:00:00 2001
From: Chao Wang <chaowang@redhat.com>
Date: Thu, 26 Jul 2012 11:24:25 +0800
Subject: [PATCH] 95fstab-sys: Skip mounted filesystem.
Signed-off-by: Chao Wang <chaowang@redhat.com>
---
modules.d/95fstab-sys/mount-sys.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/95fstab-sys/mount-sys.sh b/modules.d/95fstab-sys/mount-sys.sh
index a1e5ab1..12711a0 100755
--- a/modules.d/95fstab-sys/mount-sys.sh
+++ b/modules.d/95fstab-sys/mount-sys.sh
@@ -11,6 +11,7 @@ fstab_mount() {
info "Mounting from $1"
while read _dev _mp _fs _opts _dump _pass _rest; do
[ -z "${_dev%%#*}" ] && continue # Skip comment lines
+ ismounted $_mp && continue # Skip mounted filesystem
if [ "$_pass" -gt 0 ] && ! strstr "$_opts" _netdev; then
fsck_single "$_dev" "$_fs" "$_opts"
fi

View File

@ -0,0 +1,30 @@
From 63c65b984a2baddf2a7046e65e8719f6485ec10e Mon Sep 17 00:00:00 2001
From: Chao Wang <chaowang@redhat.com>
Date: Thu, 26 Jul 2012 11:24:26 +0800
Subject: [PATCH] 90multipath: check() - Regexp fix to match multipath
partition.
A multipath partition's uuid will be presented like:
# cat /sys/dev/block/$_dev/dm/uuid
part1-mpath-360060e801047103004f2c4b300000008
So in this case, change the match regexp from '^mpath-' to 'mpath-'.
Signed-off-by: Chao Wang <chaowang@redhat.com>
---
modules.d/90multipath/module-setup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index b14f829..98748d3 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -11,7 +11,7 @@ check() {
local _dev
_dev=$(get_maj_min $1)
[ -e /sys/dev/block/$_dev/dm/uuid ] || return 1
- [[ $(cat /sys/dev/block/$_dev/dm/uuid) =~ ^mpath- ]] && return 0
+ [[ $(cat /sys/dev/block/$_dev/dm/uuid) =~ mpath- ]] && return 0
return 1
}

View File

@ -0,0 +1,35 @@
From 372c9b9647f039fa02779ca4fae3118c5f08e6f1 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 09:25:28 +0200
Subject: [PATCH] dmsquash-live: do not eject medium for live_ram
---
modules.d/90dmsquash-live/dmsquash-live-root.sh | 1 -
modules.d/90dmsquash-live/module-setup.sh | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
index 15f166b..f8bfca6 100755
--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
+++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
@@ -167,7 +167,6 @@ if [ -e "$SQUASHED" ] ; then
dd if=$SQUASHED of=/squashed.img bs=512 2> /dev/null
umount -n /run/initramfs/live
echo "Done copying live image to RAM."
- eject -p $livedev || :
SQUASHED="/squashed.img"
fi
diff --git a/modules.d/90dmsquash-live/module-setup.sh b/modules.d/90dmsquash-live/module-setup.sh
index 05603a5..3339e1d 100755
--- a/modules.d/90dmsquash-live/module-setup.sh
+++ b/modules.d/90dmsquash-live/module-setup.sh
@@ -21,7 +21,7 @@ installkernel() {
install() {
dracut_install umount dmsetup blkid dd losetup grep blockdev
- dracut_install -o eject checkisomd5
+ dracut_install -o checkisomd5
inst_hook cmdline 30 "$moddir/parse-dmsquash-live.sh"
inst_hook pre-udev 30 "$moddir/dmsquash-live-genrules.sh"
inst_hook pre-udev 30 "$moddir/dmsquash-liveiso-genrules.sh"

View File

@ -0,0 +1,43 @@
From f6297ebe736c832d72a69c8a27b64152eb5559a6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 09:35:56 +0200
Subject: [PATCH] Remove obsolete gentoo conf file.
---
dracut.conf.d/gentoo-openrc.conf.example | 9 ---------
dracut.conf.d/gentoo.conf.example | 6 +++---
2 files changed, 3 insertions(+), 12 deletions(-)
delete mode 100644 dracut.conf.d/gentoo-openrc.conf.example
diff --git a/dracut.conf.d/gentoo-openrc.conf.example b/dracut.conf.d/gentoo-openrc.conf.example
deleted file mode 100644
index f5aa8ed..0000000
--- a/dracut.conf.d/gentoo-openrc.conf.example
+++ /dev/null
@@ -1,9 +0,0 @@
-# /etc/dracut.conf.d/gentoo-openrc.conf
-# Dracut config file customized for Gentoo Base System release 2
-
-#
-# Modules
-#
-
-# i18n
-i18n_vars="/etc/conf.d/keymaps:keymap-KEYMAP,extended_keymaps-EXT_KEYMAPS /etc/conf.d/consolefont:consolefont-FONT,consoletranslation-FONT_MAP /etc/rc.conf:unicode-UNICODE"
diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example
index a40b746..f5aa8ed 100644
--- a/dracut.conf.d/gentoo.conf.example
+++ b/dracut.conf.d/gentoo.conf.example
@@ -1,9 +1,9 @@
-# /etc/dracut.conf.d/gentoo.conf
-# Dracut config file customized for Gentoo Base System release 1
+# /etc/dracut.conf.d/gentoo-openrc.conf
+# Dracut config file customized for Gentoo Base System release 2
#
# Modules
#
# i18n
-i18n_vars="/etc/conf.d/keymaps:KEYMAP,EXTENDED_KEYMAPS-EXT_KEYMAPS /etc/conf.d/consolefont:CONSOLEFONT-FONT,CONSOLETRANSLATION-FONT_MAP /etc/rc.conf:UNICODE"
+i18n_vars="/etc/conf.d/keymaps:keymap-KEYMAP,extended_keymaps-EXT_KEYMAPS /etc/conf.d/consolefont:consolefont-FONT,consoletranslation-FONT_MAP /etc/rc.conf:unicode-UNICODE"

View File

@ -0,0 +1,21 @@
From e625eea4f9af15f9de6e840e6db797b5f50b7e1f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 09:35:57 +0200
Subject: [PATCH] Config file for systemd on Gentoo.
---
dracut.conf.d/gentoo-systemd.conf.example | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 dracut.conf.d/gentoo-systemd.conf.example
diff --git a/dracut.conf.d/gentoo-systemd.conf.example b/dracut.conf.d/gentoo-systemd.conf.example
new file mode 100644
index 0000000..00af70b
--- /dev/null
+++ b/dracut.conf.d/gentoo-systemd.conf.example
@@ -0,0 +1,5 @@
+# /etc/dracut.conf.d/gentoo-systemd.conf
+
+# Paths of systemd dirs on Gentoo
+systemdutildir=/usr/lib/systemd
+systemdsystemunitdir=/usr/lib/systemd/system

View File

@ -0,0 +1,22 @@
From f67a1f7f64bbc48edbcf76a09cac0573ea626653 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 09:35:58 +0200
Subject: [PATCH] gentoo.conf: set udevdir
---
dracut.conf.d/gentoo.conf.example | 2 ++
1 file changed, 2 insertions(+)
diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example
index f5aa8ed..411f9a0 100644
--- a/dracut.conf.d/gentoo.conf.example
+++ b/dracut.conf.d/gentoo.conf.example
@@ -1,6 +1,8 @@
# /etc/dracut.conf.d/gentoo-openrc.conf
# Dracut config file customized for Gentoo Base System release 2
+udevdir=/lib/udev
+
#
# Modules
#

View File

@ -0,0 +1,25 @@
From 823311ea3b7bd74570e56a804b7dc166d6b74e27 Mon Sep 17 00:00:00 2001
From: Cong Wang <xiyou.wangcong@gmail.com>
Date: Thu, 26 Jul 2012 15:39:13 +0800
Subject: [PATCH] 90kernel-modules: remove unused variables in install()
The local variables in install() are unused, can be removed.
Cc: Harald Hoyer <harald@redhat.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
---
modules.d/90kernel-modules/module-setup.sh | 1 -
1 file changed, 1 deletion(-)
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
index 1632367..5018dc1 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -75,7 +75,6 @@ installkernel() {
}
install() {
- local _f i
[ -f /etc/modprobe.conf ] && dracut_install /etc/modprobe.conf
dracut_install -o /{etc,lib}/modprobe.d/*.conf
inst_hook cmdline 01 "$moddir/parse-kernel.sh"

View File

@ -0,0 +1,22 @@
From 15f0b1f62446cb1a28166f3d53d63f00557f42a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 11:38:04 +0200
Subject: [PATCH] 90multipath: added kpartx.rules; multipath.rules - different
prefix
---
modules.d/90multipath/module-setup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index 98748d3..862a8ed 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -86,6 +86,6 @@ install() {
inst_hook pre-trigger 02 "$moddir/multipathd.sh"
inst_hook cleanup 02 "$moddir/multipathd-stop.sh"
- inst_rules 40-multipath.rules
+ inst_rules 40-multipath.rules 65-multipath.rules 66-kpartx.rules
}

View File

@ -0,0 +1,77 @@
From 24ba78cb77b3a8ce50902da1795a2d3cdac11691 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 11:50:50 +0200
Subject: [PATCH] Makefile: fixed dracut-install make target
---
Makefile | 27 +++++++++++++++++----------
dracut.spec | 1 +
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/Makefile b/Makefile
index d013cbc..0dbc6eb 100644
--- a/Makefile
+++ b/Makefile
@@ -33,17 +33,24 @@ manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages)
.PHONY: install clean archive rpm testimage test all check AUTHORS doc
-DRACUT_INSTALL_BIN = install/dracut-install
-
-DRACUT_INSTALL_OBJECTS = \
- install/dracut-install.o \
- install/hashmap.o\
- install/log.o \
- install/util.o
+DRACUT_INSTALL_BIN = dracut-install
all: syncheck dracut-version.sh $(DRACUT_INSTALL_BIN)
-$(DRACUT_INSTALL_BIN): $(DRACUT_INSTALL_OBJECTS)
+DRACUT_INSTALL_SOURCE = \
+ install/dracut-install.c \
+ install/hashmap.c\
+ install/log.c \
+ install/util.c
+
+DRACUT_INSTALL_HEADER = \
+ install/hashmap.h \
+ install/log.h \
+ install/macro.h \
+ install/util.h
+
+$(DRACUT_INSTALL_BIN): $(DRACUT_INSTALL_SOURCE) $(DRACUT_INSTALL_HEADER)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $(DRACUT_INSTALL_BIN) $(DRACUT_INSTALL_SOURCE)
indent:
indent -i8 -nut -br -linux -l120 install/dracut-install.c
@@ -95,7 +102,7 @@ install: doc dracut-version.sh
ln -s ../dracut-shutdown.service \
$(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants/dracut-shutdown.service; \
fi
- if [ -x $(DRACUT_INSTALL_BIN) ]; then \
+ if [ -f $(DRACUT_INSTALL_BIN) ]; then \
install -m 0755 $(DRACUT_INSTALL_BIN) $(DESTDIR)$(pkglibdir)/dracut-install; \
fi
@@ -108,7 +115,7 @@ clean:
$(RM) */*/*~
$(RM) test-*.img
$(RM) dracut-*.rpm dracut-*.tar.bz2
- $(RM) $(DRACUT_INSTALL_BIN) $(DRACUT_INSTALL_OBJECTS)
+ $(RM) $(DRACUT_INSTALL_BIN)
$(RM) $(manpages) dracut.html
$(MAKE) -C test clean
diff --git a/dracut.spec b/dracut.spec
index 0d4062f..d960506 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -286,6 +286,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/90multipath
%{dracutlibdir}/modules.d/90qemu
%{dracutlibdir}/modules.d/91crypt-gpg
+%{dracutlibdir}/modules.d/91crypt-loop
%{dracutlibdir}/modules.d/95debug
%{dracutlibdir}/modules.d/95resume
%{dracutlibdir}/modules.d/95rootfs-block

View File

@ -0,0 +1,21 @@
From 15976a06701fc565b591e2bbfc36d0f5c3daac2b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 12:43:20 +0200
Subject: [PATCH] multipath/module-setup.sh: add dm dependency
---
modules.d/90multipath/module-setup.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index 862a8ed..f9c1f81 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -24,6 +24,7 @@ check() {
depends() {
echo rootfs-block
+ echo dm
return 0
}

View File

@ -0,0 +1,85 @@
From 4a1255bc38937714fb76702780147d0be465131d Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 12:27:29 +0200
Subject: [PATCH] Makefile: use symlink for topsrcdir/dracut-install
---
Makefile | 34 ++++++++++++++--------------------
1 file changed, 14 insertions(+), 20 deletions(-)
diff --git a/Makefile b/Makefile
index 0dbc6eb..28381df 100644
--- a/Makefile
+++ b/Makefile
@@ -33,24 +33,18 @@ manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages)
.PHONY: install clean archive rpm testimage test all check AUTHORS doc
-DRACUT_INSTALL_BIN = dracut-install
+all: syncheck dracut-version.sh dracut-install
-all: syncheck dracut-version.sh $(DRACUT_INSTALL_BIN)
+DRACUT_INSTALL_OBJECTS = \
+ install/dracut-install.o \
+ install/hashmap.o\
+ install/log.o \
+ install/util.o
-DRACUT_INSTALL_SOURCE = \
- install/dracut-install.c \
- install/hashmap.c\
- install/log.c \
- install/util.c
+install/dracut-install: $(DRACUT_INSTALL_OBJECTS)
-DRACUT_INSTALL_HEADER = \
- install/hashmap.h \
- install/log.h \
- install/macro.h \
- install/util.h
-
-$(DRACUT_INSTALL_BIN): $(DRACUT_INSTALL_SOURCE) $(DRACUT_INSTALL_HEADER)
- $(CC) $(CFLAGS) $(LDFLAGS) -o $(DRACUT_INSTALL_BIN) $(DRACUT_INSTALL_SOURCE)
+dracut-install: install/dracut-install
+ ln -fs $< $@
indent:
indent -i8 -nut -br -linux -l120 install/dracut-install.c
@@ -86,7 +80,7 @@ install: doc dracut-version.sh
mkdir -p $(DESTDIR)$(sysconfdir)/dracut.conf.d
install -m 0755 dracut-functions.sh $(DESTDIR)$(pkglibdir)/dracut-functions.sh
install -m 0755 dracut-version.sh $(DESTDIR)$(pkglibdir)/dracut-version.sh
- ln -s dracut-functions.sh $(DESTDIR)$(pkglibdir)/dracut-functions
+ ln -fs dracut-functions.sh $(DESTDIR)$(pkglibdir)/dracut-functions
install -m 0755 dracut-logger.sh $(DESTDIR)$(pkglibdir)/dracut-logger.sh
install -m 0755 dracut-initramfs-restore.sh $(DESTDIR)$(pkglibdir)/dracut-initramfs-restore
cp -arx modules.d $(DESTDIR)$(pkglibdir)
@@ -94,7 +88,7 @@ install: doc dracut-version.sh
for i in $(man5pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man5/$${i##*/}; done
for i in $(man7pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man7/$${i##*/}; done
for i in $(man8pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man8/$${i##*/}; done
- ln -s dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.kernel.7
+ ln -fs dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.kernel.7
if [ -n "$(systemdsystemunitdir)" ]; then \
mkdir -p $(DESTDIR)$(systemdsystemunitdir); \
install -m 0644 dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir); \
@@ -102,8 +96,8 @@ install: doc dracut-version.sh
ln -s ../dracut-shutdown.service \
$(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants/dracut-shutdown.service; \
fi
- if [ -f $(DRACUT_INSTALL_BIN) ]; then \
- install -m 0755 $(DRACUT_INSTALL_BIN) $(DESTDIR)$(pkglibdir)/dracut-install; \
+ if [ -f install/dracut-install ]; then \
+ install -m 0755 install/dracut-install $(DESTDIR)$(pkglibdir)/dracut-install; \
fi
dracut-version.sh:
@@ -115,7 +109,7 @@ clean:
$(RM) */*/*~
$(RM) test-*.img
$(RM) dracut-*.rpm dracut-*.tar.bz2
- $(RM) $(DRACUT_INSTALL_BIN)
+ $(RM) $(DRACUT_INSTALL_BIN) install/dracut-install $(DRACUT_INSTALL_OBJECTS)
$(RM) $(manpages) dracut.html
$(MAKE) -C test clean

View File

@ -0,0 +1,23 @@
From 93d7b823b43207323ca7a2947103b668e905eb94 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 14:23:31 +0200
Subject: [PATCH] systemd/dracut-cmdline.sh: output dracut version
---
modules.d/98systemd/dracut-cmdline.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/modules.d/98systemd/dracut-cmdline.sh b/modules.d/98systemd/dracut-cmdline.sh
index 77ad121..927b99a 100755
--- a/modules.d/98systemd/dracut-cmdline.sh
+++ b/modules.d/98systemd/dracut-cmdline.sh
@@ -12,6 +12,9 @@ if [ -f /dracut-state.sh ]; then
fi
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+[ -f /etc/initrd-release ] && . /etc/initrd-release
+[ -n "$VERSION" ] && info "dracut-$VERSION"
+
source_conf /etc/conf.d
# run scriptlets to parse the command line

View File

@ -0,0 +1,42 @@
From af3b67b21308a7b91bb423ae93af54a6a3e41afd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 15:05:21 +0200
Subject: [PATCH] 95rootfs-block: fix left fsck rel. checks
---
modules.d/95rootfs-block/mount-root.sh | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
index 670f6e3..ef8ca3c 100755
--- a/modules.d/95rootfs-block/mount-root.sh
+++ b/modules.d/95rootfs-block/mount-root.sh
@@ -52,11 +52,11 @@ mount_root() {
fastboot=yes
fi
- if [ -f "$NEWROOT"/fsckoptions ]; then
- fsckoptions=$(cat "$NEWROOT"/fsckoptions)
- fi
-
if ! getargbool 0 rd.skipfsck; then
+ if [ -f "$NEWROOT"/fsckoptions ]; then
+ fsckoptions=$(cat "$NEWROOT"/fsckoptions)
+ fi
+
if [ -f "$NEWROOT"/forcefsck ] || getargbool 0 forcefsck ; then
fsckoptions="-f $fsckoptions"
elif [ -f "$NEWROOT"/.autofsck ]; then
@@ -130,8 +130,10 @@ mount_root() {
mount -o remount "$NEWROOT" 2>&1 | vinfo
fi
- [ -f "$NEWROOT"/forcefsck ] && rm -f "$NEWROOT"/forcefsck 2>/dev/null
- [ -f "$NEWROOT"/.autofsck ] && rm -f "$NEWROOT"/.autofsck 2>/dev/null
+ if ! getargbool 0 rd.skipfsck; then
+ [ -f "$NEWROOT"/forcefsck ] && rm -f "$NEWROOT"/forcefsck 2>/dev/null
+ [ -f "$NEWROOT"/.autofsck ] && rm -f "$NEWROOT"/.autofsck 2>/dev/null
+ fi
}
if [ -n "$root" -a -z "${root%%block:*}" ]; then

View File

@ -0,0 +1,78 @@
From 5afa95791594383c1f1ef7a757a7482717d6fd5f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 15:05:22 +0200
Subject: [PATCH] 98usrmount: use rw and ro options instead of rd.usrmount.ro
In result /usr is forced to be mounted ro or rw along with /.
---
dracut.cmdline.7.asc | 12 ++++++++----
modules.d/98usrmount/mount-usr.sh | 18 +++++++++---------
2 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
index 755d641..8f642f3 100644
--- a/dracut.cmdline.7.asc
+++ b/dracut.cmdline.7.asc
@@ -61,6 +61,14 @@ rootfstype=ext3
_/etc/fstab_ of the real root will be parsed for special mount options and
mounted accordingly.
+**ro**::
+ force mounting _/_ and _/usr_ (if it is a separate device) read-only. If
+ none of ro and rw is present, both are mounted according to _/etc/fstab_.
+
+**rw**::
+ force mounting _/_ and _/usr_ (if it is a separate device) read-write.
+ See also ro option.
+
**rd.fstab=0**::
do not honor special mount options for the root filesystem found in
_/etc/fstab_ of the real root.
@@ -81,10 +89,6 @@ resume=UUID=3f5ad593-4546-4a94-a374-bcfb68aa11f7
the init system performs fsck before remount, you might want to use this
option to avoid duplication.
-**rd.usrmount.ro**:
- force mounting _/usr_ read-only. Use this option if your init system
- performs remount of _/usr_ the same as it does with rootfs.
-
Misc
~~~~
diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
index c277d74..98e08e3 100755
--- a/modules.d/98usrmount/mount-usr.sh
+++ b/modules.d/98usrmount/mount-usr.sh
@@ -57,9 +57,12 @@ mount_usr()
[ -n "$rflags" ]; then
# for btrfs subvolumes we have to mount /usr with the same rflags
_opts="${_opts:+${_opts},}${rflags}"
- elif getarg ro; then
- # if "ro" is specified, we want /usr to be readonly, too
+ elif getargbool 0 ro; then
+ # if "ro" is specified, we want /usr to be mounted read-only
_opts="${_opts:+${_opts},}ro"
+ elif getargbool 0 rw; then
+ # if "rw" is specified, we want /usr to be mounted read-write
+ _opts="${_opts:+${_opts},}rw"
fi
echo "$_dev ${NEWROOT}${_mp} $_fs ${_opts} $_freq $_passno"
_usr_found="1"
@@ -77,13 +80,10 @@ mount_usr()
[ $_fsck_ret -ne 255 ] && echo $_fsck_ret >/run/initramfs/usr-fsck
fi
fi
- if getargbool 0 rd.usrmount.ro; then
- info "Mounting /usr (read-only forced)"
- mount -r "$NEWROOT/usr" 2>&1 | vinfo
- else
- info "Mounting /usr"
- mount "$NEWROOT/usr" 2>&1 | vinfo
- fi
+
+ info "Mounting /usr"
+ mount "$NEWROOT/usr" 2>&1 | vinfo
+
if ! ismounted "$NEWROOT/usr"; then
warn "Mounting /usr to $NEWROOT/usr failed"
warn "*** Dropping you to a shell; the system will continue"

View File

@ -0,0 +1,22 @@
From b56e174322f9998b86e6272fdcca009d2a2ab7a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 15:05:23 +0200
Subject: [PATCH] 98usrmount: print mount options
---
modules.d/98usrmount/mount-usr.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
index 98e08e3..f4d59b3 100755
--- a/modules.d/98usrmount/mount-usr.sh
+++ b/modules.d/98usrmount/mount-usr.sh
@@ -81,7 +81,7 @@ mount_usr()
fi
fi
- info "Mounting /usr"
+ info "Mounting /usr with -o $_opts"
mount "$NEWROOT/usr" 2>&1 | vinfo
if ! ismounted "$NEWROOT/usr"; then

View File

@ -0,0 +1,23 @@
From 221c342d5068c1fa05e38c44b1044a0aacae4a5c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 15:05:24 +0200
Subject: [PATCH] 98usrmount: [ "x$_usr_found" != "x" ] - removed redundant
'x'
---
modules.d/98usrmount/mount-usr.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
index f4d59b3..cca41c3 100755
--- a/modules.d/98usrmount/mount-usr.sh
+++ b/modules.d/98usrmount/mount-usr.sh
@@ -70,7 +70,7 @@ mount_usr()
fi
done < "$NEWROOT/etc/fstab" >> /etc/fstab
- if [ "x$_usr_found" != "x" ]; then
+ if [ "$_usr_found" != "" ]; then
# we have to mount /usr
_fsck_ret=0
if ! getargbool 0 rd.skipfsck; then

View File

@ -0,0 +1,57 @@
From 5767201eaf7d2265066d17cd5b97691cbb191e3b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 15:05:25 +0200
Subject: [PATCH] dracut-lib: new functions: listlist and are_lists_eq
listlist is like strstr for lists with specified separator and
are_lists_eq uses listlist to check equality of specified lists.
---
modules.d/99base/dracut-lib.sh | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
index 786661e..2eb1224 100755
--- a/modules.d/99base/dracut-lib.sh
+++ b/modules.d/99base/dracut-lib.sh
@@ -906,3 +906,41 @@ export_n()
[ -n "$val" ] && eval $var=\"$val\"
done
}
+
+# returns OK if list1 contains all elements of list2, i.e. checks if list2 is a
+# sublist of list1. An order and a duplication doesn't matter.
+#
+# $1 = separator
+# $2 = list1
+# $3 = list2
+# $4 = ignore values, separated by $1
+listlist() {
+ local _sep="$1"
+ local _list="${_sep}${2}${_sep}"
+ local _sublist="$3"
+ [ -n "$4" ] && local _iglist="${_sep}${4}${_sep}"
+ local IFS="$_sep"
+ local _v
+
+ [ "$_list" = "$_sublist" ] && return 0
+
+ for _v in $_sublist; do
+ if [ -n "$_v" ] && ! ( [ -n "$_iglist" ] && strstr "$_iglist" "$_v" )
+ then
+ strstr "$_list" "$_v" || return 1
+ fi
+ done
+
+ return 0
+}
+
+# returns OK if both lists contain the same values. An order and a duplication
+# doesn't matter.
+#
+# $1 = separator
+# $2 = list1
+# $3 = list2
+# $4 = ignore values, separated by $1
+are_lists_eq() {
+ listlist "$1" "$2" "$3" "$4" && listlist "$1" "$3" "$2" "$4"
+}

View File

@ -0,0 +1,108 @@
From 79148c2945e4799796b24cadf1769e413841f768 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 15:05:26 +0200
Subject: [PATCH] apply "ro" and "rw" options from cmdline to / mount
rflags is no longer guaranteed to be non empty. / is mounted according
to rootflags parameter but forced ro at first. Later it is remounted
according to /etc/fstab + rootflags parameter and "ro"/"rw". If
parameters are still the same as for first mount, / isn't remounted.
Conflicts:
modules.d/95rootfs-block/mount-root.sh
modules.d/99base/parse-root-opts.sh
---
modules.d/95rootfs-block/mount-root.sh | 35 ++++++++--------------------------
modules.d/99base/parse-root-opts.sh | 11 ++++-------
2 files changed, 12 insertions(+), 34 deletions(-)
diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
index ef8ca3c..de9753a 100755
--- a/modules.d/95rootfs-block/mount-root.sh
+++ b/modules.d/95rootfs-block/mount-root.sh
@@ -5,32 +5,13 @@
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
type det_fs >/dev/null 2>&1 || . /lib/fs-lib.sh
-filter_rootopts() {
- rootopts=$1
- # strip ro and rw options
- local OLDIFS="$IFS"
- IFS=,
- set -- $rootopts
- IFS="$OLDIFS"
- local v
- while [ $# -gt 0 ]; do
- case $1 in
- defaults);;
- *)
- v="$v,${1}";;
- esac
- shift
- done
- rootopts=${v#,}
- echo $rootopts
-}
-
mount_root() {
local _ret
+ local _rflags_ro="$rflags,ro"
# sanity - determine/fix fstype
rootfs=$(det_fs "${root#block:}" "$fstype")
- while ! mount -t ${rootfs} -o "$rflags",ro "${root#block:}" "$NEWROOT"; do
- warn "Failed to mount -t ${rootfs} -o $rflags,ro ${root#block:} $NEWROOT"
+ while ! mount -t ${rootfs} -o "$_rflags_ro" "${root#block:}" "$NEWROOT"; do
+ warn "Failed to mount -t ${rootfs} -o $_rflags_ro ${root#block:} $NEWROOT"
fsck_ask_err
done
@@ -96,13 +77,13 @@ mount_root() {
break
fi
done < "$NEWROOT/etc/fstab"
-
- rootopts=$(filter_rootopts $rootopts)
fi
# we want rootflags (rflags) to take precedence so prepend rootopts to
- # them; rflags is guaranteed to not be empty
- rflags="${rootopts:+${rootopts},}${rflags}"
+ # them
+ rflags="${rootopts},${rflags}"
+ rflags="${rflags#,}"
+ rflags="${rflags%,}"
# backslashes are treated as escape character in fstab
# esc_root=$(echo ${root#block:} | sed 's,\\,\\\\,g')
@@ -125,7 +106,7 @@ mount_root() {
if ! ismounted "$NEWROOT"; then
info "Mounting ${root#block:} with -o ${rflags}"
mount "$NEWROOT" 2>&1 | vinfo
- else
+ elif ! are_lists_eq , "$rflags" "$_rflags_ro" defaults; then
info "Remounting ${root#block:} with -o ${rflags}"
mount -o remount "$NEWROOT" 2>&1 | vinfo
fi
diff --git a/modules.d/99base/parse-root-opts.sh b/modules.d/99base/parse-root-opts.sh
index 44dcc09..7b0b758 100755
--- a/modules.d/99base/parse-root-opts.sh
+++ b/modules.d/99base/parse-root-opts.sh
@@ -4,13 +4,10 @@
root=$(getarg root=)
-if rflags="$(getarg rootflags=)"; then
- getarg rw && rflags="${rflags},rw"
- getarg ro && rflags="${rflags},ro"
-else
- getarg rw && rflags=rw
- getarg ro && rflags=ro
-fi
+rflags="$(getarg rootflags=)"
+getargbool 0 rw && rflags="${rflags},rw"
+getargbool 0 ro && rflags="${rflags},ro"
+rflags="${rflags#,}"
fstype="$(getarg rootfstype=)"
if [ -z "$fstype" ]; then

View File

@ -0,0 +1,187 @@
From 1f4aaaeb5ea6f083a0130a463bfd60ff91b24ac9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 15:05:27 +0200
Subject: [PATCH] modules.d/99base/mount-hook.sh is not used - removed
---
modules.d/99base/mount-hook.sh | 171 -----------------------------------------
1 file changed, 171 deletions(-)
delete mode 100755 modules.d/99base/mount-hook.sh
diff --git a/modules.d/99base/mount-hook.sh b/modules.d/99base/mount-hook.sh
deleted file mode 100755
index e32ecae..0000000
--- a/modules.d/99base/mount-hook.sh
+++ /dev/null
@@ -1,171 +0,0 @@
-#!/bin/sh
-# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
-# ex: ts=8 sw=4 sts=4 et filetype=sh
-
-PATH=/usr/sbin:/usr/bin:/sbin:/bin
-type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
-type det_fs >/dev/null 2>&1 || [ -f /lib/fs-lib.sh ] && . /lib/fs-lib.sh
-# If fs-lib is not included use following det_fs replacement.
-type det_fs >/dev/null 2>&1 || det_fs() { echo "${2:-auto}"; }
-
-mountpoint="$1"
-ismounted "$mountpoint" && exit 0
-
-if [ -f "$NEWROOT"/fastboot ] || getargbool 0 fastboot ; then
- fastboot=yes
-fi
-
-filter_rootopts() {
- rootopts=$1
- # strip ro and rw options
- local OLDIFS="$IFS"
- IFS=,
- set -- $rootopts
- IFS="$OLDIFS"
- local v
- while [ $# -gt 0 ]; do
- case $1 in
- rw|ro);;
- defaults);;
- *)
- v="$v,${1}";;
- esac
- shift
- done
- rootopts=${v#,}
- echo $rootopts
-}
-
-mount_root() {
- local _ret
- # sanity - determine/fix fstype
- rootfs=$(det_fs "${root#block:}" "$fstype")
- mount -t ${rootfs} -o "$rflags",ro "${root#block:}" "$NEWROOT"
-
- READONLY=
- fsckoptions=
- if [ -f "$NEWROOT"/etc/sysconfig/readonly-root ]; then
- . "$NEWROOT"/etc/sysconfig/readonly-root
- fi
-
- if getargbool 0 "readonlyroot=" -y readonlyroot; then
- READONLY=yes
- fi
-
- if getarg noreadonlyroot ; then
- READONLY=no
- fi
-
- if [ -f "$NEWROOT"/fastboot ] || getargbool 0 fastboot ; then
- fastboot=yes
- fi
-
- if [ -f "$NEWROOT"/fsckoptions ]; then
- fsckoptions=$(cat "$NEWROOT"/fsckoptions)
- fi
-
- if [ -f "$NEWROOT"/forcefsck ] || getargbool 0 forcefsck ; then
- fsckoptions="-f $fsckoptions"
- elif [ -f "$NEWROOT"/.autofsck ]; then
- [ -f "$NEWROOT"/etc/sysconfig/autofsck ] && . "$NEWROOT"/etc/sysconfig/autofsck
- if [ "$AUTOFSCK_DEF_CHECK" = "yes" ]; then
- AUTOFSCK_OPT="$AUTOFSCK_OPT -f"
- fi
- if [ -n "$AUTOFSCK_SINGLEUSER" ]; then
- warn "*** Warning -- the system did not shut down cleanly. "
- warn "*** Dropping you to a shell; the system will continue"
- warn "*** when you leave the shell."
- emergency_shell
- fi
- fsckoptions="$AUTOFSCK_OPT $fsckoptions"
- fi
-
- rootopts=
- if getargbool 1 rd.fstab -d -n rd_NO_FSTAB \
- && ! getarg rootflags \
- && [ -f "$NEWROOT/etc/fstab" ] \
- && ! [ -L "$NEWROOT/etc/fstab" ]; then
- # if $NEWROOT/etc/fstab contains special mount options for
- # the root filesystem,
- # remount it with the proper options
- rootopts="defaults"
- while read dev mp fs opts rest; do
- # skip comments
- [ "${dev%%#*}" != "$dev" ] && continue
-
- if [ "$mp" = "/" ]; then
- # sanity - determine/fix fstype
- rootfs=$(det_fs "${root#block:}" "$fs")
- rootopts=$opts
- break
- fi
- done < "$NEWROOT/etc/fstab"
-
- rootopts=$(filter_rootopts $rootopts)
- fi
-
- # we want rootflags (rflags) to take precedence so prepend rootopts to
- # them; rflags is guaranteed to not be empty
- rflags="${rootopts:+"${rootopts},"}${rflags}"
-
- umount "$NEWROOT"
-
- # backslashes are treated as escape character in fstab
- # esc_root=$(echo ${root#block:} | sed 's,\\,\\\\,g')
- # printf '%s %s %s %s 1 1 \n' "$esc_root" "$NEWROOT" "$rootfs" "$rflags" >/etc/fstab
-
- if [ -z "$fastboot" -a "$READONLY" != "yes" ] && ! strstr "${rflags},${rootopts}" _netdev; then
- fsck_single "${root#block:}" "$rootfs" "$rflags" "$fsckoptions"
- _ret=$?
- [ $_ret -ne 255 ] && echo $_ret >/run/initramfs/root-fsck
- fi
-
- info "Remounting ${root#block:} with -o ${rflags}"
- mount -t "$rootfs" -o "$rflags" "${root#block:}" "$NEWROOT" 2>&1 | vinfo
-
- [ -f "$NEWROOT"/forcefsck ] && rm -f "$NEWROOT"/forcefsck 2>/dev/null
- [ -f "$NEWROOT"/.autofsck ] && rm -f "$NEWROOT"/.autofsck 2>/dev/null
-}
-
-sub_mount_ready() {
- local _dev _mp _rest
- while read _dev _mp _rest; do
- [ "$1" = "$_mp" ] && continue
-
- if [ "${1##$_mp}" != "$1" ]; then
- ismounted "$_mp" || return 1
- fi
- done < "/etc/fstab"
- return 0
-}
-
-if [ "$mountpoint" = "$NEWROOT" ]; then
- mount_root
- exit $?
-fi
-
-while read _dev _mp _fs _opts _rest; do
- if [ "$_mp" = "$mountpoint" ]; then
- _found="1"
- break
- fi
-done < "/etc/fstab"
-
-[ "$_found" = "1" ] || exit 1
-
-sub_mount_ready "$mountpoint" || exit 1
-
-if [ -z "$fastboot" ] && ! strstr "${_opts}" _netdev; then
- # fsck?
- fsck_single "$_dev" "$_fs" "$_opts"
- _ret=$?
- if [ "${mountpoint##$NEWROOT}" != "$mountpoint" ]; then
- echo $_ret >/run/initramfs/${mountpoint##$NEWROOT}-fsck
- fi
-fi
-
-info "Mounting $_dev on $mountpoint"
-mount "$mountpoint" 2>&1 | vinfo
-
-ismounted "$mountpoint" || exit 1
-

View File

@ -0,0 +1,58 @@
From 6a5170a15f67a72bcec427a252d23ead4f3ae89a Mon Sep 17 00:00:00 2001
From: Frederic Crozat <fcrozat@suse.com>
Date: Thu, 26 Jul 2012 15:16:22 +0200
Subject: [PATCH] PATCH: add support for xfs / reiserfs separate journal
device
xfs and reiserfs (among other) supports storing journal data to a
separate device. Unfortunately, XFS requires this information to boot
properly (reiserfs can embed the information in its metadata but you
might want to override it).
Attached patch ensure host information are stored in initramfs and also
allows to give data over kernel commandline.
--
Frederic Crozat <fcrozat@suse.com>
SUSE
>From a7c592b9bb7de0d7874ae51d02944a7eee2ec75b Mon Sep 17 00:00:00 2001
From: Frederic Crozat <fcrozat@suse.com>
Date: Tue, 24 Jul 2012 18:52:17 +0200
Subject: [PATCH] Add support for separate journal on reiserfs and xfs
---
modules.d/95rootfs-block/mount-root.sh | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
index de9753a..a6cba12 100755
--- a/modules.d/95rootfs-block/mount-root.sh
+++ b/modules.d/95rootfs-block/mount-root.sh
@@ -7,9 +7,26 @@ type det_fs >/dev/null 2>&1 || . /lib/fs-lib.sh
mount_root() {
local _ret
- local _rflags_ro="$rflags,ro"
+ local _rflags_ro
# sanity - determine/fix fstype
rootfs=$(det_fs "${root#block:}" "$fstype")
+
+ journaldev=$(getarg root.journaldev)
+ if [ -n $journaldev ]; then
+ case "$rootfs" in
+ xfs)
+ rflags="${rflags:+${rflags},}logdev=$journaldev"
+ ;;
+ reiserfs)
+ fsckoptions="-j $journaldev $fsckoptions"
+ rflags="${rflags:+${rflags},}jdev=$journaldev"
+ ;;
+ *);;
+ esac
+ fi
+
+ _rflags_ro="$rflags,ro"
+
while ! mount -t ${rootfs} -o "$_rflags_ro" "${root#block:}" "$NEWROOT"; do
warn "Failed to mount -t ${rootfs} -o $_rflags_ro ${root#block:} $NEWROOT"
fsck_ask_err

View File

@ -0,0 +1,47 @@
From 81672479afb4806568f1dea7fac9b8d7271c71f6 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 17:00:07 +0200
Subject: [PATCH] dracut-functions.sh: add find_mp_fstype()
---
dracut-functions.sh | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 14c100d..0332351 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -357,6 +357,33 @@ find_dev_fstype() {
return 1
}
+# find_dev_fstype <device>
+# Echo the filesystem type for a given device.
+# /proc/self/mountinfo is taken as the primary source of information
+# and /etc/fstab is used as a fallback.
+# No newline is appended!
+# Example:
+# $ find_dev_fstype /dev/sda2;echo
+# ext4
+find_mp_fstype() {
+ local _x _mpt _majmin _dev _fs _maj _min
+ while read _x _x _majmin _x _mpt _x _x _fs _dev _x; do
+ [[ $_mpt = $1 ]] || continue
+ echo -n $_fs;
+ return 0;
+ done < /proc/self/mountinfo
+
+ # fall back to /etc/fstab
+ while read _dev _mpt _fs _x; do
+ [[ $_mpt = $1 ]] || continue
+ echo -n $_fs;
+ return 0;
+ done < /etc/fstab
+
+ return 1
+}
+
+
# finds the major:minor of the block device backing the root filesystem.
find_root_block_device() { find_block_device /; }

View File

@ -0,0 +1,68 @@
From 3cc4c8ba9b43ff646701d4236c1a70860c16d02c Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 17:00:47 +0200
Subject: [PATCH] rootfs-block/module-setup.sh: add support for xfs / reiserfs
separate journal device
xfs and reiserfs (among other) supports storing journal data to a
separate device. Unfortunately, XFS requires this information to boot
properly (reiserfs can embed the information in its metadata but you
might want to override it).
Frederic Crozat <fcrozat@suse.com>
---
modules.d/95rootfs-block/module-setup.sh | 41 ++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
index 243a174..4d87fab 100755
--- a/modules.d/95rootfs-block/module-setup.sh
+++ b/modules.d/95rootfs-block/module-setup.sh
@@ -2,6 +2,47 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
+search_option() {
+ rootopts=$1
+ option=$2
+ local OLDIFS="$IFS"
+ IFS=,
+ set -- $rootopts
+ IFS="$OLDIFS"
+ while [ $# -gt 0 ]; do
+ case $1 in
+ $option=*)
+ echo ${1#${option}=}
+ break
+ esac
+ shift
+ done
+}
+
+check() {
+ rootopts="defaults"
+ while read dev mp fs opts dump fsck; do
+ # skip comments
+ [ "${dev%%#*}" != "$dev" ] && continue
+
+ if [ "$mp" = "/" ]; then
+ # sanity - determine/fix fstype
+ rootfs=$(find_mp_fstype /)
+ rootfs=${rootfs:-$fs}
+ rootopts=$opts
+ break
+ fi
+ done < "$NEWROOT/etc/fstab"
+
+ [ "$rootfs" = "reiserfs" ] && journaldev=$(search_option $rootopts "jdev")
+ [ "$rootfs" = "xfs" ] && journaldev=$(search_option $rootopts "logdev")
+ if [ -n "$journaldev" ]; then
+ echo "root.journaldev=$journaldev" >> "${initdir}/etc/cmdline.d/95root-jurnaldev.conf"
+ fi
+ return 0
+
+}
+
depends() {
echo fs-lib
}

View File

@ -0,0 +1,31 @@
From ec5e5ae27a986f6bc3d273ba037533b72ab069e9 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 17:05:24 +0200
Subject: [PATCH] dracut-functions.sh: corrected usage comment of
find_mp_fstype()
---
dracut-functions.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 0332351..df450ef 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -357,13 +357,13 @@ find_dev_fstype() {
return 1
}
-# find_dev_fstype <device>
-# Echo the filesystem type for a given device.
+# find_mp_fstype <mountpoint>
+# Echo the filesystem type for a given mountpoint.
# /proc/self/mountinfo is taken as the primary source of information
# and /etc/fstab is used as a fallback.
# No newline is appended!
# Example:
-# $ find_dev_fstype /dev/sda2;echo
+# $ find_mp_fstype /;echo
# ext4
find_mp_fstype() {
local _x _mpt _majmin _dev _fs _maj _min

View File

@ -0,0 +1,100 @@
From ff3953efe1aec2229273cd59e7d35a540de0e476 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 16:44:09 +0200
Subject: [PATCH] ro_mnt - option at build time to force ro mount of / and
/usr
---
dracut.conf | 3 +++
dracut.conf.5.asc | 3 +++
dracut.sh | 6 +++++-
modules.d/99base/module-setup.sh | 3 +++
4 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/dracut.conf b/dracut.conf
index f47d571..f912acc 100644
--- a/dracut.conf
+++ b/dracut.conf
@@ -43,6 +43,9 @@ lvmconf="yes"
# inhibit installation of any fsck tools
#nofscks="yes"
+# mount / and /usr read-only by default
+#ro_mnt="no"
+
# set the directory for temporary files
# default: /var/tmp
#tmpdir=/tmp
diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc
index d17477d..89bbf61 100644
--- a/dracut.conf.5.asc
+++ b/dracut.conf.5.asc
@@ -97,6 +97,9 @@ If chrooted to another root other than the real root device, use --fstab and pro
*nofscks=*"__{yes|no}__"::
If specified, inhibit installation of any fsck tools.
+*ro_mnt*
+ Mount _/_ and _/usr_ read-only by default.
+
*kernel_only=*"__{yes|no}__"::
Only install kernel drivers and firmware files. (default=no)
diff --git a/dracut.sh b/dracut.sh
index d8b3354..eee829e 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -101,6 +101,7 @@ Creates initial ramdisk images for preloading modules
--nolvmconf Do not include local /etc/lvm/lvm.conf
--fscks [LIST] Add a space-separated list of fsck helpers.
--nofscks Inhibit installation of any fsck helpers.
+ --ro-mnt Mount / and /usr read-only by default.
-h, --help This message
--debug Output debug information of the build process
--profile Output profile information of the build process
@@ -261,6 +262,7 @@ TEMP=$(unset POSIXLY_CORRECT; getopt \
--long add-fstab: \
--long mount: \
--long nofscks: \
+ --long ro-mnt \
--long kmoddir: \
--long conf: \
--long confdir: \
@@ -326,6 +328,7 @@ while :; do
--add-fstab) push add_fstab_l "$2"; shift;;
--mount) push fstab_lines "$2"; shift;;
--nofscks) nofscks_l="yes";;
+ --ro-mnt) ro_mnt_l="yes";;
-k|--kmoddir) drivers_dir_l="$2"; shift;;
-c|--conf) conffile="$2"; shift;;
--confdir) confdir="$2"; shift;;
@@ -558,6 +561,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
[[ $compress_l ]] && compress=$compress_l
[[ $show_modules_l ]] && show_modules=$show_modules_l
[[ $nofscks_l ]] && nofscks="yes"
+[[ $ro_mnt_l ]] && ro_mnt="yes"
# eliminate IFS hackery when messing with fw_dir
fw_dir=${fw_dir//:/ }
@@ -779,7 +783,7 @@ fi
export initdir dracutbasedir dracutmodules drivers \
fw_dir drivers_dir debug no_kernel kernel_only \
add_drivers omit_drivers mdadmconf lvmconf filesystems \
- use_fstab fstab_lines libdirs fscks nofscks \
+ use_fstab fstab_lines libdirs fscks nofscks ro_mnt \
stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
debug host_fs_types host_devs sshkey add_fstab \
DRACUT_VERSION udevdir systemdutildir systemdsystemunitdir \
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
index f20ca1a..dde1285 100755
--- a/modules.d/99base/module-setup.sh
+++ b/modules.d/99base/module-setup.sh
@@ -50,6 +50,9 @@ install() {
fi
ln -fs /proc/self/mounts "$initdir/etc/mtab"
+ if [[ $ro_mnt = yes ]]; then
+ echo ro >> "${initdir}/etc/cmdline.d/base.conf"
+ fi
if [ -e /etc/os-release ]; then
. /etc/os-release

View File

@ -0,0 +1,82 @@
From 8aa9926839dc8ee861a44d21ae71fb33eee04ed1 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 17:22:14 +0200
Subject: [PATCH] mv rootfs-block/module-setup.sh:search_option() in
dracut-functions.sh
new function fs_get_option()
---
dracut-functions.sh | 20 ++++++++++++++++++++
modules.d/95rootfs-block/module-setup.sh | 21 ++-------------------
2 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index df450ef..fb28bdc 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -454,6 +454,26 @@ check_vol_slaves() {
return 1
}
+# fs_get_option <filesystem options> <search for option>
+# search for a specific option in a bunch of filesystem options
+# and return the value
+fs_get_option() {
+ local _fsopts=$1
+ local _option=$2
+ local OLDIFS="$IFS"
+ IFS=,
+ set -- $_fsopts
+ IFS="$OLDIFS"
+ while [ $# -gt 0 ]; do
+ case $1 in
+ $_option=*)
+ echo ${1#${_option}=}
+ break
+ esac
+ shift
+ done
+}
+
if [[ $DRACUT_INSTALL ]]; then
[[ $DRACUT_RESOLVE_LAZY ]] || export DRACUT_RESOLVE_DEPS=1
inst_dir() {
diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
index 4d87fab..8254289 100755
--- a/modules.d/95rootfs-block/module-setup.sh
+++ b/modules.d/95rootfs-block/module-setup.sh
@@ -2,23 +2,6 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-search_option() {
- rootopts=$1
- option=$2
- local OLDIFS="$IFS"
- IFS=,
- set -- $rootopts
- IFS="$OLDIFS"
- while [ $# -gt 0 ]; do
- case $1 in
- $option=*)
- echo ${1#${option}=}
- break
- esac
- shift
- done
-}
-
check() {
rootopts="defaults"
while read dev mp fs opts dump fsck; do
@@ -34,8 +17,8 @@ check() {
fi
done < "$NEWROOT/etc/fstab"
- [ "$rootfs" = "reiserfs" ] && journaldev=$(search_option $rootopts "jdev")
- [ "$rootfs" = "xfs" ] && journaldev=$(search_option $rootopts "logdev")
+ [ "$rootfs" = "reiserfs" ] && journaldev=$(fs_get_option $rootopts "jdev")
+ [ "$rootfs" = "xfs" ] && journaldev=$(fs_get_option $rootopts "logdev")
if [ -n "$journaldev" ]; then
echo "root.journaldev=$journaldev" >> "${initdir}/etc/cmdline.d/95root-jurnaldev.conf"
fi

View File

@ -0,0 +1,19 @@
From 25706eafacfa284e53ebb3d96b195697fb81041d Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 17:26:31 +0200
Subject: [PATCH] README.testsuite updated with requirements for
TEST-04-SYSTEMD
---
README.testsuite | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.testsuite b/README.testsuite
index 62fe503..cbc2ab7 100644
--- a/README.testsuite
+++ b/README.testsuite
@@ -9,3 +9,4 @@ netbsd-iscsi
nbd
dhcp
iscsi-initiator-utils
+TEST-04-FULL-SYSTEMD: systemd >= 187

View File

@ -0,0 +1,21 @@
From 96c6fa920255a3bf4e7cd7c974aa13814d74beb6 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 17:35:25 +0200
Subject: [PATCH] base/module-setup.sh: removed mount-hook
---
modules.d/99base/module-setup.sh | 1 -
1 file changed, 1 deletion(-)
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
index dde1285..097607a 100755
--- a/modules.d/99base/module-setup.sh
+++ b/modules.d/99base/module-setup.sh
@@ -39,7 +39,6 @@ install() {
dracut_install switch_root || dfatal "Failed to install switch_root"
inst_simple "$moddir/dracut-lib.sh" "/lib/dracut-lib.sh"
- inst_script "$moddir/mount-hook.sh" "/usr/bin/mount-hook"
inst_hook cmdline 10 "$moddir/parse-root-opts.sh"
mkdir -p "${initdir}/var"
[ -x /lib/systemd/systemd-timestamp ] && inst /lib/systemd/systemd-timestamp

View File

@ -0,0 +1,24 @@
From aa505d588f92c41e4060b75e8fde729a01fe9c6f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 15:58:27 +0200
Subject: [PATCH] parse-root-opts: first check for ro, later for rw
This order is already in 98usrmount.
---
modules.d/99base/parse-root-opts.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/99base/parse-root-opts.sh b/modules.d/99base/parse-root-opts.sh
index 7b0b758..b74eeb3 100755
--- a/modules.d/99base/parse-root-opts.sh
+++ b/modules.d/99base/parse-root-opts.sh
@@ -5,8 +5,8 @@
root=$(getarg root=)
rflags="$(getarg rootflags=)"
-getargbool 0 rw && rflags="${rflags},rw"
getargbool 0 ro && rflags="${rflags},ro"
+getargbool 0 rw && rflags="${rflags},rw"
rflags="${rflags#,}"
fstype="$(getarg rootfstype=)"

View File

@ -0,0 +1,24 @@
From 6ca264a1511eb181fb4ca58e25314b6930c2c2a7 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 18:12:05 +0200
Subject: [PATCH] nfs/module-setup.sh: check for "rpc.rpc" before running
chown
---
modules.d/95nfs/module-setup.sh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
index 0c07725..ecef635 100755
--- a/modules.d/95nfs/module-setup.sh
+++ b/modules.d/95nfs/module-setup.sh
@@ -71,6 +71,8 @@ install() {
# rpc user needs to be able to write to this directory to save the warmstart
# file
chmod 770 "$initdir/var/lib/rpcbind"
- chown rpc.rpc "$initdir/var/lib/rpcbind"
+ egrep -q '^rpc:' /etc/passwd \
+ && egrep -q '^rpc:' /etc/group \
+ && chown rpc.rpc "$initdir/var/lib/rpcbind"
}

227
0056-Added-cifs.patch Normal file
View File

@ -0,0 +1,227 @@
From d580636e97bffdd17124961e2f9db0aa2a645060 Mon Sep 17 00:00:00 2001
From: Mike Gorse <mgorse@suse.com>
Date: Thu, 26 Jul 2012 09:17:18 -0500
Subject: [PATCH] Added cifs
---
dracut.cmdline.7.asc | 15 +++++++++++
modules.d/95cifs/cifs-lib.sh | 36 ++++++++++++++++++++++++++
modules.d/95cifs/cifsroot.sh | 26 +++++++++++++++++++
modules.d/95cifs/module-setup.sh | 46 +++++++++++++++++++++++++++++++++
modules.d/95cifs/parse-cifsroot.sh | 52 ++++++++++++++++++++++++++++++++++++++
5 files changed, 175 insertions(+)
create mode 100755 modules.d/95cifs/cifs-lib.sh
create mode 100755 modules.d/95cifs/cifsroot.sh
create mode 100755 modules.d/95cifs/module-setup.sh
create mode 100755 modules.d/95cifs/parse-cifsroot.sh
diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
index 8f642f3..0b1b8a2 100644
--- a/dracut.cmdline.7.asc
+++ b/dracut.cmdline.7.asc
@@ -398,6 +398,21 @@ NFS
**rd.nfs.domain=**_<NFSv4 domain name>_::
Set the NFSv4 domain name. Will overwrite the settings in _/etc/idmap.conf_.
+CIFS
+~~~
+**root=**cifs://[_<username>_[:_<password>_]@]_<server-ip>_:_<root-dir>_::
+ mount cifs share from <server-ip>:/<root-dir>, if no server-ip is given, use
+ dhcp next_server. if server-ip is an IPv6 address it has to be put in
+ brackets, e.g. [2001:DB8::1]. If a username or password are not specified
+as part of the root, then they must be passed on the command line through
+cifsuser/cifspass.
+
+**cifsuser=_<username>_::
+ Set the cifs username, if not specified as part of the root.
+
+**cifspass=_<password>_::
+ Set the cifs password, if not specified as part of the root.
+
iSCSI
~~~~~
**root=**iscsi:[_<username>_:_<password>_[:_<reverse>_:_<password>_]@][_<servername>_]:[_<protocol>_]:[_<port>_][:[_<iscsi_iface_name>_]:[_<netdev_name>_]]:[_<LUN>_]:_<targetname>_::
diff --git a/modules.d/95cifs/cifs-lib.sh b/modules.d/95cifs/cifs-lib.sh
new file mode 100755
index 0000000..3cbe6dc
--- /dev/null
+++ b/modules.d/95cifs/cifs-lib.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+# cifs_to_var CIFSROOT
+# use CIFSROOT to set $server, $path, and $options.
+# CIFSROOT is something like: cifs://[<username>[:<password>]]@<host>/<path>
+# NETIF is used to get information from DHCP options, if needed.
+
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+cifs_to_var() {
+ local cifsuser; local cifspass
+ # Check required arguments
+ server=${1##cifs://}
+ cifsuser=${server%@*}
+ cifspass=${cifsuser#*:}
+ if [ "$cifspass" != "$cifsuser" ]; then
+ cifsuser=${cifsuser%:*}
+ else
+ cifspass=$(getarg cifspass)
+ fi
+ if [ "$cifsuser" != "$server" ]; then
+ server="${server#*@}"
+ else
+ cifsuser=$(getarg cifsuser)
+ fi
+
+ path=${server#*/}
+ server=${server%/*}
+
+ if [ ! "$cifsuser" -o ! "$cifspass" ]; then
+ die "For CIFS support you need to specify a cifsuser and cifspass either in the cifsuser and cifspass commandline parameters or in the root= CIFS URL."
+ fi
+ options="user=$cifsuser,pass=$cifspass"
+}
diff --git a/modules.d/95cifs/cifsroot.sh b/modules.d/95cifs/cifsroot.sh
new file mode 100755
index 0000000..7956d6f
--- /dev/null
+++ b/modules.d/95cifs/cifsroot.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+. /lib/cifs-lib.sh
+
+[ "$#" = 3 ] || exit 1
+
+# root is in the form root=cifs://user:pass@[server]/[folder] either from
+# cmdline or dhcp root-path
+netif="$1"
+root="$2"
+NEWROOT="$3"
+
+cifs_to_var $root
+echo server: $server
+echo path: $path
+echo options: $options
+
+mount.cifs //$server/$path $NEWROOT -o $options && { [ -e /dev/root ] || >/dev/root ; }
+
+# inject new exit_if_exists
+echo 'settle_exit_if_exists="--exit-if-exists=/dev/root"; rm "$job"' > $hookdir/initqueue/cifs.sh
+# force udevsettle to break
+> $hookdir/initqueue/work
diff --git a/modules.d/95cifs/module-setup.sh b/modules.d/95cifs/module-setup.sh
new file mode 100755
index 0000000..2f2e78d
--- /dev/null
+++ b/modules.d/95cifs/module-setup.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+check() {
+ # If our prerequisites are not met, fail anyways.
+ type -P mount.cifs >/dev/null || return 1
+
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+ for fs in ${host_fs_types[@]}; do
+ strstr "$fs" "\|cifs" && return 0
+ done
+ return 255
+ }
+
+ return 0
+}
+
+depends() {
+ # We depend on network modules being loaded
+ echo network
+}
+
+installkernel() {
+ instmods cifs ipv6
+}
+
+install() {
+ local _i
+ local _nsslibs
+ dracut_install -o mount.cifs
+ dracut_install /etc/services /etc/nsswitch.conf /etc/protocols
+
+ inst_libdir_file 'libcap-ng.so*'
+
+ _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \
+ | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|')
+ _nsslibs=${_nsslibs#|}
+ _nsslibs=${_nsslibs%|}
+
+ inst_libdir_file -n "$_nsslibs" 'libnss*.so*'
+
+ inst_hook cmdline 90 "$moddir/parse-cifsroot.sh"
+ inst "$moddir/cifsroot.sh" "/sbin/cifsroot"
+ inst "$moddir/cifs-lib.sh" "/lib/cifs-lib.sh"
+}
diff --git a/modules.d/95cifs/parse-cifsroot.sh b/modules.d/95cifs/parse-cifsroot.sh
new file mode 100755
index 0000000..d5adb98
--- /dev/null
+++ b/modules.d/95cifs/parse-cifsroot.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+#
+# root=cifs://[user:pass@]<server>/<folder>
+#
+# This syntax can come from DHCP root-path as well.
+#
+# If a username or password are not specified as part of the root, then they
+# will be pulled from cifsuser and cifspass on the kernel command line,
+# respectively.
+#
+
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+. /lib/cifs-lib.sh
+
+#Don't continue if root is ok
+[ -n "$rootok" ] && return
+
+# This script is sourced, so root should be set. But let's be paranoid
+[ -z "$root" ] && root=$(getarg root=)
+[ -z "$netroot" ] && netroot=$(getarg netroot=)
+
+# netroot= cmdline argument must be ignored, but must be used if
+# we're inside netroot to parse dhcp root-path
+if [ -n "$netroot" ] ; then
+ if [ "$netroot" = "$(getarg netroot=)" ] ; then
+ warn "Ignoring netroot argument for CIFS"
+ netroot=$root
+ fi
+else
+ netroot=$root;
+fi
+
+# Continue if cifs
+case "${netroot%%:*}" in
+ cifs);;
+ *) unset netroot; return;;
+esac
+
+# Check required arguments
+cifs_to_var $netroot
+
+# If we don't have a server, we need dhcp
+if [ -z "$server" ] ; then
+ DHCPORSERVER="1"
+fi;
+
+# Done, all good!
+rootok=1
+
+echo '[ -e $NEWROOT/proc ]' > $hookdir/initqueue/finished/cifsroot.sh

View File

@ -0,0 +1,51 @@
From c9a81c1f911792f68ce1921f192e7e930f312535 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 18:59:36 +0200
Subject: [PATCH] plymouth: do not start plymouth via dracut for systemd in
the initramfs
---
modules.d/50plymouth/module-setup.sh | 4 ----
modules.d/50plymouth/plymouth-newroot.sh | 2 +-
modules.d/50plymouth/plymouth-pretrigger.sh | 2 +-
3 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh
index 14d9e59..10aa0da 100755
--- a/modules.d/50plymouth/module-setup.sh
+++ b/modules.d/50plymouth/module-setup.sh
@@ -76,9 +76,5 @@ install() {
inst_hook pre-trigger 10 "$moddir"/plymouth-pretrigger.sh
inst_hook emergency 50 "$moddir"/plymouth-emergency.sh
dracut_install readlink
-
- if [[ -x $systemdutildir/systemd ]]; then
- dracut_install -o $systemdsystemunitdir/plymouth-quit-wait.service
- fi
}
diff --git a/modules.d/50plymouth/plymouth-newroot.sh b/modules.d/50plymouth/plymouth-newroot.sh
index e03e98d..ffbabf1 100755
--- a/modules.d/50plymouth/plymouth-newroot.sh
+++ b/modules.d/50plymouth/plymouth-newroot.sh
@@ -2,6 +2,6 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if [ -x /bin/plymouth ]; then
+if [ -x /bin/plymouth ! -x /lib/systemd/systemd ]; then
/bin/plymouth --newroot=$NEWROOT
fi
diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh
index ddb8ddb..c52cf83 100755
--- a/modules.d/50plymouth/plymouth-pretrigger.sh
+++ b/modules.d/50plymouth/plymouth-pretrigger.sh
@@ -2,7 +2,7 @@
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if [ -x /bin/plymouthd ]; then
+if [ -x /bin/plymouthd -a ! -x /lib/systemd/systemd ]; then
if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -d -n rd_NO_PLYMOUTH; then
# first trigger graphics subsystem
udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1

View File

@ -0,0 +1,21 @@
From 187a8e08d57cb33d51c31e2270374b99e2ad3133 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Thu, 26 Jul 2012 19:04:30 +0200
Subject: [PATCH] gentoo.conf: enable ro_mnt
---
dracut.conf.d/gentoo.conf.example | 1 +
1 file changed, 1 insertion(+)
diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example
index 411f9a0..6b74954 100644
--- a/dracut.conf.d/gentoo.conf.example
+++ b/dracut.conf.d/gentoo.conf.example
@@ -2,6 +2,7 @@
# Dracut config file customized for Gentoo Base System release 2
udevdir=/lib/udev
+ro_mnt=yes
#
# Modules

View File

@ -0,0 +1,25 @@
From 65d1a8a4aee600f7d5016382dd351bf9b835327f Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 19:12:40 +0200
Subject: [PATCH] dracut-functions.sh:inst_rule_programs() fixed
IMPORT{program}
---
dracut-functions.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index fb28bdc..49051fa 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -781,8 +781,8 @@ inst_rule_programs() {
dracut_install "$_bin"
done
fi
- if grep -qE 'PROGRAM==?"[^ "]+' "$1"; then
- for _prog in $(grep -E 'IMPORT==?"[^ "]+' "$1" | sed -r 's/.*IMPORT==?"([^ "]+).*/\1/'); do
+ if grep -qE 'IMPORT\{program\}==?"[^ "]+' "$1"; then
+ for _prog in $(grep -E 'IMPORT\{program\}==?"[^ "]+' "$1" | sed -r 's/.*IMPORT\{program\}==?"([^ "]+).*/\1/'); do
if [ -x ${udevdir}/$_prog ]; then
_bin=${udevdir}/$_prog
else

View File

@ -0,0 +1,40 @@
From 78021eace175745792f04345efe2d42218f0bb59 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 19:21:06 +0200
Subject: [PATCH] install/dracut-install.c: convert destrootdir to realpath
otherwise we get strange errors if it ends with a slash and does not
exist.
---
install/dracut-install.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/install/dracut-install.c b/install/dracut-install.c
index 9351472..e79065d 100644
--- a/install/dracut-install.c
+++ b/install/dracut-install.c
@@ -517,6 +517,7 @@ Install SOURCE to DEST in DESTROOTDIR with all needed dependencies.\n\
-h --help Show this help\n\
\n\
Example:\n\
+# mkdir -p /var/tmp/test-root\n\
# %s -D /var/tmp/test-root --ldd -a sh tr\n\
# tree /var/tmp/test-root\n\
/var/tmp/test-root\n\
@@ -742,8 +743,16 @@ int main(int argc, char **argv)
if (strcmp(destrootdir, "/") == 0) {
log_error("Environment DESTROOTDIR or argument -D is set to '/'!");
usage(EXIT_FAILURE);
+ }
+ i = destrootdir;
+ destrootdir = realpath(destrootdir, NULL);
+ if (!destrootdir) {
+ log_error("Environment DESTROOTDIR or argument -D is set to '%s': %m", i);
+ r = EXIT_FAILURE;
+ goto finish;
}
+ free(i);
items = hashmap_new(string_hash_func, string_compare_func);
items_failed = hashmap_new(string_hash_func, string_compare_func);

View File

@ -0,0 +1,40 @@
From cc2180876488b6e2b49c36317a593cb10e9124a7 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 26 Jul 2012 19:35:12 +0200
Subject: [PATCH] dracut-functions.sh:inst_rule_programs() fix error messages
---
dracut-functions.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 49051fa..9242204 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -757,7 +757,7 @@ inst_rule_programs() {
_bin=${udevdir}/$_prog
else
_bin=$(find_binary "$_prog") || {
- dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
+ dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
continue;
}
fi
@@ -772,7 +772,7 @@ inst_rule_programs() {
_bin=${udevdir}/$_prog
else
_bin=$(find_binary "$_prog") || {
- dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
+ dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
continue;
}
fi
@@ -787,7 +787,7 @@ inst_rule_programs() {
_bin=${udevdir}/$_prog
else
_bin=$(find_binary "$_prog") || {
- dinfo "Skipping program $_prog using in udev rule $(${1##*/}) as it cannot be found"
+ dinfo "Skipping program $_prog using in udev rule ${1##*/} as it cannot be found"
continue;
}
fi

View File

@ -0,0 +1,21 @@
From 72ee74b9be0935f9421a4987e9de785b74e71a50 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 27 Jul 2012 06:26:26 +0200
Subject: [PATCH] dracut.spec: add cifs module
---
dracut.spec | 1 +
1 file changed, 1 insertion(+)
diff --git a/dracut.spec b/dracut.spec
index d960506..f225bb6 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -328,6 +328,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/95iscsi
%{dracutlibdir}/modules.d/90livenet
%{dracutlibdir}/modules.d/90qemu-net
+%{dracutlibdir}/modules.d/95cifs
%{dracutlibdir}/modules.d/95nbd
%{dracutlibdir}/modules.d/95nfs
%{dracutlibdir}/modules.d/95ssh-client

View File

@ -10,7 +10,7 @@
Name: dracut
Version: 022
Release: 5.git20120723%{?dist}
Release: 63.git20120727%{?dist}
Summary: Initramfs generator using udev
%if 0%{?fedora} || 0%{?rhel}
@ -33,6 +33,64 @@ Patch1: 0001-resume-move-resume-in-the-initqueue-finished-hook.patch
Patch2: 0002-dracut.8-add-more-description-about-calling-dracut.patch
Patch3: 0003-AUTHORS-update.patch
Patch4: 0004-dracut.sh-add-N-option-for-no-hostonly.patch
Patch5: 0005-add-documentation-for-systemd-services-in-the-initra.patch
Patch6: 0006-kernel-modules-module-setup.sh-fix-modprobe.d-instal.patch
Patch7: 0007-lvm-lvm_scan.sh-udevadm-settle-after-lvm-scan.patch
Patch8: 0008-kernel-modules-module-setup.sh-just-optionally-insta.patch
Patch9: 0009-i18n-10-console.rules-move-console_init-to-the-initq.patch
Patch10: 0010-dracut-functions.sh-small-error-print-correction.patch
Patch11: 0011-get-rid-of-basename.patch
Patch12: 0012-90crypt-recognize-.img-as-loop-key-container.patch
Patch13: 0013-90crypt-enhance-crypt-lib-keydev-mounting.patch
Patch14: 0014-91crypt-loop-open-root-device-with-a-key-inside-encr.patch
Patch15: 0015-91crypt-loop-use-initqueue-for-cleanup-strategy.patch
Patch16: 0016-91crypt-loop-replace-basename-calls-with-string-matc.patch
Patch17: 0017-deprecate-old-command-line-options.patch
Patch18: 0018-require-kpartx-and-partx-for-some-modules.patch
Patch19: 0019-iscsiroot.sh-do-not-source-etc-conf.d.patch
Patch20: 0020-dracut.asc-add-doc-about-journalctl.patch
Patch21: 0021-network-module-setup.sh-instmods-af_packet.patch
Patch22: 0022-Makefile-honor-CFLAGS.patch
Patch23: 0023-TODO-update.patch
Patch24: 0024-qemu-module-setup.sh-provide-alternative-for-systemd.patch
Patch25: 0025-Remove-object-file-from-repo-install-hashmap.o.patch
Patch26: 0026-Makefile-use-implicit-rules-for-install-dracut-insta.patch
Patch27: 0027-95fstab-sys-Skip-mounted-filesystem.patch
Patch28: 0028-90multipath-check-Regexp-fix-to-match-multipath-part.patch
Patch29: 0029-dmsquash-live-do-not-eject-medium-for-live_ram.patch
Patch30: 0030-Remove-obsolete-gentoo-conf-file.patch
Patch31: 0031-Config-file-for-systemd-on-Gentoo.patch
Patch32: 0032-gentoo.conf-set-udevdir.patch
Patch33: 0033-90kernel-modules-remove-unused-variables-in-install.patch
Patch34: 0034-90multipath-added-kpartx.rules-multipath.rules-diffe.patch
Patch35: 0035-Makefile-fixed-dracut-install-make-target.patch
Patch36: 0036-multipath-module-setup.sh-add-dm-dependency.patch
Patch37: 0037-Makefile-use-symlink-for-topsrcdir-dracut-install.patch
Patch38: 0038-systemd-dracut-cmdline.sh-output-dracut-version.patch
Patch39: 0039-95rootfs-block-fix-left-fsck-rel.-checks.patch
Patch40: 0040-98usrmount-use-rw-and-ro-options-instead-of-rd.usrmo.patch
Patch41: 0041-98usrmount-print-mount-options.patch
Patch42: 0042-98usrmount-x-_usr_found-x-removed-redundant-x.patch
Patch43: 0043-dracut-lib-new-functions-listlist-and-are_lists_eq.patch
Patch44: 0044-apply-ro-and-rw-options-from-cmdline-to-mount.patch
Patch45: 0045-modules.d-99base-mount-hook.sh-is-not-used-removed.patch
Patch46: 0046-PATCH-add-support-for-xfs-reiserfs-separate-journal-.patch
Patch47: 0047-dracut-functions.sh-add-find_mp_fstype.patch
Patch48: 0048-rootfs-block-module-setup.sh-add-support-for-xfs-rei.patch
Patch49: 0049-dracut-functions.sh-corrected-usage-comment-of-find_.patch
Patch50: 0050-ro_mnt-option-at-build-time-to-force-ro-mount-of-and.patch
Patch51: 0051-mv-rootfs-block-module-setup.sh-search_option-in-dra.patch
Patch52: 0052-README.testsuite-updated-with-requirements-for-TEST-.patch
Patch53: 0053-base-module-setup.sh-removed-mount-hook.patch
Patch54: 0054-parse-root-opts-first-check-for-ro-later-for-rw.patch
Patch55: 0055-nfs-module-setup.sh-check-for-rpc.rpc-before-running.patch
Patch56: 0056-Added-cifs.patch
Patch57: 0057-plymouth-do-not-start-plymouth-via-dracut-for-system.patch
Patch58: 0058-gentoo.conf-enable-ro_mnt.patch
Patch59: 0059-dracut-functions.sh-inst_rule_programs-fixed-IMPORT-.patch
Patch60: 0060-install-dracut-install.c-convert-destrootdir-to-real.patch
Patch61: 0061-dracut-functions.sh-inst_rule_programs-fix-error-mes.patch
Patch62: 0062-dracut.spec-add-cifs-module.patch
BuildRequires: dash bash git
@ -86,6 +144,7 @@ Requires: gzip xz
Requires: module-init-tools >= 3.7-9
Requires: sed
Requires: file
Requires: kpartx
Requires: udev > 166
%if 0%{?fedora} || 0%{?rhel} > 6
Requires: util-linux >= 2.21
@ -263,6 +322,7 @@ rm -rf $RPM_BUILD_ROOT
%endif
%dir /etc/dracut.conf.d
%{_mandir}/man8/dracut.8*
%{_mandir}/man8/*service.8*
%if 0%{?fedora} > 12 || 0%{?rhel} >= 6 || 0%{?suse_version} > 9999
%{_mandir}/man8/mkinitrd.8*
%{_mandir}/man1/lsinitrd.1*
@ -289,6 +349,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/90multipath
%{dracutlibdir}/modules.d/90qemu
%{dracutlibdir}/modules.d/91crypt-gpg
%{dracutlibdir}/modules.d/91crypt-loop
%{dracutlibdir}/modules.d/95debug
%{dracutlibdir}/modules.d/95resume
%{dracutlibdir}/modules.d/95rootfs-block
@ -330,6 +391,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/95iscsi
%{dracutlibdir}/modules.d/90livenet
%{dracutlibdir}/modules.d/90qemu-net
%{dracutlibdir}/modules.d/95cifs
%{dracutlibdir}/modules.d/95nbd
%{dracutlibdir}/modules.d/95nfs
%{dracutlibdir}/modules.d/95ssh-client
@ -361,6 +423,10 @@ rm -rf $RPM_BUILD_ROOT
%dir /var/lib/dracut/overlay
%changelog
* Fri Jul 27 2012 Harald Hoyer <harald@redhat.com> 022-63.git20120727
- fixed dracut-install bug if /var/tmp contains a symlink
- fixed some partx issues
* Mon Jul 23 2012 Harald Hoyer <harald@redhat.com> 022-5.git20120723
- dracut.8: added more documentation about executing dracut