diff options
author | 2009-09-29 05:17:59 +0000 | |
---|---|---|
committer | 2009-09-29 05:17:59 +0000 | |
commit | 5448048cac0737d6c7f123ec5c8861e5ae1366c0 (patch) | |
tree | afac1ef9ba866a3be030df89bcfe74d716749b12 /sys-kernel | |
parent | initial commit (diff) | |
download | historical-5448048cac0737d6c7f123ec5c8861e5ae1366c0.tar.gz historical-5448048cac0737d6c7f123ec5c8861e5ae1366c0.tar.bz2 historical-5448048cac0737d6c7f123ec5c8861e5ae1366c0.zip |
New package dracut, a generic initramfs building tool
Package-Manager: portage-2.1.6.13/cvs/Linux x86_64
Diffstat (limited to 'sys-kernel')
-rw-r--r-- | sys-kernel/dracut/ChangeLog | 20 | ||||
-rw-r--r-- | sys-kernel/dracut/Manifest | 19 | ||||
-rw-r--r-- | sys-kernel/dracut/dracut-002.ebuild | 95 | ||||
-rw-r--r-- | sys-kernel/dracut/files/dracut-002-add-missing-functions.patch | 56 | ||||
-rw-r--r-- | sys-kernel/dracut/files/dracut-002-custom-paths.patch | 35 | ||||
-rw-r--r-- | sys-kernel/dracut/files/dracut-002-dir-symlinks.patch | 102 | ||||
-rw-r--r-- | sys-kernel/dracut/files/dracut-002-gencmdline-check-for-keyboard-i18n-files.patch | 27 | ||||
-rw-r--r-- | sys-kernel/dracut/files/dracut-002-unmount.patch | 42 | ||||
-rw-r--r-- | sys-kernel/dracut/metadata.xml | 24 |
9 files changed, 420 insertions, 0 deletions
diff --git a/sys-kernel/dracut/ChangeLog b/sys-kernel/dracut/ChangeLog new file mode 100644 index 000000000000..7c6aa11cd545 --- /dev/null +++ b/sys-kernel/dracut/ChangeLog @@ -0,0 +1,20 @@ +# ChangeLog for sys-kernel/dracut +# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/sys-kernel/dracut/ChangeLog,v 1.1 2009/09/29 05:17:59 ramereth Exp $ + + 29 Sep 2009; Lance Albertson <ramereth@gentoo.org> dracut-002.ebuild, + +files/dracut-002-add-missing-functions.patch, + +files/dracut-002-gencmdline-check-for-keyboard-i18n-files.patch: + Fix dracut-gencmdline issues + +*dracut-002 (27 Sep 2009) + + 27 Sep 2009; Lance Albertson <ramereth@gentoo.org> +dracut-002.ebuild, + +files/dracut-002-custom-paths.patch, + +files/dracut-002-dir-symlinks.patch, +files/dracut-002-unmount.patch, + +metadata.xml: + Initial ebuild based from #278442 + + Thanks to Ambroz Bizjak <ambro@b4ever.net> for the initial ebuild and + patches + diff --git a/sys-kernel/dracut/Manifest b/sys-kernel/dracut/Manifest new file mode 100644 index 000000000000..f5156c3ebf72 --- /dev/null +++ b/sys-kernel/dracut/Manifest @@ -0,0 +1,19 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +AUX dracut-002-add-missing-functions.patch 1134 RMD160 4b8298e5d2c632ad33f768070d5520c0618844b6 SHA1 0bab1aac2af402b2531d14ae46ab372ab2d3c015 SHA256 ac64c5c68f8f3f8057646d26b29e6d51e00ce7000dd240b6829cfaee153fcf9b +AUX dracut-002-custom-paths.patch 995 RMD160 a5eb1f733fe78a40699f028a69f01815c31f1557 SHA1 da30e093309acff0f3728b6b6c7345eb1fcfa94a SHA256 9e0ac4dd0f17e62bf9d3a688143dd0fc7fd1b97e3df9d3e654d3c7ba73d9dc33 +AUX dracut-002-dir-symlinks.patch 3223 RMD160 0783bfd8172d1e27c0ef79a3973bb69e8cd36a4a SHA1 598f4fcc75f4244a9427480efad9f22ed947b402 SHA256 f71f8ad53e2fa0aefe592ad74fd32d2407f1375a8201673d06ffe6d2de02e5dd +AUX dracut-002-gencmdline-check-for-keyboard-i18n-files.patch 795 RMD160 9f41b536a51a14cfb31e4ad9f9c1c8eae3c14d99 SHA1 c145d1fc5ee99dd1226c62f3dd15c55c482ef58a SHA256 5e19deded988923ac4fe79e525d7964ae8052bb9578fe67847fd873aefaedfe5 +AUX dracut-002-unmount.patch 1222 RMD160 4a1ca39fdb84b538047e96963524af9b7ad565c6 SHA1 ce07c883eda5086ce5f9427334276d5c87c517a5 SHA256 6b27f01342b595c19d1324b647b1800d7f0ce4f2bd89da6ee5b14d87ab272f5e +DIST dracut-002.tar.bz2 68444 RMD160 9cfd1a29c01506fe36611745cf40a36a71502435 SHA1 dd86eac785486d5aff1d8529a67e4522f5519b54 SHA256 c667fa44b76553c49a463b0c40ac8aa3bb0bd401e18016190158abe85c0d736f +EBUILD dracut-002.ebuild 2910 RMD160 f26b3d926bfe4a72eff1fdd64de959119c1d7208 SHA1 e70ab604d8d8f595fdc981f506dee05674c634d1 SHA256 94be7e9781c064a5f83a0ada4ddc22dbac8808c16c24dc698e19b9ab95ab76c4 +MISC ChangeLog 780 RMD160 9eb59b2822c42ca19cb8fb3171474bcf5c4f52f8 SHA1 ed5795171d2ae85fc63a209dbeba4f1e868acf60 SHA256 861af5fd27ad61fe858415abeddc6b266b88a562ef00815a267ea2410a4a9be5 +MISC metadata.xml 843 RMD160 4d0fdda2ff757bf667dea79f3de04cfcf53f0a68 SHA1 fa09c53b07fe103182ddc2e906f79a651598b2e8 SHA256 6258091f8569eb37f1b2b9468e76239336d58bffb74e667c412cf40831f24412 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.11 (GNU/Linux) + +iD8DBQFKwZitQW+hXSf0t0IRArcTAKDxNEjD0xDSujpm2nAp8jaC7gVq8wCfSyiq +aWZX2dZInT7P7XUKYSVcpZI= +=4VCy +-----END PGP SIGNATURE----- diff --git a/sys-kernel/dracut/dracut-002.ebuild b/sys-kernel/dracut/dracut-002.ebuild new file mode 100644 index 000000000000..71eee466bbe6 --- /dev/null +++ b/sys-kernel/dracut/dracut-002.ebuild @@ -0,0 +1,95 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-kernel/dracut/dracut-002.ebuild,v 1.1 2009/09/29 05:17:59 ramereth Exp $ + +EAPI=2 + +inherit eutils mount-boot + +DESCRIPTION="Generic initramfs generation tool" +HOMEPAGE="http://sourceforge.net/projects/dracut/" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="crypt dmraid iscsi lvm nbd nfs md selinux" + +# common networking deps +NETWORK_DEPS="sys-apps/iproute2 net-misc/dhcp net-misc/bridge-utils" + +RDEPEND="app-shells/dash + >=sys-apps/module-init-tools-3.6 + app-arch/cpio + sys-apps/coreutils + sys-apps/findutils + sys-devel/binutils + sys-apps/grep + sys-apps/which + sys-apps/util-linux + app-shells/bash + app-arch/gzip + app-arch/tar + sys-fs/e2fsprogs + sys-apps/file + app-arch/bzip2 + crypt? ( sys-fs/cryptsetup ) + dmraid? ( sys-fs/dmraid ) + lvm? ( >=sys-fs/lvm2-2.02.33 ) + md? ( sys-fs/mdadm ) + nfs? ( net-fs/nfs-utils net-nds/rpcbind ${NETWORK_DEPS} ) + iscsi? ( sys-block/open-iscsi[utils] ${NETWORK_DEPS} ) + nbd? ( sys-block/nbd ${NETWORK_DEPS} ) + selinux? ( sys-libs/libselinux sys-libs/libsepol )" +DEPEND="${RDEPEND}" + +src_prepare() { + epatch "${FILESDIR}/${P}-unmount.patch" + epatch "${FILESDIR}/${P}-custom-paths.patch" + epatch "${FILESDIR}/${P}-dir-symlinks.patch" + epatch "${FILESDIR}/${P}-add-missing-functions.patch" + epatch "${FILESDIR}/${P}-gencmdline-check-for-keyboard-i18n-files.patch" +} + +src_compile() { + emake prefix=/usr sysconfdir=/etc || die "emake failed" +} + +src_install() { + local modules_dir="${D}/usr/share/dracut/modules.d" + + emake prefix=/usr sysconfdir=/etc DESTDIR="${D}" install || die "emake install failed" + echo "${PF}" > "${modules_dir}"/10rpmversion/dracut-version + dodir /boot/dracut /var/lib/dracut/overlay + dodoc HACKING TODO AUTHORS NEWS README* + # disable modules not enabled by use flags + for module in crypt dmraid lvm md ; do + ! use ${module} && rm -rf ${modules_dir}/90${module} + done + # disable all network modules + for module in iscsi nbd nfs ; do + ! use ${module} && rm -rf ${modules_dir}/95${module} + done + # if no networking at all, disable the rest + if ! use iscsi && ! use nbd && ! use nfs ; then + rm -rf ${modules_dir}/40network + rm -rf ${modules_dir}/95fcoe + fi +} + +pkg_postinst() { + elog 'To generate the initramfs:' + elog ' # mount /boot (if necessary)' + elog ' # dracut "" <kernel-version>' + elog '' + elog 'For command line documentation, see:' + elog 'http://sourceforge.net/apps/trac/dracut/wiki/commandline' + elog '' + elog 'Simple example to select root and resume partition:' + elog ' root=/dev/???? resume=/dev/????' + elog '' + elog 'Configuration is in /etc/dracut.conf.' + elog 'The default config is very minimal and is highly recommended you' + elog 'adjust based on your needs. To include only drivers for this system,' + elog 'use the "-H" option.' +} diff --git a/sys-kernel/dracut/files/dracut-002-add-missing-functions.patch b/sys-kernel/dracut/files/dracut-002-add-missing-functions.patch new file mode 100644 index 000000000000..1b51e3b1de71 --- /dev/null +++ b/sys-kernel/dracut/files/dracut-002-add-missing-functions.patch @@ -0,0 +1,56 @@ +From 5e5ec023bedc14d709f1d5f8e2803ba171b05daa Mon Sep 17 00:00:00 2001 +From: Harald Hoyer <harald@redhat.com> +Date: Fri, 18 Sep 2009 09:08:23 +0200 +Subject: [PATCH] dracut-gencmdline: add missing functions + +--- + dracut-gencmdline | 33 +++++++++++++++++++++++++++++++++ + 1 files changed, 33 insertions(+), 0 deletions(-) + +diff --git a/dracut-gencmdline b/dracut-gencmdline +index bab102f..f3cbee1 100755 +--- a/dracut-gencmdline ++++ b/dracut-gencmdline +@@ -19,6 +19,39 @@ + # + #. /usr/libexec/initrd-functions + ++IF_verbose="" ++function set_verbose() { ++ case $1 in ++ 1|true|yes|on) ++ IF_verbose="-v" ++ ;; ++ 0|false|no|off) ++ IF_verbose="" ++ ;; ++ esac ++} ++ ++function is_verbose() { ++ [ -n "$IF_verbose" ] && return 0 ++ return 1 ++} ++ ++function get_verbose() { ++ echo "$IF_verbose" ++ is_verbose ++} ++ ++ ++function get_numeric_dev() { ++( ++ fmt="%d:%d" ++ if [ "$1" == "hex" ]; then ++ fmt="%x:%x" ++ fi ++ ls -lH "$2" | awk '{ sub(/,/, "", $5); printf("'"$fmt"'", $5, $6); }' ++) 2>/dev/null ++} ++ + + function error() { + echo "$@" >&2 +-- +1.6.3.3 + diff --git a/sys-kernel/dracut/files/dracut-002-custom-paths.patch b/sys-kernel/dracut/files/dracut-002-custom-paths.patch new file mode 100644 index 000000000000..d21cc0ed703a --- /dev/null +++ b/sys-kernel/dracut/files/dracut-002-custom-paths.patch @@ -0,0 +1,35 @@ +From 550fa5f9ae8c6b2fa284d78c090edc5a36991d3a Mon Sep 17 00:00:00 2001 +From: Lance Albertson <lance@osuosl.org> +Date: Sat, 26 Sep 2009 21:26:43 -0700 +Subject: [PATCH 2/3] custom paths + +--- + Makefile | 12 ++++++------ + 1 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/Makefile b/Makefile +index d9ce0f8..f6d162f 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,12 +1,12 @@ + VERSION=002 + GITVERSION=$(shell [ -d .git ] && git rev-list --abbrev-commit -n 1 HEAD |cut -b 1-8) + +-prefix = /usr +-datadir = ${prefix}/share +-pkglibdir = ${datadir}/dracut +-sysconfdir = ${prefix}/etc +-sbindir = ${prefix}/sbin +-mandir = ${prefix}/share/man ++prefix ?= /usr ++datadir ?= ${prefix}/share ++pkglibdir ?= ${datadir}/dracut ++sysconfdir ?= ${prefix}/etc ++sbindir ?= ${prefix}/sbin ++mandir ?= ${prefix}/share/man + + modules.d/99base/switch_root: switch_root.c + gcc -D _GNU_SOURCE -D 'PACKAGE_STRING="dracut"' -std=gnu99 -fsigned-char -g -O2 -o modules.d/99base/switch_root switch_root.c +-- +1.6.3.3 + diff --git a/sys-kernel/dracut/files/dracut-002-dir-symlinks.patch b/sys-kernel/dracut/files/dracut-002-dir-symlinks.patch new file mode 100644 index 000000000000..9106e3719259 --- /dev/null +++ b/sys-kernel/dracut/files/dracut-002-dir-symlinks.patch @@ -0,0 +1,102 @@ +From 044fbc9ed51e4df819ee5710ed519c566579ff59 Mon Sep 17 00:00:00 2001 +From: Lance Albertson <lance@osuosl.org> +Date: Sat, 26 Sep 2009 21:33:41 -0700 +Subject: [PATCH 3/3] dir symlinks + +--- + dracut | 2 +- + dracut-functions | 43 +++++++++++++++++++++++++++++++++++++------ + 2 files changed, 38 insertions(+), 7 deletions(-) + +diff --git a/dracut b/dracut +index b96ad5e..0518969 100755 +--- a/dracut ++++ b/dracut +@@ -174,7 +174,7 @@ export initdir hookdirs dsrc dracutmodules drivers \ + if [[ $kernel_only != yes ]]; then + # Create some directory structure first + for d in bin sbin usr/bin usr/sbin usr/lib etc proc sys sysroot tmp dev/pts var/run; do +- mkdir -p "$initdir/$d"; ++ inst_dir "/$d"; + done + fi + +diff --git a/dracut-functions b/dracut-functions +index 2abd6f2..1f2d1e6 100755 +--- a/dracut-functions ++++ b/dracut-functions +@@ -131,6 +131,36 @@ check_vol_slaves() { + return 1 + } + ++# Install a directory, keeping symlinks as on the original system. ++# Example: if /lib64 points to /lib on the host, "inst_dir /lib/file" ++# will create ${initdir}/lib64, ${initdir}/lib64/file, ++# and a symlink ${initdir}/lib -> lib64. ++inst_dir() { ++ local dir="$1" ++ [[ -e "${initdir}$dir" ]] && return 0 ++ ++ # iterate over parent directories ++ local file="" ++ local IFS="/" ++ for part in $dir; do ++ [ -z "$part" ] && continue ++ file="$file/$part" ++ [[ -e "${initdir}$file" ]] && continue ++ ++ if [ -L "$file" ]; then ++ # create link as the original ++ local target=$(readlink "$file") ++ ln -sfn "$target" "${initdir}$file" || return 1 ++ # resolve relative path and recursively install destionation ++ [[ "$target" = "${target##*/}" ]] && target="${file%/*}/$target" ++ inst_dir "$target" ++ else ++ # create directory ++ mkdir -p "${initdir}$file" || return 1 ++ fi ++ done ++} ++ + # $1 = file to copy to ramdisk + # $2 (optional) Name for the file on the ramdisk + # Location of the image dir is assumed to be $initdir +@@ -138,11 +168,11 @@ check_vol_slaves() { + inst_simple() { + local src target + [[ -f $1 ]] || return 1 +- src=$1 target=${initdir}${2:-$1} +- [[ -f $target ]] && return 0 +- mkdir -p "${target%/*}" ++ src=$1 target="${2:-$1}" ++ [[ -f ${initdir}$target ]] && return 0 ++ inst_dir "${target%/*}" + dinfo "Installing $src" +- cp -pfL "$src" "$target" ++ cp -fL "$src" "${initdir}$target" + } + + # Same as above, but specialzed to handle dynamic libraries. +@@ -155,7 +185,7 @@ inst_library() { + reallib=$(readlink -f "$src") + lib=${src##*/} + inst_simple "$reallib" "$reallib" +- mkdir -p "${initdir}${dest%/*}" ++ inst_dir "${dest%/*}" + (cd "${initdir}${dest%/*}" && ln -s "$reallib" "$lib") + else + inst_simple "$src" "$dest" +@@ -250,7 +280,8 @@ find_rule() { + # create a function to install them to make life simpler. + inst_rules() { + local target=/etc/udev/rules.d +- mkdir -p "$initdir/lib/udev/rules.d" "$initdir$target" ++ inst_dir "/lib/udev/rules.d" ++ inst_dir "$target" + for rule in "$@"; do + rule=$(find_rule "$rule") && \ + inst_simple "$rule" "$target/${rule##*/}" +-- +1.6.3.3 + diff --git a/sys-kernel/dracut/files/dracut-002-gencmdline-check-for-keyboard-i18n-files.patch b/sys-kernel/dracut/files/dracut-002-gencmdline-check-for-keyboard-i18n-files.patch new file mode 100644 index 000000000000..1497b2d73d11 --- /dev/null +++ b/sys-kernel/dracut/files/dracut-002-gencmdline-check-for-keyboard-i18n-files.patch @@ -0,0 +1,27 @@ +From 6dc6649052d07a6ab0720bd4e866629cb385cb8a Mon Sep 17 00:00:00 2001 +From: Lance Albertson <lance@osuosl.org> +Date: Mon, 28 Sep 2009 20:30:17 -0700 +Subject: [PATCH] dracut-gencmdline: check for keyboard & i18n files + +--- + dracut-gencmdline | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dracut-gencmdline b/dracut-gencmdline +index f3cbee1..0f2bca1 100755 +--- a/dracut-gencmdline ++++ b/dracut-gencmdline +@@ -689,8 +689,8 @@ for cryptdev in ${!cryptolv@} ; do + done + + # output local keyboard/18n settings +-. /etc/sysconfig/keyboard +-. /etc/sysconfig/i18n ++[ -e /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard ++[ -e /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n + + for i in KEYTABLE SYSFONT SYSFONTACM UNIMAP LANG; do + val=$(eval echo \$$i) +-- +1.6.3.3 + diff --git a/sys-kernel/dracut/files/dracut-002-unmount.patch b/sys-kernel/dracut/files/dracut-002-unmount.patch new file mode 100644 index 000000000000..1914b2310f2b --- /dev/null +++ b/sys-kernel/dracut/files/dracut-002-unmount.patch @@ -0,0 +1,42 @@ +From 7aa5f85a748dcad3567c878b8623af446f0d8c4f Mon Sep 17 00:00:00 2001 +From: Lance Albertson <lance@osuosl.org> +Date: Sat, 26 Sep 2009 21:26:06 -0700 +Subject: [PATCH 1/3] fix umount + +--- + switch_root.c | 13 +++---------- + 1 files changed, 3 insertions(+), 10 deletions(-) + +diff --git a/switch_root.c b/switch_root.c +index 8ce4aaf..1643a71 100644 +--- a/switch_root.c ++++ b/switch_root.c +@@ -160,22 +160,15 @@ done: + static int switchroot(const char *newroot) + { + /* Don't try to unmount the old "/", there's no way to do it. */ +- const char *umounts[] = { "/dev", "/proc", "/sys", NULL }; ++ const char *umounts[] = { "/dev/pts", "/dev", "/proc", "/sys", NULL }; + char *newroot_mnt; + const char *chroot_path = NULL; + int i; + int r = -1; + + for (i = 0; umounts[i] != NULL; i++) { +- char newmount[PATH_MAX]; +- +- snprintf(newmount, sizeof(newmount), "%s%s", newroot, umounts[i]); +- +- if (mount(umounts[i], newmount, NULL, MS_MOVE, NULL) < 0) { +- warn("failed to mount moving %s to %s", +- umounts[i], newmount); +- warnx("forcing unmount of %s", umounts[i]); +- umount2(umounts[i], MNT_FORCE); ++ if (umount2(umounts[i], MNT_FORCE) < 0) { ++ warn("failed to unmount %s", umounts[i]); + } + } + +-- +1.6.3.3 + diff --git a/sys-kernel/dracut/metadata.xml b/sys-kernel/dracut/metadata.xml new file mode 100644 index 000000000000..fc47bfa368de --- /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> + <herd></herd> + <maintainer> + <email>ramereth@gentoo.org</email> + <name>Lance Albertson</name> + </maintainer> + <use> + <flag name="dmraid">Add support for dmraid devices, also known as + ATA-RAID, or Fake RAID.</flag> + <flag name="iscsi">Add support for iSCSI</flag> + <flag name="lvm">Add support for the Logical Volume Manager + sys-apps/lvm2</flag> + <flag name="nbd">Add support for network block devices</flag> + <flag name="nfs">Add support for NFS</flag> + <flag name="md">Add support for MD devices, also known as software raid devices</flag> + </use> + <longdescription lang="en"> + Generic, modular initramfs generation tool that can be used across various + distributions. + </longdescription> +</pkgmetadata> + |