[Petter Reinholdtsen] > It would be nice if /lib/udev/write_net_rules could be changed to log > a message to syslog when 70-persistent-net.rules is updated, to be > able to figure out when it happen. I in the places I suspect are > related to this issue, add similar instrumentation in the hw-detect > code.
Anyone around to help out with this issue? While waiting for ideas how to find the source of the duplicate entries, I added the following workaround to debian-edu-config, rewriting the 70-persistent-net.rules file to remove duplicate if anyone are present in the pre-pkgsel step. It solve the problem for us for now, but I suspect a generic fix should be added to the code inserting the duplicate entries. diff --git a/share/debian-edu-config/d-i/pre-pkgsel b/share/debian-edu-config/d-i/pre-pkgsel index c298731..34d47a9 100644 --- a/share/debian-edu-config/d-i/pre-pkgsel +++ b/share/debian-edu-config/d-i/pre-pkgsel @@ -209,6 +209,13 @@ EOF echo "$MAILNAME" > /target/etc/mailname fi + # Workaround for bug in d-i/udev, causing duplicate entries in + # /etc/udev/rules.d/70-persistent-net.rules in both d-i and + # /target/. See bug $765577 for the details. + if in-target /usr/share/debian-edu-config/tools/workaround-udev-bug-765577 ; then + error "disabled duplicate udev rule (bug #765577)" + fi + # Make sure that the interfaces are there for the cfengine run if # network isn't already configured if route | grep -q default ; then diff --git a/share/debian-edu-config/tools/workaround-udev-bug-765577 b/share/debian-edu-config/tools/workar new file mode 100755 index 0000000..7054c58 --- /dev/null +++ b/share/debian-edu-config/tools/workaround-udev-bug-765577 @@ -0,0 +1,71 @@ +#!/usr/bin/perl +# +# Implement workaround for bug #765577 by removing duplicate entries +# from the persistent network interface name rule before rebooting for +# the first time, to make sure eth0 is present on the machines with +# fixed network setup in /etc/network/interfaces + +use strict; +use warnings; +use Getopt::Std; + +my $bugurl = "https://bugs.debian.org/765577"; + +my $rulefile = "/etc/udev/rules.d/70-persistent-net.rules"; +my $newfile = "$rulefile.new"; + +my $debug = 0; +my %linecache; +my $modified = 0; +my %opts; + +sub usage { + my $retval = shift; + print <<EOF; +Usage: $0: [-dn] +Fix + -d enable debugging + -n do not modify $rulefile +EOF + exit($retval) if $retval; +} + +getopts("dn", \%opts) || usage(1); + +open(my $rh, '<', $rulefile) || die "error: unable to read from $rulefile"; +my $wh; +if (!$opts{'n'}) { + open($wh, '>', "$newfile") || die "error: unable to write to $newfile"; +} +my $shortline; +while (my $line = <$rh>) { + $shortline = $line; + $shortline =~ s/, NAME="[^"]+"//; + print STDERR "shortline: '$shortline'\n" if $opts{'d'}; + if ($shortline !~ m/^\s*$/ + && $shortline =~ m/^SUBSYSTEM=/ + && exists $linecache{$shortline}) { + # Seen the same line before, skip it. + print STDERR "skipping line\n" if $opts{'d'}; + $modified = 1; + if (!$opts{'n'}) { + print $wh "# Duplicate entry disabled, workaround for $bugurl\n#$line"; + } + next; + } + $linecache{$shortline} = 1; + if (!$opts{'n'}) { + print $wh $line; + } +} +close($rh); +if (!$opts{'n'}) { + close($wh); + if ($modified) { + rename("$newfile", "$rulefile") || die "error: unable to rename $newfile to $rulefile"; + } else { + unlink $newfile; + } +} else { +} +exit ! $modified; -- Happy hacking Petter Reinholdtsen -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org