#!/bin/bash --norc
#
-# mkinitrd compability wrapper for SUSE.
+# mkinitrd compatibility wrapper for SUSE.
#
# Copyright (c) 2013 SUSE Linux Products GmbH. All rights reserved.
#
$cmd " /etc/sysconfig/kernel."
$cmd " -d root_device Root device. Defaults to the device from"
$cmd " which / is mounted. Overrides the rootdev"
- $cmd " enviroment variable if set."
+ $cmd " environment variable if set."
$cmd " -j device Journal device"
$cmd " -D interface Run dhcp on the specified interface."
$cmd " -I interface Configure the specified interface statically."
local prefix=$1
[ -z "$prefix" ] && return
- mask=$(echo "(2 ^ 32) - (2 ^ $prefix)" | bc -l)
+ mask=$(( 0xffffffff << (32 - $prefix) ))
byte1=$(( mask >> 24 ))
byte2=$(( mask >> 16 ))
byte3=$(( mask >> 8 ))
return
}
-# kernel_image_gz_from_image() and kernel_version_from_image() are helpers
-# for arm* kernels which produce zImage files which cannot be read from
-# get_kernel_version -> get rid of this workaround if possible
-kernel_image_gz_from_image() {
- local arch=$(uname -i)
- local r=${1}.gz
-
- # uImage kernels can't be extracted directly. Use the vmlinux.gz instead
- r=${r//uImage/vmlinux}
-
- # on ARM a zImage can't be extracted directly. Other platforms define it
- # as a gzipped vmlinux file, but not ARM. So only on ARM, use vmlinux.gz.
- if [[ $arch =~ arm ]] || [[ $arch =~ aarch ]]; then
- r=${r//zImage/vmlinux}
- fi
-
- echo $r
-}
-
kernel_version_from_image() {
- local kernel_image="$1" kernel_image_gz=$(kernel_image_gz_from_image "$1")
+ local dir="${1%/*}/"
+ [[ "$dir" != "$1" ]] || dir=""
+ local kernel_image="$1" kernel_image_gz="${dir}vmlinux-${1#*-}.gz"
+ echo kernel_image_gz="'$kernel_image_gz'" >&2
if get_kernel_version "$kernel_image" 2>/dev/null; then
return
fi
+
+ # As a last resort, try vmlinux-$version.gz, which might be around
get_kernel_version "$kernel_image_gz" 2>/dev/null
}
arm*)
regex='[uz]Image'
;;
- aarch64)
+ aarch64|riscv64)
regex='Image'
;;
*) regex='vmlinu.'
-k) # Would be nice to get a list of images here
read_arg kernel_images "$@" || shift $?
for kernel_image in $kernel_images;do
+ [ -L "/boot/$kernel_image" ] && kernel_image="$(readlink "/boot/$kernel_image")"
kernels="$kernels ${kernel_image#*-}"
done
;;
-i) read_arg initrd_images "$@" || shift $?
for initrd_image in $initrd_images;do
+ [ -L "/boot/$initrd_image" ] && initrd_image="$(readlink "/boot/$initrd_image")"
# Check if the initrd_image contains a path.
# if not, then add the default boot_dir
dname=`dirname $initrd_image`
;;
-M) read_arg map_file "$@" || shift $?
;;
- -A) host_only=0;;
+ -A) dracut_args="${dracut_args} --no-host-only";;
-B) skip_update_bootloader=1;;
-v|--verbose) dracut_args="${dracut_args} -v";;
-L) logfile=;;