diff options
author | Dave Reisner <dreisner@archlinux.org> | 2012-11-16 15:51:25 +0100 |
---|---|---|
committer | Dave Reisner <dreisner@archlinux.org> | 2012-11-24 00:01:34 +0100 |
commit | 70f54ce9e6898d0f28a6b1d2911eb82ce902d429 (patch) | |
tree | dbaf50a7d6b69f709736dbf44aee6452c4bfe022 | |
parent | 1fc9e188c81204d57715dfd2916737b3e824f43d (diff) | |
download | mkinitcpio-70f54ce9e6898d0f28a6b1d2911eb82ce902d429.tar.gz mkinitcpio-70f54ce9e6898d0f28a6b1d2911eb82ce902d429.tar.xz |
shutdown: copy kexec from host if requested and not available
Signed-off-by: Dave Reisner <dreisner@archlinux.org>
-rw-r--r-- | shutdown | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -50,10 +50,28 @@ disassemble() { done } +copy_binary_from_host() { + local bin=$1 + + # hardcode a sane PATH + for p in '/usr/sbin' '/usr/bin' '/sbin' '/bin'; do + if [ -e "/oldroot/$p/$bin" ]; then + cp "/oldroot/$p/$bin" "/usr/bin/$1" + return 0 + fi + done + + return 1 +} + # XXX: Discourage libdevmapper from thinking that udev # might be in a useful state. FS#30995. rm -rf /run/udev +if [ "$1" = kexec ] && ! command -v kexec >/dev/null; then + copy_binary_from_host kexec +fi + # chdir, so that we can avoid a lot of path chopping cd /sys/class/block |