Перейти к содержанию

Вопрос

Опубликовано (изменено)

Всем привет!

Дано:

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.

 

 

 

Изменено пользователем srgsf
Следующий шаг.

Рекомендуемые сообщения

  • 1
Опубликовано

Победа!!!

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

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 вручную.

 

 

 

 

 

  • 0
Опубликовано

Странно

для KN1910

Цитата

Flash-память - 128 Мбайт (Dual Boot, Parallel-NAND): Winbond W29N01HVSINF, Macronix MX30LF1G18AC-TI, Macronix MX30LF1G28AD-TI

[W] Jan  1 03:00:13 kernel: UBIFS (ubi0:0): UBIFS: mounted UBI device 0, volume 0, name "storage"
[W] Jan  1 03:00:13 kernel: UBIFS (ubi0:0): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
[W] Jan  1 03:00:13 kernel: UBIFS (ubi0:0): FS size: 63361024 bytes (60 MiB, 499 LEBs), journal size 3174400 bytes (3 MiB, 25 LEBs)
[W] Jan  1 03:00:13 kernel: UBIFS (ubi0:0): reserved for root: 2992697 bytes (2922 KiB)

 

в KN1011/KN1010

Цитата

Flash-память - 128 Мбайт (Dual Boot, Parallel-NAND): Winbond W29N01HVSINF, Macronix MX30LF1G18AC-TI, Macronix MX30LF1G28AD-TI

Flash-память - Spansion S34ML01G200TF100 128 Мбайт (Dual Boot, Parallel-NAND)

в KN2710 имеется

Цитата

Flash-память - 256 Мбайт (Dual Boot, SPI-NAND)

[W] Jan  1 03:00:08 kernel: UBIFS (ubi0:0): UBIFS: mounted UBI device 0, volume 0, name "storage"
[W] Jan  1 03:00:08 kernel: UBIFS (ubi0:0): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
[W] Jan  1 03:00:08 kernel: UBIFS (ubi0:0): FS size: 118087680 bytes (112 MiB, 930 LEBs), journal size 5967872 bytes (5 MiB, 47 LEBs)
[W] Jan  1 03:00:08 kernel: UBIFS (ubi0:0): reserved for root: 4952683 bytes (4836 KiB)

 

в KN3810/KN3710

Цитата

Flash-память - 128 Мбайт (Dual Boot, SPI-NAND): Kioxia TC58CVG0S3HRAIJ, Winbond 5N01GVZEIG, Nuvoton XT26G01CWSIGA

в KN2410

Цитата

Flash-память - Winbond W25N01GVZEIG 128 Мбайт (Dual Boot, SPI-NAND)

в KN2510

Цитата

Flash-память - Winbond W25N01GVZE IG 128 Мбайт (Dual Boot, SPI-NAND)

[W] Jan  1 03:00:09 kernel: UBIFS (ubi0:0): UBIFS: mounted UBI device 0, volume 0, name "storage"
[W] Jan  1 03:00:09 kernel: UBIFS (ubi0:0): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
[W] Jan  1 03:00:09 kernel: UBIFS (ubi0:0): FS size: 55107584 bytes (52 MiB, 434 LEBs), journal size 2793472 bytes (2 MiB, 22 LEBs)
[W] Jan  1 03:00:09 kernel: UBIFS (ubi0:0): reserved for root: 2602867 bytes (2541 KiB)

 

 

  • 0
Опубликовано

@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 без кастомной прошивки и речи быть не может.

 

  • 0
Опубликовано
В 18.06.2022 в 16:03, srgsf сказал:

KN-3710_recovery.bin

Уважаемый srgsf, не мог бы ты выложить уже откомпилированный рековери файл куда нибуть? Я подозреваю, что прошивка рековери файла вполне себе даст возможность поставить OPKG на внутреннюю памать

  • 0
Опубликовано

Здравствуйте. Пытался понять инструкцию, но мне не хватает знаний linux. Может кто-нибудь помочь поставить opkg на KN-3710?

  • 0
Опубликовано

Столкнулся с рядом проблем еще на этапе сборки прошивки.
Сначала линукс внутри докера не дал склонировать репу с keenetic-sdk, мол, рабочая папка в корне находится, нет у пользователя таких прав, вообще-то. Ладно, переместились в домашнюю директорию пользователя, туда все склонировал, перенес прошивку через volume, который тоже к домашней директории прописал.
Но все равно возникла проблема с правами на этапе

./unpack.sh <путь к firmware файлу из п.3>

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

created 506 files
created 101 directories
created 192 symlinks
created 0 devices
created 0 fifos

mkdir: cannot create directory '/files-keenetic-dpn-common': Permission denied
chmod: cannot access '/files-keenetic-dpn-common//usr/share/dpn/EU/20200501': No such file or directory
cp: cannot create regular file '/files-keenetic-dpn-common//usr/share/dpn/EU/20200501/manifest.json': No such file or directory
mkdir: cannot create directory '/files-keenetic-dpn-common': Permission denied
chmod: cannot access '/files-keenetic-dpn-common//usr/share/dpn/EU/20220822': No such file or directory
cp: cannot create regular file '/files-keenetic-dpn-common//usr/share/dpn/EU/20220822/manifest.json': No such file or directory
mkdir: cannot create directory '/files-keenetic-dpn-common': Permission denied
chmod: cannot access '/files-keenetic-dpn-common//usr/share/dpn/EU/20230112': No such file or directory
cp: cannot create regular file '/files-keenetic-dpn-common//usr/share/dpn/EU/20230112/manifest.json': No such file or directory
mkdir: cannot create directory '/files-keenetic-dpn-common': Permission denied
chmod: cannot access '/files-keenetic-dpn-common//usr/share/dpn/EA': No such file or directory
cp: cannot create regular file '/files-keenetic-dpn-common//usr/share/dpn/EA/manifest.json': No such file or directory
mkdir: cannot create directory '/files-keenetic-dpn-common': Permission denied
chmod: cannot access '/files-keenetic-dpn-common//usr/share/dpn/RU/20230223': No such file or directory
cp: cannot create regular file '/files-keenetic-dpn-common//usr/share/dpn/RU/20230223/manifest.json': No such file or directory
mkdir: cannot create directory '/files-keenetic-dpn-common': Permission denied
chmod: cannot access '/files-keenetic-dpn-common//usr/share/dpn/UA': No such file or directory
cp: cannot create regular file '/files-keenetic-dpn-common//usr/share/dpn/UA/manifest.json': No such file or directory
mkdir: cannot create directory '/files-keenetic-dpn-common': Permission denied
chmod: cannot access '/files-keenetic-dpn-common//usr/share/dpn/ZZ/20230223': No such file or directory
cp: cannot create regular file '/files-keenetic-dpn-common//usr/share/dpn/ZZ/20230223/manifest.json': No such file or directory
mkdir: cannot create directory '/files-keenetic-dpn-common': Permission denied
chmod: cannot access '/files-keenetic-dpn-common//usr/share/dpn/TR': No such file or directory
cp: cannot create regular file '/files-keenetic-dpn-common//usr/share/dpn/TR/manifest.json': No such file or directory

А под рутом он в принципе не дает ничего компилировать.

Сталкивались с таким? Находили решение?

  • 0
Опубликовано (изменено)
В 18.06.2022 в 18:03, srgsf сказал:

Победа!!!

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

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 вручную.

 

 

 

 

 

Попытался сделать по этой инструкции, на Firmware-KN-3710-4.01.C.7.0-1, но не завелось. Всё таки что-то не даёт автоматически смонтировать ubi0_0 и установка не начинается из папки /storage/install...

При перезагрузки всё монтирую вручную, в папку файл mipsel-installer.tar.gz скачивается, но установка не начинается.

Единственное, в файл target/linux/en7528/KN-3710/target.mk добавлял уже 
FEATURES += 
usb usbstorage extended_storage
иначе не появлялись разделы по USB в make menuconfig

Изменено пользователем wkomarov
  • 0
Опубликовано (изменено)

Всем привет!

Тоже решил попробовать перепрошить

1. Подскажите, пожалуйста, как создавать вот эту папку?

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

2. Если при сборке прошивки ругается на это, то может ли быть дело в том, что использую Ubuntu из под Windows 11 как WSL?

Package kmod-usb-core is missing dependencies for the following libraries:
nls_base.ko

 

 

P.S. В общем не стал мучиться и приобрёл Hopper SE

Изменено пользователем philliebe
UPD
  • 0
Опубликовано

Поступил аналогичным образом, приобрел Hopper. Не понимаю, почему роутеры, у которых даже платы идентичны, только припаяй юсб-разъем, так отличаются по прошивке радикально.

  • 0
Опубликовано (изменено)

Добрый день.

На основе вышенаписанного собрал прошивку для KN-1111, сделал shell скрипт который скачивает и устанавливает entware на tmpfs, после чего скачивает, устанавливает и настраивает нужные мне пакеты.

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

1. Как мне добавить этот скрипт в прошивку для автозапуска после перезагрузки? Понять систему сборки прошивки не удалось совершенно. Настройки сборки из готовых компонентов - понятны, как добавить что-то своё - нет.

2. Интересно для чего в стоковую прошивку устройств уровня 1111 добавлен компонент поддержки открытых пакетов. Что с ним можно сделать? Как предполагается его использовать? Может быть есть какие-то примеры применения?

Изменено пользователем john_wayne
  • 0
Опубликовано
6 часов назад, john_wayne сказал:

как добавить что-то своё

 

6 часов назад, john_wayne сказал:

Может быть есть какие-то примеры применения?

ага, iperf3 гонять можно

  • 0
Опубликовано (изменено)

Для Speedster KN-3012:
1. скачать прошивку той же версии от Hopper KN-3810 (будьте внимательны существуют разные версии Hopper!!!) и Viva KN-1912, распаковать их в отдельном каталоге, я например использую под Linux(Ubuntu): 
$ binwalk -e <файл_прошивки>

2. подготовить Keenetic SDK:

2.0 если у вас не скачивается ваша версия прошивки из git, то качайте branch всей версии, 4.02 но потом нужно выполнить команду
git tag -a <номер актуальной прошивки git>
откроется файл аннотации, там тоже установить <номер актуальной прошивки git>

Если что, актуальную прошивку в роутере можно понизить до той, что в git
Отключить автообновление в роутере!


2.1 заменить в <SDK>/target/linux/en7528/KN-3012  файлы

ndwrt.config (старый сохранить отдельно)
target.mk
файлами из <SDK>/target/linux/en7528/KN-1912

и поправить в новом ndwrt.config идентификаторы модели из файла от KN-3012, обратить внимание на CONFIG_TARGET_DEVICE_ID

2.2 распаковать скаченный с вашего роутера образ прошивки при помощи SDK
unpack.sh ...

3.1 добавить (недостающие пути тоже добавить!) из прошивки Hopper в путь 
<SDK>/package/private/ndm/files-ndm-mod-opkg/lib
файлы из /lib:
libndmExec.so
libndmOpkg.so

3.2 добавить (недостающие пути добавить!) из прошивки Hopper в путь
<SDK>/package/private/ndm/files-ndm-mod-usb/lib
файлы из /lib:
libndmUSB.so

3.3 добавить (недостающие пути добавить!) из прошивки Hopper в путь
<SDK>/package/private/ndm/files-ndm-mod-storage/lib
файлы из /lib:
libndmStorage.so


3.4 Заменить файл в package/private/ndm/files-ndm/etc/components.xml из прошивки Viva /etc/components.xml


