1

Тема: cifs на Keenetic Lite

Доброго времени суток.

Имею Keenetic Lite. Версия прошивки V1.00(BWN.3)D0
Сделал root распаковав прошивку Firmware Modification Kit
Пытаюсь запустить cifs как написано здесь http://code.google.com/p/zyxel-keenetic … ther_setup но cifs.ko не грузится. По видимому, не хватает других модулей (типа nls_*.ko может что-то ещё). Может кто-нибудь, напишет (и выложит), какие модули и в каком порядке грузить, чтобы cifs завелся. В прнципе, могу взять модули из прошивки Кинетика, но не знаю, что там и как грузится.  sad Очень хочется cifs, т.к. это единственный шанс завести всю прелесть на лайте (с удаленной шары), ведь USB нету  sad  sad  sad

P.S.

Задача решена (смотри здесь)

Отредактировано Dr.Acid (2012-02-24 17:33:51)

2

Re: cifs на Keenetic Lite

Dr.Acid, возьмите родной тулчейн от zyxel, конфигурацию для lite и попробуйте собрать модуль. Не уверен, что выйдет. Конфигурации ядра разные для разных моделей.

3

Re: cifs на Keenetic Lite

Zyxmon :

Dr.Acid, возьмите родной тулчейн от zyxel, конфигурацию для lite и попробуйте собрать модуль. Не уверен, что выйдет. Конфигурации ядра разные для разных моделей.

Идея понятна (смотрел уже тулчейн) но боюсь, не осилю, т.к. в линуксе нуб  sad Даже если получится собрать прошивку, как понять, что и в каком порядке грузить через insmod ? Или оно само всё загрузится? В моей прошивке есть tftp, поэтому я могу кидать файлы с компа/на комп.
Я надеялся на такой алгоритм:
1) кидаю нужные модули в /tmp
2) Пробую все запустить и подмонтировать шару
3) Когда всё получится, пишу скрипт, закидываю все в прошивку (с автозапуском естессно)
4) Пробую установить ext_init.sh wink

Гуру, помогите, обещаю отписать подробную инструкцию, по моему, обладателей Лайтов значительно больше, чем просто кенетиков - они все будут благодарны потом нам!

4

Re: cifs на Keenetic Lite

Dr.Acid, я Вам предлагаю собрать именно модуль, не прошивку. Нужно перед вызовом make вызвать "make menuconfig", выбрать модуль cifs. Тогда cifs.ko и, если потребуются, другие модули ядра соберутся для lite. А инструкцию, если все выйдет, писать Вам.

5

Re: cifs на Keenetic Lite

Dr.Acid И у меня не все под Ubuntu 11.10 собирается - http://forum.zyxmon.org/post2505.html#p2505

Ставьте 11.04 - для этой версии давно расписано, какие пакеты ставить, чтобы все собиралось.

6

Re: cifs на Keenetic Lite

Ставьте православный дебиан, я ссылку на виртуальную машину выкладывал где-то здесь, там все уже настроено и все пакеты стоят.

7

Re: cifs на Keenetic Lite

AndreyUA, я предлагаю собрать модуль тулчейном от zyxel. Выложенный debian сгодится, а вот "мой" тулчейн и пакеты не особенно.

8

Re: cifs на Keenetic Lite

Dr.Acid, сначала соберите по умолчанию все по прилагаемой инструкции, потом запустите "make menuconfig", поищите в меню, раздел kernel, там cifs. Насчет разделов меню - пишу по памяти, будет время - проверю.

9

Re: cifs на Keenetic Lite

Dr.Acid, возможно сборка cifs заблокирована. Может ручками, а может для конфигурации ядра lite cifs вообще собрать нельзя. Посмотрю, как будет время.

10

Re: cifs на Keenetic Lite

В целом Ваша идея с загрузкой дополнений по cifs дурная. Но помогу, может чего и выйдет.
Нужно добавить в папку тулчейна zyxel package/kernel/modules файл fs.mk. Можно взять у меня: http://zyxel-keenetic-packages.googleco … ules/fs.mk (этот файл для сильно более нового тулчейна).
Можно попробовать более "древний" - https://dev.openwrt.org/browser/branche … ules/fs.mk

После этого сотрите папку tmp. После этого можно будет выбрать в меню Kernel modules -> Filesystem модуль cifs.

11

Re: cifs на Keenetic Lite

Zyxmon :

В целом Ваша идея с загрузкой дополнений по cifs дурная. Но помогу, может чего и выйдет.
Нужно добавить в папку тулчейна zyxel package/kernel/modules файл fs.mk. Можно взять у меня: http://zyxel-keenetic-packages.googleco … ules/fs.mk (этот файл для сильно более нового тулчейна).
Можно попробовать более "древний" - https://dev.openwrt.org/browser/branche … ules/fs.mk

После этого сотрите папку tmp. После этого можно будет выбрать в меню Kernel modules -> Filesystem модуль cifs.

Zyxmon, спасибо большое, что откликнулись, cifs.ko собрался, но времени потестить пока нет, отпишусь когда попробую.

Насчет того, что идея с cifs не очень хороша конечно согласен, но разве есть лучше? Распаять USB ?!? (Я вскрывал его, когда разгонял, сделать там USB из области малореального, нужен преобразователь на 5 В) Да и даже если удастся аппаратно прикрутить USB, вставлять его в прошивку геморроя побольше чем с cifs наверное будет  sad

Отредактировано Dr.Acid (2011-11-10 11:14:15)

12

Re: cifs на Keenetic Lite

Zyxmon :

Dr.Acid И у меня не все под Ubuntu 11.10 собирается - http://forum.zyxmon.org/post2505.html#p2505

Ставьте 11.04 - для этой версии давно расписано, какие пакеты ставить, чтобы все собиралось.

Ну я например сейчас использую CoLinux+FC9 с минимальной установкой под Windows7, все отлично собирается и достаточно быстро, чем на всяких VM, хотя компов с Linux навалом  tongue

Отредактировано IgorGolubev (2011-11-10 12:15:35)

13

Re: cifs на Keenetic Lite

Dr.Acid, с пересборкой ядра я бы не связывался. Исходников поновее чего? Может быть еще модуль(и) нужно перед cifs загрузить. Лучше бросить эту затею и купить настоящий кинетик.

14

Re: cifs на Keenetic Lite

Dr.Acid, модули ядра не обязаны быть отдельными файлами, могут быть built-in в ядро. Это когда в make menuconfig не "М", а "*" поставить.

15

Re: cifs на Keenetic Lite

попробуйте перед загрузкой cifs загрузить nls_utf8 Еще возможно понадобится nls_base

Не прокатит такой вариант: Взять прошивку от кинетика, выкинуть оттуда, скажем, трансмишион и самбу (размер будет < 4Мб), и залить это дело в Лайт (через фтп, естессно)? Или не получится?

Проц другой -> wifi другой, не прокатит.

Отредактировано AndreyUA (2011-11-11 23:49:02)

16

Re: cifs на Keenetic Lite

AndreyUA :

попробуйте перед загрузкой cifs загрузить nls_utf8 Еще возможно понадобится nls_base

Не прокатит такой вариант: Взять прошивку от кинетика, выкинуть оттуда, скажем, трансмишион и самбу (размер будет < 4Мб), и залить это дело в Лайт (через фтп, естессно)? Или не получится?

Проц другой -> wifi другой, не прокатит.

Сууупер!!!!!! Спасибо, AndreyUA, все пошло, шара подмонтировалась!!! Спасибо всем!
Итак:

/var/tmp # insmod /var/tmp/nls_base.ko
/var/tmp # insmod /var/tmp/nls_utf8.ko
/var/tmp # insmod /var/tmp/cifs.ko
/var/tmp # mkdir smb
/var/tmp # mount -t cifs '\\192.168.1.34\DISK_A1' /var/tmp/smb -o username=guest,iocharset=utf8
/var/tmp # ls -l ./smb/
-rwxrwSrwt    1 root     root       412840 Oct  2 20:33 IMG_2542.jpg
-rwxrwSrwt    1 root     root         8307 Nov 10 11:42 fs.mk
/var/tmp #

Теперь буду прошивать это дело в прошивку, появятся вопросы, но сейчас спать пора  smile

17

Re: cifs на Keenetic Lite

Dr.Acid,
1) Не смотрел как, думаю можно.
2) См. исходники zyxel (подробностей не будет).
3) В качестве идеи - попробуйте создать /media/DISK_A1 в прошивке, а после монтирования cifs слелайте mount -bind, или сразу укажите точкой монтирования.

18

Re: cifs на Keenetic Lite

Dr.Acid :

Ну и остается(опционально) вопрос о подписи модифицированной прошивки, чтобы грузить через веб (пока буду работать над этим в фоновом режиме).

Попробуйте вот этим http://www.dd-wrt.com/phpBB2/viewtopic. … 735#634735

19

Re: cifs на Keenetic Lite

Найдите в исходниках Zyxel максимальный размер прошивки для lite и исправьте тут  if (fsize > 0x04c0000)  и bufsz = 0x04c0000 - fsize;
Чтобы уменьшить прошивку вам нужно выбросить что-то.

20

Re: cifs на Keenetic Lite

Dr.Acid :
AndreyUA :

Найдите в исходниках Zyxel максимальный размер прошивки для lite и исправьте тут  if (fsize > 0x04c0000)  и bufsz = 0x04c0000 - fsize;
Чтобы уменьшить прошивку вам нужно выбросить что-то.

Спасибо, уже догадался про fsize и bufsz, выбрасывать вроде ничего не нужно (там уже всё выбросили до меня, наоборот добавлять приходится wink ), но возникла другая проблема - header там тоже от кинетика, - попробую выдернуть свой из родной прошивки - надеюсь получится. Еще раз спасибо за помощь. Ещебы с маунтом разобратся...

Попробуйте сделать так
define Image/Build
cp $(KDIR)/root.squashfs $(BIN_DIR)/Rimage.squashfs
@if [[ "`stat --printf="%s" $(BIN_DIR)/Kimage.lzma`" -gt $(CONFIG_TARGET_KERNEL_SIZE) ]] || \
[[ "$(CONFIG_TARGET_KERNEL_SIZE) + `stat --printf="%s" $(BIN_DIR)/Rimage.squashfs`" -gt "$(FW_SIZE)" ]]; then \
echo -e "\aError: File size exceeded!!!!"; \
else \
    dd if=$(BIN_DIR)/Kimage.lzma of=$(BIN_DIR)/$(FIRMWARE_NAME) bs=65536 count=$(COUNT); \
    dd if=$(BIN_DIR)/Rimage.squashfs of=$(BIN_DIR)/$(FIRMWARE_NAME) bs=65536 seek=$(COUNT) conv=sync; \
    zyimage -v "ZyXEL $(FIRMWARE_VER)" -d $(DEVICE_ID) $(BIN_DIR)/$(FIRMWARE_NAME); \
fi
endef
Ваш DEVICE_ID="0x417"

21

Re: cifs на Keenetic Lite

Получилось правильно подписать прошивку - загрузилась через веб-морду.
Остался единственный вопрос - как подставить в mount значение переменной(mib)???
Попробовал заменить ' на ", при этом первый символ \ пропадает, но синтаксис вида

mount -t cifs "\\\192.168.1.2\DISK_A1" /var/tmp/media/DISK_A1 -o username=guest,iocharset=utf8

работает, т.е. эквивалентен

mount -t cifs '\\192.168.1.2\DISK_A1' /var/tmp/media/DISK_A1 -o username=guest,iocharset=utf8

