openwrt скрипт в автозагрузку
Как добавить команду в автозапуск openWRT?
стартовала при загрузке маршрутизатора.
Добавлял в rc.local, прописывал в /etc/init.d/network, все не привело к результату.
Т.е надо при загрузке маршрутизатора добавлять еще одну строчку в route table.
Подскажите, пожалуйста.
Заранее спасибо!
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Omega2+ & OpenWRT выключить автозапуск Icecast
Добрый день, товарищи! Сам я виндузятник давний, но по воле случая приходится начинать разбираться.
Как добавить программу в автозапуск?
Привет можете подсказать как решить проблему. Вот код прописи в автозапуск: reg:=.
Как добавить программу в Автозапуск
Как добавить программу в Автозапуск?
Как добавить программу в автозапуск?
Здравствуйте ребята! Не подскажите, как можно программно добавить мою программу в автозапуск.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как добавить программу в автозапуск?
как добавить программу в автозапуск в реестре в HKEY_CURRENT_USER?
Как добавить программу в автозапуск?
Подскажите команду которая бы поставило приложение в Win на автозапуск? Код типа: if (/*стоит ли.
Как добавить настройку в автозапуск
Всем привет! Ребят подскажите, как добавить вот эту команду в автозапуск? setxkbmap us,ru.
Как добавить этот ярлык в автозапуск?
Создал новое подключение к Интернету, ввел логин и пароль от провайдера. Как кинуть этот ярлык в.
Включение чего угодно по HTTP без заморочек c OpenWRT
Ставим OpenWRT и настраиваем сетевой интерфейс
Для настройки статического IP в сегменте 192.168.1.x сделаем следующее:
Где 192.168.1.1 — адрес шлюза в нашей сети, а 192.168.1.222 — незанятый IP, который и будет присвоен нашей коробочке. Команда «uci changes» предоставляет возможность просмотреть все внесенные изменения. Я стараюсь не пренебрегать этой возможностью, так как устройство с неправильно настроенным интерфейсом, будучи недоступным извне, превращается в «зомби». На случай, если все таки неприятность произошла, в OpenWRT предусмотрен «режим восстановления»: при загрузке, как только кнопка «WPS» начнет мигать, зажмите ее — MR3020 загрузится с сетевыми параметрами по умолчанию.
Если в сети работает DHCP, можно задать автоматическую конфигурацию:
Вторая строчка необязательна, но может быть крайне полезна для поиска устройства. Можно будет обращаться к устройству не по IP, а по hostname, если сеть это поддерживает. Если хотите на 100% избежать поиска устройства в сети — применяйте статическую конфигурацию.
Полезно также запретить работу встроенного в наш TP-LINK dhcp-сервера:
Все, можно отключать нашу коробочку от компьютера (все равно ssh-сессия уже оборвалась после последней команды) и подключать ее к роутеру или свитчу.
Подключение клавиатуры и проверка управления светодиодами
Сайт H-WRT информирует нас, что для установки клавиатуры нужен лишь модуль kmod-usb-hid.
Установим его:
Самое время подключить клавиатуру и посмотреть, опозналась ли она:
Облом! это совсем не то, что я ожидал. В чем же дело?
Схожий багрепорт быстро находится — разработчики объясняют такое поведение аппаратными ограничениями примененного чипсета. Похоже, находящийся «на борту» USB-хаб не жалует low-speed устройства. Хотя на этом моменте дух Дзен бесследно испарился — не будем опускать руки и попробуем решить проблему подключением клавиатуры через внешний USB-хаб:
Гораздо лучше. Пускай из-за этого пришлось написать «почти получилось» в начале статьи и «способ сервировки» на фото, но так наша «Generic USB Keyboard» опозналась. На клавиатуру всегда создается два «устройства», но даже и не спрашивайте, почему эта конкретная клавиатура назвалась еще и мышью… Так или иначе — мы готовы к «аппаратному хеллоуворлду» — включить светодиод.
Здесь должен торжественно зажечься светодиод «Caps Lock». Те, кого просто радует этот факт — могут переходить к следующему шагу. Те, кто не может двинуться дальше, не узнав, что за бредовое заклинание приведено выше — заглядывают в
На все, что происходит с клавиатурой (или другим устройством ввода) генерируется событие ввода, видимое в соответствующем ему файле (в нашем случае /dev/input/event0, но это частный случай, обусловленный тем, что других устройств ввода не подключено). Структура события определяется в заголовочном файле input.h:
Где type сигнализирует о типе элемента ввода (кнопка клавиатуры или перемещение мыши/джойстика и т.п ), code — код элемента, специфичный для каждого типа (например, для клавиатурного события EV_KEY здесь будет передан номер клавиши), а value — это, соответственно, какое воздействие и какой величины (для устройств, поддерживающих это) было произведено. Например, при нажатии клавиши «Q» на клавиатуре мы получим:
Скрипт
Чтобы автоматизировать управление светодиодами нам нужен скрипт. Для того, чтобы на следующем шаге мигать ими по HTTP — сразу положим его в папку /www/cgi-bin:
Теперь управлять светодиодами легко. Чтобы включить, скажем, светодиод «Scroll Lock», пишем:
Можно еще «мигнуть» (scroll_pulse). Как говорит уже многими здесь уважаемый Anant Agarwal: «I could do this all day. This is so much fun!». Но все же, перейдем к следующему этапу и создадим…
Веб-интерфейс
Какой же веб-интерфейс без веб-сервера? Проверим его наличие:
Если в выводе есть строка Status: install user installed (а это будет так, если вы используете Attitude Adjustment 12.09 beta) то сервер уже установлен. Иначе установим его и настроим его запуск:
Маленький нюанс — браузер, конечно, не имеет доступа к папке /var на сервере, поэтому предоставим ему возможность прочитать файл ledstate оттуда, куда он «дотягивается», с помощью симлинка:
Ссылку на скачивание этой странички, немного измененной, можно найти почти в самом в конце статьи. Теперь можно мигать светодиодами клавиатуры, тыкая в чекбоксы. Но, даже не учитывая того, что мигающим светодиодом сейчас никого не удивить, придется согласиться с тем, что это абсолютно бесполезно с практической точки зрения. Поэтому примемся за железо!
Схема
Что всегда стоит принимать в расчет — это элементарая электробезопасность. Даже тестовое устройство — особенно тестовое устройство, которое наверняка будет болтаться где-нибудь на проводках или будет забыто включенным среди прочего хлама на столе — надо защитить от случайного касания токоведущих частей, если оно предусматривает подключение к сети. Иначе по вам может потечь абсолютно реальный электрический ток.
Я собрал варианты 3 и 6 на макетке, получилось так:
Несмотря на то, что это не более чем «proof of concept», мне захотелось хоть немного «навести красоту», пускай и в собственной извращенной трактовке. Такие уж нынче времена: внешний вид ценится не меньше, а порой и беспричинно больше функциональной нагрузки. Что и приводит нас к следующему этапу.
Косметика и демонстрация
Вторая и третья строчка «перепрятывают» файл веб-интерфейса роутера (если он установлен) в отдельную папку, теперь он доступен по адресу _адрес_роутера_/luci. А «главной» страничкой, доступной по адресу сервера, становится наша.
Ну и, напоследок — говорят, что картинка стоит тысячи слов. В этом видео почти тысяча картинок. Надеюсь, оно хоть как-то уравновесит мою многословность.
Делаем Hyperboria hotspot. Пособие по ковырянию роутера
В этой статье я попытаюсь рассказать, как прошить на роутер OpenWrt и установить туда cjdns. По правде говоря, изучение тонкостей этого дела отняло у меня много времени и нервов. В основном потому, что многое в OpenWrt недодокументировано, и приходилось многое искать по форумам и додумывать. Думаю, это как раз тот случай, когда лучшей документацией являются исходники. Так что эту статью я попытаюсь написать такой, какую я хотел бы прочитать в самом начале этого пути.
Итак, первое, что следует сделать, это пойти на сайт OpenWrt и посмотреть список поддерживаемых устройств: wiki.openwrt.org/toh/start
Если не нашли вашу железку, не растраивайтесь. Мы ведь всегда можем портировать OpenWrt на новое утройство, следуя этой инструкции: kamikaze.openwrt.org/docs/openwrt.html#x1-540002.3 Хотя, сначала нужно как-то вытянуть исходники ядра у производителя.
Теперь немного теории. В OpenWrt для хранения rootfs используется две файловые системы: SquashFS и JJFS2. Так же вожможно подключение других, но об этом позже.
SquashFS — сжатая статическая файловая система. Она — то, что собственно и прошивается. За счет её статичности сжатие в ней лучше.
JJFS2 — сжатая динамическая файловая система, в которую записываются изменения файлов. Она монтируется как-бы поверх SquashFS при помощи фичи ядра Linux Overlayfs. Появилась она начиная с версии ядра 3.11.
Как уже было сказано выше, в SquashFS сжатие лучше, так что у нас есть больше шансов уместить все, что нужно, собрав прошивку самостоятельно, чем скачав готовый образ и доставив нужный пакет. Для тех, кто собирается ставить готовую минимальную прошивку, вот сборки от разработчиков. Они рассортированы по архитектурам (колонка target в списке поддерживаемого оборудования) и по типу памяти (nand и все остальные), названия файлов включают в себя название роутера. Прошивки, содержащие в названии «sysupgrade» предназначены для перепрошивки средствами уже установленной OpenWrt. Содержащие «factory» можно скормить вебформе заводской прошивки. Не перепутайте.
Приступим к сборке.
Внимание! Сборка не должна проводится от суперпользователя или в fakeroot.
Для начала загрузим buildroot. Здесь есть список веток и команд для их загрузки. Мы же будем собирать Attitude Adjustment stable:
Репозиториев с beta, beta2, rc1 и rc2, видимо, нету, а жаль, потому что пакет, собраный для stable на beta не стал, только ругнулся, что git commit id ядра не тот, который нужен (хотя верси совпадали).
Далее, следуя инструкции, добавляем в список мест, откуда будут грузится исходники «репозиторий» с cjdns.
Добавляем в файл feeds.conf строку
Далее, грузим исходники всех пакетов:
и настраиваем все, что нужно.
Выбираем «Target System» (ту, которая указана в списке поддерживаемых устройств возле названия вашего роутера), Subtarget (если в роутере постоянная память не NAND, смело выбираем Generic), «Target Profile» (ищем название роутера, под который будем собирать). В «Target Images» обычно ничего менять не надо. Выбираем пробелом.
На данном этапе все нужные драйверы уже отмечены (благодаря «Target Profile»). Далее ходим по остальным веткам и выбираем нужные нам пекеты (Именно нам. По идее, и так работать будет). Поиска здесь не предусмотрено, так что искать будем так:
«CATEGORY» — название раздела, «SUBMENU» — название подраздела. Кстати, такая запись может быть не одна. Дело в том, что из одного набора исходников может собиратся несколько разных пакетов.
UPD: Хабрапользователь klirichek подсказал, что поиск здесь таки есть. Чтобы войти в него, нужно в menuconfig нажать «/».
Получаем списочек объектов, название которых включает в себя введенный запрос, с полным описанием и расположением в меню.
А теперь расскажу об одном баге, который мешает установке cjdns. В зависимостях cjdns есть пакет с чудным названием nacl. Он используется при сборке других пакетов, но при этом бинарный пакет из него не собирается. В то же время, он появляется и в зависимостях бинарного пакета cjdns. В результате, чтобы установить уже собранный пакет с cjdns, нужно перед этим установить не существующий в собранном виде пакет nacl.
и убераем из «DEPENDS» «+nacl». Должно получится так:
В menuconfig находим nacl (в разделе «Libraries») и устанавливаем в
Советую при сборке использовать не какой-то mate-terminal, а, к примеру tmux. Будет не очень приятно, если за время сборки, к примеру, упадут иксы.
Его я извлек из прошивки, взятой с сайта OpenWrt и немножко подправил. Что значат поля _orig_ifname и _orig_bridge не спрашивайте, сам не знаю. Отмечу, что этот конфиг предусматривает, что роутер торчит в одну и ту же сеть всеми своими портами, а не, например, каким-то одним в интернет.
Теперь вернемся к cjdns. Чтобы пакет таки собрался, нужно его отметить в menuconfig: «Network»->»Routing and Redirection»->»cjdns».
Итак, настал торжественный момент:
Теперь можно прошивать.
Как уже говорилось выше, openwrt-ar71xx-generic-tl-mr3220-v1-squashfs-factory.bin можно скормить вебморде заводской прошивки. Еще раз повторю уже стандартное предупреждение, встречаемое чуть ли не везде, где пишут о процесе прошивки: ни в коем случае не прошивайте по wi-fi!
Прошивка при помощи уже установленого OpenWrt.
Заходим по ssh, проверяем, сколько оперативной памяти свободно:
Файл с новой прошивкой должен будет лежать в tmpfs.
Далее правим файл /etc/sysupgrade.conf. В нем должны лежать имена файлов и папок, которые сохранятся при перепрошивке (путем занесения в jffs2). Комментарии выделяются символом #. При сохранении конфигов таким образом возможны разные казусы, так как их формат может поменятся.
Копируем в /tmp на роутере (туда примонтирован tmpfs):
Проверяем целостность образа. На роутере считаем хеш файла образа:
и сверяем с хешем файла на компьютере.
Скрещиваем пальцы и прошиваем:
Если все прошло хорошо, роутер должен перезапустится. Заходим по ssh и с помощью passwd устанавливаем пароль root.
Существуют так же и другие способы прошивки, которые вариируются в зависимости от модели роутера. На части роутеров возможна прошивка с помощью загрузчика, есть и более хардкорные методы, предпологающие работу с паяльником.
Пакетный менеджер.
Чтобы добавить репозиторий, находящийся в папке, нужно дописать
Отмечу, что подписывание пакетов, как в apt-get, не предусмотрено, как и забирание их по https. Насчет https, конечно, можно извернутся, но все упирается в неправильно подписаный сертификат на downloads.openwrt.org. Хотя, он не самоподписный, а значит, что, извернувшись вдвойне, может что-то получится.
Монтируем дополнителную память с флешки (если нужно).
На флешке должны быть соответствующие разделы. Для монтирования файловой системы лучше всего подойдет ext4. Итак, у нас есть размеченая флешка, которую мы втыкаем в порт на роутере. Проверяем, появились ли в /dev файлы раделов флешки. Если нет, доставляем нужные модули.
Далее, пытаемся монтировать:
Если не получилось, опять же, ставим нужные пакеты. Далее
Чтобы изменения вступили в силу, делаем
Можно так-же монтировать по uuid, чтобы не было казусов при подключении нескольких устройств по usb. Для этого нужно убрать параметр «device» и добавить «uuid» с, собственно, uuid раздела.
Подробнее о параметрах здесь: wiki.openwrt.org/doc/uci/fstab#mounting.filesystem
Монтируем swap.
Для этого нужно, чтобы в конфиге было нечто вроде этого:
Cтавим cjdns (если он не поместился в squashfs).
Копируем пакет с помощью scp в /tmp на роутере и устанавливаем с помощью opkg. Далее создаем конфиг cjdns. На некоторых роутерах это может длится долго. Далее добавляем в конфиг ноды, раскомментирываем раздел ETHInterface и прописываем интерфейс br-lan вместо eth0.
Настраиваем wi-fi в режиме ad-hoc.
Открываем /etc/config/wireless и добамляем секцию вроде этой:
Опция «device» должна содержать название «устройства», обозначеного в секции «wifi-device». У меня она выглядит так:
Тут есть один нюанс. Не все роутеры умеют поднимать несколько беспроводных сетей с одного физического устройства. Так что если после uci commit wireless ; /etc/init.d/wireless restart одна из сетей не поднялась, то прийдется обойтись одной. Чтобы отключить одну из сетей, достаточно установить опцию disabled в 1.
Теперь проверяем, не попала ли новосозданная сеть в bridge с нашей локальной сетью. Сначала определяем, какому интерфейсу какая сеть соответствует:
Если наш ad-hoc таки слинковался с локальной сетью, идем править /etc/config/network. Ищем секцию interface с опцией «type» установленой в «bridge» вроде этой:
Теперь прописываем нужный интерфейс в конфиге cjdns. Секция ETHInterface, кстати, может выглядеть и так:
На десктопе такое работает, но на роутере, почему-то, с таким конфигом cjdroute падает. Так что, если у вас тоже это не работает, то прописываем что-то одно.
Создаем скрипт автозапуска.
Подробнее о стартовых скриптах в OpenWrt можно почитать здесь: wiki.openwrt.org/doc/techref/initscripts
Фух, вроде, все. Удачной прошивки, и да не прийдется вам после нее работать паяльником!
UPD: Разработчики cjdns в последнем коммите в сборочные скрипты потерли все файлы и в README.md оставили сообщение, что отныне надо пользоваться сборочными скриптами от сиэтловцев.
UPD2: Сиэтлский вариант пакета у меня не заработал.
Объем проделанной работы меня впечатлил, и реализация, вроде, не плохая. Так что пожелаю им удачи в их начинаниях.
Но собирать как-то все же надо, так что я решил почистить Makefile и сделать свой init-скрипт. Так же я убрал оттуда все, кроме В общем, получилась облегченная версия. Вот она: github.com/DinoAsm/cjdns-openwrt-tiny
Чтобы собрать, добавляем в feeds.conf эту строчку:
А дальше все так же, как было описано выше.
Init Scripts
Init scripts configure the daemons of the Linux system. Init scripts are run to start required processes as part of the boot process. In OpenWrt init is implemented with init.d. The init process that calls the scripts at boot time is provided by Busybox. This article explains how init.d scripts work and how to create them. Note that this is mostly equivalent to other init.d implementations and in-depth documentation can be found elsewhere. You could also take a look at the set of shell functions in /etc/rc.common to see how the building blocks of the init scripts are implemented.
Example Init Script
This init script is just a shell script. The first line is a shebang line that uses /etc/rc.common as a wrapper to provide its main and default functionality and to check the script prior to execution.
By this rc.common template, the available commands for an init scripts are as follows:
All these arguments can be passed to the script when run. For example, to restart the service call it with restart :
The script’s necessary start() and stop() functions determine the core steps necessary to start and stop this service.
Other functions
The rc.common script defines other functions that you can override if you need to, eg:
These functions can be called by procd init scripts too.
Custom commands
You can add your own custom commands by using the EXTRA_COMMANDS variable, and provide help for those commands with the EXTRA_HELP variable, then adding sections for each of your custom commands:
If you run the script with this code added, with no parameters, this is what you’ll see:
If you have multiple custom commands to add, you can add help text for each of them:
Enable and disable
In order to automatically start the init script on boot, it must be installed into /etc/rc.d/ (see above). On recent versions of OpenWrt, the build system will attempt to “enable” and/or “disable” initscripts during package install and removal by itself (refer to default_postinst() and default_prerm() in /lib/functions.sh from package base-files – this thing is utterly undocumented, including how to AVOID the automatic behavior where unwanted), and it will “enable” the initscripts on packages *included* in the ROM images during build, see below.
Invoke the “enable” command to run the initscript on boot:
This will create one or more symlinks in /etc/rc.d/ which automatically execute at boot time (see Boot process)) and shutdown. This makes the application behave as a system service, by starting when the device boots and stopping at shutdown, as configured in the init.d script.
To disable the script, use the “disable” command:
which is configured to remove the symlinks again.
The current state can be queried with the “enabled” command:
To query the state of all init scripts, you can use the command below:
Self-registration in the wiki has been disabled.
If you want to contribute to the OpenWrt wiki, please post HERE in the forum or ask on IRC for access.
Except where otherwise noted, content on this wiki is licensed under the following license:
CC Attribution-Share Alike 4.0 International
OpenWRT, или Что еще можно сделать со своим роутером
Здравствуйте, на написание данной статьи меня натолкнула аналогичная, но в качестве сервера выступала Raspberry Pi. По моему мнению использовать эту маленькую, но при этом достаточно мощную платку в этих целях немного не целесообразно, у многих есть wi-fi роутер с USB портом, а следовательно зачем включать в розетку целый блок питания от компьютера давая при этом пускай и не большой, но все таки расход электроэнергии когда в розетку включено уже все что надо.
В данной статье рассмотрим установку торрентокачалки на практический любой роутер с USB и поддержкой OpenWRT прошивки. В наличии у меня имеется Linksys E3000, но конкретной разницы в установке и настройке OpenWRT нет. Что нам для этого будет нужно:
Установка / настройка OpenWRT
Прежде всего сразу оговорюсь что Вы все делаете на свой страх и риск, так как существует вероятность «окирпичивания» Вашего роутера. Проверяем есть ли Ваш роутер в списке поддерживаемых устройств, для этого заходим на сайт OpenWrt
После этого переходим в вкладку «Downloads»
Тут стоит выбрать какую ветку использовать стабильную (Attitude Adjustment) или соответственно «trunk» в папке snapshots, сразу замечу если Ваш роутер более менее новой модели, то скорее всего в стабильной ветке вы его не найдете.
Переходим непосредственно к скачиванию прошивки.
После того как прошивка скачалась переходим к прошивки Вашего роутера. Для этого необходимо зайти в его вэб-интерфейс который обычно располагается по адресу 192.168.1.1 или 192.168.0.1 в зависимости от производителя роутера. Подробнее по процессу прошивки и настройки Wi-Fi и всего остального для конкретного роутера можете обратится в Google, а то эта статься может растянуться до неприличных размеров, мы же остановимся именно на установке и настройке Transmission.
Установка и настройка Transmission
После прошивки роутера запускаем PuTTY если Ваша ОС Windows, если Linux то просто запускаете терминал. В поле адрес вбиваем 192.168.1.1 для PuTTY либо команду telnet 192.168.1.1 для Linux. После успешного подключения переходим к установке / настройке пакетов.
Перед скачиванием пакетов следует маленькое отступление. Так как в роутере физической памяти достаточно мало, колеблется от 4 до 16 мегабайт в зависимости от продвинутости и цены Вашего роутера, нам следует заранее побеспокоится о его увеличении. Ведь мы в любом случае собираемся подключать к нему флешку или жесткий диск так почему бы нам не сделать чтобы роутер грузился непосредственно с раздела на нашем носителе? Давайте сделаем это! Перед всеми манипуляциями с роутером нужно «разбить» Ваш HDD/флешку на несколько разделов.
Приступим. Вводим последовательно команды в терминале