# net.eth0 failed to start

## ogenos

Hello,

I stumbled upon this problem after upgrading the kernel from 3.3.8 to 3.7.9. I avoided upgrading to 3.5.7 for this very reason. During reboot I get "Warning: net.lo has already been started" and a bunch of "waiting for net.eth0" from many services  that depend on net to be started. When the lame system is up and running I get:

```

# rc-status

Runlevel: default

 syslog-ng                                                                                                                                     [  started  ]

 dhcpcd                                                                                                                                        [  started  ]

 dbus                                                                                                                                          [  started  ]

 net.eth0                                                                                                                                       [ stopped ]

 cupsd                                                                                                                                         [  started  ]

 nfs                                                                                                                                           [  started  ]

 autofs                                                                                                                                        [  started  ]

 consolekit                                                                                                                                    [  started  ]

 gpm                                                                                                                                           [  started  ]

 sshd                                                                                                                                           [ stopped ]

 netmount                                                                                                                                       [ stopped ]

 xdm                                                                                                                                           [  started  ]

 ntpd                                                                                                                                          [  started  ]

 vixie-cron                                                                                                                                    [  started  ]

 xinetd                                                                                                                                        [  started  ]

 local                                                                                                                                         [  started  ]

Dynamic Runlevel: hotplugged

 net.lo                                                                                                                                        [  started  ]

Dynamic Runlevel: needed

 xdm-setup                                                                                                                                     [  started  ]

 rpc.pipefs                                                                                                                                    [  started  ]

 rpc.idmapd                                                                                                                                    [  started  ]

 rpc.statd                                                                                                                                     [  started  ]

Dynamic Runlevel: manual

```

As you see there are some services that stopped. I tried:

```

# /etc/init.d/net.eth0 restart

 * Bringing up interface eth0

 *   192.168.0.102 ...

RTNETLINK answers: File exists                                                                                                                        [ !! ]

 * ERROR: net.eth0 failed to start

```

I have:

```

# route

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

default         TAPI3Directory. 0.0.0.0         UG    202    0        0 eth0

loopback        localhost       255.0.0.0       UG    0      0        0 lo

192.168.0.0     *               255.255.255.0   U     202    0        0 eth0

# cat /etc/conf.d/net

config_eth0="192.168.0.102 netmask 255.255.255.0 broadcast 192.168.0.255"

# ifconfig eth0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.0.102  netmask 255.255.255.0  broadcast 192.168.0.255

        inet6 fe80::2e27:d7ff:fe20:3984  prefixlen 64  scopeid 0x20<link>

        ether 2c:27:d7:20:39:84  txqueuelen 1000  (Ethernet)

        RX packets 14632  bytes 12605733 (12.0 MiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 12988  bytes 2111541 (2.0 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        device interrupt 20  memory 0xfe700000-fe720000

# ping www.google.com

PING www.google.com (74.125.226.48) 56(84) bytes of data.

64 bytes from yyz06s06-in-f16.1e100.net (74.125.226.48): icmp_seq=1 ttl=52 time=4.35 ms

...

```

Can anyone give me a hand with this? 

I posted what I thought relevant to narrow the problem and hope to be helped to a quick solution... 

Thank you.

P.S. When I configured the new kernel I copied the .config file over from the old (and finely working kernel) directory to the new one. During make I selected a few (?) and denied most of the new mind twisting features.

----------

## BillWho

ogenos,

Does any other info for eth0 show in dmesg   :Question: 

----------

## ogenos

Hello BillWho,

```

> dmesg | grep eth0

[    1.970259] e1000e 0000:00:19.0 eth0: (PCI Express:2.5GT/s:Width x1) 2c:27:d7:20:39:84

[    1.970261] e1000e 0000:00:19.0 eth0: Intel(R) PRO/1000 Network Connection

[    1.970295] e1000e 0000:00:19.0 eth0: MAC: 10, PHY: 11, PBA No: 0100FF-0FF

[   11.735055] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

[   13.262439] e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx

[   13.262443] e1000e 0000:00:19.0 eth0: 10/100 speed: disabling TSO

[   13.262480] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

```

I have this in /var/log/messages

```

dhcpcd[2079]: eth0: invalid prefix in RA

```

----------

## BillWho

ogenos,

According to dmesg life should be good   :Confused: 

Since you're assigning an ip, try removing dhcpcd from its runlevel and add the route in /etc/conf.d/net.

You might have to write a /etc/resolv.conf too, but first see if eth0 behaves after the above changes.

----------

## ogenos

Hello BillWho,

Tried your suggestion and couldn't access the internet after that. The server behind the router is DHCP and I believe I need the client started.

I use cross-compilation for my work and that cross-compilation is based upon a functional netmount. So to have some work done today, 

I rebooted my old kernel and thing were fine. Then, to answer your suggestions, rebooted back with the new kernel. Checked the previously 

