+
+def mount_overlay(args, lower_dirs, destination, upper_dir=None, work_dir=None,
+ create_folders=True, readonly=True):
+ """
+ Mount an overlay.
+ """
+ dirs = [*lower_dirs]
+ options = ["lowerdir=" + (":".join(lower_dirs))]
+
+ if upper_dir:
+ dirs.append(upper_dir)
+ dirs.append(work_dir)
+ options.append("upperdir=" + upper_dir)
+ options.append("workdir=" + work_dir)
+
+ if kernel_version() >= versiontuple("4.17"):
+ options.append("xino=off")
+
+ for dir_path in dirs:
+ if not os.path.exists(dir_path):
+ if create_folders:
+ tools.helpers.run.user(args, ["mkdir", "-p", dir_path])
+ else:
+ raise RuntimeError("Mount failed, folder does not exist: " +
+ dir_path)
+
+ mount(args, "overlay", destination, mount_type="overlay", options=options,
+ readonly=readonly, create_folders=create_folders, force=True)