-M, --show-modules Print included module's name to standard output during
build.
--keep Keep the temporary initramfs for debugging purposes
+ --sshkey [SSHKEY] Add ssh key to initramfs (use with ssh-client module)
EOF
}
--debug) debug="yes";;
--profile) profile="yes";;
--ctty) cttyhack="yes";;
+ --sshkey) read_arg sshkey "$@" || shift;;
-v|--verbose) ((verbosity_mod_l++));;
-q|--quiet) ((verbosity_mod_l--));;
-l|--local) allowlocal="yes" ;;
add_drivers mdadmconf lvmconf filesystems \
use_fstab libdir usrlibdir fscks nofscks cttyhack \
stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
- debug host_fs_types host_devs
+ debug host_fs_types host_devs sshkey
# Create some directory structure first
[[ $prefix ]] && mkdir -m 0755 -p "${initdir}${prefix}"
<filename>/etc/dracut.conf.d</filename></para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>
+ <option>--sshkey <replaceable><sshkey file></replaceable></option>
+ </term>
+ <listitem>
+ <para>ssh key file used with ssh-client module.</para>
+ </listitem>
+ </varlistentry>
<varlistentry>
<term>
<option>-l</option>
--- /dev/null
+#!/bin/bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+# fixme: assume user is root
+
+check() {
+ # If our prerequisites are not met, fail.
+ type -P ssh >/dev/null || return 1
+ type -P scp >/dev/null || return 1
+ if [[ $sshkey ]]; then
+ [ ! -f $sshkey ] && {
+ derror "sshkey is not found!"
+ return 1
+ }
+ [[ ! $cttyhack = yes ]] && {
+ dinfo "--ctty is not used, you should make sure the machine is knowhost and copy the sshkey to remote machine!"
+ }
+ else
+ [[ ! $cttyhack = yes ]] && {
+ derror "ssh interactive mode need option --ctty!"
+ return 1
+ }
+ fi
+
+ return 0
+}
+
+depends() {
+ # We depend on network modules being loaded
+ echo network
+}
+
+inst_sshenv()
+{
+ if [ -d /root/.ssh ]; then
+ inst_dir /root/.ssh
+ chmod 700 ${initdir}/root/.ssh
+ fi
+
+ # Copy over ssh key and knowhosts if needed
+ [[ $sshkey ]] && {
+ inst $sshkey
+ [[ -f /root/.ssh/known_hosts ]] && inst /root/.ssh/known_hosts
+ [[ -f /etc/ssh/ssh_known_hosts ]] && inst /etc/ssh/ssh_known_hosts
+ }
+
+ # Copy over root and system-wide ssh configs.
+ [[ -f /root/.ssh/config ]] && inst /root/.ssh/config
+ [[ -f /etc/ssh/ssh_config ]] && inst /etc/ssh/ssh_config
+
+ return 0
+}
+
+install() {
+ inst ssh
+ inst scp
+ inst_sshenv
+}
+