При обновление WB 6 Выдает ошибки
Добрый день.
На первом скриншоте вижу или устаревшие ключи или недостаток места.
Сколько доступно свободно на корневом разделе?
На втором - отсуутствие интернета.
На разделе /dev/root место закончилось. Возможно, в этом проблема:
Я могу дать доступ через anydesk я просто не знаю что можно еще удить или перенести
Обычно место на разделе /dev/root занимают устанавливаемое стороннее ПО. Нужно понять, что было установлено и куда. Потом можно переместить часть директорий на большой раздел /mnt/data, есть несколько тем про это, например: Закончилось место в /dev/root - #16 от пользователя Explorerol
Переборщил с переносом и поломал систему
Если система не загружается, то тебе нужно восстанавливать систему.
Вот прочти эту ссылку:
https://wirenboard.com/wiki/Wiren_Board_6_Firmware_Update
Т.е. тебе нужно скачать fit файл, переименовать или в wb6_update.fit или в wb6_update_FACTORYRESET.fit, в зависимости от того, что ты хочешь сделать, подключить флешку к wirenboard и включить его.
Можешь подключиться так же к консоли wirenboard через telnet подключение и видеть процесс обновления.
Скачай программу putty и настрой подключение через последовательный (com порт).
Вместо COM3 укажи свой COM порт. Ищи его в диспетчере устрйоств. Он появится после подключения Micro USB - USB A провода между компьютером и Wirenboard.
COM1 - это обычно порт, который есть на материнской плате компьютера. Ты ищи новый COM порт.
Putty можно скачать отсюда: Download PuTTY: latest release (0.81)
Только ссылки указанные для скачивания в Wiki неправильные, вот правильные:
http://fw-releases.wirenboard.com/?prefix=fit_image/stable/6x/
http://fw-releases.wirenboard.com/?prefix=fit_image/stable/67/
http://fw-releases.wirenboard.com/?prefix=fit_image/stable/7x/
Я не знаю почему их не исправят.
В общем, подключаешься по com порту, подключаешь флешку и перезапускаешь Wirenboard, ждёшь процесса восстановления.
Если тебе важны твои настройки на контроллере и обновление прошивки не помогло, то ты можешь попробовать загрузить wirenboard с флешки.
Тебе понадобится ядро вот из этого сообщения:
Распаковываешь DEB пакет с ядром.
Из пакета с ядром берёшь директорию dtbs и файл vmlinuz-5.10.35-wg-wb119.
Берёшь флешку на 4-8Гб, возможно нужна будет USB 2.0.
На флешке создаёшь два раздела, первый 100 Мб, на него копируешь директорию и файл vmlinuz-5.10.35-wg-wb119, переименовываешь его в vmlinuz.
На втором разделе создаёшь файловую систему EXT4.
Всё это можно сделать в любом Linux, можешь запустить любой LiveCD в виртуальной машине VirtualBox, хоть Ubuntu.
Разделы на флешке можно сделать в Linux с помощью утилиты fdisk или cfdisk.
Тебе нужно запустить Linux в виртуальной машине, пробросить в неё флешку.
Флешка, может определиться как /dev/sda или /dev/sdb
Смотришь вывод команды
fdisk -l
И ищешь по размеру флешки.
Далее с помощью команды
fdisk /dev/sdb
Запускаешь редактор таблицы разделов.
Ты увидишь что-то вроде
Только у тебя будет написано /dev/sdb и /dev/sdb1.
Удаляешь существующие разделы и создаёшь два новых, 100 Мб - FAT32 и остальное EXT4.
d
n
p
1
<Enter>
+100M
t
b
n
p
2
<Enter>
<Enter>
w
Где написано - нажимаешь клавишу Enter.
Вот так это выглядит в консоли:
Можешь ещё раз взглянуть на вывод:
fdisk /dev/sdb
p
q
Тут видны два раздела.
У тебя будут /dev/sdb1 и /dev/sdb2.
Теперь нужно создать файловые системы:
apt install dosfstools
mkfs.vfat /dev/sdb1
mkfs.ext4 -m0 /dev/sdb2
Флешку смонтируем:
mkdir /tmp/sdb2
mount /dev/sdb2 /tmp/sdb2
Скачиваешь отсюда S3 Bucket Listing Generator fit image
Смотри скриншот
Тебе нужна утилита binwalk
Она анализирует объединённые файлы и показывает что в них есть.
apt install binwalk
wget "http://fw-releases.wirenboard.com/fit_image/stable/6x/202210191406_stable_webupd_wb6x.fit"
binwalk -e 202210191406_stable_webupd_wb6x.fit
Команда
binwalk -e 202210191406_stable_webupd_wb6x.fit
разделяет объединенный файл на отдельные файлы.
Переходишь в директорию куда распаковался файл:
cd _202210191406_stable_webupd_wb6x.fit.extracted/
В файле, что скачал я извлёкся файл 79CA3C, который является tar архивом.
Тебе его нужно распаковать на второй раздел влешки.
Теперь нам нужно распаковать архив на флешку.
cd _202210191406_stable_webupd_wb6x.fit.extracted
tar -xpf 79CA3C -C /tmp/sdb2/
Как видишь в /tmp/sdb2, т.е. на втором разделе флешки у тебя есть файлы из wirenboard.
Флешку размонтируешь
umount /dev/sdb2
Набираешь команду
blkid
И смотришь идентификатор раздела /dev/sdb2.
Ты увидишь что-то вроде:
blkid
/dev/sdb2: UUID="aef0e500-7104-496e-9b4b-a42c8c1b36d0" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="7667130b-01"
Переписываешь себе в текстовый файл PARTUUID=“7667130b-01”.
У тебя будет другое значение.
Отключаешь от виртуальной машины флешку обратным действием.
В Windows появляется флешка с двумя разделами.
На первый в 100Мб ты копируешь файл с ядром и директорию dtbs
DEB пакет с ядром качай с яндекс диск ссылки вот в этом сообщении:
Распаковываешь DEB пакет с ядром. Можно использовать 7-Zip.
Файл vmlinuz-5.10.35-wg-wb119. переименовываешь в vmlinuz и помещаешь в корень флешки.
Безопасно извлекаешь флешку.
Подключаешь флешку к Wirenboard.
Готовишь себе текстовый файл с командами, которые тебе нужно быстро ввести, поэтому проще копировать
load mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/uEnv.txt
run loadfdtandoverlays
usb start
fatls usb 0:1
fatload usb 0 $loadaddr /vmlinuz
setenv optargs ${optargs} root=PARTUUID="7667130b-01" rootwait ro test1
run setbootargs
bootz ${loadaddr} - ${fdt_addr}
Вот здесь: PARTUUID=“7667130b-01” указано значение идентификатора раздела, которое ты смотрел в вывод команды blkid.
Подключаешься по COM порту через putty, смотри в начале сообщения как.
Выключаешь и включаешь контроллер.
Как увидишь отсчёт в секундах
Нажимаешь стрелочку на клавиатуре или другой символ, счётчик останвливается и вводишь.
И начинаешь построчно копировать и вставлять команды из текстового файла в консоль putty.
В итоге у тебя должен произойти запуск ядра с флешки.
Ядро выложенное на Яндекс Диске собрано с поддержкой USB монолитно, поэтому оно может найти флешку при запуске.
Ядро запустится и будет искать корневую файловую систему на разделе с идентификатором PARTUUID=“7667130b-01”
У тебя будет другой идентификатор.
Далее жди загрузки до конца и ты сможешь через putty войти в консоль системы загруженной с флешки, смонтировать разделы на MMC памяти и исправить свои действия.
Файл /etc/fstab с описанием что и куда монтировать выглядит примерно так:
/dev/mmcblk0p2 / auto errors=remount-ro,noatime 0 1
/dev/mmcblk0p5 none swap errors=remount-ro 0 0
/dev/mmcblk0p6 /mnt/data auto nofail 0 2
/mnt/data/var/log /var/log none bind 0 0
Создай отдельную директорию, например /tmp/root и смонтируй относительно неё файловые системы с MMC памяти контроллера
mkdir /tmp/root
mount /dev/mmcblk0p2 /tmp/root
mount /dev/mmcblk0p6 /tmp/root/mnt/data
Всё, теперь можешь возвращать файлы, только действую относительно /tmp/root, а не просто /
Можешь даже сделать chroot туда.
Chroot - это переключение в некоторую точку монтирования корневой файловой системы другого Linux. И в консоли где ты сделал chroot будешь действовать относительно подключенной файловой системы.
Если у тебя стоит Midnight Commander (mc), то тебе будет ещё удобнее.
mkdir /tmp/root
mount /dev/mmcblk0p2 /tmp/root
mount /dev/mmcblk0p6 /tmp/root/mnt/data
mount -o bind /dev /tmp/root/dev
mount -o bind /proc /tmp/root/proc
mount -o bind /sys /tmp/root/sys
chroot /tmp/root /bin/bash
mc
Я приятно удивлен глубиной и полнотой реверса.
Но вот это - к чему?
Ведь достаточно следовать инструкции (осознавая действия) до пункта Сборка образов прошивки — Wiren Board
и получим систему до упаковки в fit.
У нас в компании есть вакансии.
Мне лень было разбираться как собрать сборочное окружение и прочее.
Никакого реверсинжинирнига нет, точно также можно было сделать копию работающей системы.
Это всё штатные механизмы Linux.
Если там не debootstrap, то точно разбираться лень.
Я в своё время ставил Gentoo, там шаг установки - скачиваение архива базовой системы stage3, подготовка файловых систем и распаковка архива системы.
Дальнейший chroot и далее.
Поэтому мне было проще раздобыть “stage3” для Wirenboard и сделать всё по аналогии.
У вас сборка в докере.
Опишите как с помощью debootstrap собрать образ.
Поправьте пожалуйста ссылки на скачивание fit образов вот на этой Wiki странице: Wiren Board 6: обновлениe с USB-флешки и удалениe данных со сбросом к заводским настройкам — Wiren Board на актуальные (новые) или сделайте, чтобы работали старые.
Эти не работают:
http://fw-releases.wirenboard.com/fit_image/stable/6x/latest_stretch.fit
http://fw-releases.wirenboard.com/fit_image/stable/67/latest_stretch.fit
http://fw-releases.wirenboard.com/fit_image/stable/7x/latest_stretch.fit
А вот эти работающие:
http://fw-releases.wirenboard.com/?prefix=fit_image/stable/6x/
http://fw-releases.wirenboard.com/?prefix=fit_image/stable/67/
http://fw-releases.wirenboard.com/?prefix=fit_image/stable/7x/
http://fw-releases.wirenboard.com/?prefix=fit_image/stable/6x/latest_stretch.fit
http://fw-releases.wirenboard.com/?prefix=fit_image/stable/67/latest_stretch.fit
http://fw-releases.wirenboard.com/?prefix=fit_image/stable/7x/latest_stretch.fit
Видимо, зависит от браузера. Если не скачивается по нажатию, то нужно из контекстного меню выбрать “Сохранить ссылку как”
Именно он.
Просто обернут скриптами для полностью автоматической работы.
Да, в докере потому что собирается под другую архитектуру.
Как выше писал debootstrap выполняется из скрипта.
Так, проверяю:
wget http://fw-releases.wirenboard.com/fit_image/stable/6x/latest_stretch.fit
--2022-10-20 11:14:46-- http://fw-releases.wirenboard.com/fit_image/stable/6x/latest_stretch.fit
Resolving fw-releases.wirenboard.com (fw-releases.wirenboard.com)... 52.218.109.68, 52.218.109.180, 52.92.16.12, ...
Connecting to fw-releases.wirenboard.com (fw-releases.wirenboard.com)|52.218.109.68|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 179787930 (171M) [application/octet-stream]
Saving to: ‘latest_stretch.fit’
Из браузера тоже качаются.
У меня google chrome - Version 106.0.5249.119 (Official Build) (64-bit) под Windows.
Под ним не скачивается.
wget http://fw-releases.wirenboard.com/fit_image/stable/6x/latest_stretch.fit
Работает.
Firefox тоже скачивает.
fit образ открывается в 7-Zip под Windows.
Поэтому можно распаковать его и так, только он видит самый большой файл в образе.
В конце возникает ошибка, но сам архив целый.
Поэтому достать его можно и так.
binwalk был использован только для пробы получить архив системы из fit образа в консоли Linux.
Получилось.
Да, здравый подход, вместо того чтобы собирать, рискуя получить ошибку еще и на этом этапе - использовать уже собранный и проверенный.