summaryrefslogtreecommitdiffstats
path: root/man4/initrd.4
diff options
context:
space:
mode:
Diffstat (limited to 'man4/initrd.4')
-rw-r--r--man4/initrd.4422
1 files changed, 422 insertions, 0 deletions
diff --git a/man4/initrd.4 b/man4/initrd.4
new file mode 100644
index 000000000..bc1d3b069
--- /dev/null
+++ b/man4/initrd.4
@@ -0,0 +1,422 @@
+.\" -*- nroff -*-
+.\" This man-page is Copyright (C) 1997 John S. Kallal
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and author(s) of this work.
+.\"
+.\" If the you wish to distribute versions of this work under other
+.\" conditions than the above, please contact the author(s) at the following
+.\" for permission:
+.\"
+.\" John S. Kallal -
+.\" email: <kallal@voicenet.com>
+.\" mail: 518 Kerfoot Farm RD, Wilmington, DE 19803-2444, USA
+.\" phone: (302)654-5478
+.\"
+.\" $Id: initrd.4,v 0.9 1997/11/07 05:05:32 kallal Exp kallal $
+.TH INITRD 4 1997-11-06 "Linux 2.0" "Linux Programmer's Manual"
+.SH NAME
+initrd \- boot loader initialized RAM disk
+.\"
+.\"
+.\"
+.SH DESCRIPTION
+The special file
+.B /dev/initrd
+is a read-only block device.
+Device
+.B /dev/initrd
+is a RAM disk that is initialized (e.g. loaded) by the boot loader before
+the kernel is started.
+The kernel then can use the the block device
+.BR /dev/initrd "'s "
+contents for a two phased system boot-up.
+.PP
+In the first boot-up phase, the kernel starts up
+and mounts an initial root file-system from the contents
+of
+.B /dev/initrd
+(e.g. RAM disk initialized by the boot loader).
+In the second phase, additional drivers or other modules
+are loaded from the initial root device's contents.
+After loading the additional modules, a new root file system
+(i.e. the normal root file system) is mounted from a
+different device.
+.\"
+.\"
+.\"
+.SH "BOOT-UP OPERATION"
+When booting up with
+.BR initrd ", the system boots as follows:"
+.RS 0.2i
+.PP
+1. The boot loader loads the kernel program and
+.BR /dev/initrd "'s contents into memory."
+.PP
+2. On kernel startup, the kernel uncompresses and copies the contents of the device
+.B /dev/initrd
+onto device
+.B /dev/ram0
+and then frees the memory used by
+.BR /dev/initrd "."
+.PP
+3. The kernel then read-write mounts device
+.B /dev/ram0
+as the initial root file system.
+.PP
+4. If the indicated normal root file system is also the initial root file-system
+(e.g.
+.B /dev/ram0
+) then the kernel skips to the last step for the usual boot sequence.
+.PP
+5. If the executable file
+.BR /linuxrc " is present in the initial root file-system, " /linuxrc
+is executed with uid 0.
+(The file
+.B /linuxrc
+must have executable permission.
+The file
+.B /linuxrc
+can be any valid executable, including a shell script.)
+.PP
+6. If
+.B /linuxrc
+is not executed or when
+.B /linuxrc
+terminates, the normal root file system is mounted.
+(If
+.BR /linuxrc
+exits with any file-systems mounted on the initial root
+file-system, then the behavior of the kernel is
+.BR UNSPECIFIED "."
+See the
+.BR NOTES
+section for the current kernel behavior.)
+.PP
+7. If the normal root file has directory
+.BR /initrd ", device"
+.B /dev/ram0
+is moved from
+.BR / " to " /initrd "."
+Otherwise if directory
+.BR /initrd " does not exist device " /dev/ram0 " is unmounted."
+(When moved from
+.BR / " to " /initrd ", " /dev/ram0
+is not unmounted and therefore processes can remain running from
+.BR /dev/ram0 "."
+If directory
+.BR /initrd
+does not exist on the normal root file-system
+and any processes remain running from
+.BR /dev/ram0 " when " /linuxrc
+exits, the behavior of the kernel is
+.BR UNSPECIFIED "."
+See the
+.BR NOTES
+section for the current kernel behavior.)
+.PP
+8. The usual boot sequence (e.g. invocation of
+.BR /sbin/init ") is performed on the normal root file system."
+.\"
+.\"
+.\"
+.SH OPTIONS
+The following boot loader options when used with
+.BR initrd ", affect the kernel's boot-up operation:"
+.TP
+.BI initrd= "filename"
+Specifies the file to load as the contents of
+.BR /dev/initrd "."
+.RB "For " LOADLIN
+this is a command line option.
+.RB "For " LILO " you have to use this command in the
+.BR LILO " configuration file " /etc/lilo.config "."
+The filename specified with this
+option will typically be a gzipped file-system image.
+.TP
+.B noinitrd
+This boot time option disables the two phase boot-up operation.
+The kernel performs the usual boot sequence as if
+.B /dev/initrd
+was not initialized.
+With this option, any contents of
+.B /dev/initrd
+loaded into memory by the boot loader contents are preserved.
+This option permits the contents of
+.B /dev/initrd
+to be any data and need not be limited to a file system image.
+However, device
+.B /dev/initrd
+is read-only and can be read only one time after system startup.
+.TP
+.BI root= "device-name"
+Specifies the device to be used as the normal root file system.
+.RB "For " LOADLIN
+this is a command line option.
+.RB "For " LILO " this is a boot time option or
+can be used as an option line in the
+.BR LILO " configuration file " /etc/lilo.config "."
+The device specified by the this option must be a mountable
+device having a suitable root file-system.
+.\"
+.\"
+.\"
+.SH "CHANGING THE NORMAL ROOT FILE SYSTEM"
+By default,
+the kernel's settings
+(e.g. set in the kernel file with
+.B rdev
+or compiled into the kernel file),
+or the boot loader option setting
+is used for the normal root file systems.
+For a NFS-mounted normal root file system, one has to use the
+.BR nfs_root_name " and " nfs_root_addrs
+boot options to give the NFS settings.
+For more information on NFS-mounted root see the kernel documentation file
+.BR nfsroot.txt "."
+For more information on setting the root file system also see the
+.BR LILO " and " LOADLIN " documentation."
+.PP
+It is also possible for the
+.BR /linuxrc
+executable to change the normal root device.
+For
+.BR /linuxrc
+to change the normal root device,
+.BR /proc " must be mounted."
+After mounting
+.BR /proc ", " /linuxrc
+changes the normal root device by writing into the proc files
+.BR /proc/sys/kernel/real-root-dev ", "
+.BR /proc/sys/kernel/nfs-root-name ", and "
+.BR /proc/sys/kernel/nfs-root-addrs "."
+For a physical root device, the root device is changed by having
+.BR /linuxrc
+write the new root file system device number into
+.BR /proc/sys/kernel/real-root-dev "."
+For a NFS root file system, the root device is changed by having
+.BR /linuxrc
+write the NFS setting into files
+.BR /proc/sys/kernel/nfs-root-name " and "
+.BR /proc/sys/kernel/nfs-root-addrs
+and then writing 0xff (e.g. the pseudo-NFS-device number) into file
+.BR /proc/sys/kernel/real-root-dev "."
+For example, the following shell command line would change
+the normal root device to
+.BR /dev/hdb1 :
+.nf
+ echo 0x365 >/proc/sys/kernel/real-root-dev
+.fi
+For a NFS example, the following shell command lines would change the
+normal root device to the NFS directory
+.BR /var/nfsroot
+on a local networked NFS server with IP number 193.8.232.7 for a system with
+IP number 193.8.232.7 and named 'idefix':
+.nf
+ echo /var/nfsroot >/proc/sys/kernel/nfs-root-name
+ echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \\
+ >/proc/sys/kernel/nfs-root-addrs
+ echo 255 >/proc/sys/kernel/real-root-dev
+.fi
+.\"
+.\"
+.\"
+.SH USAGE
+The main motivation for implementing
+.BR initrd
+was to allow for modular kernel configuration at system installation.
+.PP
+A possible system installation scenario is as follows:
+.RS 0.2i
+.PP
+1. The loader program boots from floppy or other media with a minimal kernel
+(e.g. support for
+.BR /dev/ram ", " /dev/initrd ", and the ext2 file-system) and loads "
+.BR /dev/initrd " with a gzipped version of the initial file-system.
+.PP
+2. The executable
+.BR /linuxrc
+determines what is needed to (1) mount the normal root file-system
+(i.e. device type, device drivers, file system) and (2) the
+distribution media (e.g. CD-ROM, network, tape, ...). This can be
+done by asking the user, by auto-probing, or by using a hybrid
+approach.
+.PP
+3. The executable
+.BR /linuxrc
+loads the necessary modules from the initial root file-system.
+.PP
+4. The executable
+.BR /linuxrc
+creates and populates the root file system. (At this stage the normal
+root file system does not have to be a
+completed system yet.)
+.PP
+5. The executable
+.BR /linuxrc " sets " /proc/sys/kernel/real-root-dev,
+unmount
+.BR /proc ", "
+the normal root file system and any other file
+systems it has mounted, and then terminates.
+.PP
+6. The kernel then mounts the normal root file system.
+.PP
+7. Now that the file system is accessible and intact,
+the boot loader can be installed.
+.PP
+8. The boot loader is configured to load into
+.BR /dev/initrd
+a file system with the set of modules that was used to bring up the system.
+(e.g. Device
+.BR /dev/ram0
+can be modified, then unmounted, and finally, the image is written from
+.BR /dev/ram0
+to a file.)
+.PP
+9. The system is now bootable and additional installation tasks can be
+performed.
+.RE
+.PP
+The key role of
+.BR /dev/initrd
+in the above is to re-use the configuration data during normal system operation
+without requiring initial kernel selection, a large generic kernel or,
+recompiling the kernel.
+.PP
+A second scenario is for installations where Linux runs on systems with
+different hardware configurations in a single administrative network.
+In such cases, it may be desirable to use only a small set of kernels
+(ideally only one) and to keep the system-specific part of configuration
+information as small as possible.
+In this case, create a common file
+with all needed modules.
+Then, only the the
+.B /linuxrc
+file or a file executed by
+.B /linuxrc
+would be different.
+.PP
+A third scenario is more convenient recovery disks.
+Because information like the location of the root file-system
+partition is not needed at boot time, the system loaded from
+.B /dev/initrd
+can use a dialog and/or auto-detection followed by a
+possible sanity check.
+.PP
+Last but not least, Linux distributions on CD-ROM may use
+.BR initrd
+for easy installation from the CD-ROM.
+The distribution can use
+.BR LOADLIN
+to directly load
+.BR /dev/initrd
+from CD-ROM without the need of any floppies.
+The distribution could also use a
+.BR LILO
+boot floppy and then bootstrap a bigger ram disk via
+.BR /dev/initrd " from the CD-ROM."
+.\"
+.\"
+.\"
+.SH CONFIGURATION
+The
+.B /dev/initrd
+is a read-only block device assigned
+major number 1 and minor number 250.
+Typically
+.B /dev/initrd
+is owned by
+.B root.disk
+with mode 0400 (read access by root only).
+If the Linux system does not have
+.B /dev/initrd
+already created, it can be created with the following commands:
+.nf
+\fB
+ mknod -m 400 /dev/initrd b 1 250
+ chown root:disk /dev/initrd
+\fP
+.fi
+Also, support for both "RAM disk" and "Initial RAM disk"
+(e.g.
+.BR CONFIG_BLK_DEV_RAM=y " and " CONFIG_BLK_DEV_INITRD=y
+) support must be compiled directly into the Linux kernel to use
+.BR /dev/initrd "."
+When using
+.BR /dev/initrd ", "
+the RAM disk driver cannot be loaded as a module.
+.\"
+.\"
+.\"
+.SH FILES
+.I /dev/initrd
+.br
+.I /dev/ram0
+.br
+.I /linuxrc
+.br
+.I /initrd
+.SH "SEE ALSO"
+.BR chown (1),
+.BR mknod (1),
+.BR ram (4),
+.BR freeramdisk (8),
+.BR rdev (8)
+
+The documentation file
+.I initrd.txt
+in the kernel source package, the LILO documentation,
+the LOADLIN documentation, the SYSLINUX documentation.
+.\"
+.\"
+.\"
+.SH NOTES
+1. With the current kernel, any file systems that remain mounted when
+.BR /dev/ram0 " is moved from " / " to " /initrd
+continue to be accessible. However, the
+.BR /proc/mounts
+entries are not updated.
+.PP
+2. With the current kernel, if directory
+.BR /initrd " does not exist, then " /dev/ram0
+will NOT be fully unmounted if
+.BR /dev/ram0
+is used by any process or has any file-system mounted on it.
+If
+.BR /dev/ram0 " is NOT fully unmounted, "
+then
+.BR /dev/ram0
+will remain in memory.
+.PP
+3. Users of
+.BR /dev/initrd
+should not depend on the behavior give in the above notes.
+The behavior may change in future versions of the Linux kernel.
+.\"
+.\"
+.\"
+.SH AUTHOR
+The kernel code for device
+.BR initrd
+was written by Werner Almesberger <almesber@lrc.epfl.ch> and
+Hans Lermen <lermen@elserv.ffm.fgan.de>.
+The code for
+.BR initrd
+was added to the baseline Linux kernel in development version 1.3.73.