summaryrefslogtreecommitdiffstats
path: root/nixos/modules/system/boot/loader/systemd-boot
diff options
context:
space:
mode:
authorJörg Thalheim <joerg@thalheim.io>2017-05-09 18:56:26 +0100
committerJörg Thalheim <joerg@thalheim.io>2017-05-09 19:06:27 +0100
commite3beb0710836deab2f4e366b4681e5a04c1107a8 (patch)
tree941fdb41442daa4a8b2c31c7f2a2f2cdc6c81bd8 /nixos/modules/system/boot/loader/systemd-boot
parent779ae064674aa9645bcefaacbc83f942e2ef759f (diff)
systemd-boot: sync efi filesystem after update
Since fat32 provides little recovery facilities after a crash, it can leave the system in an unbootable state, when a crash/outage happens shortly after an update. To decrease the likelihood of this event sync the efi filesystem after each update.
Diffstat (limited to 'nixos/modules/system/boot/loader/systemd-boot')
-rw-r--r--nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py b/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
index 704c574b822e..804b710f3759 100644
--- a/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
+++ b/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
@@ -2,12 +2,15 @@
import argparse
import shutil
import os
+import sys
import errno
import subprocess
import glob
import tempfile
import errno
import warnings
+import ctypes
+libc = ctypes.CDLL("libc.so.6")
def copy_if_not_exists(source, dest):
if not os.path.exists(dest):
@@ -145,5 +148,9 @@ def main():
if os.readlink(system_dir(gen)) == args.default_config:
write_loader_conf(gen)
+ rc = libc.syncfs(os.open("@efiSysMountPoint@", os.O_RDONLY))
+ if rc != 0:
+ print("could not sync @efiSysMountPoint@: {}".format(os.strerror(rc)), file=sys.stderr)
+
if __name__ == '__main__':
main()