All of lore.kernel.org
 help / color / mirror / Atom feed
From: Seewer Philippe <philippe.seewer-omB+W0Dpw2o@public.gmane.org>
To: Bogdan Costescu
	<Bogdan.Costescu-hEciA7+sKtudPOQpRHQ53DeJuz7u0hKX@public.gmane.org>
Cc: Victor Lowther
	<victor.lowther-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Warren Togami <wtogami-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [RFC PATCH] Move actually mounting the root filesystem into its own series of hooks.
Date: Tue, 24 Feb 2009 16:22:09 +0100	[thread overview]
Message-ID: <49A410A1.7000505@bfh.ch> (raw)
In-Reply-To: <Pine.LNX.4.64.0902241430270.22015-qcrbbFV08EMdmw7VdWMmteH3J2bgQ+4lG9Ur7JDdleE@public.gmane.org>



Bogdan Costescu wrote:
> On Tue, 24 Feb 2009, Seewer Philippe wrote:
> 
>> Though I see a small problem: Ever thought about what happens if there 
>> are multiple interfaces on different networks? Only one is valid to 
>> mount the root-fs...
> 
> The Debian initramfs-tools documents as following here the rule from the 
> kernel's nfsroot.txt which allows an ip=... kernel command line 
> parameter which can contain the name of the device. Is this an option 
> that would fit your purpose ?

In my case: no. I need a general purpose netboot init where I don't know which or how many interfaces there are.


>  From what I know, there is no automated way to get that information 
> automatically in the format described, so you'd have to maintain it, 
> possibly in a PXE config file; it's possible to find out what interface 
> was used for PXE booting when using PXELINUX with the 'IPAPPEND 2' 
> option which will add a BOOTIF=mac_address to the kernel command line.

That is correct. Sadly this only works in a PXE environment.


> This might however not be enough: there could be a case where the 
> booting (via PXE) is done on a different network (and interface) than 
> the one where the root NFS is exported. I know that this sounds 
> complicated, but it has been implemented in real life ;-)

Aye. Or similar: Consider a system with an interface into the standardnetwork and one into a lab net. Both yield correct dhcp results but only one is correct for a specific root-server.

To solve this, I'm currently just doing the network stuff sequentially, aborting when I've found the correct interface. The script looks more or less like this (yes, I know its ugly):

...
NETDEVICE=""
for i in $(sed -nr 's/^ *(\w+[0-9]+):.*$/\1/p' /proc/net/dev) ; do
	NETDEVICE=""
	for j in 1 2 3 4; do
	        if (udhcpc --interface=$i -n >/dev/null 2>&1) ; then
			NETDEVICE=$i
			break;
		fi
	        sleep $j
        done

	if [ "$NETDEVICE" = "" ] ; then
                continue
        fi

	NETDEVICE=""
	if (ping -c 2 $NFSSERVER >/dev/null 2>&1) ; then
		NETDEVICE=$i
	fi

	if [ "$NETDEVICE" = "" ] ; then
		ifconfig $i down
		continue
	fi

	NETDEVICE=""
	if (mount -r $NFSOPTS $NFSSERVER:$NFSPATH /newroot >/dev/null 2>&1) ; then
		NETDEVICE=$i
	fi

	if [ "$NETDEVICE" = "" ] ; then
		ifconfig $i down
		continue
	fi
done
if [ "$NETDEVICE" = "" ] ; then
	echo "Error: " #lots of text here
	sh -i
fi
...

Hmm... looking at this, we can do this with Dracut really simple: 

1. Don't start dhclient inside udev. Might even be a good idea, since IMHO udev is "only" there to load modules and set up devicefiles, not necessarily configure the devices. 
2. Use a pre-mount script to up interfaces. dracut could provide a simple script for simple cases which can be overridden with site specific craziness. 
3. A simple mount.nfs would be enough in /mount/

What do you think?

