From 0946789f9e104d349385b1c08c2de67d11ed5fb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20G=C3=A2teau?= Date: Wed, 30 Jul 2014 15:37:11 +0200 Subject: [PATCH] Move mounting of special partitions from grub to mount --- src/modules/grub/main.py | 41 +---------------------------------- src/modules/grub/module.conf | 10 --------- src/modules/mount/main.py | 6 +++-- src/modules/mount/module.conf | 10 +++++++++ 4 files changed, 15 insertions(+), 52 deletions(-) diff --git a/src/modules/grub/main.py b/src/modules/grub/main.py index 43f9ed3f7..2fd22eddd 100644 --- a/src/modules/grub/main.py +++ b/src/modules/grub/main.py @@ -23,40 +23,6 @@ import subprocess import libcalamares -# FIXME: Duplicated between mount and grub -def mount(device_path, mount_point, fs=None, options=None): - assert device_path - assert mount_point - if not os.path.exists(mount_point): - os.makedirs(mount_point) - cmd = ["mount", device_path, mount_point] - if fs: - cmd += ("-t", fs) - if options: - cmd += ("-o", options) - subprocess.check_call(cmd) - - -def mount_partitions(root_mount_point, partitions): - for partition in partitions: - if not partition["mountPoint"]: - continue - # Create mount point with `+` rather than `os.path.join()` because - # `partition["mountPoint"]` starts with a '/'. - mount_point = root_mount_point + partition["mountPoint"] - mount(partition["device"], mount_point, - fs=partition.get("fs"), - options=partition.get("options") - ) - - -def umount_partitions(root_mount_point, partitions): - for partition in partitions: - if not partition["mountPoint"]: - continue - subprocess.call(["umount", root_mount_point + partition["mountPoint"]]) - - def chroot_call(root_mount_point, cmd): subprocess.check_call(["chroot", root_mount_point] + cmd) @@ -70,10 +36,5 @@ def install_grub(root_mount_point, boot_loader): def run(): root_mount_point = libcalamares.globalstorage.value("rootMountPoint") boot_loader = libcalamares.globalstorage.value("bootLoader") - extra_mounts = libcalamares.job.configuration["extraMounts"] - mount_partitions(root_mount_point, extra_mounts) - try: - install_grub(root_mount_point, boot_loader) - finally: - umount_partitions(root_mount_point, extra_mounts) + install_grub(root_mount_point, boot_loader) return None diff --git a/src/modules/grub/module.conf b/src/modules/grub/module.conf index fc7432462..01fa2025e 100644 --- a/src/modules/grub/module.conf +++ b/src/modules/grub/module.conf @@ -4,13 +4,3 @@ interface: "python" requires: [] script: "main.py" configuration: - extraMounts: - - device: proc - fs: proc - mountPoint: /proc - - device: sys - fs: sysfs - mountPoint: /sys - - device: /dev - mountPoint: /dev - options: bind diff --git a/src/modules/mount/main.py b/src/modules/mount/main.py index 461172a71..f258ffae0 100644 --- a/src/modules/mount/main.py +++ b/src/modules/mount/main.py @@ -54,11 +54,13 @@ def mount_partitions(root_mount_point, partitions): def run(): root_mount_point = tempfile.mkdtemp(prefix="calamares-root-") partitions = libcalamares.globalstorage.value("partitions") + extra_mounts = libcalamares.job.configuration["extraMounts"] # Sort by mount points to ensure / is mounted before the rest partitions.sort(key=lambda x: x["mountPoint"]) - mount_partitions( - root_mount_point, libcalamares.globalstorage.value("partitions")) + mount_partitions(root_mount_point, partitions) + + mount_partitions(root_mount_point, extra_mounts) libcalamares.globalstorage.insert("rootMountPoint", root_mount_point) return None diff --git a/src/modules/mount/module.conf b/src/modules/mount/module.conf index 560e3087a..a6e53a5d8 100644 --- a/src/modules/mount/module.conf +++ b/src/modules/mount/module.conf @@ -4,3 +4,13 @@ interface: "python" requires: [] script: "main.py" configuration: + extraMounts: + - device: proc + fs: proc + mountPoint: /proc + - device: sys + fs: sysfs + mountPoint: /sys + - device: /dev + mountPoint: /dev + options: bind