dracut/mkinitrd_allow_no_option.patch
Raymond Wooninck 3210e44b88 Accepting request 201877 from home:trenn:dracut_test
- Add ACPI table override ability
- Adjust mkinitrd-dracut.sh to SUSE mkinitrd:
  <none> : Before gives a "usage" error -> now scans /boot for kernels
           and builds corresponding inirtrds for them
  -i -k  : Pass a list of kernels and initrd targets
           (not sure it was worth the hassle to be able to pass)
  -b     : Boot directory to search for kernel images
  -d     : Change root file system. Not tested whether dracut's behavior
           matches exactly what our mkinitrd does.
  -s     : Dummy (should even be obsolete in latest mkinitrd)
- Write caller and used parameters to syslog if mkinitrd is called.
  So that those can easily be fixed and checked for correctness.
  This should get reverted again before a bigger release.

OBS-URL: https://build.opensuse.org/request/show/201877
OBS-URL: https://build.opensuse.org/package/show/Base:System/dracut?expand=0&rev=56
2013-10-02 12:32:19 +00:00

89 lines
2.3 KiB
Diff

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