summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorV3n3RiX <venerix@rogentos.ro>2016-11-24 00:29:28 +0000
committerV3n3RiX <venerix@rogentos.ro>2016-11-24 00:29:28 +0000
commitcbefdc59f4331d3aa25152c37ddeb73b6e71f339 (patch)
treec36f1686884b49e194348ed6096c2a069d877b28
parent8b2df332991d0d24c8f4f1d9a11ec25441e4ede9 (diff)
preconfigure dracut, so we don't have to patch calamares, or pass ubercomplicated arguments while building the initramfs
-rw-r--r--sys-kernel/dracut/Manifest4
-rw-r--r--sys-kernel/dracut/dracut-044-r1.ebuild267
-rw-r--r--sys-kernel/dracut/files/044-0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch32
-rw-r--r--sys-kernel/dracut/files/044-0002-systemd-initrd-add-initrd-root-device.target.patch24
-rw-r--r--sys-kernel/dracut/files/044-0003-50-dracut.install-use-bin-bash-shebang.patch23
-rw-r--r--sys-kernel/dracut/files/044-0004-redcore-change-default-initramfs-name.patch20
-rw-r--r--sys-kernel/dracut/files/redcore-dracut.conf8
-rw-r--r--sys-kernel/dracut/metadata.xml24
8 files changed, 402 insertions, 0 deletions
diff --git a/sys-kernel/dracut/Manifest b/sys-kernel/dracut/Manifest
new file mode 100644
index 00000000..8d50caa9
--- /dev/null
+++ b/sys-kernel/dracut/Manifest
@@ -0,0 +1,4 @@
+DIST dracut-040.tar.xz 263944 SHA256 b6e743353804b46e350177b9ecb9a8511df7e8c4ff9e0b4f3b4f72bc509c98a3 SHA512 6bc6a714572cc18c4cf9f9c1af4bc787287554ead1e39fbec8a1b8986585cf8c7c7ef476f87fc361f565eb344fe2594d63185ffe02cc5fa7cc3eaa03bcb4b72b WHIRLPOOL d8dbdbf6cb7705a0b7793f82a0323c49b4ac0dc3d61cf0073e3061f34af0b5c92dd21a7dc080f2a8d24d3eef3abc99df91f113675721267352f934f1319c66ba
+DIST dracut-041.tar.xz 268288 SHA256 8ece6c2240bf0e9283e5f717b65dfcd6830b3ef7f8d1c01b60014052f1063251 SHA512 358444588febfc482627eb5423b8a87b588ed3842ae814b9f88d8c5dfec28419f2aea92cd54c11c4949b9968d60d7e05ba9cfea78d26d2dc6f2a943a38b28dac WHIRLPOOL ab538fe1ffeb3d43185c6222a6e65af8c684b292be571e0571fdd69011f654c3093f3a2256f3003d5dbaf07d0a26f83d82055885bae1868738ad15dc74982e72
+DIST dracut-043.tar.xz 272744 SHA256 1484b558ed20330125aa04dcccab84da15c5689e19068285aa011f7177889cd1 SHA512 a36271e1ed4c1205a01bece7652095a8bfd722bcf7239a93baeb21e7e0a60fa86dd6657aa69b594241981056c87c6fe9d372f18ac045785122a9cafe8b0c31eb WHIRLPOOL d1efd59e2c41478e489d4707114b141e8bb0501c54209e364edc2060d3ffac7f2e1afd640b0812a452e7fbe7f9134e5e96436f0f1f2a54613d9468f9dca61a0c
+DIST dracut-044.tar.xz 280004 SHA256 84b97c9b0120e9fde06c3b9cf2ede1c4632cccd8e085e980b9ec9c788655af05 SHA512 bc788076e425b223d98cf0e0b15ff57d75d423991d7a67fb564a2857c38d5c3a21d846d2ca4523f9d4b0128bb981d09b5c26031435c5fc5e30f53080bca19b3d WHIRLPOOL 684591df596fa902447e671adfaeeb8cdc469c257f756616e42747835b71be7caaac9c72bd4b1a5ba5728ec4332baaba1d265cddb1c30cbfa65cf4dce0690bc0
diff --git a/sys-kernel/dracut/dracut-044-r1.ebuild b/sys-kernel/dracut/dracut-044-r1.ebuild
new file mode 100644
index 00000000..5f60eddc
--- /dev/null
+++ b/sys-kernel/dracut/dracut-044-r1.ebuild
@@ -0,0 +1,267 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit bash-completion-r1 eutils linux-info multilib systemd
+
+DESCRIPTION="Generic initramfs generation tool"
+HOMEPAGE="https://dracut.wiki.kernel.org"
+SRC_URI="mirror://kernel/linux/utils/boot/${PN}/${P}.tar.xz"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="debug selinux systemd"
+
+RESTRICT="test"
+
+CDEPEND="virtual/udev
+ systemd? ( >=sys-apps/systemd-199 )
+ "
+RDEPEND="${CDEPEND}
+ app-arch/cpio
+ >=app-shells/bash-4.0
+ >sys-apps/kmod-5[tools]
+ || (
+ >=sys-apps/sysvinit-2.87-r3
+ sys-apps/systemd[sysv-utils]
+ sys-apps/systemd-sysv-utils
+ )
+ >=sys-apps/util-linux-2.21
+
+ debug? ( dev-util/strace )
+ selinux? (
+ sys-libs/libselinux
+ sys-libs/libsepol
+ sec-policy/selinux-dracut
+ )
+ "
+DEPEND="${CDEPEND}
+ app-text/asciidoc
+ >=dev-libs/libxslt-1.1.26
+ app-text/docbook-xml-dtd:4.5
+ >=app-text/docbook-xsl-stylesheets-1.75.2
+ virtual/pkgconfig
+ "
+
+DOCS=( AUTHORS HACKING NEWS README README.generic README.kernel README.modules
+ README.testsuite TODO )
+MY_LIBDIR=/usr/lib
+QA_MULTILIB_PATHS="
+ usr/lib/dracut/dracut-install
+ usr/lib/dracut/skipcpio
+ "
+
+PATCHES=(
+ "${FILESDIR}"/044-0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch
+ "${FILESDIR}"/044-0002-systemd-initrd-add-initrd-root-device.target.patch
+ "${FILESDIR}"/044-0003-50-dracut.install-use-bin-bash-shebang.patch
+ "${FILESDIR}"/044-0004-redcore-change-default-initramfs-name.patch
+)
+
+#
+# Helper functions
+#
+
+# Removes module from modules.d.
+# $1 = module name
+# Module name can be specified without number prefix.
+rm_module() {
+ local force m
+ [[ $1 = -f ]] && force=-f
+
+ for m in $@; do
+ if [[ $m =~ ^[0-9][0-9][^\ ]*$ ]]; then
+ rm ${force} --interactive=never -r "${modules_dir}"/$m
+ else
+ rm ${force} --interactive=never -r "${modules_dir}"/[0-9][0-9]$m
+ fi
+ done
+}
+
+src_prepare() {
+ local libdirs="/$(get_libdir) /usr/$(get_libdir)"
+ if [[ ${SYMLINK_LIB} = yes ]]; then
+ # Preserve lib -> lib64 symlinks in initramfs
+ [[ $libdirs =~ /lib\ ]] || libdirs+=" /lib /usr/lib"
+ fi
+ einfo "Setting libdirs to \"${libdirs}\" ..."
+ sed -e "3alibdirs=\"${libdirs}\"" \
+ -i "${S}/dracut.conf.d/gentoo.conf.example" || die
+
+ local udevdir="$("$(tc-getPKG_CONFIG)" udev --variable=udevdir)"
+ einfo "Setting udevdir to ${udevdir}..."
+ sed -r -e "s|^(udevdir=).*$|\1${udevdir}|" \
+ -i "${S}/dracut.conf.d/gentoo.conf.example" || die
+
+ if use systemd; then
+ local systemdutildir="$(systemd_get_utildir)"
+ local systemdsystemunitdir="$(systemd_get_unitdir)"
+ local systemdsystemconfdir="$("$(tc-getPKG_CONFIG)" systemd \
+ --variable=systemdsystemconfdir)"
+ [[ ${systemdsystemconfdir} ]] \
+ || systemdsystemconfdir=/etc/systemd/system
+ einfo "Setting systemdutildir to ${systemdutildir} and ..."
+ sed -e "5asystemdutildir=\"${systemdutildir}\"" \
+ -i "${S}/dracut.conf.d/gentoo.conf.example" || die
+ einfo "Setting systemdsystemunitdir to ${systemdsystemunitdir} and..."
+ sed -e "6asystemdsystemunitdir=\"${systemdsystemunitdir}\"" \
+ -i "${S}/dracut.conf.d/gentoo.conf.example" || die
+ einfo "Setting systemdsystemconfdir to ${systemdsystemconfdir}..."
+ sed -e "7asystemdsystemconfdir=\"${systemdsystemconfdir}\"" \
+ -i "${S}/dracut.conf.d/gentoo.conf.example" || die
+ else
+ local systemdutildir="/lib/systemd"
+ einfo "Setting systemdutildir for standalone udev to" \
+ "${systemdutildir}..."
+ sed -e "5asystemdutildir=\"${systemdutildir}\"" \
+ -i "${S}/dracut.conf.d/gentoo.conf.example" || die
+ fi
+
+ epatch "${PATCHES[@]}"
+
+ epatch_user
+}
+
+src_configure() {
+ local myconf=(
+ --libdir="${MY_LIBDIR}"
+ --bashcompletiondir="$(get_bashcompdir)"
+ )
+
+ if use systemd; then
+ myconf+=( --systemdsystemunitdir="$(systemd_get_unitdir)" )
+ fi
+
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ tc-export CC
+ emake doc install/dracut-install skipcpio/skipcpio
+}
+
+src_install() {
+ default
+
+ local my_libdir="${MY_LIBDIR}"
+ local dracutlibdir="${my_libdir#/}/dracut"
+
+ echo "DRACUT_VERSION=$PVR" > "${D%/}/${dracutlibdir}/dracut-version.sh"
+
+ insinto "${dracutlibdir}/dracut.conf.d/"
+ newins dracut.conf.d/gentoo.conf.example gentoo.conf
+
+ insinto /etc/logrotate.d
+ newins dracut.logrotate dracut
+
+ insinto /etc/dracut.conf.d
+ doins "${FILESDIR}"/redcore-dracut.conf
+
+ dodir /var/lib/dracut/overlay
+
+ dohtml dracut.html
+
+ if ! use systemd; then
+ # Scripts in kernel/install.d are systemd-specific
+ rm -r "${D%/}/${my_libdir}/kernel" || die
+ fi
+
+ #
+ # Modules
+ #
+ local module
+ modules_dir="${D%/}/${dracutlibdir}/modules.d"
+
+ use debug || rm_module 95debug
+ use selinux || rm_module 98selinux
+
+ if use systemd; then
+ # With systemd following modules do not make sense
+ rm_module 96securityfs 97masterkey 98integrity
+ else
+ rm_module 00systemd 98dracut-systemd
+ # Without systemd following modules do not make sense
+ rm_module 00systemd-bootchart 01systemd-initrd 02systemd-networkd
+ fi
+
+ # Remove modules which won't work for sure
+ rm_module 95fcoe # no tools
+ # fips module depends on masked app-crypt/hmaccalc
+ rm_module 01fips 02fips-aesni
+}
+
+pkg_postinst() {
+ if linux-info_get_any_version && linux_config_exists; then
+ ewarn ""
+ ewarn "If the following test report contains a missing kernel"
+ ewarn "configuration option, you should reconfigure and rebuild your"
+ ewarn "kernel before booting image generated with this Dracut version."
+ ewarn ""
+
+ local CONFIG_CHECK="~BLK_DEV_INITRD ~DEVTMPFS"
+
+ # Kernel configuration options descriptions:
+ local desc_DEVTMPFS="Maintain a devtmpfs filesystem to mount at /dev"
+ local desc_BLK_DEV_INITRD="Initial RAM filesystem and RAM disk "\
+"(initramfs/initrd) support"
+
+ local opt desc
+
+ # Generate ERROR_* variables for check_extra_config.
+ for opt in ${CONFIG_CHECK}; do
+ opt=${opt#\~}
+ desc=desc_${opt}
+ eval "local ERROR_${opt}='CONFIG_${opt}: \"${!desc}\"" \
+ "is missing and REQUIRED'"
+ done
+
+ check_extra_config
+ echo
+ else
+ ewarn ""
+ ewarn "Your kernel configuration couldn't be checked. Do you have"
+ ewarn "/usr/src/linux/.config file there? Please check manually if"
+ ewarn "following options are enabled:"
+ ewarn ""
+ ewarn " CONFIG_BLK_DEV_INITRD"
+ ewarn " CONFIG_DEVTMPFS"
+ ewarn ""
+ fi
+
+ elog "To get additional features, a number of optional runtime"
+ elog "dependencies may be installed:"
+ elog ""
+ optfeature "Networking support" net-misc/curl "net-misc/dhcp[client]" \
+ sys-apps/iproute2
+ optfeature \
+ "Measure performance of the boot process for later visualisation" \
+ app-benchmarks/bootchart2 app-admin/killproc sys-process/acct
+ optfeature "Scan for Btrfs on block devices" sys-fs/btrfs-progs
+ optfeature "Load kernel modules and drop this privilege for real init" \
+ sys-libs/libcap
+ optfeature "Support CIFS" net-fs/cifs-utils
+ optfeature "Decrypt devices encrypted with cryptsetup/LUKS" \
+ "sys-fs/cryptsetup[-static-libs]"
+ optfeature "Support for GPG-encrypted keys for crypt module" \
+ app-crypt/gnupg
+ optfeature \
+ "Allows use of dash instead of default bash (on your own risk)" \
+ app-shells/dash
+ optfeature "Framebuffer splash (media-gfx/splashutils)" \
+ media-gfx/splashutils
+ optfeature "Support iSCSI" sys-block/open-iscsi
+ optfeature "Support Logical Volume Manager" sys-fs/lvm2
+ optfeature "Support MD devices, also known as software RAID devices" \
+ sys-fs/mdadm
+ optfeature "Support Device Mapper multipathing" sys-fs/multipath-tools
+ optfeature "Plymouth boot splash" '>=sys-boot/plymouth-0.8.5-r5'
+ optfeature "Support network block devices" sys-block/nbd
+ optfeature "Support NFS" net-fs/nfs-utils net-nds/rpcbind
+ optfeature \
+ "Install ssh and scp along with config files and specified keys" \
+ net-misc/openssh
+ optfeature "Enable logging with syslog-ng or rsyslog" app-admin/syslog-ng \
+ app-admin/rsyslog
+}
diff --git a/sys-kernel/dracut/files/044-0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch b/sys-kernel/dracut/files/044-0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch
new file mode 100644
index 00000000..fd6f1185
--- /dev/null
+++ b/sys-kernel/dracut/files/044-0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch
@@ -0,0 +1,32 @@
+From c41df7e1db1adc51399ab2c22f251b15eb2065b1 Mon Sep 17 00:00:00 2001
+From: Alexander Tsoy <alexander@tsoy.me>
+Date: Tue, 5 Jan 2016 22:11:57 +0300
+Subject: [PATCH] base/dracut-lib.sh:dev_unit_name() guard against $dev
+ beginning with "-"
+
+crypt/parse-crypt.sh generate initqueue job which always call
+dev_unit_name() with an argument beginning with "-". This results
+in the following error:
+
+dracut-initqueue[307]: + systemd-escape -p -cfb4aa43-2f02-4c6b-a313-60ea99288087
+dracut-initqueue[307]: systemd-escape: invalid option -- 'c'
+---
+ modules.d/99base/dracut-lib.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
+index ad03394..0a0b1b9 100755
+--- a/modules.d/99base/dracut-lib.sh
++++ b/modules.d/99base/dracut-lib.sh
+@@ -874,7 +874,7 @@ dev_unit_name()
+ local dev="$1"
+
+ if command -v systemd-escape >/dev/null; then
+- systemd-escape -p "$dev"
++ systemd-escape -p -- "$dev"
+ return
+ fi
+
+--
+2.10.2
+
diff --git a/sys-kernel/dracut/files/044-0002-systemd-initrd-add-initrd-root-device.target.patch b/sys-kernel/dracut/files/044-0002-systemd-initrd-add-initrd-root-device.target.patch
new file mode 100644
index 00000000..21cb6792
--- /dev/null
+++ b/sys-kernel/dracut/files/044-0002-systemd-initrd-add-initrd-root-device.target.patch
@@ -0,0 +1,24 @@
+From d4efc0aeeecc470d9a267b7f3c130f472488905c Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Wed, 25 May 2016 15:06:29 +0200
+Subject: [PATCH] systemd-initrd: add initrd-root-device.target
+
+---
+ modules.d/01systemd-initrd/module-setup.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/modules.d/01systemd-initrd/module-setup.sh b/modules.d/01systemd-initrd/module-setup.sh
+index fb6a9ea..c1ccd2a 100755
+--- a/modules.d/01systemd-initrd/module-setup.sh
++++ b/modules.d/01systemd-initrd/module-setup.sh
+@@ -28,6 +28,7 @@ install() {
+ inst_multiple -o \
+ $systemdsystemunitdir/initrd.target \
+ $systemdsystemunitdir/initrd-fs.target \
++ $systemdsystemunitdir/initrd-root-device.target \
+ $systemdsystemunitdir/initrd-root-fs.target \
+ $systemdsystemunitdir/initrd-switch-root.target \
+ $systemdsystemunitdir/initrd-switch-root.service \
+--
+2.10.2
+
diff --git a/sys-kernel/dracut/files/044-0003-50-dracut.install-use-bin-bash-shebang.patch b/sys-kernel/dracut/files/044-0003-50-dracut.install-use-bin-bash-shebang.patch
new file mode 100644
index 00000000..85ebc7e6
--- /dev/null
+++ b/sys-kernel/dracut/files/044-0003-50-dracut.install-use-bin-bash-shebang.patch
@@ -0,0 +1,23 @@
+From 69395a528aed99ec04b16c14ebacf4c2e10afd26 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Fri, 4 Nov 2016 13:09:28 -0400
+Subject: [PATCH] 50-dracut.install: use /bin/bash shebang
+
+This script utilizes several bash-specific constructs.
+---
+ 50-dracut.install | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/50-dracut.install b/50-dracut.install
+index 7d081d5..54c71d4 100755
+--- a/50-dracut.install
++++ b/50-dracut.install
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ COMMAND="$1"
+ KERNEL_VERSION="$2"
+--
+2.10.2
+
diff --git a/sys-kernel/dracut/files/044-0004-redcore-change-default-initramfs-name.patch b/sys-kernel/dracut/files/044-0004-redcore-change-default-initramfs-name.patch
new file mode 100644
index 00000000..1551ed35
--- /dev/null
+++ b/sys-kernel/dracut/files/044-0004-redcore-change-default-initramfs-name.patch
@@ -0,0 +1,20 @@
+diff -Nur a/dracut.sh b/dracut.sh
+--- a/dracut.sh 2015-11-25 13:22:28.000000000 +0000
++++ b/dracut.sh 2016-11-24 00:24:59.601507598 +0000
+@@ -613,6 +613,7 @@
+
+ if ! [[ $kernel ]]; then
+ kernel=$(uname -r)
++ kernelarch=$(uname -r)
+ fi
+
+ if [[ $kernel ]]; then
+@@ -627,7 +628,7 @@
+ if [[ $MACHINE_ID ]] && ( [[ -d /boot/${MACHINE_ID} ]] || [[ -L /boot/${MACHINE_ID} ]] ); then
+ outfile="/boot/${MACHINE_ID}/$kernel/initrd"
+ else
+- outfile="/boot/initramfs-$kernel.img"
++ outfile="/boot/initramfs-genkernel-$kernelarch-$kernel.img"
+ fi
+ fi
+
diff --git a/sys-kernel/dracut/files/redcore-dracut.conf b/sys-kernel/dracut/files/redcore-dracut.conf
new file mode 100644
index 00000000..0009cc16
--- /dev/null
+++ b/sys-kernel/dracut/files/redcore-dracut.conf
@@ -0,0 +1,8 @@
+# Host-Only mode: Install only what is needed for booting the local host instead of a generic host and generate host-specific configuration.
+hostonly="yes"
+
+# Combine early microcode with ramdisk
+early_microcode="yes"
+
+# Omit including systemd dracut modules when building the initramfs.
+omit_dracutmodules+=" systemd systemd-initrd systemd-networkd dracut-systemd "
diff --git a/sys-kernel/dracut/metadata.xml b/sys-kernel/dracut/metadata.xml
new file mode 100644
index 00000000..bc57bc2d
--- /dev/null
+++ b/sys-kernel/dracut/metadata.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>chutzpah@gentoo.org</email>
+ <name>Patrick McLean</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>alexander@tsoy.me</email>
+ <name>Alexander Tsoy</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>aidecoe@gentoo.org</email>
+ <name>Amadeusz Żołnowski</name>
+ </maintainer>
+ <use>
+ <flag name="debug">Module installing additional tools like strace, file
+ editor, ssh and more</flag>
+ </use>
+ <longdescription lang="en">
+ Generic, modular initramfs generation tool that can be used across various
+ distributions.
+ </longdescription>
+</pkgmetadata>