分类: 嵌入式
2009-12-25 16:15:43
一、开发平台
主 机:VMWare--Fedora 8
开发板:utu2440--64MB Nand
编译器:arm-linux-gcc-
软件资源:busybox-
二、制作步骤
1.建立根文件系统目录
进入工作目录,新建建立根文件系统目录的脚本文件create_rootfs_bash, 使用命令chmod +x create_rootfs_bash改变文件的可执行权限,./create_rootfs_bash运行脚本,就完成了根文件系统目录的创建。
#!/bin/sh mkdir rootfs cd rootfs mkdir root dev etc tmp var sys proc lib mnt opt home mkdir etc/init.d etc/rc.d etc/sysconfig mkdir usr/lib mkdir var/run var/lib var/log mknod -m 600 dev/console c 5 1 mknod -m 666 dev/null c 1 3 chmod 1777 tmp |
改变了tmp目录的使用权,让它开启sticky位,为tmp目录的使用权开启此位,可确保tmp目录底下建立的文件,只有建立它的用户有权删除。尽管嵌入式系统多半是单用户,不过有些嵌入式应用不一定用root的权限来执行,因此需要遵照根文件系统权限位的基本规定来设计。
2. 建立动态链接库
动态链接库直接用开发板自带的,先解压杨创的根文件包,拷贝lib的内容到新建的根文件目录lib内。
3.交叉编译busybox-
# tar jxf busybox-
# cd busybox-1.10.1
# vi Makefile //modify
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
# make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
[*] Build with Large File Support (for accessing files > 2 GB)
Miscellaneous Utilities --->
[ ] taskset
Linux Module Utilities --->
[ ] Support version 2.2.x to 2.4.x Linux kernels
其它选项使用默认配置
# make CONFIG_PREFIX=/home/work_dir/rootfs install
编译完成后会自动在rootfs中生成bin, sbin, usr/bin, usr/sbin和linuxrc.
4. 建立/etc下的配置文件
# cd rootfs/etc
# touch mdev.conf
# cp /etc/passwd .; cp /etc/shadow .; cp /etc/group .
# vi sysconfig/HOSTNAME// content as following
Yourname
# vi inittab// content as following
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r
# vi init.d/rcS // content as following
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
mount -a
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
/bin/hostname -F /etc/sysconfig/HOSTNAME
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.1.168
/sbin/route add default gw 192.168.1.1
# chmod +x rcS
# vi fstab // content as following
#device mount-point type option dump pass
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0
# vi profile // content as following
# Ash profile
# vim: syntax=sh
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
PS1='[root@yourname]\$ '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
5. 制作根文件系统映像文件
# tar zxf mkyaffs2image.tgz –C /home/work_dir
# mkyaffs2image rootfs filesystem.yaffs
参考资料:
[1] http://blog.chinaunix.net/u3/100239/showart_2033559.html
[2]