Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32414
  • 博文数量: 12
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-22 20:05
文章分类
文章存档

2010年(4)

2009年(8)

我的朋友

分类: 嵌入式

2009-12-25 16:15:43

一、开发平台

 机:VMWare--Fedora 8

开发板:utu2440--64MB Nand

编译器:arm-linux-gcc-3.4.1

软件资源:busybox-1.10.1

 

二、制作步骤

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-1.10.1

# tar jxf busybox-1.10.1.tar.bz2 –C /home/work_dir

# 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/sbinlinuxrc.

 

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]

 

阅读(1170) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~