All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 1/2] support adding module-specific parameters
@ 2012-01-10 15:19 xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w
       [not found] ` <1326208786-24344-1-git-send-email-xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w @ 2012-01-10 15:19 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA; +Cc: harald-H+wXaHxf7aLQT0dZR+AlfA, Cong Wang

From: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

ssh-client module needs a specific parameter, --ssh-key, but
this parameter is totally useless for other modules. So, introduce
a way to let users to pass module-specific parameters, that is,
using colons to separate module name and its parameters, like,

	--add ssh-client:sshkey=/root/.ssh/kdump_id_rsa.pub

Cc: harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Signed-off-by: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 dracut           |   30 ++++++++++++++++++++++++++----
 dracut-functions |   14 ++++++++++++--
 dracut.8.xml     |   22 ++++++++++++++++++----
 3 files changed, 56 insertions(+), 10 deletions(-)

diff --git a/dracut b/dracut
index 8fcdffe..f3fa257 100755
--- a/dracut
+++ b/dracut
@@ -199,6 +199,13 @@ push_arg() {
     fi
 }
 
+declare -A dracut_module_args
+read_module_args() {
+    local _key="${1%%:*}"
+    local _val="${1#*:}"
+    dracut_module_args["$_key"]="$_val"
+}
+
 verbosity_mod_l=0
 
 while (($# > 0)); do
@@ -319,13 +326,23 @@ fi
 # these optins add to the stuff in the config file
 if (( ${#add_dracutmodules_l[@]} )); then
     while pop add_dracutmodules_l val; do
-        add_dracutmodules+=" $val "
+        if [[ "$val" =~ ":" ]]; then
+            add_dracutmodules+=" ${val%%:*} "
+            read_module_args "$val"
+        else
+            add_dracutmodules+=" $val "
+        fi
     done
 fi
 
 if (( ${#force_add_dracutmodules_l[@]} )); then
     while pop force_add_dracutmodules_l val; do
-        force_add_dracutmodules+=" $val "
+        if [[ "$val" =~ ":" ]]; then
+            force_add_dracutmodules+="${val%%:*} "
+            read_module_args "$val"
+        else
+            force_add_dracutmodules+=" $val "
+        fi
     done
 fi
 
@@ -364,7 +381,12 @@ fi
 if (( ${#dracutmodules_l[@]} )); then
     dracutmodules=''
     while pop dracutmodules_l val; do
-        dracutmodules+="$val "
+        if [[ "$val" =~ ":" ]]; then
+            dracutmodules+="${val%%:*} "
+            read_module_args "$val"
+        else
+            dracutmodules+="$val "
+        fi
     done
 fi
 
@@ -591,7 +613,7 @@ export initdir dracutbasedir dracutmodules drivers \
     add_drivers mdadmconf lvmconf filesystems \
     use_fstab libdir usrlibdir fscks nofscks cttyhack \
     stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
-    debug host_fs_types host_devs sshkey
+    debug host_fs_types host_devs sshkey dracut_module_args
 
 # Create some directory structure first
 [[ $prefix ]] && mkdir -m 0755 -p "${initdir}${prefix}"
diff --git a/dracut-functions b/dracut-functions
index 3dd72e9..00f8309 100755
--- a/dracut-functions
+++ b/dracut-functions
@@ -690,14 +690,24 @@ module_check() {
         # if we do not have a check script, we are unconditionally included
         [[ -x $_moddir/check ]] || return 0
         [ $_forced -ne 0 ] && unset hostonly
-        $_moddir/check $hostonly
+        if [ -n "${dracut_module_args["$1"]}" ]; then
+            local _l="${dracut_module_args["$1"]}"
+            eval "(${_l/:/;};$_moddir/check $hostonly;)"
+        else
+            $_moddir/check $hostonly
+        fi
         _ret=$?
     else
         unset check depends install installkernel
         . $_moddir/module-setup.sh
         is_func check || return 0
         [ $_forced -ne 0 ] && unset hostonly
-        check $hostonly
+        if [ -n "${dracut_module_args["$1"]}" ]; then
+            local _l="${dracut_module_args["$1"]}"
+            eval "(${_l/:/;};check $hostonly;)"
+        else
+            check $hostonly
+        fi
         _ret=$?
         unset check depends install installkernel
     fi
diff --git a/dracut.8.xml b/dracut.8.xml
index 5a5df54..ea24764 100644
--- a/dracut.8.xml
+++ b/dracut.8.xml
@@ -106,13 +106,14 @@ For a complete list of kernel command line options see
             <option>-m</option>
           </term>
           <term>
-            <option>--modules&nbsp;<replaceable>&lt;list of dracut modules&gt;</replaceable></option>
+            <option>--modules&nbsp;<replaceable>&lt;module1:para1=val1:para2=val2 module2 ...&gt;</replaceable></option>
           </term>
           <listitem>
             <para>specify a space-separated list of dracut modules to call
 when building the initramfs.
 Modules are located in
-<filename>/usr/lib/dracut/modules.d</filename>. This parameter can be specified multiple times.</para>
+<filename>/usr/lib/dracut/modules.d</filename>. This parameter can be specified multiple times.
+You can also pass module specific parameters here, using colons, for example, -m ssh-client:sshkey=/root/ssh-key.</para>
           </listitem>
         </varlistentry>
         <varlistentry>
@@ -131,7 +132,7 @@ Modules are located in
             <option>-a</option>
           </term>
           <term>
-            <option>--add&nbsp;<replaceable>&lt;list of dracut modules&gt;</replaceable></option>
+            <option>--add&nbsp;<replaceable>&lt;module1:para1=val1:para2=val2 module2 ...&gt;</replaceable></option>
           </term>
           <listitem>
             <para>add a space-separated list of dracut modules to the default set of modules. This parameter can be specified multiple times.</para>
@@ -139,7 +140,7 @@ Modules are located in
         </varlistentry>
         <varlistentry>
           <term>
-            <option>--force-add&nbsp;<replaceable>&lt;list of dracut modules&gt;</replaceable></option>
+            <option>--force-add&nbsp;<replaceable>&lt;module1:para1=val1:para2=val2 module2 ...&gt;</replaceable></option>
           </term>
           <listitem>
             <para>force to add a space-separated list of dracut modules to the default set of modules, when -H is specified. This parameter can be specified multiple times.</para>
@@ -539,6 +540,19 @@ TARGET directory in the final initramfs. If SOURCE is a file, it will be install
         </varlistentry>
       </variablelist>
     </refsect2>
+    <refsect2>
+     <title>Module Specific Parameters</title>
+     <variablelist>
+        <varlistentry>
+          <term>
+            <option>ssh-client</option>
+          </term>
+          <listitem>
+            <para>sshkey=/path/to/sshkey (specifies the path to your ssh public key which will be used by ssh-client module)</para>
+          </listitem>
+       </varlistentry>
+      </variablelist>
+    </refsect2>
   </refsect1>
   <refsect1>
     <title>Files</title>
-- 
1.7.7.5

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/2] remove the global --sshkey parameter
       [not found] ` <1326208786-24344-1-git-send-email-xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2012-01-10 15:19   ` xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w
       [not found]     ` <1326208786-24344-2-git-send-email-xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2012-01-11  2:30   ` [RFC PATCH 1/2] support adding module-specific parameters Dave Young
  2012-01-23 11:14   ` Harald Hoyer
  2 siblings, 1 reply; 13+ messages in thread
From: xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w @ 2012-01-10 15:19 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA; +Cc: harald-H+wXaHxf7aLQT0dZR+AlfA, Cong Wang

From: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

Signed-off-by: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 dracut       |    4 +---
 dracut.8.xml |    8 --------
 2 files changed, 1 insertions(+), 11 deletions(-)

diff --git a/dracut b/dracut
index f3fa257..58c4fde 100755
--- a/dracut
+++ b/dracut
@@ -118,7 +118,6 @@ Creates initial ramdisk images for preloading modules
   -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)
   --ctty                Add control tty for emergency shells
 EOF
 }
@@ -242,7 +241,6 @@ while (($# > 0)); do
         --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" ;;
@@ -613,7 +611,7 @@ export initdir dracutbasedir dracutmodules drivers \
     add_drivers mdadmconf lvmconf filesystems \
     use_fstab libdir usrlibdir fscks nofscks cttyhack \
     stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
-    debug host_fs_types host_devs sshkey dracut_module_args
+    debug host_fs_types host_devs dracut_module_args
 
 # Create some directory structure first
 [[ $prefix ]] && mkdir -m 0755 -p "${initdir}${prefix}"
diff --git a/dracut.8.xml b/dracut.8.xml
index ea24764..0dc6225 100644
--- a/dracut.8.xml
+++ b/dracut.8.xml
@@ -371,14 +371,6 @@ Default:
         </varlistentry>
         <varlistentry>
           <term>
-            <option>--sshkey&nbsp;<replaceable>&lt;sshkey file&gt;</replaceable></option>
-          </term>
-          <listitem>
-            <para>ssh key file used with ssh-client module.</para>
-          </listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>
             <option>-l</option>
           </term>
           <term>
-- 
1.7.7.5

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [RFC PATCH 1/2] support adding module-specific parameters
       [not found] ` <1326208786-24344-1-git-send-email-xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2012-01-10 15:19   ` [PATCH 2/2] remove the global --sshkey parameter xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w
@ 2012-01-11  2:30   ` Dave Young
       [not found]     ` <4F0CF43E.1020901-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
  2012-01-23 11:14   ` Harald Hoyer
  2 siblings, 1 reply; 13+ messages in thread
From: Dave Young @ 2012-01-11  2:30 UTC (permalink / raw)
  To: xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w
  Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA

Hi,

Thanks for the effort, before test it I have two comments

On 01/10/2012 11:19 PM, xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:

> From: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> 
> ssh-client module needs a specific parameter, --ssh-key, but
> this parameter is totally useless for other modules. So, introduce
> a way to let users to pass module-specific parameters, that is,
> using colons to separate module name and its parameters, like,
> 
> 	--add ssh-client:sshkey=/root/.ssh/kdump_id_rsa.pub


Seems no way to add param to modules which is not add explicitly
such as simply run
./dracut -l

So also need to find way to add params to the implicit-added modules?

> 
> Cc: harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
> Signed-off-by: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> ---
>  dracut           |   30 ++++++++++++++++++++++++++----
>  dracut-functions |   14 ++++++++++++--
>  dracut.8.xml     |   22 ++++++++++++++++++----
>  3 files changed, 56 insertions(+), 10 deletions(-)
> 
> diff --git a/dracut b/dracut
> index 8fcdffe..f3fa257 100755
> --- a/dracut
> +++ b/dracut
> @@ -199,6 +199,13 @@ push_arg() {
>      fi
>  }
>  
> +declare -A dracut_module_args
> +read_module_args() {
> +    local _key="${1%%:*}"
> +    local _val="${1#*:}"

> +    dracut_module_args["$_key"]="$_val"

[ -z "$_key" ] above will fail

> +}
> +
>  verbosity_mod_l=0
>  
>  while (($# > 0)); do
> @@ -319,13 +326,23 @@ fi
>  # these optins add to the stuff in the config file
>  if (( ${#add_dracutmodules_l[@]} )); then
>      while pop add_dracutmodules_l val; do
> -        add_dracutmodules+=" $val "
> +        if [[ "$val" =~ ":" ]]; then
> +            add_dracutmodules+=" ${val%%:*} "
> +            read_module_args "$val"
> +        else
> +            add_dracutmodules+=" $val "
> +        fi
>      done
>  fi
>  
>  if (( ${#force_add_dracutmodules_l[@]} )); then
>      while pop force_add_dracutmodules_l val; do
> -        force_add_dracutmodules+=" $val "
> +        if [[ "$val" =~ ":" ]]; then
> +            force_add_dracutmodules+="${val%%:*} "
> +            read_module_args "$val"
> +        else
> +            force_add_dracutmodules+=" $val "
> +        fi
>      done
>  fi
>  
> @@ -364,7 +381,12 @@ fi
>  if (( ${#dracutmodules_l[@]} )); then
>      dracutmodules=''
>      while pop dracutmodules_l val; do
> -        dracutmodules+="$val "
> +        if [[ "$val" =~ ":" ]]; then
> +            dracutmodules+="${val%%:*} "
> +            read_module_args "$val"
> +        else
> +            dracutmodules+="$val "
> +        fi
>      done
>  fi
>  
> @@ -591,7 +613,7 @@ export initdir dracutbasedir dracutmodules drivers \
>      add_drivers mdadmconf lvmconf filesystems \
>      use_fstab libdir usrlibdir fscks nofscks cttyhack \
>      stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
> -    debug host_fs_types host_devs sshkey
> +    debug host_fs_types host_devs sshkey dracut_module_args
>  
>  # Create some directory structure first
>  [[ $prefix ]] && mkdir -m 0755 -p "${initdir}${prefix}"
> diff --git a/dracut-functions b/dracut-functions
> index 3dd72e9..00f8309 100755
> --- a/dracut-functions
> +++ b/dracut-functions
> @@ -690,14 +690,24 @@ module_check() {
>          # if we do not have a check script, we are unconditionally included
>          [[ -x $_moddir/check ]] || return 0
>          [ $_forced -ne 0 ] && unset hostonly
> -        $_moddir/check $hostonly
> +        if [ -n "${dracut_module_args["$1"]}" ]; then
> +            local _l="${dracut_module_args["$1"]}"
> +            eval "(${_l/:/;};$_moddir/check $hostonly;)"
> +        else
> +            $_moddir/check $hostonly
> +        fi
>          _ret=$?
>      else
>          unset check depends install installkernel
>          . $_moddir/module-setup.sh
>          is_func check || return 0
>          [ $_forced -ne 0 ] && unset hostonly
> -        check $hostonly
> +        if [ -n "${dracut_module_args["$1"]}" ]; then
> +            local _l="${dracut_module_args["$1"]}"
> +            eval "(${_l/:/;};check $hostonly;)"
> +        else
> +            check $hostonly
> +        fi
>          _ret=$?
>          unset check depends install installkernel
>      fi
> diff --git a/dracut.8.xml b/dracut.8.xml
> index 5a5df54..ea24764 100644
> --- a/dracut.8.xml
> +++ b/dracut.8.xml
> @@ -106,13 +106,14 @@ For a complete list of kernel command line options see
>              <option>-m</option>
>            </term>
>            <term>
> -            <option>--modules&nbsp;<replaceable>&lt;list of dracut modules&gt;</replaceable></option>
> +            <option>--modules&nbsp;<replaceable>&lt;module1:para1=val1:para2=val2 module2 ...&gt;</replaceable></option>
>            </term>
>            <listitem>
>              <para>specify a space-separated list of dracut modules to call
>  when building the initramfs.
>  Modules are located in
> -<filename>/usr/lib/dracut/modules.d</filename>. This parameter can be specified multiple times.</para>
> +<filename>/usr/lib/dracut/modules.d</filename>. This parameter can be specified multiple times.
> +You can also pass module specific parameters here, using colons, for example, -m ssh-client:sshkey=/root/ssh-key.</para>
>            </listitem>
>          </varlistentry>
>          <varlistentry>
> @@ -131,7 +132,7 @@ Modules are located in
>              <option>-a</option>
>            </term>
>            <term>
> -            <option>--add&nbsp;<replaceable>&lt;list of dracut modules&gt;</replaceable></option>
> +            <option>--add&nbsp;<replaceable>&lt;module1:para1=val1:para2=val2 module2 ...&gt;</replaceable></option>
>            </term>
>            <listitem>
>              <para>add a space-separated list of dracut modules to the default set of modules. This parameter can be specified multiple times.</para>
> @@ -139,7 +140,7 @@ Modules are located in
>          </varlistentry>
>          <varlistentry>
>            <term>
> -            <option>--force-add&nbsp;<replaceable>&lt;list of dracut modules&gt;</replaceable></option>
> +            <option>--force-add&nbsp;<replaceable>&lt;module1:para1=val1:para2=val2 module2 ...&gt;</replaceable></option>
>            </term>
>            <listitem>
>              <para>force to add a space-separated list of dracut modules to the default set of modules, when -H is specified. This parameter can be specified multiple times.</para>
> @@ -539,6 +540,19 @@ TARGET directory in the final initramfs. If SOURCE is a file, it will be install
>          </varlistentry>
>        </variablelist>
>      </refsect2>
> +    <refsect2>
> +     <title>Module Specific Parameters</title>
> +     <variablelist>
> +        <varlistentry>
> +          <term>
> +            <option>ssh-client</option>
> +          </term>
> +          <listitem>
> +            <para>sshkey=/path/to/sshkey (specifies the path to your ssh public key which will be used by ssh-client module)</para>
> +          </listitem>
> +       </varlistentry>
> +      </variablelist>
> +    </refsect2>
>    </refsect1>
>    <refsect1>
>      <title>Files</title>



-- 
Thanks
Dave

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] remove the global --sshkey parameter
       [not found]     ` <1326208786-24344-2-git-send-email-xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2012-01-11  2:59       ` Dave Young
       [not found]         ` <4F0CFB08.6030800-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Dave Young @ 2012-01-11  2:59 UTC (permalink / raw)
  To: xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w
  Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA

On 01/10/2012 11:19 PM, xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:

> From: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> 
> Signed-off-by: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> ---
>  dracut       |    4 +---
>  dracut.8.xml |    8 --------
>  2 files changed, 1 insertions(+), 11 deletions(-)
> 
> diff --git a/dracut b/dracut
> index f3fa257..58c4fde 100755
> --- a/dracut
> +++ b/dracut
> @@ -118,7 +118,6 @@ Creates initial ramdisk images for preloading modules
>    -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)
>    --ctty                Add control tty for emergency shells
>  EOF
>  }
> @@ -242,7 +241,6 @@ while (($# > 0)); do
>          --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" ;;
> @@ -613,7 +611,7 @@ export initdir dracutbasedir dracutmodules drivers \
>      add_drivers mdadmconf lvmconf filesystems \
>      use_fstab libdir usrlibdir fscks nofscks cttyhack \
>      stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
> -    debug host_fs_types host_devs sshkey dracut_module_args
> +    debug host_fs_types host_devs dracut_module_args
>  
>  # Create some directory structure first
>  [[ $prefix ]] && mkdir -m 0755 -p "${initdir}${prefix}"
> diff --git a/dracut.8.xml b/dracut.8.xml
> index ea24764..0dc6225 100644
> --- a/dracut.8.xml
> +++ b/dracut.8.xml
> @@ -371,14 +371,6 @@ Default:
>          </varlistentry>
>          <varlistentry>
>            <term>
> -            <option>--sshkey&nbsp;<replaceable>&lt;sshkey file&gt;</replaceable></option>
> -          </term>
> -          <listitem>
> -            <para>ssh key file used with ssh-client module.</para>
> -          </listitem>
> -        </varlistentry>
> -        <varlistentry>
> -          <term>
>              <option>-l</option>
>            </term>
>            <term>


Hi,

After removing --sshkey we need to parse dracut_module_args for module
use. Maybe in a general function of dracut-lib will be fine.

Also need consider the multi-param case like below:
module:a=b,c=d,e=f,...

Ie. in ssh-client module we need to parse "sshkey=/root/.ssh/id_rsa" for
installing sshkey

-- 
Thanks
Dave

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] remove the global --sshkey parameter
       [not found]         ` <4F0CFB08.6030800-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2012-01-11  3:40           ` Dave Young
  2012-01-11  9:54           ` Cong Wang
  1 sibling, 0 replies; 13+ messages in thread
From: Dave Young @ 2012-01-11  3:40 UTC (permalink / raw)
  To: xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w
  Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA

On 01/11/2012 10:59 AM, Dave Young wrote:

> On 01/10/2012 11:19 PM, xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:
> 
>> From: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>
>> Signed-off-by: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>> ---
>>  dracut       |    4 +---
>>  dracut.8.xml |    8 --------
>>  2 files changed, 1 insertions(+), 11 deletions(-)
>>
>> diff --git a/dracut b/dracut
>> index f3fa257..58c4fde 100755
>> --- a/dracut
>> +++ b/dracut
>> @@ -118,7 +118,6 @@ Creates initial ramdisk images for preloading modules
>>    -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)
>>    --ctty                Add control tty for emergency shells
>>  EOF
>>  }
>> @@ -242,7 +241,6 @@ while (($# > 0)); do
>>          --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" ;;
>> @@ -613,7 +611,7 @@ export initdir dracutbasedir dracutmodules drivers \
>>      add_drivers mdadmconf lvmconf filesystems \
>>      use_fstab libdir usrlibdir fscks nofscks cttyhack \
>>      stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
>> -    debug host_fs_types host_devs sshkey dracut_module_args
>> +    debug host_fs_types host_devs dracut_module_args
>>  
>>  # Create some directory structure first
>>  [[ $prefix ]] && mkdir -m 0755 -p "${initdir}${prefix}"
>> diff --git a/dracut.8.xml b/dracut.8.xml
>> index ea24764..0dc6225 100644
>> --- a/dracut.8.xml
>> +++ b/dracut.8.xml
>> @@ -371,14 +371,6 @@ Default:
>>          </varlistentry>
>>          <varlistentry>
>>            <term>
>> -            <option>--sshkey&nbsp;<replaceable>&lt;sshkey file&gt;</replaceable></option>
>> -          </term>
>> -          <listitem>
>> -            <para>ssh key file used with ssh-client module.</para>
>> -          </listitem>
>> -        </varlistentry>
>> -        <varlistentry>
>> -          <term>
>>              <option>-l</option>
>>            </term>
>>            <term>
> 
> 
> Hi,
> 
> After removing --sshkey we need to parse dracut_module_args for module
> use. Maybe in a general function of dracut-lib will be fine.
> 
> Also need consider the multi-param case like below:
> module:a=b,c=d,e=f,...
> 
> Ie. in ssh-client module we need to parse "sshkey=/root/.ssh/id_rsa" for
> installing sshkey
> 


Seems $sshkey is only limited to check() function, so it will be not
available in install(), should add something like below:

diff --git a/modules.d/95ssh-client/module-setup.sh
b/modules.d/95ssh-client/module-setup.sh
index ef8effe..352817c 100755
--- a/modules.d/95ssh-client/module-setup.sh
+++ b/modules.d/95ssh-client/module-setup.sh
@@ -39,7 +39,10 @@ inst_sshenv()
     fi

     # Copy over ssh key and knowhosts if needed
+    ssharg=${dracut_module_args["ssh-client"]}
+    sshkey=`echo $ssharg|cut --fields=2 -d '='`
     [[ $sshkey ]] && {
+        echo "installing 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


-- 
Thanks
Dave

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] remove the global --sshkey parameter
       [not found]         ` <4F0CFB08.6030800-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
  2012-01-11  3:40           ` Dave Young
@ 2012-01-11  9:54           ` Cong Wang
       [not found]             ` <4F0D5C64.1080203-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  1 sibling, 1 reply; 13+ messages in thread
From: Cong Wang @ 2012-01-11  9:54 UTC (permalink / raw)
  To: Dave Young
  Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA

On 01/11/2012 10:59 AM, Dave Young wrote:
>
> Hi,

Hi,

>
> After removing --sshkey we need to parse dracut_module_args for module
> use. Maybe in a general function of dracut-lib will be fine.
>
> Also need consider the multi-param case like below:
> module:a=b,c=d,e=f,...
>
> Ie. in ssh-client module we need to parse "sshkey=/root/.ssh/id_rsa" for
> installing sshkey
>

It is already done by the first patch. :)

Note that, I designed to use colons to separate parameters, not commas,
even if you pass multiple parameters.

Thanks.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC PATCH 1/2] support adding module-specific parameters
       [not found]     ` <4F0CF43E.1020901-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2012-01-11  9:58       ` Cong Wang
       [not found]         ` <4F0D5D57.9000804-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Cong Wang @ 2012-01-11  9:58 UTC (permalink / raw)
  To: Dave Young
  Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA

On 01/11/2012 10:30 AM, Dave Young wrote:
> Hi,
>
> Thanks for the effort, before test it I have two comments
>
> On 01/10/2012 11:19 PM, xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:
>
>> From: Cong Wang<xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>
>> ssh-client module needs a specific parameter, --ssh-key, but
>> this parameter is totally useless for other modules. So, introduce
>> a way to let users to pass module-specific parameters, that is,
>> using colons to separate module name and its parameters, like,
>>
>> 	--add ssh-client:sshkey=/root/.ssh/kdump_id_rsa.pub
>
>
> Seems no way to add param to modules which is not add explicitly
> such as simply run
> ./dracut -l
>
> So also need to find way to add params to the implicit-added modules?


I think you mean -H? Yeah, for cases like -H which selects modules 
automatically, I think we need to add an option in dracut.conf to let 
users specify the module parameters. I will add this...


>>
>> +declare -A dracut_module_args
>> +read_module_args() {
>> +    local _key="${1%%:*}"
>> +    local _val="${1#*:}"
>
>> +    dracut_module_args["$_key"]="$_val"
>
> [ -z "$_key" ] above will fail
>

Yeah, but only when users forget the module name, right? :)

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] remove the global --sshkey parameter
       [not found]             ` <4F0D5C64.1080203-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2012-01-12  2:15               ` Dave Young
       [not found]                 ` <4F0E4247.1010501-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Dave Young @ 2012-01-12  2:15 UTC (permalink / raw)
  To: Cong Wang; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA

On 01/11/2012 05:54 PM, Cong Wang wrote:

> On 01/11/2012 10:59 AM, Dave Young wrote:
>>
>> Hi,
> 
> Hi,
> 
>>
>> After removing --sshkey we need to parse dracut_module_args for module
>> use. Maybe in a general function of dracut-lib will be fine.
>>
>> Also need consider the multi-param case like below:
>> module:a=b,c=d,e=f,...
>>
>> Ie. in ssh-client module we need to parse "sshkey=/root/.ssh/id_rsa" for
>> installing sshkey
>>
> 
> It is already done by the first patch. :)


During my test, the $sshkey is only available in check() function,
finally the key was not installed to initramfs. Please see my another reply
 before.

> 
> Note that, I designed to use colons to separate parameters, not commas,
> even if you pass multiple parameters.


I think A:b,c,d looks better, but I have no strong opinion about this
because right half of first colon can be seen as param which can be
defined and parsed by specific module.

-- 
Thanks
Dave

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC PATCH 1/2] support adding module-specific parameters
       [not found]         ` <4F0D5D57.9000804-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2012-01-12  2:19           ` Dave Young
       [not found]             ` <4F0E434F.9080002-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Dave Young @ 2012-01-12  2:19 UTC (permalink / raw)
  To: Cong Wang; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA

On 01/11/2012 05:58 PM, Cong Wang wrote:

> On 01/11/2012 10:30 AM, Dave Young wrote:
>> Hi,
>>
>> Thanks for the effort, before test it I have two comments
>>
>> On 01/10/2012 11:19 PM, xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:
>>
>>> From: Cong Wang<xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>>
>>> ssh-client module needs a specific parameter, --ssh-key, but
>>> this parameter is totally useless for other modules. So, introduce
>>> a way to let users to pass module-specific parameters, that is,
>>> using colons to separate module name and its parameters, like,
>>>
>>>     --add ssh-client:sshkey=/root/.ssh/kdump_id_rsa.pub
>>
>>
>> Seems no way to add param to modules which is not add explicitly
>> such as simply run
>> ./dracut -l
>>
>> So also need to find way to add params to the implicit-added modules?
> 
> 
> I think you mean -H? Yeah, for cases like -H which selects modules
> automatically, I think we need to add an option in dracut.conf to let
> users specify the module parameters. I will add this...


I mean not only -H but also run dracut without any arguments

> 
> 
>>>
>>> +declare -A dracut_module_args
>>> +read_module_args() {
>>> +    local _key="${1%%:*}"
>>> +    local _val="${1#*:}"
>>
>>> +    dracut_module_args["$_key"]="$_val"
>>
>> [ -z "$_key" ] above will fail
>>
> 
> Yeah, but only when users forget the module name, right? :)


Yes

> 
> -- 
> To unsubscribe from this list: send the line "unsubscribe initramfs" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Thanks
Dave

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC PATCH 1/2] support adding module-specific parameters
       [not found]             ` <4F0E434F.9080002-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2012-01-13  9:01               ` Cong Wang
  0 siblings, 0 replies; 13+ messages in thread
From: Cong Wang @ 2012-01-13  9:01 UTC (permalink / raw)
  To: Dave Young
  Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA

On 01/12/2012 10:19 AM, Dave Young wrote:
> On 01/11/2012 05:58 PM, Cong Wang wrote:
>
>> On 01/11/2012 10:30 AM, Dave Young wrote:
>>> Hi,
>>>
>>> Thanks for the effort, before test it I have two comments
>>>
>>> On 01/10/2012 11:19 PM, xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote:
>>>
>>>> From: Cong Wang<xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>>>
>>>> ssh-client module needs a specific parameter, --ssh-key, but
>>>> this parameter is totally useless for other modules. So, introduce
>>>> a way to let users to pass module-specific parameters, that is,
>>>> using colons to separate module name and its parameters, like,
>>>>
>>>>      --add ssh-client:sshkey=/root/.ssh/kdump_id_rsa.pub
>>>
>>>
>>> Seems no way to add param to modules which is not add explicitly
>>> such as simply run
>>> ./dracut -l
>>>
>>> So also need to find way to add params to the implicit-added modules?
>>
>>
>> I think you mean -H? Yeah, for cases like -H which selects modules
>> automatically, I think we need to add an option in dracut.conf to let
>> users specify the module parameters. I will add this...
>
>
> I mean not only -H but also run dracut without any arguments