Хочу вместо сетевого пути (или хотя бы вместо IPшника) подставить значение из переменной MODEM_INIT_ATCMDS3
Ну не шить же, в самом деле, в прошивку сетевой адрес !  big_smile

22

Re: cifs на Keenetic Lite

Dr.Acid :

Отлично, намек понял - поискал zyimage в исходниках (была такая идея, но замотался и как-то забыл). Вот только знать бы теперь, чему равны FIRMWARE_VER(могу попробовать догадаться) BIN_DIR и FIRMWARE_NAME
Я не компилю прошивку, я разбираю/собираю ее с помощью extract-ng.sh/build-ng.sh из Firmware Modification Kit.
Прикол в другом:

Найдите в исходниках Zyxel максимальный размер прошивки для lite и исправьте тут  if (fsize > 0x04c0000)  и bufsz = 0x04c0000 - fsize;
Чтобы уменьшить прошивку вам нужно выбросить что-то.

Я выяснил, что моя версия (KEENETIC_LITE-V1.00[BWN.3]D0.bin) имеет размер 0x2b0000 (без подписи) то же ограничение прописано в конфиге лайта в тулчейне (zyxel_keenetics_gpl_v.1.00_2_D0.tar.bz2), но сама прошивка второй версии (KEENETIC_LITE-V1.00[BWN.2]D0.bin) имеет размер 0x2c0000 (без подписи). Получается, что это ограничение весьма условно? Я залил собранную прошивку (без подписи) по фтп, и роутер завелся, и модули добавленные запустились(пока вручную), но можно ли быть уверенным, что там все нормально (прошивка не обрезалась)? Размер этой прошивки я сделал 0x2c4000

См. target/linux/keenetic-lite/Makefile

