Сейчас etcnet чтобы выяснить, является ли интерфейс беспровдным, ориентируется на наличие каталога /sys/class/net/$iface/wireless [1], которого начиная с ядра 3.6 нет и не будет [2]. В результате, беспроводные интерфейсы, настроенные через etcnet, под ядром 3.6 не работают [3] (используется ядро 3.6.0-un-def-alt1). References: [1] http://git.altlinux.org/gears/e/etcnet.git?p=etcnet.git;a=blob;f=etc/net/scripts/functions-eth;h=d4eecc8c3a9daa14ce7470ad44a4e014f334badf;hb=f5db20291fa2d49730eeccf835c86d46f38be8d4#l34 [2] http://lists.altlinux.org/pipermail/sisyphus/2012-October/358581.html [3] http://lists.altlinux.org/pipermail/sisyphus/2012-October/358580.html
Сразу дополню, что grep по /proc/net/wireless (такой, как на строке 40) также не работает, так как пока интерфейс не поднят, его в этом файле нет. Сам пока в качестве workaround написал echo $1 | grep -q wlan но наверное можно попробовать и что-то типа iwgetid "$1" &>/dev/null (но не знаю, во всех ли версиях wireless-tools она возвращает правильный код ошибки)
Насколько я понимаю, апстримом предлагается использовать iw вместо wireless-tools.
Исправление тут: http://git.altlinux.org/people/sem/packages/?p=etcnet.git;a=shortlog;h=refs/heads/sem Там также фикс коммита e975267b71 и #24637.
у меня нет уверенности, что можно всегда полагаться на существование phy80211 -- у кого-нибудь есть под рукой старая карточка вроде ipw2200 ?
Возможно, ipw2200 найдётся у aris@; у меня в покойном T41, могу выковырять, если будет кому поставить.
(В ответ на комментарий №4) > у меня нет уверенности, что можно всегда полагаться на существование phy80211 У меня, пожалуй, тоже нет такой уверенности. Есть альтернативная идея, которая мне все больше нравится: выкинуть is_wireless() совсем. Она используется только в 2-х случаях: 1. Определить, надо ли запускать скрипт config-wireless. Причем он запускается и при установленной опции CONFIG_DOT1X, что может быть проблемой при наличии файлов default/{iwconfig,iwpriv}. Это проверка не выглядит обязательной, можно выполнять необходимые действия просто при наличии $MYIFACEDIR/{wpa_supplicant.conf,iwconfig,iwpriv}. Это делает ненужным CONFIG_DOT1X. Также теряется и CONFIG_WIRELESS, но мне не кажется это большой потерей. Осмысленность существования default/{iwconfig,iwpriv}, во всяком случае без $MYIFACEDIR/{iwconfig,iwpriv}, тоже вызывает сомнения. 2. Проверка и ругань при USE_IFPLUGD=yes. Думаю, без этого тоже можно прожить.
> Также теряется и CONFIG_WIRELESS Хотя нет, это убирать не надо. Опция должна, как и раньше, указывать надо ли вообще пытаться выполнять config-wireless. Может быть полезно устанавливать CONFIG_WIRELESS=no для не-wireless интерфейсов, например, чтобы лишние проверки не выполнялись.
> Есть альтернативная идея Реализовано и перезапушено туда же.
(In reply to comment #7) > Может быть полезно устанавливать CONFIG_WIRELESS=no для не-wireless Хм, а почему не CONFIG_WIRELESS=yes для wireless, а предполагать не-wireless? IMHO более разумное предположение, тем более с учётом того, что для wireless потребуется больше настройки.
(В ответ на комментарий №9) > (In reply to comment #7) > > Может быть полезно устанавливать CONFIG_WIRELESS=no для не-wireless > Хм, а почему не CONFIG_WIRELESS=yes для wireless, а предполагать не-wireless? > IMHO более разумное предположение, тем более с учётом того, что для wireless > потребуется больше настройки. При CONFIG_WIRELESS=yes просто проверяется наличие файлов конфигурации $MYIFACEDIR/{wpa_supplicant.conf,iwconfig,iwpriv} и реальная работа выполняется только если что-то из этого есть. При CONFIG_WIRELESS=no таких проверок производиться не будет и config-wireles запускать не будет точно. На самом деле это не так уж важно, проверки - это быстро. Но если не-wireless интерфейсов вдруг очень много, то может появиться желание их все-таки отключить.
Коллеги, убедительная просьба потом все подробности во оживлению iwlanX отразить на вики.
> 2. Проверка и ругань при USE_IFPLUGD=yes. Думаю, без этого тоже можно прожить. Да, забыл сказать, google утверждает, что ifplugd вполне умеет работать с wireless интрфесами (хотя я и не проверял). Так что я просто выкинул проверку.
>> 2. Проверка и ругань при USE_IFPLUGD=yes. Думаю, без этого тоже можно прожить. > Да, забыл сказать, google утверждает, что ifplugd вполне умеет работать с > wireless интрфесами (хотя я и не проверял). Так что я просто выкинул проверку. ifplugd с wireless считается неработающим -- в этой багзилле есть тому подтверждения -- поэтому для wireless используется wpa_cli. Хотелось бы также спросить автора alterator-net-eth и компании -- как там собираются выкручиваться, ведь чтобы можно было полагаться исключительно на наличие файликов специального вида, нужно, чтобы их кто-туда изначально положил, правда ?
в конце концов, вернуть на место sys/.../wireless -- это один git revert в ядре, тем более что rationale того коммита 'нам кажется, что этим никто не пользуется, поэтому давайте сэкономим 2 килобайта' и ничего более.
Никто не хочет написать автору коммита, убирающего нужный нам интерфейс ???
> ifplugd с wireless считается неработающим -- в этой багзилле есть тому > подтверждения -- поэтому для wireless используется wpa_cli. Тогда можно проверять так же, по наличию файлов конфигурации. > Хотелось бы также спросить автора alterator-net-eth и компании -- как там > собираются выкручиваться При чем тут проблемы альтератора? В альтераторе можно и iw какой-нибудь использовать, там такие зависимости не страшны. Или вообще свою утилиту написать, не суть. А вот etcnet не должен рассчитывать на наличие разных нестандартных (и не всем нужных) утилит. > в конце концов, вернуть на место sys/.../wireless -- это один git revert в > ядре, Только ради этих 2-х проверок в etcnet собирать аж прям специальное ядро? И потом этот патч поддерживать? Причем эти проверки не так уж нужны, получается. Возможно они и раньше были избыточны. Тот, кто настраивает сеть, лучше знает что это за интерфейс и как его конфигурить. К тому же это позволяет избавиться от совершенно лишней опции CONFIG_DOT1X.
(In reply to comment #13) > >> 2. Проверка и ругань при USE_IFPLUGD=yes. Думаю, без этого тоже можно прожить. > > > Да, забыл сказать, google утверждает, что ifplugd вполне умеет работать с > > wireless интрфесами (хотя я и не проверял). Так что я просто выкинул проверку. > > ifplugd с wireless считается неработающим -- в этой багзилле есть тому > подтверждения -- поэтому для wireless используется wpa_cli. > Хотелось бы также спросить автора alterator-net-eth и компании -- как там > собираются > выкручиваться, ведь чтобы можно было полагаться исключительно на наличие > файликов > специального вида, нужно, чтобы их кто-туда изначально положил, правда ? Это, все, конечно, интересно, но какое это имеет отношение к решению задачи? Если есть возражения по изменениям в v0.9.10-25-g8da1cc1..v0.9.10-29-gcca8091, то просьба их озвучить. Если нет возражений, то просьба смержить. :) (In reply to comment #14) > в конце концов, вернуть на место sys/.../wireless -- это один git revert в > ядре, > тем более что rationale того коммита 'нам кажется, что этим никто не > пользуется, > поэтому давайте сэкономим 2 килобайта' и ничего более. Давайте мы не будем искусственно ограничивать область применения etcnet.
проблема состоит в том, что предлагается включить кумулятивный патч, затрагивающий более того, что необходимо для решения этой конкретной проблемы.
> проблема состоит в том, что предлагается включить кумулятивный патч, > затрагивающий более того, что необходимо для решения этой конкретной > проблемы. Ок. http://git.altlinux.org/people/sem/packages/?p=etcnet.git;a=shortlog;h=refs/heads/bug27797 Можно еще и два коммита слить в один, если надо.
эти два коммита я и имел ввиду, говоря о кумулятивном патче. уж как-нибудь я бы осилил взять их из середины ветки, будь у меня уверенность, что вот именно так и нужно.
Сложно понять, что при наличии четырех коммитов, два из которых действительно не относятся к этой баге, под словами "кумулятивный патч, затрагивающий более того, что необходимо для решения этой конкретной проблемы" имеются в виду коммиты, напрямую относящиеся к ней. Слил в один и перезапушил.
не нужно больше ничего перезапушивать, я перепишу что есть сам.
в порядке обсуждения: мне кажется разумным выставить дефолтом CONFIG_WIRELESS=no в /etc/net/ifaces/default/options-eth и сохранить CONFIG_DOT1X там же. напомню, он помечен как config(noreplace), так что существующие настройки останутся работоспособными. Во вновь установленных системах CONFIG_WIRELESS=yes предлагается устанавливать поинтерфейсно, где нужно.
ещё подробнее: у нас есть два варианта того, как происходит поднятие интерфейса: немедленный и отложенный, второй реализуется с использованием ifplugd или wpa_cli (но не оба одновременно!). нынешние ручки -- CONFIG_WIRELESS, CONFIG_DOT1X, USE_IFPLUGD -- плохо ложатся на эту схему, поскольку не описывают в точности, какой из вариантов будет выбран, а с исчезновением is_wireless всё стало совсем запутано.
если пытаться привести эти ручки к соответствию их подразумеваемому значению, то: USE_IFPLUGD означает ifplugd (тут однозначно) CONFIG_DOT1X означает wpa_supplicant (неважно, wired или wireless) CONFIG_WIRELESS означает что угодно или ничего вообще.
> CONFIG_DOT1X означает wpa_supplicant (неважно, wired или wireless) > CONFIG_WIRELESS означает что угодно или ничего вообще. Одна из этих опций явно лишняя, т.к. означать они могут только одно и то же. Я в патче решил оставить CONFIG_WIRELESS из тех соображений, что 1. CONFIG_WIRELESS существует гораздо дольше и тут можно считать "так исторически сложилось". К тому же гораздо чаще wpa_supplicant используется все-таки в случае wireless, а не wired конфигурации. 2. Если считать CONFIG_WIRELESS устаревшей, то по уму надо переименовывать и скрипт config-wireless. Но там могут использоваться iwpriv/iwconfig, действительно относящиеся только к wireless. 3. Имя опции CONFIG_DOT1X ничем не лучше CONFIG_WIRELESS. Оно тоже совершенно невразумительное и не отражает сути: во-первых, из него не понять, что речь идет о 802.1X, во-вторых совсем не обязательно, что 802.1X действительно используется, скорее чаще как раз используется wpa-psk.
(В ответ на комментарий №23) > в порядке обсуждения: мне кажется разумным выставить дефолтом > CONFIG_WIRELESS=no Это экономия только на проверке существования файлов, это действительно так критично? Просто положить wpa_supplicant.conf, чтобы он начал использоваться, мне кажется гораздо привлекательнее варианта прописывания еще и опции в options.
etcnet-0.9.10-alt7 -> sisyphus: * Tue Nov 06 2012 Sergey Bolshakov <sbolshakov@altlinux> 0.9.10-alt7 - CONFIG_WIRELESS and USE_IFPLUGD options are mutually exclusive now - do not rely on /sys/class/net/<iface>/wireless anymore (closes: #27797) - added per-iface 'disable_ipv6' sysctl shortcut (closes: #27933) - always use 'resolvconf -d' during ifdown (closes: #24637)
(В ответ на комментарий №27) > (В ответ на комментарий №23) > > в порядке обсуждения: мне кажется разумным выставить дефолтом > > CONFIG_WIRELESS=no > > Это экономия только на проверке существования файлов, это действительно так > критично? Просто положить wpa_supplicant.conf, чтобы он начал использоваться, > мне кажется гораздо привлекательнее варианта прописывания еще и опции в > options. В последней сборке CONFIG_WIRELESS остался без изменений. Но вообще да, это нежелание проверять существование файла там, где этой проверке не место (ifup-common).
Я, собственно, делал проверки на существование файлов в ifup-common чтобы не дергать лишний раз скрипт config-wireless. Впрочем, возможно это действительно экономия на спичках. Кстати, без изменения в profiled_filename_is() при выполнении profiled_filename_exist "" "$IFACEDIR/default/iwconfig" может выполняться что-то типа eval =$IFACEDIR/default/iwconfig и будет ругань.
(В ответ на комментарий №30) > Я, собственно, делал проверки на существование файлов в ifup-common чтобы не > дергать лишний раз скрипт config-wireless. Впрочем, возможно это действительно > экономия на спичках. > Кстати, без изменения в profiled_filename_is() при выполнении > profiled_filename_exist "" "$IFACEDIR/default/iwconfig" > может выполняться что-то типа eval =$IFACEDIR/default/iwconfig и будет ругань. наверное мне следует просто убрать всякую обработку default/iw*
А нельзя ли сделать так, что бы вот такого рода конфиги не надо было править: # cat /etc/net/ifaces/eth0/options USE_IFPLUGD=yes LINKDETECT=auto BOOTPROTO=dhcp TYPE=eth DISABLED=no NM_CONTROLLED=no Странным выглядит необходимость прописывания CONFIG_WIRELESS=no если и так уже есть USE_IFPLUGD.
отчего же нельзя, очень даже можно: http://comments.gmane.org/gmane.linux.kernel/1392395
А каким образом wireless интерфейсы имеют отношение к проводным интерфейсам ? или IFPLUG уже научился работать на wireless ?