summaryrefslogtreecommitdiff
path: root/sys-apps/kexec-tools
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/kexec-tools')
-rw-r--r--sys-apps/kexec-tools/Manifest11
-rw-r--r--sys-apps/kexec-tools/files/kexec-auto-load95
-rw-r--r--sys-apps/kexec-tools/files/kexec.conf42
-rw-r--r--sys-apps/kexec-tools/files/kexec.conf-2.0.46
-rw-r--r--sys-apps/kexec-tools/files/kexec.service4
-rw-r--r--sys-apps/kexec-tools/kexec-tools-2.0.29-r1.ebuild (renamed from sys-apps/kexec-tools/kexec-tools-2.0.29.ebuild)17
-rw-r--r--sys-apps/kexec-tools/kexec-tools-9999.ebuild17
7 files changed, 141 insertions, 51 deletions
diff --git a/sys-apps/kexec-tools/Manifest b/sys-apps/kexec-tools/Manifest
index afc11dcf6de7..3241fab5bdf2 100644
--- a/sys-apps/kexec-tools/Manifest
+++ b/sys-apps/kexec-tools/Manifest
@@ -1,15 +1,16 @@
AUX 90_kexec 199 BLAKE2B 37bcd66beccc32a884b0c2fca9cbba14784b8e6bc7238c14397f0ded788b503df1f7d6fff01c9b9a6bc159c1a6e01821c4c78c144091a7e13bb2bbe88ab5a98c SHA512 31837eb7df9b5c9b63c5f500e55fb584e315ac20f328490ff812a265f1a01604724bf4699f142255f7c5fa78cb2d8f2d6220a91961ac90df644b5d545d47ca39
AUX README.Gentoo 937 BLAKE2B 88a8912015e1cab0d382661d6bdc82689c91970d6d84c949e99a932b4d153b0753183380930b753d23d1c40ab7f44cae784f716e54bc3609a28741ab0b5b1348 SHA512 f082763692def43a97866b88443daf08a2bc1b0dccdc90160d12effa16e1293d8db6935c72ca9dd5502f844078241cbecdfde15b6e8f67a2cca8f3e89f14e654
+AUX kexec-auto-load 2452 BLAKE2B dc75b0cf23eae20868b80871e62385bd5ff4788ee8c7867d8c94c84aced59bc287a01e8863fbeb008c33ad21f1757d813f3eee1166a84916874c5cdf70d15aed SHA512 50deeb14f0fe0377281978f295cb4d04ebfc82627b051edde8e46b3a89107212adac1026b6226df1cba98ff60170f25af83b674d888ec9121a7ed0fe69c14db7
AUX kexec-r2.init 4061 BLAKE2B 40e0f89db9a1b95c8b389e093aee055402ca6ac450344c53de4e6e44127020bb51d33b41f4ec4a749303cbd67f873088aff151599c046f4fcb268da9397baa83 SHA512 9974ec312647dce2213bfaa80820ebf1571ce4d95daa8668a0626444e7d768a2dddc984f1a3b79df956b870e99e2f82ae970f11fc146baf7926fec45048a9e7c
AUX kexec-tools-2.0.28-binutils-2.42-x86_64.patch 2729 BLAKE2B 0f4f9cbf1f54310c4518afef6d0304cb2dd73f23b17975d4f5c5fd6d8393b32d60221daac6b60b58f0344a32c3cfebace282400f5545037f29c65c53436ffe83 SHA512 ad8c35b64361f44b8b6a28404c4eaef4701f3f4af9f3a76d22d90fa61d53f3d65cd769a9b996b4daee3e2e627b35bf7fff3b06274ae63b415a7181c08c4cfd25
AUX kexec-tools-2.0.4-disable-kexec-test.patch 473 BLAKE2B ad62ae055cd4443ee4dcb4d9a5be1c918a9e1337545f60c683a1a47b848020d0f8fbdc38c7111e505424783191faf3e221ffa642169d2d055d5e17e6b19b9d0d SHA512 c7fe9176db7c3f9c84add1c263c5a695684bf1db55d47152534f0bbb97c084ad5d3f2090307d0bdfcf5622fa810aca3c104f81b3d24baa76f42d3f32d1d4bbad
AUX kexec-tools-2.0.4-out-of-source.patch 816 BLAKE2B 88dc0a8f01c65a32b6ae081ea222760845fe243aad1057e3620ed4c932a32edebf943f9557b2f67751bbcea1f91778c0c065e246d419d5725eb68edcb1e58ced SHA512 4839800f99e2bdb7dfbf3aa1f3ad795feb63b4e493812a50d4baa839a27b5e96319c4e848969cbcedf627a32ed5fbfb312461c2ac89b73daaa7f8f680f35f504
-AUX kexec.conf 340 BLAKE2B a65aa0f402c712c10f6095b37b620dacfe883ad621f5403d8190febf582f3ab7e8b821091321036bff104ee5cebab21062830c774778ca17a34a2df76065cfb8 SHA512 66beb57ee13dba70f75f12326643270a0c888e178fdfca8ba7a566a874707aebe2afebb6ceae976dfb0aaf3135048daad6277e70580e4c7911b9ddbf74e4f00a
-AUX kexec.conf-2.0.4 1013 BLAKE2B 7594bf8c150d1165f30449526b658c78feab82526e649aa8cce35b6a47b2abd5a208b7ae4376f0330ea2194ae63f786bf0c30682f734f1b604be131e6e63570e SHA512 96db2834454aa4d038061e9b1f918932da3d3054021487425d0f70c6ad32096b9433ae2f3921e83196b23af901c32e591df3d6a84a6d14e064608d8ad895a599
-AUX kexec.service 407 BLAKE2B 7854172c36f550fece58b6cb351a6bd8b4ab8b5a11da0fd629048f8cc2866baa11ee7311424f998360f02dc2c1210be32222283c2bd2f93e1bf4bf65ec903203 SHA512 9f0fa6d39c67048fe774fee0f2e8ed10e9e12a2468e7dda193cd8c5bd8b4cf49819d14703efad35c91265cd4e03c6f5460934b5fe92efd06eab8dc619920b1e3
+AUX kexec.conf 850 BLAKE2B 7adca88e0cc1fb57b32b84753e093f6553c0a33e3b96751081c346ec6c97d485567a7b19482364f928450ae3bf76c0ad886935f6934416e05cb3c41efbfd4407 SHA512 9f19446a88cc3bdb2abcc8c2a11185f3d7fd19649fdae1eea43da33d3eac3bc08f4b80ba0d2ac90d6a83197dc4cd6a9078b21ae65e3daf97d6680fa316417dbc
+AUX kexec.conf-2.0.4 1004 BLAKE2B d781228b53f2e2d0b8cf54cc40ae0487078851820a3da9a4bbbfb1b1941dac18e829736c05570fe7159a85726fe12cf9da714f6c30a75f43f533de8c077cc44b SHA512 ebe3aef5321b53b6bb4ddb7fe4ad8e16edf3e0cd09418cb31bce82e3e594758b3101d297d34925b11f5c9c41c7be7b025cb78f446d80b1e1349779e6883f06ce
+AUX kexec.service 355 BLAKE2B 90ba7fe6af6db107821acd61679e29db44e180d768624a6b5e3817ff0850dfa96c01ab701adbd13ca17c81b34b7b83b3267e052e6149e7cabdac0c800d382d52 SHA512 2b9bb9c8b250cdf7c2b519b76d6dee2d68ddd02f3b04c2b6f912def8864c5024a89d27ce236c6d8a49f605889b5afd73fe5b803870b810ad432daac800b0f123
DIST kexec-tools-2.0.28.tar.xz 312524 BLAKE2B b2ab25c632cd2bad21751940acee1816f9cd930e1bb5af1052f9f6c4979dcd62d82c487a88fa8015e3ce7c843de9f47a3f6ccf7efa9270b5f24c79ba30a82a91 SHA512 889a7bf1d26bb309e4ff7ce1c8dbcf48c01e47221ea3acf1c4ef2a98a652c496e31bddcdb627d3adebd85f7541d1fb9122c60e741e10b3726e31a9733cadc753
DIST kexec-tools-2.0.29.tar.xz 314576 BLAKE2B 3cb94015d0bcd8ab13f25e23835758fc305093c4d1a81c590830ced852e61da66321617f04bda847e26c95ec44bd101eb235fa1d34f397e22ed4e80426efa162 SHA512 4c9e0b3df47b240f0eac2c31e8b515465f626ce043f64daa32b0b032d7132e54dada5d70875dab256345f66cf94a25dc3c160a9009ba60addd8dcb1e5205f5ca
EBUILD kexec-tools-2.0.28.ebuild 3518 BLAKE2B eb7f52ad884eb38b72a710c8602bd7b006fb18a331aed5a755fe0365a3620750950ccbaea30780220f0017f0e9f5648dfa25f1f21eac2c837a2fc32f5dcf411a SHA512 dff2e7b8a8d3c8d907b8eaafe07dc7945d9b82e0b4c14e1d5f04b02984eefeebed934037b0d4f0ebb97d33c6340e08c7eb0fe91ec352a00da5728c17e58fe4c7
-EBUILD kexec-tools-2.0.29.ebuild 3452 BLAKE2B 28b70b151f561b1938c85cb7547e2308a4fdf909ac6c887ac142d30d5749312b328852c6687e3ba367858df7f134950775a2b421559ac31de96605d36a83ae92 SHA512 6509525f7497809b7efc67e9c635d9d2dcb8c482878f0b4eaca642a91475a06bfe334171bb241a914309ced7fd88fc2203cb481ae8fa4b101ad42b2ca5dd08dc
-EBUILD kexec-tools-9999.ebuild 3452 BLAKE2B 28b70b151f561b1938c85cb7547e2308a4fdf909ac6c887ac142d30d5749312b328852c6687e3ba367858df7f134950775a2b421559ac31de96605d36a83ae92 SHA512 6509525f7497809b7efc67e9c635d9d2dcb8c482878f0b4eaca642a91475a06bfe334171bb241a914309ced7fd88fc2203cb481ae8fa4b101ad42b2ca5dd08dc
+EBUILD kexec-tools-2.0.29-r1.ebuild 3067 BLAKE2B 258beed0944b126b8661fff1611eea007d70a34b25bedfd9d5dca9397f072f5d37fdd28458f0988640c7754a8ef5caf866a3d1d70b04bbfff782031c6be2ea39 SHA512 08a147d3dda6486eb2285a41763ade50d00e5d96882149820aee1015d1ec21f3078052759346ea9c57532e5ad41f8a4d95f91af975ea4e3535f2413a980debda
+EBUILD kexec-tools-9999.ebuild 3067 BLAKE2B 258beed0944b126b8661fff1611eea007d70a34b25bedfd9d5dca9397f072f5d37fdd28458f0988640c7754a8ef5caf866a3d1d70b04bbfff782031c6be2ea39 SHA512 08a147d3dda6486eb2285a41763ade50d00e5d96882149820aee1015d1ec21f3078052759346ea9c57532e5ad41f8a4d95f91af975ea4e3535f2413a980debda
MISC metadata.xml 845 BLAKE2B c2e80468e673bd35bbe6c6dd63d6c95941d15e8671c29b9bee1be84b4735b89db861a17e2c7e2b80790e49a6586f9fe791e42523a25011a8074de0ef22b33070 SHA512 4a5165c6456d53f56855b4d701d6e4f8697995d66f4aa0c88ef03bc62432897e6261626b408d146f684c59bc1f619fa5a4f543e4d4ea6c3a93cdf3f9ff0915e8
diff --git a/sys-apps/kexec-tools/files/kexec-auto-load b/sys-apps/kexec-tools/files/kexec-auto-load
new file mode 100644
index 000000000000..62c828fd1c3d
--- /dev/null
+++ b/sys-apps/kexec-tools/files/kexec-auto-load
@@ -0,0 +1,95 @@
+#!/usr/bin/env bash
+
+# Defaults
+LAYOUT=compat
+BOOTPART=/boot
+KNAME=kernel
+INITRD=initramfs.img
+
+instkern_state=/var/lib/misc/installkernel
+if [[ -s ${instkern_state} ]]; then
+ # If we have a log file, set defaults from there.
+ IFS=$'\t' read -r -a LastKernArray <<< "$(tail -n1 ${instkern_state})"
+ LAYOUT="${LastKernArray[4]}"
+ BOOTPART="${LastKernArray[7]}"
+ KNAME="${LastKernArray[8]}"
+ if [[ "${LastKernArray[9]}" != unknown && ${LAYOUT} != uki ]]; then
+ INITRD="${LastKernArray[9]}"
+ else
+ INITRD=
+ fi
+fi
+
+if [[ ${LAYOUT} == uki ]]; then
+ echo "WARNING: kexec currently does not support UKIs"
+ KPARAM=
+else
+ if [[ -f /etc/kernel/cmdline ]]; then
+ KPARAM="$(tr -s "${IFS}" ' ' </etc/kernel/cmdline)"
+ elif [[ -f /usr/lib/kernel/cmdline ]]; then
+ KPARAM="$(tr -s "${IFS}" ' ' </usr/lib/kernel/cmdline)"
+ else
+ KPARAM=
+ fi
+fi
+
+
+# /etc/kexec.conf overrides installkernel.log
+kexec_conf=/etc/kexec.conf
+if [[ -f ${kexec_conf} ]]; then
+ source ${kexec_conf}
+fi
+
+if [[ -z ${DONT_MOUNT_BOOT} ]]; then
+ # Borrowed from mount-boot-utils.eclass
+ # note that /dev/BOOT is in the Gentoo default /etc/fstab file
+ fstabstate=$(awk "!/^[[:blank:]]*#|^\/dev\/BOOT/ && \$2 == \"${BOOTPART}\" \
+ { print 1; exit }" /etc/fstab || die "awk failed")
+
+ if [[ -z ${fstabstate} ]]; then
+ echo "Assuming you do not have a separate ${BOOTPART} partition."
+ else
+ procstate=$(awk "\$2 == \"${BOOTPART}\" { split(\$4, a, \",\"); \
+ for (i in a) if (a[i] ~ /^r[ow]\$/) { print a[i]; break }; exit }" \
+ /proc/mounts || die "awk failed")
+
+ if [[ -z ${procstate} ]]; then
+ echo "ERROR: Your ${BOOTPART} partition is not mounted"
+ exit 1
+ fi
+ fi
+fi
+
+if [[ ! -d ${BOOTPART} ]]; then
+ echo "ERROR: BOOTPART=${BOOTPART} not found"
+ exit 1
+fi
+
+KEXEC_ARGS=()
+
+if [[ -f ${BOOTPART}/${KNAME} ]]; then
+ KEXEC_ARGS+=( --load "${BOOTPART}/${KNAME}" )
+else
+ echo "ERROR: KNAME=${KNAME} not found"
+ exit 1
+fi
+
+if [[ -n ${INITRD} ]]; then
+ if [[ -f ${BOOTPART}/${INITRD} ]]; then
+ KEXEC_ARGS+=( --initrd "${BOOTPART}/${INITRD}" )
+ else
+ echo "WARNING: INITRD=${INITRD} not found"
+ fi
+fi
+
+if [[ -n ${KPARAM} ]]; then
+ KEXEC_ARGS+=( --command-line "${KPARAM}" )
+elif [[ ! -f /etc/kernel/cmdline && ! -f /usr/lib/kernel/cmdline ]]; then
+ # If it is still empty and we did not intentionally set it empty then reuse.
+ KEXEC_OPT_ARGS+=" --reuse-cmdline "
+fi
+
+KEXEC_ARGS+=( ${KEXEC_OPT_ARGS} )
+
+echo "Calling kexec with arguments: ${KEXEC_ARGS[@]}"
+exec kexec "${KEXEC_ARGS[@]}"
diff --git a/sys-apps/kexec-tools/files/kexec.conf b/sys-apps/kexec-tools/files/kexec.conf
index aa829b9c2349..34161117ec8f 100644
--- a/sys-apps/kexec-tools/files/kexec.conf
+++ b/sys-apps/kexec-tools/files/kexec.conf
@@ -1,16 +1,32 @@
-# Kernel image pathname, relative from /boot.
-KNAME="bzimage"
+# Kernel image partition.
+# Default: partition that last kernel image was installed on
+#BOOTPART="/boot"
+
+# Path to (unified) kernel image, relative to BOOTPART.
+# Default: last installed kernel image
+#KNAME="kernel"
+
+# Path to the initramfs image, relative to BOOTPART
+# Default: initramfs belonging to last kernel image, if any
+#INITRD="initramfs.img"
+
+# Kernel cmdline to use,
+# Default: contents of {/etc,/usr/lib}/kernel/cmdline if exists, otherwise --reuse-cmdline is used
+#KPARAM="quiet"
+
+# Additional arguments passed to kexec
+#KEXEC_OPT_ARGS=""
+
+# Do not try to mount /boot
+#DONT_MOUNT_BOOT="yes"
-# Additional arguments passed to kexec (8)
-# Following arguments are support:
-#
-# --reuse-cmdline
-# Use the current boot command line
-#
-# --command-line=string
-# Use a different command line
#
-# --initrd=file
-# Specify an initrd to use
+# The below is currently used by the OpenRC script only
#
-KEXEC_OPT_ARGS="--reuse-cmdline"
+
+# Load kexec kernel image into memory during shutdown instead of bootup
+# (default: yes)
+#LOAD_DURING_SHUTDOWN="yes"
+
+# Root partition (should be autodetected)
+#ROOTPART="/dev/hda3"
diff --git a/sys-apps/kexec-tools/files/kexec.conf-2.0.4 b/sys-apps/kexec-tools/files/kexec.conf-2.0.4
index b71ea2bae97f..215acca19d7a 100644
--- a/sys-apps/kexec-tools/files/kexec.conf-2.0.4
+++ b/sys-apps/kexec-tools/files/kexec.conf-2.0.4
@@ -13,12 +13,12 @@
#ROOTPART="/dev/hda3"
# Kernel image pathname, relative from BOOTPART.
-# If it's one of
+# If it's one of
# {kernel-genkernel,bzImage,vmlinuz,kernel}-<currently running kernel version>,
# or bzImage, vmlinuz (without suffix),
# then it's automaticaly detected.
# Setting it to "-" will disable kexec.
-#KNAME="vmlinuz-3.9.0"
+#KNAME="kernel"
# Initrd
# Same automatic detection restriction as for KNAME apply.
@@ -31,4 +31,4 @@
#KPARAM="splash=silent,theme:emergence"
# Do not try to mount /boot
-# DONT_MOUNT_BOOT="yes"
+#DONT_MOUNT_BOOT="yes"
diff --git a/sys-apps/kexec-tools/files/kexec.service b/sys-apps/kexec-tools/files/kexec.service
index 289aae0df0b1..ce9adf0e5da2 100644
--- a/sys-apps/kexec-tools/files/kexec.service
+++ b/sys-apps/kexec-tools/files/kexec.service
@@ -9,8 +9,8 @@ ConditionPathExists=!/nokexec
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/kexec.conf
-ExecStart=/usr/sbin/kexec -l /boot/${KNAME} ${KEXEC_OPT_ARGS}
-ExecStop=/usr/sbin/kexec -l /boot/${KNAME} ${KEXEC_OPT_ARGS}
+ExecStart=/usr/sbin/kexec-auto-load
+ExecStop=/usr/sbin/kexec-auto-load
[Install]
WantedBy=multi-user.target
diff --git a/sys-apps/kexec-tools/kexec-tools-2.0.29.ebuild b/sys-apps/kexec-tools/kexec-tools-2.0.29-r1.ebuild
index bedde55d9615..761057097d28 100644
--- a/sys-apps/kexec-tools/kexec-tools-2.0.29.ebuild
+++ b/sys-apps/kexec-tools/kexec-tools-2.0.29-r1.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-inherit libtool linux-info optfeature systemd
+inherit libtool linux-info systemd
if [[ ${PV} == "9999" ]] ; then
inherit git-r3 autotools
@@ -92,24 +92,16 @@ src_install() {
dodoc "${FILESDIR}"/README.Gentoo
newinitd "${FILESDIR}"/kexec-r2.init kexec
- newconfd "${FILESDIR}"/kexec.conf-2.0.4 kexec
insinto /etc
doins "${FILESDIR}"/kexec.conf
+ dosym ../kexec.conf /etc/conf.d/kexec
- insinto /etc/kernel/postinst.d
- doins "${FILESDIR}"/90_kexec
-
+ dosbin "${FILESDIR}"/kexec-auto-load
systemd_dounit "${FILESDIR}"/kexec.service
}
pkg_postinst() {
- if systemd_is_booted || has_version sys-apps/systemd; then
- elog "For systemd support the new config file is"
- elog " /etc/kexec.conf"
- elog "Please adopt it to your needs as there is no autoconfig anymore"
- fi
-
local n_root_args=$(grep -o -- '\<root=' /proc/cmdline 2>/dev/null | wc -l)
local has_rootpart_set=no
if [[ -f "${EROOT}/etc/conf.d/kexec" ]]; then
@@ -125,7 +117,4 @@ pkg_postinst() {
ewarn "in case running system and initramfs do not agree on detected"
ewarn "root device name!"
fi
-
- optfeature "automatically updating /etc/kexec.conf on each kernel installation" \
- "sys-kernel/installkernel[-systemd]"
}
diff --git a/sys-apps/kexec-tools/kexec-tools-9999.ebuild b/sys-apps/kexec-tools/kexec-tools-9999.ebuild
index bedde55d9615..761057097d28 100644
--- a/sys-apps/kexec-tools/kexec-tools-9999.ebuild
+++ b/sys-apps/kexec-tools/kexec-tools-9999.ebuild
@@ -3,7 +3,7 @@
EAPI=8
-inherit libtool linux-info optfeature systemd
+inherit libtool linux-info systemd
if [[ ${PV} == "9999" ]] ; then
inherit git-r3 autotools
@@ -92,24 +92,16 @@ src_install() {
dodoc "${FILESDIR}"/README.Gentoo
newinitd "${FILESDIR}"/kexec-r2.init kexec
- newconfd "${FILESDIR}"/kexec.conf-2.0.4 kexec
insinto /etc
doins "${FILESDIR}"/kexec.conf
+ dosym ../kexec.conf /etc/conf.d/kexec
- insinto /etc/kernel/postinst.d
- doins "${FILESDIR}"/90_kexec
-
+ dosbin "${FILESDIR}"/kexec-auto-load
systemd_dounit "${FILESDIR}"/kexec.service
}
pkg_postinst() {
- if systemd_is_booted || has_version sys-apps/systemd; then
- elog "For systemd support the new config file is"
- elog " /etc/kexec.conf"
- elog "Please adopt it to your needs as there is no autoconfig anymore"
- fi
-
local n_root_args=$(grep -o -- '\<root=' /proc/cmdline 2>/dev/null | wc -l)
local has_rootpart_set=no
if [[ -f "${EROOT}/etc/conf.d/kexec" ]]; then
@@ -125,7 +117,4 @@ pkg_postinst() {
ewarn "in case running system and initramfs do not agree on detected"
ewarn "root device name!"
fi
-
- optfeature "automatically updating /etc/kexec.conf on each kernel installation" \
- "sys-kernel/installkernel[-systemd]"
}