]> git.ipfire.org Git - people/ms/bricklayer.git/commitdiff
bootloaders: Map /dev into jail & generate config
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 28 Nov 2022 17:40:24 +0000 (17:40 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 28 Nov 2022 17:40:24 +0000 (17:40 +0000)
This fixes that GRUB could not be installed.

Fixes: #13008
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/python/bootloaders.py

index 42714dbf79feee8460fb0765f9b92ef22b8cc951..d1cb69fee26fd5ba69d278070984528e09a1d260 100644 (file)
@@ -89,6 +89,9 @@ class Grub(Bootloader):
                for disk in self.bricklayer.disks.selected:
                        self.install_on_disk(disk, pakfire)
 
+               # Install configuration
+               self.install_configuration(pakfire)
+
        @property
        def grub_arch(self):
                return "i386-pc"
@@ -102,7 +105,20 @@ class Grub(Bootloader):
        def install_on_disk(self, disk, pakfire):
                log.info("Installing GRUB on %s" % disk.path)
 
-               pakfire.execute(["grub-install"] + self.grub_args + [disk.path])
+               # Make /dev available in the jail
+               # XXX this should be limited to the device nodes we need only
+               bind = ["/dev"]
+
+               pakfire.execute(["grub-install"] + self.grub_args + [disk.path], bind=bind)
+
+       def install_configuration(self, pakfire):
+               """
+                       Generates a GRUB configuration file
+               """
+               # XXX see above
+               bind = ["/dev"]
+
+               pakfire.execute(["grub-mkconfig", "-o", "/boot/grub/grub.cfg"], bind=bind)
 
 
 class GrubEFI(Grub):