summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLance Albertson <ramereth@gentoo.org>2009-09-29 05:17:59 +0000
committerLance Albertson <ramereth@gentoo.org>2009-09-29 05:17:59 +0000
commit5448048cac0737d6c7f123ec5c8861e5ae1366c0 (patch)
treeafac1ef9ba866a3be030df89bcfe74d716749b12 /sys-kernel
parentinitial commit (diff)
downloadhistorical-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/ChangeLog20
-rw-r--r--sys-kernel/dracut/Manifest19
-rw-r--r--sys-kernel/dracut/dracut-002.ebuild95
-rw-r--r--sys-kernel/dracut/files/dracut-002-add-missing-functions.patch56
-rw-r--r--sys-kernel/dracut/files/dracut-002-custom-paths.patch35
-rw-r--r--sys-kernel/dracut/files/dracut-002-dir-symlinks.patch102
-rw-r--r--sys-kernel/dracut/files/dracut-002-gencmdline-check-for-keyboard-i18n-files.patch27
-rw-r--r--sys-kernel/dracut/files/dracut-002-unmount.patch42
-rw-r--r--sys-kernel/dracut/metadata.xml24
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>
+