1

(12 odpowiedzi, napisanych Oprogramowanie / Software)

Niestety na tą chwilę nie znalazłem wersji w której w moim przypadku problem by nie występował. Fabryczny soft mi się nie uśmiecha ale przynajmniej działa.

2

(12 odpowiedzi, napisanych Oprogramowanie / Software)

U mnie sytuacja wyglądała identycznie na WR1043ND v1, OpenWrt i Gargoyle to samo - pomogła niestety zmiana na fabryczny firmware

Czyli zostaje powrót tylko do fabrycznego softu?

Niestety, w trunku (r39185) problem również występuje i wifi po chwili staje się praktycznie bezużyteczne. Czy jest jakaś starsza wersja OpenWRT w której problem nie występuje?

Po pewnym czasie intensywnego korzystania z wifi, prędkość po wifi spada niemalże do zera, połączenia są zrywane, a ping z komputerów do routera zaczyna oscylować w okolicach 1000-2000ms. Ping z routera do 8.8.8.8 ~35ms więc nie jest to problem z internetem. Polecenie wifi załatwia sprawę na kilka godzin po czym problem powraca. Zmiana kanałów nic nie dała. W logread też nie widać nic niepokojącego. Sprawdzałem na 2 różnych WR1043ND. Na pierwszym jest OpenWRT w wersji 12.09.1 (r38863), na drugim Gargoyle 1.5.11.5. Ustawienia routerów po za ssid i kluczem są domyślne. Na obu to samo. Macie jakieś sugestie jak/gdzie szukać przyczyny?

Dzięki Cezary za podpowiedź, zmodyfikowałem skrypt /etc/hotplug.d/block/40-mount
Więcej informacji http://wiki.openwrt.org/doc/howto/writable_ntfs
i gotowy plik, może komuś się przyda.

#!/bin/sh
# Copyright (C) 2009-2012 OpenWrt.org
# Copyright (C) 2010 Vertical Communications
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

. /lib/functions/block.sh

blkdev=`dirname $DEVPATH`
if [ `basename $blkdev` != "block" ]; then

    device=`basename $DEVPATH`
    mountpoint=`sed -ne "s|^[^ ]*/$device ||; T; s/ .*//p" /proc/self/mounts`

    case "$ACTION" in
    add)

        local from_fstab
        local anon_mount
        local anon_swap
        local anon_fsck
        local mds_mount_target
        local mds_mount_device
        local mds_mount_fstype
        local sds_swap_device
        local use_device
        local do_fsck=0
        local fsck_type
        
        local autoswap_from_fstab
        local automount_from_fstab

        mount_dev_section_cb() {
            mds_mount_target="$2"
            mds_mount_device="$3"
            mds_mount_fstype="$4"
            mds_mount_enabled="$6"
        }

        swap_dev_section_cb() { 
            sds_swap_device="$2"
            return 0
        }

        config_get_automount
        automount_from_fstab="$from_fstab"
        [ "$automount_from_fstab" -eq 1 ] && {
            config_get_mount_section_by_device "/dev/$device"
            use_device="$mds_mount_device"
            [ "$mds_mount_enabled" -eq 1 ] && {
                if [ -n "$mds_mount_target" ]; then
                    grep -q "/dev/$device" /proc/swaps || grep -q "/dev/$device" /proc/mounts || {
                        ( mkdir -p "$mds_mount_target" && mount "$mds_mount_target" ) 2>&1 | tee /proc/self/fd/2 | logger -t 'fstab'
                    }
                else
                    logger -t 'fstab' "Mount enabled for $mds_mount_device but it doesn't have a defined mountpoint (target)"
                fi
            }
        }

        [ -z "$use_device" ] && {
            config_get_autoswap
            autoswap_from_fstab="$from_fstab"
        
            [ "$autoswap_from_fstab" -eq 1 ] && {
                config_get_swap_section_by_device "/dev/$device"
                use_device="$sds_swap_device"
            }
        }
        
        # vfat & ntfs-3g check
        if [ `which blkid` ]; then
            isntfs=`blkid | grep $device | grep ntfs`
            isfuse=`lsmod | grep fuse`
            isntfs3g=`which ntfs-3g`
            isvfat=`blkid | grep $device | grep vfat`
        else
            isntfs=""
            isvfat=""
        fi
        
        grep -q "/dev/$device" /proc/swaps || grep -q "/dev/$device" /proc/mounts || {
            [ "$anon_mount" -eq 1 -a -z "$use_device" ] && {
                case "$device" in
                    mtdblock*) ;;
                    *)
                        # mount with ntfs-3g if possible, else with default mount
                        if [ "$isntfs" -a "$isfuse" -a "$isntfs3g" ]; then
                            ( mkdir -p /mnt/$device && ntfs-3g /dev/$device /mnt/$device ) 2>&1 | tee /proc/self/fd/2 | logger -t 'fstab'
                        elif [ "$isvfat" ]; then
                            ( mkdir -p /mnt/$device && mount -o umask=000 /dev/$device /mnt/$device ) 2>&1 | tee /proc/self/fd/2 | logger -t 'fstab'
                        else
                            ( mkdir -p /mnt/$device && mount /dev/$device /mnt/$device ) 2>&1 | tee /proc/self/fd/2 | logger -t 'fstab'
                        fi
                    ;;
                esac
            }
        }
        reset_dev_section_cb
        ;;
    remove)
        umount /dev/$device
        umount $mountpoint
        ;;
    esac    

