За основу взята статья
http://cyber-place.ru/showthread.php?t=343Собственно лучше чем есть там я не опишу. Ниже только добавил свои комменты.
Полезно также описание TP-Link MR3020 на Openwrt
http://wiki.openwrt.org/toh/tp-link/tl-mr3020Там же есть инструкция по перепрошивке.
Обошелся маршрутизатор в 850 руб + 150 руб флешка (для расширения памяти, т.к. своя флешь в роутере всего 4 мб)), USB хаб у меня уже был.
Теперь про отличия моего шаманства от того решения, что предлагает cyber-place.
Я отказался от использования стороннего репозитория openwrt что предлагает вышеозначенная инструкция.
Наша задача получить установленный openwrt с поддержкой usb накопителей. Потом уже мы перенесем файловую систему на флешку и места будет достаточно. Но первоначально проблема в том, что в штатной прошивке очень мало места и доустановить нужные пакеты не получится.
Чуть позже возможно соберу свою актуальную прошивку (как и поступили на cyber-place), но можно сделать по другому.
На страничке
http://downloads.openwrt.org/...ar71xx/generic/ скачиваем архивы openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin и openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-sysupgrade.bin
Тот что с суффиксом factory предназначен для перешивки заводской прошивки в openwrt, тот что sysupgrade - для обновления уже установленной системы.
Заходим в веб интерфейс по адресу
http://192.168.0.254 логин и пароль admin
Заходим в раздел System Tools - Firmware Upgrade, выбираем скачаный файл openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin и жмем кнопку upgrade.
Ждем пару минут, роутер перезагружается, теперь у него адрес 192.168.1.1
Заходим на него через веб, настраиваем сеть, ставим пароль.
Теперь заходим на роутер по ssh
Обновляем репозиторий:
opkg updateесли все нормально, должны получить сообщение
"Updated list of available packages in /var/opkg-lists/attitude_adjustment."(у меня почему-то роутер не понимал изменение dns без перезагрузки)
ставим пакеты
kmod-usb-storage kmod-scsi-core fdiskбольше места не останется.
По инструкции разбиваем диск.
После этого делаем sysupgrade, получаем чистый роутер, по новой ставим пакеты kmod-scsi-core kmod-usb-storage и e2fsprogs
Форматируем раздел
mkfs.ext4 /dev/sda1Снова делаем sysupgrade
Ставим
kmod-scsi-core kmod-usb-storage а также kmod-fs-ext4 block-mountМонтируем новый диск и копируем на него текущую ФС
mkdir -p /mnt/usb
mount -t ext4 /dev/sda1 /mnt/usb -o rw,sync
tar -C /overlay -cvf - . | tar -C /mnt/usb -xvf -
Правим фаил /etc/config/fstab
vi /etc/config/fstab Нам нужно отредактировать секцию config 'mount':
config 'mount'
option target /overlay
option device /dev/sda1
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 0
(Для тех кто никогда не пользовался vi:
i - войти в режим правки, Esc - войти в командный режим, :wq (именно так, 3 символа) - записать изменения (w)и выйти (q))перезагружаемся
вуаля!
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 3.7G 121.9M 3.4G 3% /
/dev/root 2.0M 2.0M 0 100% /rom
tmpfs 14.3M 72.0K 14.2M 0% /tmp
tmpfs 512.0K 0 512.0K 0% /dev
/dev/sda1 3.7G 121.9M 3.4G 3% /overlay
overlayfs:/overlay 3.7G 121.9M 3.4G 3% /
дальше ставил поддержку кодировок (хз зачем) (kmod-nls-cp1251 kmod-nls-koi8r kmod-nls-utf8 kmod-nls-cp866 kmod-nls-cp437), mc, а также kmod-usb-serial-ftdi, libftdi, coreutils-stty для доступа к ардуине.
После еще добавил ngnix и php5 для будущей веб морды, а также avrdude чтобы можно было прошивать arduino по сети.
Пока только крутится маленький скриптик на php который может отослать байт ардуине чтобы та включила пин, или считать показания температуры с единственного датчика.
Ну и, естественно, роутер выполняет свои прямые обязанности по раздаче WiFi по квартире.