- Update to mainline git version 033, b7d1b6f904a5b0bdd9a5ad19149f3.

- Remove all patches which went mainline
- Fix missing root fs slash in lib/udev/rules.d resulting in:
  /var/tmp/initramfs.Lusf6flib/udev/rules.d
- bcache: removed, it's in the upstream bcache-tools package
  mainline git commit: 49268028b90f6344f79e3510d2
- Fix bad she-bang in mkinitrd_setup_dummy

OBS-URL: https://build.opensuse.org/package/show/Base:System/dracut?expand=0&rev=67
This commit is contained in:
Thomas Renninger 2013-10-07 09:43:25 +00:00 committed by Git OBS Bridge
parent 650ca2a2ce
commit 69cdb12cd1
13 changed files with 19 additions and 500 deletions

View File

@ -1,38 +0,0 @@
dracut: Implement ACPI table overriding
An example config file for this feature could be:
/etc/dracut.conf.d/03-acpi-override.conf
with this content:
acpi_override="yes"
acpi_table_dir="/etc/dracut.conf.d/acpi_tables"
Then all files ending with *.aml will be put into the early cpio
(kernel/firmware/acpi) and will be used to replace the BIOS provided tables
if the kernel supports this feature.
Signed-off-by: Thomas Renninger <trenn@suse.de>
Index: dracut-033/dracut.sh
===================================================================
--- dracut-033.orig/dracut.sh
+++ dracut-033/dracut.sh
@@ -1322,6 +1322,17 @@ if [[ $early_microcode = yes ]]; then
done
fi
+if [[ $acpi_override = yes ]] && [[ -d $acpi_table_dir ]]; then
+ dinfo "*** Packaging ACPI tables to override BIOS provided ones ***"
+ _dest_dir="$early_cpio_dir/d/kernel/firmware/acpi"
+ mkdir -p $_dest_dir
+ for table in $acpi_table_dir/*.aml; do
+ dinfo " Adding ACPI table: $table"
+ cp $table $_dest_dir
+ create_early_cpio="yes"
+ done
+fi
+
rm -f -- "$outfile"
dinfo "*** Creating image file ***"
if [[ $create_early_cpio = yes ]]; then

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ca2c1fa21efe9e11181b69fa915a1f6cb0b92ff92a9b4981052bd7ad07b83423
size 237200
oid sha256:8bd7c77c29bf7288465431f741f768dfd00a84f02129b0447cc0d6ef21d98e88
size 218040

View File

@ -1,3 +1,14 @@
-------------------------------------------------------------------
Mon Oct 7 08:58:00 UTC 2013 - trenn@suse.de
- Update to mainline git version 033, b7d1b6f904a5b0bdd9a5ad19149f3.
- Remove all patches which went mainline
- Fix missing root fs slash in lib/udev/rules.d resulting in:
/var/tmp/initramfs.Lusf6flib/udev/rules.d
- bcache: removed, it's in the upstream bcache-tools package
mainline git commit: 49268028b90f6344f79e3510d2
- Fix bad she-bang in mkinitrd_setup_dummy
-------------------------------------------------------------------
Fri Oct 4 17:23:19 UTC 2013 - tittiatcoke@gmail.com

View File

@ -44,28 +44,10 @@ Patch1: use_initrd_insteadof_initramfs.patch
Patch2: use_sysconfig_values_correctly.patch
# PATCH-FIX-OPENSUSE At the moment we have 2 paths that contain udev files (/lib/udev and /usr/lib/udev) - tittiatcoke@gmail.com
Patch3: use_all_paths_udev.patch
# PATCH-FIX-UPSTREAM ACPI early table override support in early cpio - trenn@suse.de
Patch4: generalize_early_cpio.patch
# PATCH-FIX-UPSTREAM Do not create early_cpio if no suitable microcode exists - trenn@suse.de
Patch5: microcode_cleanup.patch
# PATCH-FIX-UPSTREAM Implement ACPI table overriding - trenn@suse.de
Patch6: acpi_override.patch
# PATCH-FIX-OPENSUSE SUSE mkinitrd compatibility: Introduce -i -k parameters - trenn@suse.de
Patch7: mkinitrd_allow_no_option.patch
# PATCH-FIX-OPENSUSE SUSE mkinitrd compatibility: allow multiple arguments per param - trenn@suse.de
Patch8: mkinitrd_allow_multiple_args.patch
# PATCH-FIX-UPSTREAM Limit an output to essential one implementing --quiet option - trenn@suse.de
Patch9: quiet_options.patch
# PATCH-FIX-OPENSUSE SUSE mkinitrd compatibility: Allow a call w/o passing any parameters - trenn@suse.de
Patch10: implement_default.patch
# PATCH-FIX-OPENSUSE SUSE mkinitrd compatibility: add -d to pass rootfs and dummy -s - trenn@suse.de
Patch11: root_fs.patch
# PATCH-FIX-OPENSUSE Build host only images for default_kernel_images and -i/-k ones - trenn@suse.de
Patch12: suse_host_only.patch
# PATCH-FIX-OPENSUSE Write caller and used parameters to syslog if mkinitrd is called - trenn@suse.de
Patch13: suse_only_logger.patch
Patch4: suse_only_logger.patch
# PATCH-FIX-OPENSUSE Call the update-bootloader after dracut finished creating the initrd - tittiatcoke@gmail.com
Patch14: mkinitrd_update_bootloader.diff
Patch5: mkinitrd_update_bootloader.diff
BuildRequires: bash
BuildRequires: dash
@ -145,15 +127,6 @@ This package contains tools to assemble the local initrd and host configuration.
%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
%configure\
@ -324,8 +297,6 @@ rm -rf %{buildroot}
%dir %{dracutlibdir}/modules.d/03modsign
%{dracutlibdir}/modules.d/03modsign/load-modsign-keys.sh
%{dracutlibdir}/modules.d/03modsign/module-setup.sh
%dir %{dracutlibdir}/modules.d/90bcache
%{dracutlibdir}/modules.d/90bcache/module-setup.sh
%dir %{dracutlibdir}/modules.d/00bash
%{dracutlibdir}/modules.d/00bash/module-setup.sh
%config(noreplace) %{_sysconfdir}/logrotate.d/dracut

View File

@ -1,62 +0,0 @@
dracut: Generlize microcode early cpio usage
ACPI early table override also may need to place files into an early cpio.
Reflect this in variable and file names.
This change is renaming only and does not introduce any real change.
Signed-off-by: Thomas Renninger <trenn@suse.de>
Index: dracut-033/dracut.sh
===================================================================
--- dracut-033.orig/dracut.sh
+++ dracut-033/dracut.sh
@@ -696,9 +696,9 @@ readonly initdir="$(mktemp --tmpdir="$TM
}
if [[ $early_microcode = yes ]]; then
- readonly microcode_dir="$(mktemp --tmpdir="$TMPDIR/" -d -t early_microcode.XXXXXX)"
- [ -d "$microcode_dir" ] || {
- printf "%s\n" "dracut: mktemp --tmpdir=\"$TMPDIR/\" -d -t early_microcode.XXXXXX failed." >&2
+ readonly early_cpio_dir="$(mktemp --tmpdir="$TMPDIR/" -d -t early_cpio.XXXXXX)"
+ [ -d "$early_cpio_dir" ] || {
+ printf "%s\n" "dracut: mktemp --tmpdir=\"$TMPDIR/\" -d -t early_cpio.XXXXXX failed." >&2
exit 1
}
fi
@@ -707,7 +707,7 @@ trap '
ret=$?;
[[ $outfile ]] && [[ -f $outfile.$$ ]] && rm -f -- "$outfile.$$";
[[ $keep ]] && echo "Not removing $initdir." >&2 || { [[ $initdir ]] && rm -rf -- "$initdir"; };
- [[ $keep ]] && echo "Not removing $microcode_dir." >&2 || { [[ $microcode_dir ]] && rm -Rf -- "$microcode_dir"; };
+ [[ $keep ]] && echo "Not removing $early_cpio_dir." >&2 || { [[ $early_cpio_dir ]] && rm -Rf -- "$early_cpio_dir"; };
[[ $_dlogdir ]] && rm -Rf -- "$_dlogdir";
exit $ret;
' EXIT
@@ -1296,7 +1296,7 @@ if [[ $early_microcode = yes ]]; then
dinfo "*** Generating early-microcode cpio image ***"
ucode_dir=(amd-ucode intel-ucode)
ucode_dest=(AuthenticAMD.bin GenuineIntel.bin)
- _dest_dir="$microcode_dir/d/kernel/x86/microcode"
+ _dest_dir="$early_cpio_dir/d/kernel/x86/microcode"
_dest_idx="0 1"
mkdir -p $_dest_dir
if [[ $hostonly ]]; then
@@ -1316,14 +1316,15 @@ if [[ $early_microcode = yes ]]; then
fi
done
done
- (cd "$microcode_dir/d"; find . -print0 | cpio --null -o -H newc --quiet >../ucode.cpio)
+ create_early_cpio="yes"
fi
rm -f -- "$outfile"
dinfo "*** Creating image file ***"
-if [[ $early_microcode = yes ]]; then
+if [[ $create_early_cpio = yes ]]; then
# The microcode blob is _before_ the initramfs blob, not after
- mv $microcode_dir/ucode.cpio $outfile.$$
+ (cd "$early_cpio_dir/d"; find . -print0 | cpio --null -o -H newc --quiet >../early.cpio)
+ mv $early_cpio_dir/early.cpio $outfile.$$
fi
if ! ( umask 077; cd "$initdir"; find . -print0 | cpio --null -R 0:0 -H newc -o --quiet| \
$compress >> "$outfile.$$"; ); then

View File

@ -1,91 +0,0 @@
mkinitrd-dracut.sh: Allow mkinitrd call without passing any parameters
Before this gave a "usage" error.
Now boot_dir (by default /boot) is scanned for available kernels and sane
initrd default targets get defined and the corresponding initramfs files
are generated.
Signed-off-by: Thomas Renninger <trenn@suse.de>
Index: dracut-033/mkinitrd-dracut.sh
===================================================================
--- dracut-033.orig/mkinitrd-dracut.sh
+++ dracut-033/mkinitrd-dracut.sh
@@ -46,6 +46,67 @@ read_arg() {
fi
}
+# Taken over from SUSE mkinitrd
+default_kernel_images() {
+ local regex kernel_image kernel_version version_version initrd_image
+ local qf='%{NAME}-%{VERSION}-%{RELEASE}\n'
+
+ case "$(uname -m)" in
+ s390|s390x)
+ regex='image'
+ ;;
+ ppc|ppc64)
+ regex='vmlinux'
+ ;;
+ i386|x86_64)
+ regex='vmlinuz'
+ ;;
+ arm*)
+ regex='[uz]Image'
+ ;;
+ aarch64)
+ regex='Image'
+ ;;
+ *) regex='vmlinu.'
+ ;;
+ esac
+
+ # user mode linux
+ if grep -q UML /proc/cpuinfo; then
+ regex='linux'
+ fi
+
+ kernel_images=""
+ initrd_images=""
+ for kernel_image in $(ls $boot_dir \
+ | sed -ne "\|^$regex\(-[0-9.]\+-[0-9]\+-[a-z0-9]\+$\)\?|p" \
+ | grep -v kdump$ ) ; do
+
+ # Note that we cannot check the RPM database here -- this
+ # script is itself called from within the binary kernel
+ # packages, and rpm does not allow recursive calls.
+
+ [ -L "$boot_dir/$kernel_image" ] && continue
+ [ "${kernel_image%%.gz}" != "$kernel_image" ] && continue
+ kernel_version=$(/usr/bin/get_kernel_version \
+ $boot_dir/$kernel_image 2> /dev/null)
+ initrd_image=$(echo $kernel_image | sed -e "s|${regex}|initrd|")
+ if [ "$kernel_image" != "$initrd_image" -a \
+ -n "$kernel_version" -a \
+ -d "/lib/modules/$kernel_version" ]; then
+ kernel_images="$kernel_images $boot_dir/$kernel_image"
+ initrd_images="$initrd_images $boot_dir/$initrd_image"
+ fi
+ done
+ for kernel_image in $kernel_images;do
+ kernels="$kernels ${kernel_image#*-}"
+ done
+ for initrd_image in $initrd_images;do
+ targets="$targets $initrd_image"
+ done
+
+}
+
while (($# > 0)); do
case ${1%%=*} in
--with-usb) read_arg usbmodule "$@" || shift $?
@@ -124,7 +185,8 @@ while (($# > 0)); do
shift
done
-[[ $targets && $kernels ]] || usage
+[[ $targets && $kernels ]] || default_kernel_images
+[[ $targets && $kernels ]] || (error "No kernel found in $boot_dir" && usage)
# We can have several targets/kernels, transform the list to an array
targets=( $targets )

View File

@ -1,30 +0,0 @@
dracut: Do not create early_cpio if no suitable microcode exist in hostonly
case
Intel microcodes only exist for very specific family/model/stepping CPUs.
If no microcode gets added, there is no need to create an empty
(only directories) cpio later that gets glued to the initrd.
This also fixes:
Index: dracut-033/dracut.sh
===================================================================
--- dracut-033.orig/dracut.sh
+++ dracut-033/dracut.sh
@@ -1311,12 +1311,15 @@ if [[ $early_microcode = yes ]]; then
dinfo "*** Constructing ${ucode_dest[$idx]} ****"
if [[ $hostonly ]]; then
_src=$(get_ucode_file)
+ if ! [[ -r $_fwdir/$_fw/$_src ]];then
+ break;
+ fi
fi
cat $_fwdir/$_fw/$_src > $_dest_dir/${ucode_dest[$idx]}
+ create_early_cpio="yes"
fi
done
done
- create_early_cpio="yes"
fi
rm -f -- "$outfile"

View File

@ -1,88 +0,0 @@
mkinitrd-dracut.sh: Introduce -i -k parameters
In SUSE, one can pass a list of kernel files via -k parameter.
For each an initrd is generated as passed via -i parameters.
Make the dracut mkinitrd wrapper compatible to those.
For now only one kernel file and initrd target can be specified.
This will get enhanced with a follow-up patch.
Signed-off-by: Thomas Renninger <trenn@suse.de>
diff --git a/mkinitrd-dracut.sh b/mkinitrd-dracut.sh
old mode 100644
new mode 100755
index ffea2d1..ace7725
--- a/mkinitrd-dracut.sh
+++ b/mkinitrd-dracut.sh
@@ -1,6 +1,8 @@
#!/bin/bash --norc
kver=$(uname -r)
+boot_dir="/boot"
+
error() { echo "$@" >&2; }
usage () {
@@ -80,10 +82,27 @@ while (($# > 0)); do
--looppath*) ;;
--dsdt*) ;;
--bootchart) ;;
- *) if [[ ! $target ]]; then
- target=$1
- elif [[ ! $kernel ]]; then
- kernel=$1
+ -b) read_arg boot_dir "$@" || shift
+ if [ ! -d $boot_dir ];then
+ error "Boot directory $boot_dir does not exist"
+ exit 1
+ fi
+ ;;
+ -k) # Would be nice to get a list of images here
+ read_arg kernel_images "$@" || shift
+ for kernel_image in $kernel_images;do
+ kernels="$kernels ${kernel_image#*-}"
+ done
+ ;;
+ -i) read_arg initrd_images "$@" || shift
+ for initrd_image in $initrd_images;do
+ targets="$targets $boot_dir/$initrd_images"
+ done
+ ;;
+ *) if [[ ! $targets ]]; then
+ targets=$1
+ elif [[ ! $kernels ]]; then
+ kernels=$1
else
usage
fi;;
@@ -91,11 +110,24 @@ while (($# > 0)); do
shift
done
-[[ $target && $kernel ]] || usage
-[[ $img_vers ]] && target="$target-$kernel"
+[[ $targets && $kernels ]] || usage
+
+# We can have several targets/kernels, transform the list to an array
+targets=( $targets )
+[[ $kernels ]] && kernels=( $kernels )
-if [[ $basicmodules ]]; then
+for ((i=0 ; $i<${#targets[@]} ; i++)); do
+
+ if [[ $img_vers ]];then
+ target="${targets[$i]}-${kernels[$i]}"
+ else
+ target="${targets[$i]}"
+ fi
+ kernel="${kernels[$i]}"
+
+ if [[ $basicmodules ]]; then
dracut $dracut_args --add-drivers "$basicmodules" "$target" "$kernel"
-else
+ else
dracut $dracut_args "$target" "$kernel"
-fi
+ fi
+done

View File

@ -1,3 +1,3 @@
#/bin/bash
#!/bin/bash
true

View File

@ -1,61 +0,0 @@
mkinitrd-dracut.sh: Implement --quiet|-q option
Dracut is rather verbose. This optional parameter is to limit the output
to the essential: For each generated initrd show the kernel, target and
possibly additional options passed to dracut.
Signed-off-by: Thomas Renninger <trenn@suse.de>
diff --git a/mkinitrd-dracut.sh b/mkinitrd-dracut.sh
index d8e92f3..803abc0 100755
--- a/mkinitrd-dracut.sh
+++ b/mkinitrd-dracut.sh
@@ -2,6 +2,7 @@
kver=$(uname -r)
boot_dir="/boot"
+quiet=0
error() { echo "$@" >&2; }
@@ -89,6 +90,7 @@ while (($# > 0)); do
--looppath*) ;;
--dsdt*) ;;
--bootchart) ;;
+ --quiet|-q) quiet=1;;
-b) read_arg boot_dir "$@" || shift $?
if [ ! -d $boot_dir ];then
error "Boot directory $boot_dir does not exist"
@@ -128,6 +130,7 @@ done
targets=( $targets )
[[ $kernels ]] && kernels=( $kernels )
+echo "Creating: target|kernel|dracut args|basicmodules "
for ((i=0 ; $i<${#targets[@]} ; i++)); do
if [[ $img_vers ]];then
@@ -137,9 +140,21 @@ for ((i=0 ; $i<${#targets[@]} ; i++)); do
fi
kernel="${kernels[$i]}"
- if [[ $basicmodules ]]; then
- dracut $dracut_args --add-drivers "$basicmodules" "$target" "$kernel"
+ # Duplicate code: No way found how to redirect output based on $quiet
+ if [[ $quiet == 1 ]];then
+ echo "$target|$kernel|$dracut_args|$basicmodules"
+ if [[ $basicmodules ]]; then
+ dracut $dracut_args --add-drivers "$basicmodules" "$target" \
+ "$kernel" &>/dev/null
+ else
+ dracut $dracut_args "$target" "$kernel" &>/dev/null
+ fi
else
- dracut $dracut_args "$target" "$kernel"
+ if [[ $basicmodules ]]; then
+ dracut $dracut_args --add-drivers "$basicmodules" "$target" \
+ "$kernel"
+ else
+ dracut $dracut_args "$target" "$kernel"
+ fi
fi
done

View File

@ -1,31 +0,0 @@
mkinitrd-dracut.sh: Also allow -d to specify the root_fs and -s dummy
-d is the SUSE mkinitrd version option to pass the rootfs.
-s is to enable splash which may not be needed, but some callers rely on it,
not to return an error.
Make this wrapper compatible to it.
Signed-off-by: Thomas Renninger <trenn@suse.de>
Index: dracut-033/mkinitrd-dracut.sh
===================================================================
--- dracut-033.orig/mkinitrd-dracut.sh
+++ dracut-033/mkinitrd-dracut.sh
@@ -124,7 +124,7 @@ while (($# > 0)); do
--preload) read_arg modname "$@" || shift $?
basicmodules="$basicmodules $modname";;
--image-version) img_vers=yes;;
- --rootfs) read_arg rootfs "$@" || shift $?
+ --rootfs|-d) read_arg rootfs "$@" || shift $?
dracut_args="${dracut_args} --filesystems $rootfs";;
--nocompress) dracut_args="$dracut_args --no-compress";;
--help) usage -n;;
@@ -151,6 +151,7 @@ while (($# > 0)); do
--looppath*) ;;
--dsdt*) ;;
--bootchart) ;;
+ -s) ;;
--quiet|-q) quiet=1;;
-b) read_arg boot_dir "$@" || shift $?
if [ ! -d $boot_dir ];then

View File

@ -1,64 +0,0 @@
mkinitrd-dracut.sh: Build host images for default_kernel_images and -i/-k paths
default_kernel_images and -i/-k paths are new (SuSE) code paths and
would have resulted in usage errors before.
There we want to build host only images for faster building and
smaller images.
Also force creation (overriding) of initrd images in these code paths.
Signed-off-by: Thomas Renninger <trenn@suse.de>
diff --git a/mkinitrd-dracut.sh b/mkinitrd-dracut.sh
index f7b53f1..a1519ea 100755
--- a/mkinitrd-dracut.sh
+++ b/mkinitrd-dracut.sh
@@ -3,6 +3,8 @@ kver=$(uname -r)
boot_dir="/boot"
quiet=0
+host_only=0
+force=0
error() { echo "$@" >&2; }
@@ -104,7 +106,8 @@ default_kernel_images() {
for initrd_image in $initrd_images;do
targets="$targets $initrd_image"
done
-
+ host_only=1
+ force=1
}
while (($# > 0)); do
@@ -119,8 +122,8 @@ while (($# > 0)); do
--version)
echo "mkinitrd: dracut compatibility wrapper"
exit 0;;
- -v|--verbose) dracut_args="${dracut_args} -v";;
- -f|--force) dracut_args="${dracut_args} -f";;
+ -v|--verbose) dracut_args="${dracut_args} -v --keep";;
+ -f|--force) force=1;;
--preload) read_arg modname "$@" || shift $?
basicmodules="$basicmodules $modname";;
--image-version) img_vers=yes;;
@@ -164,6 +167,8 @@ while (($# > 0)); do
for kernel_image in $kernel_images;do
kernels="$kernels ${kernel_image#*-}"
done
+ host_only=1
+ force=1
;;
-i) read_arg initrd_images "$@" || shift $?
for initrd_image in $initrd_images;do
@@ -193,6 +198,9 @@ done
targets=( $targets )
[[ $kernels ]] && kernels=( $kernels )
+[[ $host_only == 1 ]] && dracut_args="${dracut_args} -H"
+[[ $force == 1 ]] && dracut_args="${dracut_args} -f"
+
echo "Creating: target|kernel|dracut args|basicmodules "
for ((i=0 ; $i<${#targets[@]} ; i++)); do

View File

@ -1,3 +1,5 @@
Index: dracut-033/dracut-functions.sh
===================================================================
--- dracut-033.orig/dracut-functions.sh
+++ dracut-033/dracut-functions.sh
@@ -872,7 +872,7 @@ inst_rules() {
@ -5,7 +7,7 @@
for _rule in "$@"; do
if [ "${_rule#/}" = "$_rule" ]; then
- for r in ${udevdir}/rules.d ${hostonly:+/etc/udev/rules.d}; do
+ for r in ${udevdir}/rules.d lib/udev/rules.d ${hostonly:+/etc/udev/rules.d}; do
+ for r in ${udevdir}/rules.d /lib/udev/rules.d ${hostonly:+/etc/udev/rules.d}; do
if [[ -e $r/$_rule ]]; then
_found="$r/$_rule"
inst_rule_programs "$_found"