Транзакционные полные обновления системы

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

Требование - то, что, если мое обновление перестало работать, я хочу смочь откатывать к точному состоянию, в котором я был прежде.

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

Одна опция состоит в том, чтобы иметь 2 раздела. Я установил бы новую версию ОС на 2-м разделе, повторно применил бы все мои конфигурации и затем обновил бы личинку для начальной загрузки от того раздела.

Однако я должен был бы затем выбрать размер каждого раздела, который не идеален. Это также сделало бы это более сложным для совместного использования некоторых каталогов между 2 версиями ОС (т.е. вместо копирования входит в систему /var, Я смог бы просто связать - монтируются /var от где-то в другом месте).

То, что я думаю, имеет корневой каталог с набором пустых каталогов /etc, /lib, /opt, и т.д., и один каталог такой как /versions который содержал бы мои различные версии ОС. Например. /versions/v1/, /versions/v2/.

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

Другими словами, если я хочу загрузиться от /versions/v2, это связало бы, смонтируйтесь: /versions/v2/etc на /etc /versions/v2/opt на /opt и т.д.

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

0
задан 14 November 2017 в 11:53

1 ответ

После некоторого исследования я нашел способ достигнуть того, что я искал.

Я должен был вырыть в изображение initramfs (/boot/initrd.img-...) узнать, как монтирование различных файловых систем было выполнено. Изображение initramfs для ядра человечности было особенно полезно.

Дизайн, на котором я обосновался, на самом деле довольно подобен ядру человечности. Я создаю начальную установку человечности, реализовываю конфигурации, я нуждаюсь и затем делаю глубокое использование копии cpio и наконец упакуйте копию в squashfs использование файловой системы только для чтения mksquashfs. Я сохраню изображение squashfs на основном разделе новой ОС. Во время загрузки ОС я отредактировал initrd.img для монтирования squashfs изображения версии, я хочу на /root, и затем настроили overlayroot сверху его, который является перезаписываемым наложением.

0
ответ дан 1 November 2019 в 05:24

Другие вопросы по тегам:

Похожие вопросы: