Commit e36e7db9 authored by Jeremy Kerr's avatar Jeremy Kerr Committed by Thomas Petazzoni
Browse files

package/kexec-lite: Add a package for the kexec-lite tools



Kexec-lite is a tiny impementation of kexec for devicetree-based
platforms.

[Thomas:
- Add !BR2_PREFER_STATIC_LIB dependency, inherited from the dtc
  package
- Fix license to be GPLv2+, and not just GPL.
- Use $(TARGET_CONFIGURE_OPTS) instead of manually passing CC, LD,
  CFLAGS.
- Use a full path as the target of $(INSTALL)]

Signed-off-by: default avatarJeremy Kerr <jk@ozlabs.org>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent 994e9fa7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ menu "Debugging, profiling and benchmark"
	source "package/google-breakpad/Config.in"
	source "package/iozone/Config.in"
	source "package/kexec/Config.in"
	source "package/kexec-lite/Config.in"
	source "package/ktap/Config.in"
	source "package/latencytop/Config.in"
	source "package/lmbench/Config.in"
+17 −0
Original line number Diff line number Diff line
config BR2_PACKAGE_KEXEC_LITE
	bool "kexec-lite"
	depends on BR2_powerpc || BR2_powerpc64
	depends on !BR2_PREFER_STATIC_LIB # dtc
	select BR2_PACKAGE_LIBELF
	select BR2_PACKAGE_DTC
	select BR2_PACKAGE_DTC_PROGRAMS
	help
	  Kexec is a user space utiltity for loading another kernel
	  and asking the currently running kernel to do something with it.

	  This package is a tiny implementation of the kexec userspace
	  components, for devicetree-based platforms.

comment "kexec-lite needs a toolchain w/ dynamic library"
	depends on BR2_powerpc || BR2_powerpc64
	depends on BR2_PREFER_STATIC_LIB
+34 −0
Original line number Diff line number Diff line
From 0a654c20e1b9324c57ba4116b52fb6ab33847e1d Mon Sep 17 00:00:00 2001
From: Jeremy Kerr <jk@ozlabs.org>
Date: Thu, 8 Aug 2013 17:16:31 +0800
Subject: [PATCH] kexec: Implement clean restart for busybox init

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
---
 kexec.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kexec.c b/kexec.c
index 2edb7df..b2a0c42 100644
--- a/kexec.c
+++ b/kexec.c
@@ -27,6 +27,7 @@
 #include <fcntl.h>
 #include <errno.h>
 #include <syscall.h>
+#include <signal.h>
 #include <libfdt.h>
 #include <getopt.h>
 #include <sys/types.h>
@@ -818,7 +819,7 @@ int main(int argc, char *argv[])
 			sync();
 			exec_kexec();
 		} else {
-			execlp("shutdown", "shutdown", "-r", "now", NULL);
+			kill(1, SIGQUIT);
 		}
 
 		return -1;
-- 
1.7.10.4
+20 −0
Original line number Diff line number Diff line
################################################################################
#
# kexec-lite
#
################################################################################

KEXEC_LITE_VERSION = fb8543fea3beb0522b5a63a74ea1a845dbd7b954
KEXEC_LITE_SITE = $(call github,antonblanchard,kexec-lite,$(KEXEC_LITE_VERSION))
KEXEC_LITE_LICENSE = GPLv2+
KEXEC_LITE_DEPENDENCIES = libelf dtc

define KEXEC_LITE_BUILD_CMDS
	$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all
endef

define KEXEC_LITE_INSTALL_TARGET_CMDS
	$(INSTALL) -D -m 755 $(@D)/kexec $(TARGET_DIR)/usr/sbin/kexec
endef

$(eval $(generic-package))