diff --git a/src/modules/initramfscfg/encrypt_hook b/src/modules/initramfscfg/encrypt_hook new file mode 100755 index 000000000..257097303 --- /dev/null +++ b/src/modules/initramfscfg/encrypt_hook @@ -0,0 +1,26 @@ +#!/bin/sh + + PREREQ="" + + prereqs() + { + echo "$PREREQ" + } + + case $1 in + # get pre-requisites + prereqs) + prereqs + exit 0 + ;; + esac + + . /usr/share/initramfs-tools/hook-functions + if [ -f /crypto_keyfile.bin ] + then + cp /crypto_keyfile.bin ${DESTDIR} + fi + if [ -f /etc/crypttab ] + then + cp /etc/crypttab ${DESTDIR}/etc/ + fi diff --git a/src/modules/initramfscfg/main.py b/src/modules/initramfscfg/main.py new file mode 100644 index 000000000..ece0b1ea0 --- /dev/null +++ b/src/modules/initramfscfg/main.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# === This file is part of Calamares - === +# +# Copyright 2014, Rohan Garg +# Copyright 2015, Philip Müller +# Copyright 2016, David McKinney +# +# Calamares is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Calamares is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Calamares. If not, see . + +import libcalamares +import os +import shutil + +def copy_initramfs_hooks(partitions, root_mount_point): + """ Copies initramfs hooks so they are picked up by update-initramfs + + :param partitions: + :param root_mount_point: + """ + encrypt_hook = False + + for partition in partitions: + if partition["mountPoint"] == "/" and "luksMapperName" in partition: + encrypt_hook = True + + if encrypt_hook: + shutil.copy2("/usr/lib/calamares/modules/initramfscfg/encrypt_hook", "{!s}/usr/share/initramfs-tools/hooks/".format(root_mount_point)) + os.chmod("{!s}/usr/share/initramfs-tools/hooks/encrypt_hook".format(root_mount_point), 0o755) + +def run(): + """ Calls routine with given parameters to configure initramfs + + :return: + """ + partitions = libcalamares.globalstorage.value("partitions") + root_mount_point = libcalamares.globalstorage.value("rootMountPoint") + copy_initramfs_hooks(partitions, root_mount_point) + + return None diff --git a/src/modules/initramfscfg/module.desc b/src/modules/initramfscfg/module.desc new file mode 100644 index 000000000..6227c2e25 --- /dev/null +++ b/src/modules/initramfscfg/module.desc @@ -0,0 +1,5 @@ +--- +type: "job" +name: "initramfscfg" +interface: "python" +script: "main.py"