"eject" is optional now
refined shutdown procedure
This commit is contained in:
parent
77a5db3192
commit
f3160a5b6c
22
0001-dracut.spec-remove-noreplace-for-01-dist.conf.patch
Normal file
22
0001-dracut.spec-remove-noreplace-for-01-dist.conf.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From 8e702c3d0facbe4f6381068b74efb56bdc0c1653 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 12:39:58 +0200
|
||||
Subject: [PATCH] dracut.spec: remove noreplace for 01-dist.conf
|
||||
|
||||
---
|
||||
dracut.spec | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/dracut.spec b/dracut.spec
|
||||
index 26263d8..30741cd 100644
|
||||
--- a/dracut.spec
|
||||
+++ b/dracut.spec
|
||||
@@ -215,7 +215,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_datadir}/dracut/dracut-logger
|
||||
%config(noreplace) /etc/dracut.conf
|
||||
%if 0%{?fedora} || 0%{?suse_version}
|
||||
-%config(noreplace) /etc/dracut.conf.d/01-dist.conf
|
||||
+%config /etc/dracut.conf.d/01-dist.conf
|
||||
%endif
|
||||
%dir /etc/dracut.conf.d
|
||||
%{_mandir}/man8/dracut.8*
|
192
0002-add-TEST-15-BTRFSRAID.patch
Normal file
192
0002-add-TEST-15-BTRFSRAID.patch
Normal file
@ -0,0 +1,192 @@
|
||||
From 54703a719f49b3c4aafb60d49b265e2cde9bb16f Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 14:10:30 +0200
|
||||
Subject: [PATCH] add TEST-15-BTRFSRAID
|
||||
|
||||
---
|
||||
test/TEST-15-BTRFSRAID/99-idesymlinks.rules | 8 +++
|
||||
test/TEST-15-BTRFSRAID/Makefile | 10 +++
|
||||
test/TEST-15-BTRFSRAID/create-root.sh | 22 +++++++
|
||||
test/TEST-15-BTRFSRAID/hard-off.sh | 3 +
|
||||
test/TEST-15-BTRFSRAID/test-init | 11 ++++
|
||||
test/TEST-15-BTRFSRAID/test.sh | 82 +++++++++++++++++++++++++++
|
||||
6 files changed, 136 insertions(+), 0 deletions(-)
|
||||
create mode 100644 test/TEST-15-BTRFSRAID/99-idesymlinks.rules
|
||||
create mode 100644 test/TEST-15-BTRFSRAID/Makefile
|
||||
create mode 100755 test/TEST-15-BTRFSRAID/create-root.sh
|
||||
create mode 100755 test/TEST-15-BTRFSRAID/hard-off.sh
|
||||
create mode 100755 test/TEST-15-BTRFSRAID/test-init
|
||||
create mode 100755 test/TEST-15-BTRFSRAID/test.sh
|
||||
|
||||
diff --git a/test/TEST-15-BTRFSRAID/99-idesymlinks.rules b/test/TEST-15-BTRFSRAID/99-idesymlinks.rules
|
||||
new file mode 100644
|
||||
index 0000000..d557790
|
||||
--- /dev/null
|
||||
+++ b/test/TEST-15-BTRFSRAID/99-idesymlinks.rules
|
||||
@@ -0,0 +1,8 @@
|
||||
+ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hda", SYMLINK+="sda"
|
||||
+ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hda*", SYMLINK+="sda$env{MINOR}"
|
||||
+ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdb", SYMLINK+="sdb"
|
||||
+ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdb*", SYMLINK+="sdb$env{MINOR}"
|
||||
+ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdc", SYMLINK+="sdc"
|
||||
+ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdc*", SYMLINK+="sdc$env{MINOR}"
|
||||
+ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="hdd", SYMLINK+="sdd"
|
||||
+ACTION=="add|change", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", KERNEL=="hdd*", SYMLINK+="sdd$env{MINOR}"
|
||||
diff --git a/test/TEST-15-BTRFSRAID/Makefile b/test/TEST-15-BTRFSRAID/Makefile
|
||||
new file mode 100644
|
||||
index 0000000..bc0ddb6
|
||||
--- /dev/null
|
||||
+++ b/test/TEST-15-BTRFSRAID/Makefile
|
||||
@@ -0,0 +1,10 @@
|
||||
+all:
|
||||
+ @make -s --no-print-directory -C ../.. all
|
||||
+ @basedir=../.. testdir=../ ./test.sh --all
|
||||
+setup:
|
||||
+ @make --no-print-directory -C ../.. all
|
||||
+ @basedir=../.. testdir=../ ./test.sh --setup
|
||||
+clean:
|
||||
+ @basedir=../.. testdir=../ ./test.sh --clean
|
||||
+run:
|
||||
+ @basedir=../.. testdir=../ ./test.sh --run
|
||||
diff --git a/test/TEST-15-BTRFSRAID/create-root.sh b/test/TEST-15-BTRFSRAID/create-root.sh
|
||||
new file mode 100755
|
||||
index 0000000..60dd319
|
||||
--- /dev/null
|
||||
+++ b/test/TEST-15-BTRFSRAID/create-root.sh
|
||||
@@ -0,0 +1,22 @@
|
||||
+#!/bin/sh
|
||||
+# don't let udev and this script step on eachother's toes
|
||||
+for x in 64-lvm.rules 70-mdadm.rules 99-mount-rules; do
|
||||
+ > "/etc/udev/rules.d/$x"
|
||||
+done
|
||||
+udevadm control --reload-rules
|
||||
+# save a partition at the beginning for future flagging purposes
|
||||
+sfdisk -C 524288 -H 2 -S 32 -L /dev/sda <<EOF
|
||||
+,16
|
||||
+,10240
|
||||
+,10240
|
||||
+,10240
|
||||
+EOF
|
||||
+mkfs.btrfs -mraid10 -L root /dev/sda2 /dev/sda3 /dev/sda4
|
||||
+btrfs device scan
|
||||
+set -e
|
||||
+mkdir -p /sysroot
|
||||
+mount /dev/sda4 /sysroot
|
||||
+cp -a -t /sysroot /source/*
|
||||
+umount /sysroot
|
||||
+echo "dracut-root-block-created" >/dev/sda1
|
||||
+poweroff -f
|
||||
diff --git a/test/TEST-15-BTRFSRAID/hard-off.sh b/test/TEST-15-BTRFSRAID/hard-off.sh
|
||||
new file mode 100755
|
||||
index 0000000..12c3d5a
|
||||
--- /dev/null
|
||||
+++ b/test/TEST-15-BTRFSRAID/hard-off.sh
|
||||
@@ -0,0 +1,3 @@
|
||||
+#!/bin/sh
|
||||
+getarg rd.shell || poweroff -f
|
||||
+getarg failme && poweroff -f
|
||||
diff --git a/test/TEST-15-BTRFSRAID/test-init b/test/TEST-15-BTRFSRAID/test-init
|
||||
new file mode 100755
|
||||
index 0000000..8f7cdf3
|
||||
--- /dev/null
|
||||
+++ b/test/TEST-15-BTRFSRAID/test-init
|
||||
@@ -0,0 +1,11 @@
|
||||
+#!/bin/sh
|
||||
+export PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||
+exec >/dev/console 2>&1
|
||||
+echo "dracut-root-block-success" >/dev/sda1
|
||||
+export TERM=linux
|
||||
+export PS1='initramfs-test:\w\$ '
|
||||
+[ -f /etc/fstab ] || ln -s /proc/mounts /etc/fstab
|
||||
+stty sane
|
||||
+echo "made it to the rootfs! Powering down."
|
||||
+mount -n -o remount,ro /
|
||||
+poweroff -f
|
||||
diff --git a/test/TEST-15-BTRFSRAID/test.sh b/test/TEST-15-BTRFSRAID/test.sh
|
||||
new file mode 100755
|
||||
index 0000000..96ecd2e
|
||||
--- /dev/null
|
||||
+++ b/test/TEST-15-BTRFSRAID/test.sh
|
||||
@@ -0,0 +1,82 @@
|
||||
+#!/bin/bash
|
||||
+TEST_DESCRIPTION="root filesystem on multiple device btrfs"
|
||||
+
|
||||
+KVERSION=${KVERSION-$(uname -r)}
|
||||
+
|
||||
+# Uncomment this to debug failures
|
||||
+#DEBUGFAIL="rd.shell"
|
||||
+DISKIMAGE=/var/tmp/TEST-15-BTRFSRAID-root.img
|
||||
+test_run() {
|
||||
+ $testdir/run-qemu -hda $DISKIMAGE -m 256M -nographic \
|
||||
+ -net none -kernel /boot/vmlinuz-$KVERSION \
|
||||
+ -append "root=LABEL=root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
|
||||
+ -initrd initramfs.testing
|
||||
+ grep -m 1 -q dracut-root-block-success $DISKIMAGE || return 1
|
||||
+}
|
||||
+
|
||||
+test_setup() {
|
||||
+ # Create the blank file to use as a root filesystem
|
||||
+ dd if=/dev/null of=$DISKIMAGE bs=1M seek=1024
|
||||
+
|
||||
+ kernel=$KVERSION
|
||||
+ # Create what will eventually be our root filesystem onto an overlay
|
||||
+ (
|
||||
+ initdir=overlay/source
|
||||
+ . $basedir/dracut-functions
|
||||
+ dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
|
||||
+ /lib/terminfo/l/linux mount dmesg ifconfig dhclient mkdir cp ping dhclient
|
||||
+ inst "$basedir/modules.d/40network/dhclient-script" "/sbin/dhclient-script"
|
||||
+ inst "$basedir/modules.d/40network/ifup" "/sbin/ifup"
|
||||
+ dracut_install grep
|
||||
+ inst ./test-init /sbin/init
|
||||
+ find_binary plymouth >/dev/null && dracut_install plymouth
|
||||
+ (cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
|
||||
+ cp -a /etc/ld.so.conf* $initdir/etc
|
||||
+ sudo ldconfig -r "$initdir"
|
||||
+ )
|
||||
+
|
||||
+ # second, install the files needed to make the root filesystem
|
||||
+ (
|
||||
+ initdir=overlay
|
||||
+ . $basedir/dracut-functions
|
||||
+ dracut_install sfdisk mkfs.btrfs poweroff cp umount
|
||||
+ inst_hook initqueue 01 ./create-root.sh
|
||||
+ inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
|
||||
+ )
|
||||
+
|
||||
+ # create an initramfs that will create the target root filesystem.
|
||||
+ # We do it this way so that we do not risk trashing the host mdraid
|
||||
+ # devices, volume groups, encrypted partitions, etc.
|
||||
+ $basedir/dracut -l -i overlay / \
|
||||
+ -m "dash btrfs udev-rules base rootfs-block kernel-modules" \
|
||||
+ -d "piix ide-gd_mod ata_piix btrfs sd_mod" \
|
||||
+ --nomdadmconf \
|
||||
+ -f initramfs.makeroot $KVERSION || return 1
|
||||
+ rm -rf overlay
|
||||
+ # Invoke KVM and/or QEMU to actually create the target filesystem.
|
||||
+ $testdir/run-qemu -hda $DISKIMAGE -m 256M -nographic -net none \
|
||||
+ -kernel "/boot/vmlinuz-$kernel" \
|
||||
+ -append "root=LABEL=root rw quiet console=ttyS0,115200n81 selinux=0" \
|
||||
+ -initrd initramfs.makeroot || return 1
|
||||
+ grep -m 1 -q dracut-root-block-created $DISKIMAGE || return 1
|
||||
+ (
|
||||
+ initdir=overlay
|
||||
+ . $basedir/dracut-functions
|
||||
+ dracut_install poweroff shutdown
|
||||
+ inst_hook emergency 000 ./hard-off.sh
|
||||
+ inst ./cryptroot-ask /sbin/cryptroot-ask
|
||||
+ inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
|
||||
+ )
|
||||
+ sudo $basedir/dracut -l -i overlay / \
|
||||
+ -o "plymouth network" \
|
||||
+ -a "debug" \
|
||||
+ -d "piix ide-gd_mod ata_piix btrfs sd_mod" \
|
||||
+ -f initramfs.testing $KVERSION || return 1
|
||||
+}
|
||||
+
|
||||
+test_cleanup() {
|
||||
+ rm -fr overlay mnt
|
||||
+ rm -f $DISKIMAGE initramfs.makeroot initramfs.testing
|
||||
+}
|
||||
+
|
||||
+. $testdir/test-functions
|
21
0003-dracut.logrotate-remove-yearly.patch
Normal file
21
0003-dracut.logrotate-remove-yearly.patch
Normal file
@ -0,0 +1,21 @@
|
||||
From 8a29368bf1077757d160535e381c6f6de32a95fb Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 17:21:02 +0200
|
||||
Subject: [PATCH] dracut.logrotate: remove "yearly"
|
||||
|
||||
logrotate would only rotate yearly with it
|
||||
---
|
||||
dracut.logrotate | 1 -
|
||||
1 files changed, 0 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/dracut.logrotate b/dracut.logrotate
|
||||
index e7d4f0a..76bdd80 100644
|
||||
--- a/dracut.logrotate
|
||||
+++ b/dracut.logrotate
|
||||
@@ -2,6 +2,5 @@
|
||||
missingok
|
||||
notifempty
|
||||
size 30k
|
||||
- yearly
|
||||
create 0600 root root
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
From e45ffb5d1fddf751f50bc268846d81659120be62 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 17:24:33 +0200
|
||||
Subject: [PATCH] dracut-logger: create logfile with 0600 permissions
|
||||
|
||||
---
|
||||
dracut-logger | 4 ++++
|
||||
1 files changed, 4 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/dracut-logger b/dracut-logger
|
||||
index 3bcce83..a5a3ee9 100755
|
||||
--- a/dracut-logger
|
||||
+++ b/dracut-logger
|
||||
@@ -106,6 +106,7 @@ __DRACUT_LOGGER__=1
|
||||
# @warning Function sets global variables @var maxloglvl and @syslogfacility.
|
||||
# See file doc comment for details.
|
||||
dlog_init() {
|
||||
+ local __oldumask
|
||||
# Skip initialization if it's already done.
|
||||
[ -n "$maxloglvl" ] && return 0
|
||||
|
||||
@@ -118,7 +119,10 @@ dlog_init() {
|
||||
if [ -z "$fileloglvl" ]; then
|
||||
[ -w "$logfile" ] && fileloglvl=4 || fileloglvl=0
|
||||
elif [ $fileloglvl -gt 0 ]; then
|
||||
+ __oldumask=$(umask)
|
||||
+ umask 0377
|
||||
! [ -e "$logfile" ] && >"$logfile"
|
||||
+ umask $__oldumask
|
||||
if [ -w "$logfile" -a -f "$logfile" ]; then
|
||||
# Mark new run in the log file
|
||||
echo >>"$logfile"
|
22
0005-90dmsquash-live-optionally-install-eject.patch
Normal file
22
0005-90dmsquash-live-optionally-install-eject.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From 34b22d6049e416c12f75e53bfc8a142024751d0e Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 17:49:29 +0200
|
||||
Subject: [PATCH] 90dmsquash-live: optionally install eject
|
||||
|
||||
---
|
||||
modules.d/90dmsquash-live/module-setup.sh | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/modules.d/90dmsquash-live/module-setup.sh b/modules.d/90dmsquash-live/module-setup.sh
|
||||
index e1a8996..8ed633f 100755
|
||||
--- a/modules.d/90dmsquash-live/module-setup.sh
|
||||
+++ b/modules.d/90dmsquash-live/module-setup.sh
|
||||
@@ -27,7 +27,7 @@ install() {
|
||||
inst losetup
|
||||
inst grep
|
||||
|
||||
- dracut_install eject
|
||||
+ dracut_install -o eject
|
||||
|
||||
inst blockdev
|
||||
type -P checkisomd5 >/dev/null && inst checkisomd5
|
35
0006-enable-shutdown-module-by-default.patch
Normal file
35
0006-enable-shutdown-module-by-default.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From 2560da6be28e244ddf5c84ab3ada69c1dfacc796 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 19:04:54 +0200
|
||||
Subject: [PATCH] enable shutdown module by default
|
||||
|
||||
---
|
||||
dracut.conf.d/fedora.conf.example | 2 +-
|
||||
modules.d/99shutdown/module-setup.sh | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dracut.conf.d/fedora.conf.example b/dracut.conf.d/fedora.conf.example
|
||||
index 8ca67d4..eddbf0f 100644
|
||||
--- a/dracut.conf.d/fedora.conf.example
|
||||
+++ b/dracut.conf.d/fedora.conf.example
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
# i18n
|
||||
i18n_vars="/etc/sysconfig/keyboard:KEYTABLE-KEYMAP /etc/sysconfig/i18n:SYSFONT-FONT,FONTACM-FONT_MAP,FONT_UNIMAP"
|
||||
-add_dracutmodules+=" rpmversion shutdown "
|
||||
+add_dracutmodules+=" rpmversion "
|
||||
stdloglvl=3
|
||||
prefix=/run/initramfs
|
||||
diff --git a/modules.d/99shutdown/module-setup.sh b/modules.d/99shutdown/module-setup.sh
|
||||
index c4d2bb5..ae402ef 100755
|
||||
--- a/modules.d/99shutdown/module-setup.sh
|
||||
+++ b/modules.d/99shutdown/module-setup.sh
|
||||
@@ -3,7 +3,7 @@
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
check() {
|
||||
- return 255
|
||||
+ return 0
|
||||
}
|
||||
|
||||
depends() {
|
31
0007-90dm-dm-shutdown.sh-put-shutdown-in-function.patch
Normal file
31
0007-90dm-dm-shutdown.sh-put-shutdown-in-function.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From 4456861f7edc8861a32bdd8ca3d3e49f602837e8 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 19:06:08 +0200
|
||||
Subject: [PATCH] 90dm/dm-shutdown.sh: put shutdown in function
|
||||
|
||||
---
|
||||
modules.d/90dm/dm-shutdown.sh | 17 +++++++++++++++--
|
||||
1 files changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules.d/90dm/dm-shutdown.sh b/modules.d/90dm/dm-shutdown.sh
|
||||
index 026eb26..3e668f8 100644
|
||||
--- a/modules.d/90dm/dm-shutdown.sh
|
||||
+++ b/modules.d/90dm/dm-shutdown.sh
|
||||
@@ -1,2 +1,15 @@
|
||||
-echo "Disassembling device-mapper devices"
|
||||
-dmsetup -v remove_all
|
||||
+#!/bin/sh
|
||||
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
+# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
+_do_dm_shutdown() {
|
||||
+ local ret
|
||||
+ info "Disassembling device-mapper devices"
|
||||
+ dmsetup -v remove_all
|
||||
+ ret=$?
|
||||
+#info "dmsetup ls --tree"
|
||||
+#dmsetup ls --tree 2>&1 | vinfo
|
||||
+ return $ret
|
||||
+}
|
||||
+
|
||||
+_do_dm_shutdown
|
||||
+
|
30
0008-90mdraid-md-shutdown.sh-put-shutdown-in-function.patch
Normal file
30
0008-90mdraid-md-shutdown.sh-put-shutdown-in-function.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From 8e448cadf9fe979ac951b3ca6b5d3a5eecc150c2 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 19:06:26 +0200
|
||||
Subject: [PATCH] 90mdraid/md-shutdown.sh: put shutdown in function
|
||||
|
||||
---
|
||||
modules.d/90mdraid/md-shutdown.sh | 16 ++++++++++++++--
|
||||
1 files changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules.d/90mdraid/md-shutdown.sh b/modules.d/90mdraid/md-shutdown.sh
|
||||
index f07f621..aa89bf6 100644
|
||||
--- a/modules.d/90mdraid/md-shutdown.sh
|
||||
+++ b/modules.d/90mdraid/md-shutdown.sh
|
||||
@@ -1,2 +1,14 @@
|
||||
-echo "Disassembling mdraid devices."
|
||||
-mdadm -v --stop --scan
|
||||
+#!/bin/sh
|
||||
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
+# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
+_do_md_shutdown() {
|
||||
+ local ret
|
||||
+ info "Disassembling mdraid devices."
|
||||
+ mdadm -v --stop --scan
|
||||
+ ret=$?
|
||||
+#info "cat /proc/mdstat"
|
||||
+# cat /proc/mdstat | vinfo
|
||||
+ return $ret
|
||||
+}
|
||||
+
|
||||
+_do_md_shutdown
|
99
0009-TEST-10-RAID-extend-test-case-to-shutdown.patch
Normal file
99
0009-TEST-10-RAID-extend-test-case-to-shutdown.patch
Normal file
@ -0,0 +1,99 @@
|
||||
From ceaf49d735b2395897253ae05f6a3b55e09eb252 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 19:08:25 +0200
|
||||
Subject: [PATCH] TEST-10-RAID: extend test case to shutdown
|
||||
|
||||
---
|
||||
test/TEST-10-RAID/test-init | 13 +++++++++++--
|
||||
test/TEST-10-RAID/test.sh | 17 +++++++++--------
|
||||
2 files changed, 20 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/test/TEST-10-RAID/test-init b/test/TEST-10-RAID/test-init
|
||||
index 8f7cdf3..029084a 100755
|
||||
--- a/test/TEST-10-RAID/test-init
|
||||
+++ b/test/TEST-10-RAID/test-init
|
||||
@@ -1,11 +1,20 @@
|
||||
#!/bin/sh
|
||||
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||
+strstr() { [ "${1#*$2*}" != "$1" ]; }
|
||||
+CMDLINE=$(while read line; do echo $line;done < /proc/cmdline)
|
||||
+plymouth --quit
|
||||
exec >/dev/console 2>&1
|
||||
echo "dracut-root-block-success" >/dev/sda1
|
||||
export TERM=linux
|
||||
export PS1='initramfs-test:\w\$ '
|
||||
-[ -f /etc/fstab ] || ln -s /proc/mounts /etc/fstab
|
||||
+[ -f /etc/mtab ] || ln -sfn /proc/mounts /etc/mtab
|
||||
+[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab
|
||||
stty sane
|
||||
-echo "made it to the rootfs! Powering down."
|
||||
+echo "made it to the rootfs!"
|
||||
+strstr "$CMDLINE" "rd.shell" && sh -i
|
||||
+echo "Powering down."
|
||||
mount -n -o remount,ro /
|
||||
+if [ -e /lib/systemd/systemd-shutdown ]; then
|
||||
+ exec /lib/systemd/systemd-shutdown poweroff
|
||||
+fi
|
||||
poweroff -f
|
||||
diff --git a/test/TEST-10-RAID/test.sh b/test/TEST-10-RAID/test.sh
|
||||
index 0b3fc0c..fe95437 100755
|
||||
--- a/test/TEST-10-RAID/test.sh
|
||||
+++ b/test/TEST-10-RAID/test.sh
|
||||
@@ -5,18 +5,18 @@ KVERSION=${KVERSION-$(uname -r)}
|
||||
|
||||
# Uncomment this to debug failures
|
||||
#DEBUGFAIL="rd.shell"
|
||||
-
|
||||
+DISKIMAGE=/var/tmp/TEST-10-RAID-root.img
|
||||
test_run() {
|
||||
- $testdir/run-qemu -hda root.ext2 -m 256M -nographic \
|
||||
+ $testdir/run-qemu -hda $DISKIMAGE -m 256M -nographic \
|
||||
-net none -kernel /boot/vmlinuz-$KVERSION \
|
||||
-append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
|
||||
-initrd initramfs.testing
|
||||
- grep -m 1 -q dracut-root-block-success root.ext2 || return 1
|
||||
+ grep -m 1 -q dracut-root-block-success $DISKIMAGE || return 1
|
||||
}
|
||||
|
||||
test_setup() {
|
||||
# Create the blank file to use as a root filesystem
|
||||
- dd if=/dev/zero of=root.ext2 bs=1M count=40
|
||||
+ dd if=/dev/null of=$DISKIMAGE bs=1M seek=40
|
||||
|
||||
kernel=$KVERSION
|
||||
# Create what will eventually be our root filesystem onto an overlay
|
||||
@@ -28,9 +28,10 @@ test_setup() {
|
||||
inst "$basedir/modules.d/40network/dhclient-script" "/sbin/dhclient-script"
|
||||
inst "$basedir/modules.d/40network/ifup" "/sbin/ifup"
|
||||
dracut_install grep
|
||||
+ dracut_install /lib/systemd/systemd-shutdown
|
||||
inst ./test-init /sbin/init
|
||||
find_binary plymouth >/dev/null && dracut_install plymouth
|
||||
- (cd "$initdir"; mkdir -p dev sys proc etc var/run tmp )
|
||||
+ (cd "$initdir"; mkdir -p dev sys proc etc var/run tmp run)
|
||||
cp -a /etc/ld.so.conf* $initdir/etc
|
||||
sudo ldconfig -r "$initdir"
|
||||
)
|
||||
@@ -54,11 +55,11 @@ test_setup() {
|
||||
-f initramfs.makeroot $KVERSION || return 1
|
||||
rm -rf overlay
|
||||
# Invoke KVM and/or QEMU to actually create the target filesystem.
|
||||
- $testdir/run-qemu -hda root.ext2 -m 256M -nographic -net none \
|
||||
+ $testdir/run-qemu -hda $DISKIMAGE -m 256M -nographic -net none \
|
||||
-kernel "/boot/vmlinuz-$kernel" \
|
||||
-append "root=/dev/dracut/root rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \
|
||||
-initrd initramfs.makeroot || return 1
|
||||
- grep -m 1 -q dracut-root-block-created root.ext2 || return 1
|
||||
+ grep -m 1 -q dracut-root-block-created $DISKIMAGE || return 1
|
||||
(
|
||||
initdir=overlay
|
||||
. $basedir/dracut-functions
|
||||
@@ -76,7 +77,7 @@ test_setup() {
|
||||
|
||||
test_cleanup() {
|
||||
rm -fr overlay mnt
|
||||
- rm -f root.ext2 initramfs.makeroot initramfs.testing
|
||||
+ rm -f $DISKIMAGE initramfs.makeroot initramfs.testing
|
||||
}
|
||||
|
||||
. $testdir/test-functions
|
@ -0,0 +1,21 @@
|
||||
From 00d89f51701a89543c67715beedc70b903244f08 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 21:10:58 +0200
|
||||
Subject: [PATCH] TEST-10-RAID/test-init: turn off debug for shutdown
|
||||
|
||||
---
|
||||
test/TEST-10-RAID/test-init | 1 +
|
||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/test/TEST-10-RAID/test-init b/test/TEST-10-RAID/test-init
|
||||
index 029084a..4c8c9e1 100755
|
||||
--- a/test/TEST-10-RAID/test-init
|
||||
+++ b/test/TEST-10-RAID/test-init
|
||||
@@ -14,6 +14,7 @@ echo "made it to the rootfs!"
|
||||
strstr "$CMDLINE" "rd.shell" && sh -i
|
||||
echo "Powering down."
|
||||
mount -n -o remount,ro /
|
||||
+echo " rd.debug=0 " > /run/initramfs/etc/cmdline
|
||||
if [ -e /lib/systemd/systemd-shutdown ]; then
|
||||
exec /lib/systemd/systemd-shutdown poweroff
|
||||
fi
|
98
0011-shutdown-fixed-check_shutdown-loop.patch
Normal file
98
0011-shutdown-fixed-check_shutdown-loop.patch
Normal file
@ -0,0 +1,98 @@
|
||||
From f47e0234987e7e6cfb2439e90658cb5c3b8bdef8 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 21:11:36 +0200
|
||||
Subject: [PATCH] shutdown: fixed check_shutdown loop
|
||||
|
||||
---
|
||||
modules.d/90dm/dm-shutdown.sh | 11 ++++++-----
|
||||
modules.d/90mdraid/md-shutdown.sh | 9 ++++++---
|
||||
modules.d/99shutdown/shutdown | 24 ++++++++++++++----------
|
||||
3 files changed, 26 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/modules.d/90dm/dm-shutdown.sh b/modules.d/90dm/dm-shutdown.sh
|
||||
index 3e668f8..80d80d0 100644
|
||||
--- a/modules.d/90dm/dm-shutdown.sh
|
||||
+++ b/modules.d/90dm/dm-shutdown.sh
|
||||
@@ -3,13 +3,14 @@
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
_do_dm_shutdown() {
|
||||
local ret
|
||||
+ local final=$1
|
||||
info "Disassembling device-mapper devices"
|
||||
dmsetup -v remove_all
|
||||
ret=$?
|
||||
-#info "dmsetup ls --tree"
|
||||
-#dmsetup ls --tree 2>&1 | vinfo
|
||||
+ if [ "x$final" != "x" ]; then
|
||||
+ info "dmsetup ls --tree"
|
||||
+ dmsetup ls --tree 2>&1 | vinfo
|
||||
+ fi
|
||||
return $ret
|
||||
}
|
||||
-
|
||||
-_do_dm_shutdown
|
||||
-
|
||||
+_do_dm_shutdown $1
|
||||
diff --git a/modules.d/90mdraid/md-shutdown.sh b/modules.d/90mdraid/md-shutdown.sh
|
||||
index aa89bf6..bc36166 100644
|
||||
--- a/modules.d/90mdraid/md-shutdown.sh
|
||||
+++ b/modules.d/90mdraid/md-shutdown.sh
|
||||
@@ -3,12 +3,15 @@
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
_do_md_shutdown() {
|
||||
local ret
|
||||
+ local final=$1
|
||||
info "Disassembling mdraid devices."
|
||||
mdadm -v --stop --scan
|
||||
ret=$?
|
||||
-#info "cat /proc/mdstat"
|
||||
-# cat /proc/mdstat | vinfo
|
||||
+ if [ "x$final" != "x" ]; then
|
||||
+ info "cat /proc/mdstat"
|
||||
+ cat /proc/mdstat | vinfo
|
||||
+ fi
|
||||
return $ret
|
||||
}
|
||||
|
||||
-_do_md_shutdown
|
||||
+_do_md_shutdown $1
|
||||
diff --git a/modules.d/99shutdown/shutdown b/modules.d/99shutdown/shutdown
|
||||
index bff29b9..a31a95d 100755
|
||||
--- a/modules.d/99shutdown/shutdown
|
||||
+++ b/modules.d/99shutdown/shutdown
|
||||
@@ -64,21 +64,25 @@ while [ $_cnt -le 40 ]; do
|
||||
done
|
||||
[ $_cnt -ge 40 ] && umount_a
|
||||
|
||||
-check_finished() {
|
||||
- local f
|
||||
- for f in $hookdir/shutdown/*.sh; do
|
||||
- [ -e "$f" ] || continue
|
||||
- ( . "$f" ) || return 1
|
||||
+_check_shutdown() {
|
||||
+ local __f
|
||||
+ local __s=1
|
||||
+ for __f in $hookdir/shutdown/*.sh; do
|
||||
+ [ -e "$__f" ] || continue
|
||||
+ ( . "$__f" $1 )
|
||||
+ if [ $? -eq 0 ]; then
|
||||
+ rm -f $__f
|
||||
+ __s=0
|
||||
+ fi
|
||||
done
|
||||
- return 0
|
||||
+ return $__s
|
||||
}
|
||||
|
||||
_cnt=0
|
||||
-while [ $_cnt -le 40 ]; do
|
||||
- check_finished 2>/dev/null && break
|
||||
- _cnt=$(($_cnt+1))
|
||||
+while _check_shutdown; do
|
||||
+:
|
||||
done
|
||||
-[ $_cnt -ge 40 ] && check_finished
|
||||
+_check_shutdown final
|
||||
|
||||
getarg 'rd.break=shutdown' && emergency_shell -n cmdline "Break before shutdown"
|
||||
[ "$1" = "reboot" ] && reboot -f -d -n --no-wall
|
73
0012-dracut-lib.sh-fixed-getargs.patch
Normal file
73
0012-dracut-lib.sh-fixed-getargs.patch
Normal file
@ -0,0 +1,73 @@
|
||||
From 9e7f4955895c1064e3bdd03f5f781efc9b98d5d6 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 21:12:17 +0200
|
||||
Subject: [PATCH] dracut-lib.sh: fixed getargs()
|
||||
|
||||
if $1 has a "=<value>", we want the exact match
|
||||
if cmdline argument has no "=<value>", we assume "=1"
|
||||
---
|
||||
modules.d/99base/dracut-lib.sh | 31 ++++++++++++++++++++++++-------
|
||||
1 files changed, 24 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
|
||||
index 10025bd..c2202f1 100755
|
||||
--- a/modules.d/99base/dracut-lib.sh
|
||||
+++ b/modules.d/99base/dracut-lib.sh
|
||||
@@ -45,19 +45,36 @@ _getcmdline() {
|
||||
}
|
||||
|
||||
_dogetarg() {
|
||||
- local _o _val
|
||||
+ local _o _val _doecho
|
||||
unset _val
|
||||
unset _o
|
||||
+ unset _doecho
|
||||
_getcmdline
|
||||
|
||||
for _o in $CMDLINE; do
|
||||
- if [ "$_o" = "$1" ]; then
|
||||
- return 0;
|
||||
+ if [ "${_o%%=*}" = "${1%=}" ]; then
|
||||
+ if [ -n "${1#*=}" -a "${1#*=*}" != "${1}" ]; then
|
||||
+ # if $1 has a "=<value>", we want the exact match
|
||||
+ if [ "$_o" = "$1" ]; then
|
||||
+ _val="1";
|
||||
+ unset _doecho
|
||||
+ fi
|
||||
+ continue
|
||||
+ fi
|
||||
+
|
||||
+ if [ "${_o#*=}" = "$_o" ]; then
|
||||
+ # if cmdline argument has no "=<value>", we assume "=1"
|
||||
+ _val="1";
|
||||
+ unset _doecho
|
||||
+ continue
|
||||
+ fi
|
||||
+
|
||||
+ _val=${_o#*=};
|
||||
+ _doecho=1
|
||||
fi
|
||||
- [ "${_o%%=*}" = "${1%=}" ] && _val=${_o#*=};
|
||||
done
|
||||
if [ -n "$_val" ]; then
|
||||
- echo $_val;
|
||||
+ [ "x$_doecho" != "x" ] && echo $_val;
|
||||
return 0;
|
||||
fi
|
||||
return 1;
|
||||
@@ -67,13 +84,13 @@ getarg() {
|
||||
set +x
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
- -y) if _dogetarg $2; then
|
||||
+ -y) if _dogetarg $2 >/dev/null; then
|
||||
echo 1
|
||||
[ "$RD_DEBUG" = "yes" ] && set -x
|
||||
return 0
|
||||
fi
|
||||
shift 2;;
|
||||
- -n) if _dogetarg $2; then
|
||||
+ -n) if _dogetarg $2 >/dev/null; then
|
||||
echo 0;
|
||||
[ "$RD_DEBUG" = "yes" ] && set -x
|
||||
return 1
|
24
0013-99base-dracut-lib.sh-fix-previous-getargs-patch.patch
Normal file
24
0013-99base-dracut-lib.sh-fix-previous-getargs-patch.patch
Normal file
@ -0,0 +1,24 @@
|
||||
From b1b678427e0a158487a2a3ef5a1be39f891a1cc3 Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 21:38:07 +0200
|
||||
Subject: [PATCH] 99base/dracut-lib.sh: fix previous getargs patch
|
||||
|
||||
patch 9e7f4955895c1064e3bdd03f5f781efc9b98d5d6 ignored
|
||||
"getargs key=value"
|
||||
---
|
||||
modules.d/99base/dracut-lib.sh | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
|
||||
index c2202f1..6807b53 100755
|
||||
--- a/modules.d/99base/dracut-lib.sh
|
||||
+++ b/modules.d/99base/dracut-lib.sh
|
||||
@@ -52,7 +52,7 @@ _dogetarg() {
|
||||
_getcmdline
|
||||
|
||||
for _o in $CMDLINE; do
|
||||
- if [ "${_o%%=*}" = "${1%=}" ]; then
|
||||
+ if [ "${_o%%=*}" = "${1%%=*}" ]; then
|
||||
if [ -n "${1#*=}" -a "${1#*=*}" != "${1}" ]; then
|
||||
# if $1 has a "=<value>", we want the exact match
|
||||
if [ "$_o" = "$1" ]; then
|
@ -0,0 +1,23 @@
|
||||
From 8570b544e96d150263c639b9411270488a95ad2b Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Wed, 20 Jul 2011 21:40:50 +0200
|
||||
Subject: [PATCH] TEST-10-RAID/test-init: add comment for rd.break=shutdown
|
||||
|
||||
---
|
||||
test/TEST-10-RAID/test-init | 3 ++-
|
||||
1 files changed, 2 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/test/TEST-10-RAID/test-init b/test/TEST-10-RAID/test-init
|
||||
index 4c8c9e1..02c0d1d 100755
|
||||
--- a/test/TEST-10-RAID/test-init
|
||||
+++ b/test/TEST-10-RAID/test-init
|
||||
@@ -14,7 +14,8 @@ echo "made it to the rootfs!"
|
||||
strstr "$CMDLINE" "rd.shell" && sh -i
|
||||
echo "Powering down."
|
||||
mount -n -o remount,ro /
|
||||
-echo " rd.debug=0 " > /run/initramfs/etc/cmdline
|
||||
+#echo " rd.break=shutdown " >> /run/initramfs/etc/cmdline
|
||||
+echo " rd.debug=0 " >> /run/initramfs/etc/cmdline
|
||||
if [ -e /lib/systemd/systemd-shutdown ]; then
|
||||
exec /lib/systemd/systemd-shutdown poweroff
|
||||
fi
|
36
dracut.spec
36
dracut.spec
@ -8,7 +8,7 @@
|
||||
|
||||
Name: dracut
|
||||
Version: 011
|
||||
Release: 1
|
||||
Release: 15.git20110720
|
||||
|
||||
Summary: Initramfs generator using udev
|
||||
%if 0%{?fedora}
|
||||
@ -22,6 +22,20 @@ 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-dracut.spec-remove-noreplace-for-01-dist.conf.patch
|
||||
Patch2: 0002-add-TEST-15-BTRFSRAID.patch
|
||||
Patch3: 0003-dracut.logrotate-remove-yearly.patch
|
||||
Patch4: 0004-dracut-logger-create-logfile-with-0600-permissions.patch
|
||||
Patch5: 0005-90dmsquash-live-optionally-install-eject.patch
|
||||
Patch6: 0006-enable-shutdown-module-by-default.patch
|
||||
Patch7: 0007-90dm-dm-shutdown.sh-put-shutdown-in-function.patch
|
||||
Patch8: 0008-90mdraid-md-shutdown.sh-put-shutdown-in-function.patch
|
||||
Patch9: 0009-TEST-10-RAID-extend-test-case-to-shutdown.patch
|
||||
Patch10: 0010-TEST-10-RAID-test-init-turn-off-debug-for-shutdown.patch
|
||||
Patch11: 0011-shutdown-fixed-check_shutdown-loop.patch
|
||||
Patch12: 0012-dracut-lib.sh-fixed-getargs.patch
|
||||
Patch13: 0013-99base-dracut-lib.sh-fix-previous-getargs-patch.patch
|
||||
Patch14: 0014-TEST-10-RAID-test-init-add-comment-for-rd.break-shut.patch
|
||||
|
||||
|
||||
BuildArch: noarch
|
||||
@ -156,6 +170,20 @@ This package contains tools to assemble the local initrd and host configuration.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
|
||||
|
||||
%build
|
||||
@ -217,7 +245,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_datadir}/dracut/dracut-logger
|
||||
%config(noreplace) /etc/dracut.conf
|
||||
%if 0%{?fedora} || 0%{?suse_version}
|
||||
%config(noreplace) /etc/dracut.conf.d/01-dist.conf
|
||||
%config /etc/dracut.conf.d/01-dist.conf
|
||||
%endif
|
||||
%dir /etc/dracut.conf.d
|
||||
%{_mandir}/man8/dracut.8*
|
||||
@ -290,6 +318,10 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%dir /var/lib/dracut/overlay
|
||||
|
||||
%changelog
|
||||
* Wed Jul 20 2011 Harald Hoyer <harald@redhat.com> 011-15.git20110720
|
||||
- "eject" is optional now
|
||||
- refined shutdown procedure
|
||||
|
||||
* Mon Jul 18 2011 Harald Hoyer <harald@redhat.com> 011-1
|
||||
- version 011
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user