Найти в Дзене
merkulss

Извлечение файлов из неисправных UBIFS.

Если монтирование не помогает, приходится извлекать обходными путями. Статья ориентирована на пользователей windows (в linux проще, поэтому придется поставить wsl), имеющих программатор (в текущем варианте использовался UFPI) или другой способ скорректировать ошибка ECC. Пример будет на основе известного аппарата QFU и неисправного дампа с немонтирующимся rwboot. 1. Подгружаем UDEV, исправляем ошибки путем коррекции ECC и убеждаемся, что монтирование раздела не работает. 2. Отрезаем spare. Это можно сделать скриптом, лежит на форуме. 3. Запускаем cmd, далее wsl --install если еще не установлено и переходим в каталог с дампом и если не установлен python, то обновляем и устанавливаем: - "sudo apt update" обновляет списки репозиториев.
- "sudo apt install python3" устанавливаем свежий python из репозиториев.
- "sudo apt install liblzo2-dev mtd-utils" потребуются для дальнейшей работы.
- "sudo apt install python3-venv" устанавливаем venv для работы с виртуальным окружением.
- "sudo

Если монтирование не помогает, приходится извлекать обходными путями. Статья ориентирована на пользователей windows (в linux проще, поэтому придется поставить wsl), имеющих программатор (в текущем варианте использовался UFPI) или другой способ скорректировать ошибка ECC. Пример будет на основе известного аппарата QFU и неисправного дампа с немонтирующимся rwboot.

1. Подгружаем UDEV, исправляем ошибки путем коррекции ECC и убеждаемся, что монтирование раздела не работает.

2. Отрезаем spare. Это можно сделать скриптом, лежит на форуме.

3. Запускаем cmd, далее wsl --install если еще не установлено и переходим в каталог с дампом и если не установлен python, то обновляем и устанавливаем:

Запуск WSL.
Запуск WSL.

- "sudo apt update" обновляет списки репозиториев.

- "sudo apt install python3" устанавливаем свежий python из репозиториев.

- "sudo apt install liblzo2-dev mtd-utils" потребуются для дальнейшей работы.

- "sudo apt install python3-venv" устанавливаем venv для работы с виртуальным окружением.

- "sudo apt install python3-pip" устанавливаем pip для удобной установки python пакетов.

Активация окружения и установка ubi-reader
Активация окружения и установка ubi-reader

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

- "python3 -m venv venv"

- "source venv/bin/activate"

5. Для извлечения понадобятся ubi_reader и ubidump.

- "pip install ubi_reader" извлечение образов фс из томов ubi

- "pip install ubidump" для извлечения файлов из ubifs

- "pip install setuptools" требуется для ubidump

Извлечение образов.
Извлечение образов.

6. После извлечения образов в каталоге создается новый каталог с образами соответствующе проименованны. Нас интересовал "img-1976440731_vol-rwboot.ubifs".

Извлечение файлов из фс.
Извлечение файлов из фс.

7. Переходим в каталог с образами для удобства и пробуем извлечь:

- "cd ubifs-root/MT29F8G08ABABAWP_bad.bin.spare_0.bin/" переход в каталог.

- "ubidump img-1976440731_vol-rwboot.ubifs --savedir extract" пробуем извлечь файлы в каталог extract и получаем ошибку "ERROR [Errno 2] No such file or directory: b'boot' -> b'extract/raw/ro'". Ошибка говорит о том, что ubidump пытается создать символическую ссылку (symlink) с именем ro, которая должна указывать на директорию boot, но не может. Поможем ему, создадим каталог для этого руками.

- "mkdir -p extract/raw" создаем каталог extract с подкаталогом raw в текущем каталоге и повторяем предыдущую команду "ubidump img-1976440731_vol-rwboot.ubifs --savedir extract".

Все готово.
Все готово.

VDFS-tools (Samsung FS) в Docker Ubuntu18.
merkulss9 декабря 2025

Тут есть собранный docker контейнер с ubireader, ubidump и vdfs-tools, а также инструкции по запуску.