Page 7 of 12 FirstFirst ... 56789 ... LastLast
Results 91 to 105 of 171

Thread: Загрузка прошивки с USB

  1. #91
    Join Date
    Mar 2009
    Location
    Moscow
    Posts
    968

    Lightbulb linuxrc

    linuxrc в ветке -rtn похоже до сих пор нерабочий.
    http://wl500g.info/showpost.php?p=241887&postcount=92

    Пару ошибок в нем я исправил (не хватало пробела перед ] и не работало ожидание появления диска):
    Code:
    Index: linuxrc.sh
    ===================================================================
    --- linuxrc.sh	(revision 3660)
    +++ linuxrc.sh	(working copy)
    @@ -61,7 +61,7 @@
     if [ ! -b "$boot_dev" ]; then
     	insmod usbcore
     	usb21=$(nvram get usb20_disable_x)
    -	[ -z "$usb21"] && usb21="0"
    +	[ -z "$usb21" ] && usb21="0"
     	[ "$usb21" -ne 1 ] && insmod ehci-hcd
     	[ "$usb21" -ne 2 ] && (insmod ohci-hcd; insmod uhci-hcd)
     	sleep 2s
    @@ -74,7 +74,7 @@
     
     # wait for disc appear, max 15 sec
     i=0
    -while [ -z "$(ls /sys/class/scsi_disk/)" -a -z "$(ls /sys/bus/ide/devices/ 2>/dev/null)" ]; do
    +while [ ! -b "$boot_dev" ]; do
     	sleep 1s
     	i=$((i + 1))
     	if [ $i -gt 15 ]; then
    @@ -82,33 +82,35 @@
     	fi
     done
     
    -# trying to mount new rootfs
    -for fstyp in ext3 ext2; do
    -	mount -t $fstyp -o ro "$boot_dev" /mnt
    -	if [ $? -eq 0 ]; then
    -		break
    +if [ -b "$boot_dev" ]; then
    +	# trying to mount new rootfs
    +	for fstyp in ext3 ext2; do
    +		mount -t $fstyp -o ro "$boot_dev" /mnt
    +		if [ $? -eq 0 ]; then
    +			break
    +		fi
    +	done
    +	
    +	# enable hotplug
    +	echo /sbin/hotplug > /proc/sys/kernel/hotplug
    +	
    +	# switch root
    +	if [ -d /mnt/mnt ]; then
    +		cd /mnt
    +		pivot_root . mnt
    +		umount /mnt/dev
    +		umount /mnt/sys
    +		umount /mnt/proc
    +		exec chroot . sbin/init <dev/null >dev/null 2>&1
     	fi
    -done
    -
    -# enable hotplug
    -echo /sbin/hotplug > /proc/sys/kernel/hotplug
    -
    -# switch root
    -if [ -d /mnt/mnt ]; then
    -	cd /mnt
    -	pivot_root . mnt
    -	umount /mnt/dev
    -	umount /mnt/sys
    -	umount /mnt/proc
    -	exec chroot . sbin/init <dev/null >dev/null 2>&1
    +	
    +	# if something fails...
    +	cd /
    +	
    +	# unmount everything
    +	umount /mnt
     fi
     
    -# if something fails...
    -cd /
    -
    -# unmount everything
    -umount /mnt
    -
     # remove modules
     rmmod usb-storage && rmmod sd_mod && rmmod scsi_mod
     rmmod uhci-hcd
    Остались две проблемы - обе с /dev.
    При загрузке с подключенной флешкой - linuxrc по-прежнему ругается на строчке exec chroot . sbin/init ... :can't open dev/null: no such file и уходит в перезагрузку.
    При загрузке с отключенной флешкой - linuxrc ругается на строчке umount /dev - umount: can't umount /dev: Device or resource busy. При этом успешно загружается и работает прошивка из встроенной памяти, но по выводу команды mount /dev оказывается смонтированным дважды. Это как-то неправильно, наверное.
    D-Link DIR-320 A1/A2, DIR-620 C1, Netgear WNR3500L v1 v2

  2. #92
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by Vampik View Post
    linuxrc в ветке -rtn похоже до сих пор нерабочий.
    У меня работало, но усиленно не гонял, за ненадобностью(мне).

    Пару ошибок в нем я исправил (не хватало пробела перед ] и не работало ожидание появления диска):
    Пробел подправлю, спасибо. Замена на "$boot_dev" это наверное правильно, т.к. все старт всех остальных дисков нас не должен волновать на этом этапе.
    Опять же - ожидание у меня работало.

    Остались две проблемы - обе с /dev.
    При загрузке с подключенной флешкой - linuxrc по-прежнему ругается на строчке exec chroot . sbin/init ... :can't open dev/null: no such file и уходит в перезагрузку.
    Надо перепроверять, пока некогда.

    При загрузке с отключенной флешкой - linuxrc ругается на строчке umount /dev - umount: can't umount /dev: Device or resource busy. При этом успешно загружается и работает прошивка из встроенной памяти, но по выводу команды mount /dev оказывается смонтированным дважды. Это как-то неправильно, наверное.
    Значит это не доделал, если будет время, поправлю.

  3. #93
    Join Date
    Mar 2009
    Location
    Moscow
    Posts
    968
    Quote Originally Posted by lly View Post
    Замена на "$boot_dev" это наверное правильно, т.к. все старт всех остальных дисков нас не должен волновать на этом этапе.
    Опять же - ожидание у меня работало.
    Во-первых, да - на данном этапе интересует именно boot_dev. Во-вторых, в моем случае при холодной загрузке сначала диск появляется в /sys/class/scsi_disk/ (в этот момент скрипт уже предпринимал безуспешную попытку монтирования), и только через пару секунд появляется boot_dev (/dev/sda1). При перезагрузке /dev/sda1 появлялся сразу.
    D-Link DIR-320 A1/A2, DIR-620 C1, Netgear WNR3500L v1 v2

  4. #94
    Join Date
    Mar 2009
    Location
    Moscow
    Posts
    968
    Quote Originally Posted by lly View Post
    Надо перепроверять, пока некогда.
    Похоже, мой косяк - оказывается на флешке нужно было вручную создать некоторые устройства в /dev. При создании squashfs, как я заметил, они добавляются с помощью rootprep.files. А корневую фс для флешки я создавал, просто заTARивая target.

    Quote Originally Posted by lly View Post
    Значит это не доделал, если будет время, поправлю.
    А вот с umount /dev в конце linuxrc веселее. Посмотрел с помощью консоли:

    mount
    Code:
    rootfs on / type rootfs (rw)
    /dev/root on / type squashfs (ro)
    proc on /proc type proc (rw)
    sysfs on /sys type sysfs (rw)
    devfs on /dev type tmpfs (rw,noatime)
    fuser -m /dev
    Code:
    188 189 202 204 205 208 209 211 220 222 223 224 225 227 236 238 239 240 241 244
    ps
    Code:
      PID USER       VSZ STAT COMMAND
        1 0         1380 S    {linuxrc} /bin/sh /linuxrc
        2 0            0 SW<  [kthreadd]
        3 0            0 SW<  [ksoftirqd/0]
        4 0            0 SW<  [events/0]
        5 0            0 SW<  [khelper]
       23 0            0 SW<  [kblockd/0]
       45 0            0 SW   [pdflush]
       46 0            0 SW   [pdflush]
       47 0            0 SW<  [kswapd0]
       48 0            0 SW<  [aio/0]
       97 0            0 SW<  [mtdblockd]
      202 0         1560 S    /sbin/hotplug class
      204 0         1560 S    /sbin/hotplug module
      205 0         1380 R    /sbin/mdev
      208 0         1560 S    /sbin/hotplug usb
      209 0         1384 R    /sbin/mdev
      210 0         1524 R    /sbin/hotplug usb_device
      211 0         1560 R    /sbin/hotplug usb
      212 0          540 R    /sbin/hotplug usb
      213 0          336 R    /sbin/hotplug usb_host
      214 0          328 R    /sbin/hotplug drivers
      215 0          288 R    [hotplug]
      220 0         1560 S    /sbin/hotplug usb
      222 0         1560 S    /sbin/hotplug usb_host
      223 0         1384 R    /sbin/mdev
      224 0         1560 S    /sbin/hotplug drivers
      225 0         1380 R    /sbin/mdev
      226 0         1524 R    /sbin/hotplug module
      227 0         1560 R    /sbin/hotplug drivers
      229 0          684 R    /sbin/hotplug drivers
      230 0          336 R    /sbin/hotplug drivers
      231 0          328 R    /sbin/hotplug class
      232 0          288 R    [hotplug]
      236 0         1560 S    /sbin/hotplug bus
      238 0         1560 S    /sbin/hotplug bus
      239 0         1384 R    /sbin/mdev
      240 0         1560 S    /sbin/hotplug module
      241 0         1384 R    /sbin/mdev
      244 0         1560 R    /sbin/hotplug module
      248 0         1376 R    ps
    umount /dev
    Code:
    umount: can't umount /dev: Device or resource busy
    Похоже, размонтировать /dev мешает огромное количество процессов mdev и hotplug. Полагаю, что при rmmod'ах на предыдущих строчках вызывается hotplug, и он не успевает отработать до umount /dev (использовал linuxrc из r3666, только добавив команды для отладки).
    Last edited by Vampik; 17-12-2011 at 11:21.
    D-Link DIR-320 A1/A2, DIR-620 C1, Netgear WNR3500L v1 v2

  5. #95
    Join Date
    Mar 2009
    Location
    Moscow
    Posts
    968
    Тестовая версия -rtn прошивки для DIR-320:
    DIR320-1.9.2.7-rtn-r3696M-mini.trx
    DIR320-1.9.2.7-rtn-r3696M-fs.tar.bz2
    modules-1.9.2.7-rtn-r3696M-MIPS32r1.tar.bz2

    mini.trx заливается как обычная прошивка, можно через веб-интерфейс, fs.tar.bz2 распаковывается в заранее подготовленную файловую систему на флешке, далее -
    Code:
    nvram set kernel_args="root=/dev/mtdblock2 noinitrd init=/linuxrc console=ttyS0,115200"
    nvram set boot_dev="/dev/sda1"
    nvram commit
    reboot
    где /dev/sda1 меняется на раздел, куда была распакована fs.

    linuxrc:
    Code:
    Index: others/linuxrc.sh
    ===================================================================
    --- others/linuxrc.sh	(revision 3696)
    +++ others/linuxrc.sh	(working copy)
    @@ -90,27 +90,27 @@
     			break
     		fi
     	done
    -fi
     
    -# enable hotplug
    -echo /sbin/hotplug > /proc/sys/kernel/hotplug
    +	# switch root
    +	if [ -d /mnt/mnt ]; then
    +		# set hotplug to /sbin/hotplug
    +		echo /sbin/hotplug > /proc/sys/kernel/hotplug
    +		cd /mnt
    +		pivot_root . mnt
    +		umount /mnt/dev
    +		umount /mnt/sys
    +		umount /mnt/proc
    +		exec chroot . sbin/init <dev/null >dev/null 2>&1
    +		# unsuccessful exec causes kernel panic
    +	fi
     
    -# switch root
    -if [ -d /mnt/mnt ]; then
    -	cd /mnt
    -	pivot_root . mnt
    -	umount /mnt/dev
    -	umount /mnt/sys
    -	umount /mnt/proc
    -	exec chroot . sbin/init <dev/null >dev/null 2>&1
    +	# unmount everything
    +	umount /mnt
     fi
     
    -# if something fails...
    -cd /
    +# disable hotplug
    +echo > /proc/sys/kernel/hotplug
     
    -# unmount everything
    -umount /mnt
    -
     # remove modules
     rmmod usb-storage && rmmod sd_mod && rmmod scsi_mod
     rmmod uhci-hcd
    @@ -121,6 +121,10 @@
     
     umount /dev
     umount /sys
    +
    +# enable hotplug
    +echo /sbin/hotplug > /proc/sys/kernel/hotplug
    +
     umount /proc
     
     # finally execute init
    Last edited by Vampik; 22-12-2011 at 14:18.
    D-Link DIR-320 A1/A2, DIR-620 C1, Netgear WNR3500L v1 v2

  6. #96
    Join Date
    May 2011
    Location
    Фрязино
    Posts
    39

    Thumbs up

    Просто для информации.
    ConstAntz, прошивка тобой подкорректированная (3297) работает на удивление стабильно
    Вот, например, сейчас
    Code:
     uptime
     01:32:43 up 10 days,
    На прошивках, с ядром 2.4 больше 2-х дней никогда не мог продержаться. Правда сейчас подпаял в модем кабель и сделал 3G антенну Харченко и уменьшил MTU до 576.
    Только холодная загрузка никогда не монтирует корень к флешке, зато последующие отлично. Вижу что и с этим уже разобрались. Попробую обновится - отпишусь.
    Last edited by mowgli; 22-12-2011 at 22:41. Reason: ошибка

  7. #97
    Quote Originally Posted by Vampik View Post
    ...распаковывается в заранее подготовленную файловую систему на флешке...
    Можно коротенько в какой формат форматировать флешку (можно и команды для форматирования и распаковки) и какое дерево папок должно в итоге появиться на флешке ?

  8. #98
    Join Date
    May 2011
    Location
    Фрязино
    Posts
    39

    Post

    Quote Originally Posted by Komandir View Post
    Можно коротенько в какой формат форматировать флешку (можно и команды для форматирования и распаковки) и какое дерево папок должно в итоге появиться на флешке ?
    Форматировать в ext3.
    Code:
    fdisk -l #узнать устройство
    fdisk </dev/устройство> #разбить на тома
    mkfs.ext3 </dev/устройство> #отформатировать
    Распаковка
    Code:
    tar xvzf <файл tgz>
    Дерево папок стандартное для корня:
    drwxr-xr-x 2 mike root 1024 Sep 26 00:55 bin
    drwxrwxrwt 6 mike root 1900 Jan 1 1970 dev
    lrwxrwxrwx 1 mike root 7 Sep 29 00:44 etc -> tmp/etc
    drwxr-xr-x 2 mike root 1024 Sep 26 00:58 home
    drwxr-xr-x 4 1000 1000 1024 Sep 25 23:53 lib
    -rwxr-xr-x 1 mike root 3072 Sep 26 00:55 linuxrc
    drwx------ 2 mike root 12288 Sep 29 00:40 lost+found
    drwxr-xr-x 14 mike root 161 Sep 25 23:57 mnt
    drwxr-xr-x 3 mike root 1024 Jan 1 1970 opt
    dr-xr-xr-x 43 mike root 0 Jan 1 2000 proc
    drwxr-xr-x 2 mike root 1024 Jan 1 1970 root
    drwxr-xr-x 2 mike root 1024 Sep 26 00:55 sbin
    drwxr-xr-x 10 mike root 0 Jan 1 2000 sys
    drwxrwxrwt 7 mike root 420 Dec 24 12:07 tmp
    drwxr-xr-x 11 mike root 1024 Sep 26 00:58 usr
    lrwxrwxrwx 1 mike root 7 Sep 29 00:44 var -> tmp/var
    drwxr-xr-x 3 mike root 5120 Sep 26 00:56 www

  9. #99
    Join Date
    Jan 2010
    Location
    Chelyabinsk, Russia
    Posts
    17
    Quote Originally Posted by mowgli View Post
    Распаковка
    Code:
    tar xvzf <файл tgz>
    Все правильно. Только Vampik tar.bz2 выложил. Поэтому меняем xvzf на xvjf.
    И для форматирования диска его еще: umount
    Last edited by AlB80; 31-12-2011 at 19:11.

  10. #100

    Wl-520GC (USB-mod) + 3G

    Доброй ночи уважаемому сообществу.

    Имеется роутер WL-520GC, в который интегрирован USB порт по вот этому мануалу. Сейчас там стоит DD-WRT с загрузкой с флешки. Нужно прикрутить 3G модем. Попробовал CDMA-EVDO MCD-650 - получилось через acm.o, но подвешивает роутер при активной передаче данных. Попробовал Huawei E173 - не заводится: дозвон идет, интерфейс ppp0 поднимается, а IP не получает. Посмотреть же лог pppd в этой кривой прошивке невозможно.

    Насколько я знаю, автор мода делал репак прошивки от Олега, чтобы грузить ее с флешки, но там версия 2008 года, очень старая, и поддержки 3G в ней нет. Не поможет ли кто мануалом, как сделать аналогичный репак (мини-версия на внутреннюю флеш - 2МБ - и загрузка полной с внешней USB флешки) для прошивки от энтузиастов с поддержкой 3G? Или, может, есть уже готовый такой вариант. Не хочется изобретать велосипед.

  11. #101
    Join Date
    May 2011
    Location
    Фрязино
    Posts
    39

    Exclamation

    Quote Originally Posted by Vampik View Post
    linuxrc в ветке -rtn похоже до сих пор нерабочий.
    http://wl500g.info/showpost.php?p=241887&postcount=92

    Пару ошибок в нем я исправил
    Прошился твоей прошивкой, Vampik - 3696.
    До этого было прошивка Constanza - 3297.
    Обе проблемы остались.
    1. После холодного рестарта роутера флешка не монтируется. После команды reboot монтируется нормально.
    2. 3Г модем сам дозваниваться не начигает, приходится давать команду:
    Code:
    nvram set wan0_usb_device="12d1/1001/0"

  12. #102
    Join Date
    Mar 2009
    Location
    Moscow
    Posts
    968
    Quote Originally Posted by mowgli View Post
    Прошился твоей прошивкой, Vampik - 3696.
    До этого было прошивка Constanza - 3297.
    Обе проблемы остались.
    1. После холодного рестарта роутера флешка не монтируется. После команды reboot монтируется нормально.
    2. 3Г модем сам дозваниваться не начигает, приходится давать команду:
    Code:
    nvram set wan0_usb_device="12d1/1001/0"
    Да, есть проблема, не только с флешкой и модемом, а вообще со всеми USB-устройствами. Не помню, писал я здесь или нет, не могу найти, возможно потерли что-то. Цитата с моего сайта:
    Будут ли выпускаться mini версии + fs для DIR-320?
    Нет, т.к. в итоге все равно получается недоделка. USB функционал не будет работать, потому что модули загружаются до запуска прошивки.
    Я делал экспериментальную версию прошивки – 3696. Но получилось вот что. В прошивке такой порядок определения USB-устройств.
    Загружаются драйверы USB-контроллера -> ядро определяет подключенные устройства и посылает hotplug event’ы -> прошивка их обрабатывает и запускает соответствующие действия (монтирует флешку, подключает веб-камеру, запускает модем и т.д.)
    Для загрузки прошивки с USB нужно драйверы USB-контроллера загрузить ДО ЗАГРУЗКИ прошивки (иначе как ее прочитать с флешки), соответственно hotplug event’ы уйдут в никуда (ну, в mdev, если быть точным) и ваши флешки, веб-камеры, модемы и т.д. прошивка «не увидит».
    Вариантов решения проблемы у меня нет.
    D-Link DIR-320 A1/A2, DIR-620 C1, Netgear WNR3500L v1 v2

  13. #103
    Join Date
    Jan 2010
    Location
    Chelyabinsk, Russia
    Posts
    17
    Quote Originally Posted by Vampik View Post
    Вариантов решения проблемы у меня нет.
    Решение 1 (минимальное): Редкий пользователь включит в USB хоть что-то. Ну флэшка, ну модем, ну принтер, но таких меньшинство. Т.е. это можно выкинуть, а большинство оценит плюсы новой прошивки в версии small.

    Решение 2 (реальное): Если,
    1. на флэшку положить squashfs с вырезанными модулями USB
    2. включить USB, замонтировать флэшку
    3. создать tmpfs, скопировать squashfs с флэшки в tmpfs
    4. отмонтировать флэшку, отключить USB
    5. монтировать дополнительный squashfs из tmpfs в /
    6. включить USB
    то, посыпется куча событий с USB шины, и они будут обработаны.
    Я понимаю что это полумера, от ограничения в виде размера флэша, переходим к ограничению в виде свободного места в ОЗУ. Но её хватит до самой глубокой старости этой железки.

    Решение 3 (programmer friendly): (пере)втыкать левые USB железки после (пере)загрузки роутера с флэшки.

    Решение 4 (риторическое): Исправить ядро чтобы оно запомнило неудачные события и пыталась выполнить их позже, по команде.

  14. #104
    Join Date
    Mar 2009
    Location
    Moscow
    Posts
    968
    Quote Originally Posted by AlB80 View Post
    Решение 1 (минимальное)
    Смысл от такой прошивки? Если ничего не нужно, можно и 1.9.2.7-d использовать.

    Quote Originally Posted by AlB80 View Post
    Решение 2 (реальное)
    Во-первых, не представляю, можно ли так сделать. И если можно, то как.
    Во-вторых, свободной оперативки на DIR-320 с -rtn - всего 8МБ, и это в режиме работы чисто как роутер (никаких принтеров, флешек, модемов и т.д., все лишние демоны выключены). Образ в районе 4МБ, остается 4МБ, которых на нормальный запуск всех плюшек не хватит.

    Quote Originally Posted by AlB80 View Post
    Решение 3 (programmer friendly)
    В смысле, пользователь сам после каждой перезагрузки роутера сам перевтыкает все USB-устройства?

    Quote Originally Posted by AlB80 View Post
    Решение 4 (риторическое)
    Что править? Какие неудачные события? Ядро все делает правильно. Оно не виновато, что в прошивке такая кривая система загрузки.

    По сути, единственный вариант, не являющийся полумерой и костылем - переписать rc, чтобы он работал вообще независимо от hotplug event'ов. Но у меня для этого нет ни знаний, ни времени, ни желания. Я предпочитаю купить современную железку, а не мучаться со старой, устаревшей морально и физически.

    Для желающих вручную (пере)втыкать железки уже давно r3696 собрано.
    Last edited by Vampik; 02-02-2012 at 23:31.
    D-Link DIR-320 A1/A2, DIR-620 C1, Netgear WNR3500L v1 v2

  15. #105
    Join Date
    May 2011
    Location
    Фрязино
    Posts
    39
    Quote Originally Posted by Vampik View Post
    Да, есть проблема, не только с флешкой и модемом, а вообще со всеми USB-устройствами.
    Не совсем так.
    При команде reboot и флешка монтируется нормально и роутер грузится с корнем на флешке, т.е. как надо.
    А вот если переткнуть питание, то флешка остаётся неподмонтированной и корень остаётся на старом месте root=/dev/mtdblock2. Думаю, как-то эта проблема решабельна.

    А вот модем, независимо от типа ребута, никогда автоматом звонить не начинает, видимо по-причине hotplug.

Page 7 of 12 FirstFirst ... 56789 ... LastLast

Similar Threads

  1. Подключение USB модема 3G/CDMA к роутеру Asus
    By buka2 in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 796
    Last Post: 22-10-2014, 20:29
  2. Проблема: USB 1.1 устройства через USB 2.0 хаб
    By Rambalac in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 30
    Last Post: 15-09-2009, 13:00
  3. Replies: 0
    Last Post: 29-02-2008, 20:21
  4. Problem mit Printer und HD am Usb Hub...
    By Sidd in forum German Discussion - Deutsch (DE)
    Replies: 4
    Last Post: 29-03-2006, 18:53
  5. Please help... USB HDD doesn't work
    By jirina42 in forum WL-500g Q&A
    Replies: 6
    Last Post: 05-01-2006, 20:04

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •