From: "Brian C. Lane" bcl@redhat.com
Tools running inside the chroot need access to /sys/firmware/efi/efivars if it exists on the host. eg. efibootmgr
Resolves: rhbz#1261559 --- blivet/__init__.py | 14 +++++++++++++- blivet/formats/fs.py | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/blivet/__init__.py b/blivet/__init__.py index a469825..49862a3 100644 --- a/blivet/__init__.py +++ b/blivet/__init__.py @@ -90,6 +90,7 @@ def cb(self, exn): from . import arch from .flags import flags from .platform import platform as _platform +from .platform import EFI from .size import Size from .i18n import _
@@ -2294,6 +2295,7 @@ def __init__(self, devicetree): self._usb = None self._selinux = None self._run = None + self._efivars = None self._fstab_swaps = set() self.preserveLines = [] # lines we just ignore and preserve
@@ -2343,6 +2345,12 @@ def selinux(self): return self._selinux
@property + def efivars(self): + if not self._efivars: + self._efivars = NoDevice(fmt=getFormat("efivarfs", device="efivarfs", mountpoint="/sys/firmware/efi/efivars")) + return self._efivars + + @property def run(self): if not self._run: self._run = DirectoryDevice("/run", @@ -2419,7 +2427,7 @@ def _parseOneLine(self, devspec, mountpoint, fstype, options, _dump="0", _passno device=device.path, exists=True) elif mountpoint in ("/proc", "/sys", "/dev/shm", "/dev/pts", - "/sys/fs/selinux", "/proc/bus/usb"): + "/sys/fs/selinux", "/proc/bus/usb", "/sys/firmware/efi/efivars"): # drop these now -- we'll recreate later return None else: @@ -2587,6 +2595,8 @@ def mountFilesystems(self, rootPath="", readOnly=None, skipRoot=False): devices = list(self.mountpoints.values()) + self.swapDevices devices.extend([self.dev, self.devshm, self.devpts, self.sysfs, self.proc, self.selinux, self.usb, self.run]) + if isinstance(_platform, EFI): + devices.append(self.efivars) devices.sort(key=lambda d: getattr(d.format, "mountpoint", None))
for device in devices: @@ -2644,6 +2654,8 @@ def umountFilesystems(self, swapoff=True): devices = list(self.mountpoints.values()) + self.swapDevices devices.extend([self.dev, self.devshm, self.devpts, self.sysfs, self.proc, self.usb, self.selinux, self.run]) + if isinstance(_platform, EFI): + devices.append(self.efivars) devices.sort(key=lambda d: getattr(d.format, "mountpoint", None)) devices.reverse() for device in devices: diff --git a/blivet/formats/fs.py b/blivet/formats/fs.py index 2784fbe..bad4624 100644 --- a/blivet/formats/fs.py +++ b/blivet/formats/fs.py @@ -1782,3 +1782,8 @@ class USBFS(NoDevFS):
register_device_format(USBFS)
+ +class EFIVarFS(NoDevFS): + _type = "efivarfs" + +register_device_format(EFIVarFS)