Обновление корневой файловой системы в образе, сгенерированном buildroot

Несколько месяцев назад я установил встроенный Linux на плату i.MX6, используя Mfgtools с изображением, созданным buildroot.

Я внес изменения в корневую файловую систему и создал новую корневую файловую систему. Я не хочу перепрошивать существующую настройку, вместо этого хочу копировать только что созданные файлы после внесения изменений в конфигурацию.

Как лучше выполнить это задание. Я знаю, что могу сравнить два файла корневой файловой системы по файлу, а затем вручную скопировать один за другим. Есть ли другой механизм


person md.jamal    schedule 27.02.2018    source источник
comment
Можете ли вы уточнить, как вы прошивали свою корневую файловую систему? Если вы записали архив rootfs в NAND или что-то еще и загрузили FS в ОЗУ при загрузке, вы не сможете сохранить свои изменения без перепрошивки образа. Если вам нужны постоянные изменения, рассмотрите возможность использования файловой системы флэш-памяти, такой как UBIFS: elinux.org/UBIFS. Кроме того, вы можете смонтировать папку по сети или использовать что-то вроде SD-карты.   -  person John Moon    schedule 27.02.2018
comment
Я использую eMMC. Так что я могу вручную скопировать обновленные файлы. Мне нужен лучший способ избежать этого, а также избежать перепрошивки системы.   -  person md.jamal    schedule 27.02.2018
comment
если ваши изменения не связаны с kernel modules и binaries, вы можете создать patch и применить к своей цели. так что одним патчем можно обновить все файлы. Нравится Delta Patching   -  person ntshetty    schedule 27.02.2018
comment
что вы подразумеваете под двоичными файлами в приведенном выше комментарии. Вы имеете в виду такие утилиты, как ls, top   -  person md.jamal    schedule 27.02.2018


Ответы (1)


Похоже на работу для rsync. Вы можете запустить что-то вроде:

rsync -av --update [email protected]:/home/user/buildroot/output/images/unpacked_rootfs/ ./

Я не совсем уверен, какие файлы вы пытаетесь обновить, но rsync хорош для изменения только тех файлов, которые необходимо обновить.

Тем не менее, Buildroot на самом деле не предназначен для таких частичных обновлений. Инструмент предназначен для вывода монолитного образа «прошивки», который регенерируется и обновляется при необходимости внесения изменений. Если вам нужна более гибкая система, позволяющая управлять отдельными пакетами, рассмотрите возможность использования Yocto.

person John Moon    schedule 27.02.2018
comment
Итак, мне нужно иметь rsync на встроенной плате Linux? - person md.jamal; 27.02.2018
comment
Вы также можете сделать это наоборот. На вашей машине разработки, вероятно, уже есть rsync. Прочтите справочную страницу и погуглите в поисках примеров. - person John Moon; 27.02.2018