Как я знаю, ubifs будет обрабатывать плохой блок / сектор, а MTD - нет.
Неверно, MTD также знает о плохих блоках и поддерживает таблицу плохих блоков.
См. Поддержка таблиц блоков MTD и драйверов /mtd /nand /bbt.c.
Так что я считаю, что dd на флеш-чипе nand с ubifs может записывать данные в поврежденный блок / сектор, правильно?
Ваша предпосылка о МПД неверна, но вывод верен.
Также наличие UBIFS не имеет значения, поскольку dd работает на блочном устройстве, а не на файловой системе.
Команда dd получает доступ к блочному устройству, которым не является MTD, поэтому необходимо использовать mtdblock (который имеет уровень флэш-трансляции).
В FAQ по MTD есть это явное предупреждение относительно использования mtdblock и NAND:
But think twice before using mtdblock in read-write mode.
And don't try to use it on NAND flash as it is does not handle bad eraseblocks.
IOW проблема не в программе dd , а в использовании устройства mtdblock.
В MTD FAQ рекомендуется использовать программы с блокировкой, такие как mtd-utils.