这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
jaysnote:ramfs_rootfs_initramfs [2018/11/16 22:46] jaylee |
jaysnote:ramfs_rootfs_initramfs [2018/11/19 15:18] jaylee |
||
---|---|---|---|
行 49: | 行 49: | ||
- The old initrd was always a separate file, while the initramfs archive is linked into the linux kernel image. | - The old initrd was always a separate file, while the initramfs archive is linked into the linux kernel image. | ||
- | - The old initrd file was a gzipped filesystem image (in some file format, such as ext2, that needed a driver built into the kernel), while the new initramfs archive is a gzipped cpio archive (like tar only simpler, see cpio(1) and Documentation/ | + | - The old initrd file was a gzipped filesystem image (in some file format,such as ext2, that needed a driver built into the kernel), while the new initramfs archive is a gzipped cpio archive (like tar only simpler,see cpio(1) and `Documentation/ |
- The program run by the old initrd (which was called /initrd, not /init) did some setup and then returned to the kernel, while the init program from initramfs is not expected to return to the kernel. | - The program run by the old initrd (which was called /initrd, not /init) did some setup and then returned to the kernel, while the init program from initramfs is not expected to return to the kernel. | ||
行 61: | 行 61: | ||
The 2.6 kernel build process always creates a gzipped cpio format initramfs archive and links it into the resulting kernel binary. | The 2.6 kernel build process always creates a gzipped cpio format initramfs archive and links it into the resulting kernel binary. | ||
- | The config option CONFIG_INITRAMFS_SOURCE (in General Setup in menuconfig, | + | The config option |
- | and living in usr/ | + | |
```bash | ```bash | ||
行 77: | 行 76: | ||
``` | ``` | ||
- | Run " | + | Run `" |
- | One advantage of the configuration file is that root access is not required to set permissions or create device nodes in the new archive. | + | One advantage of the configuration file is that root access is not required to set permissions or create device nodes in the new archive. |
- | The kernel does not depend on external cpio tools. | + | The kernel does not depend on external cpio tools. |
- | (obviously) self-contained. | + | |
- | The one thing you might need external cpio utilities installed for is creating or extracting your own preprepared cpio files to feed to the kernel build | + | The one thing you might need external cpio utilities installed for is creating or extracting your own preprepared cpio files to feed to the kernel build (instead of a config file or directory). |
- | (instead of a config file or directory). | + | |
The following command line can extract a cpio image (either by the above script or by the kernel build) back into its component files: | The following command line can extract a cpio image (either by the above script or by the kernel build) back into its component files: | ||
行 115: | 行 112: | ||
``` | ``` | ||
- | Note: The cpio man page contains some bad advice that will break your initramfs archive if you follow it. It says "A typical way to generate the list of filenames is with the find command; you should give find the -depth option to minimize problems with permissions on directories that are unwritable or not searchable." | + | > **Note:** The cpio man page contains some bad advice that will break your initramfs archive if you follow it. It says "A typical way to generate the list of filenames is with the find command; you should give find the -depth option to minimize problems with permissions on directories that are unwritable or not searchable." |
External initramfs images: | External initramfs images: | ||
行 125: | 行 122: | ||
It can also be used to supplement the kernel' | It can also be used to supplement the kernel' | ||
- | |||
- | ## External initramfs images: | ||
- | |||
- | If the kernel has initrd support enabled, an external cpio.gz archive can also be passed into a 2.6 kernel in place of an initrd. | ||
- | |||
- | This has the memory efficiency advantages of initramfs (no ramdisk block device) but the separate packaging of initrd (which is nice if you have non-GPL code you'd like to run from initramfs, without conflating it with the GPL licensed Linux kernel binary). | ||
- | |||
- | It can also be used to supplement the kernel' | ||
## Contents of initramfs: | ## Contents of initramfs: | ||
行 159: | 行 148: | ||
include < | include < | ||
- | |||
include < | include < | ||
行 218: | 行 206: | ||
"early userspace" | "early userspace" | ||
- | The move to early userspace is necessary because finding and mounting the real root device is complex. | + | The move to early userspace is necessary because finding and mounting the real root device is complex. |
- | and so on. | + | |
This kind of complexity (which inevitably includes policy) is rightly handled in userspace. | This kind of complexity (which inevitably includes policy) is rightly handled in userspace. |