fi

Ok, ale chodzi o automatyczne montowanie. Tak aby po włożeniu nośnika niezależnie od systemu plików montował go jako /mnt/sda1 z odpowiednimi uprawnieniami. Przez /etc/config/fstab nie dało się tego ustawić, gdyż w momencie kiedy mam fstype na auto i dodaję do opcji umask=0000 przestaje montowac exty.
Gdzieś widziałem na forum openwrt modyfikacje skryptu hotplug ale to było dla kamikaze i nie bardzo wiedziałem gdzie to wsadzić w altitude adjustment.

Witam,
chciałem zrobić automatyczne montowanie nośnika z dowolnym systemem plików tak aby zaraz po wpięciu był dostępny do odczytu/zapisu poprzez sambę. O ile nie stanowi to problemu w przypadku systemu pliku ext to w przypadku ntfs/fat nośnik montowany jest automatycznie z uprawnieniami 755 co uniemożliwia zapis przez sambę. W którym miejscu można zmienić domyślne prawa dostępu dla mountowanych systemów plików?
Z góry dzięki za jakieś wskazówki.

Cezary napisał/a:

Zainstaluj sobie na komputerze dowolny serwer ftp czy http i z niego ściągnij obraz.

Że też na to nie wpadłem. Firmware wgrany ponownie, wszystko działa jak należy. Tym razem udało się bez kabla. Dziękuję bardzo z pomoc!

Czy da się jakoś zrobić reflash z poziomu failsafe?
Przez winscp się nie podłączę. Myślałem nad pobraniem obrazu przez wget, ale nie mogę uzyskać dostępu do internetu.
Po zamontowaniu rootfs i wydaniu polecenia /etc/init.d/network start wyświetla
"segmentation fault" i przerywa łączność.

Witam, podepnę się pod temat.
Wykonałem klon przy użyciu poleceń:
dd if=/dev/mtd5 of=/tmp/sysbackup.bin
mtd -r write /tmp/sysbackup.bin firmware
Operacja kilkukrotnie przebiegła bezproblemowo jednak po którymś flashowaniu router już nie wstał.
Cały czas mruga powoli lampa SYS nie można połączyć się przez ssh i telnet.
W trybie failsafe polecenie firstboot wyświetla
Unlocking rootfs_data ...
Erasing rootfs_data ...
ale po restarcie nic nie uległo zmianie, router dalej nie staruje.
Wywołanie opcji mount_root wyświetla natomiast
mount_root
/sbin/mount_root: line 1: pi_include: not found
/sbin/mount_root: line 1: pi_include: not found
/sbin/mount_root: line 1: set_jffs_mp: not found
/sbin/mount_root: line 1: determine_root_device: not found
/sbin/mount_root: line 1: can't create /.extroot.md5sum: Read-only file system
switching to jffs2
Proszę o pomoc w przywróceniu routera do działania nie bardzo mam wiedzę jak to ugryźć a nie chcę pogorszyć sprawy.