精通init ramfs构建step by step (五)
十七、配置内核支持initrd 到目前为止,我们的init ramfs都由内核编译系统生成的,并链接到内核中.其实我们也可以用cpio命令生成单独的init ramfs,与内核编译脱钩,在内核运行时以initrd的形式加载到内核,以增加灵活性. 配置内核使用单独的initrd:在 Device Driver / Block device / 配置目录下,选择 RAM filesystem and RAMdisk ( init ramfs/initrd ) support 配置项;再到 General Setup 配置目录项下,将 init ramfs source file(s) 配置项原有的内容清空.然后把内核源码树的usr目录下已由内核编译生成的init ramfs文件initramfs_data.cpio.gz拷贝到 ~/initramfs-test 目录下,我们先直接用这个文件试验一下 initrd 方式的init ramfs的效果.,执行make命令重新编译内核后,在QEMU试验环境中,把initrd配置框(linux配置框的下面)的内容写为 ~/init ramfs-test/init ramfs_data.cpio.gz,指定initrd的文件路径. 好了,试验一下新的initrd方式的init ramfs吧,效果跟先前的完全一样. 十八、用cpio命令生成init ramfs cpio命令有三种操作模式:copy-out、copy-in、copy-pass,生成init ramfs用的是它的copy-out模式,即把文件打包的操作模式.cpio的copy-out操作模式使用 -o 命令行选项指定.缺省情况下,cpio从标准输入读取输入数据,向标准输出写入输出数据.使用 -I 选项可以指定文件名代替标准输入,使用 -O 选项可以指定文件名代替标准输出,而 -F 选项指定的文件名则根据cpio操作模式的不同可代替标准输入或标准输出. 把~/init ramfs-test/image目录下的文件打包成init ramfs,执行下面的命令: find . | cpio -o -H newc | gzip > ../image.cpio.gz 命令执行完毕后,在~/init ramfs-test目录下就会生成文件名为imgae.cpio.gz的init ramfs. 上面cpio命令的 -H 选项指定打包文件的具体格式,要生成init ramfs,只能用newc 格式,如果使用其他格式,内核会打出这样的出错信息:Unpacking init ramfs...<0> kernel panic - not syncing: no cpio magic 在QEMU试验环境下试验一下新的initrd方式的init ramfs,效果跟先前的完全一样. 十九、cpio命令的其他用法 如果我们要解开一个cpio格式的打包文件,则要使用cpio命令的copy-in操作模式.cpio的copy-out操作模式使用 -i 命令行选项指定.例如,我们想把前一步从内核源码树 usr目录下拷贝的init ramfs_data.cpio.gz 展开到~/init ramfs-test/init ramfs_data目录下,则使用下列命令: mkdir ~/init ramfs-test/init ramfs_data cd ~/init ramfs-test/init ramfs_data cpio -i -F ../init ramfs_data.cpio.gz --no-absolute-filename 命令执行完毕后,init ramfs_data目录下出现多个目录和文件,用diff命令比较init ramfs_data与image目录,两者的完全一样. 上面cpio命令的 --no-absolute-filename 选项的作用是展开文件时,去掉文件路径最前面的"/",把绝对路径名变为相对路径名.内核编译时生成的init ramfs使用了绝对路径名,这个选项使用,否则init ramfs内文件展开到"/"目录去了,如果你是root用户或有"/"目录的写权限,那么展开的文件就有可能覆盖同名的文件(在文件修改时间新于原有文件),那就糟糕了! zcat ini tramfs_data.cpio.gz | cpio -t 在标准输出中打出文件名列表. 使用 -v 选项可以在cpio命令执行时输出详细信息:在打包或展开文件时,输出已处理的文件名;与 -t 选项连用时,则显示文件的详细信息,类似 ls -l 的输出内容.-V 选项则用打点的方式,显示cpio命令的执行进度信息,一个点代表处理一个文件.
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |