Перезапись root-доступа Linux (только для чтения) из работающей системы

Перезапись root-доступа Linux (только для чтения) из работающей системы

Мне кажется, что это очень общая проблема. У меня есть встроенная система, работающая под управлением Linux из root только для чтения. Есть демон обновления, который устанавливает новые образы программного обеспечения, когда они доступны, перезаписывая целые разделы. Мой вопрос: как лучше всего сделать это из работающей системы?

  1. dd обновленный раздел в /dev/sdX, который в данный момент является смонтированным корневым разделом (доступным только для чтения)?
  2. переместить текущий корень, используя pivot_roottmpfs, как обсуждалосьздесь?
  3. использовать 2 корневых раздела и переключать «активный» после каждого обновления?

Недостатки 2 и 3 в том, что мне нужно много оперативной памяти (для 2) или дискового пространства (для 3). Есть ли безопасный способ перезаписать корневой раздел только для чтения из работающей системы и перезагрузиться в обновленную систему?

решение1

Итак, что я сделал, я пошел по пути 1. и столкнулся с большими проблемами, когда система больше не была стабильной из-за проблем с файловой системой. Я думаю, перезапись смонтированного раздела — не очень хорошая идея (хотя это не большой сюрприз). Чтобы исправить это, я попробовал идею 2. (pivot_root), которая работает, но имеет некоторые недостатки. Один из них: вам нужно остановить большинство запущенных процессов и/или перезагрузиться как можно скорее после завершения обновления. Наконец, я попробовал идею 3., и единственным недостатком является «пустая трата» дискового пространства. Все остальное работает довольно хорошо.

Связанный контент