Page 1 of 2 12 LastLast
Results 1 to 15 of 28

Thread: Поддержка unionfs

  1. #1
    Join Date
    Jan 2010
    Location
    Kharkov, Ukraine
    Posts
    60

    Question Поддержка unionfs

    Возникла у меня вдруг необходимость прикрутить на свой wl500gpv2 поддержку unionfs. Качнув модули с http://code.google.com/p/wl500g/ и не обнаружив его в качестве пре-компилированного, решил попробовать добавить поддержку самостоятельно.

    Вооружившись coLinux по инструкции http://code.google.com/p/wl500g/wiki/CoLinux , поставив и настроив http://code.google.com/p/wl500g/wiki...CustomFirmware соответствующие тулчейны, кернел 2.6.22.19 взял крайнюю (r3815) ревизию.

    Для начала решил попробовать просто сбилдить, ничего не меняя, как сразу же наступил на грабли - в процессе установке патчей на кернел (make kernel).

    Лог:

    Code:
    ./125-fs_splice_read.patch
    Can not apply ./125-fs_splice_read.patch cleanly
    make: [patch] Error 1
    make: leaving directory /usr2/broadcom/src/1.9.2.7-rtn/kernel-2.6
    make: [kernel_patch] Error 2
    Подумав "мало ли, промежуточный релиз", взял r3702 и получил то же самое.

    По логам - ошибки наложения патчей на fs/cifs/cifsfs.c

    В связи с этим возникает вопрос - это такая своеобразная защита от скрипткидов, которую надо пофиксить? Или такой ошибки быть не должно и стоит копать в другую сторону?
    Last edited by VA_DOS; 19-02-2012 at 15:07.
    WL-500gP v2 (1.9.2.7-rtn-r4772) / rTorrent 0.9.3 / ruTorrent 3.4
    ImageVue r16 (patched) / lighttpd + ssl + auth
    WDTV Gen1 / WDLXTV 0.5.8.1 / D-Link DWA-110 WiFi
    WDTV Live / WDLXTV 0.4.7.3 / WDTV Live Hub

  2. #2
    Join Date
    Jan 2010
    Location
    Kharkov, Ukraine
    Posts
    60
    Пошел исправлять смещения в третьем патч-файле... В общем, складывается такое впечатление, что patch v2.5.4 из дистриба Slackware 12.2 отказывается вычислять некоторые из смещений.

    Пока пересчитываю вручную. Кто еще пробовал собирать прошивку самостоятельно? У кого какая версия patch? Может, стоит обновить до какой-нибудь более "дружественной"?..
    WL-500gP v2 (1.9.2.7-rtn-r4772) / rTorrent 0.9.3 / ruTorrent 3.4
    ImageVue r16 (patched) / lighttpd + ssl + auth
    WDTV Gen1 / WDLXTV 0.5.8.1 / D-Link DWA-110 WiFi
    WDTV Live / WDLXTV 0.4.7.3 / WDTV Live Hub

  3. #3
    Quote Originally Posted by VA_DOS View Post
    У кого какая версия patch? Может, стоит обновить до какой-нибудь более "дружественной"?..
    В Ubuntu 11.10:
    Code:
    $ patch --version
    patch 2.6.1
    Смещения отрабатывает, но не умеет удалять файлы, оставляет их нулевой длины, что чревато для сборки xfs-модуля.

  4. #4
    Join Date
    Jan 2010
    Location
    Kharkov, Ukraine
    Posts
    60
    По XFS - спасибо, учту

    Последовательно перетянул со Slackware 13.1 в проинсталленную 12.2:

    1. tar-1.23 (зависимость pkgtools)
    2. xz-4.999.9beta (зависимость pkgtools)
    3. pkgtools-13.1 (инсталлятор пакетов нового формата - txz)
    4. patch-2.6.1 (починили расчет смещений)
    5. glibc-solibs-2.11.1 (с дистрибом 12.2 поставляется glibc-2.7, тулчейн просит 2.11)

    Кернел с модулями сбилдились. Спасибо.

    В общем, фак, видать, малость устарел - лучше сразу ставить 13.1, а не 12.2.

    Теперь теперь билд вылетел на busybox/editors/awk.c и busybox/libbb/pw_encrypt.c.

    Code:
    mipsel-uclibc-gcc -Wall -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen -finline-limit=0 -fomit-frame-pointer -ffunction-sections -fdata-sections -fno-guess-branch-probability -funsigned-char -static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -Os -mips32 -mtune=mips32 -Wno-pointer-sign -DBCMWPA2 -DLINUX26 -Wl,-rpath /lib -o busybox_unstripped -Wl,--sort-common -Wl,--sort-section,alignment -Wl,--gc-sections -Wl,--start-group applets/built-in.o archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a e2fsprogs/e2p/lib.a e2fsprogs/ext2fs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o e2fsprogs/e2p/built-in.o e2fsprogs/ext2fs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group
    ==========
    /opt/brcm/hndtools-mipsel-uclibc-4.4.6-K26/lib/gcc/mipsel-linux-uclibc/4.4.6/../../../../mipsel-linux-uclibc/bin/ld: /usr/lib/libz.so.1: no version information available (required by /opt/brcm/hndtools-mipsel-uclibc-4.4.6-K26/lib/gcc/mipsel-linux-uclibc/4.4.6/../../../../mipsel-linux-uclibc/bin/ld) 
    networking/lib.a(ipcalc.o): In function `ipcalc_main':
    ipcalc.c:(.text.ipcalc_main+0x268): warning: gethostbyaddr is obsolescent, use getaddrinfo() instead.
    util-linux/lib.a(mount.o): In function `nfsmount':
    mount.c:(.text.nfsmount+0xe8): warning: gethostbyname is obsolescent, use getnameinfo() instead.
    editors/lib.a(awk.o): In function `evaluate':
    awk.c:(.text.evaluate+0xa4c): undefined reference to `cos'
    awk.c:(.text.evaluate+0xa5c): undefined reference to `exp'
    awk.c:(.text.evaluate+0xa6c): undefined reference to `log'
    awk.c:(.text.evaluate+0xa7c): undefined reference to `sin'
    awk.c:(.text.evaluate+0xaa0): undefined reference to `sqrt'
    awk.c:(.text.evaluate+0xf74): undefined reference to `pow'
    editors/lib.a(awk.o): In function `exec_builtin':
    awk.c:(.text.exec_builtin+0x148): undefined reference to `atan2'
    libbb/lib.a(pw_encrypt.o): In function `pw_encrypt':
    pw_encrypt.c:(.text.pw_encrypt+0x8): undefined reference to `crypt'
    collect2: ld returned 1 exit status
    make[1]: *** [busybox_unstripped] Error 1
    make[1]: Leaving directory `/home/usr2/broadcom/src/gateway/busybox'
    make: *** [busybox] Error 2
    Похоже на неподтянутые из тулчейна libcrypt.a и libm.a. Путь к lib тулчейна что ли прописать в $PATH ?

    Хотя, скорее, надо бы поэкспериментировать с $LD_LIBRARY_PATH. ryzhov_al, не могли бы вы выложить содержимое этой переменной на своей машине?
    Last edited by VA_DOS; 19-02-2012 at 20:50.
    WL-500gP v2 (1.9.2.7-rtn-r4772) / rTorrent 0.9.3 / ruTorrent 3.4
    ImageVue r16 (patched) / lighttpd + ssl + auth
    WDTV Gen1 / WDLXTV 0.5.8.1 / D-Link DWA-110 WiFi
    WDTV Live / WDLXTV 0.4.7.3 / WDTV Live Hub

  5. #5
    Quote Originally Posted by VA_DOS View Post
    Хотя, скорее, надо бы поэкспериментировать с $LD_LIBRARY_PATH. ryzhov_al, не могли бы вы выложить содержимое этой переменной на своей машине?
    $LD_LIBRARY_PATH я на сборочном стенде не трогал, но сборка у меня не шла пока не добавил в пути папку бинарников тулчейна:
    Code:
    $ export PATH=$PATH:/opt/brcm/hndtools-mipsel-uclibc/bin
    ЗЫ Сейчас посмотрел: $LD_LIBRARY_PATH на сборочной машине вовсе не определена.
    Last edited by ryzhov_al; 20-02-2012 at 04:39.

  6. #6
    Join Date
    Jan 2010
    Location
    Kharkov, Ukraine
    Posts
    60
    Проблема решилась после обнаружения в логах ошибок xargs и перетягивания еще одного пакета - findutils-4.4.2.
    Компилим дальше...

    В общем, пришлось доустановить еще несколько обновлений (в т.ч. на gettext) прежде, чем удалось собрать прошивку.
    Ось явно стоит ставить по-новее, чтоб не мучиться с анализом логов ошибок билда на предмет чего бы еще обновить.
    Last edited by Omega; 26-05-2012 at 16:37. Reason: fixed
    WL-500gP v2 (1.9.2.7-rtn-r4772) / rTorrent 0.9.3 / ruTorrent 3.4
    ImageVue r16 (patched) / lighttpd + ssl + auth
    WDTV Gen1 / WDLXTV 0.5.8.1 / D-Link DWA-110 WiFi
    WDTV Live / WDLXTV 0.4.7.3 / WDTV Live Hub

  7. #7
    Join Date
    Jan 2010
    Location
    Kharkov, Ukraine
    Posts
    60
    Quote Originally Posted by ryzhov_al View Post
    А знаете как удалось победить? Удалением двух пустых файлов.
    Code:
    me@VBox:~/Projects/firmware_r3722/src/gateway$ rm ../linux/linux-2.6/fs/xfs/Kbuild
    me@VBox:~/Projects/firmware_r3722/src/gateway$ rm ../linux/linux-2.6/fs/xfs/Makefile-linux-2.6
    Не сильно грязный хак?
    Quote Originally Posted by lly View Post
    Поздравляю! Практически гениально!
    Но это значит, что мы возвращаемся к исходной позиции - дряхлые(кривые) patchutils которые не могут корректно отработать 149-fs-xfs.patch и удалить fs/xfs/Kbuild и fs/xfs/Makefile-linux-2.6
    А зачем сразу хак? Просто обновите в репозитории файлик /patch.sh, добавив повсеместно для запуска утилиты patch ключик -E, и все хорошо.



    Да, для r3702 вроде как собрал модуль unionfs v2.5.11. На выходных потестирую.
    WL-500gP v2 (1.9.2.7-rtn-r4772) / rTorrent 0.9.3 / ruTorrent 3.4
    ImageVue r16 (patched) / lighttpd + ssl + auth
    WDTV Gen1 / WDLXTV 0.5.8.1 / D-Link DWA-110 WiFi
    WDTV Live / WDLXTV 0.4.7.3 / WDTV Live Hub

  8. #8
    Quote Originally Posted by VA_DOS View Post
    Да, для r3702 вроде как собрал модуль unionfs v2.5.11. На выходных потестирую.
    собираться то оно собирается (если брать от 2.6.22.19 - это слишком старое, код fs у нас обновлен). нужно подтверждение работоспособности

  9. #9
    Join Date
    Jan 2010
    Location
    Kharkov, Ukraine
    Posts
    60
    Quote Originally Posted by theMIROn View Post
    код fs у нас обновлен
    это я уже оценил, пока портил при чем не только fs, но и mm, что куда более серьезнее.

    поэтому брал от 2.6.23.17, вроде как больше всего похоже. посмотрим, что получится.

    А strace у кого-нибудь есть уже собраный? Действительно, модуль собирается, прекрасно регистрируется в системе (о чем трейсит в dmesg), да не монтирует mount'ом ничего.
    Last edited by Omega; 25-02-2012 at 18:07. Reason: fixed
    WL-500gP v2 (1.9.2.7-rtn-r4772) / rTorrent 0.9.3 / ruTorrent 3.4
    ImageVue r16 (patched) / lighttpd + ssl + auth
    WDTV Gen1 / WDLXTV 0.5.8.1 / D-Link DWA-110 WiFi
    WDTV Live / WDLXTV 0.4.7.3 / WDTV Live Hub

  10. #10
    Quote Originally Posted by VA_DOS View Post
    А strace у кого-нибудь есть уже собраный? Действительно, модуль собирается, прекрасно регистрируется в системе (о чем трейсит в dmesg), да не монтирует mount'ом ничего.
    strace? Мы точно об одном и том же говорим?
    Code:
    $ opkg install strace

  11. #11
    Join Date
    Jan 2010
    Location
    Kharkov, Ukraine
    Posts
    60
    Благодарю.

    Очень даже правильно. Не одними printf'ами ж попытки монтирования дебажить. Надо бы еще сбилдить его в режиме отладки и глянуть syslog.

    А вообще на unionfs.org рекомендуют просто переходить AuFS. К чему бы это...

    Хм, оказывается, все очень даже работает. Просто не надо было вручную делать insmod. Просто надо было скопировать новые модули и дать системе самой прогрузить то, что требуется.

    Мне, вообще, нужно было для объединения нескольких NAS-источников в одном месте. Но можно, к примеру, приспособить под монтирование зеркала / на флешку в режиме rw... Вариантов масса.

    В приложении можно забрать (для r3702):

    1. 149-fs-unionfs.patch.tar.gz - распаковать в /kernel-2.6, собственно, unionfs v2.5.11 for 2.6.23.17 с косметическими правками. (необходимо)

    2. kernel.config.tar.gz - распаковать в /kernel-2.6, просто добавлено 3 пункта: CONFIG_UNION_FS, CONFIG_UNION_FS_XATTR и CONFIG_UNION_FS_DEBUG. (необходимо)

    3. patch.sh.tar.gz - распаковать в /, просто добавлен ключ "-E" для запуска утилиты patch, принудительная проверка и удаление пустых файлов. (по желанию, исправляет ошибку с пропуском сборки xfs)
    Attached Files Attached Files
    Last edited by Omega; 25-02-2012 at 18:09. Reason: fixed
    WL-500gP v2 (1.9.2.7-rtn-r4772) / rTorrent 0.9.3 / ruTorrent 3.4
    ImageVue r16 (patched) / lighttpd + ssl + auth
    WDTV Gen1 / WDLXTV 0.5.8.1 / D-Link DWA-110 WiFi
    WDTV Live / WDLXTV 0.4.7.3 / WDTV Live Hub

  12. #12
    Quote Originally Posted by VA_DOS View Post
    1. 149-fs-unionfs.patch.tar.gz - распаковать в /kernel-2.6, собственно, unionfs v2.5.11 for 2.6.23.17 с косметическими правками. (необходимо)
    for 2.6.27 тоже должен заработать, в теории.
    есть ли разница?

  13. #13
    Join Date
    Jan 2010
    Location
    Kharkov, Ukraine
    Posts
    60
    Я специально смотрел диффом перед тем, как собирать, что больше всего похоже на текущий кернел с патчами.

    Разница - в отсутствующих fs и mm обновлениях, накатив которые надо будет каскадно обновлять все зависящие от них модули. Заставить же работать на текущих версиях будет несколько проблематично, при том, что изменений функциональных/стабилити - аж никаких. Т.е. если спортировать к нам версию для более старшего ядра, подпилив под имеющиеся кернел апи, мы просто получим тот же unionfs, только для более старой версии кернел.

    Если интересно какие патчи на кернел требуется перетянуть (это по диффу версий unionfs for 2.6.xx):


    2.6.23.12 -> 2.6.24.7

    Изменен интерфейс kmem_cache_create() (mm) - изменения прототипа указателя до (*ctor)(struct kmem_cache *, void *)

    2.6.24.7 -> 2.6.25.20

    Должна быть расширена структура struct nameidata в хидере fs.h новым полем-структурой(или юнионом?) path, под которую перемещены поля struct dentry *dentry и struct vfsmount *mnt

    Должны быть какие-то расширения для iget(), не вникал какие именно.

    В namei.h должны быть реализации новых функций pathget(), pathput() ; ну, это дописать несложно.

    2.6.25.20 -> 2.6.26.8

    В fs.h в структуре struct super_operations изменен прототип указателя на функцию: void (*umount_begin)(struct super_block *) , т.е. убран второй параметр - флаги.

    2.6.26.8 -> 2.6.27.59

    В файле fs.h в структуре struct inode_operations изменен прототип указателя на функцию int (*permission)(struct inode *, int) , т.е. убран третий параметр - struct nameidata *

    Очередное изменение интерфейса kmem_cache_create() (mm) - изменения прототипа указателя до (*ctor)(void *)
    Last edited by VA_DOS; 25-02-2012 at 11:21.
    WL-500gP v2 (1.9.2.7-rtn-r4772) / rTorrent 0.9.3 / ruTorrent 3.4
    ImageVue r16 (patched) / lighttpd + ssl + auth
    WDTV Gen1 / WDLXTV 0.5.8.1 / D-Link DWA-110 WiFi
    WDTV Live / WDLXTV 0.4.7.3 / WDTV Live Hub

  14. #14
    Quote Originally Posted by VA_DOS View Post
    при том, что изменений функциональных/стабилити - аж никаких.
    это и интересовало в первую очередь. чтож, тогда да, смысла нет переезжать на более старшие версии.

    Quote Originally Posted by VA_DOS View Post
    Т.е. если спортировать к нам версию для более старшего ядра, подпилив под имеющиеся кернел апи, мы просто получим тот же unionfs, только для более старой версии кернел.
    спасибо за анализ, надеюсь он полный.
    включу unionfs в отдельные модули

    Quote Originally Posted by VA_DOS View Post
    Если интересно какие патчи на кернел требуется перетянуть (это по диффу версий unionfs for 2.6.xx):
    Эти изменения потянут за собой и массу других в плане fs минимум, на текущий момент не думаю,что необходимо.
    lly может меня поправить, он занимался апдейтами fs
    Last edited by theMIROn; 25-02-2012 at 14:14.

  15. #15
    Join Date
    Jan 2010
    Location
    Kharkov, Ukraine
    Posts
    60
    Quote Originally Posted by theMIROn View Post
    включу unionfs в отдельные модули
    Спасибо, будем ждать.
    WL-500gP v2 (1.9.2.7-rtn-r4772) / rTorrent 0.9.3 / ruTorrent 3.4
    ImageVue r16 (patched) / lighttpd + ssl + auth
    WDTV Gen1 / WDLXTV 0.5.8.1 / D-Link DWA-110 WiFi
    WDTV Live / WDLXTV 0.4.7.3 / WDTV Live Hub

Page 1 of 2 12 LastLast

Similar Threads

  1. Поддержка ext3/ext4, reiserfs, jffs и xfs
    By St.MPA3b in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 267
    Last Post: 18-02-2014, 09:12
  2. Поддержка l7-filter в прошивке энтузиастов
    By severeg in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 72
    Last Post: 26-11-2012, 03:06
  3. Поддержка Asus WL-300g
    By balamut in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 115
    Last Post: 05-04-2008, 01:26

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
  •