Understand.

>
>>
>>
>>>>
>>>> +declare -A dracut_module_args
>>>> +read_module_args() {
>>>> +    local _key="${1%%:*}"
>>>> +    local _val="${1#*:}"
>>>
>>>> +    dracut_module_args["$_key"]="$_val"
>>>
>>> [ -z "$_key" ] above will fail
>>>
>>
>> Yeah, but only when users forget the module name, right? :)
>
>
> Yes
>

Then it is invalid input. :-D But yeah, we could handle this in a better 
way.

I will update the patch.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2] remove the global --sshkey parameter
       [not found]                 ` <4F0E4247.1010501-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2012-01-13  9:03                   ` Cong Wang
  0 siblings, 0 replies; 13+ messages in thread
From: Cong Wang @ 2012-01-13  9:03 UTC (permalink / raw)
  To: Dave Young
  Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA

On 01/12/2012 10:15 AM, Dave Young wrote:
> On 01/11/2012 05:54 PM, Cong Wang wrote:
>
>> On 01/11/2012 10:59 AM, Dave Young wrote:
>>>
>>> Hi,
>>
>> Hi,
>>
>>>
>>> After removing --sshkey we need to parse dracut_module_args for module
>>> use. Maybe in a general function of dracut-lib will be fine.
>>>
>>> Also need consider the multi-param case like below:
>>> module:a=b,c=d,e=f,...
>>>
>>> Ie. in ssh-client module we need to parse "sshkey=/root/.ssh/id_rsa" for
>>> installing sshkey
>>>
>>
>> It is already done by the first patch. :)
>
>
> During my test, the $sshkey is only available in check() function,
> finally the key was not installed to initramfs. Please see my another reply
>   before.

