How do we want to handle configuring network boot devices?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Warren, Andreas, and I were discussing possible mechanisms for
configuring NFS, NBD, iSCSI, etc going forward, and it was suggested
that we try to document the current ways it is done, and how we may want
to go forward.

Assumptions:
* I've missed some ways of doing this; feel free to point us in the
	right direction.
* IP autoconfig follows the kernel command line described in the same
	document as Kernel nfsroot, with possible compatible extensions.
	This "ip=dhcp" and friends.

Existing standards/implementations:
iSCSI
* root selection via DHCP is documented by RFC4173
	format is iscsi:[SERVER]:[PROTO]:[PORT]:[LUN]:TARGET
	minimum config is "iscsi:::::TARGET"
* RH mkinitrd pulls iSCSI info from host system config
* There appears to be some support for "iSCSI Boot Firmware Attributes"
which may be useful, or not.
	http://en.wikipedia.org/wiki/ISCSI_Boot_Firmware_Table
	ftp://ftp.software.ibm.com/systems/support/system_x_pdf/ibm_iscsi_boot_firmware_table_v1.02.pdf

NBD
* RH mkinitrd uses the DHCP root-path option
	format is nbd:SERVER:PORT:FSTYPE[:MOUNTOPTS]
	you can specify the filsystem type to mount and
	the options to use in the DHCP option
* There does not appear to be a way to configure NBD in RH's mkinitrd
	without using DHCP
* I haven't found other initramfs's using NBD, but I've not searched
	very hard.

NFS
* Kernel command line, as documented in Documentation/filesystems/nfsroot.txt
	root=/dev/nfs
	nfsroot=[ip:]path[,options]
		Replaces %s in path with text IP address
		If option missing, path defaults to "/tftpboot/%s"
		If IP is missing, uses server address from ip= line
* DHCP root-path option, with varying forms
	Using next-server or server-id opt and root-path as pure path:
		${next_server-${server_id}}:${root_path}
	Using root-path as full info:
		server:path
	Current dracut uses DHCP root-path option:
		nfs://server/path
	My udev nfsroot patchset uses DHCP root-path option with command line override:
		[ip:]path[:options]

URI scheme proposed at http://apps.sourceforge.net/trac/dracut/wiki/commandline
	root=nfs://server:port/path 
	root=nbd://server:port/path 
	root=iscsi://server:port/target 


Open issues:
* How to handle authentication data for iSCSI and NFS, if at all.
* How to handle unionfs/aufs mounts?
* How to handle dm-snapshot, eg for LiveCD overlays.
* FCoE/AoE/DBRD/SRP -- I didn't search for examples on these.
* Lustre/network filesystem du jour support -- I think these are
possible, just need to be careful parsing things out. Not
terribly important right now.
* Using the dracut URI scheme above as a strawman, shouldn't
"root=nfs://...." imply "ip=dhcp" if none is given?
* What about multiple devices?
* How many legacy ways of doing this should we support?
* How do we separate options to the network block transport vs the
filesystem mount?
* How do we allow use of these features both via the cmdline and via
DHCP?


My commentary:
* I'd like to support the legacy way of specifying this info as much as
is reasonably possible. People are set in their ways, and it'd be nice
if dracut could just work for them.
* If we don't succeed in DHCPing/mounting the root on the first attempt,
we should loop trying, with a chance for the user to break out each time
-- think overloaded server bringing up a cluster.
* A modified URI scheme like the dracut suggestion may work; use opaque
URI's like the RFC4173 iSCSI root-path, or RH mkinitrd's nbd root-path.
We could source a specific handler for the URI type listed, making it
simpler to add new types in the future.
* While adding vendor-specific DHCP options is not a really good idea in
general, I see cases we may want to support that simply will not fit in
the 255 chars available to us in root-path, or which would make parsing
that be unnecessarily complex.
* When testing things, it is really nice to be able to override the DHCP
config via the kernel command line when possible. It's much cleaner to
edit a single PXE boot file (or add it via the serial console) when
working alongside a production environment -- less to remember to revert
(and restart!)


Ok, put on your asbestos underwear and wade on in. A consensus would be
really helpful as we have quite a few people working in the network boot
area and it would be great if we had a defined way forward for config.

Dave 

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

[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux