Jump to content

srgsf

Forum Members
  • Posts

    8
  • Joined

  • Last visited

Posts posted by srgsf

  1. @vasek00 спасибо за ссылки и логи, только проблема в том, что на KN-3710 нет usb и зависимых пакетов в прошивке. Соответственно начиная со строки

    On 9/17/2020 at 10:53 PM, Le ecureuil said:

    В версии 3.7+ нужно установить компонент "USB-накопитель"

    инструкция теряет всякий смысл.

    Нет ни пакета "модули ядра для поддержки файловых систем" ни UI где можно создать папку и закинуть файл с установкой opkg.

    да и flash память вот так выглядит:

    I] Jan  1 00:00:03 kernel: 14 ndmpart partitions found on MTD device EN75XX-SPI_NAND
    [I] Jan  1 00:00:03 kernel: mtd: creating 14 MTD partitions on "EN75XX-SPI_NAND":
    [I] Jan  1 00:00:03 kernel: 0x000000000000-0x000000020000 : "U-Boot"
    [I] Jan  1 00:00:03 kernel: 0x000000020000-0x000000040000 : "U-Config"
    [I] Jan  1 00:00:03 kernel: 0x000000040000-0x000000080000 : "RF-EEPROM"
    [I] Jan  1 00:00:03 kernel: 0x000000080000-0x000000240000 : "Kernel_1"
    [I] Jan  1 00:00:03 kernel: 0x000000240000-0x000001f40000 : "RootFS_1"
    [I] Jan  1 00:00:03 kernel: mtd: device 4 (RootFS_1) set to be root filesystem
    [I] Jan  1 00:00:03 kernel: 0x000000080000-0x000001f40000 : "Firmware_1"
    [I] Jan  1 00:00:03 kernel: 0x000001f40000-0x000001fc0000 : "Config_1"
    [I] Jan  1 00:00:03 kernel: 0x000001fc0000-0x000002000000 : "Dump"
    [I] Jan  1 00:00:03 kernel: 0x000003ae0000-0x000003b00000 : "U-State"
    [I] Jan  1 00:00:03 kernel: 0x000003b00000-0x000003b20000 : "U-Config_res"
    [I] Jan  1 00:00:03 kernel: 0x000003b20000-0x000003b60000 : "RF-EEPROM_res"
    [I] Jan  1 00:00:03 kernel: 0x000003b60000-0x000005a20000 : "Firmware_2"
    [I] Jan  1 00:00:03 kernel: 0x000005a20000-0x000005aa0000 : "Config_2"
    [I] Jan  1 00:00:03 kernel: 0x000000000000-0x0000075e0000 : "Full"

    Ни про какой UBIFS без кастомной прошивки и речи быть не может.

     

    • Thanks 1
  2. Победа!!!

    Оставлю тут инструкцию чтобы самому не забыть.

    1. Создать докер контейнер из предыдущего сообщения.

    2. Включить на устройстве модуль OPKG

    3. Скачать firmware с устройства.

    === дальше всё в контейнере из папки /workspace ===

    4. Скачать подготовленный sdk

    git clone --depth 1 --branch KN-3710-storage https://github.com/srgsf/keenetic-sdk.git
    cd keenetic-sdk
    ./unpack.sh <путь к firmware файлу из п.3>
    make menuconfig

    дальше я включал вот это

    CONFIG_KERNEL_DEBUG_FS=y
    CONFIG_PACKAGE_curl=y
    CONFIG_PACKAGE_ndm-mod-shell=y
    CONFIG_PACKAGE_kmod-fs-ubi=y
    CONFIG_PACKAGE_kmod-fs-ubifs=y
    CONFIG_PACKAGE_kmod-ndm-storage=y
    CONFIG_PACKAGE_kmod-usb-core=y
    CONFIG_PACKAGE_kmod-usb-storage=y
    CONFIG_PACKAGE_libarchive=y
    CONFIG_PACKAGE_libcurl=y
    CONFIG_PACKAGE_ndm-mod-usb=y
    CONFIG_PACKAGE_ndm-mod-shell=y
    CONFIG_PACKAGE_ndm-mod-storage=y
    CONFIG_PACKAGE_ubi-utils=y

    сохранить и выйти.

    5. запустить сборку.

    make -j<количество ЦПУ>

    6. положить получившийся файл в папку /private/tftpboot под именем KN-3710_recovery.bin

    sudo docker cp <ID контейнера>:/workspace/keenetic-sdk/bin/en7528/<Имя файла прошивки>.bin /private/tftpboot/KN-3710_recovery.bin

    7. Прошить по вот этой инструкции.

    8. Заходим на устройство и проверяем что всё нормально

    (config)> exec sh
    
    
    BusyBox v1.35.0 (2022-04-13 08:47:51 UTC) built-in shell (ash)
    
    / # mount
    /dev/root on / type squashfs (ro,relatime)
    tmpfs on /dev type tmpfs (rw,nosuid,noexec,relatime)
    none on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600,ptmxmode=000)
    proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
    /dev/ubi0_0 on /storage type ubifs (rw,relatime,compr=zlib) <--- Вот оно, смотировалось "само"
    

    9. Скачать установочный файл для opkg и подключить диск в cli

    # / cd /storage
    # / mkdir install
    # / cd install
    # / curl https://bin.entware.net/mipselsf-k3.4/installer/mipsel-installer.tar.gz -o mipsel-installer.tar.gz
    # / exit
    (config)> opkg disk storage:/
    Opkg::Manager: Disk is set to: storage:/.
    (config)> exit

    А дальше в логах побежит установка opkg...

     

    P.S. Всё это я проделывал после создания ubi раздела из предыдущего поста. Возможно, если делать на свежей железке надо будет создать ubi раздел с именем storage вручную.

     

     

     

     

     

    • Upvote 2
  3. Всем привет!

    Дано:

    KN-3710, Ноут с Apple M1 Pro процессором.

    Требуется:

     Получить на KN-3710 рабочий OPKG наподобие того, что описывается вот в этой инструкции.

    === Подготовка ===

    •  Dockerfile Для сборки. (сборку буду делать на arm архитектуре, поэтому копирую библиотеки из amd64 образа)
    • keenetic-sdk
    • arm.patch (По умолчанию на arm архитектуре char беззнаковый, а тут хотят "знаковый")
    • в файле target/linux/en7528/KN-3710/target.mk надо добавить 
      FEATURES += extended_storage
    • в файле target/linux/en7528/KN-3710/ndwrt.config надо добавить
      СONFIG_USES_EXTENDED_STORAGE=y 
      CONFIG_KERNEL_MTD_NDM_EXTENDED_STORAGE=y 
      CONFIG_PACKAGE_kmod-fs-ubi=y
      CONFIG_PACKAGE_kmod-fs-ubifs=y 
      CONFIG_PACKAGE_kmod-ndm-storage=y 
      CONFIG_PACKAGE_ndm-mod-fstools=m 
      CONFIG_PACKAGE_ndm-mod-opkg-kmod-fs=m 
      CONFIG_PACKAGE_ndm-mod-storage=y

    === Проверка ===

    Собираю по инструкции из readme в kinetic-sdk.  Если всё прошло успешно, то в папке /bin/en7528/ появляется файл прошивки с расширением .bin 

    Переименовываю файл в KN-3710_recovery.bin и складываю его в папку /private/tftpboot/ на ноуте.

    Далее по вот этой инструкции прошиваю девайс.

    === Настройка прошивки ===

    Для начала в оригинальной прошивке нужно включить OPKG компонент, затем выгрузить прошивку и на ней сделать

    make dirclean
    ./unpack.sh <файл прошивки>

    Далее:

    make menuconfig

    Доступ к ash

    NDM -> Debug -> ndm-mod-shell
    NDM -> Opkg   -> ndm-mod-opkg

    UBIFS

    Kernel modules -> Other modules -> kmod-ndm-storage

    Kernel modules -> Filesystems -> kmod-fs-ubi

    Kernel modules -> Filesystems -> kmod-fs-ubifs

    Kernel modules -> Cryptographic API modules -> kmod-crypto-lzo

    Kernel modules -> Libraries -> kmod-lib-lzo

    Libraries -> liblzo

    Utilities -> ubi-utils

    Utilities

    Debug suite -> curl

    Libraries -> libarchive

    Возможно что-то ещё...

    Cоздаю папку files/storage

    Сохраняю, собираю (make), прошиваю через recovery

    Теперь в CLI доступно:

    (config)> exec ash
    
    
    BusyBox v1.24.2 () built-in shell (ash)
    
    / #

     

    в логах появились Storage_A и Storage_B

    [I] Jan  1 00:00:03 kernel: 0x000000000000-0x000000020000 : "U-Boot"
    [I] Jan  1 00:00:03 kernel: 0x000000020000-0x000000040000 : "U-Config"
    [I] Jan  1 00:00:03 kernel: 0x000000040000-0x000000080000 : "RF-EEPROM"
    [I] Jan  1 00:00:03 kernel: 0x000000080000-0x000000240000 : "Kernel_1"
    [I] Jan  1 00:00:03 kernel: 0x000000240000-0x000001f40000 : "RootFS_1"
    [I] Jan  1 00:00:03 kernel: mtd: device 4 (RootFS_1) set to be root filesystem
    [I] Jan  1 00:00:03 kernel: 0x000000080000-0x000001f40000 : "Firmware_1"
    [I] Jan  1 00:00:03 kernel: 0x000001f40000-0x000001fc0000 : "Config_1"
    [I] Jan  1 00:00:03 kernel: 0x000001fc0000-0x000002000000 : "Dump"
    [I] Jan  1 00:00:03 kernel: 0x000002000000-0x000003ae0000 : "Storage_A"
    [I] Jan  1 00:00:03 kernel: 0x000003ae0000-0x000003b00000 : "U-State"
    [I] Jan  1 00:00:03 kernel: 0x000003b00000-0x000003b20000 : "U-Config_res"
    [I] Jan  1 00:00:03 kernel: 0x000003b20000-0x000003b60000 : "RF-EEPROM_res"
    [I] Jan  1 00:00:03 kernel: random: fast init done
    [I] Jan  1 00:00:03 kernel: 0x000003b60000-0x000005a20000 : "Firmware_2"
    [I] Jan  1 00:00:03 kernel: 0x000005a20000-0x000005aa0000 : "Config_2"
    [I] Jan  1 00:00:03 kernel: 0x000005aa0000-0x0000075e0000 : "Storage_B"
    [I] Jan  1 00:00:03 kernel: 0x000000000000-0x0000075e0000 : "Full"
    ...
    [I] Jan  1 00:00:05 kernel: Searching for suitable storage partitions...
    [I] Jan  1 00:00:05 kernel: Found 1st storage partition of size 28180480 bytes
    [I] Jan  1 00:00:05 kernel: Found 2nd storage partition of size 28573696 bytes
    [I] Jan  1 00:00:05 kernel: Registering UBI data partitions parser
    [W] Jan  1 00:00:05 kernel: Concatenating MTD devices:
    [W] Jan  1 00:00:05 kernel: (0): "Storage_A"
    [W] Jan  1 00:00:05 kernel: (1): "Storage_B"
    [W] Jan  1 00:00:05 kernel: into device "NDM combined UBI partition"
    [I] Jan  1 00:00:05 kernel: 1 ndmubipart partitions found on MTD device NDM combined UBI partition
    [I] Jan  1 00:00:05 kernel: mtd: creating 1 MTD partitions on "NDM combined UBI partition":
    [I] Jan  1 00:00:05 kernel: 0x000000000000-0x000003620000 : "Storage"
    [I] Jan  1 00:00:05 kernel: Merging storage partitions OK

     

     

    Но вот автоматом оно не монтируется:

    / # mount
    /dev/root on / type squashfs (ro,relatime)
    tmpfs on /dev type tmpfs (rw,nosuid,noexec,relatime)
    none on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600,ptmxmode=000)
    proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)

    даже после

    (config)> opkg disk storage:/
    Opkg::Manager: Disk is set to: storage:/.

    Пытаюсь сделать руками:

    (config)> exec sh
    
    
    BusyBox v1.24.2 () built-in shell (ash)
    
    / # modprobe ubi
    / # modprobe ubifs
    / # ubinfo
    UBI version:                    1
    Count of UBI devices:           0
    UBI control device major/minor: 10:59
    / # mknod /dev/ubi_ctrl c 10 59
    / # ubiattach /dev/ubi_ctrl -m 16
    UBI device number 0, total 433 LEBs (54980608 bytes, 52.4 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
    / # ubinfo /dev/ubi0
    ubi0
    Volumes count:                           0
    Logical eraseblock size:                 126976 bytes, 124.0 KiB
    Total amount of logical eraseblocks:     433 (54980608 bytes, 52.4 MiB)
    Amount of available logical eraseblocks: 428 (54345728 bytes, 51.8 MiB)
    Maximum count of volumes                 128
    Count of bad physical eraseblocks:       0
    Count of reserved physical eraseblocks:  1
    Current maximum erase counter value:     1
    Minimum input/output unit size:          2048 bytes
    Character device major/minor:            241:0
    / # ubimkvol /dev/ubi0 -N storage -s 54345728
    Volume ID 0, size 428 LEBs (54345728 bytes, 51.8 MiB), LEB size 126976 bytes (124.0 KiB), dynamic, name "storage", alignment 1
    / # ubinfo /dev/ubi0_0
    Volume ID:   0 (on ubi0)
    Type:        dynamic
    Alignment:   1
    Size:        428 LEBs (54345728 bytes, 51.8 MiB)
    State:       OK
    Name:        storage
    Character device major/minor: 241:1

    Смонтировать вручную

    / # mount -t ubifs -o compr=zlib ubi0_0 /storage
    / # mount -t ubifs -o compr=zlib ubi0_0 /opt
    / # mount
    /dev/root on / type squashfs (ro,relatime)
    tmpfs on /dev type tmpfs (rw,nosuid,noexec,relatime)
    none on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600,ptmxmode=000)
    proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
    ubi0_0 on /storage type ubifs (rw,relatime,compr=zlib)
    ubi0_0 on /opt type ubifs (rw,relatime,compr=zlib)

     

    Но вот дальше Opkg::Manager не хочет устанавливать ничего из папки /storage/install

    При перезагрузке /dev/ubi_ctrl пропадает, и, по прежнему автоматом ничего не монтируется и не устанавливается.

    Помогите, plz.

     

     

     

    • Upvote 1
  4. 2 hours ago, Mamay said:

    Тут как раз и написано:

    Требуется установить пакет "Модули ядра для поддержки файловых систем"

    А его в прошивке для KN-3710 нет.  @Mamay, это как раз и является предметом данного вопроса.

     

    У меня есть и KN-3810 и KN-3710.

    В устройстве с USB (KN-3810) "всё что нужно" есть, а в KN-3710 при установке пакета OPKG доступны только пакеты для настройки сетевых фильтров. И, не смотря на то, что из cli команда 

    opkg disk storage:/

    выполняется без ошибок, папка /opt остаётся read only. (не монтируется раздел с UBIFS) 

    К тому же, не очень понятно как без web UI записать установочный скрипт, во всех инструкциях пишут, что либо через usb накопитель либо через web морду файл нужно закачать, в прошивке для KN-3710 на странице Applications нет секции USB devices. (Да и работать не будет, на устройстве я не нашёл доступных rw разделов).

    Я даже хотел прошивку кастомную собрать, но и это пока невозможно.

  5. На современных моделях (например KN-3710) 128М flash памяти, есть возможность включить в прошивку модуль OPKG, но нет модуля поддержки файловых систем, а соответственно и возможности установить OPKG Entware во внутреннюю память.

    Насколько я вижу по описанию, KN-3710 и KN-3810 "близнецы браться" и отличаются только наличием у последнего USB.

    Пожалуйста, дайте возможность установки дополнительных пакетов на устройства без USB.

     

    • Confused 1
  6. 4 hours ago, avn said:

     

    Так, а зачем no-pool отключили? Пусть один раз и читает?

    Похоже что от провайдера dns адреса позже приходят чем dnsmasq стартует. 

    Возможно, если есть какой-нибудь хук на "прилёт" настроек от dhcp клиента, то там перезагрузить dnsmasq (но это тоже получается такой-же костыль)

    на 3.7 тоже каждые 5 секунд кто-то трогает /etc/resolv.conf ? Это фича или баг?

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

    /opt/etc/init.d/S15upsd

    #!/bin/sh
    
    ENABLED=yes
    PROCS=upsd
    ARGS="-u admin"
    PREARGS=""
    PRECMD="upsdrvctl -u admin start"
    DESC=$PROCS

    если всё будет работать из под root то замените просто admin на root 

     

  8. Вот что у меня получилось на 3.8 Beta 2

    /opt/bin/dns_dhcp.sh

    #!/bin/sh
    
    DNS_DHCP_DIR=/tmp/dnsmasq.hosts
    DNS_DHCP_FILE=$DNS_DHCP_DIR/dhcp
    
    mkdir -p $DNS_DHCP_DIR
    echo "192.168.0.1       router" > $DNS_DHCP_FILE
    
    curl -s http://localhost:79/rci/show/ip/dhcp/bindings 2>/dev/null | jq -r '.lease[] | {"ip": .ip, "name" : (.name // .hostname)} | select(.name | . != "") | .ip +"\t"+ .name' >> $DNS_DHCP_FILE

    т.е. оно фильтрует если вдруг name или hostname отсутствуют или пустые.

     

    /opt/etc/ndm/neighbour.d/100_update-dhcp.sh

    #!/bin/sh
    
    [ "$update" != "dhcp" ] && exit 0
    
    /opt/bin/dns_dhcp.sh &
    
    exit 0

    тут может ещё как-то можно "запуски" пофильтровать?

     

    /opt/etc/dnsmasq.conf

    ...
    #no-poll 
    hostsdir=/tmp/dnsmasq.hosts
    ...

     

    Вроде всё работает, но вот кто-то каждые 5 секунд обновляет /etc/resolv.conf (ЭТО ВООБЩЕ НОРМАЛЬНО?) и из за этого dnsmasq всё заново перечитывает и спамит в логи.

    Костыль:

    /opt/etc/dnsmasq.conf

    ...
    resolv-file=/tmp/resolv.dnsmasq
    ...

     

    /opt/etc/cron.1min/update_resolv.sh

    #! /bin/sh
    cmp -s /etc/resolv.conf /tmp/resolv.dnsmasq || cp /etc/resolv.conf /tmp/resolv.dnsmasq

    оно конечно при стартах всяких там vpn будет целую минуту ждать, но всё равно, это лучше чем каждые 5 секунд в лог спамить и перечитывать конфиг полностью.

×
×
  • Create New...