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

Bug#566295: initramfs-tools: Deviation from Documentation/filesystems/nfs/nfsroot.txt WRT multiple net devs



hello vagrant,

could you please review belows patch.
if you see no objection, I'd just merge it.

thanks maks

On Fri, 22 Jan 2010, Tim Small wrote:

> Package: initramfs-tools
> Version: 0.93.4
> Severity: normal
> Tags: patch
> 
> /usr/share/initramfs-tools/scripts/functions attempts to follow the
> semantics described in Documentation/filesystems/nfs/nfsroot.txt with
> respect to IP autoconfiguration, however a significant departure from
> the behaviour is that nfsroot.txt says:
> 
> <device>      Name of network device to use.
> 
>      Default: If the host only has one device, it is used.
>      Otherwise the device is determined using
>      autoconfiguration. This is done by sending
>      autoconfiguration requests out of all devices,
>      and using the device that received the first reply.
> 
> 
> initramfs-tools currently requires a device to be hard-coded, but this
> is not much use if the network device is not known ahead of time.  If
> the device specified in either /etc/initramfs-tools/initramfs.conf or
> on the ip=xxx kernel command line.
> 
> Moreover a combination of the kernel commandline and the contents of
> /etc/initramfs-tools/initramfs.conf is currently used which can be
> misleading.
> 
> With the attached patch, it is possible to specify either:
> 
> DEVICE="all" or DEVICE="" in the /etc/initramfs-tools/initramfs.conf
> 
> The patch is against lenny, I've not had a chance to test it on sid but
> it looks like it should apply (modulo the change of the relevant env
> variable).
> 
> Many Thanks,
> 
> Tim.
> 
> -- Package-specific info:
> -- /proc/cmdline
> root=/dev/md0 ro console=tty0 
> 
> -- /proc/filesystems
> 	ext3
> 	vfat
> 	fuseblk
> 
> -- lsmod
> Module                  Size  Used by
> ftdi_sio               57736  0 
> pl2303                 21508  0 
> ark3116                16004  0 
> usbserial              36592  3 ftdi_sio,pl2303,ark3116
> dm_hp_sw                7168  0 
> dm_multipath           21392  1 dm_hp_sw
> dm_mirror              20608  0 
> dm_log                 13956  1 dm_mirror
> battery                16904  0 
> usbhid                 45920  0 
> hid                    41792  1 usbhid
> ff_memless              9224  1 usbhid
> fuse                   54176  1 
> enclosure              13632  0 
> ipt_REDIRECT            6272  1 
> nls_utf8                6272  0 
> nls_cp437              11136  0 
> vfat                   14976  0 
> fat                    51128  1 vfat
> nls_base               12932  4 nls_utf8,nls_cp437,vfat,fat
> radeon                133920  2 
> drm                    91360  3 radeon
> vzethdev               14720  0 
> vznetdev               24456  1 
> simfs                   8944  1 
> vzrst                 122920  0 
> vzcpt                 106424  0 
> tun                    15492  2 vzrst,vzcpt
> vzdquota               42740  1 [permanent]
> vzmon                  31376  5 vzethdev,vznetdev,vzrst,vzcpt
> vzdev                   7568  4 vzethdev,vznetdev,vzdquota,vzmon
> xt_length               6400  0 
> ipt_ttl                 6144  0 
> xt_tcpmss               6656  0 
> xt_dscp                 7168  0 
> iTCO_wdt               15696  1 
> authenc                 9984  2 
> esp4                   10880  2 
> aead                   11904  2 authenc,esp4
> xfrm4_mode_tunnel       6912  4 
> deflate                 7424  0 
> zlib_deflate           24088  1 deflate
> zlib_inflate           18944  1 deflate
> ctr                     8832  0 
> twofish                11136  0 
> twofish_common         18560  1 twofish
> camellia               25216  0 
> serpent                23296  0 
> blowfish               13056  0 
> des_generic            21376  0 
> cbc                     7936  2 
> aes_x86_64             12416  2 
> aes_generic            32552  1 aes_x86_64
> xcbc                    8968  0 
> sha256_generic         13696  0 
> sha1_generic            6912  0 
> crypto_null             7680  2 
> af_key                 32280  0 
> xt_tcpudp               7680  88 
> xt_DSCP                 7808  34 
> ipt_MASQUERADE          6528  2 
> iptable_nat            11652  1 
> nf_nat_ftp              7296  0 
> nf_nat                 22548  4 ipt_REDIRECT,ipt_MASQUERADE,iptable_nat,nf_nat_ftp
> xt_TCPMSS               8576  3 
> ipt_LOG                10372  46 
> ipt_REJECT              7552  0 
> iptable_mangle          8704  1 
> iptable_filter          8320  1 
> xt_multiport            7424  0 
> xt_state                6656  13 
> xt_limit                7172  50 
> xt_conntrack            8704  0 
> nf_conntrack_ftp       12728  1 nf_nat_ftp
> nf_conntrack_ipv4      24352  16 iptable_nat,nf_nat
> nf_conntrack           82688  7 iptable_nat,nf_nat_ftp,nf_nat,xt_state,xt_conntrack,nf_conntrack_ftp,nf_conntrack_ipv4
> ip_tables              21776  3 iptable_nat,iptable_mangle,iptable_filter
> x_tables               25736  17 ipt_REDIRECT,xt_length,ipt_ttl,xt_tcpmss,xt_dscp,xt_tcpudp,xt_DSCP,ipt_MASQUERADE,iptable_nat,xt_TCPMSS,ipt_LOG,ipt_REJECT,xt_multiport,xt_state,xt_limit,xt_conntrack,ip_tables
> nfs                   252336  1 
> lockd                  70448  1 nfs
> nfs_acl                 7552  1 nfs
> sunrpc                202216  11 nfs,lockd,nfs_acl
> ipv6                  296256  79 vzrst,vzcpt,vzmon
> bridge                 54952  0 
> loop                   64148  0 
> dm_crypt               17032  0 
> crypto_blkcipher       21636  7 authenc,ctr,cbc,crypto_null,dm_crypt
> snd_hda_intel         436440  4 
> snd_pcm_oss            41760  0 
> snd_mixer_oss          18816  1 snd_pcm_oss
> snd_pcm                81800  3 snd_hda_intel,snd_pcm_oss
> snd_seq_dummy           7428  0 
> snd_seq_oss            33280  0 
> button                 11680  0 
> snd_seq_midi           11072  0 
> snd_rawmidi            26784  1 snd_seq_midi
> snd_seq_midi_event     11904  2 snd_seq_oss,snd_seq_midi
> snd_seq                54304  6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
> snd_timer              25744  3 snd_pcm,snd_seq
> snd_seq_device         11668  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
> snd                    63688  15 snd_hda_intel,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
> pcspkr                  7040  0 
> i2c_i801               13596  0 
> i2c_core               27936  1 i2c_i801
> joydev                 14848  0 
> soundcore              12064  1 snd
> snd_page_alloc         13072  2 snd_hda_intel,snd_pcm
> evdev                  14208  5 
> ext3                  124688  3 
> jbd                    51240  1 ext3
> mbcache                12804  1 ext3
> dm_mod                 58864  16 dm_multipath,dm_mirror,dm_log,dm_crypt
> raid1                  23936  3 
> md_mod                 79908  4 raid1
> ide_disk               16512  9 
> ata_generic            10116  0 
> ide_pci_generic         9220  0 [permanent]
> uhci_hcd               25760  0 
> ata_piix               22660  0 
> libata                165600  2 ata_generic,ata_piix
> scsi_mod              160888  2 dm_hp_sw,libata
> dock                   14112  1 libata
> tulip                  54048  0 
> it821x                 11140  0 [permanent]
> ide_core              128156  3 ide_disk,ide_pci_generic,it821x
> r8169                  31492  0 
> ehci_hcd               35980  0 
> intel_agp              31856  0 
> thermal                22816  1 
> processor              42304  1 thermal
> fan                     9352  1 
> thermal_sys            17728  3 thermal,processor,fan
> 
> -- /etc/kernel-img.conf
> # Kernel image management overrides
> # See kernel-img.conf(5) for details
> do_symlinks = yes
> relative_links = yes
> do_bootloader = no
> do_bootfloppy = no
> do_initrd = yes
> link_in_boot = no
> postinst_hook = update-grub
> postrm_hook   = update-grub
> 
> -- /etc/initramfs-tools/initramfs.conf
> MODULES=most
> BUSYBOX=y
> KEYMAP=n
> BOOT=local
> DEVICE=eth0
> NFSROOT=auto
> 
> -- /etc/crypttab
> # <target name>	<source device>		<key file>	<options>
> cryptvz1	/dev/ermintrude/lukstest /keysource/keymaterial luks,noauto
> #cryptswap	/dev/md1		/dev/urandom	swap,cipher=aes-cbc-essiv:sha256,size=256,hash=sha256
> 
> 
> -- System Information:
> Debian Release: squeeze/sid
>   APT prefers testing
>   APT policy: (500, 'testing')
> Architecture: amd64 (x86_64)
> 
> Kernel: Linux 2.6.26-2-openvz-amd64 (SMP w/2 CPU cores)
> Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
> Shell: /bin/sh linked to /bin/dash
> 
> Versions of packages initramfs-tools depends on:
> ii  cpio                          2.10-1     GNU cpio -- a program to manage ar
> ii  findutils                     4.4.2-1    utilities for finding files--find,
> ii  klibc-utils                   1.5.15-1   small utilities built with klibc f
> ii  module-init-tools             3.11-1     tools for managing Linux kernel mo
> ii  udev                          149-2      /dev/ and hotplug management daemo
> 
> Versions of packages initramfs-tools recommends:
> ii  busybox                       1:1.14.2-2 Tiny utilities for small and embed
> 
> initramfs-tools suggests no packages.
> 
> -- no debconf information

> --- initramfs-tools-0.93.4/conf/initramfs.conf.old	2010-01-22 17:52:02.000000000 +0000
> +++ initramfs-tools-0.93.4/conf/initramfs.conf	2010-01-22 17:54:55.000000000 +0000
> @@ -52,10 +52,14 @@
>  #
>  # DEVICE: ...
>  #
> -# Specify the network interface, like eth0
> +# Hard code a device for autoconfiguration.  If the empty
> +# string, or the word "all" then autoconfiguration will occur
> +# on all devices, and the first reply will be used.  May be
> +# overridden using the "ip=..." argument as per the Linux kernel
> +# Documentation/filesystems/nfs/nfsroot.txt
>  #
>  
> -DEVICE=eth0
> +DEVICE=all
>  
>  #
>  # NFSROOT: [ auto | HOST:MOUNT ]
> --- lenny/initramfs-tools/scripts/functions.orig	2009-01-07 14:14:37.000000000 +0000
> +++ lenny/initramfs-tools/scripts/functions	2010-01-22 16:37:26.000000000 +0000
> @@ -269,10 +269,10 @@
>  		;;
>  	""|on|any)
>  		# Bring up device
> -		ipconfig -t 180 ${DEVICE}
> +		ipconfig -t 180 "${DEVICE}"
>  		;;
>  	dhcp|bootp|rarp|both)
> -		ipconfig -t 180 -c ${IPOPTS} -d ${DEVICE}
> +		ipconfig -t 180 -c ${IPOPTS} -d "${DEVICE}"
>  		;;
>  	*)
>  		ipconfig -t 180 -d $IPOPTS
> @@ -292,11 +292,12 @@
>  	esac
>  
>  	# source ipconfig output
> -	if [ -n "${DEVICE}" ]; then
> +	if [ -n "${DEVICE}" ] && [ "${DEVICE}" != "all" ]; then
>  		# source specific bootdevice
>  		. /tmp/net-${DEVICE}.conf
>  	else
> -		# source any interface as not exaclty specified
> +		# source any interface...
> +		# ipconfig should have quit after first response
>  		. /tmp/net-*.conf
>  	fi
>  }
> --- initramfs-tools-0.93.4/initramfs.conf.5.orig	2010-01-22 17:45:51.000000000 +0000
> +++ initramfs-tools-0.93.4/initramfs.conf.5	2010-01-22 18:11:43.000000000 +0000
> @@ -57,7 +57,20 @@
>  
>  .TP
>  \fB DEVICE
> -Specifies the network interface, like eth0.
> +Specifies the network interface which should be used during IP configuration.
> +This can be overridden by arguments supplied on the kernel command line using
> +the 'ip=...' argument as described in
> +\fIDocumentation/filesystems/nfs/nfsroot.txt\fP from the Linux kernel
> +documentation.
> +
> +If this is set to the empty string, or the value "all" i.e.
> +\fIDEVICE\fP=\fI"all"\fP then autoconfiguration will be carried out on all
> +network interfaces, and only the first reply will be used.
> +
> +Note that the network devices will have been renamed as specified in
> +\fI/etc/udev/rules.d/70-persistent-net.rules\fP prior to autoconfiguration,
> +and that a copy of this file (as it was at the time that
> +update-initramfs/mkinitramfs was executed) will be included in the initramfs.
>  
>  .TP
>  \fB ROOT

-- 
maks



Reply to: