Вопрос или проблема
Итак, у меня есть встроенная система, которую я создал с помощью Yocto. Я пытаюсь включить DHCPv6. Но когда я пытаюсь вывести интерфейс в онлайн, ifup говорит, что не может найти программное обеспечение для DHCPv6, хотя dhcpcd установлен. И dhcpcd работает, если я запускаю его вручную.
root@1234:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.5.80
netmask 255.255.255.0
gateway 192.168.5.1
iface eth1 inet6 dhcp
root@1234:~# ip a show dev eth1
8: eth1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue qlen 1000
link/ether ce:e6:83:59:f1:93 brd ff:ff:ff:ff:ff:ff
inet 169.254.23.45/16 brd 169.254.255.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::468b:6249:e50b:a437/64 scope link
valid_lft forever preferred_lft forever
root@1234:~# which dhcpcd
/sbin/dhcpcd
root@1234:~# ifup eth1
No DHCPv6 client software found!
ifup: failed to bring up eth1
root@1234:~#
Обратите внимание, что eth1 – это просто фиктивный интерфейс на данный момент, чтобы я не разорвал свое ssh-соединение, экспериментируя с eth0, который, собственно, там, где я хочу добавить DHCPv6.
Ответ или решение
Ваша проблема связана с тем, что ifupdown не может найти программное обеспечение для DHCPv6, несмотря на установленный dhcpcd. Это может быть вызвано несколькими причинами, которые стоит детально рассмотреть.
Возможные причины проблемы:
-
Неправильная конфигурация
ifupdown
:- Инструмент
ifupdown
может не поддерживать GPIOV6 в вашей текущей конфигурации. В файле/etc/network/interfaces
, вы указалиinet6 dhcp
для интерфейса eth1. Однакоifupdown
может искать другой клиент DHCPv6, а не dhcpcd, что вызывает ошибку.
- Инструмент
-
Неточный путь до dhcpcd:
- Хотя утилита
dhcpcd
установлена по пути/sbin/dhcpcd
,ifupdown
может не распознавать этот путь, если он не прописан в конфигурационных файлах или в PATH.
- Хотя утилита
-
Отсутствие поддержки dhcpcd в ifupdown:
- По умолчанию,
ifupdown
может быть сконфигурировано для работы только с другими DHCP-клиентами, такими какdhclient
. Вам может понадобиться указать в конфигурации явное использованиеdhcpcd
.
- По умолчанию,
-
Особенности сборки Yocto:
- Yocto позволяет настраивать образы системы очень гибко, но это может означать, что какие-то стандартные элементы были исключены из конкретной сборки. Проверьте, что все необходимые пакеты и зависимости действительно включены в образ.
Рекомендации по устранению проблемы:
-
Измените конфигурацию
ifupdown
:- Убедитесь, что конфигурационный файл
/etc/network/interfaces
поддерживает использование dhcpcd для DHCPv6. Вы можете попробовать использовать явный вызов:iface eth1 inet6 manual pre-up /sbin/dhcpcd -6 -t 30 eth1 || true
- Убедитесь, что конфигурационный файл
-
Проверьте окружение PATH:
- Убедитесь, что
/sbin
включен в переменную PATH для всех пользователей, особенно для выполнения сетевых сценариев.
- Убедитесь, что
-
Проверьте поддержку и зависимости:
- Убедитесь, что все необходимые библиотеки для работы DHCPv6 с
ifupdown
установлены. Вам возможно потребуется проверить, что в Yocto добавлены все необходимые пакеты и модули для работы сети с IPv6.
- Убедитесь, что все необходимые библиотеки для работы DHCPv6 с
-
Просмотрите документацию Yocto:
- Воспользуйтесь документацией Yocto для получения информации о построении образов со специфической сетевой конфигурацией.
Эти шаги должны помочь вам диагностировать и устранить проблему с обнаружением DHCPv6 клиентского ПО в вашем встраиваемом решении.