Intereting Posts
pip install дает «TypeError: объект« int »не является итерируемым» Rsync зависает во время передачи файла на USB-диск Ошибка разрешения при создании резервной копии при установке gitlab omnibus Попытка запуска rsync между двумя удаленными серверами посредством переадресации через обратный порт с помощью ключа ssh Невозможно загрузить libphp5.so undefined symbol: unixd_config apache service не запускается Grep только частичная строка команда процесса и использование знака процента bash custom builtin Как загрузить пакет и его зависимости с aptitude? Является ли mv атомарной операцией между двумя файловыми системами? Есть ли способ зашифровать диск без его форматирования? Возможно ли иметь симулятор iOS в моем Монетном дворе Linux? Ошибка grub: «Файл не найден» для отдельного раздела / boot / efi Есть ли способ использовать консольные (мошеннические) режимы только для части экрана терминала? mount.cifs снова не вводит пароль пользователя

Применять инкрементные патчи на томе ubifs

Чтобы обновить том ubifs, заменив его совершенно новым контентом, можно использовать ubiupdatevol из mtd-utils

ubiupdatevol /dev/ubiX_Y /path/to/ubifs.img

Есть ли способ применить патч к объему ubifs вместо того, чтобы ссылаться на весь контент? Например, примените только двоичный diff b / w ubifs_base.img и ubifs_dest.img к /dev/ubiX_Y .

    Не используя API обновления тома, нет. Согласно документам , пользовательская область должна передавать весь размер тома до того, как обновление будет зафиксировано:

    Для обновления тома сначала необходимо вызвать ioctl UBI_IOCVOLUP соответствующего символьного устройства тома UBI и передать ему указатель на 64-битное значение, содержащее длину содержимого нового тома в байтах. Затем это количество байтов должно быть записано на объемное символьное устройство. Как только последний байт был отправлен на символьное устройство, операция обновления завершается. Схематично эта последовательность:

     fd = open("/dev/my_volume"); ioctl(fd, UBI_IOCVOLUP, &image_size); write(fd, buf, image_size); close(fd); 

    Смотрите include/mtd/ubi-user.h для более подробной информации. Помните, что старое содержимое тома не сохраняется в случае прерванного обновления. Кроме того, вам не нужно записывать все новые данные за один раз.

    Таким образом, вы определенно можете выполнить дельта-обновление, но вам нужно будет создать утилиту, которая будет передавать неизмененные части из другого источника, потому что, как только вы запустите операцию обновления тома, вы должны написать все целиком. Или, если вы не хотите использовать API, вы можете создать новый образ во временном хранилище, и ubiupdatevol с этим.

    На практике, кстати, вполне возможно, что UBI может исключить записи в неизмененные части. Но вы все равно должны отправить их.