Regards,
Philippe
--
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

  parent reply	other threads:[~2009-02-24 15:22 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-22  6:33 [RFC PATCH] Move actually mounting the root filesystem into its own series of hooks Victor Lowther
     [not found] ` <3188506a1f06de54ee7874fc45261f5c2faf9e79.1235283966.git.victor.lowther-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-02-23 20:07   ` Warren Togami
     [not found]     ` <49A301FF.2090303-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-02-24  0:07       ` Victor Lowther
     [not found]         ` <1235434056.28090.28.camel-76q0VzFBGGr21HsLBtNmTckMGDeJXHgy@public.gmane.org>
2009-02-24  0:24           ` Warren Togami
     [not found]             ` <49A33E43.5010602-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-02-24  0:44               ` Victor Lowther
2009-02-24  8:10           ` Seewer Philippe
     [not found]             ` <49A3AB75.1010805-omB+W0Dpw2o@public.gmane.org>
2009-02-24 11:39               ` Victor Lowther
     [not found]                 ` <1235475578.28090.64.camel-76q0VzFBGGr21HsLBtNmTckMGDeJXHgy@public.gmane.org>
2009-02-24 13:21                   ` Seewer Philippe
     [not found]                     ` <49A3F43F.6000103-omB+W0Dpw2o@public.gmane.org>
2009-02-24 13:49                       ` Bogdan Costescu
2009-02-24 14:19                       ` Victor Lowther
     [not found]                         ` <644FF96C-AAA8-4309-A3C8-B38EA1DE7C45-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-02-24 14:37                           ` Kay Sievers
2009-02-24 15:39                           ` Seewer Philippe
     [not found]                             ` <49A414CD.8070204-omB+W0Dpw2o@public.gmane.org>
2009-02-24 16:07                               ` Victor Lowther
2009-02-24 18:50                               ` Jeremy Katz
     [not found]                                 ` <20090224185034.GA1834-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-02-25  7:25                                   ` Seewer Philippe
2009-02-25 12:13                               ` Victor Lowther
2009-02-24 13:45                   ` Bogdan Costescu
     [not found]                     ` <Pine.LNX.4.64.0902241443320.22015-qcrbbFV08EMdmw7VdWMmteH3J2bgQ+4lG9Ur7JDdleE@public.gmane.org>
2009-02-24 13:47                       ` Seewer Philippe
2009-02-24 13:40               ` Bogdan Costescu
     [not found]                 ` <Pine.LNX.4.64.0902241430270.22015-qcrbbFV08EMdmw7VdWMmteH3J2bgQ+4lG9Ur7JDdleE@public.gmane.org>
2009-02-24 15:22                   ` Seewer Philippe [this message]
2009-02-24  8:00       ` Seewer Philippe
     [not found]         ` <49A3A924.9000003-omB+W0Dpw2o@public.gmane.org>
2009-02-24 11:29           ` Victor Lowther
     [not found]             ` <1235474964.28090.53.camel-76q0VzFBGGr21HsLBtNmTckMGDeJXHgy@public.gmane.org>
2009-02-24 12:24               ` Seewer Philippe
     [not found]                 ` <49A3E70D.9050006-omB+W0Dpw2o@public.gmane.org>
2009-02-24 14:45                   ` Warren Togami
2009-02-24 12:35               ` Thiago Galesi
     [not found]                 ` <82ecf08e0902240435v5ebbb37clea8c8148ce19fa95-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-02-24 15:42                   ` Seewer Philippe
2009-02-24 15:45                   ` Warren Togami
     [not found]                     ` <49A41618.2020807-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-02-24 15:48                       ` Seewer Philippe
2009-02-24 15:50                       ` Thiago Galesi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49A410A1.7000505@bfh.ch \
    --to=philippe.seewer-omb+w0dpw2o@public.gmane.org \
    --cc=Bogdan.Costescu-hEciA7+sKtudPOQpRHQ53DeJuz7u0hKX@public.gmane.org \
    --cc=initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=victor.lowther-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=wtogami-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.