| dracut |
| ------ |
| dracut is a new initramfs infrastructure. |
| |
| Information about the initial goals and aims can be found at |
| https://fedoraproject.org/wiki/Initrdrewrite |
| |
| Unlike existing initramfs's, this is an attempt at having as little as |
| possible hard-coded into the initramfs as possible. The initramfs has |
| (basically) one purpose in life -- getting the rootfs mounted so that |
| we can transition to the real rootfs. This is all driven off of |
| device availability. Therefore, instead of scripts hard-coded to do |
| various things, we depend on udev to create device nodes for us and |
| then when we have the rootfs's device node, we mount and carry on. |
| This helps to keep the time required in the initramfs as little as |
| possible so that things like a 5 second boot aren't made impossible as |
| a result of the very existence of an initramfs. It's likely that |
| we'll grow some hooks for running arbitrary commands in the flow of |
| the script, but it's worth trying to resist the urge as much as we can |
| as hooks are guaranteed to be the path to slow-down. |
| |
| Most of the initramfs generation functionality in dracut is provided by a bunch |
| of generator modules that are sourced by the main dracut script to install |
| specific functionality into the initramfs. They live in the modules.d |
| subdirectory, and use functionality provided by dracut-functions to do their |
| work. |
| |
| Some general rules for writing modules: |
| * Use one of the inst family of functions to actually install files |
| on to the initramfs. They handle mangling the pathnames and (for binaries, |
| scripts, and kernel modules) installing dependencies as appropriate so |
| you do not have to. |
| * Scripts that end up on the initramfs should be POSIX compliant. dracut |
| will try to use /bin/dash as /bin/sh for the initramfs if it is available, |
| so you should install it on your system -- dash aims for strict POSIX |
| compliance to the extent possible. |
| * Hooks MUST be POSIX compliant -- they are sourced by the init script, |
| and having a bashism break your user's ability to boot really sucks. |
| * Generator modules should have a two digit numeric prefix -- they run in |
| ascending sort order. Anything in the 90-99 range is stuff that dracut |
| relies on, so try not to break those hooks. |
| * Hooks must have a .sh extension. |
| * Generator modules are described in more detail in README.modules. |
| * We have some breakpoints for debugging your hooks. If you pass 'rdbreak' |
| as a kernel parameter, the initramfs will drop to a shell just before |
| switching to a new root. You can pass 'rdbreak=hookpoint', and the initramfs |
| will break just before hooks in that hookpoint run. |
| |
| Also, there is an attempt to keep things as distribution-agnostic as |
| possible. Every distribution has their own tool here and it's not |
| something which is really interesting to have separate across them. |
| So contributions to help decrease the distro-dependencies are welcome. |
| |
| Currently dracut lives on kernel.org. |
| |
| The tarballs can be found here: |
| http://www.kernel.org/pub/linux/utils/boot/dracut/ |
| ftp://ftp.kernel.org/pub/linux/utils/boot/dracut/ |
| |
| Git: |
| git://git.kernel.org/pub/scm/boot/dracut/dracut.git |
| http://git.kernel.org/pub/scm/boot/dracut/dracut.git |
| https://git.kernel.org/pub/scm/boot/dracut/dracut.git |
| |
| git://github.com/haraldh/dracut.git |
| |
| git://dracut.git.sourceforge.net/gitroot/dracut/dracut |
| |
| Git Web: |
| http://git.kernel.org/?p=boot/dracut/dracut.git |
| |
| https://haraldh@github.com/haraldh/dracut.git |
| |
| http://dracut.git.sourceforge.net/git/gitweb.cgi?p=dracut/dracut |
| |
| Git Web RSS Feed: |
| http://git.kernel.org/?p=boot/dracut/dracut.git;a=rss |
| |
| Project Page: |
| http://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html |
| |
| Project Wiki: |
| http://dracut.wiki.kernel.org |
| |
| See the TODO file for things which still need to be done and HACKING for |
| some instructions on how to get started. There is also a mailing list |
| that is being used for the discussion -- initramfs@vger.kernel.org. |
| It is a typical vger list, send mail to majordomo@vger.kernel.org with body |
| of 'subscribe initramfs email@host.com' |
| |
| |
| Licensed under the GPLv2 |