Hmm, so sshkey= parameter should be passed to both check() and 
install()... I think I need to redesign the command line interface.

>
>>
>> Note that, I designed to use colons to separate parameters, not commas,
>> even if you pass multiple parameters.
>
>
> I think A:b,c,d looks better, but I have no strong opinion about this
> because right half of first colon can be seen as param which can be
> defined and parsed by specific module.
>

Makes sense, I will check if this is hard to be done.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC PATCH 1/2] support adding module-specific parameters
       [not found] ` <1326208786-24344-1-git-send-email-xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2012-01-10 15:19   ` [PATCH 2/2] remove the global --sshkey parameter xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w
  2012-01-11  2:30   ` [RFC PATCH 1/2] support adding module-specific parameters Dave Young
@ 2012-01-23 11:14   ` Harald Hoyer
       [not found]     ` <4F1D412B.1060801-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
  2 siblings, 1 reply; 13+ messages in thread
From: Harald Hoyer @ 2012-01-23 11:14 UTC (permalink / raw)
  To: xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA

Am 10.01.2012 16:19, schrieb xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org:
> From: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> 
> ssh-client module needs a specific parameter, --ssh-key, but
> this parameter is totally useless for other modules. So, introduce
> a way to let users to pass module-specific parameters, that is,
> using colons to separate module name and its parameters, like,
> 
> 	--add ssh-client:sshkey=/root/.ssh/kdump_id_rsa.pub
> 
> Cc: harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
> Signed-off-by: Cong Wang <xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> ---
>  dracut           |   30 ++++++++++++++++++++++++++----
>  dracut-functions |   14 ++++++++++++--
>  dracut.8.xml     |   22 ++++++++++++++++++----
>  3 files changed, 56 insertions(+), 10 deletions(-)


Hmm, I would envision another strategy here. Modules could provide a function
for command line parsing.

We could source each module-setup.sh and rename the functions prefixed with the
module name and store them in an array.

Function renaming could be done via:

$ theirfunc() { echo "do their thing"; }
$ eval "$(echo "orig_theirfunc()"; declare -f theirfunc | tail -n +2)"
$ theirfunc() { echo "do my thing"; orig_theirfunc; }
$ theirfunc
do my thing
do their thing

What do you think?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC PATCH 1/2] support adding module-specific parameters
       [not found]     ` <4F1D412B.1060801-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2012-01-24 15:23       ` Cong Wang
  0 siblings, 0 replies; 13+ messages in thread
From: Cong Wang @ 2012-01-24 15:23 UTC (permalink / raw)
  To: Harald Hoyer; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA

On 01/23/2012 07:14 PM, Harald Hoyer wrote:
>
> Hmm, I would envision another strategy here. Modules could provide a function
> for command line parsing.
>
> We could source each module-setup.sh and rename the functions prefixed with the
> module name and store them in an array.


Sorry, I don't quite understand. For this case, you mean ssh-client
module should provide a function like ssh-client_getopt() to parse the
command line --add ssh-client:sshkey=/root/.ssh/kdump_id_rsa.pub ?

Thanks.

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2012-01-24 15:23 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-10 15:19 [RFC PATCH 1/2] support adding module-specific parameters xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w
     [not found] ` <1326208786-24344-1-git-send-email-xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-01-10 15:19   ` [PATCH 2/2] remove the global --sshkey parameter xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w
     [not found]     ` <1326208786-24344-2-git-send-email-xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-01-11  2:59       ` Dave Young
     [not found]         ` <4F0CFB08.6030800-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-01-11  3:40           ` Dave Young
2012-01-11  9:54           ` Cong Wang
     [not found]             ` <4F0D5C64.1080203-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-01-12  2:15               ` Dave Young
     [not found]                 ` <4F0E4247.1010501-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-01-13  9:03                   ` Cong Wang
2012-01-11  2:30   ` [RFC PATCH 1/2] support adding module-specific parameters Dave Young
     [not found]     ` <4F0CF43E.1020901-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-01-11  9:58       ` Cong Wang
     [not found]         ` <4F0D5D57.9000804-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-01-12  2:19           ` Dave Young
     [not found]             ` <4F0E434F.9080002-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-01-13  9:01               ` Cong Wang
2012-01-23 11:14   ` Harald Hoyer
     [not found]     ` <4F1D412B.1060801-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-01-24 15:23       ` Cong Wang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.