打印
[嵌入式linux]

关于利用busybox制作ramdisk文件系统的疑问

[复制链接]
3062|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renwoxing2|  楼主 | 2007-12-14 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想自己用busybox制作一个ramdisk文件系统,参考了网上好多资料,可就是不成功,下到目标机老是出现如下错误: @"b]L  
VFS: Mounted root (ext2 filesystem). Eyw-U$*<T  
Mounted devfs on /dev q-M(=qGPp  
Freeing init memory: 56K {Ji)H?p  
attempt to access beyond end of device X|DUjyuO!n  
01:00: rw=0, want=1647259183, limit=4096 {R>3TfPdL  
attempt to access beyond end of device %$4k<x&Q  
01:00: rw=0, want=1647259183, limit=4096 w~G]F+])y5  
attempt to access beyond end of device vezKpU  
01:00: rw=0, want=2037609827, limit=4096 e||x6wF#>  
attempt to access beyond end of device FI M+M.B  
01:00: rw=0, want=2037609827, limit=4096 6(X A$#(  
Kernel panic: No init found.  Try passing init= option to kernel. l+:%o  
X1a1cECfQ  
还请高手指点迷津,不胜感激!!
同时,在制作文件系统时,可不可以在原文件系统的基础上简单地替换原文件系统的bin sbin linuxrc,我试过但不成功,不知是不是我的方法不对。请教拉,在线跪求高手解答,谢谢
从网上所查资料来看,直接在原文件系统下替换bin sbin linuxrc是可以的,但我的总是不行。我是这样操作的: i+O@y%  
/*在原文件系统根目录下 */ /+X:,bz+)  
gunzip  fs.gz    ?5;_:yx?=  
mount -o loop  fs /mnt  KE.u%*/E(  
cd /mnt  1{Y#[U]T  
cp -a /work/busybox/_install/*  /mnt  /*替换原有的bin sbin linuxrc */  ?9 g qv!  
umount /mnt  W+E`zi/0  
/*到fs根目录下执行 */ /4EJv9V  
gzip -v9 fs `lyp.5u  
整个过程就是这样,按理应该是可以的,但结果就是不行。而当我把替换了 bin sbin linuxrc 的原文件系统换回之前的 sbin bin linuxrc后,结果也是不行,还请高手解惑,谢谢

相关帖子

沙发
stonezju| | 2007-12-17 15:41 | 只看该作者

这是我参考的

ramdisk 制作全过程

1 建立根文件系统结构 

#mkdir rootfs

#cd rootfs 

#mkdir bin dev etc lib proc sbin tmp usr var 

#chmod 1777 tmp 

#mkdir usr/bin usr/lib usr/sbin 

#mkdir var/lib var/lock var/log var/run var/tmp 

#chmod 1777 var/tmp 


2 准备链接库 

#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 


3 使用busybox制作系统应用程序
3.1 下载busybox(http://www.busybox.net/)并解压。
3.2 进入解压后的目录,配置Busybox
$make menuconfig
Busybox Settings >
General Configuration >
  •  Support for devfs
    Build Options >
  •  Build BusyBox as a static binary (no shared libs)
    /* 将busybox编译为静态连接,少了启动时找动态库的麻烦 */
  •  Do you want to build BusyBox with a Cross Compiler?
    (/usr/local/arm/3.3.2/bin/armlinux)
    Cross Compiler prefix/* 指定交叉编译工具路径 */
    Init Utilities >
  •  init
  •  Support reading an inittab file
    /* 支持init读取/etc/inittab配置文件,一定要选上 */
    Shells >
    Choose your default shell (ash) >
    /* (X) ash 选中ash,这样生成的时候才会生成bin/sh文件
    * 看看我们前头的linuxrc脚本的头一句:
    * #!/bin/sh 是由bin/sh来解释执行的
    */
  •  ash
    Coreutils >
  •  cp
  •  cat
  •  ls
  •  mkdir
  •  echo (basic SuSv3 version taking no options)
  •  env
  •  mv
  •  pwd
  •  rm
  •  touch
    Editors >
  •  vi
    Linux System Utilities >
  •  mount
  •  umount
  •  Support loopback mounts
  •  Support for the old /etc/mtab file
    Networking Utilities >
  •  inetd
    /*
    * 支持inetd超级服务器

    */
    3.3 编译并安装Busybox
    $make TARGET_ARCH=arm CROSS=armlinux
    PREFIX=/home/arm/dev_home/rootfs/my_rootfs/ all install
    PREFIX指明安装路径:就是我们根文件系统所在路径。

    4 准备所需的设备文件

    可以直接拷贝宿主机上的,或者自建几个就是。

    #cd rootfs/dev 

    #mknod -m 600 console c 5 1

    5 创建linuxrc文件
    内容如下:
    $ vim rootfs/linuxrc
    #!/bin/sh
    echo "Hello linux ,gggggg"

    exec /sbin/init
    然后修改权限:chmod 775 linuxrc

    6 制作initrd映象文件 

    #mkdir initrd 

    #dd if=/dev/zero of=initrd.img bs=1k count=8192 

    #/sbin/mke2fs -F -v -m0 initrd.img 

    #mount -o loop initrd.img initrd 

    #cp -av rootfs/* initrd 

    #umount 

    #gzip -9 initrd.img







    这是我我参考的,没问题的,如果你按着这个步骤来的话。我刚刚做了一个。

    但我现在无法  mount NFS ,正在寻找问题当中。
  • 使用特权

    评论回复
    板凳
    netboy_feng| | 2007-12-27 16:26 | 只看该作者

    乱码很多啊

    有个问题很关键,在编译kernel的时候init的option你有没有写进去

    使用特权

    评论回复
    发新帖 我要提问
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    15

    主题

    39

    帖子

    0

    粉丝