Всем привет. Ищу закладки в systemd. Занятие увлекательное, но я туповат, поэтому нужна ваша помощь. Сейчас пытаюсь разобраться с небольшим сервисом volatile-root.
Пару водных для начала. Моё внимание привлекла функция make_overlay
. В сухом остатке эта функция делает следующее:
mkdir -p /run/systemd/overlay-sysroot
mount -t tmpfs tmpfs /run/systemd/overlay-sysroot
mkdir /run/systemd/overlay-sysroot/upper
mkdir /run/systemd/overlay-sysroot/work
mount -t overlay overlay -o lowerdir=/sysroot,upperdir=/run/systemd/overlay-sysroot/upper,workdir=/run/systemd/overlay-sysroot/work /sysroot
umount /run/systemd/overlay-sysroot
rmdir /run/systemd/overlay-sysroot
Как это работает (особенно последний пункт)? Это точно законно?
- Если overlay перекрывает собой lowerdir, то как сам overlay продолжает правильно работать с lowerdir?
- Почему размонтирование в предпоследней строке ничего не ломает? Сперва думал, что это приколы tmpfs, но оно работает, даже если создать upper и work на втором жёстком диске.
overlay буферизует inode, поэтому ему плевать, смонтировано ли само устройство? Или что происходит? Если тыкнете в код или документацию overlayfs, где эта механика описывается, буду благодарен.