3.5 Включить в 
$ 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
CONFIG_PACKAGE_kmod-usb-xhci-mtk=y
CONFIG_PACKAGE_kmod-usb-xhci-hcd=y
CONFIG_PACKAGE_kmod-usb2=y
CONFIG_PACKAGE_kmod-usb3=y
CONFIG_PACKAGE_kmod-usb_extras=y

надеюсь ничего не забыл. Если что посмотрите в прикреплённом конфиге


4.1 Добавить каталоги в build_dir/target-mipsel-linux-musl_musl/base-files/ipkg-KN-3012/base-files
/storage
/opt
 
 
 5. скомпилировать 
 для контроля можно распаковать образ  в <SDK>/bin/... при помощи 
 $ binwalk -e <файл_прошивки>
Проверить струкутру, библиотеки и т.д.

6. Залить в роутер при помощи tftpd: образ поместить в какталог для tftp и переименовать! в KN-3012_recovery.bin

 

P.S> если есть добрые люди которые пробовали KN-3711 перевести в режим с opkg и storage. (аля KN-3811), поделитесь опытом. Думаю покупать Keenetic или Asus... если в Keenetic на ARM сработает, то выбор будет очевиден)

 

.config

Изменено пользователем sendel
Ввёл в заблуждение неверным описанием, поправил пути
  • 0
Опубликовано (изменено)
В 18.06.2022 в 17:03, srgsf сказал:

Победа!!!

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

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 вручную.

 

 

 

 

 

Есть актуальный гайд на 2025 год, с новыми версиями прошивок? срочно нужно установить OPKG на sprinter 3710

Изменено пользователем Endlesseff
  • 0
Опубликовано

Есть актуальный мануал для 3711? Все включал в menuconfig, прошивка собирается, но почему-то я не могу выполнить даже exec ash, как будто прошивка поверх не записывается...

  • 0
Опубликовано

Если кто надумает ковырять challenger (KN-3910) то разметка у него следующая

| Раздел         | Адреса (HEX)                  | Размер (МБ) |
| -------------- | ----------------------------- | ----------- |
| Preloader      | 0x000000000000–0x000000080000 | 0.5 МБ      |
| U-Boot         | 0x000000080000–0x000000280000 | 2.0 МБ      |
| U-Config       | 0x000000280000–0x000000300000 | 0.5 МБ      |
| RF-EEPROM      | 0x000000300000–0x000000500000 | 2.0 МБ      |
| Kernel_1       | 0x000000500000–0x0000006c0000 | 1.75 МБ     |
| RootFS_1       | 0x0000006c0000–0x000003a00000 | 41.5 МБ     |
| Firmware_1     | 0x000000500000–0x000003a00000 | 43.25 МБ    |
| Config_1       | 0x000003a00000–0x000003a80000 | 0.5 МБ      |
| Dump           | 0x000003a80000–0x000003b00000 | 0.5 МБ      |
| Storage_A      | 0x000003b00000–0x000003c00000 | 1.0 МБ      |
| U-State        | 0x000003c00000–0x000003c80000 | 0.5 МБ      |
| U-Config_res   | 0x000003e80000–0x000003f00000 | 0.5 МБ      |
| RF-EEPROM_res  | 0x000003f00000–0x000004100000 | 1.0 МБ      |
| Firmware_2     | 0x000004100000–0x000007600000 | 53.5 МБ     |
| Config_2       | 0x000007600000–0x000007680000 | 0.5 МБ      |
| Storage_B      | 0x000007680000–0x000007800000 | 1.5 МБ      |
| Full           | 0x000000000000–0x000007800000 | 120.0 МБ    |

Два Storage в сумме имеют 2.5 МБ 🙃

  • 0
Опубликовано

х.з. как у них получалось. возможно максимум на 3.5 прошивке....

 

всё что старше -- уже ввели анальную защиту в бинарниках. 

