]> git.ipfire.org Git - thirdparty/dracut.git/blobdiff - mkinitrd-suse.sh
network-manager: remove useless use of basename
[thirdparty/dracut.git] / mkinitrd-suse.sh
index bc49d731f8956af91c26b1e9f992befd44ad587a..fd852e7177451b52750da35a98bce5683802b376 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/bash --norc
 #
-# mkinitrd compability wrapper for SUSE.
+# mkinitrd compatibility wrapper for SUSE.
 #
 # Copyright (c) 2013 SUSE Linux Products GmbH. All rights reserved.
 #
@@ -62,7 +62,7 @@ usage () {
     $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."
@@ -104,7 +104,7 @@ calc_netmask() {
     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 ))
@@ -145,31 +145,17 @@ is_xen_kernel() {
     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
 }
 
@@ -191,7 +177,7 @@ default_kernel_images() {
         arm*)
             regex='[uz]Image'
             ;;
-        aarch64)
+        aarch64|riscv64)
             regex='Image'
             ;;
         *)  regex='vmlinu.'
@@ -265,7 +251,7 @@ while (($# > 0)); do
            ;;
        -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=;;