summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Hoyer <harald@redhat.com>2013-09-04 13:43:12 +0200
committerHarald Hoyer <harald@redhat.com>2013-09-04 13:43:12 +0200
commitfe48c9c4e590d7ab905da3307e021b9c48545a9a (patch)
tree29503658db53c8f22eba77857925b7d33936cf2f
parentb6aad2a9c88b5822b30c1686ce66dd31e2fb1a80 (diff)
downloaddracut-fe48c9c4e590d7ab905da3307e021b9c48545a9a.tar.gz
dracut-fe48c9c4e590d7ab905da3307e021b9c48545a9a.tar.xz
dracut-fe48c9c4e590d7ab905da3307e021b9c48545a9a.zip
dracut-032-23.git20130904
- fixed curl error with zero size kickstart file Resolves: rhbz#989133 - fixed systemd-cat failure, when systemd is installed but not actually running Resolves: rhbz#1002021 - do not fail on empty dracut module directories Resolves: rhbz#1003153
-rw-r--r--0001-network-do-not-depend-on-ifcfg.patch35
-rw-r--r--0002-dracut-functions.sh-add-expand_persistent_dev.patch80
-rw-r--r--0003-url-lib.sh-handle-0-size-files-with-curl.patch23
-rw-r--r--0004-add-dracut.css-for-dracut.html.patch1587
-rw-r--r--0005-dracut.asc-document-debugging-dracut-on-shutdown.patch37
-rw-r--r--0006-freenode-IRC-dracut-verification.patch17
-rw-r--r--0007-removed-freenode.txt.patch17
-rw-r--r--0008-dracut-functions.sh-use-builtin-bash-functions-rathe.patch30
-rw-r--r--0009-dracut-functions.sh-inst_rules-do-not-install-from-e.patch34
-rw-r--r--0010-use-var-val-rather-than-var-val.patch293
-rw-r--r--0011-dracut-functions.sh-get_persistent_dev-do-not-check-.patch22
-rw-r--r--0012-network-move-ibft-parsing-before-all-other-network-c.patch64
-rw-r--r--0013-i18n-check-for-setfont-and-loadkeys-binaries.patch25
-rw-r--r--0014-dmraid-parse-dm.sh-if-rd.md-0-use-dmraid-for-imsm-an.patch32
-rw-r--r--0015-dmraid-mdraid-improve-hostonly-recognition.patch108
-rw-r--r--0016-dracut-functions.sh-get_devpath_block-make-local-var.patch22
-rw-r--r--0017-resume-debian-s-resume-is-in-usr-lib-uswsusp.patch23
-rw-r--r--0018-dracut-logger.sh-check-is-journald.socket-is-active.patch26
-rw-r--r--0019-dracut-functions.sh-for_each_module_dir-skip-empty-m.patch26
-rw-r--r--0020-iscsi-parse-iscsi-parameter-even-if-rootok-1.patch23
-rw-r--r--0021-net-lib-ibft_to_cmdline-fixes.patch57
-rw-r--r--0022-Rewrite-rootok-and-netroot-logic.patch190
-rw-r--r--dracut.spec33
23 files changed, 2803 insertions, 1 deletions
diff --git a/0001-network-do-not-depend-on-ifcfg.patch b/0001-network-do-not-depend-on-ifcfg.patch
new file mode 100644
index 0000000..d8de123
--- /dev/null
+++ b/0001-network-do-not-depend-on-ifcfg.patch
@@ -0,0 +1,35 @@
+From f34e1d6b0ecf907066b6083e70d5eac84c2ba2f5 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 20 Aug 2013 15:09:33 +0200
+Subject: [PATCH] network: do not depend on ifcfg
+
+rather let ifcfg return 0 if /etc/sysconfig/network-scripts exists
+---
+ modules.d/40network/module-setup.sh | 1 -
+ modules.d/45ifcfg/module-setup.sh | 1 +
+ 2 files changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index a5f635d..464e0cb 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -16,7 +16,6 @@ check() {
+ }
+
+ depends() {
+- [ -d /etc/sysconfig/network-scripts/ ] && echo ifcfg
+ return 0
+ }
+
+diff --git a/modules.d/45ifcfg/module-setup.sh b/modules.d/45ifcfg/module-setup.sh
+index 3cd0c48..ce53e5e 100755
+--- a/modules.d/45ifcfg/module-setup.sh
++++ b/modules.d/45ifcfg/module-setup.sh
+@@ -3,6 +3,7 @@
+ # ex: ts=8 sw=4 sts=4 et filetype=sh
+
+ check() {
++ [[ -d /etc/sysconfig/network-scripts ]] && return 0
+ return 255
+ }
+
diff --git a/0002-dracut-functions.sh-add-expand_persistent_dev.patch b/0002-dracut-functions.sh-add-expand_persistent_dev.patch
new file mode 100644
index 0000000..9962a55
--- /dev/null
+++ b/0002-dracut-functions.sh-add-expand_persistent_dev.patch
@@ -0,0 +1,80 @@
+From c82a11334d53f26ac158df9bcfca1a4e2ad39ae0 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 20 Aug 2013 16:01:10 +0200
+Subject: [PATCH] dracut-functions.sh: add expand_persistent_dev()
+
+also fixes missing '{' for LABEL=... swaps
+---
+ dracut-functions.sh | 38 +++++++++++++++++++++++++++++++-------
+ dracut.sh | 3 +--
+ 2 files changed, 32 insertions(+), 9 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 1d70bd0..6c7e693 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -323,19 +323,43 @@ get_persistent_dev() {
+ done
+ }
+
++expand_persistent_dev() {
++ local _dev=$1
++
++ case "$_dev" in
++ LABEL=*)
++ _dev="/dev/disk/by-label/${_dev#LABEL=}"
++ ;;
++ UUID=*)
++ _dev="${_dev#UUID=}"
++ _dev="$(tr "[:upper:]" "[:lower:]" <<< "$_dev" )"
++ _dev="/dev/disk/by-uuid/${_dev}"
++ ;;
++ PARTUUID=*)
++ _dev="${_dev#PARTUUID=}"
++ _dev="$(tr "[:upper:]" "[:lower:]" <<< "$_dev" )"
++ _dev="/dev/disk/by-partuuid/${_dev}"
++ ;;
++ PARTLABEL=*)
++ _dev="/dev/disk/by-partlabel/${_dev#PARTLABEL=}"
++ ;;
++ esac
++ printf "%s" "$_dev"
++}
++
+ shorten_persistent_dev() {
+- local dev="$1"
+- case "$dev" in
++ local _dev="$1"
++ case "$_dev" in
+ /dev/disk/by-uuid/*)
+- printf "%s" "UUID=${dev##*/}";;
++ printf "%s" "UUID=${_dev##*/}";;
+ /dev/disk/by-label/*)
+- printf "%s" "LABEL=${dev##*/}";;
++ printf "%s" "LABEL=${_dev##*/}";;
+ /dev/disk/by-partuuid/*)
+- printf "%s" "PARTUUID=${dev##*/}";;
++ printf "%s" "PARTUUID=${_dev##*/}";;
+ /dev/disk/by-partlabel/*)
+- printf "%s" "PARTLABEL=${dev##*/}";;
++ printf "%s" "PARTLABEL=${_dev##*/}";;
+ *)
+- printf "%s" "$dev";;
++ printf "%s" "$_dev";;
+ esac
+ }
+
+diff --git a/dracut.sh b/dracut.sh
+index 117f877..0c42958 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -913,8 +913,7 @@ if [[ $hostonly ]]; then
+ [[ $_t != "swap" ]] && continue
+ [[ $_m != "swap" ]] && [[ $_m != "none" ]] && continue
+ [[ "$_o" == *noauto* ]] && continue
+- [[ "$_d" == UUID\=* ]] && _d="/dev/disk/by-uuid/${_d#UUID=}"
+- [[ "$_d" == LABEL\=* ]] && _d="/dev/disk/by-label/$_d#LABEL=}"
++ _d=$(expand_persistent_dev "$_d")
+ [[ "$_d" -ef "$dev" ]] || continue
+
+ if [[ -f /etc/crypttab ]]; then
diff --git a/0003-url-lib.sh-handle-0-size-files-with-curl.patch b/0003-url-lib.sh-handle-0-size-files-with-curl.patch
new file mode 100644
index 0000000..97cf1a0
--- /dev/null
+++ b/0003-url-lib.sh-handle-0-size-files-with-curl.patch
@@ -0,0 +1,23 @@
+From 5c274467d6a4959b7f451f9a211ffbb38d69b641 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 20 Aug 2013 16:15:17 +0200
+Subject: [PATCH] url-lib.sh: handle 0-size files with curl
+
+https://bugzilla.redhat.com/show_bug.cgi?id=989133#c9
+---
+ modules.d/45url-lib/url-lib.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/45url-lib/url-lib.sh b/modules.d/45url-lib/url-lib.sh
+index 34d42ba..12df9b4 100755
+--- a/modules.d/45url-lib/url-lib.sh
++++ b/modules.d/45url-lib/url-lib.sh
+@@ -64,7 +64,7 @@ curl_fetch_url() {
+ local url="$1" outloc="$2"
+ echo "$url" > /proc/self/fd/0
+ if [ -n "$outloc" ]; then
+- curl $curl_args --output "$outloc" -- "$url" || return $?
++ curl $curl_args --output - -- "$url" > "$outloc" || return $?
+ else
+ local outdir="$(mkuniqdir /tmp curl_fetch_url)"
+ ( cd "$outdir"; curl $curl_args --remote-name "$url" || return $? )
diff --git a/0004-add-dracut.css-for-dracut.html.patch b/0004-add-dracut.css-for-dracut.html.patch
new file mode 100644
index 0000000..5d6d630
--- /dev/null
+++ b/0004-add-dracut.css-for-dracut.html.patch
@@ -0,0 +1,1587 @@
+From bae44febb513a7888f738c9adf5415dd370018e2 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 21 Aug 2013 13:12:55 +0200
+Subject: [PATCH] add dracut.css for dracut.html
+
+---
+ Makefile | 6 +-
+ dracut.css | 1550 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 1553 insertions(+), 3 deletions(-)
+ create mode 100644 dracut.css
+
+diff --git a/Makefile b/Makefile
+index bfd1320..0c4ebc5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -76,11 +76,11 @@ endif
+ %.xml: %.asc
+ asciidoc -d manpage -b docbook -o $@ $<
+
+-dracut.html: dracut.asc $(manpages)
++dracut.html: dracut.asc $(manpages) dracut.css
+ asciidoc -a numbered -d book -b docbook -o dracut.xml dracut.asc
+ xsltproc -o dracut.html --xinclude -nonet \
+- --stringparam html.stylesheet \
+- http://docs.fedoraproject.org/en-US/Common_Content/css/default.css \
++ --stringparam custom.css.source dracut.css \
++ --stringparam generate.css.header 1 \
+ http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl dracut.xml
+ rm -f -- dracut.xml
+
+diff --git a/dracut.css b/dracut.css
+new file mode 100644
+index 0000000..e419a06
+--- /dev/null
++++ b/dracut.css
+@@ -0,0 +1,1550 @@
++<?xml version="1.0"?>
++<style>
++
++body, h1, h2, h3, h4, h5, h6, pre, li, div {
++ line-height: 1.29em;
++}
++
++body {
++ background-color: white;
++ margin:0 auto;
++ font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif;
++ font-size:12px;
++ max-width:55em;
++ color:black;
++}
++
++body.toc_embeded {
++ /*for web hosting system only*/
++ margin-left: 300px;
++}
++
++object.toc, iframe.toc {
++ /*for web hosting system only*/
++ border-style:none;
++ position:fixed;
++ width:290px;
++ height:99.99%;
++ top:0;
++ left:0;
++ z-index: 100;
++ border-style:none;
++ border-right:1px solid #999;
++}
++
++/* Hide web menu */
++
++body.notoc {
++ margin-left: 3em;
++}
++
++iframe.notoc {
++ border-style:none;
++ border: none;
++ padding: 0em;
++ position:fixed;
++ width: 21px;
++ height: 29px;
++ top: 0px;
++ left:0;
++ overflow: hidden;
++ margin: 0em;
++ margin-left: -3px;
++}
++/* End hide web menu */
++
++/* desktop styles */
++body.desktop {
++ margin-left: 26em;
++}
++
++body.desktop .book > .toc {
++ display:block;
++ width:24em;
++ height:99%;
++ position:fixed;
++ overflow:auto;
++ top:0px;
++ left:0px;
++ padding-left:1em;
++ background-color:#EEEEEE;
++}
++
++.toc {
++ line-height:1.35em;
++}
++
++.toc .glossary,
++.toc .chapter, .toc .appendix {
++ margin-top:1em;
++}
++
++.toc .part {
++ margin-top:1em;
++ display:block;
++}
++
++span.glossary,
++span.appendix {
++ display:block;
++ margin-top:0.5em;
++}
++
++div {
++ padding-top:0px;
++}
++
++div.section {
++ padding-top:1em;
++}
++
++p, div.para, div.formalpara {
++ padding-top:0px;
++ margin-top:0.3em;
++ padding-bottom:0px;
++ margin-bottom:1em;
++}
++
++/*Links*/
++a {
++ outline: none;
++}
++
++a:link {
++ text-decoration:none;
++ border-bottom: 1px dotted ;
++ color:#3366cc;
++}
++
++a:visited {
++ text-decoration:none;
++ border-bottom: 1px dotted ;
++ color:#003366;
++}
++
++div.longdesc-link {
++ float:right;
++ color:#999;
++}
++
++.toc a, .qandaset a {
++ font-weight:normal;
++}
++
++/*headings*/
++h1, h2, h3, h4, h5, h6 {
++ color: #336699;
++ margin-top: 0em;
++ margin-bottom: 0em;
++ background-color: transparent;
++}
++
++h1 {
++ font-size:2.0em;
++}
++
++.titlepage h1.title {
++ font-size: 3.0em;
++ padding-top: 1em;
++ text-align:left;
++}
++
++.book > .titlepage h1.title {
++ text-align:center;
++}
++
++.article > .titlepage h1.title {
++ text-align:center;
++}
++
++.set .titlepage > div > div > h1.title {
++ text-align:center;
++}
++
++.producttitle {
++ margin-top: 0em;
++ margin-bottom: 0em;
++ font-size: 3.0em;
++ font-weight: bold;
++ background: #003d6e url(../images/h1-bg.png) top left repeat-x;
++ color: white;
++ text-align: center;
++ padding: 0.7em;
++}
++
++.titlepage .corpauthor {
++ margin-top: 1em;
++ text-align: center;
++}
++
++.section h1.title {
++ font-size: 1.6em;
++ padding: 0em;
++ color: #336699;
++ text-align: left;
++ background: white;
++}
++
++h2 {
++ font-size:1.6em;
++}
++
++
++h2.subtitle, h3.subtitle {
++ margin-top: 1em;
++ margin-bottom: 1em;
++ font-size: 1.4em;
++ text-align: center;
++}
++
++.preface > div > div > div > h2.title {
++ margin-top: 1em;
++ font-size: 2.0em;
++}
++
++.appendix h2 {
++ margin-top: 1em;
++ font-size: 2.0em;
++}
++
++
++
++h3 {
++ font-size:1.3em;
++ padding-top:0em;
++ padding-bottom:0em;
++}
++h4 {
++ font-size:1.1em;
++ padding-top:0em;
++ padding-bottom:0em;
++}
++
++h5 {
++ font-size:1em;
++}
++
++h6 {
++ font-size:1em;
++}
++
++h5.formalpara {
++ font-size:1em;
++ margin-top:2em;
++ margin-bottom:.8em;
++}
++
++.abstract h6 {
++ margin-top:1em;
++ margin-bottom:.5em;
++ font-size:2em;
++}
++
++/*element rules*/
++hr {
++ border-collapse: collapse;
++ border-style:none;
++ border-top: 1px dotted #ccc;
++ width:100%;
++ margin-top: 3em;
++}
++
++/* web site rules */
++ul.languages, .languages li {
++ display:inline;
++ padding:0em;
++}
++
++.languages li a {
++ padding:0em .5em;
++ text-decoration: none;
++}
++
++.languages li p, .languages li div.para {
++ display:inline;
++}
++
++.languages li a:link, .languages li a:visited {
++ color:#444;
++}
++
++.languages li a:hover, .languages li a:focus, .languages li a:active {
++ color:black;
++}
++
++ul.languages {
++ display:block;
++ background-color:#eee;
++ padding:.5em;
++}
++
++/*supporting stylesheets*/
++
++/*unique to the webpage only*/
++.books {
++ position:relative;
++}
++
++.versions li {
++ width:100%;
++ clear:both;
++ display:block;
++}
++
++a.version {
++ font-size:2em;
++ text-decoration:none;
++ width:100%;
++ display:block;
++ padding:1em 0em .2em 0em;
++ clear:both;
++}
++
++a.version:before {
++ content:"Version";
++ font-size:smaller;
++}
++
++a.version:visited, a.version:link {
++ color:#666;
++}
++
++a.version:focus, a.version:hover {
++ color:black;
++}
++
++.books {
++ display:block;
++ position:relative;
++ clear:both;
++ width:100%;
++}
++
++.books li {
++ display:block;
++ width:200px;
++ float:left;
++ position:relative;
++ clear: none ;
++}
++
++.books .html {
++ width:170px;
++ display:block;
++}
++
++.books .pdf {
++ position:absolute;
++ left:170px;
++ top:0px;
++ font-size:smaller;
++}
++
++.books .pdf:link, .books .pdf:visited {
++ color:#555;
++}
++
++.books .pdf:hover, .books .pdf:focus {
++ color:#000;
++}
++
++.books li a {
++ text-decoration:none;
++}
++
++.books li a:hover {
++ color:black;
++}
++
++/*products*/
++.products li {
++ display: block;
++ width:300px;
++ float:left;
++}
++
++.products li a {
++ width:300px;
++ padding:.5em 0em;
++}
++
++.products ul {
++ clear:both;
++}
++
++/*revision history*/
++.revhistory {
++ display:block;
++}
++
++.revhistory table {
++ background-color:transparent;
++ border-color:#fff;
++ padding:0em;
++ margin: 0;
++ border-collapse:collapse;
++ border-style:none;
++}
++
++.revhistory td {
++ text-align :left;
++ padding:0em;
++ border: none;
++ border-top: 1px solid #fff;
++ font-weight: bold;
++}
++
++.revhistory .simplelist td {
++ font-weight: normal;
++}
++
++.revhistory .simplelist {
++ margin-bottom: 1.5em;
++ margin-left: 1em;
++}
++
++.revhistory table th {
++ display: none;
++}
++
++
++/*credits*/
++.authorgroup div {
++ clear:both;
++ text-align: center;
++}
++
++h3.author {
++ margin: 0em;
++ padding: 0em;
++ padding-top: 1em;
++}
++
++.authorgroup h4 {
++ padding: 0em;
++ margin: 0em;
++ padding-top: 1em;
++ margin-top: 1em;
++}
++
++.author,
++.editor,
++.translator,
++.othercredit,
++.contrib {
++ display: block;
++}
++
++.revhistory .author {
++ display: inline;
++}
++
++.othercredit h3 {
++ padding-top: 1em;
++}
++
++
++.othercredit {
++ margin:0em;
++ padding:0em;
++}
++
++.releaseinfo {
++ clear: both;
++}
++
++.copyright {
++ margin-top: 1em;
++}
++
++/* qanda sets */
++.answer {
++ margin-bottom:1em;
++ border-bottom:1px dotted #ccc;
++}
++
++.qandaset .toc {
++ border-bottom:1px dotted #ccc;
++}
++
++.question {
++ font-weight:bold;
++}
++
++.answer .data, .question .data {
++ padding-left: 2.6em;
++}
++
++.answer label, .question label {
++ float:left;
++ font-weight:bold;
++}
++
++/* inline syntax highlighting */
++.perl_Alert {
++ color: #0000ff;
++}
++
++.perl_BaseN {
++ color: #007f00;
++}
++
++.perl_BString {
++ color: #5C3566;
++}
++
++.perl_Char {
++ color: #ff00ff;
++}
++
++.perl_Comment {
++ color: #FF00FF;
++}
++
++
++.perl_DataType {
++ color: #0000ff;
++}
++
++
++.perl_DecVal {
++ color: #00007f;
++}
++
++
++.perl_Error {
++ color: #ff0000;
++}
++
++
++.perl_Float {
++ color: #00007f;
++}
++
++
++.perl_Function {
++ color: #007f00;
++}
++
++
++.perl_IString {
++ color: #5C3566;
++}
++
++
++.perl_Keyword {
++ color: #002F5D;
++}
++
++
++.perl_Operator {
++ color: #ffa500;
++}
++
++
++.perl_Others {
++ color: #b03060;
++}
++
++
++.perl_RegionMarker {
++ color: #96b9ff;
++}
++
++
++.perl_Reserved {
++ color: #9b30ff;
++}
++
++
++.perl_String {
++ color: #5C3566;
++}
++
++
++.perl_Variable {
++ color: #0000ff;
++}
++
++
++.perl_Warning {
++ color: #0000ff;
++}
++
++/*Lists*/
++ul {
++ padding-left:1.6em;
++ list-style-image:url(../images/dot.png);
++ list-style-type: circle;
++}
++
++ul ul {
++ list-style-image:url(../images/dot2.png);
++ list-style-type: circle;
++}
++
++ol {
++ list-style-image:none;
++ list-style-type: decimal;
++}
++
++ol ol {
++ list-style-type: lower-alpha;
++}
++
++ol.arabic {
++ list-style-type: decimal;
++}
++
++ol.loweralpha {
++ list-style-type: lower-alpha;
++}
++
++ol.lowerroman {
++ list-style-type: lower-roman;
++}
++
++ol.upperalpha {
++ list-style-type: upper-alpha;
++}
++
++ol.upperroman {
++ list-style-type: upper-roman;
++}
++
++dt {
++ font-weight:bold;
++ margin-bottom:0em;
++ padding-bottom:0em;
++}
++
++dd {
++ margin:0em;
++ margin-left:2em;
++ padding-top:0em;
++ padding-bottom: 1em;
++}
++
++li {
++ padding-top:0px;
++ margin-top:0em;
++ padding-bottom:0px;
++ margin-bottom:0.4em;
++}
++
++li p, li div.para {
++ padding-top:0px;
++ margin-top:0em;
++ padding-bottom:0px;
++ margin-bottom:0.3em;
++}
++
++/*images*/
++img {
++ display:block;
++ margin: 2em 0;
++}
++
++.inlinemediaobject, .inlinemediaobject img {
++ display:inline;
++ margin:0em;
++}
++
++.figure img {
++ display:block;
++ margin:0;
++}
++
++.figure .title {
++ margin:0em;
++ margin-bottom:2em;
++ padding:0px;
++}
++
++/*document modes*/
++.confidential {
++ background-color:#900;
++ color:White;
++ padding:.5em .5em;
++ text-transform:uppercase;
++ text-align:center;
++}
++
++.longdesc-link {
++ display:none;
++}
++
++.longdesc {
++ display:none;
++}
++
++.prompt {
++ padding:0em .3em;
++}
++
++/*user interface styles*/
++.screen .replaceable {
++}
++
++.guibutton, .guilabel {
++ font-family: "liberation mono", "bitstream vera mono", "dejavu mono", monospace;
++ font-weight: bold;
++ white-space: nowrap;
++}
++
++.example {
++ background-color: #ffffff;
++ border-left: 3px solid #aaaaaa;
++ padding-top: 1em;
++ padding-bottom: 0.1em;
++}
++
++.example h6 {
++ padding-left: 10px;
++}
++
++.example-contents {
++ padding-left: 10px;
++ background-color: #ffffff;
++}
++
++.example-contents .para {
++/* padding: 10px;*/
++}
++
++/*terminal/console text*/
++.computeroutput,
++.option {
++ font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
++ font-weight:bold;
++}
++
++.replaceable {
++ font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
++ font-style: italic;
++}
++
++.command, .filename, .keycap, .classname, .literal {
++ font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
++ font-weight:bold;
++}
++
++/* no bold in toc */
++.toc * {
++ font-weight: inherit;
++}
++
++pre {
++ font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
++ display:block;
++ background-color: #f5f5f5;
++ color: #000000;
++ border: 1px solid #aaaaaa;
++ margin-bottom: 0.3em;
++ padding:.5em 1em;
++ white-space: pre-wrap; /* css-3 */
++ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
++ white-space: -pre-wrap; /* Opera 4-6 */
++ white-space: -o-pre-wrap; /* Opera 7 */
++ word-wrap: break-word; /* Internet Explorer 5.5+ */
++ font-size: 0.9em;
++}
++
++pre .replaceable,
++pre .keycap {
++}
++
++code {
++ font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
++ white-space: nowrap;
++ font-weight:bold;
++}
++
++.parameter code {
++ display: inline;
++ white-space: pre-wrap; /* css-3 */
++ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
++ white-space: -pre-wrap; /* Opera 4-6 */
++ white-space: -o-pre-wrap; /* Opera 7 */
++ word-wrap: break-word; /* Internet Explorer 5.5+ */
++}
++
++/*Notifications*/
++div.warning:before {
++ content:url(../images/warning.png);
++ padding-left: 5px;
++}
++
++div.note:before {
++ content:url(../images/note.png);
++ padding-left: 5px;
++}
++
++div.important:before {
++ content:url(../images/important.png);
++ padding-left: 5px;
++}
++
++div.warning, div.note, div.important {
++ color: black;
++ margin: 0em;
++ padding: 0em;
++ background: none;
++ background-color: white;
++ margin-bottom: 1em;
++ border-bottom: 1px solid #aaaaaa;
++}
++
++div.warning h2, div.note h2,div.important h2 {
++ margin: 0em;
++ padding: 0em;
++ color: #eeeeec;
++ padding-top: 0px;
++ padding-bottom: 0px;
++ height: 1.4em;
++ line-height: 1.4em;
++ font-size: 1.4em;
++ display:inline;
++}
++
++div.admonition_header {
++ clear: both;
++ margin: 0em;
++ padding: 0em;
++ margin-top: -3.3em;
++ padding-left: 58px;
++ line-height: 1.0em;
++ font-size: 1.0em;
++}
++
++div.warning div.admonition_header {
++ background: url(../images/red.png) top left repeat-x;
++ background-color: #590000;
++}
++
++div.note div.admonition_header {
++ background: url(../images/green.png) top right repeat-x;
++ background-color: #597800;
++}
++
++div.important div.admonition_header {
++ background: url(../images/yellow.png) top right repeat-x;
++ background-color: #a6710f;
++}
++
++div.warning p, div.warning div.para,
++div.note p, div.note div.para,
++div.important p, div.important div.para {
++ padding: 0em;
++ margin: 0em;
++}
++
++div.admonition {
++ border: none;
++ border-left: 1px solid #aaaaaa;
++ border-right: 1px solid #aaaaaa;
++ padding:0em;
++ margin:0em;
++ padding-top: 1.5em;
++ padding-bottom: 1em;
++ padding-left: 2em;
++ padding-right: 1em;
++ background-color: #eeeeec;
++ -moz-border-radius: 0px;
++ -webkit-border-radius: 0px;
++ border-radius: 0px;
++}
++
++/*Page Title*/
++#title {
++ display:block;
++ height:45px;
++ padding-bottom:1em;
++ margin:0em;
++}
++
++#title a.left{
++ display:inline;
++ border:none;
++}
++
++#title a.left img{
++ border:none;
++ float:left;
++ margin:0em;
++ margin-top:.7em;
++}
++
++#title a.right {
++ padding-bottom:1em;
++}
++
++#title a.right img {
++ border:none;
++ float:right;
++ margin:0em;
++ margin-top:.7em;
++}
++
++/*Table*/
++table {
++ border:1px solid #6c614b;
++ width:100%;
++ border-collapse:collapse;
++}
++
++table.simplelist, .calloutlist table {
++ border-style: none;
++}
++
++table th {
++ text-align:left;
++ background-color:#6699cc;
++ padding:.3em .5em;
++ color:white;
++}
++
++table td {
++ padding:.15em .5em;
++}
++
++table tr.even td {
++ background-color:#f5f5f5;
++}
++
++table th p:first-child, table td p:first-child, table li p:first-child,
++table th div.para:first-child, table td div.para:first-child, table li div.para:first-child {
++ margin-top:0em;
++ padding-top:0em;
++ display:inline;
++}
++
++th, td {
++ border-style:none;
++ vertical-align: top;
++ border: 1px solid #000;
++}
++
++.simplelist th, .simplelist td {
++ border: none;
++}
++
++table table td {
++ border-bottom:1px dotted #aaa;
++ background-color:white;
++ padding:.6em 0em;
++}
++
++table table {
++ border:1px solid white;
++}
++
++td.remarkval {
++ color:#444;
++}
++
++td.fieldval {
++ font-weight:bold;
++}
++
++.lbname, .lbtype, .lbdescr, .lbdriver, .lbhost {
++ color:white;
++ font-weight:bold;
++ background-color:#999;
++ width:120px;
++}
++
++td.remarkval {
++ width:230px;
++}
++
++td.tname {
++ font-weight:bold;
++}
++
++th.dbfield {
++ width:120px;
++}
++
++th.dbtype {
++ width:70px;
++}
++
++th.dbdefault {
++ width:70px;
++}
++
++th.dbnul {
++ width:70px;
++}
++
++th.dbkey {
++ width:70px;
++}
++
++span.book {
++ margin-top:4em;
++ display:block;
++}
++
++span.chapter {
++ display:block;
++ margin-top:0.5em;
++}
++
++table.simplelist td, .calloutlist table td {
++ border-style: none;
++}
++
++/*Breadcrumbs*/
++#breadcrumbs ul li.first:before {
++ content:" ";
++}
++
++#breadcrumbs {
++ color:#900;
++ padding:3px;
++ margin-bottom:25px;
++}
++
++#breadcrumbs ul {
++ margin-left:0;
++ padding-left:0;
++ display:inline;
++ border:none;
++}
++
++#breadcrumbs ul li {
++ margin-left:0;
++ padding-left:2px;
++ border:none;
++ list-style:none;
++ display:inline;
++}
++
++#breadcrumbs ul li:before {
++ content:"\0020 \0020 \0020 \00BB \0020";
++ color:#333;
++}
++
++/*index*/
++.glossary h3,
++.index h3 {
++ font-size: 2em;
++ color:#aaa;
++ margin:0em;
++}
++
++.indexdiv {
++ margin-bottom:1em;
++}
++
++.glossary dt,
++.index dt {
++ color:#444;
++ padding-top:.5em;
++}
++
++.glossary dl dl dt,
++.index dl dl dt {
++ color:#777;
++ font-weight:normal;
++ padding-top:0em;
++}
++
++.index dl dl dt:before {
++ content:"- ";
++ color:#ccc;
++}
++
++/*changes*/
++.footnote {
++ font-size: .7em;
++ margin:0em;
++ color:#222;
++}
++
++table .footnote {
++}
++
++sup {
++ color:#999;
++ margin:0em;
++ padding:0em;
++ line-height: .4em;
++ font-size: 1em;
++ padding-left:0em;
++}
++
++.footnote {
++ position:relative;
++}
++
++.footnote sup {
++ color:#e3dcc0;
++ position:absolute;
++ left: .4em;
++}
++
++.footnote sup a:link,
++.footnote sup a:visited {
++ color:#92917d;
++ text-decoration:none;
++}
++
++.footnote:hover sup a {
++ text-decoration:none;
++}
++
++.footnote p,.footnote div.para {
++ padding-left:2em;
++}
++
++.footnote a:link,
++.footnote a:visited {
++ color:#00537c;
++}
++
++.footnote a:hover {
++}
++
++/**/
++div.chapter {
++ margin-top:3em;
++}
++
++div.section {
++ margin-top:1em;
++}
++
++div.note .replaceable,
++div.important .replaceable,
++div.warning .replaceable,
++div.note .keycap,
++div.important .keycap,
++div.warning .keycap
++{
++}
++
++ul li p:last-child, ul li div.para:last-child {
++ margin-bottom:0em;
++ padding-bottom:0em;
++}
++
++/*document navigation*/
++.docnav a, .docnav strong {
++ border:none;
++ text-decoration:none;
++ font-weight:normal;
++}
++
++.docnav {
++ list-style:none;
++ margin:0em;
++ padding:0em;
++ position:relative;
++ width:100%;
++ padding-bottom:2em;
++ padding-top:1em;
++ border-top:1px dotted #ccc;
++}
++
++.docnav li {
++ list-style:none;
++ margin:0em;
++ padding:0em;
++ display:inline;
++ font-size:.8em;
++}
++
++.docnav li:before {
++ content:" ";
++}
++
++.docnav li.previous, .docnav li.next {
++ position:absolute;
++ top:1em;
++}
++
++.docnav li.up, .docnav li.home {
++ margin:0em 1.5em;
++}
++
++.docnav li.previous {
++ left:0px;
++ text-align:left;
++}
++
++.docnav li.next {
++ right:0px;
++ text-align:right;
++}
++
++.docnav li.previous strong, .docnav li.next strong {
++ height:22px;
++ display:block;
++}
++
++.docnav {
++ margin:0 auto;
++ text-align:center;
++}
++
++.docnav li.next a strong {
++ background: url(../images/stock-go-forward.png) top right no-repeat;
++ padding-top:3px;
++ padding-bottom:4px;
++ padding-right:28px;
++ font-size:1.2em;
++}
++
++.docnav li.previous a strong {
++ background: url(../images/stock-go-back.png) top left no-repeat;
++ padding-top:3px;
++ padding-bottom:4px;
++ padding-left:28px;
++ padding-right:0.5em;
++ font-size:1.2em;
++}
++
++.docnav li.home a strong {
++ background: url(../images/stock-home.png) top left no-repeat;
++ padding:5px;
++ padding-left:28px;
++ font-size:1.2em;
++}
++
++.docnav li.up a strong {
++ background: url(../images/stock-go-up.png) top left no-repeat;
++ padding:5px;
++ padding-left:28px;
++ font-size:1.2em;
++}
++
++.docnav a:link, .docnav a:visited {
++ color:#666;
++}
++
++.docnav a:hover, .docnav a:focus, .docnav a:active {
++ color:black;
++}
++
++.docnav a {
++ max-width: 10em;
++ overflow:hidden;
++}
++
++.docnav a:link strong {
++ text-decoration:none;
++}
++
++.docnav {
++ margin:0 auto;
++ text-align:center;
++}
++
++ul.docnav {
++ margin-bottom: 1em;
++}
++/* Reports */
++.reports ul {
++ list-style:none;
++ margin:0em;
++ padding:0em;
++}
++
++.reports li{
++ margin:0em;
++ padding:0em;
++}
++
++.reports li.odd {
++ background-color: #eeeeee;
++ margin:0em;
++ padding:0em;
++}
++
++.reports dl {
++ display:inline;
++ margin:0em;
++ padding:0em;
++ float:right;
++ margin-right: 17em;
++ margin-top:-1.3em;
++}
++
++.reports dt {
++ display:inline;
++ margin:0em;
++ padding:0em;
++}
++
++.reports dd {
++ display:inline;
++ margin:0em;
++ padding:0em;
++ padding-right:.5em;
++}
++
++.reports h2, .reports h3{
++ display:inline;
++ padding-right:.5em;
++ font-size:10pt;
++ font-weight:normal;
++}
++
++.reports div.progress {
++ display:inline;
++ float:right;
++ width:16em;
++ background:#c00 url(../images/shine.png) top left repeat-x;
++ margin:0em;
++ margin-top:-1.3em;
++ padding:0em;
++ border:none;
++}
++
++/*uniform*/
++body.results, body.reports {
++ max-width:57em ;
++ padding:0em;
++}
++
++/*Progress Bar*/
++div.progress {
++ display:block;
++ float:left;
++ width:16em;
++ background:#c00 url(../images/shine.png) top left repeat-x;
++ height:1em;
++}
++
++div.progress span {
++ height:1em;
++ float:left;
++}
++
++div.progress span.translated {
++ background:#6c3 url(../images/shine.png) top left repeat-x;
++}
++
++div.progress span.fuzzy {
++ background:#ff9f00 url(../images/shine.png) top left repeat-x;
++}
++
++
++/*Results*/
++
++.results ul {
++ list-style:none;
++ margin:0em;
++ padding:0em;
++}
++
++.results li{
++ margin:0em;
++ padding:0em;
++}
++
++.results li.odd {
++ background-color: #eeeeee;
++ margin:0em;
++ padding:0em;
++}
++
++.results dl {
++ display:inline;
++ margin:0em;
++ padding:0em;
++ float:right;
++ margin-right: 17em;
++ margin-top:-1.3em;
++}
++
++.results dt {
++ display:inline;
++ margin:0em;
++ padding:0em;
++}
++
++.results dd {
++ display:inline;
++ margin:0em;
++ padding:0em;
++ padding-right:.5em;
++}
++
++.results h2, .results h3 {
++ display:inline;
++ padding-right:.5em;
++ font-size:10pt;
++ font-weight:normal;
++}
++
++.results div.progress {
++ display:inline;
++ float:right;
++ width:16em;
++ background:#c00 url(../images/shine.png) top left repeat-x;
++ margin:0em;
++ margin-top:-1.3em;
++ padding:0em;
++ border:none;
++}
++
++/* Dirty EVIL Mozilla hack for round corners */
++pre {
++ -moz-border-radius:11px;
++ -webkit-border-radius:11px;
++ border-radius: 11px;
++}
++
++.example {
++ -moz-border-radius:0px;
++ -webkit-border-radius:0px;
++ border-radius: 0px;
++}
++
++.package, .citetitle {
++ font-style: italic;
++}
++
++.titlepage .edition {
++ color: #336699;
++ background-color: transparent;
++ margin-top: 1em;
++ margin-bottom: 1em;
++ font-size: 1.4em;
++ font-weight: bold;
++ text-align: center;
++}
++
++span.remark {
++ background-color: #ff00ff;
++}
++
++.draft {
++ background-image: url(../images/watermark-draft.png);
++ background-repeat: repeat-y;
++ background-position: center;
++}
++
++.foreignphrase {
++ font-style: inherit;
++}
++
++dt {
++ clear:both;
++}
++
++dt img {
++ border-style: none;
++ max-width: 112px;
++}
++
++dt object {
++ max-width: 112px;
++}
++
++dt .inlinemediaobject, dt object {
++ display: inline;
++ float: left;
++ margin-bottom: 1em;
++ padding-right: 1em;
++ width: 112px;
++}
++
++dl:after {
++ display: block;
++ clear: both;
++ content: "";
++}
++
++.toc dd {
++ padding-bottom: 0em;
++ margin-bottom: 1em;
++ padding-left: 1.3em;
++ margin-left: 0em;
++}
++
++div.toc > dl > dt {
++ padding-bottom: 0em;
++ margin-bottom: 0em;
++ margin-top: 1em;
++}
++
++
++.strikethrough {
++ text-decoration: line-through;
++}
++
++.underline {
++ text-decoration: underline;
++}
++
++.calloutlist img, .callout {
++ padding: 0em;
++ margin: 0em;
++ width: 12pt;
++ display: inline;
++ vertical-align: middle;
++}
++
++.stepalternatives {
++ list-style-image: none;
++ list-style-type: none;
++}
++
++
++a:link {
++ color:#0066cc;
++}
++
++a:hover, a:active {
++ color:#003366;
++}
++
++a:visited {
++ color:#6699cc;
++}
++
++
++h1 {
++ color:#3c6eb4
++}
++
++.producttitle {
++ background: #3c6eb4 url(../images/h1-bg.png) top left repeat;
++}
++
++.section h1.title {
++ color:#3c6eb4;
++}
++
++
++h2,h3,h4,h5,h6 {
++ color:#3c6eb4;
++}
++
++table {
++ border:1px solid #3c6eb4;
++}
++
++table th {
++ background-color:#3c6eb4;
++}
++
++
++table tr.even td {
++ background-color:#f5f5f5;
++}
++
++.revhistory table th {
++ color:#3c6eb4;
++}
++
++.titlepage .edition {
++ color: #3c6eb4;
++}
++
++</style>
+\ No newline at end of file
diff --git a/0005-dracut.asc-document-debugging-dracut-on-shutdown.patch b/0005-dracut.asc-document-debugging-dracut-on-shutdown.patch
new file mode 100644
index 0000000..429a531
--- /dev/null
+++ b/0005-dracut.asc-document-debugging-dracut-on-shutdown.patch
@@ -0,0 +1,37 @@
+From 39fe00ef600879279f01289007433bd7f9b84dd9 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 22 Aug 2013 09:39:38 +0200
+Subject: [PATCH] dracut.asc: document debugging dracut on shutdown
+
+---
+ dracut.asc | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/dracut.asc b/dracut.asc
+index e0431dc..c011658 100644
+--- a/dracut.asc
++++ b/dracut.asc
+@@ -744,6 +744,23 @@ the dracut shell
+ ==== Additional dracut boot parameters
+ For more debugging options, see <<dracutkerneldebug>> in <<dracutcmdline7>>.
+
++
++[[debugging-dracut-on-shutdown]]
++==== Debugging dracut on shutdown
++
++To debug the shutdown sequence on systemd systems, you can _rd.break_
++on _pre-shutdown_ or _shutdown_.
++
++To do this from an already booted system:
++----
++# mkdir -p /run/initramfs/etc/cmdline.d
++# echo "rd.break=pre-shutdown" > /run/initramfs/etc/cmdline.d/debug.conf
++# touch /run/initramfs/.need_shutdown
++----
++
++This will give you a dracut shell after the system pivot'ed back in the initramfs.
++
++
+ = Developer Manual
+
+ == dracut Components
diff --git a/0006-freenode-IRC-dracut-verification.patch b/0006-freenode-IRC-dracut-verification.patch
new file mode 100644
index 0000000..85cc2f7
--- /dev/null
+++ b/0006-freenode-IRC-dracut-verification.patch
@@ -0,0 +1,17 @@
+From c504d8b4351a5becceec28d98376a301e02ce824 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 22 Aug 2013 10:14:24 +0200
+Subject: [PATCH] freenode IRC #dracut verification
+
+---
+ freenode.txt | 1 +
+ 1 file changed, 1 insertion(+)
+ create mode 100644 freenode.txt
+
+diff --git a/freenode.txt b/freenode.txt
+new file mode 100644
+index 0000000..3ed8941
+--- /dev/null
++++ b/freenode.txt
+@@ -0,0 +1 @@
++bzMuf3ty
diff --git a/0007-removed-freenode.txt.patch b/0007-removed-freenode.txt.patch
new file mode 100644
index 0000000..790cb37
--- /dev/null
+++ b/0007-removed-freenode.txt.patch
@@ -0,0 +1,17 @@
+From 49c062821a481ff409ac2d53ed9dd3ed7331eefb Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 22 Aug 2013 10:24:15 +0200
+Subject: [PATCH] removed freenode.txt
+
+---
+ freenode.txt | 1 -
+ 1 file changed, 1 deletion(-)
+ delete mode 100644 freenode.txt
+
+diff --git a/freenode.txt b/freenode.txt
+deleted file mode 100644
+index 3ed8941..0000000
+--- a/freenode.txt
++++ /dev/null
+@@ -1 +0,0 @@
+-bzMuf3ty
diff --git a/0008-dracut-functions.sh-use-builtin-bash-functions-rathe.patch b/0008-dracut-functions.sh-use-builtin-bash-functions-rathe.patch
new file mode 100644
index 0000000..76e5cc2
--- /dev/null
+++ b/0008-dracut-functions.sh-use-builtin-bash-functions-rathe.patch
@@ -0,0 +1,30 @@
+From 93b02f502e81bf41b7f77b546e3358521b08cd43 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 22 Aug 2013 10:52:49 +0200
+Subject: [PATCH] dracut-functions.sh: use builtin bash functions rather than
+ tr
+
+convert uppercase to lowercase using bash syntax
+---
+ dracut-functions.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 6c7e693..87b9769 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -332,12 +332,12 @@ expand_persistent_dev() {
+ ;;
+ UUID=*)
+ _dev="${_dev#UUID=}"
+- _dev="$(tr "[:upper:]" "[:lower:]" <<< "$_dev" )"
++ _dev="${_dev,,}"
+ _dev="/dev/disk/by-uuid/${_dev}"
+ ;;
+ PARTUUID=*)
+ _dev="${_dev#PARTUUID=}"
+- _dev="$(tr "[:upper:]" "[:lower:]" <<< "$_dev" )"
++ _dev="${_dev,,}"
+ _dev="/dev/disk/by-partuuid/${_dev}"
+ ;;
+ PARTLABEL=*)
diff --git a/0009-dracut-functions.sh-inst_rules-do-not-install-from-e.patch b/0009-dracut-functions.sh-inst_rules-do-not-install-from-e.patch
new file mode 100644
index 0000000..8b3bebe
--- /dev/null
+++ b/0009-dracut-functions.sh-inst_rules-do-not-install-from-e.patch
@@ -0,0 +1,34 @@
+From ace51ef520090e214bac2f6d98f772da0e36376a Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 22 Aug 2013 10:53:43 +0200
+Subject: [PATCH] dracut-functions.sh:inst_rules() do not install from /etc in
+ generic mode
+
+In generic mode, local configuration should not be part of the image.
+
+Also handle symlinks for rule files.
+---
+ dracut-functions.sh | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 87b9769..8f32f07 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -850,12 +850,14 @@ inst_rule_initqueue() {
+ inst_rules() {
+ local _target=/etc/udev/rules.d _rule _found
+
++ [[ $hostonly ]] || unset hostonly
++
+ inst_dir "${udevdir}/rules.d"
+ inst_dir "$_target"
+ for _rule in "$@"; do
+ if [ "${_rule#/}" = "$_rule" ]; then
+- for r in ${udevdir}/rules.d /etc/udev/rules.d; do
+- if [[ -f $r/$_rule ]]; then
++ for r in ${udevdir}/rules.d ${hostonly+/etc/udev/rules.d}; do
++ if [[ -e $r/$_rule ]]; then
+ _found="$r/$_rule"
+ inst_rule_programs "$_found"
+ inst_rule_group_owner "$_found"
diff --git a/0010-use-var-val-rather-than-var-val.patch b/0010-use-var-val-rather-than-var-val.patch
new file mode 100644
index 0000000..2aa1258
--- /dev/null
+++ b/0010-use-var-val-rather-than-var-val.patch
@@ -0,0 +1,293 @@
+From ffc68f357e95f7c8e9240e45dee2a46a3df567d7 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 22 Aug 2013 11:24:01 +0200
+Subject: [PATCH] use ${var:+val} rather than ${var+val}
+
+${var:+val} also catches var=""
+---
+ 50-dracut.install | 2 +-
+ dracut-functions.sh | 42 ++++++++++++++++------------------
+ dracut.sh | 4 ++--
+ modules.d/40network/dhclient-script.sh | 2 +-
+ modules.d/40network/ifup.sh | 4 ++--
+ modules.d/95iscsi/iscsiroot.sh | 14 ++++++------
+ modules.d/95nbd/nbdroot.sh | 4 ++--
+ modules.d/95nfs/nfs-lib.sh | 2 +-
+ test/TEST-04-FULL-SYSTEMD/test.sh | 2 +-
+ test/TEST-50-MULTINIC/test.sh | 2 +-
+ 10 files changed, 38 insertions(+), 40 deletions(-)
+
+diff --git a/50-dracut.install b/50-dracut.install
+index a0623a1..0282741 100755
+--- a/50-dracut.install
++++ b/50-dracut.install
+@@ -22,7 +22,7 @@ done
+ ret=0
+ case "$1" in
+ add)
+- dracut ${noimageifnotneeded+--noimageifnotneeded} "$3"/initrd "$2"
++ dracut ${noimageifnotneeded:+--noimageifnotneeded} "$3"/initrd "$2"
+ ret=$?
+ ;;
+ remove)
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 8f32f07..8a1b73f 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -688,37 +688,37 @@ fi
+ [[ $DRACUT_RESOLVE_LAZY ]] || export DRACUT_RESOLVE_DEPS=1
+ inst_dir() {
+ [[ -e ${initdir}/"$1" ]] && return 0 # already there
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} -d "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} -d "$@" || :
++ $DRACUT_INSTALL ${initdir:+-D "$initdir"} -d "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} -d "$@" || :
+ }
+
+ inst() {
+ [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
+ #dinfo "$DRACUT_INSTALL -l $@"
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++ $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@" || :
+ }
+
+ inst_simple() {
+ [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
+ [[ -e $1 ]] || return 1 # no source
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} "$@" || :
++ $DRACUT_INSTALL ${initdir:+-D "$initdir"} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} "$@" || :
+ }
+
+ inst_symlink() {
+ [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
+ [[ -L $1 ]] || return 1
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++ $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@" || :
+ }
+
+ inst_multiple() {
+ local ret
+ #dinfo "initdir=$initdir $DRACUT_INSTALL -l $@"
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
++ $DRACUT_INSTALL ${initdir:+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@"
+ ret=$?
+- (($ret != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++ (($ret != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} -a ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@" || :
+ return $ret
+ }
+
+@@ -729,18 +729,18 @@ dracut_install() {
+ inst_library() {
+ [[ -e ${initdir}/"${2:-$1}" ]] && return 0 # already there
+ [[ -e $1 ]] || return 1 # no source
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++ $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@" || :
+ }
+
+ inst_binary() {
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++ $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@" || :
+ }
+
+ inst_script() {
+- $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@"
+- (($? != 0)) && derror $DRACUT_INSTALL ${initdir+-D "$initdir"} ${DRACUT_RESOLVE_DEPS+-l} ${DRACUT_FIPS_MODE+-H} "$@" || :
++ $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@"
++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-H} "$@" || :
+ }
+
+ # find symlinks linked to given library file
+@@ -850,13 +850,11 @@ inst_rule_initqueue() {
+ inst_rules() {
+ local _target=/etc/udev/rules.d _rule _found
+
+- [[ $hostonly ]] || unset hostonly
+-
+ inst_dir "${udevdir}/rules.d"
+ inst_dir "$_target"
+ for _rule in "$@"; do
+ if [ "${_rule#/}" = "$_rule" ]; then
+- for r in ${udevdir}/rules.d ${hostonly+/etc/udev/rules.d}; do
++ for r in ${udevdir}/rules.d ${hostonly:+/etc/udev/rules.d}; do
+ if [[ -e $r/$_rule ]]; then
+ _found="$r/$_rule"
+ inst_rule_programs "$_found"
+@@ -1388,7 +1386,7 @@ dracut_kernel_post() {
+ local _pid
+
+ if [[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && [[ -f "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist" ]]; then
+- xargs -r modprobe -a ${_moddirname+-d ${_moddirname}/} \
++ xargs -r modprobe -a ${_moddirname:+-d ${_moddirname}/} \
+ --ignore-install --show-depends --set-version $kernel \
+ < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist" 2>/dev/null \
+ | sort -u \
+@@ -1399,7 +1397,7 @@ dracut_kernel_post() {
+
+ (
+ if [[ $DRACUT_INSTALL ]] && [[ -z $_moddirname ]]; then
+- xargs -r $DRACUT_INSTALL ${initdir+-D "$initdir"} -a < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"
++ xargs -r $DRACUT_INSTALL ${initdir:+-D "$initdir"} -a < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"
+ else
+ while read _modpath; do
+ local _destpath=$_modpath
+@@ -1418,7 +1416,7 @@ dracut_kernel_post() {
+ for _fwdir in $fw_dir; do
+ echo $_fwdir/$line;
+ done;
+- done | xargs -r $DRACUT_INSTALL ${initdir+-D "$initdir"} -a -o
++ done | xargs -r $DRACUT_INSTALL ${initdir:+-D "$initdir"} -a -o
+ else
+ for _fw in $(xargs -r modinfo -k $kernel -F firmware < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"); do
+ for _fwdir in $fw_dir; do
+diff --git a/dracut.sh b/dracut.sh
+index 0c42958..7ad9d1e 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -729,7 +729,7 @@ fi
+
+ if ! [[ $print_cmdline ]]; then
+ inst /bin/sh
+- if ! $DRACUT_INSTALL ${initdir+-D "$initdir"} -R "$initdir/bin/sh" &>/dev/null; then
++ if ! $DRACUT_INSTALL ${initdir:+-D "$initdir"} -R "$initdir/bin/sh" &>/dev/null; then
+ unset DRACUT_RESOLVE_LAZY
+ export DRACUT_RESOLVE_DEPS=1
+ fi
+@@ -1184,7 +1184,7 @@ if [[ $kernel_only != yes ]]; then
+ find "$initdir" -type f \
+ '(' -perm -0100 -or -perm -0010 -or -perm -0001 ')' \
+ -not -path '*.ko' -print0 \
+- | xargs -r -0 $DRACUT_INSTALL ${initdir+-D "$initdir"} -R ${DRACUT_FIPS_MODE+-H} --
++ | xargs -r -0 $DRACUT_INSTALL ${initdir:+-D "$initdir"} -R ${DRACUT_FIPS_MODE:+-H} --
+ dinfo "*** Resolving executable dependencies done***"
+ fi
+ fi
+diff --git a/modules.d/40network/dhclient-script.sh b/modules.d/40network/dhclient-script.sh
+index f04b83d..07c3d9b 100755
+--- a/modules.d/40network/dhclient-script.sh
++++ b/modules.d/40network/dhclient-script.sh
+@@ -42,7 +42,7 @@ setup_interface() {
+
+ # Note: hostname can be fqdn OR short hostname, so chop off any
+ # trailing domain name and explicity add any domain if set.
+- [ -n "$hostname" ] && echo "echo ${hostname%.$domain}${domain+.$domain} > /proc/sys/kernel/hostname" > /tmp/net.$netif.hostname
++ [ -n "$hostname" ] && echo "echo ${hostname%.$domain}${domain:+.$domain} > /proc/sys/kernel/hostname" > /tmp/net.$netif.hostname
+ }
+
+ PATH=/usr/sbin:/usr/bin:/sbin:/bin
+diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
+index 32f0ff2..f9e1669 100755
+--- a/modules.d/40network/ifup.sh
++++ b/modules.d/40network/ifup.sh
+@@ -124,10 +124,10 @@ do_static() {
+ [ -n "$mtu" ] && ip link set mtu $mtu dev $netif
+ if strstr $ip '*:*:*'; then
+ # note no ip addr flush for ipv6
+- ip addr add $ip/$mask ${srv+peer $srv} dev $netif
++ ip addr add $ip/$mask ${srv:+peer $srv} dev $netif
+ else
+ ip addr flush dev $netif
+- ip addr add $ip/$mask ${srv+peer $srv} brd + dev $netif
++ ip addr add $ip/$mask ${srv:+peer $srv} brd + dev $netif
+ fi
+
+ [ -n "$gw" ] && echo ip route add default via $gw dev $netif > /tmp/net.$netif.gw
+diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
+index 0c04219..5181f52 100755
+--- a/modules.d/95iscsi/iscsiroot.sh
++++ b/modules.d/95iscsi/iscsiroot.sh
+@@ -96,7 +96,7 @@ handle_netroot()
+ # XXX is this needed?
+ getarg ro && iscsirw=ro
+ getarg rw && iscsirw=rw
+- fsopts=${fsopts+$fsopts,}${iscsirw}
++ fsopts=${fsopts:+$fsopts,}${iscsirw}
+
+ if [ -z $iscsi_initiator ]; then
+ # XXX Where are these from?
+@@ -155,12 +155,12 @@ handle_netroot()
+ iscsistart -i $iscsi_initiator -t $iscsi_target_name \
+ -g $iscsi_target_group -a $iscsi_target_ip \
+ -p $iscsi_target_port \
+- ${iscsi_username+-u $iscsi_username} \
+- ${iscsi_password+-w $iscsi_password} \
+- ${iscsi_in_username+-U $iscsi_in_username} \
+- ${iscsi_in_password+-W $iscsi_in_password} \
+- ${iscsi_iface_name+--param iface.iscsi_ifacename=$iscsi_iface_name} \
+- ${iscsi_netdev_name+--param iface.net_ifacename=$iscsi_netdev_name} \
++ ${iscsi_username:+-u $iscsi_username} \
++ ${iscsi_password:+-w $iscsi_password} \
++ ${iscsi_in_username:+-U $iscsi_in_username} \
++ ${iscsi_in_password:+-W $iscsi_in_password} \
++ ${iscsi_iface_name:+--param iface.iscsi_ifacename=$iscsi_iface_name} \
++ ${iscsi_netdev_name:+--param iface.net_ifacename=$iscsi_netdev_name} \
+ ${iscsi_param} \
+ || :
+
+diff --git a/modules.d/95nbd/nbdroot.sh b/modules.d/95nbd/nbdroot.sh
+index 1a1ed54..823da0e 100755
+--- a/modules.d/95nbd/nbdroot.sh
++++ b/modules.d/95nbd/nbdroot.sh
+@@ -76,12 +76,12 @@ while [ -n "$nbdflags" ]; do
+ nbdrw=$f
+ continue
+ fi
+- fsopts=${fsopts+$fsopts,}$f
++ fsopts=${fsopts:+$fsopts,}$f
+ done
+
+ getarg ro && nbdrw=ro
+ getarg rw && nbdrw=rw
+-fsopts=${fsopts+$fsopts,}${nbdrw}
++fsopts=${fsopts:+$fsopts,}${nbdrw}
+
+ # XXX better way to wait for the device to be made?
+ i=0
+diff --git a/modules.d/95nfs/nfs-lib.sh b/modules.d/95nfs/nfs-lib.sh
+index 628996c..f5fc56d 100755
+--- a/modules.d/95nfs/nfs-lib.sh
++++ b/modules.d/95nfs/nfs-lib.sh
+@@ -128,7 +128,7 @@ mount_nfs() {
+ nfs_to_var $nfsroot $netif
+ munge_nfs_options
+ if [ "$nfs" = "nfs4" ]; then
+- options=$options${nfslock+,$nfslock}
++ options=$options${nfslock:+,$nfslock}
+ else
+ # NFSv{2,3} doesn't support using locks as it requires a helper to
+ # transfer the rpcbind state to the new root
+diff --git a/test/TEST-04-FULL-SYSTEMD/test.sh b/test/TEST-04-FULL-SYSTEMD/test.sh
+index d4998d8..3eeb840 100755
+--- a/test/TEST-04-FULL-SYSTEMD/test.sh
++++ b/test/TEST-04-FULL-SYSTEMD/test.sh
+@@ -82,7 +82,7 @@ test_setup() {
+ inst "$basedir/modules.d/40network/ifup.sh" "/sbin/ifup"
+ inst_multiple grep
+ inst_simple ./fstab /etc/fstab
+- rpm -ql systemd | xargs -r $DRACUT_INSTALL ${initdir+-D "$initdir"} -o -a -l
++ rpm -ql systemd | xargs -r $DRACUT_INSTALL ${initdir:+-D "$initdir"} -o -a -l
+ inst /lib/systemd/system/systemd-remount-fs.service
+ inst /lib/systemd/systemd-remount-fs
+ inst /lib/systemd/system/systemd-journal-flush.service
+diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
+index b616e6b..7c9d544 100755
+--- a/test/TEST-50-MULTINIC/test.sh
++++ b/test/TEST-50-MULTINIC/test.sh
+@@ -20,7 +20,7 @@ run_server() {
+ -display none \
+ -net socket,listen=127.0.0.1:12350 \
+ -net nic,macaddr=52:54:01:12:34:56,model=e1000 \
+- ${SERIAL+-serial "$SERIAL"} \
++ ${SERIAL:+-serial "$SERIAL"} \
+ -watchdog i6300esb -watchdog-action poweroff \
+ -kernel /boot/vmlinuz-"$KVERSION" \
+ -append "loglevel=7 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
diff --git a/0011-dracut-functions.sh-get_persistent_dev-do-not-check-.patch b/0011-dracut-functions.sh-get_persistent_dev-do-not-check-.patch
new file mode 100644
index 0000000..da73854
--- /dev/null
+++ b/0011-dracut-functions.sh-get_persistent_dev-do-not-check-.patch
@@ -0,0 +1,22 @@
+From 2b9d8f65a6f3fb8141701753ee5cd75f80849cf8 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Fri, 23 Aug 2013 19:04:12 +0200
+Subject: [PATCH] dracut-functions.sh:get_persistent_dev() do not check
+ non-existent dirs
+
+---
+ dracut-functions.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 8a1b73f..c89d816 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -313,6 +313,7 @@ get_persistent_dev() {
+ /dev/disk/by-id/* \
+ /dev/disk/by-path/* \
+ ; do
++ [[ -e "$i" ]] || continue
+ [[ $i == /dev/mapper/control ]] && continue
+ [[ $i == /dev/mapper/mpath* ]] && continue
+ _tmp=$(get_maj_min "$i")
diff --git a/0012-network-move-ibft-parsing-before-all-other-network-c.patch b/0012-network-move-ibft-parsing-before-all-other-network-c.patch
new file mode 100644
index 0000000..b3e5166
--- /dev/null
+++ b/0012-network-move-ibft-parsing-before-all-other-network-c.patch
@@ -0,0 +1,64 @@
+From a242ef13e0c2f5982708d898e063f02e1aa027c5 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 26 Aug 2013 10:18:47 +0200
+Subject: [PATCH] network: move ibft parsing before all other network cmdline
+ parser
+
+otherwise the config produced by ibft will not get processed
+---
+ modules.d/40network/module-setup.sh | 1 +
+ modules.d/40network/parse-ibft.sh | 10 ++++++++++
+ modules.d/40network/parse-ip-opts.sh | 4 ----
+ 3 files changed, 11 insertions(+), 4 deletions(-)
+ create mode 100755 modules.d/40network/parse-ibft.sh
+
+diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
+index 464e0cb..d2833d0 100755
+--- a/modules.d/40network/module-setup.sh
++++ b/modules.d/40network/module-setup.sh
+@@ -82,6 +82,7 @@ install() {
+ inst_hook pre-udev 50 "$moddir/ifname-genrules.sh"
+ inst_hook pre-udev 60 "$moddir/net-genrules.sh"
+ inst_hook cmdline 91 "$moddir/dhcp-root.sh"
++ inst_hook cmdline 92 "$moddir/parse-ibft.sh"
+ inst_hook cmdline 95 "$moddir/parse-vlan.sh"
+ inst_hook cmdline 96 "$moddir/parse-bond.sh"
+ inst_hook cmdline 96 "$moddir/parse-team.sh"
+diff --git a/modules.d/40network/parse-ibft.sh b/modules.d/40network/parse-ibft.sh
+new file mode 100755
+index 0000000..9776c75
+--- /dev/null
++++ b/modules.d/40network/parse-ibft.sh
+@@ -0,0 +1,10 @@
++#!/bin/sh
++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
++# ex: ts=8 sw=4 sts=4 et filetype=sh
++
++command -v getarg >/dev/null || . /lib/dracut-lib.sh
++command -v ibft_to_cmdline >/dev/null || . /lib/net-lib.sh
++
++# If ibft is requested, read ibft vals and write ip=XXX cmdline args
++[ "ibft" = "$(getarg ip=)" ] && ibft_to_cmdline
++
+diff --git a/modules.d/40network/parse-ip-opts.sh b/modules.d/40network/parse-ip-opts.sh
+index 4ca5098..4bf286d 100755
+--- a/modules.d/40network/parse-ip-opts.sh
++++ b/modules.d/40network/parse-ip-opts.sh
+@@ -15,7 +15,6 @@
+ #
+
+ command -v getarg >/dev/null || . /lib/dracut-lib.sh
+-command -v ibft_to_cmdline >/dev/null || . /lib/net-lib.sh
+
+ if [ -n "$netroot" ] && [ -z "$(getarg ip=)" ] && [ -z "$(getarg BOOTIF=)" ]; then
+ # No ip= argument(s) for netroot provided, defaulting to DHCP
+@@ -39,9 +38,6 @@ if [ -n "$NEEDBOOTDEV" ] ; then
+ [ -z "$BOOTDEV" ] && warn "Please supply bootdev argument for multiple ip= lines"
+ fi
+
+-# If ibft is requested, read ibft vals and write ip=XXX cmdline args
+-[ "ibft" = "$(getarg ip=)" ] && ibft_to_cmdline
+-
+ # Check ip= lines
+ # XXX Would be nice if we could errorcheck ip addresses here as well
+ for p in $(getargs ip=); do
diff --git a/0013-i18n-check-for-setfont-and-loadkeys-binaries.patch b/0013-i18n-check-for-setfont-and-loadkeys-binaries.patch
new file mode 100644
index 0000000..3a871f9
--- /dev/null
+++ b/0013-i18n-check-for-setfont-and-loadkeys-binaries.patch
@@ -0,0 +1,25 @@
+From 87bd8907a64991445af552740806d3949fc6d6ca Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 26 Aug 2013 10:19:49 +0200
+Subject: [PATCH] i18n: check for setfont and loadkeys binaries
+
+---
+ modules.d/10i18n/module-setup.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
+index be9d90b..2a83728 100755
+--- a/modules.d/10i18n/module-setup.sh
++++ b/modules.d/10i18n/module-setup.sh
+@@ -4,6 +4,11 @@
+
+ check() {
+ [[ "$mount_needs" ]] && return 1
++
++ for i in setfont loadkeys kbd_mode; do
++ type -P "$i" >/dev/null || return 1
++ done
++
+ return 0
+ }
+
diff --git a/0014-dmraid-parse-dm.sh-if-rd.md-0-use-dmraid-for-imsm-an.patch b/0014-dmraid-parse-dm.sh-if-rd.md-0-use-dmraid-for-imsm-an.patch
new file mode 100644
index 0000000..aab195b
--- /dev/null
+++ b/0014-dmraid-parse-dm.sh-if-rd.md-0-use-dmraid-for-imsm-an.patch
@@ -0,0 +1,32 @@
+From da119ab18c4813b543f16303a62a6b718c6abcb3 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 26 Aug 2013 12:46:51 +0200
+Subject: [PATCH] dmraid/parse-dm.sh: if rd.md=0, use dmraid for imsm and ddf
+
+---
+ modules.d/90dmraid/parse-dm.sh | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/modules.d/90dmraid/parse-dm.sh b/modules.d/90dmraid/parse-dm.sh
+index 76dfb5d..6d21d4f 100755
+--- a/modules.d/90dmraid/parse-dm.sh
++++ b/modules.d/90dmraid/parse-dm.sh
+@@ -7,12 +7,16 @@ if ! getargbool 1 rd.dm -d -n rd_NO_DM || getarg "rd.dm=0" -d nodmraid; then
+ udevproperty rd_NO_DM=1
+ fi
+
+-if ! command -v mdadm >/dev/null || ! getargbool 1 rd.md.imsm -d -n rd_NO_MDIMSM -n noiswmd; then
++if ! command -v mdadm >/dev/null \
++ || ! getargbool 1 rd.md.imsm -d -n rd_NO_MDIMSM -n noiswmd \
++ || ! getargbool 1 rd.md -d -n rd_NO_MD; 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 -n noddfmd; then
++if ! command -v mdadm >/dev/null \
++ || ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF -n noddfmd \
++ || ! getargbool 1 rd.md -d -n rd_NO_MD; then
+ info "rd.md.ddf=0: no MD RAID for SNIA ddf raids"
+ udevproperty rd_NO_MDDDF=1
+ fi
diff --git a/0015-dmraid-mdraid-improve-hostonly-recognition.patch b/0015-dmraid-mdraid-improve-hostonly-recognition.patch
new file mode 100644
index 0000000..5f3a132
--- /dev/null
+++ b/0015-dmraid-mdraid-improve-hostonly-recognition.patch
@@ -0,0 +1,108 @@
+From 281327f72cfc4c9ef6308039c7e1da82f79b139f Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 26 Aug 2013 14:04:56 +0200
+Subject: [PATCH] dmraid/mdraid: improve hostonly recognition
+
+Factor out get_devpath_block(), which also fixes a dmraid hostonly bug.
+
+Also only include dmraid and mdraid, if they are actually in use.
+---
+ dracut-functions.sh | 17 +++++++++++++++++
+ modules.d/90dmraid/module-setup.sh | 24 ++++++++++++------------
+ modules.d/90mdraid/module-setup.sh | 13 +++++++++++--
+ 3 files changed, 40 insertions(+), 14 deletions(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index c89d816..9b24419 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -296,6 +296,23 @@ get_maj_min() {
+ printf "%s" "$((0x${_majmin%:*})):$((0x${_majmin#*:}))"
+ }
+
++
++# get_devpath_block <device>
++# get the DEVPATH in /sys of a block device
++get_devpath_block() {
++ local majmin i
++ _majmin=$(get_maj_min "$1")
++
++ for _i in /sys/block/*/dev /sys/block/*/*/dev; do
++ [[ -e "$_i" ]] || continue
++ if [[ "$_majmin" == "$(<"$_i")" ]]; then
++ printf "%s" "${_i%/dev}"
++ return 0
++ fi
++ done
++ return 1
++}
++
+ # get a persistent path from a device
+ get_persistent_dev() {
+ local i _tmp _dev
+diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
+index 2d73963..11181cf 100755
+--- a/modules.d/90dmraid/module-setup.sh
++++ b/modules.d/90dmraid/module-setup.sh
+@@ -9,8 +9,17 @@ check() {
+ type -P dmraid >/dev/null || return 1
+
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+- for fs in "${host_fs_types[@]}"; do
+- [[ $fs = *_raid_member ]] && return 0
++ for dev in "${!host_fs_types[@]}"; do
++ [[ "${host_fs_types[$dev]}" != *_raid_member ]] && continue
++
++ DEVPATH=$(get_devpath_block "$dev")
++
++ for holder in "$DEVPATH"/holders/*; do
++ [[ -e "$holder" ]] || continue
++ [[ -e "$holder/dm" ]] && return 0
++ break
++ done
++
+ done
+ return 255
+ }
+@@ -31,16 +40,7 @@ cmdline() {
+ local holder DEVPATH DM_NAME majmin
+ [[ "${host_fs_types[$dev]}" != *_raid_member ]] && continue
+
+- majmin=$(get_maj_min $dev)
+- DEVPATH=$(
+- for i in /sys/block/*; do
+- [[ -e "$i/dev" ]] || continue
+- if [[ $a == $(<"$i/dev") ]]; then
+- printf "%s" "$i"
+- break
+- fi
+- done
+- )
++ DEVPATH=$(get_devpath_block "$dev")
+
+ for holder in "$DEVPATH"/holders/*; do
+ [[ -e "$holder" ]] || continue
+diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
+index 2bedbfd..5df2274 100755
+--- a/modules.d/90mdraid/module-setup.sh
++++ b/modules.d/90mdraid/module-setup.sh
+@@ -8,8 +8,17 @@ check() {
+ type -P mdadm >/dev/null || return 1
+
+ [[ $hostonly ]] || [[ $mount_needs ]] && {
+- for fs in "${host_fs_types[@]}"; do
+- [[ "$fs" == *_raid_member ]] && return 0
++ for dev in "${!host_fs_types[@]}"; do
++ [[ "${host_fs_types[$dev]}" != *_raid_member ]] && continue
++
++ DEVPATH=$(get_devpath_block "$dev")
++
++ for holder in "$DEVPATH"/holders/*; do
++ [[ -e "$holder" ]] || continue
++ [[ -e "$holder/md" ]] && return 0
++ break
++ done
++
+ done
+ return 255
+ }
diff --git a/0016-dracut-functions.sh-get_devpath_block-make-local-var.patch b/0016-dracut-functions.sh-get_devpath_block-make-local-var.patch
new file mode 100644
index 0000000..e74d5f0
--- /dev/null
+++ b/0016-dracut-functions.sh-get_devpath_block-make-local-var.patch
@@ -0,0 +1,22 @@
+From 8552a3270caeec41f4610f0081c3d550cb4054eb Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 27 Aug 2013 11:34:39 +0200
+Subject: [PATCH] dracut-functions.sh:get_devpath_block() make local vars local
+
+---
+ dracut-functions.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 9b24419..4c62d6b 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -300,7 +300,7 @@ get_maj_min() {
+ # get_devpath_block <device>
+ # get the DEVPATH in /sys of a block device
+ get_devpath_block() {
+- local majmin i
++ local _majmin _i
+ _majmin=$(get_maj_min "$1")
+
+ for _i in /sys/block/*/dev /sys/block/*/*/dev; do
diff --git a/0017-resume-debian-s-resume-is-in-usr-lib-uswsusp.patch b/0017-resume-debian-s-resume-is-in-usr-lib-uswsusp.patch
new file mode 100644
index 0000000..5628487
--- /dev/null
+++ b/0017-resume-debian-s-resume-is-in-usr-lib-uswsusp.patch
@@ -0,0 +1,23 @@
+From cb73315dd618b828d8d4e395772a05e4835842ab Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 28 Aug 2013 10:57:23 +0200
+Subject: [PATCH] resume: debian's resume is in /usr/lib/uswsusp
+
+Hurray! Everybody reinvents the wheel!
+---
+ modules.d/95resume/module-setup.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh
+index 7f81049..518ebf0 100755
+--- a/modules.d/95resume/module-setup.sh
++++ b/modules.d/95resume/module-setup.sh
+@@ -17,7 +17,7 @@ check() {
+ install() {
+ local _bin
+ # Optional uswsusp support
+- for _bin in /usr/sbin/resume /usr/lib/suspend/resume
++ for _bin in /usr/sbin/resume /usr/lib/suspend/resume /usr/lib/uswsusp/resume
+ do
+ [[ -x "${_bin}" ]] && {
+ inst "${_bin}" /usr/sbin/resume
diff --git a/0018-dracut-logger.sh-check-is-journald.socket-is-active.patch b/0018-dracut-logger.sh-check-is-journald.socket-is-active.patch
new file mode 100644
index 0000000..831cc79
--- /dev/null
+++ b/0018-dracut-logger.sh-check-is-journald.socket-is-active.patch
@@ -0,0 +1,26 @@
+From 6a877a79c4c94d4e6752c981559ac85f21073973 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 28 Aug 2013 20:01:54 +0200
+Subject: [PATCH] dracut-logger.sh: check is journald.socket is active
+
+before using systemd-cat, make sure someone is listening
+---
+ dracut-logger.sh | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/dracut-logger.sh b/dracut-logger.sh
+index 0c505e2..b052581 100755
+--- a/dracut-logger.sh
++++ b/dracut-logger.sh
+@@ -141,7 +141,10 @@ dlog_init() {
+ fi
+
+ if (( $sysloglvl > 0 )); then
+- if [[ -d /run/systemd/journal ]] && type -P systemd-cat &>/dev/null && (( $UID == 0 )) ; then
++ if [[ -d /run/systemd/journal ]] \
++ && type -P systemd-cat &>/dev/null \
++ && (( $UID == 0 )) \
++ && systemctl is-active systemd-journald.socket &>/dev/null; then
+ readonly _dlogdir="$(mktemp --tmpdir="$TMPDIR/" -d -t dracut-log.XXXXXX)"
+ readonly _systemdcatfile="$_dlogdir/systemd-cat"
+ mkfifo "$_systemdcatfile"
diff --git a/0019-dracut-functions.sh-for_each_module_dir-skip-empty-m.patch b/0019-dracut-functions.sh-for_each_module_dir-skip-empty-m.patch
new file mode 100644
index 0000000..8fa9c36
--- /dev/null
+++ b/0019-dracut-functions.sh-for_each_module_dir-skip-empty-m.patch
@@ -0,0 +1,26 @@
+From 00ed3ccfd910c84d5236f899ccf4fd45fc714197 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 2 Sep 2013 10:27:46 +0200
+Subject: [PATCH] dracut-functions.sh:for_each_module_dir() skip empty modules
+
+skip modules, which have no module-setup.sh, install or installkernel
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1003153
+---
+ dracut-functions.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/dracut-functions.sh b/dracut-functions.sh
+index 4c62d6b..1d39a6d 100755
+--- a/dracut-functions.sh
++++ b/dracut-functions.sh
+@@ -1302,6 +1302,9 @@ for_each_module_dir() {
+ local _func
+ _func=$1
+ for _moddir in "$dracutbasedir/modules.d"/[0-9][0-9]*; do
++ [[ -d $_moddir ]] || continue;
++ [[ -e $_moddir/install || -e $_moddir/installkernel || \
++ -e $_moddir/module-setup.sh ]] || continue
+ _mod=${_moddir##*/}; _mod=${_mod#[0-9][0-9]}
+ $_func $_mod 1
+ done
diff --git a/0020-iscsi-parse-iscsi-parameter-even-if-rootok-1.patch b/0020-iscsi-parse-iscsi-parameter-even-if-rootok-1.patch
new file mode 100644
index 0000000..994fc2d
--- /dev/null
+++ b/0020-iscsi-parse-iscsi-parameter-even-if-rootok-1.patch
@@ -0,0 +1,23 @@
+From 5ecc117a25db5d8d1d61953d86f0cbbc0b5e0ef3 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 3 Sep 2013 15:23:28 +0200
+Subject: [PATCH] iscsi: parse iscsi parameter, even if rootok=1
+
+---
+ modules.d/95iscsi/parse-iscsiroot.sh | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh
+index 286e3dc..e83ef32 100755
+--- a/modules.d/95iscsi/parse-iscsiroot.sh
++++ b/modules.d/95iscsi/parse-iscsiroot.sh
+@@ -13,9 +13,6 @@
+ # root= takes precedence over netroot= if root=iscsi[...]
+ #
+
+-# 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=)
diff --git a/0021-net-lib-ibft_to_cmdline-fixes.patch b/0021-net-lib-ibft_to_cmdline-fixes.patch
new file mode 100644
index 0000000..5d4c681
--- /dev/null
+++ b/0021-net-lib-ibft_to_cmdline-fixes.patch
@@ -0,0 +1,57 @@
+From f2cbd4cbd639df9b0f3d9320df491bf23c109edb Mon Sep 17 00:00:00 2001
+From: WANG Chao <chaowang@redhat.com>
+Date: Wed, 4 Sep 2013 01:29:58 +0800
+Subject: [PATCH] net-lib: ibft_to_cmdline() fixes
+
+Fix 3 issues in ibft_to_cmdline():
+- unset local variables at the beginning of each loop
+- only write vlan.conf when we write out ip=xxx
+- when vlan id is 0, don't write out vlan.conf. Because 0 means untagged
+ and we don't actually need vlan interface.
+---
+ modules.d/40network/net-lib.sh | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
+index ca4b393..82c4f72 100644
+--- a/modules.d/40network/net-lib.sh
++++ b/modules.d/40network/net-lib.sh
+@@ -203,11 +203,13 @@ fix_bootif() {
+ }
+
+ ibft_to_cmdline() {
+- local iface="" mac="" dev=""
+- local dhcp="" ip="" gw="" mask="" hostname=""
++ local iface=""
+ modprobe -q iscsi_ibft
+ (
+ for iface in /sys/firmware/ibft/ethernet*; do
++ local mac="" dev=""
++ local dhcp="" ip="" gw="" mask="" hostname=""
++
+ [ -e ${iface}/mac ] || continue
+ mac=$(read a < ${iface}/mac; echo $a)
+ [ -z "$mac" ] && continue
+@@ -216,10 +218,6 @@ ibft_to_cmdline() {
+ [ -e /tmp/net.${dev}.has_ibft_config ] && continue
+
+ [ -e ${iface}/dhcp ] && dhcp=$(read a < ${iface}/dhcp; echo $a)
+- if [ -e ${iface}/vlan ]; then
+- vlan=$(read a < ${iface}/vlan; echo $a)
+- echo "vlan=$vlan:$dev"
+- fi
+
+ if [ -n "$dhcp" ]; then
+ echo "ip=$dev:dhcp"
+@@ -244,6 +242,11 @@ ibft_to_cmdline() {
+ ls -l ${iface} | vinfo
+ fi
+
++ if [ -e ${iface}/vlan ]; then
++ vlan=$(read a < ${iface}/vlan; echo $a)
++ [ "$vlan" -ne "0" ] && echo "vlan=$vlan:$dev"
++ fi
++
+ echo $mac > /tmp/net.${dev}.has_ibft_config
+ done
+ ) >> /etc/cmdline.d/40-ibft.conf
diff --git a/0022-Rewrite-rootok-and-netroot-logic.patch b/0022-Rewrite-rootok-and-netroot-logic.patch
new file mode 100644
index 0000000..49fc29b
--- /dev/null
+++ b/0022-Rewrite-rootok-and-netroot-logic.patch
@@ -0,0 +1,190 @@
+From de74e1ef41148f72b572252eaa5a8e4859cfa929 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 4 Sep 2013 09:45:04 +0200
+Subject: [PATCH] Rewrite "rootok" and "netroot" logic
+
+Previously if "$rootok" = 1, parsing of netroot command line arguments
+was skipped. For multiple netroot arguments, all parse scripts have to
+run.
+
+Previously only the first netroot argument was taken into account for
+the parsing scripts. Now every netroot argument is processed.
+---
+ modules.d/40network/dhcp-root.sh | 16 ++++++++++------
+ modules.d/40network/netroot.sh | 1 +
+ modules.d/95cifs/parse-cifsroot.sh | 16 +++++++---------
+ modules.d/95iscsi/parse-iscsiroot.sh | 7 ++++++-
+ modules.d/95nbd/parse-nbdroot.sh | 12 +++++++-----
+ modules.d/95nfs/parse-nfsroot.sh | 20 ++++++++++++++------
+ 6 files changed, 45 insertions(+), 27 deletions(-)
+
+diff --git a/modules.d/40network/dhcp-root.sh b/modules.d/40network/dhcp-root.sh
+index 85c7f08..f2a04e0 100755
+--- a/modules.d/40network/dhcp-root.sh
++++ b/modules.d/40network/dhcp-root.sh
+@@ -2,20 +2,24 @@
+ # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+ # ex: ts=8 sw=4 sts=4 et filetype=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=)
+
+-if [ "$root" = "dhcp" ] || [ "$root" = "dhcp6" ] || [ "$netroot" = "dhcp" ] ; then
++if [ -z "$netroot" ]; then
++ for netroot in $(getargs netroot=); do
++ [ "$netroot" = "dhcp" ] && break
++ [ "$netroot" = "dhcp6" ] && break
++ done
++ [ "$netroot" = "dhcp" ] || [ "$netroot" = "dhcp6" ] || unset netroot
++fi
++
++if [ "$root" = "dhcp" ] || [ "$root" = "dhcp6" ] || [ "$netroot" = "dhcp" ] || [ "$netroot" = "dhcp6" ]; then
+ # Tell ip= checker that we need dhcp
+ NEEDDHCP="1"
+
+ # Done, all good!
+ rootok=1
+- if [ "$netroot" != "dhcp" ] ; then
++ if [ "$netroot" != "dhcp" ] && [ "$netroot" != "dhcp6" ]; then
+ netroot=$root
+ fi
+
+diff --git a/modules.d/40network/netroot.sh b/modules.d/40network/netroot.sh
+index daeb14c..8f6945f 100755
+--- a/modules.d/40network/netroot.sh
++++ b/modules.d/40network/netroot.sh
+@@ -51,6 +51,7 @@ if [ -z "$2" ]; then
+ netroot=$new_root_path
+
+ # FIXME!
++ unset rootok
+ for f in $hookdir/cmdline/90*.sh; do
+ [ -f "$f" ] && . "$f";
+ done
+diff --git a/modules.d/95cifs/parse-cifsroot.sh b/modules.d/95cifs/parse-cifsroot.sh
+index f376b16..52d5809 100755
+--- a/modules.d/95cifs/parse-cifsroot.sh
++++ b/modules.d/95cifs/parse-cifsroot.sh
+@@ -14,22 +14,20 @@
+ 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=)
++
++if [ -z "$netroot" ]; then
++ for netroot in $(getargs netroot=); do
++ [ "${netroot%%:*}" = "cifs" ] && break
++ done
++ [ "${netroot%%:*}" = "cifs" ] || unset netroot
++fi
+
+ # Root takes precedence over netroot
+ if [ "${root%%:*}" = "cifs" ] ; then
+-
+- # Don't continue if root is ok
+- [ -n "$rootok" ] && return
+-
+ if [ -n "$netroot" ] ; then
+ warn "root takes precedence over netroot. Ignoring netroot"
+-
+ fi
+ netroot=$root
+ unset root
+diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh
+index e83ef32..0c8b524 100755
+--- a/modules.d/95iscsi/parse-iscsiroot.sh
++++ b/modules.d/95iscsi/parse-iscsiroot.sh
+@@ -15,7 +15,12 @@
+
+ # This script is sourced, so root should be set. But let's be paranoid
+ [ -z "$root" ] && root=$(getarg root=)
+-[ -z "$netroot" ] && netroot=$(getarg netroot=)
++if [ -z "$netroot" ]; then
++ for netroot in $(getargs netroot=); do
++ [ "${netroot%%:*}" = "iscsi" ] && break
++ done
++ [ "${netroot%%:*}" = "iscsi" ] || unset netroot
++fi
+ [ -z "$iscsiroot" ] && iscsiroot=$(getarg iscsiroot=)
+ [ -z "$iscsi_firmware" ] && getargbool 0 rd.iscsi.firmware -y iscsi_firmware && iscsi_firmware="1"
+
+diff --git a/modules.d/95nbd/parse-nbdroot.sh b/modules.d/95nbd/parse-nbdroot.sh
+index ec9e1f6..49c44b6 100755
+--- a/modules.d/95nbd/parse-nbdroot.sh
++++ b/modules.d/95nbd/parse-nbdroot.sh
+@@ -26,14 +26,16 @@ netroot_to_var() {
+
+ # This script is sourced, so root should be set. But let's be paranoid
+ [ -z "$root" ] && root=$(getarg root=)
+-[ -z "$netroot" ] && netroot=$(getarg netroot=)
++
++if [ -z "$netroot" ]; then
++ for netroot in $(getargs netroot=); do
++ [ "${netroot%%:*}" = "nbd" ] && break
++ done
++ [ "${netroot%%:*}" = "nbd" ] || unset netroot
++fi
+
+ # Root takes precedence over netroot
+ if [ "${root%%:*}" = "nbd" ] ; then
+-
+- # Don't continue if root is ok
+- [ -n "$rootok" ] && return
+-
+ if [ -n "$netroot" ] ; then
+ warn "root takes precedence over netroot. Ignoring netroot"
+
+diff --git a/modules.d/95nfs/parse-nfsroot.sh b/modules.d/95nfs/parse-nfsroot.sh
+index 283420a..9fc2a8c 100755
+--- a/modules.d/95nfs/parse-nfsroot.sh
++++ b/modules.d/95nfs/parse-nfsroot.sh
+@@ -27,18 +27,19 @@
+
+ type getarg >/dev/null 2>&1 || . /lib/dracut-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=)
+ [ -z "$nfsroot" ] && nfsroot=$(getarg nfsroot=)
+
++[ -n "$netroot" ] && oldnetroot="$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
++ for n in $(getargs netroot=); do
++ [ "$n" = "$netroot" ] && break
++ done
++ if [ "$n" = "$netroot" ]; then
+ warn "Ignoring netroot argument for NFS"
+ netroot=$root
+ fi
+@@ -67,7 +68,14 @@ esac
+ # Continue if nfs
+ case "${netroot%%:*}" in
+ nfs|nfs4|/dev/nfs);;
+- *) unset netroot; return;;
++ *)
++ if [ -n "$oldnetroot" ]; then
++ netroot="$oldnetroot"
++ else
++ unset netroot
++ fi
++ return
++ ;;
+ esac
+
+ # Check required arguments
diff --git a/dracut.spec b/dracut.spec
index 5ece848..5e6f0d4 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -10,7 +10,7 @@
Name: dracut
Version: 032
-Release: 1%{?dist}
+Release: 23.git20130904%{?dist}
Summary: Initramfs generator using udev
%if 0%{?fedora} || 0%{?rhel}
@@ -29,6 +29,28 @@ URL: https://dracut.wiki.kernel.org/
# Source can be generated by
# http://git.kernel.org/?p=boot/dracut/dracut.git;a=snapshot;h=%{version};sf=tgz
Source0: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut-%{version}.tar.bz2
+Patch1: 0001-network-do-not-depend-on-ifcfg.patch
+Patch2: 0002-dracut-functions.sh-add-expand_persistent_dev.patch
+Patch3: 0003-url-lib.sh-handle-0-size-files-with-curl.patch
+Patch4: 0004-add-dracut.css-for-dracut.html.patch
+Patch5: 0005-dracut.asc-document-debugging-dracut-on-shutdown.patch
+Patch6: 0006-freenode-IRC-dracut-verification.patch
+Patch7: 0007-removed-freenode.txt.patch
+Patch8: 0008-dracut-functions.sh-use-builtin-bash-functions-rathe.patch
+Patch9: 0009-dracut-functions.sh-inst_rules-do-not-install-from-e.patch
+Patch10: 0010-use-var-val-rather-than-var-val.patch
+Patch11: 0011-dracut-functions.sh-get_persistent_dev-do-not-check-.patch
+Patch12: 0012-network-move-ibft-parsing-before-all-other-network-c.patch
+Patch13: 0013-i18n-check-for-setfont-and-loadkeys-binaries.patch
+Patch14: 0014-dmraid-parse-dm.sh-if-rd.md-0-use-dmraid-for-imsm-an.patch
+Patch15: 0015-dmraid-mdraid-improve-hostonly-recognition.patch
+Patch16: 0016-dracut-functions.sh-get_devpath_block-make-local-var.patch
+Patch17: 0017-resume-debian-s-resume-is-in-usr-lib-uswsusp.patch
+Patch18: 0018-dracut-logger.sh-check-is-journald.socket-is-active.patch
+Patch19: 0019-dracut-functions.sh-for_each_module_dir-skip-empty-m.patch
+Patch20: 0020-iscsi-parse-iscsi-parameter-even-if-rootok-1.patch
+Patch21: 0021-net-lib-ibft_to_cmdline-fixes.patch
+Patch22: 0022-Rewrite-rootok-and-netroot-logic.patch
BuildRequires: bash git
@@ -446,6 +468,15 @@ rm -rf -- $RPM_BUILD_ROOT
%endif
%changelog
+* Wed Sep 04 2013 Harald Hoyer <harald@redhat.com> 032-23.git20130904
+- fixed curl error with zero size kickstart file
+Resolves: rhbz#989133
+- fixed systemd-cat failure, when systemd is installed
+ but not actually running
+Resolves: rhbz#1002021
+- do not fail on empty dracut module directories
+Resolves: rhbz#1003153
+
* Tue Aug 20 2013 Harald Hoyer <harald@redhat.com> 032-1
- fix for kdump in FIPS mode
Resolves: rhbz#920931