快速业务通道

使用busybox-1.13.3 创建Linux根文件系统(2)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-24

  8、创建一个空的mdev.conf文件,在挂载根文件系统时会用到的

  [~etc]# touch mdev.conf

  9、从本机拷贝passwd、shadow、group文件.

  [~ etc]# cp /etc/passwd .

  [~etc]# cp /etc/shadow .

  [~etc]# cp /etc/group .

  修改passwd文件,把第一行和一行的bash修改成ash.

  10、把busybox默认安装目录中的文件全部复制到这里的rootfs中.

  会发现多了linuxrc -> bin/busybox文件,这是挂载文件系.

  [~etc]# cd ..

  [~rootfs]# cp -Rfv /opt/develop/lyj/common/porting/rootfs/busybox-1.12.2/_install/* ./

  OK,以上用busybox创建了一个基本的文件系统.

  PS:

  如果编译busybox时选择动态库方式编译,则需要查看生成的busybox使用哪些动态库,然后把它们拷贝到rootfs/lib目录下.

  [~lib]# arm-linux-readelf -d ../bin/busybox

  Dynamic section at offset 0xc1014 contains 21 entries:

  Tag Type Name/Value

  0x00000001 (NEEDED) Shared library: [libm.so.6]

  0x00000001 (NEEDED) Shared library: [libc.so.6]

  0x0000000c (INIT) 0xc2ec

  0x0000000d (FINI) 0xa96b8

  0x00000004 (HASH) 0x80e8

  0x00000005 (STRTAB) 0xa4c4

  0x00000006 (SYMTAB) 0x8b64

  0x0000000a (STRSZ) 3505 (bytes)

  0x0000000b (SYMENT) 16 (bytes)

  0x00000015 (DEBUG) 0x0

  0x00000003 (PLTGOT) 0xd10e4

  0x00000002 (PLTRELSZ) 3112 (bytes)

  0x00000014 (PLTREL) REL

  0x00000017 (JMPREL) 0xb6c4

  0x00000011 (REL) 0xb674

  0x00000012 (RELSZ) 80 (bytes)

  0x00000013 (RELENT) 8 (bytes)

  0x6ffffffe (VERNEED) 0xb5a4

  0x6fffffff (VERNEEDNUM) 2

  0x6ffffff0 (VERSYM) 0xb276

  0x00000000 (NULL) 0x0

  可以看出,使用了libm.so.6和libc.so.6两个库.发现只拷贝这两个库还不够,还需要ld-linux.so.2和libgcc_s.so.1,也就是我编译出来的这个busybox需要4个动态库文件.

  # cp /opt/crosstools/gcc-3.4.6-glibc-2.3.6/lib/libm.so.6 .

  # cp /opt/crosstools/gcc-3.4.6-glibc-2.3.6/lib/libc.so.6 .

  # cp /opt/crosstools/gcc-3.4.6-glibc-2.3.6/lib/ld-linux.so.2 . 拥有帝国一切,皆有可能。欢迎访问phome.net

  # cp /opt/crosstools/gcc-3.4.6-glibc-2.3.6/lib/libgcc_s.so.1 .

  这样,使用动态库可以节省一半左右的空间,不过效率有所降低.

  准备链接库

  #cd ${OBJ_LIB}/lib (${OBJ_LIB}是交叉编译环境的目录)

  #for file in libc libcrypt libdl libm

  >libpthread libresolv libutil

  >do

  >cp $file-*.so /home/fortis/rootfs/lib

  >cp -d $file.so.[*0-9] /home/fortis/rootfs/lib

  >done

  #cp -d ld*.so* /home/fortis/rootfs/lib

  11.测试

  1)、在本机修改/etc/export文件,重启NFS服务:

  [root@vm-dev root]# vi /etc/exports

  /opt/lyj 192.168.1.*(rw,insecure,sync,no_root_squash)

  /opt/develop/lyj/common/porting/rootfs/root_stand/reset/rootfs 192.168.1.*(rw,insecure,sync,no_root_squash)

  [root@vm-dev root]# service nfs restart

  2)、在Bootloader中传递以下参数给Kernel:

  root=/dev/nfs rw nfsroot=192.168.1.152:/opt/develop/lyj/common/porting/rootfs/root_stand/reset/rootfs ip=192.168.1.155:192.168.1.152:192.168.1.254:255.255.255.0:Jacky:eth0:off console=ttySAC0,115200 init=/linuxrc noinitrd

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号