1

Тема: Двойной старт при перегрузке устройства

Добрый день

Купил себе второй keenetic, подключил к нему внешний винт и установил всю систему.

И вижу странные вещи: при перегрузке устройства все программы с HDD запускаются, потом останавливаются, потом опять запускаются.

Сначала думал что-то не пошло, переустановил все еще раз. Проблема осталась. Взял еще раз только скрипт ext_init.sh, закончил установку, проблема есть.

Вот кусок лога:

Sep  7 15:38:59 zyntp[1120]: Set new system time.
Sep  7 15:39:00 kernel: Start swlink module, WAN port 4.
Sep  7 15:39:01 root: starting /media/DISK_A1/system/etc/init.d/S01swap
Sep  7 15:39:14 kernel: Adding 131064k swap on /media/DISK_A1/system/.swapfile.  Priority:-1 extents:3 across:180312k
Sep  7 15:39:14 root: starting /media/DISK_A1/system/etc/init.d/S10dropbear
Sep  7 15:39:14 dropbear[1236]: Running in background
Sep  7 15:39:15 watcher[1296]: '/bin/btnreset'[1299] watching started
Sep  7 15:39:15 root: stopping /media/DISK_A1/system/etc/init.d/S10dropbear
Sep  7 15:39:15 watcher[1315]: '/bin/websv'[1317] watching started
Sep  7 15:39:15 dropbear[1236]: premature exit: Terminated by signal
Sep  7 15:39:15 root: stopping /media/DISK_A1/system/etc/init.d/S01swap
Sep  7 15:39:15 root: starting /media/DISK_A1/system/etc/init.d/S01swap
Sep  7 15:39:27 kernel: Adding 131064k swap on /media/DISK_A1/system/.swapfile.  Priority:-2 extents:3 across:180312k
Sep  7 15:39:27 root: starting /media/DISK_A1/system/etc/init.d/S10dropbear
Sep  7 15:39:27 dropbear[1330]: Running in background
Sep  7 15:42:39 websv[1317]: User logged in (192.168.1.150/'Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2')

не подскажите, что может быть?

2

Re: Двойной старт при перегрузке устройства

Nick N., скрипт ext_init.sh срабатывает при разных условиях. При загрузке устройства два раза, первый раз с параметром start, потом restart. При монтировании usb носителя - один раз (start). При выключении, размонтировании (stop). Есть еще и параметры link_up,    ppp_up, link_down, ppp_down, с которыми этот скрипт может вызываться.

Рекомендую изучить шелл скрипты из заводской прошивки в папке /bin.

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

3

Re: Двойной старт при перегрузке устройства

Zyxmon, спасибо за разъяснения.

Сбило с толку то, что при первой установке системы видать были проблемы. И повторный старт приложений в логах шел с ошибками.

Все работает корректно

4

Re: Двойной старт при перегрузке устройства

Можно попробовать следующее: в ext_init.sh анализировать uptime - если значение маленькое, то при параметре start ничего не делать, а при параметре restart выполнять то, что сейчас выполняется при start. Если uptime больше определенного значения - все делать, как было.

PS При первом запуске "ext_init.sh start" не все может в кинетике быть инициализированным.

5

Re: Двойной старт при перегрузке устройства

Можно попробовать просто проверять/добавлять  файлик в /var
Примерно так (ext_init.sh)

#!/bin/sh

MOUNT="/media/DISK_A1/system"
INITD="$MOUNT/etc/init.d"
INIT_LOCK="/var/initlock"

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib


start() {
        for prog in `ls $INITD/S??*`; do
            $prog start $2
        done
}

stop() {
        for prog in `ls -r $INITD/S??*`; do
            $prog stop $2
        done
}

case "$1" in
        start)
            if [ -f $INIT_LOCK ]
              start
            fi
            ;;
        stop)
            stop
            ;;
        restart)
            echo "good" > $INIT_LOCK
            stop
            start
            ;;
        link_up)
            ;;
        ppp_up)
            ;;
        link_down)
            ;;
        ppp_down)
            ;;
        *)
            echo "Usage: $0 {start|stop|restart|link_up|link_down|ppp_up|ppp_down}"
            ;;
esac

6

Re: Двойной старт при перегрузке устройства

Предыдущий скрипт точно в одном случае работать не будет. Если загрузить кинетик без флешки, потом ее вставить.
Нужно проверять uptime в самом начале приблизительно так

cputime=`cat /proc/uptime | cut -f1 -d " " | sed 's/\.//'`

if [ $cputime -gt 120 ]
then
    <111>
else
    <222>
fi

Если больше 2х минут после загрузки (как пример) делаем одно, например,

echo "good" > $INIT_LOCK

Если нет, другое.

7

Re: Двойной старт при перегрузке устройства

Zyxmon, м.б. имеет смысл немного поправить это пост http://forum.zyxmon.org/post1468.html#p1468
- При "холодной" загрузке устройства два раза ...
При "горячей" перезагрузке (через web-интерфейс или в cli командой reboot) сначала stop, затем start...
т.е. уточнить, что при "горячей" перезагрузке не выполняется restart.

Отредактировано vovic67 (2011-10-25 21:32:54)

8

Re: Двойной старт при перегрузке устройства

vovic67 :

т.е. уточнить, что при "горячей" перезагрузке не выполняутся restart.

А вот это я не проверял  sad. Тогда нужно думать над скриптом. Всё сложнее. При горячей перезагрузке содержимое tmpfs (/var) ведь теряется. Мне кажется горячая и холодная загрузки не должны отличаться. И монтирование и /bin/init.sh должны вызываться.

9

Re: Двойной старт при перегрузке устройства

Zyxmon, у меня  горячая и холодная загрузки отличаются вызовом restart, добавленное мной в /var при горячей также пропадает. Правда папка system на Кинетике у меня уж слишком "боевая" в результате различных опытов, и м. б. я ввожу вас в заблуждение. Подождем, кто-нибудь еще проверит. На вс. сл. - прошивка от 1 окт. 2011.

10

Re: Двойной старт при перегрузке устройства

vovic67, мне кажется Вы путаете. Обычно после перепрошивки возвращаю usb флешку на место и перезагружаюсь через web - наблюдаю двойной запуск скриптов. Сейчас для успокоения сделал reboot из putty:

17 окт 00:00:13    dropbear[1132]    Running in background
......
17 окт 00:00:16    dropbear[1132]    premature exit: Terminated by signal
....
17 окт 00:00:17    dropbear[1222]    Running in background

Я для проверок ставлю много собираемых пакетов, система тоже боевая.

# opkg list-installed | wc -l
157

Но в автозапуске у меня минимум.

11

Re: Двойной старт при перегрузке устройства

Желающие могут проверить такой скрипт ext_init.sh. По идее все должно работать без двойного старта. Я, если и смогу проверить скрипт, то после ноябрьских (ухожу в небольшой отпуск).

#!/bin/sh

MOUNT="/media/DISK_A1/system"
INITD="$MOUNT/etc/init.d"
INIT_LOCK="/var/initlock"

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib


start() {
        for prog in `ls $INITD/S??*`; do
            $prog start $2
        done
}

stop() {
        for prog in `ls -r $INITD/S??*`; do
            $prog stop $2
        done
}

# Проверяем uptime. Если больше 120 секунд, устанафливаем файловый "флаг" в /var (tmpfs),
# чтобы запускались скрипты из init.d при монтировании usb носителя

cputime=`cat /proc/uptime | cut -f1 -d " " | sed 's/\.//'`

if [ $cputime -gt 120 ]; then
    echo "good" > $INIT_LOCK
fi


case "$1" in
        start)
# При первом старте кинетика ждем вызова скрипта из /bin/init.sh с параметром restart,
# который установит файловый "флаг" в /var (tmpfs)        
            if [ -f $INIT_LOCK ]; then
              start
            fi
            ;;
        stop)
            stop
            ;;
        restart)
            if [ -f $INIT_LOCK ]; then
# Возможно ли сюда попасть? Наверное, нет, если только руками скрипт запустить для рестарта 
# всех служб
              stop
              start
            else
# А вот это, похоже вызов скрипта из /bin/init.sh. Поэтому вызываем просто start
# и устанавливаем файловый "флаг" в /var (tmpfs)
                echo "good" > $INIT_LOCK
                start
            fi
            ;;
        link_up)
            ;;
        ppp_up)
            ;;
        link_down)
            ;;
        ppp_down)
            ;;
        *)
            echo "Usage: $0 {start|stop|restart|link_up|link_down|ppp_up|ppp_down}"
            ;;
esac

12

Re: Двойной старт при перегрузке устройства

Zyxmon
Кусок /media/DISK_A1/system/bin/ext_init.sh

start() {
    for prog in `ls $INITD/S??*`; do
        $prog start $2
            logger "_________starting $prog"
    done
}

stop() {
    for prog in `ls -r $INITD/S??*`; do
        $prog stop $2
            logger "_________stopping $prog"
    done
}

reboot из putty

Sep 16 00:00:05 device: KEENETIC ~ V1.00-BFW.4b-D0 ~ 01.10.2011 01:48
Sep 16 00:00:05 syslogd started: BusyBox v1.8.2
Sep 16 00:00:05 kernel: klogd started: BusyBox v1.8.2 (2011-09-30 23:16:39 MSK)
Sep 16 00:00:05 kernel: Linux version 2.6.23.17 (developers@ndmsystems.com) (gcc version 4.1.2) #2 Sat Oct 1 02:10:06 MSK 2011
Sep 16 00:00:05 kernel: 
Sep 16 00:00:05 kernel:  The CPU frequency set to 384 MHz
Sep 16 00:00:05 kernel: 32M RAM Detected!
Sep 16 00:00:05 kernel: CPU revision is: 0001964c
Sep 16 00:00:05 kernel: Determined physical RAM map:
Sep 16 00:00:05 kernel:  memory: 02000000 @ 00000000 (usable)
Sep 16 00:00:05 kernel: On node 0 totalpages: 8192
Sep 16 00:00:05 kernel:   Normal zone: 64 pages used for memmap
Sep 16 00:00:05 kernel:   Normal zone: 0 pages reserved
Sep 16 00:00:05 kernel:   Normal zone: 8128 pages, LIFO batch:0
Sep 16 00:00:05 kernel:   Movable zone: 0 pages used for memmap
Sep 16 00:00:05 kernel: Built 1 zonelists in Zone order.  Total pages: 8128
Sep 16 00:00:05 kernel: Kernel command line: console=ttyS1,57600n8 root=/dev/mtdblock4 rootfstype=squashfs noinitrd
Sep 16 00:00:05 kernel: Primary instruction cache 32kB, physically tagged, 4-way, linesize 32 bytes.
Sep 16 00:00:05 kernel: Primary data cache 16kB, 4-way, linesize 32 bytes.
Sep 16 00:00:05 kernel: Synthesized TLB refill handler (20 instructions).
Sep 16 00:00:05 kernel: Synthesized TLB load handler fastpath (32 instructions).
Sep 16 00:00:05 kernel: Synthesized TLB store handler fastpath (32 instructions).
Sep 16 00:00:05 kernel: Synthesized TLB modify handler fastpath (31 instructions).
Sep 16 00:00:05 kernel: Cache parity protection disabled
Sep 16 00:00:05 kernel: cause = 50808000, status = 11000000
Sep 16 00:00:05 kernel: PID hash table entries: 128 (order: 7, 512 bytes)
Sep 16 00:00:05 kernel: calculating r4koff... 0005dc00(384000)
Sep 16 00:00:05 kernel: CPU frequency 384.00 MHz
Sep 16 00:00:05 kernel: Using 192.000 MHz high precision timer.
Sep 16 00:00:05 kernel: console [ttyS1] enabled
Sep 16 00:00:05 kernel: Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Sep 16 00:00:05 kernel: Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Sep 16 00:00:05 kernel: Memory: 28824k/32768k available (2955k kernel code, 3944k reserved, 436k data, 132k init, 0k highmem)
Sep 16 00:00:05 kernel: Calibrating delay loop... 254.97 BogoMIPS (lpj=127488)
Sep 16 00:00:05 kernel: Mount-cache hash table entries: 512
Sep 16 00:00:05 kernel: NET: Registered protocol family 16
Sep 16 00:00:05 kernel: Generic PHY: Registered new driver
Sep 16 00:00:05 kernel: SCSI subsystem initialized
Sep 16 00:00:05 kernel: usbcore: registered new interface driver usbfs
Sep 16 00:00:05 kernel: usbcore: registered new interface driver hub
Sep 16 00:00:05 kernel: usbcore: registered new device driver usb
Sep 16 00:00:05 kernel: Time: MIPS clocksource has been installed.
Sep 16 00:00:05 kernel: NET: Registered protocol family 2
Sep 16 00:00:05 kernel: IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
Sep 16 00:00:05 kernel: TCP established hash table entries: 1024 (order: 1, 8192 bytes)
Sep 16 00:00:05 kernel: TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
Sep 16 00:00:05 kernel: TCP: Hash tables configured (established 1024 bind 1024)
Sep 16 00:00:05 kernel: TCP reno registered
Sep 16 00:00:05 kernel: devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au)
Sep 16 00:00:05 kernel: devfs: boot_options: 0x1
Sep 16 00:00:05 kernel: fuse init (API version 7.8)
Sep 16 00:00:05 kernel: squashfs: version 3.0 (2006/03/15) Phillip Lougher
Sep 16 00:00:05 kernel: io scheduler noop registered
Sep 16 00:00:05 kernel: io scheduler deadline registered (default)
Sep 16 00:00:05 kernel: Ralink gpio driver initialized
Sep 16 00:00:05 kernel: HDLC line discipline: version $Revision: 4.8 $, maxframe=4096
Sep 16 00:00:05 kernel: N_HDLC line discipline registered.
Sep 16 00:00:05 kernel: Serial: 8250/16550 driver $Revision: 1.3 $ 2 ports, IRQ sharing disabled
Sep 16 00:00:05 kernel: serial8250: ttyS0 at I/O 0xb0000500 (irq = 37) is a 16550A
Sep 16 00:00:05 kernel: serial8250: ttyS1 at I/O 0xb0000c00 (irq = 12) is a 16550A
Sep 16 00:00:05 kernel: loop: module loaded
Sep 16 00:00:05 kernel: MAC_ADRH -- : 0x00000000
Sep 16 00:00:05 kernel: MAC_ADRL -- : 0x00000000
Sep 16 00:00:05 kernel: Ralink APSoC Ethernet Driver Initilization. v2.0  256 rx/tx descriptors allocated, mtu = 1500!
Sep 16 00:00:05 kernel: NAPI enable, weight = 0, Tx Ring = 256, Rx Ring = 256
Sep 16 00:00:05 kernel: MAC_ADRH -- : 0x0000000c
Sep 16 00:00:05 kernel: MAC_ADRL -- : 0x432880eb
Sep 16 00:00:05 kernel: PROC INIT OK!
Sep 16 00:00:05 kernel: PPP generic driver version 2.4.2
Sep 16 00:00:05 kernel: PPP Deflate Compression module registered
Sep 16 00:00:05 kernel: PPP BSD Compression module registered
Sep 16 00:00:05 kernel: MPPE/MPPC encryption/compression module registered
Sep 16 00:00:05 kernel: NET: Registered protocol family 24
Sep 16 00:00:05 kernel: PPPoL2TP kernel driver, V0.18.4
Sep 16 00:00:05 kernel: PPTP driver version 0.8.3.37
Sep 16 00:00:05 kernel: ralink flash device: 0x800000 at 0x1f000000
Sep 16 00:00:05 kernel: Ralink SoC physically mapped flash: Found 1 x16 devices at 0x0 in 16-bit bank
Sep 16 00:00:05 kernel:  Amd/Fujitsu Extended Query Table at 0x0040
Sep 16 00:00:05 kernel: number of CFI chips: 1
Sep 16 00:00:05 kernel: cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
Sep 16 00:00:05 kernel: Creating 7 MTD partitions on "Ralink SoC physically mapped flash":
Sep 16 00:00:05 kernel: 0x00000000-0x00030000 : "U-Boot"
Sep 16 00:00:05 kernel: 0x00030000-0x00040000 : "U-Config "
Sep 16 00:00:05 kernel: 0x00040000-0x00050000 : "RF-EEPROM"
Sep 16 00:00:05 kernel: 0x00050000-0x00180000 : "Kernel"
Sep 16 00:00:05 kernel: 0x00180000-0x005f0000 : "RootFS"
Sep 16 00:00:05 kernel: 0x005f0000-0x00600000 : "Config"
Sep 16 00:00:05 kernel: 0x00600000-0x00800000 : "Storage"
Sep 16 00:00:05 kernel: usbcore: registered new interface driver cdc_acm
Sep 16 00:00:05 kernel: drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver f
Sep 16 00:00:05 kernel: or USB modems and ISDN adapters
Sep 16 00:00:05 kernel: usbcore: registered new interface driver usblp
Sep 16 00:00:05 kernel: Initializing USB Mass Storage driver...
Sep 16 00:00:05 kernel: usbcore: registered new interface driver usb-storage
Sep 16 00:00:05 kernel: USB Mass Storage support registered.
Sep 16 00:00:05 kernel: usbcore: registered new interface driver usbserial
Sep 16 00:00:05 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
Sep 16 00:00:05 kernel: usbcore: registered new interface driver usbserial_generic
Sep 16 00:00:05 kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core
Sep 16 00:00:05 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for airprime
Sep 16 00:00:05 kernel: usbcore: registered new interface driver airprime
Sep 16 00:00:05 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI USB Serial Device
Sep 16 00:00:05 kernel: usbcore: registered new interface driver ftdi_sio
Sep 16 00:00:05 kernel: drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI Serial Converters Driver
Sep 16 00:00:05 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for GSM modem (1-port)
Sep 16 00:00:05 kernel: usbcore: registered new interface driver option
Sep 16 00:00:05 kernel: drivers/usb/serial/option.c: USB Driver for GSM modems: v0.7.1
Sep 16 00:00:05 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
Sep 16 00:00:05 kernel: usbcore: registered new interface driver pl2303
Sep 16 00:00:05 kernel: drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver
Sep 16 00:00:05 kernel: usbcore: registered new interface driver cdc_ether
Sep 16 00:00:05 kernel: u32 classifier
Sep 16 00:00:05 kernel:     Actions configured 
Sep 16 00:00:05 kernel: Netfilter messages via NETLINK v0.30.
Sep 16 00:00:05 kernel: nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
Sep 16 00:00:05 kernel: ctnetlink v0.93: registering with nfnetlink.
Sep 16 00:00:05 kernel: nf_conntrack_rtsp v0.6.21 loading
Sep 16 00:00:05 kernel: nf_nat_rtsp v0.6.21 loading
Sep 16 00:00:05 kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
Sep 16 00:00:05 kernel: Type NAT: Restricted Cone
Sep 16 00:00:05 kernel: ClusterIP Version 0.8 loaded successfully
Sep 16 00:00:05 kernel: TCP bic registered
Sep 16 00:00:05 kernel: TCP cubic registered
Sep 16 00:00:05 kernel: TCP westwood registered
Sep 16 00:00:05 kernel: TCP highspeed registered
Sep 16 00:00:05 kernel: TCP hybla registered
Sep 16 00:00:05 kernel: TCP htcp registered
Sep 16 00:00:05 kernel: TCP vegas registered
Sep 16 00:00:05 kernel: TCP scalable registered
Sep 16 00:00:05 kernel: NET: Registered protocol family 1
Sep 16 00:00:05 kernel: NET: Registered protocol family 17
Sep 16 00:00:05 kernel: 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
Sep 16 00:00:05 kernel: All bugs added by David S. Miller <davem@redhat.com>
Sep 16 00:00:05 kernel: decode /dev/mtdblock4
Sep 16 00:00:05 kernel: VFS: Mounted root (squashfs filesystem) readonly.
Sep 16 00:00:05 kernel: Mounted devfs on /dev
Sep 16 00:00:05 kernel: Freeing unused kernel memory: 132k freed
Sep 16 00:00:05 kernel: Algorithmics/MIPS FPU Emulator v1.5
Sep 16 00:00:05 kernel: LED driver vers. 1.6 loaded.
Sep 16 00:00:05 kernel: IPP2P v0.8.2 loading
Sep 16 00:00:05 kernel: Load Timer Module(Wdg/Soft)
Sep 16 00:00:05 kernel: Start powerstat module.
Sep 16 00:00:05 kernel: Read power status register: 0x00000001.
Sep 16 00:00:05 kernel: Status: Power was not turned off.
Sep 16 00:00:05 kernel: dwc_otg: version 2.72a 24-JUN-2008
Sep 16 00:00:05 kernel: DWC_otg: Core Release: 2.66a
Sep 16 00:00:05 kernel: DWC_otg: Periodic Transfer Interrupt Enhancement - disabled
Sep 16 00:00:05 kernel: DWC_otg: Multiprocessor Interrupt Enhancement - disabled
Sep 16 00:00:05 kernel: DWC_otg: Using DMA mode
Sep 16 00:00:05 kernel: DWC_otg: Device using Buffer DMA mode
Sep 16 00:00:05 kernel: dwc_otg lm0: DWC OTG Controller
Sep 16 00:00:05 kernel: dwc_otg lm0: new USB bus registered, assigned bus number 1
Sep 16 00:00:05 kernel: dwc_otg lm0: irq 18, io mem 0x00000000
Sep 16 00:00:05 kernel: DWC_otg: Init: Port Power? op_state=1
Sep 16 00:00:05 kernel: DWC_otg: Init: Power Port (0)
Sep 16 00:00:05 kernel: usb usb1: configuration #1 chosen from 1 choice
Sep 16 00:00:05 kernel: hub 1-0:1.0: USB hub found
Sep 16 00:00:05 kernel: hub 1-0:1.0: 1 port detected
Sep 16 00:00:05 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for Sierra USB modem (1 port)
Sep 16 00:00:05 kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for Sierra USB modem (3 port)
Sep 16 00:00:05 kernel: usb 1-1: new high speed USB device using dwc_otg and address 2
Sep 16 00:00:05 kernel: usb 1-1: configuration #1 chosen from 1 choice
Sep 16 00:00:05 kernel: scsi0 : SCSI emulation for USB Mass Storage devices
Sep 16 00:00:05 kernel: usb-storage: device found at 2
Sep 16 00:00:05 kernel: usb-storage: waiting for device to settle before scanning
Sep 16 00:00:05 kernel: usbcore: registered new interface driver sierra
Sep 16 00:00:08 kernel: scsi 0:0:0:0: Direct-Access     ST310005 23AS                  PQ: 0 ANSI: 2
Sep 16 00:00:08 kernel: sd 0:0:0:0: [sda] 1953525168 512-byte hardware sectors (1000205 MB)
Sep 16 00:00:08 kernel: sd 0:0:0:0: [sda] Write Protect is off
Sep 16 00:00:08 kernel: sd 0:0:0:0: [sda] Mode Sense: 38 00 00 00
Sep 16 00:00:08 kernel: sd 0:0:0:0: [sda] Assuming drive cache: write through
Sep 16 00:00:08 kernel: sd 0:0:0:0: [sda] 1953525168 512-byte hardware sectors (1000205 MB)
Sep 16 00:00:08 kernel: sd 0:0:0:0: [sda] Write Protect is off
Sep 16 00:00:08 kernel: sd 0:0:0:0: [sda] Mode Sense: 38 00 00 00
Sep 16 00:00:08 kernel: sd 0:0:0:0: [sda] Assuming drive cache: write through
Sep 16 00:00:08 kernel:  /dev/scsi/host0/bus0/target0/lun0:
Sep 16 00:00:08 kernel: rt2860v2_ap: module license 'unspecified' taints kernel.
Sep 16 00:00:09 kernel: MAC_ADRH -- : 0x0000404a
Sep 16 00:00:09 kernel: MAC_ADRL -- : 0x0377ffc8
Sep 16 00:00:09 kernel: 
Sep 16 00:00:09 kernel: phy_tx_ring = 0x01a63000, tx_ring = 0xa1a63000
Sep 16 00:00:09 kernel: 
Sep 16 00:00:09 kernel: phy_rx_ring0 = 0x01a64000, rx_ring0 = 0xa1a64000
Sep 16 00:00:09 kernel: RT305x_ESW: Link Status Changed
Sep 16 00:00:09 kernel: CDMA_CSG_CFG = 81000007
Sep 16 00:00:09 kernel: GDMA1_FWD_CFG = 710000
Sep 16 00:00:09 kernel: device eth2.1 entered promiscuous mode
Sep 16 00:00:09 kernel: device eth2 entered promiscuous mode
Sep 16 00:00:09 kernel: 0x1300 = 00064380
Sep 16 00:00:09 kernel: device ra0 entered promiscuous mode
Sep 16 00:00:09 kernel: br0: port 2(ra0) entering learning state
Sep 16 00:00:09 kernel: br0: port 1(eth2.1) entering learning state
Sep 16 00:00:10 udhcpd[976]: udhcpd (v1.15.1) started
Sep 16 00:00:10 kernel: Run Fast NAT.
Sep 16 00:00:10 udhcpc[1009]: udhcpc (v1.8.2) started
Sep 16 00:00:10 udhcpc[1009]: Sending discover...
Sep 16 00:00:10 udhcpc[1009]: Sending select for 95.84.132.131...
Sep 16 00:00:10 udhcpc[1009]: Lease of 95.84.132.131 obtained, lease time 3600
Sep 16 00:00:10 dnsmasq[1005]: started, version 2.55 cachesize 150
Sep 16 00:00:10 dnsmasq[1005]: no servers found in /etc/resolv.conf, will retry
Sep 16 00:00:10 dnsmasq[1005]: read /etc/hosts - 2 addresses
Sep 16 00:00:11 kernel: br0: topology change detected, propagating
Sep 16 00:00:11 kernel: br0: port 2(ra0) entering forwarding state
Sep 16 00:00:11 kernel: br0: topology change detected, propagating
Sep 16 00:00:11 kernel: br0: port 1(eth2.1) entering forwarding state
Sep 16 00:00:11 dnsmasq[1068]: started, version 2.55 cachesize 150
Sep 16 00:00:11 dnsmasq[1068]: reading /etc/resolv.conf
Sep 16 00:00:11 dnsmasq[1068]: using nameserver 77.37.255.30#53
Sep 16 00:00:11 dnsmasq[1068]: using nameserver 77.37.251.33#53
Sep 16 00:00:11 dnsmasq[1068]: read /etc/hosts - 2 addresses
Sep 16 00:00:12 kernel: Start swlink module, WAN port 4.
Sep 16 00:00:12 syslog: SNet version started
Sep 16 00:00:12 miniupnpd[1218]: HTTP listening on port 49152
Sep 16 00:00:12 miniupnpd[1218]: Listening for NAT-PMP traffic on port 5351
Sep 16 00:00:13 miniupnpd[1218]: received signal 15, good-bye
Sep 16 00:00:13 syslog: SNet version started
Sep 16 00:00:13 miniupnpd[1263]: HTTP listening on port 49152
Sep 16 00:00:13 miniupnpd[1263]: Listening for NAT-PMP traffic on port 5351
Sep 16 00:00:14 udhcpd[976]: Found static lease ip address: 192.168.1.33
Sep 16 00:00:14 udhcpd[976]: Sending ACK to 192.168.1.33
Sep 16 00:00:14 kernel:  p1
Sep 16 00:00:14 kernel: sd 0:0:0:0: [sda] Attached SCSI disk
Sep 16 00:00:14 kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
Sep 16 00:00:14 kernel: usb-storage: device scan complete
Sep 16 00:00:14 miniupnpd[1263]: upnp_event_recv: recv(): Connection reset by peer
Sep 16 00:00:14 kernel: EXT3-fs: Unrecognized mount option "utf8" or missing value
Sep 16 00:00:17 kernel: Adding 131064k swap on /media/DISK_A1/system/.swapfile.  Priority:-1 extents:98 across:14558528k
Sep 16 00:00:17 root: _________starting /media/DISK_A1/system/etc/init.d/S01swap
Sep 16 00:00:17 dropbear[1379]: Running in background
Sep 16 00:00:17 root: _________starting /media/DISK_A1/system/etc/init.d/S10dropbear
Sep 16 00:00:17 root: _________starting /media/DISK_A1/system/etc/init.d/S21unfs3
Sep 16 00:00:18 udhcpd[976]: Found static lease ip address: 192.168.1.33
Sep 16 00:00:18 root: _________starting /media/DISK_A1/system/etc/init.d/S60mediatomb
Sep 16 00:00:18 sd-idle-2.6[1396]: initialized
Sep 16 00:00:18 root: _________starting /media/DISK_A1/system/etc/init.d/S80sd-idle
Sep 16 04:00:31 zyntp[1411]: New time offset -> 3518423.
Oct 26 21:20:55 zyntp[1411]: Set new system time.
Oct 26 21:23:13 httpd[1282]: User logged in (192.168.1.33/'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; Tablet PC 2.0)')

При холодном старте каждому S* соответствует
logger "_________starting ...
logger "_________stopping ...
logger "_________starting ...
На вс. сл. - прошивка от 1 окт. 2011

Отредактировано vovic67 (2011-10-26 20:35:47)

13

Re: Двойной старт при перегрузке устройства

vovic67, Вышеприведенный скрипт в этом случае не сработает. Насколько понимаю /bin/init.sh стартует первым, но вот диски у Вас при warm reboot еще не смонтировались, restart не был вызван. Монтирование по идее происходит позже init.sh, При горячей перезагрузке init.sh завершается раньше монтирования, при холодной - позже. Другого объяснения я пока не вижу.

PS Прошивка у меня от 21.10 - но не думаю, что это важно.

14

Re: Двойной старт при перегрузке устройства

Кстати, у меня два устройства. С идентичными настройками системы. Так вот на одном start-restart при запуске не выполняется. Поменять винты местами уже не могу чтобы проверить, так как один из кинетиков используется для работы

15

Re: Двойной старт при перегрузке устройства

Можно попробовать вот так

#!/bin/sh

MOUNT="/media/DISK_A1/system"
INITD="$MOUNT/etc/init.d"
LOCKFILE=/var/lock/ext_init.lock

export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib


start() {
    if [ ! -f $LOCKFILE ]
        then
            echo "$$" >> $LOCKFILE
            for prog in `ls $INITD/S??*`; do
                logger -t ext_init.sh\[$$\] "Starting $prog $2"
                $prog start $2
            done
            rm -rf $LOCKFILE
        fi
}

