Jump to content

srgsf

Forum Members
  • Posts

    8
  • Joined

  • Last visited

Everything posted by srgsf

  1. @vasek00 спасибо за ссылки и логи, только проблема в том, что на KN-3710 нет 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 без кастомной прошивки и речи быть не может.
  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 вручную.
  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-shellNDM -> 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.
  4. Тут как раз и написано: Требуется установить пакет "Модули ядра для поддержки файловых систем" А его в прошивке для 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.
  6. Похоже что от провайдера 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...