Beispiel #1
0
    def VerifyBinaries(cls):
        Tools.Info("Checking required files ...")

        # Check required base files
        cls.VerifyBinariesExist(Base.GetFiles())

        # Check required luks files
        if Luks.IsEnabled():
            Tools.Flag("Using LUKS")
            cls.VerifyBinariesExist(Luks.GetFiles())

        # Check required raid files
        if Raid.IsEnabled():
            Tools.Flag("Using RAID")
            cls.VerifyBinariesExist(Raid.GetFiles())

        # Check required lvm files
        if Lvm.IsEnabled():
            Tools.Flag("Using LVM")
            cls.VerifyBinariesExist(Lvm.GetFiles())

        # Check required zfs files
        if Zfs.IsEnabled():
            Tools.Flag("Using ZFS")
            cls.VerifyBinariesExist(Zfs.GetFiles())
Beispiel #2
0
    def CopyBinaries(cls):
        Tools.Info("Copying binaries ...")

        cls.FilterAndInstall(Base.GetFiles())

        if Luks.IsEnabled():
            cls.FilterAndInstall(Luks.GetFiles())

        if Raid.IsEnabled():
            cls.FilterAndInstall(Raid.GetFiles())

        if Lvm.IsEnabled():
            cls.FilterAndInstall(Lvm.GetFiles())

        if Zfs.IsEnabled():
            cls.FilterAndInstall(Zfs.GetFiles())
            cls.FilterAndInstall(Zfs.GetOptionalFiles(), dontFail=True)
Beispiel #3
0
    def LastSteps(cls):
        Tools.Info("Performing finishing steps ...")

        # Create mtab file
        call(["touch", var.temp + "/etc/mtab"])

        if not os.path.isfile(var.temp + "/etc/mtab"):
            Tools.Fail("Error creating the mtab file. Exiting.")

        cls.CreateLibraryLinks()

        # Copy the init script
        Tools.SafeCopy(var.files_dir + "/init", var.temp)

        # Give execute permissions to the script
        cr = call(["chmod", "u+x", var.temp + "/init"])

        if cr != 0:
            Tools.Fail("Failed to give executive privileges to " + var.temp +
                       "/init")

        # Copy the bash related files
        bash_files = [
            var.files_dir + "/bash/profile", var.files_dir + "/bash/DIR_COLORS"
        ]

        for bash_file in bash_files:
            Tools.SafeCopy(bash_file, var.temp + "/etc/")

        Tools.SafeCopy(var.files_dir + "/bash/bashrc", var.temp + "/etc/bash")

        # Sets initramfs script version number
        call([
            "sed", "-i", "-e",
            var.initrdVersionLine + "s/0/" + var.version + "/",
            var.temp + "/init"
        ])

        # Copy all of the modprobe configurations
        if os.path.isdir("/etc/modprobe.d/"):
            shutil.copytree("/etc/modprobe.d/", var.temp + "/etc/modprobe.d/")

        cls.CopyUdevAndSupportFiles()
        cls.DumpSystemKeymap()

        # Any last substitutions or additions/modifications should be done here

        # Enable LUKS in the init if LUKS is being used
        if Luks.IsEnabled():
            Tools.ActivateTriggerInInit(var.useLuksLine)

            # Copy over our keyfile if the user activated it
            if Luks.IsKeyfileEnabled():
                Tools.Flag("Embedding our keyfile into the initramfs...")
                Tools.SafeCopy(Luks.GetKeyfilePath(), var.temp + "/etc",
                               "keyfile")

            # Copy over our detached header if the user activated it
            if Luks.IsDetachedHeaderEnabled():
                Tools.Flag(
                    "Embedding our detached header into the initramfs...")
                Tools.SafeCopy(Luks.GetDetachedHeaderPath(), var.temp + "/etc",
                               "header")

        # Enable RAID in the init if RAID is being used
        if Raid.IsEnabled():
            Tools.ActivateTriggerInInit(var.useRaidLine)

            # Make sure to copy the mdadm.conf from our current system.
            # If not, the kernel autodetection while assembling the array
            # will not know what name to give them, so it will name it something
            # like /dev/md126, /dev/md127 rather than /dev/md0, /dev/md1.

            # If the user didn't modify the default (all commented) mdadm.conf file,
            # then they will obviously get wrong raid array numbers being assigned
            # by the kernel. The user needs to run a "mdadm --examine --scan > /etc/mdadm.conf"
            # to fix this, and re-run the initramfs creator.
            mdadm_conf = "/etc/mdadm.conf"
            Tools.CopyConfigOrWarn(mdadm_conf)

        # Enable LVM in the init if LVM is being used
        if Lvm.IsEnabled():
            Tools.ActivateTriggerInInit(var.useLvmLine)

            lvm_conf = "/etc/lvm/lvm.conf"
            Tools.CopyConfigOrWarn(lvm_conf)

        # Enable ZFS in the init if ZFS is being used
        if Zfs.IsEnabled():
            Tools.ActivateTriggerInInit(var.useZfsLine)

        # Enable ADDON in the init and add our modules to the initramfs
        # if addon is being used
        if Addon.IsEnabled():
            Tools.ActivateTriggerInInit(var.useAddonLine)
            call([
                "sed", "-i", "-e", var.addonModulesLine + "s/\"\"/\"" +
                " ".join(Addon.GetFiles()) + "\"/", var.temp + "/init"
            ])

        cls.CopyLibGccLibrary()