stop() {
    for prog in `ls -r $INITD/S??*`; do
        $prog stop $2
    done
}

case "$1" in
    start)
    
        start
        ;;
    stop)
        stop
        ;;
    restart)
    logger -t ext_init.sh\[$$\] "Restart"
    if [ ! -f $LOCKFILE ]
        then
               stop
               start
        else
            logger -t ext_init.sh\[$$\] "File $LOCKFILE is present"
    fi
        ;;
    link_up)
        ;;
    ppp_up)
        ;;
    link_down)
        ;;
    ppp_down)
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|link_up|link_down|ppp_up|ppp_down}"
        ;;
esac

Кусочек лога

17 окт 00:00:17    ext_init.sh[1489]    Restart
17 окт 00:00:17    ext_init.sh[1419]    Starting /media/DISK_A1/system/etc/init.d/S01swap
17 окт 00:00:19    udhcpd[1003]    Found static lease ip address: 192.168.1.3
17 окт 00:00:19    udhcpd[1003]    Sending ACK to 192.168.1.3
17 окт 00:00:20    udhcpd[1003]    Found static lease ip address: 192.168.1.6
17 окт 00:00:20    udhcpd[1003]    Sending ACK to 192.168.1.6
17 окт 00:00:31    ext_init.sh[1489]    File /var/lock/ext_init.lock is present
17 окт 00:00:31    httpd[1501]    User logged in (192.168.1.3/'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2')
11 ноя 22:06:12    zyntp[1579]    New time offset -> 2232339.
11 ноя 22:06:12    zyntp[1579]    Set new system time.
11 ноя 22:06:51    kernel    Adding 131064k swap on /media/DISK_A1/system/.swapfile. Priority:-1 extents:1 across:131064k
11 ноя 22:06:51    ext_init.sh[1419]    Starting /media/DISK_A1/system/etc/init.d/S02cron
11 ноя 22:06:52    ext_init.sh[1419]    Starting /media/DISK_A1/system/etc/init.d/S10dropbear
11 ноя 22:06:53    dropbear[1588]    Running in background
11 ноя 22:06:53    ext_init.sh[1419]    Starting /media/DISK_A1/system/etc/init.d/S12vnstatd
11 ноя 22:06:53    ext_init.sh[1419]    Starting /media/DISK_A1/system/etc/init.d/S29php
11 ноя 22:06:54    ext_init.sh[1419]    Starting /media/DISK_A1/system/etc/init.d/S50lighttpd

Похоже, что работает костыль.

Отредактировано AndreyUA (2011-11-12 00:06:22)

16

Re: Двойной старт при перегрузке устройства

Такое впечатление, что двойной старт у всех по разному происходит. Нужно мне еще раз вызовы logger вставить и посмотреть, что происходит. Мне запомнилось, что все происходит несколько иначе.
Скрипт должен правильно выполняться при холодной и горячей загрузке, и после монтирования usb через некоторое время после загрузки кинетика.

17

Re: Двойной старт при перегрузке устройства

Zyxmon :

Такое впечатление, что двойной старт у всех по разному происходит. Нужно мне еще раз вызовы logger вставить и посмотреть, что происходит. Мне запомнилось, что все происходит несколько иначе.
Скрипт должен правильно выполняться при холодной и горячей загрузке, и после монтирования usb через некоторое время после загрузки кинетика.

Вроде у всех одинаково. При загрузке выполняется старт, а потом сразу рестарт. Скрипт выше не дает запускать сервисы, если копия скрипта уже выполняется.

17 окт 00:00:17    ext_init.sh[1489]    Restart
17 окт 00:00:17    ext_init.sh[1419]    Starting /media/DISK_A1/system/etc/init.d/S01swap
...
17 окт 00:00:31    ext_init.sh[1489]    File /var/lock/ext_init.lock is present

Обратите внимание на пиды скриптов. Сначала запустился ext_init.sh[1419] , но мы этого не видим, т.к. не логгируем. Потом ext_init.sh[1489] с параметром restart.

PS Надо бы в раздел рестарт добавить проверку на lock файл, чтобы не останавливал сервисы.

Отредактировано AndreyUA (2011-11-12 00:03:45)

18

Re: Двойной старт при перегрузке устройства

AndreyUA :

Вроде у всех одинаково.

Сейчас поставил прошивку от 10.11 и перепроверил. У меня сначала прорабатывают _ВСЕ_ скрипты с параметром start и уже потом с restart. Скрипт выше не поможет. Скриптов в автозапуске мало (3).

17 окт 00:00:13    root    _________starting /media/DISK_A1/system/etc/init.d/S01swap
17 окт 00:00:13    dropbear[1136]    Running in background
17 окт 00:00:13    root    _________starting /media/DISK_A1/system/etc/init.d/S10dropbear
17 окт 00:00:13    root    _________starting /media/DISK_A1/system/etc/init.d/S11inadyn
17 окт 00:00:13    inadyn[1141]    Started 'Inadyn version 1.98.0' - dynamic DNS updater.
17 окт 00:00:13    inadyn[1141]    Cached IP# from previous invocation '91.77.170.160'
17 окт 00:00:13    inadyn[1141]    Checking for IP# change, connecting to ip1.dynupdate.no-ip.com(8.23.224.121)
17 окт 00:00:14    inadyn[1141]    No IP# change detected, still at 91.77.170.160
17 окт 00:00:14    inadyn[1141]    Signal '0xf' received. Sending 'Shutdown cmd'.
17 окт 00:00:14    inadyn[1141]    STOP command received. Exiting.
17 окт 00:00:14    root    _________stoping /media/DISK_A1/system/etc/init.d/S11inadyn
17 окт 00:00:14    dropbear[1136]    premature exit: Terminated by signal
17 окт 00:00:14    root    _________stoping /media/DISK_A1/system/etc/init.d/S10dropbear
17 окт 00:00:14    root    _________stoping /media/DISK_A1/system/etc/init.d/S01swap
17 окт 00:00:14    kernel    Adding 131064k swap on /media/DISK_A1/system/.swapfile. Priority:-2 extents:37 across:134504k
17 окт 00:00:14    root    _________starting /media/DISK_A1/system/etc/init.d/S01swap
17 окт 00:00:14    dropbear[1214]    Running in background
17 окт 00:00:14    root    _________starting /media/DISK_A1/system/etc/init.d/S10dropbear
17 окт 00:00:14    inadyn[1218]    Started 'Inadyn version 1.98.0' - dynamic DNS updater.
17 окт 00:00:14    inadyn[1218]    Cached IP# from previous invocation '91.77.170.160'
17 окт 00:00:14    inadyn[1218]    Checking for IP# change, connecting to ip1.dynupdate.no-ip.com(8.23.224.121)
17 окт 00:00:14    root    _________starting /media/DISK_A1/system/etc/init.d/S11inadyn

