Chinaunix首页 | 论坛 | 博客
  • 博客访问: 836905
  • 博文数量: 489
  • 博客积分: 475
  • 博客等级: 下士
  • 技术积分: 3087
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 16:28
文章分类

全部博文(489)

文章存档

2013年(7)

2012年(301)

2011年(181)

分类:

2011-12-22 21:01:14

原文地址:busybox下自制文件系统 作者:bingzheaaa

1, busybox config:
 busybox settings:
  General Configuration:一般不用管
  Build Options :
   Build BusyBox as a static binary (no shared libs):只做基本文件系统不需要dll
   Build shared libbusybox : 直接生成lib,一般用于二次开发
   Cross Compiler prefix : 编译器前缀
   Additional CFLAGS : 编译选项
        Debugging Options                                                       
        Installation Options ("make install" behavior) 
         What kind of applet links to install (as soft-links):注意解释了
        Busybox Library Tuning 
       
   注意:busybox生成后各种命令均为指向busybox主程序的软链接,因为如此占用空间小,各种命令分散为elf文件时,都会出现文件头等附加信息。也可以用shell script实现
    
2, copy dll
 /usr/arm-2008q3/arm-none-linux-gnueabi/libc/armv4t/lib
 arm-linux-gcc install dir
 libc.so.6
 include file and soft link
 copy to lib
 
 所需库会在busybox编译完成时提示,前加lib即可在我们的交叉编译器的lib中发现
 最后把dll的链接库ld-*也复制到lib中
3, 建立设备文件
 mknod name type major minor
 
 一般先是建立console 
4, init
 没有init时,只建立一个shell,change bootargs:init=/bin/ash 
 原来:                                                  --------
 setenv bootargs noinitrd root=/dev/nfs console=ttySAC0 init=/linuxrc nfsroot=192.168.1.20:/
 opt/nfsroot ip=192.168.1.100:192.168.1.20:192.168.1.20:255.255.255.0::eth0:on fbcon=rotate:1
 现在:                                                  --------
 setenv bootargs noinitrd root=/dev/nfs console=ttySAC0 init=/bin/ash nfsroot=192.168.1.20:/
 opt/nfsroot ip=192.168.1.100:192.168.1.20:192.168.1.20:255.255.255.0::eth0:on fbcon=rotate:1
 
 有init时:
 进程脚本
  1:2345:respawn:/sbin/mingetty tty1
  实际工作地终端:运行级别:条件:动作
  
  1, 终端:
   可以指定,亦可默认,默认是init的默认终端,而且嵌入式设备经常是不写而默认
  2, 运行级别:
   1)下面是fedora6的:
   # Default runlevel. The runlevels used by RHS are:
   #   0 - halt (Do NOT set initdefault to this)
   #   1 - Single user mode
   #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
   #   3 - Full multiuser mode
   #   4 - unused
   #   5 - X11
   #   6 - reboot (Do NOT set initdefault to this)
   #
   2)我们也可自定义:
   
   3)嵌入式设备下不写:busybox会忽略
    
  3, 条件:
   常用条件:
    sysinit:系统初始化完成
    respawn:正常进入系统 or 此条件被退出(它对应的动作结束时,此条件会再发生)
    wait:
    once:正常进入系统,但只执行此一次,与respawn相对
    askfirst:正常进入系统需要按某一键才真正进入
    ctrlaltdel:ctrl+alt+del
  
  4, 动作:
  
  注意:一般情况下某一条件下我们需要做多于一次的动作,此时需要另外的脚本
  
5, 虚拟文件系统
 nfs下的制作方法:
  1) 在开发板建立proc文件系统:
   mkdir proc
   mount -t proc proc /proc
  2) 在开发板建立sys文件系统
   mkdir sys
   mount -t sysfs sys /sys
  3) tmp fs
   mkdir tmp
   mount -t tmpfs tmp /tmp
 正常情况下:
  1) img,将文件夹格式化为特定的文件系统
   mkcramfs _install/ cramfs.img
   or
   mkjiffs
   or
   mkyaffs
  2) 烧写
   tftp c0008000 name
   nand erase 400000 400000
   nand write c0008000 400000 400000
   bootargs change:
    setenv bootargs console=ttySAC0 root=/dev/mtdblock0   
   attenton:
    address:
     特别注意烧写的地址范围,一般在/arch/arm/mach-s3c64xx/mach-real6410.c
 
 
 
 
 
 
 
 
阅读(476) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~