当前位置:文档之家› FL2440根文件系统制作

FL2440根文件系统制作

FL2440根文件系统制作
FL2440根文件系统制作

根文件系统制作

FL2440在移植完linux内核后,需要移植根文件系统才能正常的启动开发板上面的Linux系统。下面介绍一下如何制作根文件系统。

首先要明确几个问题,首先,为什么要制作根文件系统?根文件系统是什么?文件系统又是什么?如何制作根文件系统?这里介绍的是制作方法,所以下面只回答最后一个问题。至于其他问题,网上的资料以及相关的书籍上都有很详细的介绍,并且不是一句两句就能回答出来的,这里不多罗嗦。

开发板:FL2440

SDRAM:64M NAND FLASH:256M

环境:虚拟机vmware7.1.2.14247绿色版(网上到处是)、红帽企业版5

交叉编译链:arm-linux-gcc-4.3.2(这里选择这个,低版本的比如3.4.1的等,在编译的过程中可能会提示很多错误)

使用的工具:busybox-1.19.0.tar.bz2

这里先改正一下错误,上次的linux-2.6.28.7内核移植到FL2440开发板时的触屏驱动有问题,需要改正几个错误,否则校正 3.5寸的屏幕时可能会出现错误,FL2440光盘中的linux-2.6.28的触屏驱动也存在此问题。

触屏校正有问题,校正不过去,需要修改源码中的触屏驱动才能解决。

文件:drivers/input/touchscreen/s3c2410_ts.c

static irqreturn_t stylus_updown(int irq, void *dev_id)//172行

函数中的data0 = readl(base_addr+S3C2410_ADCDA T0);//178行

data1 = readl(base_addr+S3C2410_ADCDA T1);//179行

修改为:

data1 = readl(base_addr+S3C2410_ADCDA T0);//lysysjw

data0 = readl(base_addr+S3C2410_ADCDA T1);//lysysjw

static irqreturn_t stylus_action(int irq, void *dev_id)//194行

函数中的data1 = readl(base_addr+S3C2410_ADCDA T0);//199行

data0 = readl(base_addr+S3C2410_ADCDA T1);//200行

修改为

data1 = readl(base_addr+S3C2410_ADCDA T0);//lysysjw

data0 = readl(base_addr+S3C2410_ADCDA T1);//lysysjw

下面开始介绍根文件系统制作过程。制作步骤如下:

大体来说,有两大步骤,第一步是移植Busybox,第二步是构建根文件系统。下面首先说第一步。

1、下载busybox-1.19.0.tar.bz2,并解压

首先,创建目录,用如下命令

mkdir /arm

进入这个目录

cd /arm

下载busybox-1.19.0.tar.bz2,地址是

https://www.doczj.com/doc/f45622754.html,/downloads/

或者

https://www.doczj.com/doc/f45622754.html,/downloads/

busybox官网为

https://www.doczj.com/doc/f45622754.html,/

下载完后,将busybox-1.19.0.tar.bz2复制到arm目录下,然后解压缩,如下命令jar –jxvf busybox-1.19.0.tar.bz2

这样在/arm目录下就会出现busybox-1.19.0目录,进入这个目录

cd busybox-1.19.0

2、配置Busybox

首先编辑改源码目录中的Makefile文件,

vim Makefile

将下面的两个变量修改

CROSS_COMPILE ?=

ARCH ?=

改后的值为

CROSS_COMPILE ?=arm-linux-

ARCH ?=arm

当然上面的交叉编译链是要创建到环境变量中的。否则添加上绝对地址,不过有时候添加上绝对地址后可能会有错误。

执行下面命令进行配置

make menuconfig

这里做的修改如下,其他没提到的可以不修改(这里直接以飞凌官方论坛的为例,地址为https://www.doczj.com/doc/f45622754.html,/viewthread.php?tid=6292&highlight=)

B u s y b o x S e t t i n g s--->

B u i l d O p t i o n s--->

?B u i l d B u s y b o x a s a s t a t i c b i n a r y(n o s h a r e d l i b s)

?B u i l d w i t h L a r g e F i l e S u p p o r t(f o r a c c e s s i n g f i l e s> 2G B)

I n s t a l l a t i o n O p t i o n s--->

(./_i n s t a l l)B u s y b o x i n s t a l l a t i o n p r e f i x<—进入这个选项,输入b u s y b o x的安装路径,如:../r o o t f s

B u s y b o x L i b r a r y T u n i n g--->

?v i-s t y l e l i n e e d i t i n g c o m m a n d s

?F a n c y s h e l l p r o m p t s<—要选择这个选项:“F a n c y s h e l l p r o m p t s”,否则挂载文件系统后,无法正常显示命令提示符:“[\u@\h \W]#”

这样就基本可以了,不过下面的几个配置选项需要注意一下。

如果只配置到此,那么构建的根文件系统在dnw串口软件上面启动来的Linux 在串口打印中会出现乱码的现象,类似于下图

其实这也不是大问题,用超级终端就可以正常显示了。原因在于dnw是不支持彩色的。这个是由于在编译busybox时将文件利用颜色来区别这个选项选择上了。为了在dnw也能正常显示,可以将按下面修改(默认是选择上的,这里我们不选择)

Coreutils --->下找到ls相关的

Allow use of color to identify file types 和Produce colored ls output by default,如下图

将Allow use of color to identify file types这一项不选择就可以了。不过这里推荐选择,因为在开发时比较直观。

FL2440开发板官方给的文件系统是不能用Tab键补齐的,而其他的板子比如mini2440、TQ2440都是可以利用TAB键补齐的,刚开始接触时可能会纳闷,其

实原因就在飞凌配置busybox时有一项给去掉了的原因。这一项是Busybox Settings--------------à

Busybox Library Tuning------à

Tab completion

如下图

还有很多参数,这里不再多介绍。下面给出一个示例,部分内容有出入

3、编译

用如下命令进行编译 make

用如下命令进行安装

make install

命令执行完毕,就会在在/arm目录下多出一个rootfs目录,里面存放了如下文件

第二步,制作根文件系统。制作根文件系统,到底制作了什么?制作了那些东西?其实说白了,就是制作了目录,目录里面制作一些文件,这些文件有的与启动有关,有的是各种命令等等。

0、制作必要的目录

进入/arm目录,创建目录root-2.6目录,进入该目录,创建如下目录

bin、etc、dev、home、lib、mnt、opt、proc、root、sbin、sys、tmp、usr、var

这里介绍一下主要的几个目录的功能:

bin:保存busybox制作出来的可执行的文件以及自己所创建的各种可执行文件或者shell程序。

etc:这里面放置了各种启动过程中所用到的配置文件,主要的有inittab文件(init 进程的配置文件),fstab文件(用于指明需要挂载的文件系统)、profile文件(用于配置用户环境变量)、init.d目录下的rcS文件(启动时用到的配置以及自启动的进程等在这里要写入到这个文件下)、sysconfig目录下的HOSTNAME文件(与终端显示信息有关系),group文件(用户组文件)、passwd文件(密码文件)、shadow文件(与创建密码有关系)。其他的诸如mdev.conf文件(与设备文件系统有关)、resolv.conf文件(与DNS有关)、rc.d文件(与自启动有关)、boa目录(与web服务器的配置相关)这里不多介绍,可以查阅相关资料。

lib:放置了各种库文件(这一目录下需要根据实际需要进行删减的,要不然制作的文件系统会很大)

sbin:和bin目录差不多

usr

下面详细介绍一下制作过程。

命令如下

cd /arm

mkdir root-2.6

cd root-2.6

mkdir bin etc dev home lib mnt opt proc root sbin sys tmp usr var

创建完毕,将第一步生成的rootfs目录中的所有文件复制到root-2.6目录下。命令如下

cp –rf ../rootfs/* ./

注意:以下提到的所有的shell脚本文件的权限最少是可执行的。否则启动会不正常。

1、linuxrc的作用

在bootloader交接给内核的一些参数中,有一个是init=/linuxrc,这个是内核启动的过程中第一个启动的程序,我们可以使用默认的,既busybox编译出来的,也可以自己创建的shell脚本文件,其中fl2440所配的官方根文件系统就是用的脚本文件。

脚本的内容可以自己编写

下面给出示例

#!/bin/sh

/bin/mount -t proc proc /proc

/bin/mount -t sysfs sysfs /sys

/sbin/mdev -s

exec /sbin/init

不过推荐使用默认的linuxrc

2、制作必要的文件

这里的工作目录是/arm/root-2.6。

2.1首先,进入dev目录下,创建两个设备节点

cd dev

#mknod console c 5 1

#mknod null c 1 3

这里简要介绍一下原因。虽然这两个设备文件在内核挂载完文件系统后,系统会利用mdev自动创建,可是在此之前,即在内核挂载文件系统之前,init进程会用到这两个设备文件。如果没有这两个设备文件,会提示如下一些信息

Warning: unable to open an initial console.

2.2然后进入etc目录中,按下面进行操作

cd etc

2.2.1制作必要的文件。

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

[root@localhost etc]# cp -r /arm/busybox-1.19.0/examples/bootfloppy/etc/* ./

包括的文件:fstab、init.d、inittab、profile。

2.2.2制作密码、用户相关的文件。

拷贝/etc/passwd、/etc/group、/etc/shadow到当前目录下。

# cp /etc/passwd ./

# cp /etc/group ./

# cp /etc/shadow ./

把passwd文件中的第一行:root:x:0:0:root:/root:/bin/bash中的/bin/bash,改成/bin/ash,因为文件系统的bin目录下没有bash这个命令,而是用ash代替bash,所以在用用户名密码登录的时候(如telnet),会出现“cannot run /bin/bash: No such fileor directory”的错误。

2.2.3修改inittab文件(该文件可以不用创建,使用默认值即可)

Linux的init进程是根据/etc/inittab文件来创建其他子进程的。所以我们要修改inittab文件,内容如下:

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

ttyS0::respawn:-/bin/sh

s3c2410_serial0::askfirst:-/bin/sh

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

上面内容的意思根据我的理解加上资料中的介绍,上面总共是四个进程,第一个进程是用到了在dev目录下创建的console这个设备,系统启动后最先执行,并且只执行一次,执行的是/etc/init.d/rcS这个脚本文件,至于做了什么,下面介绍。第二个进程是启动shell,以串口/dev/ttyS0作为控制台。在启动的过程中,我们可以在最后阶段看到一句话“Please press Enter to activate this console.”这个就是由于第三句的原因,而这里是以s3c2410_serial0串口作为控制台,启动shell。

至于为什么这么改,根据是什么,如果英文好,可以参考busybox源码中的example目录下的inittab文件,如果不够好,参考韦东山的嵌入式Linux应用开发完全手册把,第17章就是讲这个的,页数为345。这里简单的介绍一下

版权问题这里不摘录,可以自己去查看

2.2.4修改fstab文件。改文件是用于控制所要挂载的文件系统。

内容如下:

#device mount-point type options dump fsck order

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

以上内容的写法,这里引自韦东山的《嵌入式Linux应用开发完全手册》中相关内容

版权问题这里不摘录,可以自己去查看

2.2.5修改init.d/rcS文件。这是一个脚本文件,在这里我们可以添加自动执行的命令,常用于配置ip地址,挂载文件系统等

内容如下:

#!/bin/sh

PA TH=/bin:/sbin:/usr/bin:/usr/sbin

runlevel=S

prevlevel=N

umask 022

export PA TH runlevel prevlevel

mount -a #挂载fstab文件指定的文件系统

mkdir /dev/pts #

mount -t devpts devpts /dev/pts #devpts用于支持外部网络连接(telnet)的虚拟终端

echo /sbin/mdev > /proc/sys/kernel/hotplug #设置内核,当有设备插拔时调用/sbin/mdev程序

mdev -s #在/dev目录下生成内核支持的所有设备的结点

mkdir -p /var/lock

qtopia & #启动qtopia脚本

ifconfig eth0 192.168.0.15 up #配置ip地址

/bin/hostname -F /etc/sysconfig/HOSTNAME

2.2.6修改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]# ' #用于显示[root@FL2440 /]#

PA TH=$PA TH

HOSTNAME=`/bin/hostname`

echo " Processing /etc/profile... "

echo "Done"

export USER LOGNAME PS1 PA TH

2.2.7新建sysconfig文件夹,在里面新建HOSTNAME文件,内容为:FL2440

这里之所以创建该文件和相关内容,是为了在开机启动后,在控制台中可以看到类似的信息

图中“root@FL2440”中FL2440就是这个文件中的内容。

2.2.8复制ts.conf文件到etc目录下,并修改部分内容

修改的办法是根据实际应用的触屏驱动来改写。若修改不正确,会提示如下面的错误

selected device is not a touchscreen I understand

如果是fl2440的内核可以参考如下图所示

2.3拷贝库文件:(完成)

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

#cp -f -a /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/*.so* ./

由于交叉编译器的库文件比较多,体积较大,所以需要裁剪一下库文件,只保留常用的库文

件。

rm –f libwv* libuniconf*

这两个库文件一般很少用到,并且占用的大约8M的空间,为了节省内存,所以删掉。

由于这里用到了图形界面和触屏,所以要添加一些库文件到这里。

从qtopia-2.2.0/tslib-1.4.1/__install/lib/下拷贝ts/目录到这里的lib/目录下,

cp –r –a /usr/qtopia-2.2.0/ tslib-1.4.1/__install/lib/ts ./

2.4对usr/目录的修改(完成)

由于这里要制作含有qtopia的根文件系统,而qtopia在第一次启动的时候需要设

置一下参数,其中时区的设置就要用到开发板中的/usr/share/zoneinfo/下的一些文

件,这些文件是在交叉编译好的qtopia-2.2.0/qtopia/etc目录下拷贝过来,文件在qtopia-2.2.0/qtopia/etc下的zoneinfo文件夹下,这里要将整个文件下拷贝到usr/share下面。命令如下

cp –r –a /usr/qtopia-2.2.0/qtopia/etc/zoneinfo usr/share/

上面的工作目录是在root-2.6

如果没有上面的目录的话,或者路径不对的话,是不能设置时区的。

2.5 sbin目录的修改(完成)

由于用到了触屏和图形界面,所以这里需要将触屏校正程序ts_calibrate拷贝到sbin目录下。

ts_calibrate文件在qtopia-2.2.0/qtopia/tslib-1.4.1/__install/bin/下。

cp –r –a /usr/qtopia-2.2.0/qtopia/tslib-1.4.1/__install/bin/ts_calibrate sbin/

2.6 bin目录的修改(完成)

在该目录下新建一个qtopia文件,用于启动图形界面。内容如下

#!/bin/sh

echo Start Qtopia-2.2.0 > /dev/s3c2410_serial0 #打印提示信息

export HOME=/root #这里设置的HOME用于触屏的配置完的文件存放的位置,第一次启动配置完后,该目录下面会多出相应的一些目录,每个目录用于存放相关的配置文件。如果想重新配置,那么删除该目录下所以的文件,然后重启就可以进行重新设置。

export QTDIR=/opt/Qtopia #Qtopia所在的目录,该行必须

export QPEDIR=/opt/Qtopia #Qtopia所在的目录,该行必须

export KDEDIR=/opt/kde #kde所在的目录,不过可以忽略本行

export QWS_KEYBOARD="TTY:/dev/tty1" #该行的作用还不明确,不过在这里可以忽略本行

export LD_LIBRARY_PA TH=/lib

export TSLIB_TSDEVICE=/dev/ts0 #触屏设备节点,该行必须

export TSLIB_TSEVENTTYPE=H3600

export TSLIB_CONFFILE=/etc/ts.conf #触屏的配置文件所在处,这个文件要根据实际的触屏驱动进行修改。修改放到下面。该行必须

export TSLIB_PLUGINDIR=/lib/ts #触屏的库文件所在处,该行必须

export TSLIB_CALIBFILE=/etc/pointercal #触屏校正后产生的文件,这里可以不用设置该处

export set QWS_MOUSE_PROTO="TPanel:/dev/ts0" # USB:/dev/mouse0" #该行必须,加上后面的USB……,就会在触屏上面出现一个鼠标箭头,不加则没有,该行必须

export PA TH=$QPEDIR/bin:$PA TH #该行必须,因为触屏中的可执行文件在这里

export LD_LIBRARY_PA TH=$QTDIR/lib:$QPEDIR/lib #该行必须,触屏用到的库文件

if [ -f /etc/pointercal ] ; then

qpe 1>/dev/null 2>/dev/null

else

echo "Now adjust the TouchScreen"

ts_calibrate

qpe 1>/dev/null 2>/dev/null

fi

最后这个if-else-fi用于判断是否存在etc/pointercal文件,如果存在,则直接进入图像界面,如果不存在,则进行校正后再进入。

qpe 1>/dev/null 2>/dev/null 这句中后面的是用于将启动信息不打印到串口,如果直接用下面

qpe &,则会有一些信息打印出来。后面的“&”用于后台运行。

这里还需要改变qtopia的属性,权限至少是全部可执行

chmod 777 qtopia

2.2.9其他目录,默认为空即可

3、制作根文件系统镜像

这里利用飞凌给的官方的制作yaff的程序来制作根文件系统,mkyaffs2image 命令如下

./mkyaffs2image root-2.6 root-2.6.bin

这样烧写到开发板中就可以启动带有qtopia界面的linux系统。

若发现问题,可以qq联系

嵌入式Linux根文件系统制作

实训项目四-嵌入四Linux系统根文件系统制作一. 项目实施目的 了解 UP-CUP2440 型实验平台Linux 系统下根文件系统结构 掌握根文件系统的搭建过程 掌握busybox、mkcramfs等工具的使用方法 二. 项目主要任务 使用busybox生成文件系统中的命令部分,使用mkcramfs工具制作CRAMFS 格式的根文件系统。 分析根文件系统etc目录下重要配置文件的格式及语法,熟悉根文件系统的启动过程 三. 基本概念 1.文件系统基本概念 Linux的一个最重要特点就是它支持许多不同的文件系统。这使Linux非常灵活,能够与许多其他的操作系统共存。Linux支持的常见的文件系统有:JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。随着时间的推移, Linux支持的文件系统数还会增加。Linux是通过把系统支持的各种文件系统链接到一个单独的树形层次结构中,来实现对多文件系统的支持的。该树形层次结构把文件系统表示成一个整个的独立实体。无论什么类型的文件系统,都被装配到某个目录上,由被装配的文件系统的文件覆盖该目录原有的内容。该个目录被称为装配目录或装配点。在文件系统卸载时,装配目录中原有的文件才会显露出来。在Linux 文件系统中,文件用i节点来表示、目录只是包含有一组目录条目列表的简单文件,而设备可以通过特殊文件上的I/O 请求被访问。 2.常见的嵌入式文件系统 嵌入式Linux系统一般没有大容量的磁盘,多使用flash存储器,所以多采用基于Flash(NOR和NAND)的文件系统或者RAM内存的文件系统。 (1)Flash根据结构不同分为 NOR Flash和NAND Flash。基于flash的文件系统主要有: jffs2:RedHat基于jffs开发的文件系统。

busybox详解制作根文件系统

详解制作根文件系统 单击,返回主页,查看更多内容 一、FHS(Filesystem Hierarchy Standard)标准介绍 当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。 该标准规定了根目录下各个子目录的名称及其存放的内容: 制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。其过程大体包括: ?编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 ?利用交叉编译工具链,构建/lib目录 ?手工构建/etc目录 ?手工构建最简化的/dev目录 ?创建其它空目录 ?配置系统自动生成/proc目录 ?利用udev构建完整的/dev目录 ?制作根文件系统的jffs2映像文件 下面就来详细介绍这个过程。 二、编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录

这些目录下存储的主要是常用命令的二进制文件。如果要自己编写这几百个常用命令的源程序,my god,这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀——busybox,事情就简单很多。 1、从https://www.doczj.com/doc/f45622754.html,/下载busybox-1.7.0.tar.bz2 2、tar xjvf busybox-1.7.0.tar.bz2解包 3、修改Makefile文件 175 ARCH ?= arm 176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busybox busybox配置主要分两部分。 第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:

几种Nand flash文件系统的对比

几种Nand flas文件系统的对比 1.来源:NLE-FFS: A Flash File System with PRAM for Non-linear Editing For thesedevices, NAND flash memory has became the most attractive storage medium due to outstanding characteristics such as its increased capacity, low power consumption, small size and light weight. For the efficient management of NAND flashmemory, several flash file systems have been proposed, including JFFS2, YAFFS2, CFFS and PFFS. several file systems such as MNFS,NAMU and ScaleFFS have been designed for real-time recording /playback and large-capacity storage. A. YAFFS2 YAFFS2 is the most widely employed file system for NAND flash memory. YAFFS2 essentially saves the object ID (file ID) and the chunk (page) number in the spare region to show the offset of a page and the owner file of the page. Therefore, YAFFS2 reads the spare regions and object headers to establish the metadata in memory. Although YAFFS2 is designed to support NAND flash memory, it has scalability problems. With YAFFS2, the location of the updated page is saved in NAND flash pages or spare regions, as shown in Fig. 10 (a); hence, the file system

LINUX文件系统制作详细

Linux文件系统制作流程 关键词:ARM Linux yaffs文件系统移植 Linux文件系统简介 Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。 Linux下的文件系统结构如下: Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。 不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM,

SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2,yaffs,cramfs,romfs,ramdisk,ramfs/tmpfs等。 >基于FLASH的文件系统 Flash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(block)为单位进行的。 闪存主要有NOR和NAND两种技术(简单比较见附录)。Flash存储器的擦写次数是有限的,NAND闪存还有特殊的硬件接口和读写时序。因此,必须针对Flash 的硬件特性设计符合应用要求的文件系统;传统的文件系统如ext2等,用作Flash的文件系统会有诸多弊端。 在嵌入式Linux下,MTD(Memory Technology Device,存储技术设备)为底层硬件(闪存)和上层(文件系统)之间提供一个统一的抽象接口,即Flash的文件系统都是基于MTD驱动层的(参见上面的Linux下的文件系统结构图)。使用MTD 驱动程序的主要优点在于,它是专门针对各种非易失性存储器(以闪存为主)而设计的,因而它对Flash有更好的支持、管理和基于扇区的擦除、读/写操作接口。 顺便一提,一块Flash芯片可以被划分为多个分区,各分区可以采用不同的文件系统;两块Flash芯片也可以合并为一个分区使用,采用一个文件系统。即文件系统是针对于存储器分区而言的,而非存储芯片。 1.jffs2 JFFS文件系统最早是由瑞典Axis Communications公司基于Linux2.0的内核为嵌入式系统开发的文件系统。JFFS2是RedHat公司基于JFFS开发的闪存文件系统,最初是针对RedHat公司的嵌入式产品eCos开发的嵌入式文件系统,所以JFFS2也可以用在Linux,uCLinux中。 Jffs2:日志闪存文件系统版本2(Journalling Flash FileSystem v2) 主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。 目前jffs3正在开发中。关于jffs系列文件系统的使用详细文档,可参考MTD补丁包中mtd-jffs-HOWTO.txt。 jffsx不适合用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffsx文件系统在

liu改udhcpc配置+根文件系统制作

基于ubuntu12.06 Mini2440 256M 试验通过2013年4月8日星期一 1、获得simple.script #解压busybox tar jxvf busybox-1.5.0.tar.ba2 mv busybox-1.5.0 busybox cd busybox #添加交叉工具链 export PATH=/usr/local/arm/3.3.2/bin:$PATH make defconfig make menuconfig #配置时,我们基于默认配置,再配置它为静态编译,安装时不要/usr路径,把Miscellaneous Utilities #下的“taskset”选项去掉,不然会出错。 #如下: Busybox setting ->builds options ->[*] build busybox as a static binary ->installitation options ->[*] don’t use /usr Miscellaneous Utilities ―> [ ] taskset 保存退出。 #编译安装 make ARCH=arm CROSS_COMPILE=arm-linux- CONFIG_PREFIX=/root/build_rootfs/rootfs all install ARCH指定平台 CROSS_COMPILE指定交叉编译 CONFIG_PRRFIX指定安装的路径 或者直接修改Makefile文件 生成的udhcpc是一个链接在上面的安装目录/all/sbin 下 此时把busybox考到根文件系统的/bin下和把udhcpc拷到根文件系统的/sbin(其实原有的根文件系统里可能已经包含了udhcpc{这样该不该都行,或许吧})开机运行/sbin 下的udhcpc就可以自动获得IP。 关键点要把busybox目录下的examples/udhcp/simple.script 脚本文件做为default.script拷贝到根文件系统的/usr/share/udhcpc/default.script。没有则自己创建。

实验四 ramdisk 根文件系统的制作

实验四ramdisk根文件系统的制作 一.实验目的 1.熟悉根文件系统组织结构; 2.定制、编译ramdisk根文件系统。 二.实验设备 1.硬件:EduKit-IV 嵌入式教学实验平台、Mini2410 核心子板、PC 机; 2.软件:Windows 2000/NT/XP、Ubuntu 8.04、其他嵌入式软件包。 三.实验内容 利用6.3 中的已经完成的文件系统,生成一个根文件系统镜像。 四.实验原理 ramdisk是内核初始化的时候用到的一个临时文件系统,是一个最小的linuxrootfs系统,它包含了除内核以外的所有linux系统在引导和管理时需要的工具,做为启动引导驱动,包含如下目录: bin,dev,etc,home,lib,mnt,proc,sbin,usr,var。还需要有一些基本的工具:sh,ls,cp,mv……(位于/bin 目录中);必要的配置文件:inittab,rc,fstab……位于(/etc目录种);必要的设备文件:/dev/tty*,/dev/console,/dev/men……(位于/dev目录中);sh,ls等工具必要的运行库:glibc。1.制作ramdisk根文件系统映像 1)单击菜单应用程序->附件->终端打开终端,设置环境变量: $ source /usr/local/src/EduKit-IV/Mini2410/set_env_linux.sh $ source /usr/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/path.sh 2)执行命令切换到ramdisk实验目录下: $cd $SIMPLEDIR/6.4-ramdisk 3)运行脚本文件: $ sudosh ramdisk-install.sh shell 脚本命令说明: #!/bin/bash # # ramdisk-install.sh - Make ramdiskfilesystem. # # Copyright (C) 2002-2007

yaffs2文件系统制作

交叉编译器ARM-Linux-gcc4.1.2 开发板TX2440A Busybox-1.15.1.tar.bz2(在Linux中被称为瑞士军刀) mkyaffs2image工具 首先创建一个名字为root_2.6.31的文件夹,在其中创建如下文件夹 etc bin var dev home lib mnt proc root sbin sys tmp usr opt共14个文件夹 解压Busybox tar xjvf busybox 进入源目录,修改Makefile 第164行,CROSS_COMPILE=arm-linux- 第190行,ARCH=arm 执行#make men onfig进行配置 配置选项大部分都是保持默认的,只需要注意选择以下这几个选项,其他的选项都不用动:Busybox Setting---> Build Options---> [*]Build Busybox as a static binary(no shared libs) [*]Build with Large File Support(for accessing files>2GB) Installation Options--->

(./_install)Busybox installation prefix 进入这个选项,输入busybox的安装路径,如:../rootfs Busybox Library Tuning---> [*]vi-style line editing commands [*]Fancy shell prompts 要选择这个选项:“Fancy shell prompts”,否则挂载文件系统后,无法正常显示命令提示符:“[\u@\h\W]#” 配置完成以后 执行#make #make install 然后就会在上一级目录下生成rootfs文件夹,里面包含几个文件夹/bin/sbin/usr linuxrc 把这些文件全部复制到刚建好的root_2.6.31目录下, #cp–rf*../root_2.6.31 在dev目录下,创建两个设备节点: #mknod console c51 #mknod null c13 然后进入自己建立的etc目录 拷贝Busybox-1.15.2/examples/bootfloopy/etc/*到当前目录下。 #cp-r../../busybox-1.15.2/examples/bootfloopy/etc/*./ 包括文件:fstab init.d inittab profile

实验八 构建根文件系统

实验八构建根文件系统 一、实验目的 1、了解嵌入式Linux文件系统的作用和类型; 2、了解jffs2文件系统的优点和在嵌入式系统中的应用; 3、理解文件系统的挂载过程; 4、使用BusyBox制作一个根文件系统。 二、实验环境 预装redhat9.0(内核版本2.4.x)的pc机一台,XScale嵌入式实验箱一台(已构建嵌入式Linux系统),以太网线一根,交叉编译工具链,BusyBox软件包。 三、实验步骤 1、解压BusyBox软件包; 2、使用make menuconfig来配置BusyBox,修改交叉编译器前缀; Build Option [*] Build BusyBox as a static binary(no shared library) [*]Do you want to build BusyBox with a Cross ompile /usr/local/hybus-linux-R1.1/bin/arm-linux- Installation Option [*]Don't’t use /use Coreutils [*]ls

[*]cp [*]reboot [*]echo [*]mkdir [*]rm Editors [*]vi Login Utilities [*]getty 3、交叉编译BusyBox; make make install 4、建立BusyBox顶层目录结构 mkdir etc dev proc tmp lib var sys 5、在dev目录下创建必要的设备节点 (ram0,console,null,zero); mknod mdblock b 31 3 mknod console c 5 1 mknod null c 1 3 mknod zero c 1 5 cp –dpR /dev /_install/dev (假设busybox的安装目录为/_install)

基于busybox的根文件系统制作

龙源期刊网 https://www.doczj.com/doc/f45622754.html, 基于busybox的根文件系统制作 作者:李飞,武金虎,石颖博 来源:《电脑知识与技术》2010年第17期 摘要:Busybox是构建嵌入式Linux文件系统的必备软件,它是所有文件和设备节点的起始点,是决定系统能否正常启动的关键。通过busybox-1.1.3为例,进行配置、编译、安装等过程,从而形成简单的根文件系统映像文件,为以后嵌入式Linux系统的移植打下了良好的开端。 关键词:Busybox;嵌入式Linux;Linux操作系统;根文件系统;cramfs 文件系统 中国分类号:TP316.81文献标识码:A文章编号:1009-3044(2010)17-4655-02 Making Root File System Based on Busybox LI Fei, WU Jin-hu, SHI Ying-bo (College of Computer Science and Information, Guizhou University, Guiyang 550025, China) Abstract: Busybox is an essentiaL software to buiLd an embedded Linux fiLe system. It is the starting node point of aLL the fiLes and devices and the key whether the system can have a normaL start. Taking busybox-1.1.3 for exampLe, making a simpLe root image system fiLe by configuration compiLation and instaLLation Lays a good foundation for migration of the embedded Linux system. Key words: busybox; embedded linux; Linux OS; root file system; cramfs file system 1 根文件系统结构 根文件系统是所有文件和设备节点的起始点,包括系统所必须的各种工具软件、库文件、 脚本、配置文件等一系列的文件。一个基本的Linux根文件系统包含有以下的目录:dev、proc、bin、etc、usr、Lib、temp、var、usr等等目录。其中dev是设备文件节点目录,proc是挂载proc文件系统所用的目录,bin目录下面包含了系统的基本命令,etc目录是系统启动脚本所在的目录,Lib是系统默认的动态链接库目录,usr是用户目录,temp是临时目录,用来保存临时文 件,var目录包含系统运行时要改变的数据。以上都是根文件系统所必须的目录 2 Busybox简介 熟练嵌入式Linux的朋友对busybox一定不会陌生,它是标准Linux工具的一个单个可执行实现,被形象的称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的UNIX工具和命令 结合到一个单独的可执行程序中。虽然busybox中的这些工具相对于GNU常用工具功能有所

JFFS文件系统和YAFFS文件系统的比较

JFFS文件系统和YAFFS文件系统的比较 NAND flash文件系统JFFS2和YAFFS比较JFFS是由瑞典的Axis Communications Ab公司开发的(1999,以GNU发布),针对flash设备的特性为嵌入式设备开发的.(我边上的兄弟曾想去那里作毕业设计) JFFS1和JFFS2的设计中都考虑到了FLASH的特性特别是满足了上述3个条件,包括了垃圾回收,坏块管理等功能. 这两种文件系统属于LFS(Log-structured File System).这种文件系统的特点是一旦数据出错,容易恢复,但是系统运行是需要占用一定的内存空间,这些空间就是用来存储”log”的. JFFS的缺点就是加载时间太长,因为每次加载都需要将FLASH上的所有节点(JFFS的存储单位)到内存,这样也占用了可观的内存空间.除此之外,”circle log”设计使得在对文件数据进行所有的数据都会被重写,这样造成不必要的时间,同时也会减少FLASH的寿命. JFFS2对JFFS1作了些改进,比如所需的内存变少了,垃圾回收机制也优化了. 针对JFFS1,JFFS2的缺点,JFFS3出现了. YAFFS1 ">“Yet Another Flash File System”作者是新西兰的Charles Manning为一家名叫Alpha one 的公司(https://www.doczj.com/doc/f45622754.html,/)设计的,是第一个为NAND Flash设计的文件系统.共两个版本YAFFS1 和YAFFS2. YAFFS1支持512Bytes/Page的NAND Flash;后者YAFFS2支持2kBytes/Page的NAND Flash. YAFFS文件系统也属于LFS. 跟其他文件系统比较,它具有更好的可移植性,甚至可以使用在没有操作系统的设备上(called “YAFFS/Direct”). YAFFS采用模块化设计,虽然最初是用在linux系统上的,但是也已经移植到其他系统比如wince. 还有个突出的优点是它在mount的时候需要很少的内存.(如果是小页—512byte/page,每1MByte NAND大约需要4KBytes内存;大页需要大概1KBytes RAM/1MByte NAND) JFFS与YAFFS比较,两者各有长处. 一般来说,对于小于64MBytes的NAND Flash,可以选用JFFS;如果超过64MBytes,用YAFFS比较合适.

在硬盘上制作根文件系统.doc

在硬盘上制作根文件系统 一、实验目标: 在硬盘上建立一个根文件系统,硬盘镜像文件的名称为:hdc-0.11.new.img 二、实验环境: 1、Vmware workation, bochs虚拟机,ultraedit编辑环境 2、用到的四个重要的镜像文件:bootimage-0.11-hd,hdc-0.1.img,并将他们放到 mylinux0.11文件夹中。 3、实验环境:redhat linux 三、实验理论依据: 1、Linux引导启动时,默认使用的文件系统是根文件系统。其中一般都包括以下一些子目录和文件: etc/ 目录主要含有一些系统配置文件; dev/ 含有设备特殊文件,用于使用文件操作语句操作设备; bin/ 存放系统执行程序。例如sh、mkfs、fdisk等; usr/ 存放库函数、手册和其它一些文件; usr/bin 存放用户常用的普通命令; var/ 用于存放系统运行时可变的数据或者是日志等信息。 存放文件系统的设备就是文件系统设备。Linux 0.11内核所支持的文件系统是MINIX 1.0文件系统。 2、inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬 盘、软盘、U盘... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode 值最快的找到相对应的文件。每一个文件开头都是一个inode。 做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。

Yaffs2文件系统中对NAND Flash磨损均衡的改进

Yaffs2文件系统中对NAND Flash磨损均衡的改进 摘要:针对以NAND Flash为存储介质时Yaffs2文件系统存在磨损均衡的缺陷,通过改进回收块选择机制,并在数据更新中引入冷热数据分离策略,从而改善NAND Flash的磨损均衡性能。实验借助Qemu软件建立Linux嵌入式仿真平台,从总擦除次数、最大最小擦除次数差值和块擦除次数标准差等方面进行对比。实验结果表明,在改进后的Yaffs2文件系统下NAND Flash的磨损均衡效果有明显提升,这有益于延长NAND Flash的使用寿命。 关键词: Yaffs2文件系统;NAND Flash;垃圾回收;冷热数据 0 引言 NAND Flash存储设备与传统机械磁盘相比,具有体积小、存储密度高、随机存储和读写能力强、抗震抗摔、功耗低等特点[1]。它被广泛用于智能手机、车载智能中心、平板电脑等智能终端中。近年来,以NAND Flash为存储介质的固态硬盘也得到越来越多的应用。目前Yaffs2文件系统(Yet Another Flash File System Two,Yaffs2)[1]是使用最多、可移植性最好的专用文件系统,在安卓、阿里云OS、Linux等嵌入式系统中都有使用。在Yaffs2文件系统下以NAND Flash为存储介质时存在磨损均衡的缺陷,可通过对回收块选择机制作改进和引入冷热数据分离策略来提高磨损均衡的效果。 1 Yaffs2和Nand Flash关系 这里以使用最多的Linux操作系统为实践,将Yaffs2文件系统移植到Linux操作系统中。Linux系统通常可以分为3层:应用层、内核层和设备层,其中支持NAND Flash设备的Yaffs2文件系统属于内核层,。 最上层用户应用程序通过VFS(Virtual File System)提供的统一接口,将数据更新等文件操作传递给Yaffs2。VFS代表虚拟文件系统,它为上层应用提供统一的接口。有了这些接口,应用程序只用遵循抽象后的访问规则,而不必理会底层文件系统和物理构成上的差异。然后Yaffs2通过MTD(Memory Technology Device)提供的统一访问接口对NAND Flash进行读、写和擦除操作,从而完成数据的更新或者存储操作。MTD代表内存技术设备,它为存储设备提供统一访问的接口。最终,在NAND Flash上以怎样的格式组织和存储数据由Yaffs2文件系统决定。 NAND Flash由若干块(block)组成,每个块又是由若干页(page)组成,页中含有数据区和附加区。NAND Flash的页根据状态不同,可以分为有效页、脏页、空闲页。有效页中存放有效数据,脏页中存放无效数据,空闲页是经过擦除后可以直接用于写入数据的页。NAND Flash在写入数据前需要执行擦除操作,因此数据不能直接在相同的位置更新。当一个页中数据需要更新时,必须将该页中有效数据拷贝到其他空闲页上再更新,并将原来页上的数据置为无效。随着时间的推移,许多无效页累积在存储器中使得空闲页逐渐减少。当存储器中的空闲空间不足时,启动垃圾回收操作,利用回收块选择机制从待回收块中选取满足要求的块来擦除,从而得到足够的空闲空间。NAND Flash中块的擦除次数有限,通常为10 000次~100 000次[2]。当某个块的擦除次数超过使用寿命时,该块将无法正常用于数据存储。因此,垃圾回收应利用合理的回收块选择机制,从待回收块中找到回收后能产生良好磨损均衡效果且付出较少额外代价的块来回收,从而获得足够的空闲空间用于数据更新操作。 2 Yaffs2在磨损均衡方面的缺陷 Yaffs2中回收块的选择机制[3]是从待回收块中找到有效数据最少的块来回收。回收过程中,Yaffs2能够减少有效数据的额外读和写操作。当数据更新处于均匀分布的情况下,Yaffs2表现出较好的磨损均衡效果。 但是,通常情况下数据的更新频率不同,有些数据经常更新,而有些数据很少更新。经

嵌入式 linux 根文件系统 rootfs

一、什么是文件系统(Filesystem) 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。 二、主要嵌入式采用的文件系统 * Linux 中,rootfs是必不可少的。PC 上主要实现有ramdisk和直接挂载HD(Harddisk,硬盘) 上的根文件系统;嵌入式中一般不从HD 启动,而是从Flash 启动,最简单的方法是将rootfs load 到RAM 的RAMDisk,稍复杂的就是直接从Flash 读取的Cramfs,更复杂的是在Flash 上分区,并构建JFFS2 等文件系统。 * RAMDisk将制作好的rootfs压缩后写入Flash,启动的时候由Bootloader load 到RAM,解压缩,然后挂载到/。这种方法操作简单,但是在RAM 中的文件系统不是压缩的,因此需要占用许多嵌入式系统中稀有资源RAM。 ramdisk就是用内存空间来模拟出硬盘分区,ramdisk通常使用磁盘文件系统的压缩存放在flash中,在系统初始化时,解压缩到SDRAM并挂载根文件系统, 在linux系统中,ramdisk有二种,一种就是可以格式化并加载,在linux内核2.0/2.2就已经支持,其不足之处是大小固定;另一种是2.4的内核才支持,通过,ramfs来实现,他不能被格式化,但用起来方便,其大小随所需要的空间增加或减少,是目前linux常用的ramdisk技术. * initrd是RAMDisk的格式,kernel 2.4 之前都是image-initrd,Kernel 2.5 引入了cpio-initrd,大大简化了Linux 的启动过程,附合Linux 的基本哲学:Keep it simple, stupid(KISS). 不过cpio-initrd作为新的格式,还没有经过广泛测试,嵌入式Linux 中主要采用的还是image-initrd。 * Cramfs是Linus 写的很简单的文件系统,有很好的压缩绿,也可以直接从Flash 上运行,不须load 到RAM 中,因此节约了RAM。但是Cramfs是只读的,对于需要运行时修改的目录(如:/etc, /var, /tmp)多有不便,因此,一般将这些目录做成ramfs等可写的fs。 * SquashFS是对Cramfs的增强。突破了Cramfs的一些限制,在Flash 和RAM 的使用量方面也具有优势。不过,据开发者介绍,在性能上可能不如Cramfs。这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试 三、建一个包含所有文件的目录 1。建一个目录rootfs用来装文件系统 2。mkdir bin devetc lib procsbintmpusrvar 3. ln -fs bin/busyboxlinuxrc(使用busybox)

qt课程设计实验报告

程序设计课程设计实验报告 (qt实验报告) 信息科学与技术学院 软件三班 高文博 201005070309 2011年5月

实验1:计算当初存入本金的钱数。(12题) 1.实验目的、要求 目的: 1)熟悉qt中的常用属性; 2)熟悉vbox hbox模型及怎样根据需求设计控件,边框等; 3)熟悉各个槽函数的使用,准确的将c++语言转换成qt语言,将控件功 能与函数结合起来。 要求: 1)掌握对控件的文本色,背景色等常用属性的设置。 2)掌握对控件、边框尺寸与结构的设置 3)掌握对函数的设置 2.实验设备 笔记本电脑,已安装Qt 开发环境。 3.实验内容、步骤 ●先在vc++上进行编译。 ●应用qt3.38进行编译,运行。 实验步骤: 1)根据题目需求在草纸上画出结构图; 2)根据草图用代码设计整体框架和控件; 3)在qt上运行; 4)运行成功后根据功能添加函数; 5)在头文件中添加头文件。 6)将添加的功能函数与功能控件相连; 7)分别对每个函数进行测试; 8)将整个程序在qt运行调试; 9)运行通过后给每个函数写注释; 实验代码如下所示 A (1)主框架结构代码 #include"gwbsave.h"

GwbSave::GwbSave(QWidget*parent,const char*name):QWidget(parent,name) { //?? vBox=new QVBoxLayout(this); vBox->setMargin(5); vBox->setSpacing(5); label=new QLabel("Please input the lilv:",this,"label"); vBox->addWidget(label); //?? hBox=new QHBoxLayout(this); hBox->setMargin(5); hBox->setSpacing(5); vBox->addLayout(hBox); le1=new QLineEdit(this,"le1"); hBox->addWidget(le1); //?,?? hBox2=new QHBoxLayout(this); hBox2->setMargin(5); hBox2->setSpacing(5); vBox->addLayout(hBox2); leResult=new QLineEdit(this,"leResult"); leResult->setReadOnly(true); leResult->setPaletteBackgroundColor(Qt::gray); hBox->addWidget(leResult);

Ubuntu for Arm根文件系统制作

1.安装rootstock软件 rootstock是一个用来制作Ubuntu根文件系统的工具,可以使用apt-get install rootstock获取,也可以在官网直接下载:https://https://www.doczj.com/doc/f45622754.html,/project-rootstock 若选择前者:直接使用rootstock命令 若选择后者:解压下载文件rootstock-0.1.99.4.tar.gz得到rootstock可执行文件,可以将其拷贝到系统bin目录下 2.rootstock创建根文件系统 [html]view plaincopy 得到文件系统压缩文件qemu-armel-201408271515.tar.gz 创建一个空镜像: [html]view plaincopy 在镜像上创建文件系统: [html]view plaincopy 挂载镜像: [html]view plaincopy 将文件系统解压到挂载目录: [html]view plaincopy 这时可以修改挂载目录中的东西了: [html]view plaincopy 最后是得到最后的文件系统镜像: [html]view plaincopy

3.模拟器中运行根文件系统 下载模拟器qemu: [html]view plaincopy 在2中的“若干修改”中执行: [cpp]view plaincopy 在仿真环境中访问文件系统 [cpp]view plaincopy 此时在仿真环境下就可以安装SPICE了:[cpp]view plaincopy 安装完SPICE后保存文件系统: [cpp]view plaincopy

arm_linux_yaffs2文件系统移植到内核GUN编译错误问题处理

yaffs2更新的比较慢,跟不上内核的更新速度.所以只能自己做些修改 first step 刚开始从官网下载下来的直接打补丁后会出现一系列的错误.如下: **fs/yaffs2/yaffs_vfs.c: In function 'yaffs_readpage_nolock': fs/yaffs2/yaffs_vfs.c:286:34: error: 'struct file' has no member named 'f_dentry' obj = yaffs_dentry_to_obj(f->f_dentry); ^ fs/yaffs2/yaffs_vfs.c: In function 'yaffs_hold_space': fs/yaffs2/yaffs_vfs.c:484:34: error: 'struct file' has no member named 'f_dentry' obj = yaffs_dentry_to_obj(f->f_dentry); ^ fs/yaffs2/yaffs_vfs.c: In function 'yaffs_release_space': fs/yaffs2/yaffs_vfs.c:502:34: error: 'struct file' has no member named 'f_dentry' obj = yaffs_dentry_to_obj(f->f_dentry); ^ fs/yaffs2/yaffs_vfs.c: In function 'yaffs_file_write': fs/yaffs2/yaffs_vfs.c:594:34: error: 'struct file' has no member named 'f_dentry' obj = yaffs_dentry_to_obj(f->f_dentry); ^ fs/yaffs2/yaffs_vfs.c:606:11: error: 'struct file' has no member named 'f_dentry' inode = f->f_dentry->d_inode; ^ fs/yaffs2/yaffs_vfs.c: In function 'yaffs_file_flush': fs/yaffs2/yaffs_vfs.c:730:55: error: 'struct file' has no member named 'f_dentry' struct yaffs_obj *obj = yaffs_dentry_to_obj(file->f_dentry); ^ fs/yaffs2/yaffs_vfs.c: At top level: fs/yaffs2/yaffs_vfs.c:780:10: error: 'new_sync_read' undeclared here (not in a function) .read = new_sync_read, ^ fs/yaffs2/yaffs_vfs.c:781:11: error: 'new_sync_write' undeclared here (not in a function)

定制最简linux和根文件系统(平台龙芯1B开发板)共13页word资料

版本历史 版本时间备注 V1.0 2013-08-28 创建 1. 前言 (2) 1.1. 开发板版本号 (2) 1.2. 工具链版本号 (2) 1.3. 参考文档及其版本号 (3) 1.4. 目标 (3) 2. 搭建开发环境 (3) 3. 制作根文件系统 (3) 3.1. 配置 (3) 3.1.1. 拷贝源码,并解压 (3) 3.1.2. 配置选项简述 (4) 3.2. 编译 (4) 3.3. 构建根文件系统 (5) 3.3.1. 建立系统根目录 (5) 3.3.2. 建立设备文件 (5) 3.3.3. 建立系统配置文件 (5) 4. 编译linux (7) 4.1. 配置 (8) 4.1.1. 首先拷贝源码,并解压 (8) 4.1.2. 不安装Ncurses (8) 4.1.3. 没有拷贝.config (8) 4.1.4. 不用修改Makefile (8) 4.1.5. 配置选项简述 (9) 4.2. 编译 (10) 5. 启动运行linux (11) 5.1. 拷贝vmlinux到tftp服务器目录下 (11) 5.2. 设置PMON的ip地址 (11) 5.3. 下载内核 (12) 5.4. 启动linux (12)

1.前言 很高心拿到了龙芯1B开发板。然后仔细的看了开发板光盘里的《1B开发板用户手册.pdf》。里面写得非常详细,并且都附有截图,很明了。从最开始装虚拟机到编译linux,制作根文件系统等等,连虚拟机软件和Ubuntu系统镜像都有。可以说这套开发板考虑得非常周到。 然后我就参照《1B开发板用户手册.pdf》编译了linux,制作了根文件系统,最后终于跑起来,进入了shell。 这里谈谈我的感想 ●用户手册更像一个工具书 就拿根文件系统来说吧。Cramfs,Jffs2,Yaffs2的制作步骤都有,这表示该手册很全面,但是如果是一个初学者的话,给的选择太多不一定是好事。这也是我想写这篇文档的原因。我想linux的配置尽量简单(除了串口驱动以外,其它的比如,网卡,声卡,触屏等都暂时不需要),根文件系统也尽量简单(手册中的已经很简单了,后面我们就参照手册),另外为了再简单一点我把根文件系统也选择内存文件系统,内核只下载到内存而不烧写到flash,同时PMON参数也不修改。这样做有个好处——任何时候我可以复位进入开发板预装的linux 和文件系统。这便于在我们遇到问题时参考。 ●制作根文件系统的章节还有点小小的问题需要改进 ?手册中的笔误Busybox配置过程中ionice错写为inoice ?没有新建目录/root和/var/log ?没有新建console和串口设备节点ttyS2 另外,说点题外话,回想以前读大学时,非常想学习嵌入式,但是感觉非常困难。现在看来,当时感觉困难的原因是入门太难了。为什么入门难,弄了很久连环境都没打起来,更别说编译linux,制作根文件系统了。 在这里我想说“朋友们,搭建环境只需要把开发板的工具链解压到指定目录就可以了。就相当于windows上的绿色软件一样,仅此而已,这比安装vs2019快多了,方便多了”。 既然开发环境搭建起来了,后面就是配置编译linux,制作根文件系统了(先不要管PMON 了,就像电脑一样,很少有人换bios,最多重装系统)。这也就是本篇文章的任务。 1.1. 开发板版本号 LS1B DEMO BOARD Schematic Revision 2.0即版本为2.0 1.2. 工具链版本号 版本为gcc-3.4.6-2f.tar.gz

相关主题
文本预览
相关文档 最新文档