diff options
author | Amadeusz Piotr Żołnowski <aidecoe@gentoo.org> | 2013-03-10 14:09:35 +0000 |
---|---|---|
committer | Amadeusz Piotr Żołnowski <aidecoe@gentoo.org> | 2013-03-10 14:09:35 +0000 |
commit | 9e5060ae98ff0dbca52c529333296dcf87df59a5 (patch) | |
tree | 51a1d2f4d06f84ab90a6b44b6e7612f0639af6f8 /sys-kernel | |
parent | Apply patch for CVE-2010-2632. #458718 (diff) | |
download | gentoo-2-9e5060ae98ff0dbca52c529333296dcf87df59a5.tar.gz gentoo-2-9e5060ae98ff0dbca52c529333296dcf87df59a5.tar.bz2 gentoo-2-9e5060ae98ff0dbca52c529333296dcf87df59a5.zip |
Version bump.
Gentoo release doesn't include a fix to catch all UUIDs (for crypt, dmraid,
mdraid) and not only the first one, because the fix actually breaks something
and LUKS devices aren't detected correctly at build time. If this fix is
fixed it will come in dracut-026-r1 ASAP.
NEWS
~~~~
(from announcement on mailing list)
- introduce /usr/lib/dracut/dracut.conf.d/ drop-in directory
/usr/lib/dracut/dracut.conf.d/*.conf can be overwritten by the same
filenames in /etc/dracut.conf.d.
Packages should use /usr/lib/dracut/dracut.conf.d rather than
/etc/dracut.conf.d for drop-in configuration files.
/etc/dracut.conf and /etc/dracut.conf.d belong to the system administrator.
- uses systemd-198 native initrd units
- totally rely on the fstab-generator in systemd mode for block devices
- dracut systemd now uses dracut.target rather than basic.target
- dracut systemd services optimize themselves away
- fixed hostonly parameter generation
- turn off curl globbing (fixes IPv6)
- modify the udev rules on install and not runtime time
- enable initramfs building without kernel modules (fixed regression)
- in the initqueue/timeout, reset the main loop counter, as we see new udev
events or initqueue/work
- fixed udev rule installation
(Portage version: 2.1.11.52/cvs/Linux x86_64, signed Manifest commit with key F0134531E1DBFAB5)
Diffstat (limited to 'sys-kernel')
5 files changed, 452 insertions, 1 deletions
diff --git a/sys-kernel/dracut/ChangeLog b/sys-kernel/dracut/ChangeLog index 3d94ed6cec53..5cb2df1face9 100644 --- a/sys-kernel/dracut/ChangeLog +++ b/sys-kernel/dracut/ChangeLog @@ -1,6 +1,46 @@ # ChangeLog for sys-kernel/dracut # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-kernel/dracut/ChangeLog,v 1.111 2013/03/10 09:56:34 aidecoe Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-kernel/dracut/ChangeLog,v 1.112 2013/03/10 14:09:35 aidecoe Exp $ + +*dracut-026 (10 Mar 2013) + + 10 Mar 2013; Amadeusz Żołnowski <aidecoe@gentoo.org> + +files/026-0001-dracut-functions.sh-support-for-altern.patch, + +files/026-0002-gentoo.conf-let-udevdir-be-handled-by-.patch, + +files/026-0003-Revert-crypt-dmraid-mdraid-use-for_eac.patch, + +dracut-026.ebuild: + Version bump. + + Gentoo release doesn't include a fix to catch all UUIDs (for crypt, dmraid, + mdraid) and not only the first one, because the fix actually breaks something + and LUKS devices aren't detected correctly at build time. If this fix is + fixed it will come in dracut-026-r1 ASAP. + + NEWS + ~~~~ + (from announcement on mailing list) + + - introduce /usr/lib/dracut/dracut.conf.d/ drop-in directory + + /usr/lib/dracut/dracut.conf.d/*.conf can be overwritten by the same + filenames in /etc/dracut.conf.d. + + Packages should use /usr/lib/dracut/dracut.conf.d rather than + /etc/dracut.conf.d for drop-in configuration files. + + /etc/dracut.conf and /etc/dracut.conf.d belong to the system administrator. + + - uses systemd-198 native initrd units + - totally rely on the fstab-generator in systemd mode for block devices + - dracut systemd now uses dracut.target rather than basic.target + - dracut systemd services optimize themselves away + - fixed hostonly parameter generation + - turn off curl globbing (fixes IPv6) + - modify the udev rules on install and not runtime time + - enable initramfs building without kernel modules (fixed regression) + - in the initqueue/timeout, reset the main loop counter, as we see new udev + events or initqueue/work + - fixed udev rule installation 10 Mar 2013; Amadeusz Żołnowski <aidecoe@gentoo.org> dracut-025.ebuild: Cosmetic changes. diff --git a/sys-kernel/dracut/dracut-026.ebuild b/sys-kernel/dracut/dracut-026.ebuild new file mode 100644 index 000000000000..f350e5b3184a --- /dev/null +++ b/sys-kernel/dracut/dracut-026.ebuild @@ -0,0 +1,289 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-kernel/dracut/dracut-026.ebuild,v 1.1 2013/03/10 14:09:35 aidecoe Exp $ + +EAPI=4 + +inherit eutils linux-info + +add_req_use_for() { + local dep="$1"; shift + local f + + for f in "$@"; do + REQUIRED_USE+="${f}? ( ${dep} ) +" + done +} + +DESCRIPTION="Generic initramfs generation tool" +HOMEPAGE="http://dracut.wiki.kernel.org" +SRC_URI="mirror://kernel/linux/utils/boot/${PN}/${P}.tar.bz2" +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86" + +REQUIRED_USE="dracut_modules_crypt-gpg? ( dracut_modules_crypt ) + dracut_modules_crypt-loop? ( dracut_modules_crypt ) + dracut_modules_livenet? ( dracut_modules_dmsquash-live ) + " +COMMON_MODULES=" + dracut_modules_biosdevname + dracut_modules_bootchart + dracut_modules_btrfs + dracut_modules_caps + dracut_modules_crypt-gpg + dracut_modules_crypt-loop + dracut_modules_gensplash + dracut_modules_mdraid + dracut_modules_multipath + dracut_modules_plymouth + dracut_modules_syslog + dracut_modules_systemd + " +DM_MODULES=" + dracut_modules_crypt + dracut_modules_dmraid + dracut_modules_dmsquash-live + dracut_modules_livenet + dracut_modules_lvm + " +NETWORK_MODULES=" + dracut_modules_cifs + dracut_modules_iscsi + dracut_modules_livenet + dracut_modules_nbd + dracut_modules_nfs + dracut_modules_ssh-client + " +add_req_use_for device-mapper ${DM_MODULES} +add_req_use_for net ${NETWORK_MODULES} +IUSE_DRACUT_MODULES="${COMMON_MODULES} ${DM_MODULES} ${NETWORK_MODULES}" +IUSE="debug device-mapper optimization net selinux ${IUSE_DRACUT_MODULES}" + +RESTRICT="test" + +CDEPEND=">sys-fs/udev-166 + dracut_modules_systemd? ( sys-apps/systemd ) + " +RDEPEND="${CDEPEND} + app-arch/cpio + >=app-shells/bash-4.0 + >=app-shells/dash-0.5.4.11 + >=sys-apps/baselayout-1.12.14-r1 + || ( >=sys-apps/module-init-tools-3.8 >sys-apps/kmod-5[tools] ) + >=sys-apps/sysvinit-2.87-r3 + >=sys-apps/util-linux-2.21 + virtual/pkgconfig + + debug? ( dev-util/strace ) + device-mapper? ( || ( sys-fs/device-mapper >=sys-fs/lvm2-2.02.33 ) ) + net? ( net-misc/curl >=net-misc/dhcp-4.2.4_p2-r1[client] sys-apps/iproute2 ) + selinux? ( sys-libs/libselinux sys-libs/libsepol ) + dracut_modules_biosdevname? ( sys-apps/biosdevname ) + dracut_modules_bootchart? ( app-benchmarks/bootchart2 sys-apps/usleep + sys-process/acct ) + dracut_modules_btrfs? ( sys-fs/btrfs-progs ) + dracut_modules_caps? ( sys-libs/libcap ) + dracut_modules_cifs? ( net-fs/cifs-utils ) + dracut_modules_crypt? ( sys-fs/cryptsetup ) + dracut_modules_crypt-gpg? ( app-crypt/gnupg ) + dracut_modules_dmraid? ( sys-fs/dmraid sys-fs/multipath-tools ) + dracut_modules_gensplash? ( media-gfx/splashutils ) + dracut_modules_iscsi? ( >=sys-block/open-iscsi-2.0.871.3 ) + dracut_modules_lvm? ( >=sys-fs/lvm2-2.02.33 ) + dracut_modules_mdraid? ( sys-fs/mdadm ) + dracut_modules_multipath? ( sys-fs/multipath-tools ) + dracut_modules_nbd? ( sys-block/nbd ) + dracut_modules_nfs? ( net-fs/nfs-utils net-nds/rpcbind ) + dracut_modules_plymouth? ( >=sys-boot/plymouth-0.8.3-r1 ) + dracut_modules_ssh-client? ( dev-libs/openssl ) + dracut_modules_syslog? ( || ( app-admin/syslog-ng app-admin/rsyslog ) ) + " +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 + " + +DOCS=( AUTHORS HACKING NEWS README README.generic README.kernel README.modules + README.testsuite TODO ) +DRACUT_LIBDIR="/usr/lib" + +# +# Helper functions +# + +# Returns true if any of specified modules is enabled by USE flag and false +# otherwise. +# $1 = list of modules (which have corresponding USE flags of the same name) +any_module() { + local m modules=" $@ " + + for m in ${modules}; do + ! use $m && modules=${modules/ $m / } + done + + shopt -s extglob + modules=${modules%%+( )} + shopt -u extglob + + [[ ${modules} ]] +} + +# 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 +} + +# +# ebuild functions +# + +src_prepare() { + epatch "${FILESDIR}/${PV}-0001-dracut-functions.sh-support-for-altern.patch" + epatch "${FILESDIR}/${PV}-0002-gentoo.conf-let-udevdir-be-handled-by-.patch" + epatch "${FILESDIR}/${PV}-0003-Revert-crypt-dmraid-mdraid-use-for_eac.patch" + chmod +x "${S}/modules.d/95udev-rules/udev-rules-prepare.sh" + + if use dracut_modules_systemd; then + local systemdutildir="$($(tc-getPKG_CONFIG) systemd \ + --variable=systemdutildir)" + local systemdsystemunitdir="$($(tc-getPKG_CONFIG) systemd \ + --variable=systemdsystemunitdir)" + [[ ${systemdutildir} ]] || die "Couldn't detect systemdutildir" + [[ ${systemdsystemunitdir} ]] \ + || die "Couldn't detect systemdsystemunitdir" + einfo "Setting systemdutildir to ${systemdutildir} and ..." + sed -e "4asystemdutildir=\"${systemdutildir}\"" \ + -i "${S}/dracut.conf.d/gentoo.conf.example" || die + einfo "Setting systemdsystemunitdir to ${systemdsystemunitdir}..." + sed -e "5asystemdsystemunitdir=\"${systemdsystemunitdir}\"" \ + -i "${S}/dracut.conf.d/gentoo.conf.example" || die + fi +} + +src_configure() { + econf --libdir="${DRACUT_LIBDIR}" +} + +src_compile() { + emake doc + + if use optimization; then + ewarn "Enabling experimental optimization!" + tc-export CC + emake install/dracut-install + fi +} + +src_install() { + default + + local libdir="${DRACUT_LIBDIR}" + + insinto "${libdir}/dracut/dracut.conf.d/" + newins dracut.conf.d/gentoo.conf.example gentoo.conf + + insinto /etc/logrotate.d + newins dracut.logrotate dracut + + dodir /var/lib/dracut/overlay + + dohtml dracut.html + + # + # Modules + # + local module + modules_dir="${D%/}/${libdir#/}/dracut/modules.d" + + # Remove modules not enabled by USE flags + for module in ${IUSE_DRACUT_MODULES} ; do + ! use ${module} && rm_module -f ${module#dracut_modules_} + done + + # Those flags are specific, and even are corresponding to modules, they need + # to be declared as regular USE flags. + use debug || rm_module 95debug + use selinux || rm_module 98selinux + + # Following flags define set of helper modules which are base dependencies + # for others and as so have no practical use, so remove these modules. + use device-mapper || rm_module 90dm + use net || rm_module 40network 45ifcfg 45url-lib + + # Remove S/390 modules which are not tested at all + rm_module 80cms 95dasd 95dasd_mod 95zfcp 95znet + + # 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 + + # Remove extra modules which go to future dracut-extras + rm_module 05busybox 97masterkey 98ecryptfs 98integrity +} + +pkg_postinst() { + if linux-info_get_any_version && linux_config_src_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 ~MODULES" + + # 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 desc_MODULES="Enable loadable module 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 " CONFIG_MODULES" + ewarn "" + fi + + if use dracut_modules_crypt || use dracut_modules_dmraid || use \ + dracut_modules_mdraid || use dracut_modules_lvm; then + + if ! [[ $(</proc/cmdline) =~ rd.auto[\ =] ]]; then + ewarn "Autoassembly of special devices like cryptoLUKS, dmraid, " + ewarn "mdraid or lvm is off for default as of >=dracut-024." + ewarn "Use rd.auto option to turn it on." + fi + fi +} diff --git a/sys-kernel/dracut/files/026-0001-dracut-functions.sh-support-for-altern.patch b/sys-kernel/dracut/files/026-0001-dracut-functions.sh-support-for-altern.patch new file mode 100644 index 000000000000..05aad68a656a --- /dev/null +++ b/sys-kernel/dracut/files/026-0001-dracut-functions.sh-support-for-altern.patch @@ -0,0 +1,37 @@ +From 76e3d3ac2d753f17c59dfe9758ea36897bedaddf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name> +Date: Sun, 6 Jan 2013 13:35:01 +0100 +Subject: [PATCH 1/3] dracut-functions.sh: support for alternative udev dirs - + udevaltdirs + +It is required for Gentoo which moves udev from / to /usr and supports +both /lib/udev and /usr/lib/udev for compatibility with other packages. + +Credits go to Alexander Tsoy <alexander@tsoy.me>. +--- + dracut-functions.sh | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 2a84d17..a6a609c 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -955,6 +955,15 @@ inst_rules() { + inst_dir "$_target" + for _rule in "$@"; do + if [ "${_rule#/}" = "$_rule" ]; then ++ for r in ${udevaltdirs}; do ++ [[ "$r" = "${udevdir}" ]] && continue ++ if [[ -f $r/rules.d/$_rule ]]; then ++ _found="$r/rules.d/$_rule" ++ inst_rule_programs "$_found" ++ inst_rule_group_owner "$_found" ++ inst_simple "$_found" "${udevdir}/rules.d/${_found##*/}" ++ fi ++ done + for r in ${udevdir}/rules.d /etc/udev/rules.d; do + if [[ -f $r/$_rule ]]; then + _found="$r/$_rule" +-- +1.8.1.4 + diff --git a/sys-kernel/dracut/files/026-0002-gentoo.conf-let-udevdir-be-handled-by-.patch b/sys-kernel/dracut/files/026-0002-gentoo.conf-let-udevdir-be-handled-by-.patch new file mode 100644 index 000000000000..6ae84ec8af9e --- /dev/null +++ b/sys-kernel/dracut/files/026-0002-gentoo.conf-let-udevdir-be-handled-by-.patch @@ -0,0 +1,30 @@ +From f4bfd74c673c5f4d01cf9855f2e4f58c59f5b658 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name> +Date: Sun, 16 Dec 2012 20:02:48 +0100 +Subject: [PATCH 2/3] gentoo.conf: let udevdir= be handled by pkg-config and + use udevaltdirs + +To avoid need of rebuild after udev update/downgrade let udevdir= be set +dynamically with pkg-config. Use udevaltdirs to search for rules both +in old and new locations. +--- + dracut.conf.d/gentoo.conf.example | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example +index 1361a30..b78e5c6 100644 +--- a/dracut.conf.d/gentoo.conf.example ++++ b/dracut.conf.d/gentoo.conf.example +@@ -1,7 +1,8 @@ + # /etc/dracut.conf.d/gentoo.conf + # dracut config file customized for Gentoo Base System release 2 + +-udevdir=/lib/udev ++udevdir= ++udevaltdirs="/lib/udev /usr/lib/udev" + ro_mnt=yes + + # +-- +1.8.1.4 + diff --git a/sys-kernel/dracut/files/026-0003-Revert-crypt-dmraid-mdraid-use-for_eac.patch b/sys-kernel/dracut/files/026-0003-Revert-crypt-dmraid-mdraid-use-for_eac.patch new file mode 100644 index 000000000000..6fc948269c66 --- /dev/null +++ b/sys-kernel/dracut/files/026-0003-Revert-crypt-dmraid-mdraid-use-for_eac.patch @@ -0,0 +1,55 @@ +From a6b0fde8f776d28988a9ab4e5bf09f78fa858744 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name> +Date: Sun, 10 Mar 2013 13:31:02 +0100 +Subject: [PATCH 3/3] Revert "crypt, dmraid, mdraid: use + for_each_host_dev_and_slaves_all()" + +This reverts commit cf24ac8c19b803e6f5c0576f2d7e78187331cf02. +--- + modules.d/90crypt/module-setup.sh | 2 +- + modules.d/90dmraid/module-setup.sh | 2 +- + modules.d/90mdraid/module-setup.sh | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/modules.d/90crypt/module-setup.sh b/modules.d/90crypt/module-setup.sh +index 2b4456b..93b996c 100755 +--- a/modules.d/90crypt/module-setup.sh ++++ b/modules.d/90crypt/module-setup.sh +@@ -25,7 +25,7 @@ check() { + } + + [[ $hostonly ]] || [[ $mount_needs ]] && { +- for_each_host_dev_and_slaves_all check_crypt || return 1 ++ for_each_host_dev_fs check_crypt || return 1 + } + + return 0 +diff --git a/modules.d/90dmraid/module-setup.sh b/modules.d/90dmraid/module-setup.sh +index c315961..eb949dc 100755 +--- a/modules.d/90dmraid/module-setup.sh ++++ b/modules.d/90dmraid/module-setup.sh +@@ -38,7 +38,7 @@ check() { + } + + [[ $hostonly ]] || [[ $mount_needs ]] && { +- for_each_host_dev_and_slaves_all check_dmraid || return 1 ++ for_each_host_dev_fs check_dmraid || return 1 + } + + return 0 +diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh +index 0efffbb..a2b9ac2 100755 +--- a/modules.d/90mdraid/module-setup.sh ++++ b/modules.d/90mdraid/module-setup.sh +@@ -27,7 +27,7 @@ check() { + } + + [[ $hostonly ]] || [[ $mount_needs ]] && { +- for_each_host_dev_and_slaves_all check_mdraid || return 1 ++ for_each_host_dev_fs check_mdraid || return 1 + } + + return 0 +-- +1.8.1.4 + |