Busybox编译及其yaffs2文件系制作
一、Busybox编译(版本busybox-1.13.0)
1、在环境变量中设置交叉编译器 的路径(版本cross-4.3.3)
2、[*] BuildBusybox as a static binary (no shared libs)
3、busybox settings->busybox librarytuning->username completion、fancyshell prompts
4、makemenuconfig设置CROSSCOMPILE为arm-linux-
5、install optin-->
[*] Dont use /usr 防止编译后生成的文件安装到主机的/usr目录下,改变了主机的系统
6、make install即可在_install目录下生成bin sbin usr(bin,sbin)及其linuxrc文件(该文件链接到/bin/busybox)
二、yaffs2文件系统制作
将_install目录下的文件拷贝至~/myroot文件夹下,按如下结构创建目录,并在相应目录下添加如下内容:
目录结构
/
|--bin (busybox产生)
|-- dev (设备名由mknod创建)
|--etc
| |-- init.d
|`-- sysconfig
|-- home (手工创建用户)
| |-- san (空)与passwd文件对应
| `-- sky (空)与passwd文件对应
|-- lib (从交叉编译工具路径拷贝cp -r 4.3.3/arm-none-linux-gnueabi/libc/armv4t/lib/*so*lib -a)
|-- mnt (空)
|-- proc (空)
|-- root (空)
|-- sbin (busybox产生)
|-- sys (空)
|-- tmp (空)
|-- usr (busybox产生)
||-- bin (busybox产生)
| |-- lib (busybox产生?)
| `-- sbin (busybox产生)
`-- var (空)
dev目录分析
dev
|-- cp -a /dev/console dev
cp -a /dev/null dev
cp -a /dev/ttyS0 dev
cp -a /dev/ttyS1 dev
(mknod -m 600console c 5 1,这一个没有试过)
cant open /dev/s3c2410_serial: No such file or director
/dev目录下的console没有弄好 就会出现这个问题,最简单的办法就是直接复制过来,具体的机理有待进一步研究
etc目录分析
etc
|-- fstab (指明需挂载的文件系统)
|-- group (用户组)
|-- init.d (启动文件目录)
| `-- rcS (存放系统启动时配置以及自启动加载的进程等)
|-- inittab (init进程的配置文件)
|-- passwd (密码文件)
|-- profile (用户环境配置文件)
`--sysconfig
`-- HOSTNAME (存放主机名)
#device mount-point type options dump fsckorder
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
var/dev tmpfs defaults 0 0
root:*:0:
daemon:*:1:
bin:*:2:
sys:*:3:
adm:*:4:
tty:*5:
disk:*:6:
lp:*:7:
mail:*:8:
news:*:9:
uucp:*:10:
proxy:*:13:
kmem:*:15:
dialout:*:20:
fax:*:21:
voice:*:22:
cdrom:*:24:
floopy:*:25:
tape:*:26:
sudo:*:27:
audio:*:29:
ppp:x:99:
500:x:500:sky
501:x:501:sky
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#
# Trap CTRL-C &c only in this shell sowe can interrupt subprocesse.
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev >/proc/sys/kernel/hotplug
mdev -s
mkdir -p /var/lock
/bin/hostname -F /etc/sysconfig/HOSTNAME
#/etc/inittab
::sysinit:/etc/init.d/rcS
console ::askfirst:-/bin/sh(s3c2410_serial0 ::askfirst:-/bin/sh)
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
s3c2410_serial为串口设备号,名称必须与drivers/serial/samsung.c一致,或则,系统启动时无法找到串口!!
/*注意s3c2410上串口的设备名称是/dev/s3c2410_serial[0..3]*/
$vimdrivers/serial/samsung.c
879static struct uart_driver s3c24xx_uart_drv= {
880.owner = THIS_MODULE,
881.dev_name = "s3c2410_serial",
882.nr = CONFIG_SERIAL_SAMSUNG_UARTS,
883.cons = S3C24XX_SERIAL_CONSOLE,
884.driver_name = S3C24XX_SERIAL_NAME,
885.major = S3C24XX_SERIAL_MAJOR,
886.minor = S3C24XX_SERIAL_MINOR,
887};
系统启动后
[root@Sanux /]#ls dev/s3c2410_serial*
dev/s3c2410_serial0 dev/s3c2410_serial1 dev/s3c2410_serial2
root::0:0:root:/:/bin/sh
ftp::14:50:FTP User:/var/ftp:
bin:*:1:1:bin:/bin
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
sky::520:502:LinuxUser,,,,:/home/sky:/bin/sh
san::530:503:san user,,,,:/home/san:/bin/sh
#Ashprofile
#vim:syntax=sh
#Nocore files by default
#ulimit -S -c 0>/dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
PS1=[\u@\h \W]#(PS1=[$USER@$HOSTNAME$PWD]#)
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
yourname
lib目录
lib(cp -r 4.3.3/arm-none-linux-gnueabi/libc/armv4t/lib/*so*lib -a)
|--ld-2.8
Busybox编译yaffs2文件系制 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)