309 | | = DHCP = |
310 | | |
311 | | == no valid interfaces found == |
312 | | * Arch Linux 4.4.5-1 |
313 | | * lxc 1:1.1.5-4 |
314 | | * dhcpcd 6.10.1-1 |
315 | | |
316 | | * # dhcpcd |
317 | | {{{ |
318 | | dev: loaded udev |
319 | | no valid interfaces found |
320 | | no interfaces have a carrier |
321 | | forked to background, child pid 65 |
322 | | }}} |
323 | | * # dhcpcd eth0 |
324 | | {{{ |
325 | | DUID 00:01:00:01:1e:8a:6a:5e:ba:4a:37:94:4a:9d |
326 | | eth0: IAID 16:b6:47:44 |
327 | | eth0: rebinding lease of 192.168.0.185 |
328 | | eth0: NAK: address in use from 192.168.0.1 |
329 | | eth0: message: address in use |
330 | | eth0: soliciting a DHCP lease |
331 | | eth0: soliciting an IPv6 router |
332 | | eth0: offered 192.168.0.172 from 192.168.0.1 |
333 | | eth0: probing address 192.168.0.172/24 |
334 | | eth0: leased 192.168.0.172 for 86400 seconds |
335 | | eth0: adding route to 192.168.0.0/24 |
336 | | eth0: adding default route via 192.168.0.1 |
337 | | forked to background, child pid 123 |
338 | | }}} |
339 | | |
340 | | * LXCコンテナ内で、udevdが起動しないことが原因の模様 |
341 | | * strace -f dhcpcd |
342 | | * コンテナホスト(検証はKVMゲストで行った) |
343 | | {{{ |
344 | | access("/run/udev/control", F_OK) = 0 |
345 | | |
346 | | open("/sys/devices/virtual/net/lo/uevent", O_RDONLY|O_CLOEXEC) = 9 |
347 | | fstat(9, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0 |
348 | | fstat(9, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0 |
349 | | read(9, "INTERFACE=lo\nIFINDEX=1\n", 4096) = 23 |
350 | | read(9, "", 4096) = 0 |
351 | | read(9, "", 4096) = 0 |
352 | | close(9) = 0 |
353 | | open("/run/udev/data/n1", O_RDONLY|O_CLOEXEC) = 9 |
354 | | |
355 | | open("/sys/devices/pci0000:00/0000:00:03.0/virtio0/net/ens3/uevent", O_RDONLY|O_CLOEXEC) = 9 |
356 | | fstat(9, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0 |
357 | | fstat(9, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0 |
358 | | read(9, "INTERFACE=ens3\nIFINDEX=2\n", 4096) = 25 |
359 | | read(9, "", 4096) = 0 |
360 | | read(9, "", 4096) = 0 |
361 | | close(9) = 0 |
362 | | open("/run/udev/data/n2", O_RDONLY|O_CLOEXEC) = 9 |
363 | | }}} |
364 | | * LXCコンテナ |
365 | | {{{ |
366 | | access("/run/udev/control", F_OK) = -1 ENOENT (No such file or directory) |
367 | | |
368 | | open("/sys/devices/virtual/net/lo/uevent", O_RDONLY|O_CLOEXEC) = 9 |
369 | | fstat(9, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0 |
370 | | fstat(9, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0 |
371 | | read(9, "INTERFACE=lo\nIFINDEX=1\n", 4096) = 23 |
372 | | read(9, "", 4096) = 0 |
373 | | read(9, "", 4096) = 0 |
374 | | close(9) = 0 |
375 | | open("/run/udev/data/n1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) |
376 | | |
377 | | open("/sys/devices/virtual/net/eth0/uevent", O_RDONLY|O_CLOEXEC) = 9 |
378 | | fstat(9, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0 |
379 | | fstat(9, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0 |
380 | | read(9, "INTERFACE=eth0\nIFINDEX=6\n", 4096) = 25 |
381 | | read(9, "", 4096) = 0 |
382 | | read(9, "", 4096) = 0 |
383 | | close(9) = 0 |
384 | | open("/run/udev/data/n6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) |
385 | | write(2, "no valid interfaces found", 25) = 25 |
386 | | write(2, "\n", 1) = 1 |
387 | | |
388 | | write(1, "no interfaces have a carrier\n", 29) = 29 |
389 | | }}} |
390 | | * [root@test /]# systemctl status systemd-udevd |
391 | | {{{ |
392 | | ● systemd-udevd.service - udev Kernel Device Manager |
393 | | Loaded: loaded (/usr/lib/systemd/system/systemd-udevd.service; static; vendor preset: disabled) |
394 | | Active: inactive (dead) |
395 | | Condition: start condition failed at Sat 2016-04-02 08:30:59 UTC; 5h 9min ago |
396 | | ConditionPathIsReadWrite=/sys was not met |
397 | | Docs: man:systemd-udevd.service(8) |
398 | | man:udev(7) |
399 | | }}} |
400 | | * arch:Linux_Containers#Systemd_considerations_.28required.29 |
401 | | * 上記を参考にsystemdの設定を行ったが効果なし |
402 | | |
403 | | * arch:dhcpcd#dhcpcd_and_systemd_network_interfaces |
404 | | > {{{dhcpcd.service}}} can be [arch:Enabled] without specifying an interface. This may, however, create a race condition at boot with ''systemd-udevd'' trying to apply a predictable network interface name: |
405 | | > {{{ |
406 | | > error changing net interface name wlan0 to wlp4s0: Device or resource busy" |
407 | | > }}} |
408 | | > To avoid it, enable dhcpcd per interface it should bind to as described in [arch:dhcpcd#Running]. The downside of the template unit is, however, that it does not support hot-plugging of a wired connection and will fail if the network cable is not connected. To work-around the failure, see [arch:dhcpcd#Timeout_delay]. |
409 | | とのことなので、いずれにせよ{{{dhcpcd.service}}}を使用しないのがよさそう |
410 | | |
411 | | * 古い情報 |
412 | | * [http://blog.oddbit.com/2013/02/01/dhcpcd-under-lxc/ Odd Bits] {{{dhcpcd[492]: eth0: if_init: Read-only file system}}} |
413 | | |
414 | | == Dependency failed for dhcpcd on eth0. == |
415 | | * # systemctl start dhcpcd@eth0 |
416 | | {{{ |
417 | | A dependency job for dhcpcd@eth0.service failed. See 'journalctl -xe' for details. |
418 | | }}} |
419 | | * # journalctl -xe |
420 | | {{{ |
421 | | Apr 10 20:00:56 test3 systemd[1]: Starting of sys-subsystem-net-devices-eth0.device not supported. |
422 | | -- Subject: Unit sys-subsystem-net-devices-eth0.device has failed |
423 | | -- Defined-By: systemd |
424 | | -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel |
425 | | -- |
426 | | -- Unit sys-subsystem-net-devices-eth0.device has failed. |
427 | | -- |
428 | | -- The result is unsupported. |
429 | | Apr 10 20:00:56 test3 systemd[1]: Dependency failed for dhcpcd on eth0. |
430 | | -- Subject: Unit dhcpcd@eth0.service has failed |
431 | | -- Defined-By: systemd |
432 | | -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel |
433 | | -- |
434 | | -- Unit dhcpcd@eth0.service has failed. |
435 | | -- |
436 | | -- The result is dependency. |
437 | | Apr 10 20:00:56 test3 systemd[1]: dhcpcd@eth0.service: Job dhcpcd@eth0.service/start failed with result 'dependency'. |
438 | | }}} |
439 | | |
440 | | * /usr/lib/systemd/system/dhcpcd@.service |
441 | | {{{ |
442 | | [Unit] |
443 | | Description=dhcpcd on %I |
444 | | Wants=network.target |
445 | | Before=network.target |
446 | | BindsTo=sys-subsystem-net-devices-%i.device |
447 | | After=sys-subsystem-net-devices-%i.device |
448 | | |
449 | | [Service] |
450 | | Type=forking |
451 | | PIDFile=/run/dhcpcd-%I.pid |
452 | | ExecStart=/usr/bin/dhcpcd -q -w %I |
453 | | ExecStop=/usr/bin/dhcpcd -x %I |
454 | | |
455 | | [Install] |
456 | | WantedBy=multi-user.target |
457 | | }}} |
458 | | * {{{BindsTo=}}}, {{{After=}}}の行を削除することで対応可能 |
459 | | |
460 | | * see also |
461 | | * [https://bbs.archlinux.org/viewtopic.php?id=164753 Netctl doesn't work in LXC (Linux containers) due to udev dependency / Networking, Server, and Protection / Arch Linux Forums] |
462 | | * [https://bugs.archlinux.org/task/35715 FS#35715 : (netctl) fails to start network inside Linux Container] |