as the last process has closed it, all data is freed and /dev/initrd
can't be opened anymore.
- root=/dev/ram0
+ root=/dev/ram0 (without devfs)
+ root=/dev/rd/0 (with devfs)
initrd is mounted as root, and the normal boot procedure is followed,
with the RAM disk still mounted as root.
-Compressed cpio images
-----------------------
-
-Recent kernels have support for populating a ramdisk from a compressed cpio
-archive, on such systems, the creation of a ramdisk image doesn't need to
-involve special block devices or loopbacks, you merely create a directory on
-disk with the desired initrd content, cd to that directory, and run (as an
-example):
-
-find . | cpio --quiet -c -o | gzip -9 -n > /boot/imagefile.img
-
-Examining the contents of an existing image file is just as simple:
-
-mkdir /tmp/imagefile
-cd /tmp/imagefile
-gzip -cd /boot/imagefile.img | cpio -imd --quiet
Installation
------------
procedure should create the /initrd directory.
If initrd will not be mounted in some cases, its content is still
-accessible if the following device has been created:
+accessible if the following device has been created (note that this
+does not work if using devfs):
# mknod /dev/initrd b 1 250
# chmod 400 /dev/initrd
(if space is critical, you may want to use the Minix FS instead of Ext2)
3) mount the file system, e.g.
# mount -t ext2 -o loop initrd /mnt
- 4) create the console device:
+ 4) create the console device (not necessary if using devfs, but it can't
+ hurt to do it anyway):
# mkdir /mnt/dev
# mknod /mnt/dev/console c 5 1
5) copy all the files that are needed to properly use the initrd
root=/dev/ram0 init=/linuxrc rw
-(rw is only necessary if writing to the initrd file system.)
+if not using devfs, or
+
+ root=/dev/rd/0 init=/linuxrc rw
+
+if using devfs. (rw is only necessary if writing to the initrd file
+system.)
With LOADLIN, you simply execute
# exec chroot . what-follows <dev/console >dev/console 2>&1
Where what-follows is a program under the new root, e.g. /sbin/init
-If the new root file system will be used with udev and has no valid
-/dev directory, udev must be initialized before invoking chroot in order
-to provide /dev/console.
+If the new root file system will be used with devfs and has no valid
+/dev directory, devfs must be mounted before invoking chroot in order to
+provide /dev/console.
Note: implementation details of pivot_root may change with time. In order
to ensure compatibility, the following points should be observed:
disk can be freed:
# umount /initrd
-# blockdev --flushbufs /dev/ram0
+# blockdev --flushbufs /dev/ram0 # /dev/rd/0 if using devfs
It is also possible to use initrd with an NFS-mounted root, see the
pivot_root(8) man page for details.