免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 885 | 回复: 0
打印 上一主题 下一主题

精通initramfs构建step by step (九):内核编译时构建initramfs补遗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-09 17:32 |只看该作者 |倒序浏览

精通initramfs构建step by step (九):内核编译时构建initramfs补遗
二十七、直接把cpio打包文件编译进内核
如果我们有一个已经做好的cpio格式的initramfs,可以在内核编译时直接编译进内核。回忆一下
第一节
的内容,我们在内核配置参数中的initramfs sources配置项下输入构建initramfs的目录路径。其实我们也可以直接输出现成的initramfs的文件名,这样在内核编译时,就可以把它编译进内核了。
使用这种方法,有两点需要注意:
(1)cpio文件不能压缩。一般作为initrd的cpio文件都经过了压缩,所以编译前需要先把压缩过的文件解压。
(2)cpio文件的后缀名必须是 .cpio。内核编译通过 .cpio的后缀名来识别此文件是cpio打包文件,而其他文件后缀名则会被认为是initramfs构建的描述文件(关于描述文件,下面后详细说明)。
二十八、用描述文件构建initramfs
用内核编译工具构建initramfs的第三种方法是使用描述文件。在内核配置参数中的initramfs sources配置项下可以输入initramfs构建描述文件的文件名,内核编译工具根据描述文件完成initramfs的构建。
描述文件的语法格式的说明如下:
# a comment
file     
dir   
nod      
slink     
pipe   
sock   


     name of the file/dir/nod/etc in the archive
location of the file in the current filesystem
   link target
     mode/permissions of the file
     user id (0=root)
     group id (0=root)
device type (b=block, c=character)
     major number of nod
     minor number of nod

例子:
我们用描述文件的方式,构建第一节中的hello world的initramfs。
hello-init.desp:
dir /dev 0755 0 0
nod /dev/console 0600 0 0 c 5 1
file /init /home/wyk/initramfs-test/hello_static 0755 0 0

在内核配置项initramfs sources中指定描述文件hello-init.desp,编译内核时就会生成hello world的initramfs,运行效果与第一节用指定构建目录的方法构建的initramfs的完全相同。
注意:在内核帮助文件中,提到initramfs sources配置项可以指定多个目录或描述文件,内核会汇集这些目录或文件生成一个initramfs。但从我的试验来看,initramfs sources只接受单一的目录名或文件名,输出多个目录名或文件名(之间用空格分隔),内核编译时就会出错。也许是我的方法有误,还望读者指正。
---下节预告---前面编译busybox时,都是连接到了glibc库。但是glibc库比较大,而且busybox不能静态连接(有资料讲可以通过修改busybox源码来静态连接glibc),在initramfs容量受限或需要静态连接的情况下,使用uclibc库可能是个很好的选择。在initramfs中如何使用uclibc库,这就需要看看下一个step:
精通initramfs构建step by step (十):uclibc


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/63991/showart_1856684.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP