--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: initramfs-tools: Deviation from Documentation/filesystems/nfs/nfsroot.txt WRT multiple net devs
- From: Tim Small <tim@seoss.co.uk>
- Date: Fri, 22 Jan 2010 18:15:52 +0000
- Message-id: <20100122181552.28141.85386.reportbug@ermintrude.buttersideup.com>
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
--- End Message ---