I realize that this question is old but I have hit this problem and none of the proposed solutions thus far on this page solved my issue. For me the rules.d folder trick doesn't seem to do anything.
My solution was to simply write a script that goes in the init.d folder to assign DHCP to the wired ethernet port regardless of the name. This is important because I have several Raspberry Pi units and they all came down with this same issue. (very frustrating)
My issue is compounded because I have a network storage folder that needs to be mounted during the boot process. Because the interface didn't come up, this mount failed and things just went from bad to worse for me.
Here is my solution. I hope this will help anyone else that can't find join using the above answers.
Create the file /etc/init.d/raspi-init-network using your favorite text editor. I like to use vi.
cd /etc/init.d
sudo vi raspi-init-network
This is the code that belongs in the file
#!/bin/sh
### BEGIN INIT INFO
# Provides: boot-identify-myself
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: identify-myself
# Description: identify this computer to the main server upon
### END INIT INFO
#
# when using predictible network names for the interfaces,
# the pi doesn't seem to activate the interface correctly so
# this script will force the issue.
#
# it works by getting the interface name of the wired network
# device and using that to initialize dhcp
start()
{
interface=`ifconfig -a | grep "encap:Ethernet" | grep -oh -E "^[^ ]+"`
dhclient $interface
mount -a
}
stop()
{
: # do nothing
}
uninstall()
{
: # do nothing
}
case "$1" in
start)
start
;;
stop)
stop
;;
uninstall)
uninstall
;;
retart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart|uninstall}"
esac
Make sure the script is executible
sudo chmod 755 raspi-init-network
Activate the code so it will execute during the boot process by executing the update-rc.d command.
sudo update-rc.d raspi-init-network defaults 90
After this, I have not had a single issue and I was able to copy the code to all of my Pi units with the same steady results.
NOTE: If you are not mounting drives, you can leave out the "mount -a" line.
TWEAKS: If you are using your wifi you can change the line that starts out "interface=" and edit the first "grep" segment. This first grep grabs the entire line of the interface you wish to use. The second grep takes that line and only returns the interface name.