Установка DD-WRT mega на маршрутизаторы с объемом флэш-памяти 4 МБ

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 15:13, 30 December 2008 (edit)
YuriKr (Talk | contribs)

← Previous diff
Revision as of 05:51, 8 January 2009 (edit) (undo)
YuriKr (Talk | contribs)

Next diff →
Line 37: Line 37:
if [ $1 == "noinitrd" ] ; then if [ $1 == "noinitrd" ] ; then
insmod /lib/modules/`uname -r`/usbcore.o insmod /lib/modules/`uname -r`/usbcore.o
- insmod /lib/modules/`uname -r`/usb-uhci.o  
insmod /lib/modules/`uname -r`/usb-ohci.o insmod /lib/modules/`uname -r`/usb-ohci.o
- insmod /lib/modules/`uname -r`/ehci-hcd.o  
insmod /lib/modules/`uname -r`/scsi_mod.o insmod /lib/modules/`uname -r`/scsi_mod.o
- insmod /lib/modules/`uname -r`/sd_mod.o  
insmod /lib/modules/`uname -r`/usb-storage.o insmod /lib/modules/`uname -r`/usb-storage.o
 + insmod /lib/modules/`uname -r`/sd_mod.o
insmod /lib/modules/`uname -r`/ext2.o insmod /lib/modules/`uname -r`/ext2.o
- sleep 8s + sleep 10s
mount -t proc none /proc mount -t proc none /proc
mount -t ext2 -o noatime,nodiratime /dev/scsi/host0/bus0/target0/lun0/part1 /mnt mount -t ext2 -o noatime,nodiratime /dev/scsi/host0/bus0/target0/lun0/part1 /mnt

Revision as of 05:51, 8 January 2009

Привет всем. Частенько пользуюсь советами других, решил тоже поделиться своим решением. Наверное кому-то будет актуально. Решение позволяет загружать и использовать полные прошивки (MEGA) на устройствах с флешками 4 мегабайта. Все ниже сказанное имеет отношение к Linux на рабочей станции и D-Link DIR-320. Как это сделать в винде - не знаю. Пользовался сим продуктом последний раз более двух лет назад.


1. Качаем прошивки.

Основную: http://www.dd-wrt.com/dd-wrtv2/downloads/others/eko/V24_TNG/svn11028/dd-wrt.v24-11028_NEWD_std-nokaid_usb.bin

Мегу: http://www.dd-wrt.com/dd-wrtv2/downloads/others/eko/V24_TNG/svn11028/dd-wrt.v24-11028_NEWD_mega.bin

Прошивки должны быть одинаковой версии. Можете взять актуальную, сейчас это последняя.


2. Качаем софт для распаковки.

http://www.dd-wrt.com/dd-wrtv2/downloads/others/tornado/firmwaremodkit2-new-LZMA/firmwaremodkit2_x86.tar.bz2

Это для 32 битной системы, для 64 бита лежит там-же.


3. Распаковываем фирмваре модкит.


4. Распаковываем прошивки в соответствующие папки.


5. Заходим в папку rootfs/sbin в основном имидже.


6. Перемещаем файл init в папку rootfs/usr/sbin


7. Создаем новый файл init, представляющий из себя скрипт:

Code:

#!/bin/sh 
if [ $1 == "noinitrd" ] ; then 
    insmod /lib/modules/`uname -r`/usbcore.o 
    insmod /lib/modules/`uname -r`/usb-ohci.o 
    insmod /lib/modules/`uname -r`/scsi_mod.o 
    insmod /lib/modules/`uname -r`/usb-storage.o 
    insmod /lib/modules/`uname -r`/sd_mod.o 
    insmod /lib/modules/`uname -r`/ext2.o 
    sleep 10s 
    mount -t proc none /proc 
    mount -t ext2 -o noatime,nodiratime /dev/scsi/host0/bus0/target0/lun0/part1 /mnt 
    if [ -x /mnt/sbin/init ] ; then 
        mount -o move /proc /mnt/proc && \ 
        pivot_root /mnt /mnt/mnt && { 
            mount -o move /mnt/dev /dev 
            mount -o move /mnt/tmp /tmp 
            mount -o move /mnt/jffs /jffs 
            exec /sbin/init $* 
        } 
    else 
        exec /usr/sbin/init $* 
    fi 
else 
    exec /usr/sbin/init $* 
fi 


Не забываем сделать скрипт исполняемым.


8. Упаковываем прошивку, получившийся имидж шьем в роутер. В принципе, роутер уже работоспособен, он представляет собой роутер с прошивкой std_nokaid_usb.


9. Готовим USB флешку. Создаем на ней линукс раздел. Разделов может быть несколько, скрипт использует первый раздел. Раздел должен быть размером не менее 15 мегабайт. Но Вы же не проявите чудеса жадности и сделаете размер побольше, чтобы для jffs что-то осталось, правда?


10. Форматируем раздел в ext2. (Это ВАЖНО!)


11. Копируем содержимое rootfs МЕГА прошивки в свежеотформатированный раздел на флешке. Меняем владельца и группу всех файлов на root.


Вставляем USB флеху в роутер, включаем питание. Наслаждаемся возможностями прошивки MEGA.


Надеюсь, совместными усилиями мы доведем решение до совершенства. Из обнаруженных глюков - не работает перезагрузка как из веб интерфейса (только делает вид), так и из терминала (команда reboot). init 6 перегружает роутер, но как-то странно. Пока не разобрался из-за чего это происходит. Нужна ваша помощь. Может кто знает, как здесь реализована перезагрузка? И подправит скрипт соответствующим образом?


UPD: Проблему перезагрузки победил, методику и скрипт поправил. Готовую (патченную) прошивку можете взять здесь: http://www.palmtv.ru/files/dd-wrt.v24-11028_NEWD_std-nokaid_usb-4mega.bin rootfs для USB: http://www.palmtv.ru/files/rootfs.tgz


IronShaft


Источник:

  1. http://www.dd-wrt.com/phpBB2/viewtopic.php?t=43389