1 diff --git a/dracut.8.asc b/dracut.8.asc
2 index 6a79d12..8b50782 100644
5 @@ -75,12 +75,12 @@ version is:
8 If you want to create lighter, smaller initramfs images, you may want to specify
9 -the --host-only or -H option. Using this option, the resulting image will
10 +the --hostonly or -H option. Using this option, the resulting image will
11 contain only those dracut modules, kernel modules and filesystems, which are
12 needed to boot this specific machine. This has the drawback, that you can't put
13 the disk on another controller or machine, and that you can't switch to another
14 root filesystem, without recreating the initramfs image. The usage of the
15 ---host-only option is only for experts and you will have to keep the broken
16 +--hostonly option is only for experts and you will have to keep the broken
17 pieces. At least keep a copy of a general purpose image (and corresponding
18 kernel) as a fallback to rescue your system.
20 @@ -376,7 +376,7 @@ will not be able to boot. Equivalent to "--compress=bzip2"
23 Make sure your kernel has lzma decompression support compiled in, otherwise you
24 -will not be able to boot. Equivalent to "--compress=lzma -9"
25 +will not be able to boot. Equivalent to "lzma --compress=lzma -9"
29 @@ -385,8 +385,7 @@ will not be able to boot. Equivalent to "--compress=lzma -9"
32 Make sure your kernel has xz decompression support compiled in, otherwise you
33 -will not be able to boot. Equivalent to "--compress=xz --check=crc32
35 +will not be able to boot. Equivalent to "lzma --compress=xz --check=crc32 --lzma2=dict=1MiB"
38 **--compress** _<compressor>_::
39 @@ -409,6 +408,27 @@ will not be able to boot. Equivalent to "--compress=xz --check=crc32
41 Keep the initramfs temporary directory for debugging purposes.
44 + Print out the module install size
47 + Output profile information of the build process
50 + Mount / and /usr read-only by default.
52 +**-L, --stdlog** _<level>_::
53 + [0-6] Specify logging level (to standard error)
55 + 0 - suppress any messages
56 + 1 - only fatal errors
60 + 5 - debug info (here starts lots of output)
61 + 6 - trace info (and even more)
64 **--regenerate-all**::
65 Regenerate all initramfs images at the default location with the kernel versions found on the system.
66 Additional parameters are passed through.
67 diff --git a/dracut.sh b/dracut.sh
68 index 5e9ea3e..586172c 100755
71 @@ -74,19 +74,21 @@ Creates initial ramdisk images for preloading modules
72 call when building the initramfs. Modules are located
73 in /usr/lib/dracut/modules.d.
74 -o, --omit [LIST] Omit a space-separated list of dracut modules.
75 + --force-add [LIST] Force to add a space-separated list of dracut modules
76 + to the default set of modules, when -H is specified.
77 -d, --drivers [LIST] Specify a space-separated list of kernel modules to
78 - exclusively include in the initramfs.
79 - --add-drivers [LIST] Specify a space-separated list of kernel
80 - modules to add to the initramfs.
81 + exclusively include in the initramfs.
82 + --add-drivers [LIST] Specify a space-separated list of kernel
83 + modules to add to the initramfs.
84 --omit-drivers [LIST] Specify a space-separated list of kernel
85 - modules not to add to the initramfs.
86 + modules not to add to the initramfs.
87 --filesystems [LIST] Specify a space-separated list of kernel filesystem
88 - modules to exclusively include in the generic
90 + modules to exclusively include in the generic
92 -k, --kmoddir [DIR] Specify the directory, where to look for kernel
95 --fwdir [DIR] Specify additional directories, where to look for
96 - firmwares, separated by :
97 + firmwares, separated by :
98 --kernel-only Only install kernel drivers and firmware files
99 --no-kernel Do not install kernel drivers and firmware files
100 --kernel-cmdline [PARAMETERS] Specify default kernel command line parameters
101 @@ -317,7 +319,9 @@ TEMP=$(unset POSIXLY_CORRECT; getopt \
107 + --long no-host-only \
111 @@ -391,8 +395,10 @@ while :; do
112 [[ -f "$(readlink -f ${0%/*})/dracut-functions.sh" ]] \
113 && dracutbasedir="$(readlink -f ${0%/*})"
115 - -H|--hostonly) hostonly_l="yes" ;;
116 - -N|--no-hostonly) hostonly_l="no" ;;
117 + -H|--hostonly|--host-only)
118 + hostonly_l="yes" ;;
119 + -N|--no-hostonly|--no-host-only)
121 --fstab) use_fstab_l="yes" ;;
122 -h|--help) long_usage; exit 1 ;;
123 -i|--include) push include_src "$2"
124 diff --git a/dracut.spec b/dracut.spec
125 index af417a4..cb605c6 100644
128 @@ -92,7 +92,7 @@ Requires: kbd kbd-misc
130 %if 0%{?fedora} || 0%{?rhel} > 6
131 Requires: util-linux >= 2.21
132 -Requires: systemd >= 198-5
133 +Requires: systemd >= 199
134 Conflicts: grubby < 8.23
137 diff --git a/modules.d/90crypt/parse-crypt.sh b/modules.d/90crypt/parse-crypt.sh
138 index d61220c..4cb281b 100755
139 --- a/modules.d/90crypt/parse-crypt.sh
140 +++ b/modules.d/90crypt/parse-crypt.sh
141 @@ -27,6 +27,14 @@ else
142 printf -- '--name cryptroot-ask-%%k %s ' $(command -v cryptroot-ask)
143 printf -- '$env{DEVNAME} luks-$env{ID_FS_UUID} %s"\n' $tout
144 } >> /etc/udev/rules.d/70-luks.rules.new
147 + printf -- 'ENV{ID_FS_TYPE}=="crypto_LUKS", '
148 + printf -- 'ENV{ID_FS_UUID}=="*%s*", ' $luksid
149 + printf -- 'RUN+="%s --unique --onetime ' $(command -v initqueue)
150 + printf -- '--name systemd-cryptsetup-%%k %s start ' $(command -v systemctl)
151 + printf -- 'systemd-cryptsetup@luks$$(dev_unit_name -$env{ID_FS_UUID}).service"\n'
152 + } >> /etc/udev/rules.d/70-luks.rules.new
156 diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
157 index 7c3a64d..6d4d412 100755
158 --- a/modules.d/95nfs/module-setup.sh
159 +++ b/modules.d/95nfs/module-setup.sh
160 @@ -62,12 +62,8 @@ install() {
162 # Rather than copy the passwd file in, just set a user for rpcbind
163 # We'll save the state and restart the daemon from the root anyway
164 - egrep '^nfsnobody:' /etc/passwd >> "$initdir/etc/passwd"
165 - egrep '^rpc:' /etc/passwd >> "$initdir/etc/passwd"
166 - egrep '^rpcuser:' /etc/passwd >> "$initdir/etc/passwd"
167 - #type -P nologin >/dev/null && dracut_install nologin
168 - egrep '^nobody:' /etc/group >> "$initdir/etc/group"
169 - egrep '^rpc:' /etc/group >> "$initdir/etc/group"
170 + egrep '^nfsnobody:|^rpc:|^rpcuser:' /etc/passwd >> "$initdir/etc/passwd"
171 + egrep '^nogroup:|^rpc:|^nobody:' /etc/group >> "$initdir/etc/group"
173 # rpc user needs to be able to write to this directory to save the warmstart
175 diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
176 index e456b01..f2b16d3 100755
177 --- a/modules.d/99base/dracut-lib.sh
178 +++ b/modules.d/99base/dracut-lib.sh
179 @@ -818,6 +818,15 @@ wait_for_mount()
180 } >> "$hookdir/emergency/90-${_name}.sh"
186 + _name="${_name##/}"
187 + _name="$(str_replace "$_name" '-' '\x2d')"
188 + _name="$(str_replace "$_name" '/' '-')"
194 # Installs a initqueue-finished script,
195 @@ -835,14 +844,18 @@ wait_for_dev()
196 } >> "${PREFIX}$hookdir/emergency/80-${_name}.sh"
198 if [ -n "$DRACUT_SYSTEMD" ]; then
200 - _name="${_name##/}"
201 - _name="$(str_replace "$_name" '-' '\x2d')"
202 - _name="$(str_replace "$_name" '/' '-')"
203 + _name=$(dev_unit_name "$1")
204 if ! [ -L ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device ]; then
205 [ -d ${PREFIX}/etc/systemd/system/initrd.target.requires ] || mkdir -p ${PREFIX}/etc/systemd/system/initrd.target.requires
206 ln -s ../${_name}.device ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device
209 + mkdir -p ${PREFIX}/etc/systemd/system/${_name}.device.d
212 + echo "JobTimeoutSec=3600"
213 + } > ${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf
214 + [ -z "$PREFIX" ] && /sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
218 @@ -852,6 +865,12 @@ cancel_wait_for_dev()
219 _name="$(str_replace "$1" '/' '\\x2f')"
220 rm -f "$hookdir/initqueue/finished/devexists-${_name}.sh"
221 rm -f "$hookdir/emergency/80-${_name}.sh"
222 + if [ -n "$DRACUT_SYSTEMD" ]; then
223 + _name=$(dev_unit_name "$1")
224 + rm -f ${PREFIX}/etc/systemd/system/initrd.target.requires/${_name}.device
225 + rm -f ${PREFIX}/etc/systemd/system/${_name}.device.d/timeout.conf
226 + /sbin/initqueue --onetime --unique --name daemon-reload systemctl daemon-reload
231 @@ -1017,7 +1036,7 @@ listlist() {
233 # returns OK if both lists contain the same values. An order and a duplication
240 diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
241 index b441a27..410201a 100755
242 --- a/modules.d/99base/init.sh
243 +++ b/modules.d/99base/init.sh
244 @@ -104,7 +104,7 @@ else
247 [ -f /etc/initrd-release ] && . /etc/initrd-release
248 -[ -n "$VERSION" ] && info "dracut-$VERSION"
249 +[ -n "$VERSION_ID" ] && info "$NAME-$VERSION_ID"
251 source_conf /etc/conf.d
253 diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
254 index 7f2940b..4955b7b 100755
255 --- a/modules.d/99base/module-setup.sh
256 +++ b/modules.d/99base/module-setup.sh
257 @@ -89,18 +89,18 @@ install() {
259 ## save host_devs which we need bring up
261 + if dracut_module_included "systemd"; then
266 . "$moddir/dracut-lib.sh"
268 for _dev in ${host_devs[@]}; do
269 _pdev=$(get_persistent_dev $_dev)
273 - if ! dracut_module_included "systemd"; then
274 - PREFIX="$initdir" wait_for_dev $_pdev
276 - DRACUT_SYSTEMD=1 PREFIX="$initdir" wait_for_dev $_pdev
279 + /dev/?*) wait_for_dev $_pdev;;
283 diff --git a/modules.d/99base/wait-host-devs.sh b/modules.d/99base/wait-host-devs.sh
284 deleted file mode 100644
285 index ce84922..0000000
286 --- a/modules.d/99base/wait-host-devs.sh
290 -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
291 -# ex: ts=8 sw=4 sts=4 et filetype=sh
293 -type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
298 - while read _dev; do
308 -[ -f /etc/host_devs ] && wait_host_devs /etc/host_devs
309 diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh
310 index 7727cd0..84f4b7d 100755
311 --- a/test/TEST-01-BASIC/test.sh
312 +++ b/test/TEST-01-BASIC/test.sh
313 @@ -86,7 +86,7 @@ test_setup() {
315 sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
316 -a "debug watchdog" \
317 - -d "piix ide-gd_mod ata_piix ext3 sd_mod i6300esbwdt" \
318 + -d "piix ide-gd_mod ata_piix ext3 sd_mod i6300esb ib700wdt" \
319 -f $TESTDIR/initramfs.testing $KVERSION || return 1
321 # -o "plymouth network md dmraid multipath fips caps crypt btrfs resume dmsquash-live dm"
322 diff --git a/test/TEST-03-USR-MOUNT/test.sh b/test/TEST-03-USR-MOUNT/test.sh
323 index 680720b..ca7dc12 100755
324 --- a/test/TEST-03-USR-MOUNT/test.sh
325 +++ b/test/TEST-03-USR-MOUNT/test.sh
326 @@ -122,7 +122,7 @@ test_setup() {
327 sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
328 -a "debug watchdog" \
330 - -d "piix ide-gd_mod ata_piix btrfs sd_mod i6300esbwdt" \
331 + -d "piix ide-gd_mod ata_piix btrfs sd_mod i6300esb ib700wdt" \
332 -f $TESTDIR/initramfs.testing $KVERSION || return 1
334 rm -rf $TESTDIR/overlay
335 diff --git a/test/TEST-40-NBD/test.sh b/test/TEST-40-NBD/test.sh
336 index 88570af..208b784 100755
337 --- a/test/TEST-40-NBD/test.sh
338 +++ b/test/TEST-40-NBD/test.sh
339 @@ -356,7 +356,7 @@ test_setup() {
340 sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
342 -a "debug watchdog" \
343 - -d "af_packet piix ide-gd_mod ata_piix ext2 ext3 sd_mod e1000 i6300esbwdt" \
344 + -d "af_packet piix ide-gd_mod ata_piix ext2 ext3 sd_mod e1000 i6300esb ib700wdt" \
345 -f $TESTDIR/initramfs.testing $KVERSION || return 1
348 diff --git a/test/TEST-50-MULTINIC/server-init.sh b/test/TEST-50-MULTINIC/server-init.sh
349 index 144f83c..5a8359b 100755
350 --- a/test/TEST-50-MULTINIC/server-init.sh
351 +++ b/test/TEST-50-MULTINIC/server-init.sh
352 @@ -7,11 +7,53 @@ export PS1='nfstest-server:\w\$ '
354 echo "made it to the rootfs!"
355 echo server > /proc/sys/kernel/hostname
357 +wait_for_if_link() {
360 + while [ $cnt -lt 600 ]; do
361 + li=$(ip -o link show dev $1 2>/dev/null)
362 + [ -n "$li" ] && return 0
372 + while [ $cnt -lt 200 ]; do
373 + li=$(ip -o link show up dev $1)
374 + [ -n "$li" ] && return 0
381 +wait_for_route_ok() {
383 + while [ $cnt -lt 200 ]; do
384 + li=$(ip route show)
385 + [ -n "$li" ] && [ -z "${li##*$1*}" ] && return 0
393 + wait_for_if_link $1 2>/dev/null\
394 + && ip link set $1 up 2>/dev/null\
395 + && wait_for_if_up $1 2>/dev/null
399 ip addr add 127.0.0.1/8 dev lo
402 ip addr add 192.168.50.1/24 dev eth0
408 @@ -42,10 +84,14 @@ exportfs -r
409 chmod 777 /var/lib/dhcpd/dhcpd.leases
411 dhcpd -cf /etc/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases
412 -echo -n 'V' > /dev/watchdog
413 +#echo -n 'V' > /dev/watchdog
416 # Wait forever for the VM to die
417 echo "Serving NFS mounts"
418 -while :; do sleep 30; done
423 mount -n -o remount,ro /
425 diff --git a/test/TEST-50-MULTINIC/test.sh b/test/TEST-50-MULTINIC/test.sh
426 index a3aa679..5cb0971 100755
427 --- a/test/TEST-50-MULTINIC/test.sh
428 +++ b/test/TEST-50-MULTINIC/test.sh
429 @@ -8,7 +8,6 @@ KVERSION=${KVERSION-$(uname -r)}
430 # Uncomment this to debug failures
431 #DEBUGFAIL="rd.shell"
432 #SERIAL="tcp:127.0.0.1:9999"
437 @@ -19,9 +18,9 @@ run_server() {
438 -hda $TESTDIR/server.ext3 \
441 - -netdev socket,mcast=230.0.0.1:12320,id=net0 \
442 - -net nic,macaddr=52:54:01:12:34:56,model=e1000,netdev=net0 \
444 + -net socket,listen=127.0.0.1:12350 \
445 + -net nic,macaddr=52:54:01:12:34:56,model=e1000 \
446 + ${SERIAL+-serial $SERIAL} \
447 -watchdog i6300esb -watchdog-action poweroff \
448 -kernel /boot/vmlinuz-$KVERSION \
449 -append "loglevel=77 root=/dev/sda rootfstype=ext3 rw console=ttyS0,115200n81 selinux=0" \
450 @@ -53,15 +52,13 @@ client_test() {
453 $testdir/run-qemu -hda $TESTDIR/client.img -m 512M -smp 2 -nographic \
454 - -netdev socket,mcast=230.0.0.1:12320,id=net0 \
455 - -net nic,netdev=net0,macaddr=52:54:00:12:34:$mac1,model=e1000 \
456 - -netdev socket,mcast=230.0.0.1:12320,id=net1 \
457 - -net nic,netdev=net1,macaddr=52:54:00:12:34:$mac2,model=e1000 \
458 - -netdev socket,mcast=230.0.0.1:12320,id=net2 \
459 - -net nic,netdev=net2,macaddr=52:54:00:12:34:$mac3,model=e1000 \
460 + -net socket,connect=127.0.0.1:12350 \
461 + -net nic,macaddr=52:54:00:12:34:$mac1,model=e1000 \
462 + -net nic,macaddr=52:54:00:12:34:$mac2,model=e1000 \
463 + -net nic,macaddr=52:54:00:12:34:$mac3,model=e1000 \
464 -watchdog i6300esb -watchdog-action poweroff \
465 -kernel /boot/vmlinuz-$KVERSION \
466 - -append "$cmdline $DEBUGFAIL rd.retry=5 rd.info ro rd.systemd.log_level=debug console=ttyS0,115200n81 selinux=0 rd.copystate rd.chroot init=/sbin/init" \
467 + -append "$cmdline $DEBUGFAIL rd.retry=5 rd.info ro console=ttyS0,115200n81 selinux=0 init=/sbin/init" \
468 -initrd $TESTDIR/initramfs.testing
470 if [[ $? -ne 0 ]] || ! grep -m 1 -q OK $TESTDIR/client.img; then
471 @@ -252,14 +249,14 @@ test_setup() {
472 # Make server's dracut image
473 $basedir/dracut.sh -l -i $TESTDIR/overlay / \
474 -m "dash udev-rules base rootfs-block debug kernel-modules watchdog" \
475 - -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files nfsd e1000 i6300esbwdt" \
476 + -d "af_packet piix ide-gd_mod ata_piix ext3 sd_mod nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files nfsd e1000 i6300esb ib700wdt" \
477 -f $TESTDIR/initramfs.server $KVERSION || return 1
479 # Make client's dracut image
480 $basedir/dracut.sh -l -i $TESTDIR/overlay / \
483 - -d "af_packet piix sd_mod sr_mod ata_piix ide-gd_mod e1000 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files sunrpc i6300esbwdt" \
484 + -d "af_packet piix sd_mod sr_mod ata_piix ide-gd_mod e1000 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files sunrpc i6300esb ib700wdt" \
485 -f $TESTDIR/initramfs.testing $KVERSION || return 1
488 diff --git a/test/TEST-99-RPM/test.sh b/test/TEST-99-RPM/test.sh
489 index 66f0beb..f030cb0 100755
490 --- a/test/TEST-99-RPM/test.sh
491 +++ b/test/TEST-99-RPM/test.sh
492 @@ -50,6 +50,7 @@ find / -xdev -type f -not -path '/var/*' \
493 -not -path '/test.output' \
494 -not -path '/etc/nsswitch.conf.bak' \
495 -not -path '/etc/iscsi/initiatorname.iscsi' \
496 + -not -path '/boot/*0-rescue*' \
497 -not -path '/dev/null' \
498 -exec rpm -qf '{}' ';' | \
499 fgrep 'not owned' &> /test.output