diff --git a/Makefile b/Makefile
index 0b60c5b6..5fa67bae 100644
--- a/Makefile
+++ b/Makefile
@@ -2,8 +2,9 @@ VERSION=013
GITVERSION=$(shell [ -d .git ] && git rev-list --abbrev-commit -n 1 HEAD |cut -b 1-8)
prefix ?= /usr
+libdir ?= ${prefix}/lib
datadir ?= ${prefix}/share
-pkglibdir ?= ${datadir}/dracut
+pkglibdir ?= ${libdir}/dracut
sysconfdir ?= ${prefix}/etc
sbindir ?= ${prefix}/sbin
mandir ?= ${prefix}/share/man
diff --git a/dracut b/dracut
index f989cb8f..45ee7594 100755
--- a/dracut
+++ b/dracut
@@ -35,7 +35,7 @@ Creates initial ramdisk images for preloading modules
-f, --force Overwrite existing initramfs file.
-m, --modules [LIST] Specify a space-separated list of dracut modules to
call when building the initramfs. Modules are located
- in /usr/share/dracut/modules.d.
+ in /usr/lib/dracut/modules.d.
-o, --omit [LIST] Omit a space-separated list of dracut modules.
-a, --add [LIST] Add a space-separated list of dracut modules.
-d, --drivers [LIST] Specify a space-separated list of kernel modules to
@@ -80,7 +80,7 @@ Creates initial ramdisk images for preloading modules
from. Default: /etc/dracut.conf.d
-l, --local Local mode. Use modules from the current working
directory instead of the system-wide installed in
- /usr/share/dracut/modules.d.
+ /usr/lib/dracut/modules.d.
Useful when running dracut from a git checkout.
-H, --hostonly Host-Only mode: Install only what is needed for
booting the local host instead of a generic host.
@@ -280,7 +280,7 @@ unset LD_LIBRARY_PATH
debug=yes
}
-[[ $dracutbasedir ]] || dracutbasedir=/usr/share/dracut
+[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
[[ $allowlocal && -f "$(readlink -f ${0%/*})/dracut-functions" ]] && \
dracutbasedir="$(readlink -f ${0%/*})"
@@ -388,7 +388,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
[[ $use_fstab_l ]] && use_fstab=$use_fstab_l
[[ $mdadmconf_l ]] && mdadmconf=$mdadmconf_l
[[ $lvmconf_l ]] && lvmconf=$lvmconf_l
-[[ $dracutbasedir ]] || dracutbasedir=/usr/share/dracut
+[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
[[ $fw_dir ]] || fw_dir="/lib/firmware/updates /lib/firmware"
[[ $do_strip ]] || do_strip=no
[[ $compress_l ]] && compress=$compress_l
diff --git a/dracut.8.xml b/dracut.8.xml
index d4689ee8..b2b740a1 100644
--- a/dracut.8.xml
+++ b/dracut.8.xml
@@ -112,7 +112,7 @@ For a complete list of kernel command line options see
specify a space-separated list of dracut modules to call
when building the initramfs.
Modules are located in
-/usr/share/dracut/modules.d. This parameter can be specified multiple times.
+/usr/lib/dracut/modules.d. This parameter can be specified multiple times.
@@ -369,7 +369,7 @@ Default:
activates the local mode. dracut will use modules from the current working
directory instead of the system-wide installed modules in
-/usr/share/dracut/modules.d.
+/usr/lib/dracut/modules.d.
This is useful when running dracut from a git checkout.
diff --git a/dracut.conf.5.xml b/dracut.conf.5.xml
index 811680ed..c0766e75 100644
--- a/dracut.conf.5.xml
+++ b/dracut.conf.5.xml
@@ -46,7 +46,7 @@ overwrite parameters set in /etc/dracut.conf. Each line spe
Specify a space-separated list of dracut modules to
call when building the initramfs. Modules are located
-in /usr/share/dracut/modules.d.
+in /usr/lib/dracut/modules.d.
diff --git a/dracut.spec b/dracut.spec
index 8fd5048f..e6df68a2 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -1,3 +1,5 @@
+%define dracutlibdir %{_prefix}/lib/dracut
+
# Variables must be defined
%define with_nbd 1
@@ -175,18 +177,20 @@ make
%if 0%{?fedora} || 0%{?rhel} > 6
rm -rf $RPM_BUILD_ROOT
%endif
-make install DESTDIR=$RPM_BUILD_ROOT sbindir=/sbin \
+make install DESTDIR=$RPM_BUILD_ROOT \
+ libdir=%{_prefix}/lib \
+ sbindir=/sbin \
sysconfdir=/etc mandir=%{_mandir}
-echo %{name}-%{version}-%{release} > $RPM_BUILD_ROOT/%{_datadir}/dracut/modules.d/10rpmversion/dracut-version
+echo %{name}-%{version}-%{release} > $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/10rpmversion/dracut-version
%if 0%{?fedora} == 0 && 0%{?rhel} == 0
-rm -fr $RPM_BUILD_ROOT/%{_datadir}/dracut/modules.d/01fips
-rm -fr $RPM_BUILD_ROOT/%{_datadir}/dracut/modules.d/02fips-aesni
+rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/01fips
+rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/02fips-aesni
%endif
# remove gentoo specific modules
-rm -fr $RPM_BUILD_ROOT/%{_datadir}/dracut/modules.d/50gensplash
+rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/50gensplash
mkdir -p $RPM_BUILD_ROOT/boot/dracut
mkdir -p $RPM_BUILD_ROOT/var/lib/dracut/overlay
@@ -222,10 +226,10 @@ rm -rf $RPM_BUILD_ROOT
/sbin/mkinitrd
/sbin/lsinitrd
%endif
-%dir %{_datadir}/dracut
-%dir %{_datadir}/dracut/modules.d
-%{_datadir}/dracut/dracut-functions
-%{_datadir}/dracut/dracut-logger
+%dir %{dracutlibdir}
+%dir %{dracutlibdir}/modules.d
+%{dracutlibdir}/dracut-functions
+%{dracutlibdir}/dracut-logger
%config(noreplace) /etc/dracut.conf
%if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} > 6
%config /etc/dracut.conf.d/01-dist.conf
@@ -234,72 +238,72 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man8/dracut.8*
%{_mandir}/man7/dracut.kernel.7*
%{_mandir}/man5/dracut.conf.5*
-%{_datadir}/dracut/modules.d/00bootchart
-%{_datadir}/dracut/modules.d/00dash
-%{_datadir}/dracut/modules.d/05busybox
-%{_datadir}/dracut/modules.d/10i18n
-%{_datadir}/dracut/modules.d/10rpmversion
-%{_datadir}/dracut/modules.d/50plymouth
-%{_datadir}/dracut/modules.d/90btrfs
-%{_datadir}/dracut/modules.d/90crypt
-%{_datadir}/dracut/modules.d/90dm
-%{_datadir}/dracut/modules.d/90dmraid
-%{_datadir}/dracut/modules.d/90dmsquash-live
-%{_datadir}/dracut/modules.d/90kernel-modules
-%{_datadir}/dracut/modules.d/90lvm
-%{_datadir}/dracut/modules.d/90mdraid
-%{_datadir}/dracut/modules.d/90multipath
-%{_datadir}/dracut/modules.d/91crypt-gpg
-%{_datadir}/dracut/modules.d/95debug
-%{_datadir}/dracut/modules.d/95resume
-%{_datadir}/dracut/modules.d/95rootfs-block
-%{_datadir}/dracut/modules.d/95dasd
-%{_datadir}/dracut/modules.d/95dasd_mod
-%{_datadir}/dracut/modules.d/95fstab-sys
-%{_datadir}/dracut/modules.d/95zfcp
-%{_datadir}/dracut/modules.d/95terminfo
-%{_datadir}/dracut/modules.d/95udev-rules
-%{_datadir}/dracut/modules.d/96securityfs
-%{_datadir}/dracut/modules.d/97biosdevname
-%{_datadir}/dracut/modules.d/97masterkey
-%{_datadir}/dracut/modules.d/98ecryptfs
-%{_datadir}/dracut/modules.d/98integrity
-%{_datadir}/dracut/modules.d/98selinux
-%{_datadir}/dracut/modules.d/98syslog
-%{_datadir}/dracut/modules.d/98usrmount
-%{_datadir}/dracut/modules.d/99base
-%{_datadir}/dracut/modules.d/99fs-lib
-%{_datadir}/dracut/modules.d/99shutdown
+%{dracutlibdir}/modules.d/00bootchart
+%{dracutlibdir}/modules.d/00dash
+%{dracutlibdir}/modules.d/05busybox
+%{dracutlibdir}/modules.d/10i18n
+%{dracutlibdir}/modules.d/10rpmversion
+%{dracutlibdir}/modules.d/50plymouth
+%{dracutlibdir}/modules.d/90btrfs
+%{dracutlibdir}/modules.d/90crypt
+%{dracutlibdir}/modules.d/90dm
+%{dracutlibdir}/modules.d/90dmraid
+%{dracutlibdir}/modules.d/90dmsquash-live
+%{dracutlibdir}/modules.d/90kernel-modules
+%{dracutlibdir}/modules.d/90lvm
+%{dracutlibdir}/modules.d/90mdraid
+%{dracutlibdir}/modules.d/90multipath
+%{dracutlibdir}/modules.d/91crypt-gpg
+%{dracutlibdir}/modules.d/95debug
+%{dracutlibdir}/modules.d/95resume
+%{dracutlibdir}/modules.d/95rootfs-block
+%{dracutlibdir}/modules.d/95dasd
+%{dracutlibdir}/modules.d/95dasd_mod
+%{dracutlibdir}/modules.d/95fstab-sys
+%{dracutlibdir}/modules.d/95zfcp
+%{dracutlibdir}/modules.d/95terminfo
+%{dracutlibdir}/modules.d/95udev-rules
+%{dracutlibdir}/modules.d/96securityfs
+%{dracutlibdir}/modules.d/97biosdevname
+%{dracutlibdir}/modules.d/97masterkey
+%{dracutlibdir}/modules.d/98ecryptfs
+%{dracutlibdir}/modules.d/98integrity
+%{dracutlibdir}/modules.d/98selinux
+%{dracutlibdir}/modules.d/98syslog
+%{dracutlibdir}/modules.d/98usrmount
+%{dracutlibdir}/modules.d/99base
+%{dracutlibdir}/modules.d/99fs-lib
+%{dracutlibdir}/modules.d/99shutdown
%config(noreplace) /etc/logrotate.d/dracut_log
%attr(0644,root,root) %ghost %config(missingok,noreplace) %{_localstatedir}/log/dracut.log
%dir %{_sharedstatedir}/initramfs
%files network
%defattr(-,root,root,0755)
-%{_datadir}/dracut/modules.d/40network
-%{_datadir}/dracut/modules.d/95fcoe
-%{_datadir}/dracut/modules.d/95iscsi
-%{_datadir}/dracut/modules.d/90livenet
-%{_datadir}/dracut/modules.d/95nbd
-%{_datadir}/dracut/modules.d/95nfs
-%{_datadir}/dracut/modules.d/45ifcfg
-%{_datadir}/dracut/modules.d/95znet
+%{dracutlibdir}/modules.d/40network
+%{dracutlibdir}/modules.d/95fcoe
+%{dracutlibdir}/modules.d/95iscsi
+%{dracutlibdir}/modules.d/90livenet
+%{dracutlibdir}/modules.d/95nbd
+%{dracutlibdir}/modules.d/95nfs
+%{dracutlibdir}/modules.d/45ifcfg
+%{dracutlibdir}/modules.d/95znet
%if 0%{?fedora} || 0%{?rhel} > 6
%files fips
%defattr(-,root,root,0755)
-%{_datadir}/dracut/modules.d/01fips
+%{dracutlibdir}/modules.d/01fips
%config(noreplace) /etc/dracut.conf.d/40-fips.conf
%endif
%files fips-aesni
%defattr(-,root,root,0755)
%doc COPYING
-%{_datadir}/dracut/modules.d/02fips-aesni
+%{dracutlibdir}/modules.d/02fips-aesni
%files caps
%defattr(-,root,root,0755)
-%{_datadir}/dracut/modules.d/02caps
+%{dracutlibdir}/modules.d/02caps
%files tools
%defattr(-,root,root,0755)
diff --git a/dracut.xml b/dracut.xml
index 13e092a6..8602b2f7 100644
--- a/dracut.xml
+++ b/dracut.xml
@@ -170,7 +170,7 @@ include ld.so.conf.d/*.conf
To see a list of available dracut modules, use the option:# dracut --list-modulesor, if you have a dracut version earlier than 008, issue the command:
- # for mod in /usr/share/dracut/modules.d/*; do echo ${mod##*/??}; done
+ # for mod in /usr/lib/dracut/modules.d/*; do echo ${mod##*/??}; doneOmitting dracut Modules
@@ -534,7 +534,7 @@ Key slot 0 unlocked.
Developer Manualdracut Components
- dracut uses a modular system to build and extend the initramfs image. All modules are located in /usr/share/dracut/modules.d or in <git-src>/modules.d. The most basic dracut module is 99base. In 99base the initial shell script init is defined, which gets run by the kernel after initramfs loading. Although you can replace init with your own version of 99base, this is not encouraged. Instead you should use, if possible, the hooks of dracut. All hooks, and the point of time in which they are executed, are described in .
+ dracut uses a modular system to build and extend the initramfs image. All modules are located in /usr/lib/dracut/modules.d or in <git-src>/modules.d. The most basic dracut module is 99base. In 99base the initial shell script init is defined, which gets run by the kernel after initramfs loading. Although you can replace init with your own version of 99base, this is not encouraged. Instead you should use, if possible, the hooks of dracut. All hooks, and the point of time in which they are executed, are described in .The main script, which creates the initramfs is dracut itsself. It parses all arguments and sets up the directory, in which everything is installed. It then executes all check, install, installkernel scripts found in the modules, which are to be processed. After everything is installed, the install directory is archived and compressed to the final initramfs image. All helper functions used by check, install and installkernel are found in in the file dracut-functions. These shell functions are available to all module installer (install, installkernel) scripts, without the need to source dracut-functions.A module can check the preconditions for install and installkernel with the check script. Also dependencies can be expressed with check. If a module passed check, install and installkernel will be called to install all of the necessary files for the module. To split between kernel and non-kernel parts of the installation, all kernel module related parts have to be in installkernel. All other files found in a module directory are module specific and mostly are hook scripts and udev rules.