dracut-019-92.git20120625

- support vlan tagged binding
- speedup initramfs emergency service
- speedup image creation
- fix installkernel() return codes
Resolves: rhbz#833256
- add qemu and qemu-net modules to add qemu drivers even in host-only
- speedup btrfs and xfs fsck (nop)
- no more mknod in the initramfs (fixes plymouth on s390)
This commit is contained in:
Harald Hoyer 2012-06-25 14:08:03 +02:00
parent 5414ff20d6
commit 53e9906e08
31 changed files with 1430 additions and 1 deletions

View File

@ -0,0 +1,71 @@
From 472edf825e478826bc7735961961576fe7c94c5f Mon Sep 17 00:00:00 2001
From: Cong Wang <xiyou.wangcong@gmail.com>
Date: Thu, 21 Jun 2012 11:44:35 +0800
Subject: [PATCH] network: support vlan tagged bonding
This patch adds support of vlan tagged bonding, for example,
bond0.2. In case of regression, I also tested bond0 and eth0.2,
all work fine.
Cc: Harald Hoyer <harald@redhat.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
---
modules.d/40network/ifup.sh | 8 ++++++--
modules.d/40network/net-genrules.sh | 6 +++---
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index 31eb966..316a21a 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -188,7 +188,7 @@ if [ -e /tmp/bridge.info ]; then
brctl setfd $bridgename 0
for ethname in $ethnames ; do
if [ "$ethname" = "$bondname" ] ; then
- DO_BOND_SETUP=yes ifup $bondname
+ DO_BOND_SETUP=yes ifup $bondname -m
else
ip link set $ethname up
fi
@@ -211,7 +211,11 @@ get_vid() {
if [ "$netif" = "$vlanname" ] && [ ! -e /tmp/net.$vlanname.up ]; then
modprobe 8021q
- ip link set "$phydevice" up
+ if [ "$phydevice" = "$bondname" ] ; then
+ DO_BOND_SETUP=yes ifup $phydevice -m
+ else
+ ip link set "$phydevice" up
+ fi
wait_for_if_up "$phydevice"
ip link add dev "$vlanname" link "$phydevice" type vlan id "$(get_vid $vlanname; echo $?)"
fi
diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
index 99d0fe5..867abcf 100755
--- a/modules.d/40network/net-genrules.sh
+++ b/modules.d/40network/net-genrules.sh
@@ -21,19 +21,19 @@ fix_bootif() {
# bridge: attempt only the defined interface
if [ -e /tmp/bridge.info ]; then
. /tmp/bridge.info
- IFACES=${ethnames%% *}
+ IFACES+=" ${ethnames%% *}"
fi
# bond: attempt only the defined interface (override bridge defines)
if [ -e /tmp/bond.info ]; then
. /tmp/bond.info
# It is enough to fire up only one
- IFACES=${bondslaves%% *}
+ IFACES+=" ${bondslaves%% *}"
fi
if [ -e /tmp/vlan.info ]; then
. /tmp/vlan.info
- IFACES=$phydevice
+ IFACES+=" $phydevice"
fi
ifup='/sbin/ifup $env{INTERFACE}'

View File

@ -0,0 +1,22 @@
From e3295047b101a9a92c8548909cd18b2675bc9977 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 21 Jun 2012 13:51:49 +0200
Subject: [PATCH] systemd/emergency.service: remove Type=idle
Type=idle might cause a 3 second delay.
---
modules.d/98systemd/emergency.service | 1 -
1 file changed, 1 deletion(-)
diff --git a/modules.d/98systemd/emergency.service b/modules.d/98systemd/emergency.service
index 431e2b0..b79af22 100644
--- a/modules.d/98systemd/emergency.service
+++ b/modules.d/98systemd/emergency.service
@@ -18,7 +18,6 @@ ExecStartPre=-/bin/plymouth quit
ExecStartPre=-/bin/echo -e '\n\nEntering emergency mode. Exit the shell to continue.\nType "journalctl" to view system logs.\n'
ExecStart=-/bin/sh -i -l
ExecStopPost=-/bin/rm -f /.console_lock
-Type=idle
StandardInput=tty-force
StandardOutput=inherit
StandardError=inherit

View File

@ -0,0 +1,74 @@
From d17e0fcd431e823c3f93bbcff8e853578d6bfdc9 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 21 Jun 2012 14:10:41 +0200
Subject: [PATCH] systemd: add ConditionPathExists=/etc/initrd-release to
services
---
modules.d/98systemd/dracut-cmdline.service | 1 +
modules.d/98systemd/dracut-initqueue.service | 1 +
modules.d/98systemd/dracut-pre-pivot.service | 1 +
modules.d/98systemd/dracut-pre-trigger.service | 1 +
modules.d/98systemd/dracut-pre-udev.service | 1 +
5 files changed, 5 insertions(+)
diff --git a/modules.d/98systemd/dracut-cmdline.service b/modules.d/98systemd/dracut-cmdline.service
index 938ccbe..c84f62b 100644
--- a/modules.d/98systemd/dracut-cmdline.service
+++ b/modules.d/98systemd/dracut-cmdline.service
@@ -23,6 +23,7 @@ StandardInput=null
StandardOutput=syslog
StandardError=syslog+console
KillMode=process
+ConditionPathExists=/etc/initrd-release
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly.
diff --git a/modules.d/98systemd/dracut-initqueue.service b/modules.d/98systemd/dracut-initqueue.service
index 31fe9e4..4fde539 100644
--- a/modules.d/98systemd/dracut-initqueue.service
+++ b/modules.d/98systemd/dracut-initqueue.service
@@ -22,6 +22,7 @@ StandardInput=null
StandardOutput=syslog
StandardError=syslog+console
KillMode=process
+ConditionPathExists=/etc/initrd-release
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly.
diff --git a/modules.d/98systemd/dracut-pre-pivot.service b/modules.d/98systemd/dracut-pre-pivot.service
index e61750b..38d252d 100644
--- a/modules.d/98systemd/dracut-pre-pivot.service
+++ b/modules.d/98systemd/dracut-pre-pivot.service
@@ -21,6 +21,7 @@ StandardInput=null
StandardOutput=syslog
StandardError=syslog+console
KillMode=process
+ConditionPathExists=/etc/initrd-release
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly.
diff --git a/modules.d/98systemd/dracut-pre-trigger.service b/modules.d/98systemd/dracut-pre-trigger.service
index b06d17f..97c505d 100644
--- a/modules.d/98systemd/dracut-pre-trigger.service
+++ b/modules.d/98systemd/dracut-pre-trigger.service
@@ -23,6 +23,7 @@ StandardInput=null
StandardOutput=syslog
StandardError=syslog+console
KillMode=process
+ConditionPathExists=/etc/initrd-release
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly.
diff --git a/modules.d/98systemd/dracut-pre-udev.service b/modules.d/98systemd/dracut-pre-udev.service
index d867b38..9b83e3e 100644
--- a/modules.d/98systemd/dracut-pre-udev.service
+++ b/modules.d/98systemd/dracut-pre-udev.service
@@ -23,6 +23,7 @@ StandardInput=null
StandardOutput=syslog
StandardError=syslog+console
KillMode=process
+ConditionPathExists=/etc/initrd-release
# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly.

View File

@ -0,0 +1,23 @@
From bc616b4d5660d8d79465202bdc3a1b43b4ea3ba1 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 08:57:20 +0200
Subject: [PATCH] dracut-functions.sh: replace strstr()
the new strstr() is faster, when compared
---
dracut-functions.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index d4a766b..ace5a0b 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -21,7 +21,7 @@
#
# Generic substring function. If $2 is in $1, return 0.
-strstr() { [ "${1#*$2*}" != "$1" ]; }
+strstr() { [[ $1 = *$2* ]]; }
if ! [[ $dracutbasedir ]]; then
dracutbasedir=${BASH_SOURCE[0]%/*}

View File

@ -0,0 +1,23 @@
From 68966a1d7e6dc9d6be054effa62d61836704714b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 08:58:39 +0200
Subject: [PATCH] dracut-functions.sh: mksubdirs(): check for dir existence
first
---
dracut-functions.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index ace5a0b..3b562e7 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -74,7 +74,7 @@ fi
# Create all subdirectories for given path without creating the last element.
# $1 = path
-mksubdirs() { mkdir -m 0755 -p ${1%/*}; }
+mksubdirs() { [[ -e ${1%/*} ]] || mkdir -m 0755 -p ${1%/*}; }
# Version comparision function. Assumes Linux style version scheme.
# $1 = version a

View File

@ -0,0 +1,26 @@
From f550ba07400662633295c9681a80787fc44e61fa Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 08:59:22 +0200
Subject: [PATCH] dracut-functions.sh: cp with --reflink=auto and
--sparse=auto
cp will use COW data copy most of the time. So, it's even better than
hardlink, because we don't have to care about hardlinks, when modifying
files in post.
---
dracut-functions.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 3b562e7..b9ce688 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -435,7 +435,7 @@ inst_simple() {
inst "${_src%/*}/.${_src##*/}.hmac" "${target%/*}/.${target##*/}.hmac"
fi
ddebug "Installing $_src"
- cp --sparse=always -pfL "$_src" "${initdir}/$target"
+ cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$target"
}
# find symlinks linked to given library file

View File

@ -0,0 +1,79 @@
From a6b48b4c239d8ebacf545c27aa801ba0f8762a2b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 14:50:06 +0200
Subject: [PATCH] Add qemu kernel modules, if we detect a qemu instance
Regardless of the host-only setting, add all know kernel driver for qemu
instances to support changing the virtual hardware.
---
dracut.spec | 2 ++
modules.d/90qemu-net/module-setup.sh | 16 ++++++++++++++++
modules.d/90qemu/module-setup.sh | 16 ++++++++++++++++
3 files changed, 34 insertions(+)
create mode 100755 modules.d/90qemu-net/module-setup.sh
create mode 100755 modules.d/90qemu/module-setup.sh
diff --git a/dracut.spec b/dracut.spec
index 982a66d..b19d15b 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -271,6 +271,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/90lvm
%{dracutlibdir}/modules.d/90mdraid
%{dracutlibdir}/modules.d/90multipath
+%{dracutlibdir}/modules.d/90qemu
%{dracutlibdir}/modules.d/91crypt-gpg
%{dracutlibdir}/modules.d/95debug
%{dracutlibdir}/modules.d/95resume
@@ -313,6 +314,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/95fcoe
%{dracutlibdir}/modules.d/95iscsi
%{dracutlibdir}/modules.d/90livenet
+%{dracutlibdir}/modules.d/90qemu-net
%{dracutlibdir}/modules.d/95nbd
%{dracutlibdir}/modules.d/95nfs
%{dracutlibdir}/modules.d/95ssh-client
diff --git a/modules.d/90qemu-net/module-setup.sh b/modules.d/90qemu-net/module-setup.sh
new file mode 100755
index 0000000..3d61792
--- /dev/null
+++ b/modules.d/90qemu-net/module-setup.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+check() {
+ vm=$(systemd-detect-virt --vm)
+ (($? != 0)) && return 255
+ [[ $vm = "qemu" ]] && return 0
+ [[ $vm = "kvm" ]] && return 0
+ return 255
+}
+
+installkernel() {
+ # qemu specific modules
+ hostonly='' instmods virtio_net e1000 8139cp pcnet32 e100 ne2k_pci
+}
diff --git a/modules.d/90qemu/module-setup.sh b/modules.d/90qemu/module-setup.sh
new file mode 100755
index 0000000..094f5a3
--- /dev/null
+++ b/modules.d/90qemu/module-setup.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+check() {
+ vm=$(systemd-detect-virt --vm)
+ (($? != 0)) && return 255
+ [[ $vm = "qemu" ]] && return 0
+ [[ $vm = "kvm" ]] && return 0
+ return 255
+}
+
+installkernel() {
+ # qemu specific modules
+ hostonly='' instmods virtio_blk virtio virtio_ring virtio_pci ata_piix ata_generic pata_acpi cdrom sr_mod ahci virtio_scsi
+}

View File

@ -0,0 +1,43 @@
From 7953a6ab718185096e5729482f91b319d4a67e90 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:09:07 +0200
Subject: [PATCH] dracut-functions.sh:inst_simple() do inst_symlink for
symlinks
---
dracut-functions.sh | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index b9ce688..273d2a5 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -424,18 +424,21 @@ inst_simple() {
[[ -f "$1" ]] || return 1
strstr "$1" "/" || return 1
- local _src=$1 target="${2:-$1}"
- if ! [[ -d ${initdir}/$target ]]; then
- [[ -e ${initdir}/$target ]] && return 0
- [[ -L ${initdir}/$target ]] && return 0
- [[ -d "${initdir}/${target%/*}" ]] || inst_dir "${target%/*}"
+ local _src=$1 _target="${2:-$1}"
+
+ [[ -L $_src ]] && return inst_symlink $_src $_target
+
+ if ! [[ -d ${initdir}/$_target ]]; then
+ [[ -e ${initdir}/$_target ]] && return 0
+ [[ -L ${initdir}/$_target ]] && return 0
+ [[ -d "${initdir}/${_target%/*}" ]] || inst_dir "${_target%/*}"
fi
# install checksum files also
if [[ -e "${_src%/*}/.${_src##*/}.hmac" ]]; then
- inst "${_src%/*}/.${_src##*/}.hmac" "${target%/*}/.${target##*/}.hmac"
+ inst "${_src%/*}/.${_src##*/}.hmac" "${_target%/*}/.${_target##*/}.hmac"
fi
ddebug "Installing $_src"
- cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$target"
+ cp --reflink=auto --sparse=auto -pfL "$_src" "${initdir}/$_target"
}
# find symlinks linked to given library file

View File

@ -0,0 +1,44 @@
From 04569ec8da0a553a7e4dfd37ce1d62508e3441eb Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:09:45 +0200
Subject: [PATCH] dracut-functions.sh:inst_decompress() simplify function
---
dracut-functions.sh | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 273d2a5..9861bb7 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -773,7 +773,7 @@ inst_libdir_file() {
# Function install targets in the same paths inside overlay but decompressed
# and without extensions (.gz, .bz2).
inst_decompress() {
- local _src _dst _realsrc _realdst _cmd
+ local _src _cmd
for _src in $@
do
@@ -782,20 +782,7 @@ inst_decompress() {
*.bz2) _cmd='bzip2 -d' ;;
*) return 1 ;;
esac
-
- if [[ -L ${_src} ]]
- then
- _realsrc="$(readlink -f ${_src})" # symlink target with extension
- _dst="${_src%.*}" # symlink without extension
- _realdst="${_realsrc%.*}" # symlink target without extension
- mksubdirs "${initdir}/${_src}"
- # Create symlink without extension to target without extension.
- ln -sfn "${_realdst}" "${initdir}/${_dst}"
- fi
-
- # If the source is symlink we operate on its target.
- [[ ${_realsrc} ]] && _src=${_realsrc}
- inst ${_src}
+ inst_simple ${_src}
# Decompress with chosen tool. We assume that tool changes name e.g.
# from 'name.gz' to 'name'.
${_cmd} "${initdir}${_src}"

View File

@ -0,0 +1,38 @@
From 48e4a9a11c3d1ccd138e8a6dbea68010f47a1359 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:10:11 +0200
Subject: [PATCH] dracut-functions.sh:find_kernel_modules_by_path() use IFS=:
For modules.dep use simpler IFS=: to read the file.
---
dracut-functions.sh | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 9861bb7..cecd59a 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -1115,17 +1115,22 @@ for_each_kmod_dep() {
find_kernel_modules_by_path () (
+ local _OLDIFS
if ! [[ $hostonly ]]; then
+ _OLDIFS=$IFS
+ IFS=:
while read a rest; do
if [[ "${a##kernel}" != "$a" ]]; then
[[ "${a##kernel/$1}" != "$a" ]] || continue
fi
- echo $srcmods/${a%:}
+ echo $srcmods/$a
done < $srcmods/modules.dep
+ IFS=$_OLDIFS
else
( cd /sys/module; echo *; ) \
| xargs modinfo -F filename -k $kernel 2>/dev/null
fi
+ return 0
)
find_kernel_modules () {

View File

@ -0,0 +1,39 @@
From 8e41fb1dfd47f99d374bf7190344400e6bb1d018 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:13:47 +0200
Subject: [PATCH] dracut.sh: speedup "strip"
---
dracut.sh | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/dracut.sh b/dracut.sh
index 5600ec0..cc3669a 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -844,7 +844,7 @@ fi
# strip binaries
if [[ $do_strip = yes ]] ; then
- for p in strip grep find; do
+ for p in strip xargs find; do
if ! type -P $p >/dev/null; then
derror "Could not find '$p'. You should run $0 with '--nostrip'."
do_strip=no
@@ -853,12 +853,10 @@ if [[ $do_strip = yes ]] ; then
fi
if [[ $do_strip = yes ]] ; then
- for f in $(find "$initdir" -type f \
- \( -perm -0100 -or -perm -0010 -or -perm -0001 \
- -or -path '*/lib/modules/*.ko' \) ); do
- dinfo "Stripping $f"
- strip -g "$f" 2>/dev/null|| :
- done
+ find "$initdir" -type f \
+ \( -perm -0100 -or -perm -0010 -or -perm -0001 \
+ -or -path '*/lib/modules/*.ko' \) -print0 \
+ | xargs -0 strip -g 2>/dev/null
fi
type hardlink &>/dev/null && {

View File

@ -0,0 +1,23 @@
From b5f5a081d1b6c4c1890a26e637b10234164ab388 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:14:27 +0200
Subject: [PATCH] profile.py: do not count negative timestamp differences
---
profile.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/profile.py b/profile.py
index e1d0cab..7f98a13 100644
--- a/profile.py
+++ b/profile.py
@@ -36,7 +36,8 @@ def gen_times(t):
fx=float(x[0])
if oldx:
#print fx - float(oldx[0]), x[0], x[1], oldx[0], oldx[1]
- yield (fx - float(oldx[0]), oldx[1])
+ if ((fx - float(oldx[0])) > 0):
+ yield (fx - float(oldx[0]), oldx[1])
oldx = x

View File

@ -0,0 +1,84 @@
From 8f01a6a775fe9599fa8171d9cca17fb1b3c990af Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:16:55 +0200
Subject: [PATCH] fs-lib/fs-lib.sh: removed test mounting of btrfs and xfs
mount/umount check only costs time and we fail later anyway.
mount can take very long on large filesystems. Better fail on the real
mount.
---
modules.d/99fs-lib/fs-lib.sh | 58 +++---------------------------------------
1 file changed, 4 insertions(+), 54 deletions(-)
diff --git a/modules.d/99fs-lib/fs-lib.sh b/modules.d/99fs-lib/fs-lib.sh
index 75bee92..d1b7a9d 100755
--- a/modules.d/99fs-lib/fs-lib.sh
+++ b/modules.d/99fs-lib/fs-lib.sh
@@ -80,63 +80,13 @@ fsck_able() {
# note: all drivers inherit: _drv _fop _dev
fsck_drv_xfs() {
- local _ret
-
- # fs must be cleanly mounted (and umounted) first, before attempting any
- # xfs tools - if this works, nothing else should be needed
- # note, that user is always dropped into the shell, if the filesystem is
- # not mountable or if -f flag is found among _fop
- mkdir -p /tmp/.xfs
-
- info "trying to mount $_dev"
- if mount -t xfs ${_fsopts+-o $_fsopts} "$_dev" "/tmp/.xfs" >/dev/null 2>&1; then
- _ret=0
- info "xfs: $_dev is clean"
- umount "$_dev" >/dev/null 2>&1
- else
- _ret=4
- warn "*** $_dev is unmountable"
- fi
- if [ $_ret -gt 0 ] || strstr "$_fop" "-f"; then
- warn "*** Dropping you to a shell. You have"
- warn "*** xfs_repair and xfs_check (xfs_db) available."
- warn "*** Note that if xfs didn't mount properly, it's"
- warn "*** probably pretty serious condition."
- emergency_shell -n "(Repair filesystem)"
- fi
-
- rm -r /tmp/.xfs
- return $_ret
+ # xfs fsck is not necessary... Either it mounts or not
+ return 0
}
fsck_drv_btrfs() {
- local _ret
-
- # fs must be cleanly mounted (and umounted) first, before attempting any
- # btrfs tools - if this works, nothing else should be needed
- # note, that user is always dropped into the shell, if the filesystem is
- # not mountable or if -f flag is found among _fop
- mkdir -p /tmp/.btrfs
-
- info "trying to mount $_dev"
- if mount -t btrfs ${_fsopts+-o $_fsopts} "$_dev" "/tmp/.btrfs" >/dev/null 2>&1; then
- _ret=0
- info "btrfs: $_dev is clean"
- umount "$_dev" >/dev/null 2>&1
- else
- _ret=4
- warn "*** $_dev is unmountable"
- fi
- if [ $_ret -gt 0 ] || strstr "$_fop" "-f"; then
- warn "*** Dropping you to a shell. You have"
- warn "*** btrfsck available."
- warn "*** Note that if btrfs didn't mount properly, it's"
- warn "*** probably pretty serious condition."
- emergency_shell -n "(Repair filesystem)"
- fi
-
- rm -r /tmp/.btrfs
- return $_ret
+ # btrfs fsck is not necessary... Either it mounts or not
+ return 0
}

View File

@ -0,0 +1,43 @@
From 9d6458faa41039b6e63cf08bc60fc4660563597d Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:18:45 +0200
Subject: [PATCH] base/module-setup.sh: use --force for ln
---
modules.d/99base/module-setup.sh | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
index 96c18ab..75afa72 100755
--- a/modules.d/99base/module-setup.sh
+++ b/modules.d/99base/module-setup.sh
@@ -24,6 +24,7 @@ install() {
#add common users in /etc/passwd, it will be used by nfs/ssh currently
egrep '^root:' "$initdir/etc/passwd" 2>/dev/null || echo 'root:x:0:0::/root:/bin/sh' >> "$initdir/etc/passwd"
egrep '^nobody:' /etc/passwd >> "$initdir/etc/passwd"
+
# install our scripts and hooks
inst "$moddir/init.sh" "/init"
inst "$moddir/initqueue.sh" "/sbin/initqueue"
@@ -43,12 +44,12 @@ install() {
mkdir -p "${initdir}/var"
[ -x /lib/systemd/systemd-timestamp ] && inst /lib/systemd/systemd-timestamp
if [[ $realinitpath ]]; then
- for i in $realinitpath; do
+ for i in $realinitpath; do
echo "rd.distroinit=$i"
done > "${initdir}/etc/cmdline.d/distroinit.conf"
fi
- ln -s /proc/self/mounts "$initdir/etc/mtab"
+ ln -fs /proc/self/mounts "$initdir/etc/mtab"
if [ -e /etc/os-release ]; then
. /etc/os-release
@@ -74,5 +75,5 @@ install() {
echo ANSI_COLOR=\"$ANSI_COLOR\"
} > $initdir/etc/initrd-release
echo dracut-$DRACUT_VERSION > $initdir/lib/dracut/dracut-$DRACUT_VERSION
- ln -s initrd-release $initdir/etc/os-release
+ ln -sf initrd-release $initdir/etc/os-release
}

View File

@ -0,0 +1,25 @@
From af83b70cf27150d981844f508b55d50dd0cbc6c1 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:19:32 +0200
Subject: [PATCH] systemd/module-setup.sh: only create empty machine-id if non
existing
---
modules.d/98systemd/module-setup.sh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh
index a6e2365..206f341 100755
--- a/modules.d/98systemd/module-setup.sh
+++ b/modules.d/98systemd/module-setup.sh
@@ -101,7 +101,9 @@ install() {
/etc/vconsole.conf \
/etc/locale.conf
else
- > "$initdir/etc/machine-id"
+ if ! [[ -e "$initdir/etc/machine-id" ]]; then
+ > "$initdir/etc/machine-id"
+ fi
fi
ln -fs $systemdutildir/systemd "$initdir/init"

View File

@ -0,0 +1,50 @@
From 5e7bff1fee8f98a8444be56ca8b206ee32962a62 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:20:06 +0200
Subject: [PATCH] systemd/module-setup.sh: ln with --force
---
modules.d/98systemd/module-setup.sh | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh
index 206f341..338f14d 100755
--- a/modules.d/98systemd/module-setup.sh
+++ b/modules.d/98systemd/module-setup.sh
@@ -116,30 +116,30 @@ install() {
inst "$moddir/initrd-switch-root.target" ${systemdsystemunitdir}/initrd-switch-root.target
inst "$moddir/initrd-switch-root.service" ${systemdsystemunitdir}/initrd-switch-root.service
- ln -s basic.target "${initdir}${systemdsystemunitdir}/default.target"
+ ln -fs basic.target "${initdir}${systemdsystemunitdir}/default.target"
mkdir -p "${initdir}${systemdsystemunitdir}/basic.target.wants"
inst "$moddir/dracut-cmdline.sh" /bin/dracut-cmdline
inst "$moddir/dracut-cmdline.service" ${systemdsystemunitdir}/dracut-cmdline.service
- ln -s ../dracut-cmdline.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-cmdline.service"
+ ln -fs ../dracut-cmdline.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-cmdline.service"
inst "$moddir/dracut-pre-udev.sh" /bin/dracut-pre-udev
inst "$moddir/dracut-pre-udev.service" ${systemdsystemunitdir}/dracut-pre-udev.service
- ln -s ../dracut-pre-udev.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-udev.service"
+ ln -fs ../dracut-pre-udev.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-udev.service"
inst "$moddir/dracut-pre-trigger.sh" /bin/dracut-pre-trigger
inst "$moddir/dracut-pre-trigger.service" ${systemdsystemunitdir}/dracut-pre-trigger.service
- ln -s ../dracut-pre-trigger.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-trigger.service"
+ ln -fs ../dracut-pre-trigger.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-pre-trigger.service"
inst "$moddir/dracut-initqueue.sh" /bin/dracut-initqueue
inst "$moddir/dracut-initqueue.service" ${systemdsystemunitdir}/dracut-initqueue.service
- ln -s ../dracut-initqueue.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-initqueue.service"
+ ln -fs ../dracut-initqueue.service "${initdir}${systemdsystemunitdir}/basic.target.wants/dracut-initqueue.service"
inst "$moddir/dracut-pre-pivot.sh" /bin/dracut-pre-pivot
inst "$moddir/dracut-pre-pivot.service" ${systemdsystemunitdir}/dracut-pre-pivot.service
mkdir -p "${initdir}${systemdsystemunitdir}/initrd-switch-root.target.wants"
- ln -s ../dracut-pre-pivot.service "${initdir}${systemdsystemunitdir}/initrd-switch-root.target.wants/dracut-pre-pivot.service"
+ ln -fs ../dracut-pre-pivot.service "${initdir}${systemdsystemunitdir}/initrd-switch-root.target.wants/dracut-pre-pivot.service"
}

View File

@ -0,0 +1,26 @@
From 0dd85327dfbb788a5b23820a7413c4e1e96deafe Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:21:11 +0200
Subject: [PATCH] i18n/module-setup.sh:install_all_kbd(): speedup install
---
modules.d/10i18n/module-setup.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
index d1854c2..7c8cd66 100755
--- a/modules.d/10i18n/module-setup.sh
+++ b/modules.d/10i18n/module-setup.sh
@@ -92,9 +92,9 @@ install() {
install_all_kbd() {
local rel f
- find $(eval echo ${kbddir}/{${KBDSUBDIRS}}) -type f -print | \
- while read f; do
- inst_simple $f
+ for _src in $(eval echo ${kbddir}/{${KBDSUBDIRS}}); do
+ inst_dir "$_src"
+ cp --reflink=auto --sparse=auto -prfL -t "${initdir}/${_src%/*}" "$_src"
done
# remove unnecessary files

View File

@ -0,0 +1,21 @@
From 07a8e55f418f9362f074eb4de59070e297f54fd6 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:23:56 +0200
Subject: [PATCH] bootchart/module-setup.sh: no need for mknod anymore
---
modules.d/00bootchart/module-setup.sh | 2 --
1 file changed, 2 deletions(-)
diff --git a/modules.d/00bootchart/module-setup.sh b/modules.d/00bootchart/module-setup.sh
index 17dd137..a2a2c00 100755
--- a/modules.d/00bootchart/module-setup.sh
+++ b/modules.d/00bootchart/module-setup.sh
@@ -25,7 +25,5 @@ install() {
inst /bin/grep
inst /bin/usleep
inst /usr/bin/[ /bin/[
-
- mknod -m 0666 "${initdir}/dev/null" c 1 3
}

View File

@ -0,0 +1,62 @@
From 070433429368aa721af68a250279483dea0b19fd Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:27:40 +0200
Subject: [PATCH] no more "mknod" in the initramfs!!
---
modules.d/50gensplash/gensplash-pretrigger.sh | 4 ----
modules.d/50plymouth/plymouth-pretrigger.sh | 6 ------
modules.d/99base/init.sh | 2 --
3 files changed, 12 deletions(-)
diff --git a/modules.d/50gensplash/gensplash-pretrigger.sh b/modules.d/50gensplash/gensplash-pretrigger.sh
index 074aa78..b697438 100755
--- a/modules.d/50gensplash/gensplash-pretrigger.sh
+++ b/modules.d/50gensplash/gensplash-pretrigger.sh
@@ -3,10 +3,6 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh
if getargbool 1 rd.splash -n rd_NO_SPLASH; then
- [ -c /dev/null ] || mknod /dev/null c 1 3
- [ -c /dev/console ] || mknod /dev/console c 5 1
- [ -c /dev/tty0 ] || mknod /dev/tty0 c 4 0
-
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 483cc70..5cc9112 100755
--- a/modules.d/50plymouth/plymouth-pretrigger.sh
+++ b/modules.d/50plymouth/plymouth-pretrigger.sh
@@ -4,18 +4,12 @@
if [ -x /bin/plymouthd ]; then
if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -n rd_NO_PLYMOUTH; then
- [ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3
# first trigger graphics subsystem
udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1
# first trigger graphics and tty subsystem
udevadm trigger --action=add --subsystem-match=graphics --subsystem-match=drm --subsystem-match=tty >/dev/null 2>&1
udevadm settle --timeout=30 2>&1 | vinfo
- [ -c /dev/zero ] || mknod -m 0666 /dev/zero c 1 5
- [ -c /dev/tty0 ] || mknod -m 0620 /dev/tty0 c 4 0
- [ -e /dev/systty ] || ln -s tty0 /dev/systty
- [ -c /dev/fb0 ] || mknod -m 0660 /dev/fb0 c 29 0
- [ -e /dev/fb ] || ln -s fb0 /dev/fb
info "Starting plymouth daemon"
mkdir -m 0755 /run/plymouth
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index 5c693e4..d395a99 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -22,8 +22,6 @@ RD_DEBUG=""
trap "emergency_shell Signal caught!" 0
-[ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3
-
# mount some important things
[ ! -d /proc/self ] && \
mount -t proc -o nosuid,noexec,nodev proc /proc >/dev/null 2>&1

View File

@ -0,0 +1,22 @@
From 8148fd4a73345449828198396cb9d149f8f3dc6b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:28:23 +0200
Subject: [PATCH] udev-rules/module-setup.sh: ln with --force
---
modules.d/95udev-rules/module-setup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh
index a48b0cb..f98de57 100755
--- a/modules.d/95udev-rules/module-setup.sh
+++ b/modules.d/95udev-rules/module-setup.sh
@@ -15,7 +15,7 @@ install() {
inst "$_i"
if ! [[ -f ${initdir}/lib/systemd/systemd-udevd ]]; then
- ln -s "$_i" ${initdir}/lib/systemd/systemd-udevd
+ ln -fs "$_i" ${initdir}/lib/systemd/systemd-udevd
fi
break
done

View File

@ -0,0 +1,25 @@
From cb8d852cdcfda3774a0c5aee15dd85511ab21fa1 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:29:04 +0200
Subject: [PATCH] terminfo/module-setup.sh: speedup install() of all terminfo
---
modules.d/95terminfo/module-setup.sh | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/modules.d/95terminfo/module-setup.sh b/modules.d/95terminfo/module-setup.sh
index 32a3fe9..e1914a5 100755
--- a/modules.d/95terminfo/module-setup.sh
+++ b/modules.d/95terminfo/module-setup.sh
@@ -10,9 +10,7 @@ install() {
done
if [ -d ${_terminfodir} ]; then
- for f in ${_terminfodir}/*/*; do
- inst_simple $f
- done
+ inst_dir "$_terminfodir"
+ cp --reflink=auto --sparse=auto -prfL -t "${initdir}/${_terminfodir%/*}" "$_terminfodir"
fi
}
-

View File

@ -0,0 +1,45 @@
From fe9bb86bb2d34cbcde7970a0b5a24fffa4e8404e Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:24:28 +0200
Subject: [PATCH] network/module-setup.sh: fixed installkernel() return code
---
modules.d/40network/module-setup.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
index a8efbc5..6077f53 100755
--- a/modules.d/40network/module-setup.sh
+++ b/modules.d/40network/module-setup.sh
@@ -4,7 +4,6 @@
check() {
local _program
- . $dracutfunctions
for _program in ip arping dhclient ; do
if ! type -P $_program >/dev/null; then
@@ -43,6 +42,7 @@ installkernel() {
&& ! $_fcont =~ iw_handler_get_spy ]] \
&& echo "$_fname"
done
+ return 0
}
function rotor() {
local _f1 _f2
@@ -52,13 +52,13 @@ installkernel() {
echo "$_f2" 1>&${_side2}
fi
done | nmf1 1>&${_merge}
+ return 0
}
# Use two parallel streams to filter alternating modules.
set +x
eval "( ( rotor ) ${_side2}>&1 | nmf1 ) ${_merge}>&1"
- _ret=$?
[[ $debug ]] && set -x
- return $_ret
+ return 0
}
{ find_kernel_modules_by_path drivers/net; if [ "$_arch" = "s390" -o "$_arch" = "s390x" ]; then find_kernel_modules_by_path drivers/s390/net; fi; } \

View File

@ -0,0 +1,61 @@
From 483e770b4302fc7e3384982657500221e0ec327d Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:30:58 +0200
Subject: [PATCH] iscsi/module-setup.sh: speedup installkernel()
---
modules.d/95iscsi/module-setup.sh | 40 ++++++++++++++++++++++++++++---------
1 file changed, 31 insertions(+), 9 deletions(-)
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
index fefc240..5f935d7 100755
--- a/modules.d/95iscsi/module-setup.sh
+++ b/modules.d/95iscsi/module-setup.sh
@@ -41,16 +41,38 @@ installkernel() {
instmods iscsi_tcp iscsi_ibft crc32c bnx2i iscsi_boot_sysfs qla4xxx cxgb3i cxgb4i be2iscsi
iscsi_module_filter() {
- local _iscsifuncs='iscsi_register_transport'
- local _f
- while read _f; do case "$_f" in
- *.ko) [[ $(< $_f) =~ $_iscsifuncs ]] && echo "$_f" ;;
- *.ko.gz) [[ $(gzip -dc <$_f) =~ $_iscsifuncs ]] && echo "$_f" ;;
- *.ko.xz) [[ $(xz -dc <$_f) =~ $_iscsifuncs ]] && echo "$_f" ;;
- esac
- done
- return 0;
+ local _funcs='iscsi_register_transport'
+ # subfunctions inherit following FDs
+ local _merge=8 _side2=9
+ function bmf1() {
+ local _f
+ while read _f; do
+ case "$_f" in
+ *.ko) [[ $(< $_f) =~ $_funcs ]] && echo "$_f" ;;
+ *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
+ *.ko.xz) [[ $(xz -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
+ esac
+ done
+ return 0
+ }
+
+ function rotor() {
+ local _f1 _f2
+ while read _f1; do
+ echo "$_f1"
+ if read _f2; then
+ echo "$_f2" 1>&${_side2}
+ fi
+ done | bmf1 1>&${_merge}
+ return 0
+ }
+ # Use two parallel streams to filter alternating modules.
+ set +x
+ eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
+ [[ $debug ]] && set -x
+ return 0
}
+
{ find_kernel_modules_by_path drivers/scsi; if [ "$_arch" = "s390" -o "$_arch" = "s390x" ]; then find_kernel_modules_by_path drivers/s390/scsi; fi;} \
| iscsi_module_filter | instmods
}

View File

@ -0,0 +1,24 @@
From efeea5257568523d45b0f873579c4d16f7631c9a Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:31:26 +0200
Subject: [PATCH] plymouth/module-setup.sh:installkernel() fix return code
---
modules.d/50plymouth/module-setup.sh | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh
index 69f1bc7..616d9b2 100755
--- a/modules.d/50plymouth/module-setup.sh
+++ b/modules.d/50plymouth/module-setup.sh
@@ -45,9 +45,8 @@ installkernel() {
# Use two parallel streams to filter alternating modules.
set +x
eval "( ( rotor ) ${_side2}>&1 | nmf1 ) ${_merge}>&1"
- _ret=$?
[[ $debug ]] && set -x
- return $_ret
+ return 0
}
for _modname in $(find_kernel_modules_by_path drivers/gpu/drm \

View File

@ -0,0 +1,38 @@
From 0663a883d77149b505cb08671d2ebd054eb5bc28 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:32:15 +0200
Subject: [PATCH] kernel-modules/module-setup.sh:installkernel() fix return
code
---
modules.d/90kernel-modules/module-setup.sh | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
index 1d39c85..08f745a 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -16,6 +16,7 @@ installkernel() {
*.ko.xz) [[ $(xz -dc <$_f) =~ $_blockfuncs ]] && echo "$_f" ;;
esac
done
+ return 0
}
function rotor() {
local _f1 _f2
@@ -25,12 +26,15 @@ installkernel() {
echo "$_f2" 1>&${_side2}
fi
done | bmf1 1>&${_merge}
+ return 0
}
# Use two parallel streams to filter alternating modules.
set +x
eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
[[ $debug ]] && set -x
+ return 0
}
+
hostonly='' instmods sr_mod sd_mod scsi_dh scsi_dh_rdac scsi_dh_emc ata_piix
hostonly='' instmods pcmcia firewire-ohci
hostonly='' instmods usb_storage sdhci sdhci-pci

View File

@ -0,0 +1,68 @@
From 7997d8764313d5dc10689e3b6bbdde3dcc373498 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:33:15 +0200
Subject: [PATCH] multipath/module-setup.sh:installkernel() fix return code
---
modules.d/90multipath/module-setup.sh | 43 ++++++++++++++++++++++++---------
1 file changed, 31 insertions(+), 12 deletions(-)
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index 0e8857c..8791560 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -32,23 +32,42 @@ depends() {
installkernel() {
local _ret
- set +x
+ local _arch=$(uname -m)
mp_mod_filter() {
- local _mpfuncs='scsi_register_device_handler|dm_dirty_log_type_register|dm_register_path_selector|dm_register_target'
- local _f
- while read _f; do case "$_f" in
- *.ko) [[ $(< $_f) =~ $_mpfuncs ]] && echo "$_f" ;;
- *.ko.gz) [[ $(gzip -dc <$_f) =~ $_mpfuncs ]] && echo "$_f" ;;
- *.ko.xz) [[ $(xz -dc <$_f) =~ $_mpfuncs ]] && echo "$_f" ;;
- esac
- done
+ local _funcs='scsi_register_device_handler|dm_dirty_log_type_register|dm_register_path_selector|dm_register_target'
+ # subfunctions inherit following FDs
+ local _merge=8 _side2=9
+ function bmf1() {
+ local _f
+ while read _f; do
+ case "$_f" in
+ *.ko) [[ $(< $_f) =~ $_funcs ]] && echo "$_f" ;;
+ *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
+ *.ko.xz) [[ $(xz -dc <$_f) =~ $_funcs ]] && echo "$_f" ;;
+ esac
+ done
+ return 0
+ }
+
+ function rotor() {
+ local _f1 _f2
+ while read _f1; do
+ echo "$_f1"
+ if read _f2; then
+ echo "$_f2" 1>&${_side2}
+ fi
+ done | bmf1 1>&${_merge}
+ return 0
+ }
+ # Use two parallel streams to filter alternating modules.
+ set +x
+ eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
+ [[ $debug ]] && set -x
+ return 0
}
( find_kernel_modules_by_path drivers/scsi; if [ "$_arch" = "s390" -o "$_arch" = "s390x" ]; then find_kernel_modules_by_path drivers/s390/scsi; fi;
find_kernel_modules_by_path drivers/md ) | mp_mod_filter | instmods
- _ret=$?
- [[ $debug ]] && set -x
- return $_ret
}
install() {

View File

@ -0,0 +1,127 @@
From 6a767ee403095cdeb67b7cb5f69e8586ad19650a Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:33:42 +0200
Subject: [PATCH] modules.d/*/module-setup.sh: no more sourcing of
dracutfunctions
---
modules.d/90btrfs/module-setup.sh | 3 ---
modules.d/90crypt/module-setup.sh | 2 --
modules.d/90dmraid/module-setup.sh | 3 ---
modules.d/90lvm/module-setup.sh | 3 ---
modules.d/90mdraid/module-setup.sh | 3 ---
modules.d/90multipath/module-setup.sh | 3 ---
modules.d/95iscsi/module-setup.sh | 4 ----
modules.d/95nbd/module-setup.sh | 1 -
8 files changed, 22 deletions(-)
diff --git a/modules.d/90btrfs/module-setup.sh b/modules.d/90btrfs/module-setup.sh
index 135abc6..7d8fae0 100755
--- a/modules.d/90btrfs/module-setup.sh
+++ b/modules.d/90btrfs/module-setup.sh
@@ -8,9 +8,6 @@ check() {
# no point in trying to support it in the initramfs.
type -P btrfs >/dev/null || return 1
- . $dracutfunctions
- [[ $debug ]] && set -x
-
[[ $hostonly ]] || [[ $mount_needs ]] && {
local _found
for fs in ${host_fs_types[@]}; do
diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh
index 5082434..16d6f89 100755
--- a/modules.d/90crypt/module-setup.sh
+++ b/modules.d/90crypt/module-setup.sh
@@ -7,8 +7,6 @@ check() {
# if cryptsetup is not installed, then we cannot support encrypted devices.
type -P cryptsetup >/dev/null || return 1
- . $dracutfunctions
-
check_crypt() {
local dev=$1 fs=$2
[[ $fs = "crypto_LUKS" ]] || return 1
diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh
index 5ce7051..dad54a4 100755
--- a/modules.d/90dmraid/module-setup.sh
+++ b/modules.d/90dmraid/module-setup.sh
@@ -8,9 +8,6 @@ check() {
# in trying to support it in the initramfs.
type -P dmraid >/dev/null || return 1
- . $dracutfunctions
- [[ $debug ]] && set -x
-
check_dmraid() {
local dev=$1 fs=$2 holder DEVPATH DM_NAME
[[ "$fs" = "${fs%%_raid_member}" ]] && return 1
diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh
index 2ce5c50..5182b79 100755
--- a/modules.d/90lvm/module-setup.sh
+++ b/modules.d/90lvm/module-setup.sh
@@ -7,9 +7,6 @@ check() {
# No point trying to support lvm if the binaries are missing
type -P lvm >/dev/null || return 1
- . $dracutfunctions
- [[ $debug ]] && set -x
-
check_lvm() {
local DM_VG_NAME DM_LV_NAME DM_UDEV_DISABLE_DISK_RULES_FLAG
eval $(udevadm info --query=property --name=$1|egrep '(DM_VG_NAME|DM_LV_NAME|DM_UDEV_DISABLE_DISK_RULES_FLAG)=')
diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh
index 350aff8..56f881e 100755
--- a/modules.d/90mdraid/module-setup.sh
+++ b/modules.d/90mdraid/module-setup.sh
@@ -7,9 +7,6 @@ check() {
# No mdadm? No mdraid support.
type -P mdadm >/dev/null || return 1
- . $dracutfunctions
- [[ $debug ]] && set -x
-
check_mdraid() {
local dev=$1 fs=$2 holder DEVPATH MD_UUID
[[ "$fs" = "${fs%%_raid_member}" ]] && return 1
diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh
index 8791560..bfa4bf8 100755
--- a/modules.d/90multipath/module-setup.sh
+++ b/modules.d/90multipath/module-setup.sh
@@ -7,9 +7,6 @@ check() {
# if there's no multipath binary, no go.
type -P multipath >/dev/null || return 1
- . $dracutfunctions
- [[ $debug ]] && set -x
-
is_mpath() {
local _dev
_dev=$(get_maj_min $1)
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
index 5f935d7..1787f92 100755
--- a/modules.d/95iscsi/module-setup.sh
+++ b/modules.d/95iscsi/module-setup.sh
@@ -10,10 +10,6 @@ check() {
# If hostonly was requested, fail the check if we are not actually
# booting from root.
- . $dracutfunctions
-
- [[ $debug ]] && set -x
-
is_iscsi() (
local _dev
_dev=$(get_maj_min $1)
diff --git a/modules.d/95nbd/module-setup.sh b/modules.d/95nbd/module-setup.sh
index c0f71cc..092aade 100755
--- a/modules.d/95nbd/module-setup.sh
+++ b/modules.d/95nbd/module-setup.sh
@@ -11,7 +11,6 @@ check() {
# mounted on, fail the hostonly check.
[[ $hostonly ]] || [[ $mount_needs ]] && {
is_nbd() { [[ -b /dev/block/$1 && $1 == 43:* ]] ;}
- . $dracutfunctions
_rootdev=$(find_root_block_device)
[[ -b /dev/block/$_rootdev ]] || return 1

View File

@ -0,0 +1,80 @@
From 6f006ae0c1efbbb90d00cbb340001e74d8d12db1 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:34:24 +0200
Subject: [PATCH] dracut-logger.sh: use (( )) for numeric comparisons
---
dracut-logger.sh | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/dracut-logger.sh b/dracut-logger.sh
index f1b3a7e..a78e18e 100755
--- a/dracut-logger.sh
+++ b/dracut-logger.sh
@@ -116,7 +116,7 @@ dlog_init() {
if [ -z "$fileloglvl" ]; then
[ -w "$logfile" ] && fileloglvl=4 || fileloglvl=0
- elif [ $fileloglvl -gt 0 ]; then
+ elif (( $fileloglvl >= 0 )); then
__oldumask=$(umask)
umask 0377
! [ -e "$logfile" ] && >"$logfile"
@@ -138,7 +138,7 @@ dlog_init() {
fi
fi
- if [ $sysloglvl -gt 0 ]; then
+ if (( $sysloglvl >= 0 )); then
if ! [ -S /dev/log -a -w /dev/log ] || ! command -v logger >/dev/null
then
# We cannot log to syslog, so turn this facility off.
@@ -148,7 +148,7 @@ dlog_init() {
fi
fi
- if [ $sysloglvl -gt 0 -o $kmsgloglvl -gt 0 ]; then
+ if (($sysloglvl >= 0)) || (($kmsgloglvl >= 0 )); then
if [ -n "$dracutbasedir" ]; then
readonly syslogfacility=user
else
@@ -159,7 +159,7 @@ dlog_init() {
local lvl; local maxloglvl_l=0
for lvl in $stdloglvl $sysloglvl $fileloglvl $kmsgloglvl; do
- [ $lvl -gt $maxloglvl_l ] && maxloglvl_l=$lvl
+ (( $lvl > $maxloglvl_l )) && maxloglvl_l=$lvl
done
readonly maxloglvl=$maxloglvl_l
export maxloglvl
@@ -275,14 +275,14 @@ _do_dlog() {
local lvlc=$(_lvl2char "$lvl") || return 0
local msg="$lvlc: $*"
- [ $lvl -le $stdloglvl ] && echo "$msg" >&2
- if [ $lvl -le $sysloglvl ]; then
+ (( $lvl <= $stdloglvl )) && echo "$msg" >&2
+ if (( $lvl <= $sysloglvl )); then
logger -t "dracut[$$]" -p $(_lvl2syspri $lvl) "$msg"
fi
- if [ $lvl -le $fileloglvl -a -w "$logfile" -a -f "$logfile" ]; then
+ if (( $lvl <= $fileloglvl )) && [[ -w "$logfile" ]] && [[ -f "$logfile" ]]; then
echo "$msg" >>"$logfile"
fi
- [ $lvl -le $kmsgloglvl ] && \
+ (( $lvl <= $kmsgloglvl )) && \
echo "<$(_dlvl2syslvl $lvl)>dracut[$$] $msg" >/dev/kmsg
}
@@ -304,9 +304,9 @@ _do_dlog() {
# echo "This is a warning" | dwarn
dlog() {
[ -z "$maxloglvl" ] && return 0
- [ $1 -le $maxloglvl ] || return 0
+ (( $1 <= $maxloglvl )) || return 0
- if [ $# -gt 1 ]; then
+ if (( $# > 1 )); then
_do_dlog "$@"
else
while read line; do

View File

@ -0,0 +1,54 @@
From a790a8b395b3baddddd099769f3f29c72b29799b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:35:09 +0200
Subject: [PATCH] dracut-logger.sh: empty functions for log funcs, which are
below level
---
dracut-logger.sh | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/dracut-logger.sh b/dracut-logger.sh
index a78e18e..dbe26ee 100755
--- a/dracut-logger.sh
+++ b/dracut-logger.sh
@@ -164,6 +164,39 @@ dlog_init() {
readonly maxloglvl=$maxloglvl_l
export maxloglvl
+
+ if (($stdloglvl < 6)) && (($kmsgloglvl < 6)) && (($fileloglvl < 6)); then
+ unset dtrace
+ dtrace() { :; };
+ fi
+
+ if (($stdloglvl < 5)) && (($kmsgloglvl < 5)) && (($fileloglvl < 5)); then
+ unset ddebug
+ ddebug() { :; };
+ fi
+
+ if (($stdloglvl < 4)) && (($kmsgloglvl < 4)) && (($fileloglvl < 4)); then
+ unset dinfo
+ dinfo() { :; };
+ fi
+
+ if (($stdloglvl < 3)) && (($kmsgloglvl < 3)) && (($fileloglvl < 3)); then
+ unset dwarn
+ dwarn() { :; };
+ unset dwarning
+ dwarning() { :; };
+ fi
+
+ if (($stdloglvl < 2)) && (($kmsgloglvl < 2)) && (($fileloglvl < 2)); then
+ unset derror
+ derror() { :; };
+ fi
+
+ if (($stdloglvl < 1)) && (($kmsgloglvl < 1)) && (($fileloglvl < 1)); then
+ unset dfatal
+ dfatal() { :; };
+ fi
+
[ -n "$errmsg" ] && derror "$errmsg"
return $ret

View File

@ -0,0 +1,27 @@
From fabe8a8c29ff657e29f3c33bf6c564cfd0ee613f Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 22 Jun 2012 15:49:25 +0200
Subject: [PATCH] dracut.sh: do not copy devices nodes, mknod them
---
dracut.sh | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/dracut.sh b/dracut.sh
index cc3669a..0fb0a18 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -714,10 +714,9 @@ if [[ $kernel_only != yes ]]; then
mkdir -m 0755 -p ${initdir}/lib/dracut/hooks/$_d
done
if [[ "$UID" = "0" ]]; then
- for i in /dev/kmsg /dev/null /dev/console; do
- [ -e $i ] || continue
- cp -a $i $initdir/dev
- done
+ [ -c ${initdir}/dev/null ] || mknod ${initdir}/dev/null c 1 3
+ [ -c ${initdir}/dev/kmsg ] || mknod ${initdir}/dev/kmsg c 1 11
+ [ -c ${initdir}/dev/console ] || mknod ${initdir}/dev/console c 5 1
fi
fi

View File

@ -10,7 +10,7 @@
Name: dracut
Version: 019
Release: 62.git20120621%{?dist}
Release: 92.git20120625%{?dist}
Summary: Initramfs generator using udev
%if 0%{?fedora} || 0%{?rhel}
@ -85,6 +85,36 @@ Patch58: 0058-systemd-remove-unneeded-systemd-services.patch
Patch59: 0059-fixed-i18n-for-systemd-and-include-more-config-files.patch
Patch60: 0060-systemd-remove-old-udev-services.patch
Patch61: 0061-systemd-dracut-pre-pivot.sh-copy-service-files-to-ru.patch
Patch62: 0062-network-support-vlan-tagged-bonding.patch
Patch63: 0063-systemd-emergency.service-remove-Type-idle.patch
Patch64: 0064-systemd-add-ConditionPathExists-etc-initrd-release-t.patch
Patch65: 0065-dracut-functions.sh-replace-strstr.patch
Patch66: 0066-dracut-functions.sh-mksubdirs-check-for-dir-existenc.patch
Patch67: 0067-dracut-functions.sh-cp-with-reflink-auto-and-sparse-.patch
Patch68: 0068-Add-qemu-kernel-modules-if-we-detect-a-qemu-instance.patch
Patch69: 0069-dracut-functions.sh-inst_simple-do-inst_symlink-for-.patch
Patch70: 0070-dracut-functions.sh-inst_decompress-simplify-functio.patch
Patch71: 0071-dracut-functions.sh-find_kernel_modules_by_path-use-.patch
Patch72: 0072-dracut.sh-speedup-strip.patch
Patch73: 0073-profile.py-do-not-count-negative-timestamp-differenc.patch
Patch74: 0074-fs-lib-fs-lib.sh-removed-test-mounting-of-btrfs-and-.patch
Patch75: 0075-base-module-setup.sh-use-force-for-ln.patch
Patch76: 0076-systemd-module-setup.sh-only-create-empty-machine-id.patch
Patch77: 0077-systemd-module-setup.sh-ln-with-force.patch
Patch78: 0078-i18n-module-setup.sh-install_all_kbd-speedup-install.patch
Patch79: 0079-bootchart-module-setup.sh-no-need-for-mknod-anymore.patch
Patch80: 0080-no-more-mknod-in-the-initramfs.patch
Patch81: 0081-udev-rules-module-setup.sh-ln-with-force.patch
Patch82: 0082-terminfo-module-setup.sh-speedup-install-of-all-term.patch
Patch83: 0083-network-module-setup.sh-fixed-installkernel-return-c.patch
Patch84: 0084-iscsi-module-setup.sh-speedup-installkernel.patch
Patch85: 0085-plymouth-module-setup.sh-installkernel-fix-return-co.patch
Patch86: 0086-kernel-modules-module-setup.sh-installkernel-fix-ret.patch
Patch87: 0087-multipath-module-setup.sh-installkernel-fix-return-c.patch
Patch88: 0088-modules.d-module-setup.sh-no-more-sourcing-of-dracut.patch
Patch89: 0089-dracut-logger.sh-use-for-numeric-comparisons.patch
Patch90: 0090-dracut-logger.sh-empty-functions-for-log-funcs-which.patch
Patch91: 0091-dracut.sh-do-not-copy-devices-nodes-mknod-them.patch
BuildArch: noarch
@ -333,6 +363,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/90lvm
%{dracutlibdir}/modules.d/90mdraid
%{dracutlibdir}/modules.d/90multipath
%{dracutlibdir}/modules.d/90qemu
%{dracutlibdir}/modules.d/91crypt-gpg
%{dracutlibdir}/modules.d/95debug
%{dracutlibdir}/modules.d/95resume
@ -375,6 +406,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/95fcoe
%{dracutlibdir}/modules.d/95iscsi
%{dracutlibdir}/modules.d/90livenet
%{dracutlibdir}/modules.d/90qemu-net
%{dracutlibdir}/modules.d/95nbd
%{dracutlibdir}/modules.d/95nfs
%{dracutlibdir}/modules.d/95ssh-client
@ -406,6 +438,16 @@ rm -rf $RPM_BUILD_ROOT
%dir /var/lib/dracut/overlay
%changelog
* Mon Jun 25 2012 Harald Hoyer <harald@redhat.com> 019-92.git20120625
- support vlan tagged binding
- speedup initramfs emergency service
- speedup image creation
- fix installkernel() return codes
Resolves: rhbz#833256
- add qemu and qemu-net modules to add qemu drivers even in host-only
- speedup btrfs and xfs fsck (nop)
- no more mknod in the initramfs (fixes plymouth on s390)
* Thu Jun 21 2012 Harald Hoyer <harald@redhat.com> 019-62.git20120621
- do not require pkg-config for systemd
- i18n fixes