summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2016-07-02 21:18:11 +0200
committerDave Reisner <dreisner@archlinux.org>2016-07-02 21:18:11 +0200
commitd73d34e017ecb0e89c2de8e39da6b14afd6c5f1c (patch)
treee28dcd95896506fab521243fa71a8aba0d455f97
parent14487ea9a6104c17b00c6fa7bcb65c617c7490c8 (diff)
downloadmkinitcpio-d73d34e017ecb0e89c2de8e39da6b14afd6c5f1c.tar.gz
mkinitcpio-d73d34e017ecb0e89c2de8e39da6b14afd6c5f1c.tar.xz
error out if asked to extract a kver from image on non-x86v20
Version extraction only works on x86 (i686 and x86_64) kernels. ref: https://bugs.archlinux.org/task/43256
-rw-r--r--man/mkinitcpio.8.txt5
-rwxr-xr-xmkinitcpio8
2 files changed, 10 insertions, 3 deletions
diff --git a/man/mkinitcpio.8.txt b/man/mkinitcpio.8.txt
index 05d71c4..2f1bb84 100644
--- a/man/mkinitcpio.8.txt
+++ b/man/mkinitcpio.8.txt
@@ -49,8 +49,9 @@ Options
*-k, \--kernel* 'kernelversion'::
Use 'kernelversion', instead of the current running kernel. This may be a
- path to a kernel image, a specific kernel version or the special keyword
- 'none'. In the latter case, no kernel modules are added to the image.
+ path to a kernel image (only supported for x86-based architectures), a specific
+ kernel version or the special keyword 'none'. In the latter case, no kernel
+ modules are added to the image.
*-L, \--listhooks*::
List all available hooks.
diff --git a/mkinitcpio b/mkinitcpio
index 713c4b4..3e550d3 100755
--- a/mkinitcpio
+++ b/mkinitcpio
@@ -85,7 +85,7 @@ cleanup() {
}
resolve_kernver() {
- local kernel=$1 offset kver
+ local kernel=$1 arch= offset kver
if [[ -z $kernel ]]; then
uname -r
@@ -97,6 +97,12 @@ resolve_kernver() {
return 0
fi
+ arch=$(uname -m)
+ if [[ $arch != @(i686|x86_64) ]]; then
+ error "kernel version extraction from image not supported for \`%s' architecture" "$arch"
+ return 1
+ fi
+
if [[ ! -e $kernel ]]; then
error "specified kernel image does not exist: \`%s'" "$kernel"
return 1