helpers.images.get(args)
if not os.path.isdir(tools.config.defaults["rootfs"]):
os.mkdir(tools.config.defaults["rootfs"])
+ if not os.path.isdir(tools.config.defaults["overlay"]):
+ os.mkdir(tools.config.defaults["overlay"])
+ os.mkdir(tools.config.defaults["overlay"]+"/vendor")
+ if not os.path.isdir(tools.config.defaults["overlay_rw"]):
+ os.mkdir(tools.config.defaults["overlay_rw"])
+ os.mkdir(tools.config.defaults["overlay_rw"]+"/system")
+ os.mkdir(tools.config.defaults["overlay_rw"]+"/vendor")
helpers.lxc.setup_host_perms(args)
helpers.lxc.set_lxc_config(args)
helpers.lxc.make_base_props(args)
}
defaults["images_path"] = defaults["work"] + "/images"
defaults["rootfs"] = defaults["work"] + "/rootfs"
+defaults["overlay"] = defaults["work"] + "/overlay"
+defaults["overlay_rw"] = defaults["work"] + "/overlay_rw"
+defaults["overlay_work"] = defaults["work"] + "/overlay_work"
defaults["data"] = defaults["work"] + "/data"
defaults["lxc"] = defaults["work"] + "/lxc"
defaults["host_perms"] = defaults["work"] + "/host-permissions"
def mount_rootfs(args, images_dir, session):
helpers.mount.mount(args, images_dir + "/system.img",
tools.config.defaults["rootfs"], umount=True)
+ helpers.mount.mount_overlay(args, [tools.config.defaults["overlay"],
+ tools.config.defaults["rootfs"]],
+ tools.config.defaults["rootfs"],
+ upper_dir=tools.config.defaults["overlay_rw"] + "/system",
+ work_dir=tools.config.defaults["overlay_work"] + "/system")
helpers.mount.mount(args, images_dir + "/vendor.img",
tools.config.defaults["rootfs"] + "/vendor")
+ helpers.mount.mount_overlay(args, [tools.config.defaults["overlay"] + "/vendor",
+ tools.config.defaults["rootfs"] + "/vendor"],
+ tools.config.defaults["rootfs"] + "/vendor",
+ upper_dir=tools.config.defaults["overlay_rw"] + "/vendor",
+ work_dir=tools.config.defaults["overlay_work"] + "/vendor")
+
for egl_path in ["/vendor/lib/egl", "/vendor/lib64/egl"]:
if os.path.isdir(egl_path):
helpers.mount.bind(
# Verify, that it has worked
if not ismount(destination):
raise RuntimeError("Mount failed: " + source + " -> " + destination)
+
+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 = ["xino=off", "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)
+
+ 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)