diff options
author | Richard Maw <richard.maw@codethink.co.uk> | 2014-06-04 11:10:43 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2014-06-04 11:38:12 +0000 |
commit | 6daa22a652a622dfafc967b38cb7d123457bb23c (patch) | |
tree | 5bf8e43347485d2a708d11d8d8e5666e7044019a /morphlib/writeexts.py | |
parent | 8047078d260a4a7798fa1b412b5518f767deef24 (diff) | |
download | morph-6daa22a652a622dfafc967b38cb7d123457bb23c.tar.gz |
Use UUID in fstab entries if provided
This makes systems use the UUID of the disk in the fstab when there is
no pre-existing fstab entry for /.
This happens whether the system has an initramfs or not, since it should
be harmless, and by this point we're in userland, so can know what the
UUIDs are.
Passing the UUID to `complete_fstab_for_btrfs_layout` is optional, and
defaults to the old behaviour of using /dev/sda, since it is called
directly by some write extensions for doing upgrades, and upgrading
systems that use an initramfs will be part of a later patch.
Diffstat (limited to 'morphlib/writeexts.py')
-rw-r--r-- | morphlib/writeexts.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/morphlib/writeexts.py b/morphlib/writeexts.py index fb7261f6..d6f23e0d 100644 --- a/morphlib/writeexts.py +++ b/morphlib/writeexts.py @@ -235,7 +235,8 @@ class WriteExtension(cliapp.Application): self.create_orig(version_root, temp_root) system_dir = os.path.join(version_root, 'orig') - state_dirs = self.complete_fstab_for_btrfs_layout(system_dir) + state_dirs = self.complete_fstab_for_btrfs_layout(system_dir, + disk_uuid) for state_dir in state_dirs: self.create_state_subvolume(system_dir, mountpoint, state_dir) @@ -298,7 +299,7 @@ class WriteExtension(cliapp.Application): filepath = os.path.join(existing_state_dir, filename) cliapp.runcmd(['mv', filepath, subvolume]) - def complete_fstab_for_btrfs_layout(self, system_dir): + def complete_fstab_for_btrfs_layout(self, system_dir, rootfs_uuid=None): '''Fill in /etc/fstab entries for the default Btrfs disk layout. In the future we should move this code out of the write extension and @@ -322,8 +323,9 @@ class WriteExtension(cliapp.Application): if '/' in existing_mounts: root_device = existing_mounts['/'] else: - root_device = '/dev/sda' - fstab.add_line('/dev/sda / btrfs defaults,rw,noatime 0 1') + root_device = ('/dev/sda' if rootfs_uuid is None else + 'UUID=%s' % rootfs_uuid) + fstab.add_line('%s / btrfs defaults,rw,noatime 0 1' % root_device) state_dirs_to_create = set() for state_dir in shared_state_dirs: |