SW Опубликовано 23 апреля, 2006 · Жалоба 2 dgreen: Можно ли сделать так чтобы точка перегружалась, если wlan интерфейс не пингуется минуту (или настроить интервал)? В Линксисах такая фича есть, очень удобно. Я заметил что в 90% умирает не точка, а wlan, по езернету можно до неё достучаться и перегрузить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 26 апреля, 2006 · Жалоба Вчера вечером запустил базовый вариант новой прошивки. Наконец-то :) Была масса проблем, связанная в основном с моей невнимательностью :) 1. Перешел на uClibc 29 - осмысленно. В нем переписанно много - и теперь работает пошустрее вроде как (пишут) и, что важно - библиотеки занимают меньше места (проверенно). Но это привело к тому, что пришлось менять библиотеки в toolchain - и, о чем я сразу забыл и промучался лишних 3 часа - хидера тоже :) 2. Собрал BusyBox 1.1.2 - тоже меньше стал. А вот inittab читать все равно не хочет. Надо лезть в нутро и смотреть, почему. 3. Люди, если собераете ramdisk через initrd - следите за размеров его в ядре и при создании самого файла ramdisk. Я не заметил, что у меня эти размеры не совпадают (возился с разными ядрами и исправил не в том) - в итоге корень монтировался, все каталоги есть - а файлов - нет :) 4. Отключил хардварный ватчдог в ядре и перенес его в userlevel. Управление через /proc/watchdog. Отдельным скриптом. Работает. Перегружает точку, если убить скрипт. По просьбе SW добавляю в скрипт пинговалку выбранного списка адресов, ifconfig down - ifconfig up, повторную пинговалку и если нет - то ребут (через ватчдог). 5. Начал переделывать систему сохранения файлов. После всех экспериментов с залитым основным набором софта (включая ipcad) получил libux.bin на 700К, root.bin на 730К - итого где-то 2 по 250К куска на флеше свободных. Хочу сделать их единым куском (логически - разбив сохраняемый файл на 2). Думаю, к концу недели закончу. 6. Сегодня почитаю - поразбираюсь с QoS - вроде как нашел поддержку этого зверя в ядре. ------------------------------------------------ Народ, у меня голова не варит в плане того, что надо в точку запихнуть :) Я делаю так (если кому что еще надо - пишите - сразу добавлю) kernel 2.4.18 RW filesystem (1024K на root) RO filesystem (/bin, /lib, /sbin, /usr/bin, /usr/sbin,) BusyBox 1.1.2 (весь список приводить не буду- там много) DHCP Server/Client через BusyBox IPCAD (cisco ip accounting и/или netflow) dropbear (ssh сервер) bridge-utils wireless-utils Скрипты: Почти все лежат в перегружаемой области - можно все менять. Фиксированный только скрипт, загружающий эту облась в RW filesystem. Еще надо доделать авирийную ситуацию - переход точки в telnet-server режим с фиксированным адресом (попробую сделать по нажатию и удержанию кнопки) на случай, если налажали со скриптами. От веб-интерфейса отказался От редактора ee (собирал в прошлых прошивках) - отказался От отдельных пакетов DHCP отказался (есть в BusyBox-е) Какие есть еще предложения ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adron2 Опубликовано 26 апреля, 2006 · Жалоба по мне так надо не всякие фичи довешывать а над стабильностью работать. А то меня в частности задолбали всякие у&0@ы которые частоты постоянно глушат. Так что предлагаю заняться находжением в драйвере кода отвечающего за ack таймаут. А не тупым выкручиванием sifs/difs регистров. И еще сильно интересует изменение кода баркера он же код dsss. Это позволит сильно повысить устойчивость работы в условиях помех. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 26 апреля, 2006 · Жалоба по мне так надо не всякие фичи довешывать а над стабильностью работать согласен, но есть проблема - пока нет ни одной прошики, работающей в качестве клиента со скрытым SSID окромя фирменных (мои не в счет - они пока виснут, хотя я через нее сейчас к нету и подключен дома) сильно интересует изменение кода баркера он же код dsss код dsss выставляется базовой станцией. И то, что БС его берет один на все случаи жизни - это проблема БС. Все равно использовать 8186 в качестве БС никто не будет. Клиент хороший, а выложить пару килобаксов (это минимум) за организацию БС, а потом сэкономить пару сотен и поставить не нормальный двухкарточный KarlNet, а дешевку - по моему мнению просто глупо. А на станции dsss код будет браться с базы. которые частоты постоянно глушат в драйвере кода отвечающего за ack таймаут Adron, а где связь между длительностью ожидания ответа и зашумленностью эфиоа ? Или я не понял что-то с АСК ? над стабильностью работать тут я целиком и полностью согласен. Но стабильность - это прежде всего стабильность софта. А если дрова, которые, к сожалению, HAL - виснут, то либо писать их заново (долго), либо искать обход за счет перестройки софта. Плюс стабильность того же uClibc 26 оставляет желать лучшего, если честно. По крайней мере, после пересборки 28 пропали необяснимые глюки. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 27 апреля, 2006 · Жалоба КАТАСТРОФА (похоже). Достаточно пессимистическое начало, но я серьезен. Начну по поряку. Вчера решил таки заставить бизибоксовский инит поднимать inittab - не одного меня его отсутствие огорчало. Быстро понял, что проблема в запуске ядра сч параметром single - это как всегда реалтековцы постарались. Вынес условной компиляцией в конфиг. Но попутно открылась проблема ... компилятора. В начале инита есть строчка вида if(argc > 1 && !strcmp(argv[1],"-q")) { ...... } я не первый год (даж не первый десяток лет :) ) пишу на сях - и если argc=2, argv[1]="single" - то я понимаю, что попасть внутрь условного блока мы не должны. Так вот, именно в этом месте мы туда попадаем. Попробывал отдельным файликом сделать - не попадаем. Т.е. это не конкретный глюк компилера, а условный - т.е. при определенных условиях он формирует неправильный код. Поскольку такая конструкция используется достаточно часто - мне даже страшно думать, насколько ошибочно собирается ядро именно этим вот компилятором :( Если у кого есть другой toolchain - может проверите у себя ? Код из BusyBox 1.1.2 init/init.c, функция init_main А я пошел искать последнии версии gcc и пытаться собрать их для MIPS ... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 27 апреля, 2006 · Жалоба Да, в догонку - Adron-у о кодах Баркера. Они используются только в 802.11 базовом (1 и 2 Мбит). Выше - CCK и PBCC Здесь лежит неплохое описание, и в конце страницы - табличка используемых кодировок http://www.ferra.ru/online/networks/25619/ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
N.leiten Опубликовано 27 апреля, 2006 · Жалоба КАТАСТРОФА (похоже).Достаточно пессимистическое начало, но я серьезен. Начну по поряку. Вчера решил таки заставить бизибоксовский инит поднимать inittab - не одного меня его отсутствие огорчало. Быстро понял, что проблема в запуске ядра сч параметром single - это как всегда реалтековцы постарались. Вынес условной компиляцией в конфиг. Но попутно открылась проблема ... компилятора. В начале инита есть строчка вида if(argc > 1 && !strcmp(argv[1],"-q")) { ...... } я не первый год (даж не первый десяток лет :) ) пишу на сях - и если argc=2, argv[1]="single" - то я понимаю, что попасть внутрь условного блока мы не должны. Так вот, именно в этом месте мы туда попадаем. Попробывал отдельным файликом сделать - не попадаем. Т.е. это не конкретный глюк компилера, а условный - т.е. при определенных условиях он формирует неправильный код. Поскольку такая конструкция используется достаточно часто - мне даже страшно думать, насколько ошибочно собирается ядро именно этим вот компилятором :( Если у кого есть другой toolchain - может проверите у себя ? Код из BusyBox 1.1.2 init/init.c, функция init_main А я пошел искать последнии версии gcc и пытаться собрать их для MIPS ... Подожди, в бизибоксе у меня стоит строка if(argc > 1 && (!strcmp(argv[1],"single")||strcmp(argv[1],"-s")||strcmp(argv[1],"1")) { ...... } То есть при явном указании однопользовательского режима, переходит в блок TRUE, иначе - в FALSE. Вполне логично все указано. А вот в ядре я искал где указана строка с параметрами загрузки - не нашел, щас еще по заголовкам пройдусь. ЗЫ. Насчет файловой системы и монтирования: #ifdef CONFIG_RTK_MTD_ROOT //if ((err=sys_mount("tmpfs","/var","tmpfs",flags,"size=800k")))modify by Richard H. if ((err=sys_mount("tmpfs","/var","tmpfs",flags,"size=900k"))) printk("mount /var file system fail! error code=%dn",err); else printk("mount /var file system ok!n"); #endif меня смущает то, что этот участок кода нагло впихнули в ядро. Именно с этим сталкиваешься, когда по-умолчанию указан модуль rtk_mtd без gw. То есть формально в ядро железно впихнули что, куда и каким объемом монтировать в файловой системе. Причем, насчолько я понимаю, корневая в данном случае ramfs... ЗЫ. От себя хочу сказать - это пипец, а не програмисты там сидят. Я еще в программировании никто, но так делать никогда не буду, не был, и не делаю... :) ЗЫЫ. Напомню, если интересно спецификации лежат на ftp://193.227.250.26/specs/ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
N.leiten Опубликовано 27 апреля, 2006 · Жалоба Гы. Почему-то пришла в голову мысля: "Против лома нет приема, окромя другого лома". Может наплевать на все и просто закомментировать "лишние" строки в бизибоксе и насиьно заставить его читать иниттаб. Или константой определить многопользовательский режим... Все равно single нам не понадобится. Сори за терминологию, понимать-понимаю, а как по-русски сказать... ЗЫ. И еще, ткните плиз где этот сингл указан, а то уже перелопатил, а откуда main.c берет saved_command_line (она ж extern) не найду. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 27 апреля, 2006 · Жалоба Подожди, в бизибоксе у меня стоит строка if(argc > 1 && (!strcmp(argv[1],"single")||strcmp(argv[1],"-s")||strcmp(argv[1],"1")) { ...... } Это в старом бизибоксе. В новом - обработка опции -q. Проблема не в этом - а в том. что компилятор генерит неправильный код. Обйти то это - нет проблем, заменил отрицание на ==0 - и все. Мне страшно, что где-то в ядре компилятор тоже может так же глюкнуть - вот в чем проблема.. И еще, ткните плиз где этот сингл указан будешь смеяться... смотри в /arch/mips/philips/nino/ prom.c - строка 39 - там добавляется ... я поставил там условную компиляцию - добавлять single или не добавлять Насчет файловой системы и монтирования меня это перестало интересовать - я по другому файловую делаю и CONFIG_RTK_MTD_ROOT у меня не установлен. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 27 апреля, 2006 · Жалоба Причем, насчолько я понимаю, корневая в данном случае ramfs... Если установлен CONFIG_RTK_MTD_ROOT - то корневая sqfs. Поэтому и монтируют /var как tmpfs - писать то туда надо.... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adron2 Опубликовано 27 апреля, 2006 · Жалоба Гы. Почему-то пришла в голову мысля: "Против лома нет приема, окромя другого лома". Может наплевать на все и просто закомментировать "лишние" строки в бизибоксе и насиьно заставить его читать иниттаб. Или константой определить многопользовательский режим... Все равно single нам не понадобится. Сори за терминологию, понимать-понимаю, а как по-русски сказать... ЗЫ. И еще, ткните плиз где этот сингл указан, а то уже перелопатил, а откуда main.c берет saved_command_line (она ж extern) не найду. Я кстати так у себя и сделал :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adron2 Опубликовано 27 апреля, 2006 · Жалоба по мне так надо не всякие фичи довешывать а над стабильностью работать согласен, но есть проблема - пока нет ни одной прошики, работающей в качестве клиента со скрытым SSID окромя фирменных (мои не в счет - они пока виснут, хотя я через нее сейчас к нету и подключен дома) сильно интересует изменение кода баркера он же код dsss код dsss выставляется базовой станцией. И то, что БС его берет один на все случаи жизни - это проблема БС. Все равно использовать 8186 в качестве БС никто не будет. Клиент хороший, а выложить пару килобаксов (это минимум) за организацию БС, а потом сэкономить пару сотен и поставить не нормальный двухкарточный KarlNet, а дешевку - по моему мнению просто глупо. А на станции dsss код будет браться с базы. которые частоты постоянно глушат в драйвере кода отвечающего за ack таймаут Adron, а где связь между длительностью ожидания ответа и зашумленностью эфиоа ? Или я не понял что-то с АСК ? над стабильностью работать тут я целиком и полностью согласен. Но стабильность - это прежде всего стабильность софта. А если дрова, которые, к сожалению, HAL - виснут, то либо писать их заново (долго), либо искать обход за счет перестройки софта. Плюс стабильность того же uClibc 26 оставляет желать лучшего, если честно. По крайней мере, после пересборки 28 пропали необяснимые глюки. Связь между ack и помехами на самом деле есть. Если режить проблему с ack то можно перейти на работу полностью в 802.11g стандарте. Так как большая часть помех создается сетями 802.11b то для 802.11g они будут все равно что излучение микроволновки. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 27 апреля, 2006 · Жалоба то можно перейти на работу полностью в 802.11g стандарте нехочу :) ортогональные каналы внутри одной передающей станции возможны, но зашумленноть эфира не дает гарантии ортоганальности между двумя соседними частотами в g диапазоне - что неизбежно приведет к ступору точки. У нас в городе такой шум, что это почти не реально. Я кстати так у себя и сделал :) а я всегда стараюсь найти и исправить причину :) По крайней мере, при переходе на новую версию (если вдруг надо будет) - не прийдется большу ничего коментить :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 1 мая, 2006 · Жалоба Привет всем - с праздником. Интересный праздник труда - но который никто никогда не работает :) Так о чем это я. Несколько дней провел в всеселом занятии - попытке собрать gcc-4.0.2 + uClibc 0.9.28 ака кросскомпайлер - сделать полный toolchain - как тот, что нам любезно кто-то предоставил (мабуть реалтеки - но в свете последних анализов их кода - я им не верю) Для начала облазил весь инет - тоолчаайн на uClibc делал вообще только кегел - и на gcc-3.3.3 (вот откуда оказвается растут руки) Вообще - у него там много итересного для всех, кто с кросскомпиляторами работает - http://kegel.com/crosstool/ Повоевал несколько дней - взял за основу кегелевские скрипты, плюс куски с uClibc, что-то дописал сам - в итоге получил скриптец (набор скриптов), который после запуска вытягивает все нужное с инета, и копилет полносьью дерево разработки - gcc-4.0.2, binutils и uClibc-0.9.28. Закончил вчера вечером - все вроде нормально, но вот перекомпилеть мои исходники и залить в точку уже не успел. Сегодня вечером проверю - и если все ок - вылью N.leiten-ру на фтп эти скрипты (там немного - 2 с лишним метра). Пока могу сказать только одно - библиотеки стали меньше процентов на 5 - что уже не может не радывать :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
N.leiten Опубликовано 1 мая, 2006 · Жалоба Ккайф, а я разгребаю свою работу и принимаюсь за точки... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zuko Опубликовано 1 мая, 2006 · Жалоба дядечки, а никто не знает как из юзерспейс опросить кнопочку ресет нашей любимой g700ap ? как это вообще сделать - видно из бут лоадера (boot/init/main.c).. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 1 мая, 2006 · Жалоба zuko напрямую тебя к портам не пустит ядро - это его область данных. Можно через iwpriv wlan0 write_mem dw,<адрес>,1 прочесть регистр, куда энта кнопочка приставленна. адрес вроде 0xbd010044 или 0xbd010120 - лень в доку лезть... посмотри в rtl_gpio.c, который в linux-2.4.18/drivers/char Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 1 мая, 2006 · Жалоба сорри, read_mem конечно, а не write_mem сплю с бутылкой пива в руках.. :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zuko Опубликовано 2 мая, 2006 · Жалоба о! спасибо! мне хватит функциональности rtl_gpio. однако, какова изобретательность, засунули это прямехонько в ядро включая вызов flash reset :) милые, бесконечно приятные люди :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
N.leiten Опубликовано 2 мая, 2006 · Жалоба Хм, интересненько. Появилась идейка эти все функции, что там описаны привязать к /proc/, дабы иметь управление, так сказать напрямую... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dgreen Опубликовано 2 мая, 2006 · Жалоба О, в нашем полку в оношении в риалтековским программерам прибыло - теперь еще и zuko (интересный к стати ник - напоминает кой-кого из лабиринта отражений, ага ? :) К тати, спасибо зуко за хорошее название - теперь я знаю, как называть риатековцев - "милые, бесконечно приятные люди" :) Теперь о грустном. gcc-4.0.2 ага кросскомпилер я запустил - но толку ... в ядре 2.4.18 (и во многих болеепоздних версиях) используються конструкции вида #define func(a) array[a].element ..... func(i)++; или func(i)--; По умному называется compound statement так вот - gcc 3.3.* это поддерживает. а выше - нет. Еще одни "милые, бесконечно приятные люди". В общем - пересобираю теперь 3.3.6 - буду делать все на нем :( На 3.3.3 не хочу принципиально - он таки глючный. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SW Опубликовано 3 мая, 2006 · Жалоба Да,вот еще бы RIP/SAP туда... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SW Опубликовано 3 мая, 2006 · Жалоба Кстати, в новой официальной прошивке на g700ap (v2.10 Thr, 30 Mar 2006) есть фича "репитер". В принципе тот же клиент :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Alexnik Опубликовано 4 мая, 2006 · Жалоба SW, Кстати, в новой официальной прошивке на g700ap (v2.10 Thr, 30 Mar 2006) есть фича "репитер". В принципе тот же клиент :) С этой прошивкой она может работать только "репитером" - интерфейс eth0 там вообще в этом режиме обрубан :( Да и смысл с еще одной кривой прошивки от д-линка, короче как клиент эта прошивка работать не будет ... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SW Опубликовано 4 мая, 2006 · Жалоба Работает и как клиент :) не обрубили eth0, единственно точка не пингуется с wi-fi, только по локалке. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...