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
阅读(2134) | 评论(2) | 转发(4) |