[SOLVED]netifrc, eudev
ituser 22 декабря, 2015 - 18:35
Файл /etc/portage/make.conf
Не отрабатывают скрипты net.*
ни для одного интерфейса, кроме lo
Доброго времени суток, уважаемые!
Исходные данные:
Программное обеспечение:
- gentoo 4.0.5 amd64 (Gentoo13, Q4)
- openrc 0.18.4
USE="ncurses netifrc pam unicod"
- netifrc 0.2.2
- eudev 3.1.5
USE="hwdb kmod"
- Файл /etc/portage/package.mask/systemd
sys-apps/systemd
sys-fs/udev
...
USE="bindist mmx sse sse2 udev -ipv6"
...
Сетевая карточка:
- >udevadm test-builtin net_id /sys/class/net/enp0s25
ID_NET_NAME_MAC=enx......... ID_OUI_FROM_DATABASE=....... ID_NET_NAME_PATH=enp0s25
- >udevadm info -q all /sys/class/net/enp0s25
........... IFINDEX=9 INTERFACE=enp0s25 ........
Конфигурация:
- Файл /etc/conf.d/net
modules="iproute2" config_enp0s25="192.168.1.1/24"
- Есть ссылка
/etc/init.d/net.enp0s25 -> ./net.lo
- >rc-status
Runlevel: default syslog-ng [ started ] iptables [ started ] net.enp0s25 [ stopped ] ..........
- >udevadm test -a add /class/net/enp0s25
....... run: 'net.sh enp0s25 start'
Проблема:
При выполнении скрипта
/etc/init.d/net.enp0s25
netifrc не конфигурирует и не поднимает интерфейс enp0s25.
Вместо него делается попытка поднять интерфейс lo в результате чего получаем:
WARNING: net.lo has already been started
P.S. Помогло удаление ссылки net.enp0s25 -> net.lo и копирование net.lo -> net.enp0s25
Но ведь это костыль!
»
- Для комментирования войдите или зарегистрируйтесь
.
Фантазии леннарта (predictable…)?
Не… Не слышал.
ifconfig
в помощь.:wq
--
Live free or die
Тут есть немного про это.
Тут есть немного про это.
ip a; ip l в студию. Если
ip a; ip l в студию.
Если нет - поставить
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
ip l, ip a
После
/etc/init.d/net.enp0s25 start
имеем:
А может просто создать
А может просто создать правила для классического именования интерфейсов?
/etc/udev/rules.d/70-persistent-net.rules:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="ethX"
PS: Терпеть не могу это predictable именование интерфейсов.
Дело не в eudev
После небольшой отладки скрипта
/etc/init.d/net.lo
методом "грубой силы" выяснилось, что какую-бы ссылку на него я не запускал, переменнаяRC_SVCNAME
всегда имеет значениеnet.lo
.Соответственно переменная
IFACE
приобретает значениеlo
.А почему так происходит?
Тут я и теряюсь...
Костыль
Помогло следующее:
Но это нарушает концепцию netifrc. Т.е. это не решение проблемки.
/
Ты Handbook внимательно читал?
:wq
--
Live free or die
Вроде
Особенно раздел
D. Gentoo Network Configuration
подразделы1а Getting started
и2.d. Network Interface Naming
Что-то не дочитал?
З.Ы. в первом посте было сказано:
?
Тебе не кажется странным:
ЗЫ:
/etc/conf.d/net
::wq
--
Live free or die
Согласен
Просто я не хотел показывать реальные адреса.
Точно так же может показаться странным и
Просто дело не в адресах/паролях/явках.
Дело в "костыле", который я описал.
Повторю Суть.
/etc/init.d/net.enp0s25 -> net.lo
При "ручном старте" интерфейса enp0s25 (
/etc/init.d/net.enp0s25 start
) стартуется не enp0s25, а locp net.lo net.enp0s25
решает проблемку./
Самое смешное не в этом, а в том, что IRL в рамках общего случая оно совсем не «predictable».
Но, помнится, упоминалось о возможности проблем вследствие коллизий при упорствовании в использовании классических имён (
ethX
).Конечно было бы правильно доисследовать гипотезу до некоторой завершйнной точки…
Но я просто выбрал подходящую альтернативу (варианты
nicX
,lanX
).:wq
--
Live free or die
Вместо малоинформативных
Вместо малоинформативных огрызков конфигураций ты бы лучше показал полные конфиги и USE-флаги для соответствующих пакетов и сервисов.
USE
Обновление Gentoo13-2015Q4
USE-флаги пакетов стандартные.
Замаскированы пакеты
systemd
иudev
.В глобальных USE-флагах выставлено
udev
и-ipv6
netifrc и именование сетевых интерфейсов
Задумался над содержанием
/etc/conf.d/net
, независимым от имени сетевого интерфейса.Файл
/etc/conf.d/net
- кусок shell-скриптаЧто-то в духе (нужное раскоментиорвать):
## kernel naming
#LanIf0="eth0"
## eudev predictable naming
#LanIf0="enp0s25"
## eudev custom naming
#LanIf0="hwEth0"
ituser написал(а): Задумался
Быть может я Вас не понимаю, но зачем городить абсракции в файле /etc/conf.d/net?
Есть же getopts, вот и пользуйтесь им на здоровье.
Не искать при изменении имени интерфейса
Например:
## kernel naming
#LanIf0="eth0"
## eudev predictable naming
#LanIf0="enp0s25"
## eudev custom naming
#LanIf0="hwEth0"
eval config_${LanIf0}="192.168.1.1/24"
.
Нет, это не решение - тоже костыль. В /sys/class/net должны быть все сетевые, найденные eudev'ом.
Почему openrc не ходит по ссылкам - интереснее.
/
У меня ходит.
Так что вопрос скорее к общему упадку культуры.
:wq
--
Live free or die
willy написал(а):Нет, это
Предлагается не решение проблемы с udev - просто проблемы нет.
Предлагается шаблон для
/etc/conf.d/net
, который будет не зависеть от того, какой из трёх вариантов именования (kernel, udev-predictable, udev-custom) используется в данный момент.Изменил вариант именования - изменил одну строку на интерфейс в
/etc/conf.d/net
.Почему не ходит? Ходит. Но, только по абсолютным. Смотрите решение
/
Где-то здесь фигня.
Потому что у меня, как у тов. Егорова, тоже всё замечательно работает с прописанными в Handbook'е символьными ссылками.
:wq
--
Live free or die
Так и у меня теперь ходит!
Доброго Времени суток!
Все ссылки по "Настенной Книге" работают.
НО, только абсолютные.
Попробуйте сделать относительную ссылку (которая помогает при глупом/тупом копировании).
Думаю возникнут проблемки с netifrc.
Ведь есть разница между:
и
Вот в эту разницу я и "воткнулся"!
.
В использованной мной инструкции было:
(обратите внимание на отсутствие указаний на каталог во втором случае)
:wq
--
Live free or die
А как к такому относИться?
?
Это из netifrc/README...
У Вас не указан каталог для назначения. Что "подгребается" по умолчанию?
Я был глуп и указал явно. Но не абсолютно.
А, например, у OpenRC какой каталог будет выступать в какчестве "
.\
" ?А у netifrc?
/
Неверно.
runscript
!=shell
.Да и шеллы бывают разные…
Нарушение логики.
Имена сетевых устройств назначаются где-то в
/etc/udev/rules.d/80-net-name-slot.rules
:wq
--
Live free or die
Подправил первый пост:
Подправил первый пост: добавил информации.
Решение
Моя глупость заключалась в том, что я использовал относительные ссылки:
Необходимо использовать только абсолютные ссылки:
Всё-таки чего-то я не дочитал!
хм. всегда делал cd
хм. всегда делал
ituser написал(а): Моя
Нет, можно использовать и относительные, но БЕЗ указания директории. То есть не /etc/init.d/enp0s25 -> ./net.lo а /etc/init.d/enp0s25 -> net.lo. Почему так - отсылаю читать маны по dirname, readlink и прочим связанным с разрешением канонического пути командам.
Нейтральность - высшее достижение сознания!
Очередная правка первого сообщения
...привёл подраздел "Есть ссылка" в соответствие первому вопросу (относительная ссылка)...
Может тему пора сменить?
С Новым Годом и Рождеством!
Благодарю всех участников этого обсуждения.
Особая благодарность Anarchist и Pinkbyte за посыл в нужном направлении.
Если в системе eudev, то по
Если в системе
eudev
, то по почему интерфейсenp0s25
, а неethX
?.
Наск-ко мне не изменяет склероз, это зависит от наличия в /etc/udev/rules.d/ файла 70-persistent-net.rules
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Ах, ну да, правильно.
Ах, ну да, правильно.
Не совсем так
Файл
/etc/udev/rules.d/70-persistent-net.rules
используется для пользовательского именования (user/custom naming).Постоянные (predictable) имена задаются в файле правил
/lib/udev/rules.d/80-net-name-slot.rules
.Если удалить последний файл или сделать ссылку
/lib/udev/rules.d/80-net-name-slot.rules -> /dev/null
, то имена останутся "ядерные" (ethX).