OverlayFS как корневая FS: должен ли я монтировать --move upper/lower/workdir в новый корень?

Я работаю над встроенной системой, которая загружается с образа SquashFS, расположенного на флэш-памяти SPI в формате UBIFS. Я добавил поддержку OverlayFS поверх / (root), чтобы мы могли изменять все файлы вокруг, но сбрасывать их после перезагрузки. Вся магия OverlayFS выполняется в initramfs. При настройке всех точек монтирования я mount --move /run раздел флешки UBIFS. Я хочу знать, должен ли я mount --move переместить верхний/нижний/рабочий каталог OverlayFS в новый корень до switch_root. Без него вроде работает, но время от времени случаются самопроизвольные перезагрузки и ошибка шины при ручной перезагрузке.


person c_spk    schedule 26.02.2019    source источник


Ответы (1)


Какие инструменты у вас есть в initramfs? Почему бы не использовать switch_root в busybox или run-init в klibc, которые выполняют все необходимые перемещения (из того, что я понял [0] [1])?

Итак, чтобы ответить на ваш вопрос, используя правильный инструмент, вам вообще не нужно беспокоиться об использовании mount --move. Однако, если вы настаиваете на том, чтобы сделать это вручную, сделайте то, что делают эти инструменты.

[0] http://man7.org/linux/man-pages/man8/switch_root.8.html

[1] https://git.busybox.net/busybox/tree/klibc-utils/run-init.c

person oliver    schedule 09.10.2019
comment
...эм...ч-что? - person Stephan Henningsen; 13.10.2020
comment
Если вы монтируете свою ro, overlay, комбинированную файловую систему в `/new_root` и монтируете поверх (или перемещаете) /run, /dev и т. д. все, что вам нужно для минимальной fs; вы можете просто вызвать run-init или switch_root, чтобы переключиться на новый корень и загрузиться оттуда. Вам не нужно mount --move /new_root / выполнять переключение, так как тогда вы потеряете контроль и вам все равно будет трудно запустить init. Так что используйте инструменты, которые существуют именно для этой цели. - person oliver; 08.06.2021