Chinaunix首页 | 论坛 | 博客
  • 博客访问: 347854
  • 博文数量: 92
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 960
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-21 19:38
文章分类

全部博文(92)

文章存档

2010年(71)

2009年(21)

我的朋友

分类: 嵌入式

2010-04-18 15:23:46

根文件系统的制作

内核版本:

Linux-2.6.31

交叉编译器版本:

arm-linux-gcc 4.1.2

操作系统平台:

Linux -- Red Hat 9.0

开发板平台:

Arm -- TX2440A

使用的工具:

Busybox-1.15.2

 

STEP 1:

创建根文件系统目录,主要包括以下目录:

/bin/etc/dev/home/lib/mnt/opt/proc/root/sbin/sys/tmp,/usr/var.

建一个名为root_2.6.31的文件夹 mkdir root_2.6.31

在该文件夹下创建以上目录 mkdir bin etc dev ……………

STEP 2:

获取busybox1.15.2源码,在找到busybox-1.15.2.tar.bz2这个压缩包,下载,解压:tar xjvf busybox-1.15.2

进入源码目录,修改Makefile

164行,CROSS_COMPILE = arm-linux-

190行,ARCH = arm

STEP 3:

 执行#make menuconfig进行配置busybox

Busybox Settings->Build Options->[*]Build BusyBox as a static binary(选择为静态编译)

Busybox Settings->Installation Options->BusyBox installation prefix->../rootfs(制定Busybox 的安装目录为上一级的rootfs)

配置完后,执行#make  #make install

STEP 4:

然后就会在上一级目录下生成rootfs文件夹,里面包含几个文件夹/bin /sbin /usr linuxrc

把这些文件全部复制到刚建好的root_2.6.31目录下,

#cp –rf * ../root_2.6.31

STEP 5:

root_2.6.31/dev目录下,创建两个设备节点:

#mknod console c 5 1 (console 是设备名,c是字符型设备,5是主设备号,1是从设备号)

#mknod null c 1 3

STEP 6:

进入etc目录,添加文件:

拷贝Busybox-1.15.2/examples/bootfloopy/etc/* 到当前目录下。

# cp –r ../../busybox-1.15.2/examples/bootfloopy/etc/* ./

包括文件:fstab init.d inittab profile

拷贝/etc/passwd, /etc/group, /etc/shadow到当前目录下。 (这三个是系统的密码和用户文件)

# cp /etc/passwd ./

# cp /etc/group ./

# cp /etc/shadow ./

修改inittab文件:(定义了子进程执行的文件,并引导执行第一个脚本文件

内容如下:

console::sysint:/etc/init.d/rcS    

ttyS0::respawn:-/bin/sh                   

s3c2410_serial0::askfirst:-/bin/sh

::once:/usr/sbin/telnetd –l /bin/login

::ctrlaltdel:/bin/umount –a -r

 

#chmod 777 inittab

修改fstab文件,内容如下:

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

 

#chmod 666 fstab

修改init.d/rcS文件,内容如下: rcS是系统最先运行的文件,也叫初始化脚本)

#!/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin

runlevel=S

prevlevel=N

umask 022

export PATH runlevel prevlevel

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

 

#chmod 777 rcS

修改profile文件,内容如下:profile也是脚本文件,但它是在我们按下回车后才被执行的)

# Ash profile

# vim: syntax=sh

# No core files by default

#ulimit -S -c 0 > /dev/null 2>&1

USER="`id -un`"

LOGNAME=$USER

PS1='[\u@\h \W]# '

PATH=$PATH

HOSTNAME=`/bin/hostname`

echo "Processing /etc/profile... "

echo "Done"

export USER LOGNAME PS1 PATH

 

#chmod 666 profile

新建sysconfig文件夹,在里面新建HOSTNAME文件,内容为:TX2440A (定义了一个符合)

STEP 7:

拷贝库文件: (我们编译busybox用的是arm-linux-gcc 4.1.2 ,所以我们要拷贝arm-linux-gcc 4.1.2中的lib库,即arm920t-eabi

进入lib目录,拷贝交叉编译器的库文件到lib目录下

#cp –f –a

/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib/*.so* ./

 

STEP 8:

到这里,文件系统的框架已经做好,先制作成yaffs镜像,运行一下。

使用mkyaffs2image工具,制作yaffs镜像,这个工具是在yaffs2源码包中utils目录下的mkyaffs2image.c文件编译得到的,如果使用的是大页NAND,需要修改源码。

把编译好的可执行文件复制到/usr/bin目录下,#cp mkyaffs2image /usr/bin

制作文件系统镜像:#mkyaffs2image root_2.6.31 root_2.6.31.bin

#chmod 777 root_2.6.31

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