DEVICE_NAME=$(shell echo $(CONFIG_TARGET_DEVICE_NAME)|sed -e 's/ /_/g')
ifneq ($(CONFIG_TARGET_VERSION),"")
FIRMWARE_VER = $(DEVICE_NAME)-$(shell echo $(CONFIG_TARGET_VERSION)|sed -e 's/(/
else
FIRMWARE_VER = $(DEVICE_NAME)-$(shell svnversion $(TOPDIR))
endif

FIRMWARE_NAME = Firmware-$(FIRMWARE_VER)_$(shell date +%y%m%d%H%M).bin
KERNEL_SIZE = $(shell echo $(CONFIG_TARGET_KERNEL_SIZE)|sed -e 's/"//g')
ROOTFS_SIZE = $(shell echo $(CONFIG_TARGET_ROOTFS_SIZE)|sed -e 's/"//g')
FW_SIZE = $(shell echo $$[$(KERNEL_SIZE)+$(ROOTFS_SIZE)])
DEVICE_ID=$(shell echo $(CONFIG_TARGET_DEVICE_ID)|sed -e 's/"//g')
COUNT = $(shell echo $$[$(KERNEL_SIZE)/65536])

$(BIN_DIR)/$(FIRMWARE_NAME) - путь к файлу прошивки
Ограничение прошивки не условно, надо влезть в RootFS (см cat /proc/mtd). Если у вас она больше - потрете следующий раздел.

Отредактировано AndreyUA (2011-11-13 23:22:19)

23

Re: cifs на Keenetic Lite

Dr.Acid :

Хочу вместо сетевого пути (или хотя бы вместо IPшника) подставить значение из переменной MODEM_INIT_ATCMDS3
Ну не шить же, в самом деле, в прошивку сетевой адрес ! 

а если так

MOUNTOPTS="-t cifs \\\\$MODEM_INIT_ATCMDS3\\DISK_A1 /var/tmp/media/DISK_A1 -o username=guest,iocharset=utf8"

mount $MOUNTOPTS

Отредактировано AndreyUA (2011-11-13 23:44:09)

24

Re: cifs на Keenetic Lite

а если так


MOUNTOPTS="-t cifs \\\\$MODEM_INIT_ATCMDS3\\DISK_A1 /var/tmp/media/DISK_A1 -o username=guest,iocharset=utf8"

mount $MOUNTOPTS

Спасибо еще раз огромное, AndreyUA, все получилось, остановился на следующем варианте:

MOUNTOPTS="-t cifs \\\\$MODEM_INIT_ATCMDS3 /media/DISK_A1 -o username=guest,iocharset=utf8"
mount $MOUNTOPTS

чтобы указывать в переменной ещё и имя шары
Соответственно, устанавливатся будет так:

~ # flash set MODEM_INIT_ATCMDS3 192.168.1.2\\DISK_A1
~ # flash get MODEM_INIT_ATCMDS3
MODEM_INIT_ATCMDS3="192.168.1.2\\DISK_A1"
~ #

Теперь, по поводу разделов:

~ # cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00030000 00010000 "U-Boot"
mtd1: 00010000 00010000 "U-Config "
mtd2: 00010000 00010000 "RF-EEPROM"
mtd3: 000f0000 00010000 "Kernel"
mtd4: 002b0000 00010000 "RootFS"
mtd5: 00010000 00002000 "Config"
~ # cat /proc/partitions
major minor  #blocks  name

  31     0        192 mtdblock0
  31     1         64 mtdblock1
  31     2         64 mtdblock2
  31     3        960 mtdblock3
  31     4       2752 mtdblock4
  31     5         64 mtdblock5
~ # cat /proc/diskstats
   7    0 loop0 0 0 0 0 0 0 0 0 0 0 0
   7    1 loop1 0 0 0 0 0 0 0 0 0 0 0
   7    2 loop2 0 0 0 0 0 0 0 0 0 0 0
   7    3 loop3 0 0 0 0 0 0 0 0 0 0 0
   7    4 loop4 0 0 0 0 0 0 0 0 0 0 0
   7    5 loop5 0 0 0 0 0 0 0 0 0 0 0
   7    6 loop6 0 0 0 0 0 0 0 0 0 0 0
   7    7 loop7 0 0 0 0 0 0 0 0 0 0 0
  31    0 mtdblock0 0 0 0 0 0 0 0 0 0 0 0
  31    1 mtdblock1 0 0 0 0 0 0 0 0 0 0 0
  31    2 mtdblock2 2 6 64 4 0 0 0 0 0 4 4
  31    3 mtdblock3 0 0 0 0 0 0 0 0 0 0 0
  31    4 mtdblock4 72 1081 2306 149 0 0 0 0 0 149 149
  31    5 mtdblock5 2 18 160 9 0 0 0 0 0 9 9

Ограничение прошивки не условно, надо влезть в RootFS (см cat /proc/mtd). Если у вас она больше - потрете следующий раздел.

Таким образом, получается, я "залез" на раздел mtd5 ("Config")  yikes Внешне, роутер работает нормально, но из "боевой" эксплуатации, естественно, выведен. Вопрос - что делать? Забить(оставить как есть) или исправлять, например, изменив размер разделов (возможно ли сделать это, не перекомпилируя прошивку?). Я в легком замешательстве. Не хочется выводить в народ сырое и глючное решение, но отказаться, когда уже ВСЁ работает!!!  sad

25

Re: cifs на Keenetic Lite

Dr.Acid :

Таким образом, получается, я "залез" на раздел mtd5 ("Config")  yikes Внешне, роутер работает нормально, но из "боевой" эксплуатации, естественно, выведен. Вопрос - что делать? Забить(оставить как есть) или исправлять, например, изменив размер разделов (возможно ли сделать это, не перекомпилируя прошивку?). Я в легком замешательстве. Не хочется выводить в народ сырое и глючное решение, но отказаться, когда уже ВСЁ работает!!!  sad

Странно, что работает, не должно. Выбросьте что-нибудь, так будет проще и лучше.
Да, учтите, что общий размер прошивки не должен превышать Kernel+RootFS.

Отредактировано AndreyUA (2011-11-14 21:30:40)