diff options
Diffstat (limited to 'man/mkinitcpio.8.txt')
-rw-r--r-- | man/mkinitcpio.8.txt | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/man/mkinitcpio.8.txt b/man/mkinitcpio.8.txt new file mode 100644 index 0000000..f19250f --- /dev/null +++ b/man/mkinitcpio.8.txt @@ -0,0 +1,297 @@ +///// +vim:set ts=4 sw=4 syntax=asciidoc noet: +///// +mkinitcpio(8) +============= + +Name +---- +mkinitcpio - Create an initial ramdisk environment + +Synopsis +-------- +'mkinitcpio' [options] + +Description +----------- +Creates an initial ramdisk environment for booting the linux kernel. The +initial ramdisk is in essence a very small environment (early userspace) which +loads various kernel modules and sets up necessary things before handing over +control to init. This makes it possible to have, for example, encrypted root +filesystems and root filesystems on a software RAID array. mkinitcpio allows +for easy extension with custom hooks, has autodetection at runtime, and many +other features. + +Options +------- +*-A, \--addhooks* 'hooks':: + Add the additional 'hooks' to the image. These will be processed in order + after all other hooks from the config file. Multiple hooks should be + comma-separated. This option can be specified multiple times. + +*-c, \--config* 'config':: + Use 'config' file to generate the ramdisk. Default: /etc/mkinitcpio.conf + +*-g, \--generate* 'filename':: + Generate a CPIO image as 'filename'. Default: no; this means nothing will be + written to the filesystem unless this option is specified. + +*-H, \--hookhelp* 'hookname':: + Output help for hookname 'hookname'. + +*-h, \--help*:: + Output a short overview of available command-line switches. + +*-k, \--kernel* 'kernelversion':: + Use 'kernelversion', instead of the current running kernel. This may be a + path to a kernel image or a specific kernel version. + +*-L, \--listhooks*:: + List all available hooks. + +*-M, \--automods*:: + Display modules found via autodetection. mkinitcpio will automatically try to + determine which kernel modules are needed to start your computer. This option + lists which modules were detected. + +*-n, \--nocolor*:: + Disable color output. + +*-p, \--preset* 'preset':: + Build initramfs image(s) according to specified 'preset'. This may be a file in + /etc/mkinitcpio.d (without the .preset extension) or a full, absolute path to a + file. + +*-r, \--moduleroot* 'root':: + Specifies the root directory to find modules in, defaulting to '/'. + +*-S, \--skiphooks* 'hooks':: + Skip 'hooks' when generating the image. Multiple hooks should be comma-separated. + This option can be specified multiple times. + +*-s, \--save*:: + Saves the build directory for the initial ramdisk. Default: no; This means + the directory will not be retained if this option isn't specified. Useful for + debugging purposes. + +*-t, \--builddir* 'tmpdir':: + Use 'tmpdir' as the temporary build directory instead of /tmp. 'tmpdir' + must exist. The 'TMPDIR' environment variable is also honored to set this + location, but the command line option will take precedence. + +*-V, \--version*:: + Display version information. + +*-v, \--verbose*:: + Verbose output. Outputs more information about what's happening during + creation of the ramdisk. + +*-z, \--compress* 'compress':: + Override the compression method with the 'compress' program. + +About Presets +------------- +A preset is a pre-defined definition on how to create an initial ramdisk. +Instead of specifying the configuration file and which output file, every time +you generate a new initial ramdisk, you define a preset and use the -p switch +to generate an initial ramdisk according to your preset. Presets are located in +/etc/mkinitcpio.d + +About Install Hooks +------------------- +Install hooks are bash scripts which are sourced during mkinitcpio runtime in +order to add modules, binaries, and other files to the image. A variety of +functions exist to facilitate this. + +*add_module* 'modname':: + + Adds the module specified by 'modname' to the image. Dependencies are derived + and added automatically. + +*add_binary* 'binary' [ 'destination' ] [ 'mode' ]:: + + Adds a binary to the image. The argument 'binary' need not be an absolute + path and, if needed, a lookup will be performed. If the binary is a dynamically + linked ELF binary, dependencies will be automatically added. Optionally, a + destination within the initramfs image as well as a file mode can be specified. + By default, the destintation and mode be taken from the source derived from + 'binary'. + +*add_file* 'path' [ 'destination' ] [ 'mode' ]:: + + Adds a file and any needed parent directories to the image. Optionally, a + destination within the initramfs image as well as a file mode can be specified. + By default, the destination and mode will be taken from the source and mode of + the file specified by the 'path'. + +*add_dir* 'path':: + + Adds a directory and its parents to the image. + +*add_full_dir* 'directory':: + + Recursively adds a directory to the image by walking the given path and + calling *add_file*, *add_dir*, and *add_symlink* accordingly. This function + will not follow symlinks, nor will it add the targets of symlinks. + +*add_symlink* 'path' [ 'link-target' ]:: + + Adds a symlink to the image at the specified `path`, optionally pointing to + the specified `link-target`. If the `link-target` is not provided, it is assumed + that this symlink exists in the real filesystem, and the target will be read + using readlink. There is no checking done to ensure that the target of the + symlink exists, and symlinks will not be followed recursively. + +*add_all_modules* [ '-f filter' ] *pattern*:: + + Adds modules to the image, without regard for the autodetect whitelist. *pattern* + should be a subdirectory within the kernel tree describing a subset of modules to + be included. Further refinement can be provided via the -f flag with an extended + regular expression. + +*add_checked_modules* [ '-f filter' ] *pattern*:: + + Similar to *add_all_modules* with the constraint that only modules matching the + whitelist generated by the autodetect hook will be added to the image. If the + autodetect hook is not present in the image, this function is identical to + *add_all_modules*. + +*add_runscript* [ 'scriptname' ]:: + + Adds a runtime hook to the image, which is a busybox ash compatible shell + script. The name of the script is guaranteed to match the name of the hook the + script is called from. + +About Runtime Hooks +------------------- +Runtime hooks added to the image via the *add_runscript* function from an +install hook are able to provide extra functionality during early userspace. +Specific functions in these files will run at different times. A hook can +define one or more of these. At each hook point, hooks are run in the order +that they are defined in the HOOKS variable, except for cleanup hooks which are +run in reverse. + +*run_earlyhook*:: + + Functions of this name will be run once the API mounts have been setup and the + kernel command line has been parsed. Daemons needed for early userspace should + be started from this hook point. + +*run_hook*:: + + Functions of this name will be run after any early hooks, and after user + defined modules have been installed. This is the most common hook point, and + functionality such as scanning for LVM volumes and mapping encrypted volumes + should be performed here. + +*run_latehook*:: + + Functions of this name will be run after root has been mounted. This is generally + used for further necessary setup in the real root, such as mounting other system + partitions. + +*run_cleanuphook*:: + + Functions of this name are run as late as possible. Any daemons started + from a run_earlyhook function should be shut down here in preparation for + switching to the real root. + +Early Init Environment +---------------------- +mkinitcpio gives special treatment to certain environment variables passed on +the kernel command line: + +*break*['=<premount|postmount>']:: + If specified, mkinitcpio will start a shell during early init. The optional + parameter controls when this occurs: when 'premount' or no parameter are + specified, the shell will be launched prior to mounting root. If 'postmount' + is specified, the shell will be launched after mounting root. + +*disablehooks=*'hooklist':: + This is a comma separated list of hooks which will be skipped during early + init. + +*earlymodules=*'modulelist':: + This is a comma separated list of modules which will be loaded prior to any + others. This is generally not needed, and usually points to a configuration + or kernel problem. + +*quiet*:: + Causes mkinitcpio to output fewer messages during boot. Errors will not be + suppressed. + +*ro*:: + Specifies that root should be mounted with readonly permissions. This is the + default behavior. + +*rw*:: + Specifies that root should be mounted with readwrite permissions. This is + generally only useful if your initramfs uses the 'fsck' hook. + +*root=*'rootdevice':: + This variable describes the root partition which early init will mount + before passing control to the real init. mkinitcpio understands a variety of + formats, the most basic of which is the path to the block device, either + directly such as '/dev/sda2', or using a udev symlink such as + '/dev/disk/by-label/CorsairF80-root'. Support for identification by LABEL or + UUID tags are also supported, such as, 'LABEL=CorsairF80-root'. As of + util-linux 2.22, PARTUUID is also supported. Identification via hex encoded + major/minor device ID is supported for legacy reasons, but should not be used. + +*rootdelay=*'seconds':: + Sets the delay, in seconds, that mkinitcpio is willing to wait for the root + device to show up, if it is not available immediately. This defaults to 5 + seconds. If an invalid integer is passed, this variable will have no effect. + +These are only the variables that the core of mkinitcpio honor. Additional +hooks may look for other environment variables and should be documented by the +help output for the hook. + +Files +----- +'/etc/mkinitcpio.conf':: + Default configuration file for mkinitcpio. + +'/etc/mkinitcpio.d':: + Folder containing mkinitcpio presets. + +'/usr/lib/initcpio/install':: +'/lib/initcpio/install':: + Search path for build time hooks. + +'/usr/lib/initcpio/hooks':: +'/lib/initcpio/hooks':: + Search path for early userspace runtime hooks. + +Examples +-------- +*mkinitcpio*:: + Perform a 'dry-run'. This will generate an initial ramdisk but will not + write anything. Use -g to create the real image. + +*mkinitcpio -p linux*:: + Create an initial ramdisk based on the 'linux' preset. + +*mkinitcpio -g /boot/initramfs-linux.img -k /boot/vmlinuz-linux*:: + Create an initial ramdisk for the kernel at /boot/vmlinuz-linux. The + resulting image will be written to /boot/initramfs-linux.img. + +See also +-------- +A more thorough article on configuring mkinitcpio: +<http://wiki.archlinux.org/index.php/Mkinitcpio> + +*initrd*(4), *lsinitcpio*(1), *mkinitcpio.conf*(5) + +Bugs +---- +Upon writing this manpage, there were no noticeable bugs present. Please visit +<http://bugs.archlinux.org/> for an up to date list. + +Authors +------- +mkinitcpio is created and maintained by the Arch Linux Developer community. + +Copyright +--------- +Copyright (c) Arch Linux 2006-2012 |