diff options
author | Daniel Golle <daniel@makrotopia.org> | 2017-03-21 15:58:13 -0600 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2017-06-09 22:21:25 +0200 |
commit | 5e4bb476c0cc46dedc020a802f045d479e483857 (patch) | |
tree | 21fa856ca68582dd0225e6c700a4867661117fc3 /package/boot/kexec-tools/Makefile | |
parent | 8b486ec2b52056b737a4ce64a2040a9a27a6bd60 (diff) | |
download | upstream-5e4bb476c0cc46dedc020a802f045d479e483857.tar.gz upstream-5e4bb476c0cc46dedc020a802f045d479e483857.tar.bz2 upstream-5e4bb476c0cc46dedc020a802f045d479e483857.zip |
kexec-tools: bump version and add support for crashdump kernel
split kexec-tools into two packages, kexec and kdump.
* kexec to simply execute a new kernel
* kdump is for loading and collecting debris of a crashed kernel with
support for kdump forensics.
In order to properly support booting into a crashkernel, an init script
as well as UCI configuration has been added.
As modifying the kernel cmdline is required for this to work in x86
platforms use an uci-defaults script to modify /boot/grub/grub.cfg.
To test collecting crash information, use the 'c' sysrq-trigger, ie.
echo c > /proc/sysrq-trigger
This should result in the crash kernel being executed and (depending
on the configution) dmesg and/or vmcore getting saved.
To check if the crash kernel was loaded properly, use the 'status'
command of the kdump init script.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Diffstat (limited to 'package/boot/kexec-tools/Makefile')
-rw-r--r-- | package/boot/kexec-tools/Makefile | 80 |
1 files changed, 64 insertions, 16 deletions
diff --git a/package/boot/kexec-tools/Makefile b/package/boot/kexec-tools/Makefile index ecd2a6ea11..1c686a2540 100644 --- a/package/boot/kexec-tools/Makefile +++ b/package/boot/kexec-tools/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=kexec-tools -PKG_VERSION:=2.0.14-rc1 +PKG_VERSION:=2.0.14 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/linux/utils/kernel/kexec -PKG_HASH:=3fc505ff8d8a2d24c68aac5e6b4783997d5a086966ff3de8b05a0ceb27e5e23b +PKG_HASH:=ffb2e7e99d9d08754c6bc1922aed3c000094f318665d82a72ecc76c4ff1c0dc6 PKG_FIXUP:=autoreconf @@ -21,22 +21,49 @@ PKG_CONFIG_DEPENDS := CONFIG_KEXEC_ZLIB CONFIG_KEXEC_LZMA include $(INCLUDE_DIR)/package.mk -define Package/kexec-tools +define Package/kexec-tools/Default SECTION:=utils CATEGORY:=Utilities - DEPENDS:=@armeb||@arm||@i386||@x86_64||@powerpc64||@mipsel||@mips +KEXEC_ZLIB:zlib +KEXEC_LZMA:liblzma - TITLE:=Kernel boots kernel URL:=http://kernel.org/pub/linux/kernel/people/horms/kexec-tools/ MAINTAINER:=Florian Fainelli <florian@openwrt.org> - MENU:=1 +endef + +define Package/kexec-tools + $(call Package/kexec-tools/Default) + TITLE:=kexec-tools transition meta package + DEPENDS:=+kexec endef define Package/kexec-tools/description - kexec is a set of systems call that allows you to load + kexec is a set of system calls that allows you to load another kernel from the currently executing Linux kernel. + The kexec utility allows to load and boot another kernel. endef -define Package/kexec-tools/config +define Package/kexec + $(call Package/kexec-tools/Default) + TITLE:=Kernel boots kernel + DEPENDS:=\ + @armeb||@arm||@i386||@x86_64||@powerpc64||@mipsel||@mips \ + +KEXEC_ZLIB:zlib +KEXEC_LZMA:liblzma @KERNEL_KEXEC +endef + +define Package/kexec/description + The kexec utility allows to load and boot another kernel. +endef + +define Package/kdump + $(call Package/kexec-tools/Default) + TITLE:=Kernel crash analysis + DEPENDS:=+kexec @i386||@x86_64||@arm @KERNEL_CRASH_DUMP +endef + +define Package/kdump/description + The kdump package allows to automatically boot into a + special kernel for analyzing kernel crashes using kdump. +endef + +define Package/kexec/config source "$(SOURCE)/Config.in" endef @@ -65,24 +92,45 @@ CONFIGURE_VARS += \ BUILD_CC="$(HOSTCC)" \ TARGET_CC="$(TARGET_CC)" -kexec-extra-sbin-$(CONFIG_KEXEC_TOOLS_kdump) += kdump - define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)" all install endef define Package/kexec-tools/install + : +endef + +define Package/kexec/install $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) \ - $(addprefix $(PKG_INSTALL_DIR)/usr/sbin/, \ - $(kexec-extra-sbin-y)) \ - $(kexec-extra-bin-y) \ - $(PKG_INSTALL_DIR)/usr/sbin/kexec \ - $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/kexec $(1)/usr/sbin # make a link for compatability with other distros $(INSTALL_DIR) $(1)/sbin $(LN) ../usr/sbin/kexec $(1)/sbin/kexec endef +define Package/kdump/install + $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/config $(1)/etc/uci-defaults + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/kdump $(PKG_INSTALL_DIR)/usr/sbin/vmcore-dmesg $(1)/usr/sbin + $(INSTALL_BIN) ./files/kdump.init $(1)/etc/init.d/kdump + $(INSTALL_BIN) ./files/kdump.defaults $(1)/etc/uci-defaults/kdump + $(INSTALL_CONF) ./files/kdump.config $(1)/etc/config/kdump +endef + +define Package/kdump/prerm +#!/bin/sh + +case $$(uname -m) in + i?86|x86_64) + if grep -q " crashkernel=" /boot/grub/grub.cfg; then + mount /boot -o remount,rw + sed -i 's/ crashkernel=[^ ]*//' /boot/grub/grub.cfg + mount /boot -o remount,ro + fi + ;; +esac +endef + $(eval $(call BuildPackage,kexec-tools)) +$(eval $(call BuildPackage,kexec)) +$(eval $(call BuildPackage,kdump)) |