* [PATCH 2/7] auto setup network without netroot
@ 2012-02-02 7:59 Dave Young
[not found] ` <20120202075952.GA12412-4/PLUo9XfK+sDdueE5tM26fLeoKvNuZc@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Dave Young @ 2012-02-02 7:59 UTC (permalink / raw)
To: initramfs-u79uwXL29TY76Z2rM5mHXA
Cc: xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w,
harald-H+wXaHxf7aLQT0dZR+AlfA
Current dracut network only will be setup when netroot is used. But there are
some cases we need network even without netroot. For example kdump will need
copy vmcore to remote machine via scp or nfs mount. OTOH, if we use dracut as
a recovery system the network is helpful even root is not a network device.
This implementation is based on the manually bring up method. Here add a kernel
cmdline argument rd.neednet. If rd.neednet is set dracut will bring up network
with ifup $INTERFACE -m. If netroot is used we still keep original behavior.
Signed-off-by: Dave Young <dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
dracut.cmdline.7.xml | 8 ++++++++
modules.d/40network/net-genrules.sh | 20 ++++++++++++++++----
2 files changed, 24 insertions(+), 4 deletions(-)
Index: dracut/modules.d/40network/net-genrules.sh
===================================================================
--- dracut.orig/modules.d/40network/net-genrules.sh
+++ dracut/modules.d/40network/net-genrules.sh
@@ -14,7 +14,7 @@ fix_bootif() {
}
# Don't continue if we don't need network
-[ -z "$netroot" ] && return;
+[ -z "$netroot" ] && ! getargbool 0 rd.neednet && return;
# Write udev rules
{
@@ -35,17 +35,29 @@ fix_bootif() {
BOOTIF=$(getarg 'BOOTIF=')
if [ -n "$BOOTIF" ] ; then
BOOTIF=$(fix_bootif "$BOOTIF")
- printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/ifup $env{INTERFACE}"\n' "$BOOTIF"
+ if [ -n "$netroot" ]; then
+ printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/ifup $env{INTERFACE}"\n' "$BOOTIF"
+ else
+ printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/ifup $env{INTERFACE} -m"\n' "$BOOTIF"
+ fi
# If we have to handle multiple interfaces, handle only them.
elif [ -n "$IFACES" ] ; then
for iface in $IFACES ; do
- printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", RUN+="/sbin/ifup $env{INTERFACE}"\n' "$iface"
+ if [ -n "$netroot" ]; then
+ printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", RUN+="/sbin/ifup $env{INTERFACE}"\n' "$iface"
+ else
+ printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", RUN+="/sbin/ifup $env{INTERFACE} -m"\n' "$iface"
+ fi
done
# Default: We don't know the interface to use, handle all
else
- printf 'SUBSYSTEM=="net", RUN+="/sbin/ifup $env{INTERFACE}"\n'
+ if [ -n "$netroot" ]; then
+ printf 'SUBSYSTEM=="net", RUN+="/sbin/ifup $env{INTERFACE}"\n'
+ else
+ printf 'SUBSYSTEM=="net", RUN+="/sbin/ifup $env{INTERFACE} -m"\n'
+ fi
fi
} > /etc/udev/rules.d/60-net.rules
Index: dracut/dracut.cmdline.7.xml
===================================================================
--- dracut.orig/dracut.cmdline.7.xml
+++ dracut/dracut.cmdline.7.xml
@@ -507,6 +507,14 @@ Required if multiple ip= lines are used.
<para>turn on/off biosdevname network interface renaming</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd.neednet=</envar><replaceable><0|1></replaceable>
+ </term>
+ <listitem>
+ <para>boolean, bring up network even without netroot set</para>
+ </listitem>
+ </varlistentry>
</variablelist>
</refsect2>
<refsect2>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/7] auto setup network without netroot
[not found] ` <20120202075952.GA12412-4/PLUo9XfK+sDdueE5tM26fLeoKvNuZc@public.gmane.org>
@ 2012-02-06 6:45 ` David Dillow
[not found] ` <1328510722.10153.13.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2012-02-07 11:15 ` Harald Hoyer
1 sibling, 1 reply; 8+ messages in thread
From: David Dillow @ 2012-02-06 6:45 UTC (permalink / raw)
To: Dave Young
Cc: initramfs-u79uwXL29TY76Z2rM5mHXA,
xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w,
harald-H+wXaHxf7aLQT0dZR+AlfA
On Thu, 2012-02-02 at 15:59 +0800, Dave Young wrote:
> Current dracut network only will be setup when netroot is used. But there are
> some cases we need network even without netroot. For example kdump will need
> copy vmcore to remote machine via scp or nfs mount. OTOH, if we use dracut as
> a recovery system the network is helpful even root is not a network device.
>
> This implementation is based on the manually bring up method. Here add a kernel
> cmdline argument rd.neednet. If rd.neednet is set dracut will bring up network
> with ifup $INTERFACE -m. If netroot is used we still keep original behavior.
I'm sorry to keep pitching comments over the fence and running off, but
$DAYJOB is keeping me busy these days.
As one of the guys behind the netroot code -- though it's been a long
while since I've been active on it -- I think you're trying to bandaid
your needs on top of it, when restructuring is probably needed. We
didn't really consider other modules needing network access before the
root is mounted, so there is a bit of melding of the steps.
I think you'd have a much cleaner solution splitting out the
configuration of the network from the network root handling. Both
netroot and kdump could then signal that they need network services, and
you could handle it as it is now -- use ip= if available, fall back to
dhcp. If no NIC is specified, we try all of them until we can talk to
our {root,kdump} server. Cong Wang is correct, I seen no reason to add
new command line arguments.
It's been years since I've really been involved, so I suspect the
netroot code is due for a cleanup anyway.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/7] auto setup network without netroot
[not found] ` <1328510722.10153.13.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
@ 2012-02-06 7:51 ` Dave Young
[not found] ` <4F2F8666.50907-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Dave Young @ 2012-02-06 7:51 UTC (permalink / raw)
To: David Dillow
Cc: initramfs-u79uwXL29TY76Z2rM5mHXA,
xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w,
harald-H+wXaHxf7aLQT0dZR+AlfA
On 02/06/2012 02:45 PM, David Dillow wrote:
> On Thu, 2012-02-02 at 15:59 +0800, Dave Young wrote:
>> Current dracut network only will be setup when netroot is used. But there are
>> some cases we need network even without netroot. For example kdump will need
>> copy vmcore to remote machine via scp or nfs mount. OTOH, if we use dracut as
>> a recovery system the network is helpful even root is not a network device.
>>
>> This implementation is based on the manually bring up method. Here add a kernel
>> cmdline argument rd.neednet. If rd.neednet is set dracut will bring up network
>> with ifup $INTERFACE -m. If netroot is used we still keep original behavior.
>
> I'm sorry to keep pitching comments over the fence and running off, but
> $DAYJOB is keeping me busy these days.
No problem, comments are always welcome.
>
> As one of the guys behind the netroot code -- though it's been a long
> while since I've been active on it -- I think you're trying to bandaid
> your needs on top of it, when restructuring is probably needed. We
> didn't really consider other modules needing network access before the
> root is mounted, so there is a bit of melding of the steps.
Seems only I think about using network in shell with rdbreak=cmdline,
>
> I think you'd have a much cleaner solution splitting out the
> configuration of the network from the network root handling.
I agree this is the better solution.
> Both
> netroot and kdump could then signal that they need network services, and
> you could handle it as it is now -- use ip= if available, fall back to
> dhcp. If no NIC is specified, we try all of them until we can talk to
> our {root,kdump} server. Cong Wang is correct, I seen no reason to add
> new command line arguments.
I think the key problem is the network setup code split. I would not
insist on this although I don't like that we must add ip= to have
network setup
>
> It's been years since I've really been involved, so I suspect the
> netroot code is due for a cleanup anyway.
--
Thanks
Dave
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/7] auto setup network without netroot
[not found] ` <4F2F8666.50907-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2012-02-06 7:53 ` Cong Wang
[not found] ` <4F2F86F6.5010007-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Cong Wang @ 2012-02-06 7:53 UTC (permalink / raw)
To: Dave Young
Cc: David Dillow, initramfs-u79uwXL29TY76Z2rM5mHXA,
harald-H+wXaHxf7aLQT0dZR+AlfA
On 02/06/2012 03:51 PM, Dave Young wrote:
> I think the key problem is the network setup code split. I would not
> insist on this although I don't like that we must add ip= to have
> network setup
With your patches, we must have rd.neednet=1. :) So, it is unfair to
only blame ip= approach.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/7] auto setup network without netroot
[not found] ` <4F2F86F6.5010007-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2012-02-06 8:43 ` Dave Young
[not found] ` <4F2F92CB.1000804-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Dave Young @ 2012-02-06 8:43 UTC (permalink / raw)
To: Cong Wang
Cc: David Dillow, initramfs-u79uwXL29TY76Z2rM5mHXA,
harald-H+wXaHxf7aLQT0dZR+AlfA
On 02/06/2012 03:53 PM, Cong Wang wrote:
> On 02/06/2012 03:51 PM, Dave Young wrote:
>> I think the key problem is the network setup code split. I would not
>> insist on this although I don't like that we must add ip= to have
>> network setup
>
> With your patches, we must have rd.neednet=1. :) So, it is unfair to
> only blame ip= approach.
I mean for netroot we also must have ip= set because ip= will deal with
the network setup. Originally we might have no ip= but with proper
netroot param like root=nfs...
> --
> 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] 8+ messages in thread
* Re: [PATCH 2/7] auto setup network without netroot
[not found] ` <4F2F92CB.1000804-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2012-02-06 13:21 ` David Dillow
[not found] ` <1328534517.10153.20.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: David Dillow @ 2012-02-06 13:21 UTC (permalink / raw)
To: Dave Young
Cc: Cong Wang, initramfs-u79uwXL29TY76Z2rM5mHXA,
harald-H+wXaHxf7aLQT0dZR+AlfA
On Mon, 2012-02-06 at 16:43 +0800, Dave Young wrote:
> On 02/06/2012 03:53 PM, Cong Wang wrote:
>
> > On 02/06/2012 03:51 PM, Dave Young wrote:
> >> I think the key problem is the network setup code split. I would not
> >> insist on this although I don't like that we must add ip= to have
> >> network setup
> >
> > With your patches, we must have rd.neednet=1. :) So, it is unfair to
> > only blame ip= approach.
>
>
> I mean for netroot we also must have ip= set because ip= will deal with
> the network setup. Originally we might have no ip= but with proper
> netroot param like root=nfs...
In that case, we do DHCP and it works. Having ip=BLAH on the command
line is not a requirement.
As for rdbreak=cmdline, I expect that to be used by experts debugging
dracut issues, and they should be knowledgeable enough to manually
configure the network if they need it. I don't believe an automated
solution is required there. That's not to say a script to do the right
thing wouldn't be useful, just not high on the list of things to do.
I could easily envision a "helper script" that runs through the command
line arguments (perhaps using the existing hooks) and brings up the
network. But I see it as more of a user-run command than an automated
step.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/7] auto setup network without netroot
[not found] ` <1328534517.10153.20.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
@ 2012-02-07 1:50 ` Dave Young
0 siblings, 0 replies; 8+ messages in thread
From: Dave Young @ 2012-02-07 1:50 UTC (permalink / raw)
To: David Dillow
Cc: Cong Wang, initramfs-u79uwXL29TY76Z2rM5mHXA,
harald-H+wXaHxf7aLQT0dZR+AlfA
On 02/06/2012 09:21 PM, David Dillow wrote:
> On Mon, 2012-02-06 at 16:43 +0800, Dave Young wrote:
>> On 02/06/2012 03:53 PM, Cong Wang wrote:
>>
>>> On 02/06/2012 03:51 PM, Dave Young wrote:
>>>> I think the key problem is the network setup code split. I would not
>>>> insist on this although I don't like that we must add ip= to have
>>>> network setup
>>>
>>> With your patches, we must have rd.neednet=1. :) So, it is unfair to
>>> only blame ip= approach.
>>
>>
>> I mean for netroot we also must have ip= set because ip= will deal with
>> the network setup. Originally we might have no ip= but with proper
>> netroot param like root=nfs...
>
> In that case, we do DHCP and it works. Having ip=BLAH on the command
> line is not a requirement.
Then I'm ok for this
>
> As for rdbreak=cmdline, I expect that to be used by experts debugging
> dracut issues, and they should be knowledgeable enough to manually
> configure the network if they need it. I don't believe an automated
> solution is required there. That's not to say a script to do the right
> thing wouldn't be useful, just not high on the list of things to do.
Make sense to me as well.
>
> I could easily envision a "helper script" that runs through the command
> line arguments (perhaps using the existing hooks) and brings up the
> network. But I see it as more of a user-run command than an automated
> step.
If there's such a script it will be much better because it will save
time of people to investigate the detail of dracut network.
>
> --
> 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] 8+ messages in thread
* Re: [PATCH 2/7] auto setup network without netroot
[not found] ` <20120202075952.GA12412-4/PLUo9XfK+sDdueE5tM26fLeoKvNuZc@public.gmane.org>
2012-02-06 6:45 ` David Dillow
@ 2012-02-07 11:15 ` Harald Hoyer
1 sibling, 0 replies; 8+ messages in thread
From: Harald Hoyer @ 2012-02-07 11:15 UTC (permalink / raw)
To: Dave Young
Cc: initramfs-u79uwXL29TY76Z2rM5mHXA,
xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w
Am 02.02.2012 08:59, schrieb Dave Young:
> Current dracut network only will be setup when netroot is used. But there are
> some cases we need network even without netroot. For example kdump will need
> copy vmcore to remote machine via scp or nfs mount. OTOH, if we use dracut as
> a recovery system the network is helpful even root is not a network device.
>
> This implementation is based on the manually bring up method. Here add a kernel
> cmdline argument rd.neednet. If rd.neednet is set dracut will bring up network
> with ifup $INTERFACE -m. If netroot is used we still keep original behavior.
>
> Signed-off-by: Dave Young <dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> ---
> dracut.cmdline.7.xml | 8 ++++++++
> modules.d/40network/net-genrules.sh | 20 ++++++++++++++++----
> 2 files changed, 24 insertions(+), 4 deletions(-)
>
> Index: dracut/modules.d/40network/net-genrules.sh
> ===================================================================
> --- dracut.orig/modules.d/40network/net-genrules.sh
> +++ dracut/modules.d/40network/net-genrules.sh
> @@ -14,7 +14,7 @@ fix_bootif() {
> }
>
> # Don't continue if we don't need network
> -[ -z "$netroot" ] && return;
> +[ -z "$netroot" ] && ! getargbool 0 rd.neednet && return;
>
> # Write udev rules
> {
> @@ -35,17 +35,29 @@ fix_bootif() {
> BOOTIF=$(getarg 'BOOTIF=')
> if [ -n "$BOOTIF" ] ; then
> BOOTIF=$(fix_bootif "$BOOTIF")
> - printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/ifup $env{INTERFACE}"\n' "$BOOTIF"
> + if [ -n "$netroot" ]; then
> + printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/ifup $env{INTERFACE}"\n' "$BOOTIF"
> + else
> + printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/ifup $env{INTERFACE} -m"\n' "$BOOTIF"
> + fi
>
> # If we have to handle multiple interfaces, handle only them.
> elif [ -n "$IFACES" ] ; then
> for iface in $IFACES ; do
> - printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", RUN+="/sbin/ifup $env{INTERFACE}"\n' "$iface"
> + if [ -n "$netroot" ]; then
> + printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", RUN+="/sbin/ifup $env{INTERFACE}"\n' "$iface"
> + else
> + printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", RUN+="/sbin/ifup $env{INTERFACE} -m"\n' "$iface"
> + fi
> done
>
> # Default: We don't know the interface to use, handle all
> else
> - printf 'SUBSYSTEM=="net", RUN+="/sbin/ifup $env{INTERFACE}"\n'
> + if [ -n "$netroot" ]; then
> + printf 'SUBSYSTEM=="net", RUN+="/sbin/ifup $env{INTERFACE}"\n'
> + else
> + printf 'SUBSYSTEM=="net", RUN+="/sbin/ifup $env{INTERFACE} -m"\n'
> + fi
> fi
>
> } > /etc/udev/rules.d/60-net.rules
> Index: dracut/dracut.cmdline.7.xml
> ===================================================================
> --- dracut.orig/dracut.cmdline.7.xml
> +++ dracut/dracut.cmdline.7.xml
> @@ -507,6 +507,14 @@ Required if multiple ip= lines are used.
> <para>turn on/off biosdevname network interface renaming</para>
> </listitem>
> </varlistentry>
> + <varlistentry>
> + <term>
> + <envar>rd.neednet=</envar><replaceable><0|1></replaceable>
> + </term>
> + <listitem>
> + <para>boolean, bring up network even without netroot set</para>
> + </listitem>
> + </varlistentry>
> </variablelist>
> </refsect2>
> <refsect2>
> --
> 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
>
pushed
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2012-02-07 11:15 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-02 7:59 [PATCH 2/7] auto setup network without netroot Dave Young
[not found] ` <20120202075952.GA12412-4/PLUo9XfK+sDdueE5tM26fLeoKvNuZc@public.gmane.org>
2012-02-06 6:45 ` David Dillow
[not found] ` <1328510722.10153.13.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2012-02-06 7:51 ` Dave Young
[not found] ` <4F2F8666.50907-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-02-06 7:53 ` Cong Wang
[not found] ` <4F2F86F6.5010007-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-02-06 8:43 ` Dave Young
[not found] ` <4F2F92CB.1000804-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-02-06 13:21 ` David Dillow
[not found] ` <1328534517.10153.20.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2012-02-07 1:50 ` Dave Young
2012-02-07 11:15 ` Harald Hoyer
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.