Я работаю над встроенной системой, которая загружается с образа SquashFS, расположенного на флэш-памяти SPI в формате UBIFS. Я добавил поддержку OverlayFS поверх / (root), чтобы мы могли изменять все файлы вокруг, но сбрасывать их после перезагрузки. Вся магия OverlayFS выполняется в initramfs. При настройке всех точек монтирования я mount --move
/run
раздел флешки UBIFS. Я хочу знать, должен ли я mount --move
переместить верхний/нижний/рабочий каталог OverlayFS в новый корень до switch_root
. Без него вроде работает, но время от времени случаются самопроизвольные перезагрузки и ошибка шины при ручной перезагрузке.
OverlayFS как корневая FS: должен ли я монтировать --move upper/lower/workdir в новый корень?
Ответы (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
...эм...ч-что?
- person Stephan Henningsen; 13.10.2020
Если вы монтируете свою ro, overlay, комбинированную файловую систему в `/new_root` и монтируете поверх (или перемещаете)
/run
, /dev
и т. д. все, что вам нужно для минимальной fs; вы можете просто вызвать run-init
или switch_root
, чтобы переключиться на новый корень и загрузиться оттуда. Вам не нужно mount --move /new_root /
выполнять переключение, так как тогда вы потеряете контроль и вам все равно будет трудно запустить init. Так что используйте инструменты, которые существуют именно для этой цели.
- person oliver; 08.06.2021