среда, 11 апреля 2012 г.

Грабли в скриптах Gentoo

Как известно, чтобы в gentoo сеть поднималась автоматом при загрузке системы, нужно создать символьную ссылку с net.lo на net.eth0 и добавить последний в boot или в default Делал это много раз, а тут наступил на грабли. Итак, делаю ссылку:
 # cd /etc/init.d
# ln -s ./net.lo ./net.eth0
# rc-update add net.eth0 default
Делаю по привычке:
 # /etc/init.d/net.eth0 restart
 * WARNING: you are stopping a boot service
 * Caching service dependencies ...                                       [ ok ]
 * Bringing down interface lo
net.lo
lo
 * Bringing up interface lo
 *   127.0.0.1/8 ...                                                      [ ok ]
 *   Adding routes
 *     127.0.0.0/8 via 127.0.0.1 ...
Какого лешего перезапускается net.lo? Почему net.eth0 даже не шевельнулся? Нагуглить ничего не удалось, пришлось ковыряться самостоятельно. Оказалось, что символьную ссылку нужно создавать правильно, а именно так:
 # cd /etc/init.d
# ln -s net.lo net.eth0
Вот так. Всё дело в волшебных точках. На каком-то этапе скрипт net.lo, пытаясь определить имя интерфейса, удаляет своём названии всё до первой точки, наивно полагая, что всё оставшееся - и есть название интерфейса. Ну а если там получилось что-то непонятное, то по дефолту имя будет lo.