libndmStorage.so не заводится никак на прошивках изначально где его нету - вплоть до того что то вайвай отрубится - либо момед дропает соединения (причём в логах нигугу) 

проверено на 1713 vs 1714 (но есть пока способ сами бинарники 1713 поправить чтоб на 1714 полноценно работало. но libndmStorage.so к ориг 1714 не прикрутить никак и низачто)

хотя сам подход.... поражает.  казалось бы причём тут usb и встроенная память???

т.е. если уже есть usb которому "разрешили" читать диски - то на кой во встроенную то вставлять? но именно только таким моделям и "разрешено" иметь встроенной хранилище:facepalm:

  • 0
Опубликовано (изменено)

поправка

"защита" срабатывает если помимо встроенного , ещё внешние диски хочешь

чтоб обойти надо собственно и "ядро" менять: ndm ndmc ndmf

вообще обе инструкции не то чтоб кривые но путанные - в реальности всё проще и через gui menuconfig делается

м.б. как сам доразберусь - выложу понятную

Изменено пользователем Quqas Wased
  • 0
Опубликовано
В 30.07.2025 в 10:16, Ape сказал:

Два Storage в сумме имеют 2.5 МБ

Тут на форуме лежит инструкция как отказаться от дуалбута и использовать это место под хранилище. +50мб чего более чем.

  • 0
Опубликовано
7 часов назад, bigpu сказал:

не нашел поиском, киньте ссылку)

Честно говоря это третья ссылка по ключевым словам "dual boot"

 

 

  • 0
Опубликовано
В 30.07.2025 в 10:22, FLK сказал:

Лучший способ - купить себе нормальный роутер)))))

Лучший способ это по умолчания дать возможность устанавливать в память роутера entware и отказаться от бесполезного dualboot'a в нем смысла ровно 0. Потому что во-первых там не сохраняется старый образ прошивки при обновлении, что просто :facepalm: и совершенно не ясно для чего он может быть полезен, т.к. для хранения start-up config в двух вариантах нужно явно меньше пространства. Вариант, при котором вдруг первый образ будет как-то нарушен ничтожен. 

  • 0
Опубликовано
10 часов назад, hoaxisr сказал:

Честно говоря это третья ссылка по ключевым словам "dual boot"

 

 

интересная метода

только не для этой темы

1 просит изначально прошивку с usb storage поддержкой

2 завязано на то чтоб уже был entware

но попытаться самому в sdk поправить ndm_storage.c можно

жаль лишь что для spi моделей всё равно не хватит размера чтоб влезло полноценный entware. меньше 20мб выйдет

  • 0
Опубликовано
5 часов назад, Quqas Wased сказал:

интересная метода

только не для этой темы

1 просит изначально прошивку с usb storage поддержкой

2 завязано на то чтоб уже был entware

но попытаться самому в sdk поправить ndm_storage.c можно

жаль лишь что для spi моделей всё равно не хватит размера чтоб влезло полноценный entware. меньше 20мб выйдет

Это скорее как направление для исследования. 

Вообще 20мб конечно мало, но некоторые полезные пакеты могут установлены. Скорее один за раз. 

  • 0
Опубликовано
1 час назад, hoaxisr сказал:

Это скорее как направление для исследования. 

Вообще 20мб конечно мало, но некоторые полезные пакеты могут установлены. Скорее один за раз. 

а как такую таблицу узнать ? для своей модели

ndmubipart например не вижу. неясно его нет в принципе или в этой модели?

 

  • 0
Опубликовано
52 минуты назад, Quqas Wased сказал:

а как такую таблицу узнать ? для своей модели

По хорошему, если вы хотите что-то собирать через SDK для своего роутера, то очень полезным будет иметь UART подключение к роутеру. Чтобы видеть загрузочные логи uboot и ядра, ну и для отладки не помешает точно, когда будут ошибки в прошивке и она не будет запускаться или уходить в цикл ребут, то понять где и почему это происходит без UART не выйдет. 

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.