* [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[parent not found: <20120202075952.GA12412-4/PLUo9XfK+sDdueE5tM26fLeoKvNuZc@public.gmane.org>]
* 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
[parent not found: <1328510722.10153.13.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>]
* 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
[parent not found: <4F2F8666.50907-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* 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
[parent not found: <4F2F86F6.5010007-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* 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
[parent not found: <4F2F92CB.1000804-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* 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
[parent not found: <1328534517.10153.20.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>]
* 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.