From 67ca8315ade73be94fef0ae901574b2d9057c7b2 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Thu, 20 Oct 2016 16:28:14 +0100 Subject: enable luks unlocking of /root, swap and home --- app-admin/calamares/calamares-2.4.2-r3.ebuild | 78 --------------------- app-admin/calamares/calamares-2.4.2-r4.ebuild | 80 ++++++++++++++++++++++ .../calamares-2.4.2-grubcfg-luks-unlock.patch | 78 +++++++++++++++++++++ 3 files changed, 158 insertions(+), 78 deletions(-) delete mode 100644 app-admin/calamares/calamares-2.4.2-r3.ebuild create mode 100644 app-admin/calamares/calamares-2.4.2-r4.ebuild create mode 100644 app-admin/calamares/files/calamares-2.4.2-grubcfg-luks-unlock.patch diff --git a/app-admin/calamares/calamares-2.4.2-r3.ebuild b/app-admin/calamares/calamares-2.4.2-r3.ebuild deleted file mode 100644 index d4cba4e5..00000000 --- a/app-admin/calamares/calamares-2.4.2-r3.ebuild +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright 1999-2015 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: $ - -EAPI=5 -PYTHON_COMPAT=( python3_4 ) - -inherit eutils cmake-utils python-r1 - -SRC_URI="https://github.com/calamares/calamares/releases/download/v${PV}/${P}.tar.gz" - -DESCRIPTION="Distribution-independent installer framework" -HOMEPAGE="http://calamares.io" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="amd64" -IUSE="+python" - -S="${WORKDIR}/${P}" - -DEPEND=" - dev-vcs/git - python? ( - >=dev-libs/boost-1.55.0-r2[python_targets_python3_4] - ) - >=dev-qt/designer-5.6.0:5 - >=dev-qt/linguist-tools-5.6.0:5 - >=dev-qt/qtconcurrent-5.6.0:5 - >=dev-qt/qtcore-5.6.0:5 - >=dev-qt/qtdbus-5.6.0:5 - >=dev-qt/qtdeclarative-5.6.0:5 - >=dev-qt/qtgui-5.6.0:5 - >=dev-qt/qtnetwork-5.6.0:5 - >=dev-qt/qtopengl-5.6.0:5 - >=dev-qt/qtprintsupport-5.6.0:5 - >=dev-qt/qtscript-5.6.0:5 - >=dev-qt/qtsvg-5.6.0:5 - >=dev-qt/qttest-5.6.0:5 - >=dev-qt/qtwebengine-5.6.0:5 - >=dev-qt/qtwebchannel-5.6.0:5 - >=dev-qt/qtwidgets-5.6.0:5 - >=dev-qt/qtxml-5.6.0:5 - >=dev-qt/qtxmlpatterns-5.6.0:5 - >=dev-cpp/yaml-cpp-0.5.1 - >=kde-frameworks/extra-cmake-modules-5.18.0 - >=sys-libs/kpmcore-2.2.0" - -RDEPEND=">=app-misc/calamares-runtime-3.1[branding]" - -src_prepare() { - # patch dracut module to be called the way we want it, until the module becomes configurable - epatch ${FILESDIR}/${P}-dracut-kogaion.patch - # calamares dracut luks patch - epatch ${FILESDIR}/${P}-dracut-luks-fde.patch - # replace calamares installer desktop icon - sed -i "s/Icon=calamares/Icon=start-here/g" "${S}/calamares.desktop" - # fix installer doesn't start from desktop launcher (IMPROVE THIS UGLY THINGY) - sed -i "s/pkexec //g" "${S}/calamares.desktop" - sed -i "s/calamares/calamares-pkexec/g" "${S}/calamares.desktop" - # If qtchooser is installed, it may break the build, because moc,rcc and uic binaries for wrong qt version may be used. - # Setting QT_SELECT environment variable will enforce correct binaries (fix taken from vlc ebuild) - export QT_SELECT=qt5 -} - -src_configure() { - local mycmakeargs=( - -DWITH_PARTITIONMANAGER=1 - ) - cmake-utils_src_configure -} - -src_install() { - cmake-utils_src_install - insinto /usr/bin - insopts -m 755 - doins ${FILESDIR}/calamares-pkexec -} diff --git a/app-admin/calamares/calamares-2.4.2-r4.ebuild b/app-admin/calamares/calamares-2.4.2-r4.ebuild new file mode 100644 index 00000000..5591da27 --- /dev/null +++ b/app-admin/calamares/calamares-2.4.2-r4.ebuild @@ -0,0 +1,80 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 +PYTHON_COMPAT=( python3_4 ) + +inherit eutils cmake-utils python-r1 + +SRC_URI="https://github.com/calamares/calamares/releases/download/v${PV}/${P}.tar.gz" + +DESCRIPTION="Distribution-independent installer framework" +HOMEPAGE="http://calamares.io" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="amd64" +IUSE="+python" + +S="${WORKDIR}/${P}" + +DEPEND=" + dev-vcs/git + python? ( + >=dev-libs/boost-1.55.0-r2[python_targets_python3_4] + ) + >=dev-qt/designer-5.6.0:5 + >=dev-qt/linguist-tools-5.6.0:5 + >=dev-qt/qtconcurrent-5.6.0:5 + >=dev-qt/qtcore-5.6.0:5 + >=dev-qt/qtdbus-5.6.0:5 + >=dev-qt/qtdeclarative-5.6.0:5 + >=dev-qt/qtgui-5.6.0:5 + >=dev-qt/qtnetwork-5.6.0:5 + >=dev-qt/qtopengl-5.6.0:5 + >=dev-qt/qtprintsupport-5.6.0:5 + >=dev-qt/qtscript-5.6.0:5 + >=dev-qt/qtsvg-5.6.0:5 + >=dev-qt/qttest-5.6.0:5 + >=dev-qt/qtwebengine-5.6.0:5 + >=dev-qt/qtwebchannel-5.6.0:5 + >=dev-qt/qtwidgets-5.6.0:5 + >=dev-qt/qtxml-5.6.0:5 + >=dev-qt/qtxmlpatterns-5.6.0:5 + >=dev-cpp/yaml-cpp-0.5.1 + >=kde-frameworks/extra-cmake-modules-5.18.0 + >=sys-libs/kpmcore-2.2.0" + +RDEPEND=">=app-misc/calamares-runtime-3.1[branding]" + +src_prepare() { + # patch dracut module to be called the way we want it, until the module becomes configurable + epatch ${FILESDIR}/${P}-dracut-kogaion.patch + # calamares dracut enable luks encryption + epatch ${FILESDIR}/${P}-dracut-luks-fde.patch + # calamares grubcfg enable luks unlock + epatch ${FILESDIR}/${P}-grubcfg-luks-unlock.patch + # replace calamares installer desktop icon + sed -i "s/Icon=calamares/Icon=start-here/g" "${S}/calamares.desktop" + # fix installer doesn't start from desktop launcher (IMPROVE THIS UGLY THINGY) + sed -i "s/pkexec //g" "${S}/calamares.desktop" + sed -i "s/calamares/calamares-pkexec/g" "${S}/calamares.desktop" + # If qtchooser is installed, it may break the build, because moc,rcc and uic binaries for wrong qt version may be used. + # Setting QT_SELECT environment variable will enforce correct binaries (fix taken from vlc ebuild) + export QT_SELECT=qt5 +} + +src_configure() { + local mycmakeargs=( + -DWITH_PARTITIONMANAGER=1 + ) + cmake-utils_src_configure +} + +src_install() { + cmake-utils_src_install + insinto /usr/bin + insopts -m 755 + doins ${FILESDIR}/calamares-pkexec +} diff --git a/app-admin/calamares/files/calamares-2.4.2-grubcfg-luks-unlock.patch b/app-admin/calamares/files/calamares-2.4.2-grubcfg-luks-unlock.patch new file mode 100644 index 00000000..83e4ad4d --- /dev/null +++ b/app-admin/calamares/files/calamares-2.4.2-grubcfg-luks-unlock.patch @@ -0,0 +1,78 @@ +diff -Nur a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py +--- a/src/modules/grubcfg/main.py 2016-10-14 15:11:26.000000000 +0100 ++++ b/src/modules/grubcfg/main.py 2016-10-20 16:19:17.574463144 +0100 +@@ -36,8 +36,11 @@ + default_grub = os.path.join(default_dir, "grub") + distributor_replace = distributor.replace("'", "'\\''") + plymouth_bin = libcalamares.utils.target_env_call(["sh", "-c", "which plymouth"]) ++ dracut_bin = libcalamares.utils.target_env_call(["sh", "-c", "which plymouth"]) + use_splash = "" + swap_uuid = "" ++ swap_outer_uuid = "" ++ home_outer_uuid = "" + + libcalamares.utils.debug("which plymouth exit code: {!s}".format(plymouth_bin)) + +@@ -46,27 +49,48 @@ + + cryptdevice_params = [] + +- for partition in partitions: +- if partition["fs"] == "linuxswap": +- swap_uuid = partition["uuid"] +- +- if partition["mountPoint"] == "/" and "luksMapperName" in partition: +- cryptdevice_params = [ +- "cryptdevice=UUID={!s}:{!s}".format(partition["luksUuid"], +- partition["luksMapperName"]), +- "root=/dev/mapper/{!s}".format(partition["luksMapperName"]) +- ] +- +- kernel_params = ["quiet"] ++ if dracut_bin == "0": ++ for partition in partitions: ++ if partition["fs"] == "linuxswap": ++ swap_uuid = partition["uuid"] ++ ++ if partition["fs"] == "linuxswap" and "luksMapperName" in partition: ++ swap_outer_uuid = partition["luksUuid"] ++ ++ if partition["mountPoint"] == "/home" and "luksMapperName" in partition: ++ home_outer_uuid = partition["luksUuid"] ++ ++ if partition["mountPoint"] == "/" and "luksMapperName" in partition: ++ cryptdevice_params = ["rd.luks.uuid={!s}".format(partition["luksUuid"])] ++ ++ else: ++ for partition in partitions: ++ if partition["fs"] == "linuxswap": ++ swap_uuid = partition["uuid"] ++ ++ if partition["mountPoint"] == "/" and "luksMapperName" in partition: ++ cryptdevice_params = [ ++ "cryptdevice=UUID={!s}:{!s}".format(partition["luksUuid"], ++ partition["luksMapperName"]), ++ "root=/dev/mapper/{!s}".format(partition["luksMapperName"]) ++ ] + + if cryptdevice_params: + kernel_params.extend(cryptdevice_params) + ++ if swap_uuid: ++ kernel_params.append("resume=UUID={!s}".format(swap_uuid)) ++ ++ if swap_outer_uuid: ++ kernel_params.append("rd.luks.uuid={!s}".format(swap_outer_uuid)) ++ ++ if home_outer_uuid: ++ kernel_params.append("rd.luks.uuid={!s}".format(home_outer_uuid)) ++ + if use_splash: + kernel_params.append(use_splash) + +- if swap_uuid: +- kernel_params.append("resume=UUID={!s}".format(swap_uuid)) ++ kernel_params = ["quiet"] + + distributor_line = "GRUB_DISTRIBUTOR=\"{!s}\"".format(distributor_replace) + -- cgit v1.2.3