dead services, they showed up as started. Ran the cross-compiler, it didn't finish successfully. Rebooted again with the new kernel, the 

services (net.eth0,sshd,netmount) died this time. I find this odd. All of the boot warnings/errors are gone except for the "net.eth0 failed to start". 

Exactly what I experienced with kernel 3.5.7 but with it there were no warnings whatsoever. It is the appearances that count after all  :Smile: 

Do you think it is some ipV4 - ipV6 related problem?

Thanks.

----------

## BillWho

 *ogenos wrote:*   

> The server behind the router is DHCP and I believe I need the client started. 

 

I would think you would want a static ip for a server, but in any event if everything works when booted with 3.3.8 then there might be some minor configuration changes required for 3.7.9   :Confused: 

I updated the laptop to 3.7.9 yesterday and so far all is fine with the wireless at least.

This is how my /etc/conf.d/net is setup:

```
config_wlan0="192.168.1.105/24 brd 192.168.1.255"

routes_wlan0="default via 192.168.1.1"

dns_servers_wlan0="167.206.3.155 167.206.3.154"
```

Since you're assigning 192.168.0.102 something like this should work for eth0 unless there are other yet unidentified problems   :Confused: 

----------

## thegeezer

ok so it seems mad but what if you do this 

# ip address del 192.168.0.102 dev eth0

# /etc/init.d/net.eth0 start

----------

## katachi

Sorry to hijack the thread, but I was experiencing precisely the same problem as the OP, albeit with a 3.7.10 kernel (yes, I was also moving from 3.3.8).

 *thegeezer wrote:*   

> # ip address del 192.168.0.102 dev eth0
> 
> # /etc/init.d/net.eth0 start

 

This worked for me, and rc-status shows that net.eth<whatever> is "started".

How can I make this persistent over reboots?

----------

## chiefbag

 *Quote:*   

> Sorry to hijack the thread, but I was experiencing precisely the same problem as the OP, albeit with a 3.7.10 kernel (yes, I was also moving from 3.3..
> 
> thegeezer wrote:
> 
> # ip address del 192.168.0.102 dev eth0
> ...

 

```
rc-update add net.eth0 default
```

----------

## katachi

 *chiefbag wrote:*   

> 
> 
> ```
> rc-update add net.eth0 default
> ```
> ...

 

Actually, just like the OP, my net.eth* are already in rc-update:

```
# rc-update

                acpid |      default                 

             bootmisc | boot                         

                devfs |                       sysinit

                dmesg |                       sysinit

              dovecot |      default                 

                 fsck | boot                         

             hostname | boot                         

              hwclock | boot                         

              keymaps | boot                         

            killprocs |              shutdown        

                local |      default                 

           localmount | boot                         

              modules | boot                         

             mount-ro |              shutdown        

                 mtab | boot                         

             net.eth0 |      default                 

             net.eth1 |      default                 

               net.lo | boot                         

             netmount |      default                

                ossec |      default                 

              postfix |      default                 

               procfs | boot                         

                 root | boot                         

              rsyslog |      default                 

            savecache |              shutdown        

                 sshd |      default                 

                 swap | boot                         

            swapfiles | boot                         

               sysctl | boot                         

                sysfs |                       sysinit

         termencoding | boot                         

       tmpfiles.setup | boot                         

                 udev |                       sysinit

           udev-mount |                       sysinit

              urandom | boot                         

           vixie-cron |      default                 

            xe-daemon |      default
```

I've even removed them and re-added them to rc-update.  The problem is that net.eth1 (in my case) isn't starting at boot, just like the OP. 

thegeezer's suggestion of manually removing the IP from the interface and then starting the init script does the trick, but there must be a reason why the statically-assigned IP is blocking the interface from starting in the first place, no?

----------

## chiefbag

katachi 

Try something like this in your /etc/conf.d/net 

```
config_eth1="192.168.0.102 netmask 255.255.255.0"
```

----------

## katachi

 *chiefbag wrote:*   

> katachi 
> 
> Try something like this in your /etc/conf.d/net 
> 
> ```
> ...

 

I've got that, too:

```
modules="ifconfig"

config_eth0="xxx.xxx.xxx.xxx netmask 255.255.255.0

2001:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64"

routes_eth0="default via xxx.xxx.xxx.xxx

default via fe80::def"

dns_servers_eth0="xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx"

config_eth1="10.180.15.109 netmask 255.255.128.0"

routes_eth1="10.191.192.0/18 via 10.180.0.1

10.176.0.0/12 via 10.180.0.1"

dns_servers_eth1="xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx"
```

I appreciate your help!  Any other ideas?

----------

## chiefbag

Not sure about your net masking

config_eth1="10.180.15.109 netmask 255.255.128.0" 

What is the output of "ifconfig" and "route -n" after the manual restart?

----------

## chiefbag

http://jodies.de/ipcalc?host=10.180.15.109+&mask1=255.255.128.0&mask2=

----------

## katachi

 *chiefbag wrote:*   

> Not sure about your net masking
> 
> config_eth1="10.180.15.109 netmask 255.255.128.0"

 

This is the mask assigned by my provider.

 *chiefbag wrote:*   

> What is the output of "ifconfig" and "route -n" after the manual restart?

 

Before manual restart:

```
# ifconfig eth1

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.180.15.109  netmask 255.255.128.0  broadcast 10.180.127.255

        inet6 fe80::be76:4eff:fe04:6740  prefixlen 64  scopeid 0x20<link>

        ether bc:76:4e:04:67:40  txqueuelen 1000  (Ethernet)

        RX packets 1123  bytes 51768 (50.5 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 6  bytes 468 (468.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        device interrupt 28

# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0         xxx.xxx.xxx.xxx    0.0.0.0         UG    2      0        0 eth0

10.176.0.0      10.180.0.1      255.240.0.0     UG    3      0        0 eth1

10.180.0.0      0.0.0.0         255.255.128.0   U     0      0        0 eth1

10.191.192.0    10.180.0.1      255.255.192.0   UG    3      0        0 eth1

127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo

xxx.xxx.xxx.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
```

...and after the manual restart:

```
# ip address del 10.180.15.109 dev eth1

Warning: Executing wildcard deletion to stay compatible with old scripts.

         Explicitly specify the prefix length (10.180.15.109/32) to avoid this warning.

         This special behaviour is likely to disappear in further releases,

         fix your scripts!

# /etc/init.d/net.eth1 start

 * Bringing up interface eth1

 *   10.180.15.109 ...                                                                                     [ ok ]

 *   Adding routes

 *     10.191.192.0/18 via 10.180.0.1 ...                                                                  [ ok ]

 *     10.176.0.0/12 via 10.180.0.1 ...                                                                    [ ok ]

# ifconfig eth1

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.180.15.109  netmask 255.255.128.0  broadcast 10.180.127.255

        inet6 fe80::be76:4eff:fe04:6740  prefixlen 64  scopeid 0x20<link>

        ether bc:76:4e:04:67:40  txqueuelen 1000  (Ethernet)

        RX packets 1842  bytes 84830 (82.8 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 6  bytes 468 (468.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        device interrupt 28

# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0         xxx.xxx.xxx.xxx    0.0.0.0         UG    2      0        0 eth0

10.176.0.0      10.180.0.1      255.240.0.0     UG    3      0        0 eth1

10.180.0.0      0.0.0.0         255.255.128.0   U     0      0        0 eth1

10.191.192.0    10.180.0.1      255.255.192.0   UG    3      0        0 eth1

127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo

xxx.xxx.xxx.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
```

----------

## chiefbag

katachi

I can't see any difference between the 2 outputs, it looks ok to me.

So maybe I miss read the initial question, the actual problem you have is that services are returning an error at boot that says they can not start because net.eth1 has not started, is that correct?

I am assuming that you have connectivity from your eth1 after boot with out any manual intervention?

EDIT ( IF services are failing because they have no internet connectivity eg ntp you could add an "after" directive in your init.d script for eth.0. In that way eth1 will start before eth.0 then the need net directive can be left alone in the other rc-scripts as your internet connection will be up )

----------

## katachi

 *chiefbag wrote:*   

> the actual problem you have is that services are returning an error at boot that says they can not start because net.eth1 has not started, is that correct?

 

Yes, that's correct.

 *chiefbag wrote:*   

> I am assuming that you have connectivity from your eth1 after boot with out any manual intervention?

 

While rc-status says that eth1 is stopped, I can ping the router on that interface.

 *chiefbag wrote:*   

> EDIT ( IF services are failing because they have no internet connectivity eg ntp you could add an "after" directive in your init.d script for eth.0. In that way eth1 will start before eth.0 then the need net directive can be left alone in the other rc-scripts as your internet connection will be up )

 

Services are actually failing because they are querying the system, which is mistakenly reporting that eth1 is "stopped". I can edit /etc/rc.conf and set rc_depend_strict="NO", which will allow the services to start, so I guess that's my solution...

..but I guess I'm so hung up on this because eth0 is absolutely fine despite being configured by the same /etc/conf.d/net.  There must be a reason for eth1 failing while eth0 is OK.

----------

## katachi

I found my problem.  When consulting a fresh Gentoo install, I noticed that its rc-update contained an entry for only net.lo (e.g. no net.eth0 or net.eth1).

Removing my own existing rc-update entries for net.eth0 and net.eth1 solved my problem of net.eth1 being reported as "stopped" according to rc-status.

After that, I just edited a few init scripts to add an "after" statement so that any failing services would be sure to start after all network interfaces were up.  Hope this helps someone else.

----------

