# check for EFI support or try to enable it {{{
efi_support() {
- if lsmod | grep -q efivars ; then
+ local efivars_loaded=false
+ if modprobe efivars &>/dev/null ; then
+ efivars_loaded=true
+ fi
+
+ if [ -d /sys/firmware/efi ] ; then
einfo "EFI support detected." ; eend 0
return 0
fi
- if modprobe efivars &>/dev/null ; then
- einfo "EFI support enabled now." ; eend 0
- return 0
+ if ! [ -d /sys/firmware/efi ] && [ "${efivars_loaded:-}" = "true" ] ; then
+ einfo "EFI support detected, but system seems to be running in BIOS mode."
fi
return 1
fi
if [ -n "${SSHCOPYID}" ] ; then
+ AUTHORIZED_KEYS_SOURCE=${AUTHORIZED_KEYS_SOURCE:-$HOME/.ssh/authorized_keys}
+ AUTHORIZED_KEYS_TARGET=${AUTHORIZED_KEYS_TARGET:-$MNTPOINT/root/.ssh/}
if ssh-add -L >/dev/null 2>&1 ; then
einfo "Use locally available public keys to authorise root login on the target system as requested via --sshcopyid option."
mkdir -p "${MNTPOINT}"/root/.ssh
eend 1
bailout 1
fi
+ elif [ -f "$AUTHORIZED_KEYS_SOURCE" ]; then
+ einfo "copying '$AUTHORIZED_KEYS_SOURCE' to '$AUTHORIZED_KEYS_TARGET' as requested via --sshcopyid option."
+ mkdir -p "$AUTHORIZED_KEYS_TARGET"
+ chmod 0700 "$AUTHORIZED_KEYS_TARGET"
+ if cp "$AUTHORIZED_KEYS_SOURCE" "$AUTHORIZED_KEYS_TARGET" ; then
+ eend 0
+ else
+ eerror "Error: copying '$AUTHORIZED_KEYS_SOURCE' to '$AUTHORIZED_KEYS_TARGET' failed"
+ eend 1
+ bailout 1
+ fi
else
eerror "Error: Could not open a connection to your authentication agent or the agent has no identities."
eend 1
AUTHORIZED_KEYS_TARGET="${MNTPOINT}/root/.ssh/"
einfo "Copying '${AUTHORIZED_KEYS_SOURCE}' to '${AUTHORIZED_KEYS_TARGET}' as requested via --sshcopyauth option."
- mkdir -m 0700 -p "${AUTHORIZED_KEYS_TARGET}"
+ mkdir -p "${AUTHORIZED_KEYS_TARGET}"
+ chmod 0700 "${AUTHORIZED_KEYS_TARGET}"
if cp "${AUTHORIZED_KEYS_SOURCE}" "${AUTHORIZED_KEYS_TARGET}" ; then
eend 0
else