Jump to content
  • 0

OPKG на устройствах без USB


srgsf
 Share

Question

Posted (edited)

Всем привет!

Дано:

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.

 

 

 

Edited by srgsf
Следующий шаг.
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Победа!!!

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

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

 

 

 

 

 

Link to comment
Share on other sites

  • 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)

 

 

Link to comment
Share on other sites

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

 

  • Thanks 1
Link to comment
Share on other sites

  • 0
В 18.06.2022 в 16:03, srgsf сказал:

KN-3710_recovery.bin

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...