Безопасный способ заменить linux на встроенную флешку - PullRequest
1 голос
/ 17 ноября 2010

У меня система на основе Linux Linux на чипе. Я хочу предоставить пользователям обновления в этой области, и для этого необходимо обновить некоторые файлы в / lib / usr / bin и / etc. Я не думаю, что можно просто распаковать файлы напрямую. Есть ли безопасный способ сделать это, включая файлы / lib, которые могут использоваться?

Ответы [ 3 ]

2 голосов
/ 20 ноября 2010

Некоторые вещи, которые я настоятельно предпочитаю во встроенных системах:

a) У корневой файловой системы должен быть виртуальный диск, несжатый из образа во флэш-памяти. Это замечательно, потому что вы можете экспериментально поэкспериментировать с этим, как вам захочется, и, если вы все испортите, все, что вам нужно, это перезагрузить компьютер, чтобы вернуться к обновленной конфигурации. Когда вы протестировали набор изменений, который вам понравился, вы генерируете новый сжатый образ корневой файловой системы и прошиваете его.

b) Используйте загрузчик, такой как u-boot, чтобы делать обновления - прошивать новый полный образ - вместо того, чтобы пытаться изменить систему linux во время ее работы. Хотя, поскольку прошитая копия не является действующей, вы можете на самом деле ее прошить во время работы. Если вы прошиваете плохую версию, u-boot все еще там, чтобы прошить хорошую.

c) Процессоры, которые имеют загрузчики UART (или даже USB) с маской, что делает систему неокрашиваемой - для обслуживания не требуется ничего, кроме ноутбука и последовательного кабеля или usb / serial converter рабочий образ u-boot на флэш-памяти, который вы затем используете, чтобы получить работающее ядро ​​linux + сжатый образ root fs на нем)

1 голос
/ 17 ноября 2010

В идеале ваше флеш-устройство должно быть достаточно большим, чтобы разделить его на две полные файловые системы, и каждое обновление обновляет сторону другой (плюс при необходимости копирование файлов конфигурации) и обновляет конфигурацию загрузки для загрузки с обновленной стороны.

Менее идеальным является обновление на месте, но есть некоторые средства обнаружения сбоя загрузки (например, сторожевой таймер, который не затрагивался до окончания загрузки) и меньший резервный раздел, который может принимать другое обновление и исправлениеосновной раздел.

Что касается обновления на месте действующей файловой системы, просто используйте реальный установщик (который переместит целевые файлы в сторону перед их заменой, чтобы избежать описанной проблемы).

0 голосов
/ 03 декабря 2010

Вы получили два превосходных ответа выше, и я настоятельно призываю вас сделать то, что вам посоветовали.

Однако есть более простой способ. На самом деле вы можете просто распаковать свои библиотеки, при условии, что процесс, который делает это, статически связан.

...