Сначала проработало монтирование диска (запуск всех скриптов с параметром start), потом init.sh - запуск  ext_init.sh с параметром restart: все останавливается и запускается заново.
Хорошо бы запускать ext_init.sh с параметром старт как можно позднее, когда все интерфейсы поднялись и все проинициализировано, т.е. из /bin/init.sh.

19

Re: Двойной старт при перегрузке устройства

Zyxmon :

Сначала проработало монтирование диска (запуск всех скриптов с параметром start), потом init.sh - запуск  ext_init.sh с параметром restart: все останавливается и запускается заново.
Хорошо бы запускать ext_init.sh с параметром старт как можно позднее, когда все интерфейсы поднялись и все проинициализировано, т.е. из /bin/init.sh.

Главное, чтобы они не запускались одновременно.

20

Re: Двойной старт при перегрузке устройства

AndreyUA :

Главное, чтобы они не запускались одновременно.

Для этого правильнее использовать lock file (/var/tmp/init.lock), создаваемый в init.sh.

21

Re: Двойной старт при перегрузке устройства

Я пошел немного иным путем, сделал доп. скрипт, прописал его в crontabs (ежеминутно)
он проверяет запущенность приложений (cron, microdc2,transmission) запущено ли и сколько копий (рассчитано опытным путем), и делает так что бы работала одна копия. start прописал на всяк случай... туда можно все 3 процедуры прописать и запускать их все разом, у меня раздельно, так как работают по расписанию!

#!/bin/sh

MOUNTPNT="/media/DISK_A1"
MOUNT="$MOUNTPNT/system"
INIT="$MOUNT/etc/init.d"

CRON="$MOUNT/usr/sbin/crond"
COUNTCRON=`ps -ax|grep $CRON|grep -v grep|wc -l`

MICRODC2="$MOUNT/usr/bin/microdc2"
COUNTMICRO=`ps -ax|grep $MICRODC2|grep -v grep|wc -l`

TRANSMISSION="$MOUNT/usr/bin/transmission-daemon"
COUNTTRANS=`ps -ax|grep $TRANSMISSION|grep -v grep|wc -l`

cron() {
    case "$COUNTCRON" in
    0)
        $INIT/S02cron start
        ;;
    1)
        exit
        ;;
    *)
        killall crond
        $INIT/S02cron start
        ;;
    esac 
} 

microdc2() {
    case "$COUNTMICRO" in
    0)
        $INIT/S20microdc2 start
        ;;
    5)
        exit
        ;;
    *)
        killall microdc2
        ;;
    esac

} 

transmission() {
    case "$COUNTTRANS" in
    0)
        $INIT/S90transmissiond start
        ;;
    4)
        exit
        ;;
    *)
        $INIT/S90transmissiond stop
        killall transmission-daemon
        ;;
    esac
} 

case "$1" in
    start)
#cron
#microdc2
#transmission
        ;;
    cron)
        cron
        ;;
    microdc2)
        microdc2
        ;;
    transmission)
        transmission
        ;;
    *)
        echo "Usage: $0 {start|cron|microdc2|transmission}"
        ;;
esac

22

Re: Двойной старт при перегрузке устройства

На днях подцепил винт с ext2 и наблюдаю двойной запуск transmission (2.51) после перезагрузки, причем помимо двойного запуска, весьма неустойчивая работа, отваливается dropbear, в логах соответствующее сообщение (dropbear premature exit: Terminated by signal). При отключении transmission все стабильно работает. На NTFS проблем небыло, винт был такой же. Конфиг transmission вертел, крутил по всякому, результат не меняется. Где поискать решение?

23

Re: Двойной старт при перегрузке устройства

oneFB :

в логах соответствующее сообщение (dropbear premature exit: Terminated by signal).

Это нормально. Сначала start, потом restart (stop + start).

oneFB :

Где поискать решение?

В скриптах. Вставляйте вызов logger для отладки.

24

Re: Двойной старт при перегрузке устройства

oneFB :

наблюдаю двойной запуск transmission (2.51)...  Где поискать решение?

Описание здесь http://forum.zyxmon.org/post4239.html#p4239,  в ЛС.

25

Re: Двойной старт при перегрузке устройства

Zyxmon :

Это нормально...

Это после того, как отваливается dropbear, т.е. он просто завершает работу и все.
Есть пара мыслей по решению, сегодня вечером реализую, отпишусь.