From: Seewer Philippe <philippe.seewer-omB+W0Dpw2o@public.gmane.org>
To: David Dillow <dave-i1Mk8JYDVaaSihdK6806/g@public.gmane.org>
Cc: "<initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>"
<initramfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: Netroot cmdline arguments
Date: Wed, 10 Jun 2009 09:41:58 +0200 [thread overview]
Message-ID: <4A2F63C6.2020504@bfh.ch> (raw)
In-Reply-To: <1244607992.16191.33.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
David Dillow wrote:
> [ please set your mail client to wrap lines at 72 chars or so ]
Uhh. Sorry, forgot to enable word wrap. Apologies.
> On Tue, 2009-06-09 at 17:35 +0200, Seewer Philippe wrote:
>> Hello all
>>
>> I've been trying to put some more validating in the cmdline parser
>> scripts so we can abort early and tell the user what's wrong with the
>> commandline. We've had a similar discussion concerning netroot cmdline
>> arguments before, but at least for me some things are unclear.
>
> While I applaud the idea of letting the user know there is a problem,
> I'm not sure that doing all of this in the cmdline hook is the best
> place -- given that we also need to validate info coming in from DHCP as
> well. Also, duplicating the parsing code from the netroot handlers
> doesn't seem to be a win in my mind.
I agree there. Duplicating parsing code isn't good. I'm trying to come
up with a solution that is able to parse the cmdline as well as dhcp
root-path.
> Certainly, there are a class of errors that we should catch early on,
> but perhaps effort may be better spent in reporting the errors in the
> netroot handlers?
See above. And personally I prefer to spew as many errors as soon as
possible. First, this makes it easier for later modules, since they can
assume that "all is well". Second, there's a lot of argument
combinations that can lead to a "generic" error without any details. Say
root=dhcp with static ip lines for each interface.
> My opinions on your questions follow, though I should note that having
> implemented much of the legacy option parsing, I'm not completely
> adverse to simplifying our support. I like that we can support so many
> formats, but having written test cases for them I can see the appeal of
> sparse support. It would make documentation easier, anyway. It's easy to
> say "no, we don't do that."
Thanks for answering all the stuff!
As for simplifying the options, I partially agree. Handling so many
different combinations is a pain. But supporting the older legacy
formats is a boon for transition. So I still think if its possible to do
so without having too many ugly hacks we should keep them.
>
>> DHCP
>> ----
>>
>> Format:
>> root=dhcp
>>
>> Use dhcp root-path option. root-path should contain a text as described below
>>
>> ==> Question: Should root-path only follow the proposed Style
>> type:server:... or should we allow any option format, possibly allow
>> combining with dhcp next_server/server-id?
>
> I think we should allow the legacy options to work. We have the code to
> do it.
Very good.
>
>> NFS
>> ---
>>
>> Preferred format:
>> root=nfs[4]:[server:]path[:options]
>>
>> Legacy formats:
>> root=/dev/nfs[4] nfsroot=[server:]path[,options]
>>
>> If server is unspecified it will be pulled from one of the following
>> sources, in order:
>> static ip= option on kernel command line
>> DHCP next-server option
>> DHCP server-id option
>>
>> Other formats:
>> root=nfs[4]
>> Plain "root=nfs" interprets DHCP root-path option as
>> [ip:]path[:options]
>>
>> ==> Question: I've never used/seen root=nfs before. If server-ip is
>> missing in root-path should dhcp next-server/server-id be used?
>
> root=nfs is something I did early on as a shortcut for root=/dev/nfs
> which is supported by the kernel's nfsroot code. Similarly,
> root={/dev/,}nfs4 is an invention to handle newer NFS versions.
>
> If server-ip is missing, then it should be filled in via the server
> argument from the appropriate ip= line, or via dhcpd
> next-server/server-id.
Hmmm... so you say root=nfs is just a short version of root=/dev/nfs? In
that case the documentation isn't up to date, since (see above) root=nfs
says specifically that it uses dhcp root-path.
If this is really a dracut specific "invention" I suggest we drop this.
>
>> NBD
>> ---
>>
>> Preferred format:
>> root=nbd:srv:port[:fstype[:rootflags[:nbdopts]]]
>>
>> nbdopts is a comma seperated list of options to give to nbd-client
>>
>> Legacy formats:
>> nbdroot=srv,port
>>
>> ==> Question: What should root= contain here? Is having no or an empty
>> root= ok?
>
> Legacy would be root=/dev/ndb[0-9]+ but Warren has suggested we drop
> that. With my netroot= patches -- coming soon to a list near you! ;) --
> the NBD handler will default to /dev/nbd0, or will be able to specify
> root=LABEL=/ or root=/dev/lvm-volume/lv-name etc to use the same
> features we get when root is on a local disk.
Hmmm... OK. The point here is that, if say nbdroot= (or iscsiroot=,
nfsroot=) is available, we should just ignore root= completely?
>
>> Other formats:
>> nbdroot=srv:port[:fstype[:rootflags[:nbdopts]]]
>>
>> ==> Same here: empty root ok?
>> root=dhcp nbdroot=srv:port[:fstype[:rootflags[:nbdopts]]]
>>
>> ==> Question: Does this make sense? Isn't Having a specified server
>> conflicting with dhcp?
>
> Maybe, or you can see it as get your IP info from dhcp. I can see that
> this is a bit of a conflict.
Suggestion: We drop this. root=dhcp should stand on its own without
combinations.
>
>> root=nbd nbdroot=srv:port[:fstype[:rootflags[:nbdopts]]]
>>
>> ==> Question: What aboud a /dev/nbd or even more exact /dev/nbd0?
>
> As above -- root=/dev/nbd0 is a dropped syntax for the moment, to be
> resurrected in a new form by netroot=
>
>>
>> ISCSI
>> -----
>>
>> Preferred format:
>> root=iscsi:[<servername>]:[<protocol>]:[<port>]:[<LUN>]:<targetname>
>
>> See: http://tools.ietf.org/html/rfc4173
>>
>> ==> Question 1: The RFC says that DHCP root-path may be used. OK for
>> root=dhcp but what if we provide root=iscsi:... on the cmdline and
>> leave the servername blank? Try to use root-path anyway? Or maybe even
>> use next-server/server-id?
>
> Here, I would stick to the RFC as there are fewer legacy issues. I would
> expect netroot=iscsi:... to behave as though the iscsi:... came from the
> DHCP server and ignore the DHCP root-path option (or at least for the
> fields specified on the command line.)
>
> This is similar to how the kernel's ip= and nfsroot= pull their defaults
> from the DHCP response, but allow it to be overridden by the command
> line options.
>
> If servername is blank, per the RFC we use <targetname> with the
> Discovery Service to find our server.
OK, thanks for clearing this up. Makes it a whole lot simpler.
>
>> ==> Question 2: The RFC specifically says hostnames or ipv6 addresses
>> are allowed for servername. Do we have to support this?
>
> I think we should, yes. IPv6 support is something we're going to want in
> general, but it will present some challenges to our parsing schemes.
>
> Perhaps we would put some limits on using IPv6 in the legacy options (no
> ip= static config for IPv6, require the full nfs:IP:server[:,]opts
> format, etc.)
Indeed it does. And to think further, there are two ipv6 autoconf
possibilities: stateless (router adviced) or stateful (dhcp6).
Legacy options should be ok, since they only contain "addresses". I'd
suggest to add a ip6= option for full ipv6 support later on.
> Supporting hostnames via DNS is almost free. Other schemes such as LDAP
> and NIS would be more problematic I think. Though perhaps there is a
> good way to pull that in. I haven't thought much about it.
NIS/NIS+ is almost dead, and LDAP requires quite a lot of configuration.
I'd say we ignore this.
As for DNS: If we use DHCP, you're correct. It's almost free. But we
don't have any ip= options for static configuration to set the DNS
Server...
>> Other/Legacy formats:
>> iscsiroot=[<servername>]:[<protocol>]:[<port>]:[<LUN>]:<targetname>
>>
>> ==> Question: Same as with nbd. empty or no root=?
>
> With no root, I think we need the root to the LUN option given, which
> defaults to the first LUN on that host if not given.
Again, it's just a question of wheter we can ignore root= or not.
>
>> root=dhcp iscsiroot=[<servername>]:[<protocol>]:[<port>]:[<LUN>]:<targetname>
>>
>> ==> Question: What is the use of root=dhcp and having more specifics?
>
> This has the same conceptual conflict as you note for nbdroot= w/
> root=dhcp.
Again, I suggest we drop this. root=dhcp should stand on its own without
further options.
>
>> root=iscsi iscsiroot=[<servername>]:[<protocol>]:[<port>]:[<LUN>]:<targetname>
>>
>> ==> Question: What aboud a /dev/iscsi or even more exact /dev/iscsi/...lun...?
>
> I don't think we need to invent a new format here. We've got enough
> legacy issues to keep us busy. :)
>
>> root=??? iscsi_initiator= iscsi_target_name= iscsi_target_ip=
>> iscsi_target_port= iscsi_target_group= iscsi_username= iscsi_password=
>> iscsi_in_username= iscsi_in_password=
>> root=??? iscsi_firmware
>>
>> ==> Question: Are these really necessary/used?
>
> I think the first one is unlikely to be all that useful, given the
> limits on the command line (though maybe it is just my version of
> PXELINUX that is the limit.) Also, there are security issues with having
> that information on the command line (not to mention in cleartext on the
> wire.
Suggestion: We drop this.
> I would like to see some way to support reading iSCSI Boot Firmware
> Table (iBFT) from the BIOS to find our root, so we need a way to tell
> dracut to do so. I don't know if that is root=iscsi:firmware or
> root=blah iscsi=firmware or what.
I'm happy with either. since both would result in netroot=iscsi:firmware.
Thanks again,
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
next prev parent reply other threads:[~2009-06-10 7:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-09 15:35 Netroot cmdline arguments Seewer Philippe
[not found] ` <4A2E8130.2050305-omB+W0Dpw2o@public.gmane.org>
2009-06-10 4:26 ` David Dillow
[not found] ` <1244607992.16191.33.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2009-06-10 7:41 ` Seewer Philippe [this message]
[not found] ` <4A2F63C6.2020504-omB+W0Dpw2o@public.gmane.org>
2009-06-10 12:57 ` David Dillow
[not found] ` <1244638667.16191.57.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2009-06-11 7:20 ` Seewer Philippe
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=4A2F63C6.2020504@bfh.ch \
--to=philippe.seewer-omb+w0dpw2o@public.gmane.org \
--cc=dave-i1Mk8JYDVaaSihdK6806/g@public.gmane.org \
--cc=initramfs-u79uwXL29TY76Z2rM5mHXA@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.