Visit The New, Modern Unix Linux Community

Linux and UNIX Man Pages

Test Your Knowledge in Computers #979
Difficulty: Medium
macOS is based on the Unix operating system and on technologies developed between 1985 and 1997 at NeXT.
True or False?
Linux & Unix Commands - Search Man Pages

mkinitrd(8) [mojave man page]

MKINITRD(8)                                                        User Manuals                                                        MKINITRD(8)

NAME
mkinitrd - create initrd disk image SYNOPSIS
mkinitrd [options] [root_dir] DESCRIPTION
mkinitrd creates initial ramdisk images for booting Linux. The "/init" script in the compressed cpio archive loads all driver modules, creates all device nodes currently known by the kernel, initializes vital subsystems (e.g. networking when doing nfs), does a filesystem check on the root filesystem and finally passes control to /sbin/init. udev is used to create the device nodes in a tmpfs mounted /dev directory. This directory is moved over to the final root filesystem, essentially hiding the on-disk content below /dev on the root filesystem. A few options can be specified via the kernel command line to modify some hardcoded values in the "/init" script. They are read from /proc/cmdline. While in the old days the Linux kernel was responsible for mounting the rootfilesystem and running /sbin/init, all the work is now done by the "/init" script. OPTIONS
-h Shows help output and exits. -R Prints the version and exits. We use -R (release) because -v (verbose) and -V (vendor scripts) are already taken. -k kernel_list List of kernel images for which initrd files are created (relative to boot_dir), defaults to vmlinux on ppc/ppc64, image on s390/s390x and vmlinuz for everything else. -i initrd_list List of file names (relative to boot_dir) for the initrd; positions have to match the kernel_list, defaults to initrd. -m module_list Modules to include in initrd, defaults to INITRD_MODULES variable in /etc/sysconfig/kernel. -f feature_list Features to be enabled for the initrd. In general mkinitrd configures the initrd for the root device it is started from. With this option additional feature can be enabled. -b bootdir Boot directory, defaults to /boot, where the initrd is created. -d root_device Root device, defaults to the device from which the root_dir is mounted; overwrites the rootdev enviroment variable if set -s size Add splash animation and bootscreen to initrd. -D interface Run dhcp on the specified interface (for example "eth0"). It's also possible to specify "default" here if the default interface should be used. If there's a file /etc/install.inf (which is from the installation system), then the interface that was used for installation is used as default interface. Otherwise, if NFS root is used and one of the network configuration files in /etc/sysconfig/network contain the option STARTMODE=nfsroot, than this interface is used as default. Finally, the interface which is used for the default route (in the output of /sbin/route is used as default interface in the initrd. -I interface Configure the specified interface statically. -a acpi_dsdt Attach compiled ACPI DSDT (Differentiated System Description Table) to initrd. This replaces the DSDT of the BIOS. Defaults to the ACPI_DSDT variable in /etc/sysconfig/kernel. -e Use static binaries where possible. (currently unavailable) -P Include modules for all IDE devices on the PCI bus. -V script Vendor specific script to run in linuxrc. -M map System.map file to use. -j device External journal device to use for the root filesystem. -l directory Directory to use for mkinitrd files instead of /lib/mkinitrd. -B Don't run the update-bootloader(8) script after the initrd(s) have been created. This is useful if you call mkinitrd(8) not for the running system but for example in a spec file to pre-generate an initrd or to generate a special kdump initrd (which mkdumprd(8) does). -A Create a so called "monster initrd" which includes all available features and modules. -S Do not include all libata modules by default. -v Verbose mode. Prints more information to standard error. By default the information that would be printed in verbose mode is also appended to the log file /var/log/YaST2/mkinitrd.log, so it's not necessary to re-run mkinitrd with the -v option to create bug reports. -L Disable logging to /var/log/YaST2/mkinitrd.log. This is useful for testing if you don't want to clutter the system log. root_dir The directory the root partition is mounted to defaults to "/". KERNEL COMMAND-LINE PARAMETERS mkinitrd implements a set of additional kernel command-line parameters which are interpreted by the generated init script. In addition to the standard kernel parameters the following parameters are supported: linuxrc=trace Enabling command tracing of the init script shell=1 Execute a shell after the linuxrc has finished and before the normal system is booted. Useful for debugging. noresume Do not check for a resume device sysrq=yes | sysrq=1-9 Enable sysrq. If a numeric value is specified, the log level of the console will be set to that value. *resume=*device Resume from device device. *journal=*device Use device device as external journal device. This is only valid for reiser and xfs filesystems. *mduuid=*UUID Mount md RAID with uuid UUID as the root filesystem. TargetAddress=IP_Address [iSCSI] IP Address of the iSCSI Target InitiatorName=iqn. [iSCSI] Use iqn as the iSCIS initiatorname. *ip=*ipspec Use ipspec to configure the network interface. Format of the ipspec is client:server:gateway:netmask:hostname:device:proto. client, server, gateway, netmask are in the standard dotted-decimal IP notation. proto is currently ignored. *udev_timeout=*secs Set the timeout for root device detection to secs seconds. Default is 10. FEATURES
Normally mkinitrd detects all required features automatically, based upon the current root, resume, dump and journal device. If additional features should be enabled, the -f option can be specified. Of course you can write your own features as well. Just take a look at /lib/mkinitrd. Currently, the following features can be selected (if a feature is available depends on the installed packages): block Include support for block devices (SCSI and IDE) busybox Replace and add all tools known as safe with the busybox versions dasd Include support for dasd storage devices (s390) dmraid Include support for Software-Raid over device mapper (known as Fake-Raid) dm Include support for device mapper in general firewire Include firewire storage ifup Include all network devices configured via ifup. The user should ensure to set the STARTMODE to onboot in the corresponding ifcfg files. iscsi Include iSCSI support kpartx Include support for kpartx partitioning. Always use this if you have device mapper devices. luks Include encryption support using luks lvm2 Include support for LVM2 md Include support for Software RAID (md) multipath Include support for multipathing netconsole Include support for debugging using netconsole network Include networking support nfs Include support for nfs(-root) resume.kernel Include resume support using the kernel resume code resume.userspace Include resume support using the userspace program usb Include USB-support (keyboard and storage) vendor Include vendor script support zfcp Include support for zfcp storage devices (s390) USING NFS AS ROOT FILESYSTEM
To configure an initrd for an NFS client, specify these options to add nfs and network driver support into the initrd: mkinitrd -f nfs -D eth0 This will add the required kernel modules and a dhcp client to the initrd, which will try to get an IP address via eth0. Boot the NFS client with these additional command line options to mount the server: nfsroot=1.2.3.4:/exported/directory. mkinitrd -f nfs -I eth0 This will add the required kernel modules to the initrd, a static IP address must be specified on the kernel cmdline. Boot the NFS client with the nfsroot parameter as specified above to mount the server and the additional parameter ip=1.2.3.42:1.2.3.4:1.2.3.1:255.255.255.0:hostname:eth0:none to configure the network interface. See the ip= description above for details about the ip= option. mkinitrd Due to the new autodetection in mkinitrd it should suffice if the /-entry in /etc/fstab is an nfs target. The network device which will be used should have STARTMODE set to nfsroot. RECOVERY
What should you do if the initrd is broken and you want to fix it using a chroot? I assume /mnt is your target root and /boot is mounted inside. 1. mount --bind /dev /mnt/dev 2. chroot /mnt 3. mount /proc 4. mount /sys 5. mkinitrd FILES
/var/log/YaST2/mkinitrd.log The log file of this program. Always attach that log file in Bugzilla if something goes wrong. It's also included in the usual YaST logs that are created with save_y2logs(8). ENVIRONMENT VARIABLES
You can specify the root device via the environment variable rootdev (e.g. "rootdev=/dev/hda mkinitrd"). Also, the temporary directory which is used to build the initrd can be specified using the TMPDIR environment. If not set, /dev/shm is used as root (when it's writable) and /tmp otherwise. AUTHORS
Steffen Winterfeldt <snwint@suse.de>, Susanne Oberhauser <froh@suse.de>, Andreas Grunbacher <agruen@suse.de>, Hannes Reinecke <hare@suse.de>, Alexander Graf <agraf@suse.de>, Bernhard Walle <bwalle@suse.de> SEE ALSO
mkinitrd(8), mkinitrd(5) mkinitrd 07/05/2010 MKINITRD(8)

Featured Tech Videos