搜档网
当前位置:搜档网 › linux根文件系统构建

linux根文件系统构建

linux根文件系统构建
linux根文件系统构建

一.首先一个嵌入式linux产品开发大致分为以下几个流程:

1.硬件工程师:硬件规划,硬件设计,制板,焊接,硬件调试

2.系统工程师或驱动工程师:bootloader移植到1中所开发出来的硬件平台,移植linux内

核,制作供内核启动的根文件系统

3.驱动工程师:按照产品规划书,要求,移植必备的驱动

4.应用工程师:业务相关的应用程序,开发和产品密切相关的应用程序,驱动程序

5.功能测试,性能测试,系统集成此时

6.实验(系统设备)发布

二.根文件系统分析

1.根文件系统简介

Windows操作系统可以将硬盘划分为C,D,E,F等各个盘分别访问,linux同理将MTD设备划分为若干个分区,在不同的分区存放不同类别的文件。与windows的C盘类似,linux 一样要在一个分区上存放系统启动所必需的文件如下图所示:

内核启动后运行的第一个程序init,给用户提供操作界面的shell脚本程序,应用程序所依赖的库等,这些必需、基本的文件合称为根文件系统,存放在一个分区中,linux系统启动后首先挂接这个分区,称为挂接根文件系统。其他分区上所有的目录,文件的集合,也称为文件系统。有此可见linux启动时使用的第一个文件系统便是根文件系统,若此文件系统挂接不成功或者参数配置不正确则linux内核无法正常启动。

按照FHS标准,根文件系统顶层下一般有如下几个目录:

bin:存放所有用户都可以使用的,基本的命令

sbin:存放基本的系统命令,用于启动系统,修复系统

dev:存放设备文件和其它特殊文件

etc:存放系统配置文件,包括启动文件

usr:存放共享,只读的程序和数据

proc:空目录,常作为proc文件系统的挂接点

lib:存放共享库和可加载模块,共享库用于启动系统,运行根文件系统中的可执行程序boot:引导加载程序使用的静态文件

home:用户目录,可选的,包括供服务帐号锁使用的主目录,如FTP

mnt:用于临时挂接某个文件系统的挂接点,通常是空目录

opt:给主机额外安装软件所摆放的目录

root:root用户的主目录

tmp:存放临时文件,通常是空目录

var:存放可变数据

2.根文件系统制作工具Busybox

Busybox俗称嵌入式开发中的瑞士军刀,将众多的unix命令集合进一个很小的可执行程序中,可以用来替换GNUfileutils,shellutils等工具集,支持uclibc库和glibc库,官方网站为https://www.sodocs.net/doc/dc8693327.html,进行下载。

下载完毕,解压后会发现有如下一些配置选项如图:

进入第一个目录如图:

第一项是一些通用的设置第二项是链接方式,编译选项,接下来是调试选项等等。

主目录下

Archival utilities:各种压缩,截压缩工具

Coreutils:核心的命令,比如ls,cp等

Console utiities:控制台相关的命令,比如清屏指令clear等

Debian utilities:debian命令

Editors:编辑命令,一般都选用vi

Finding utilities:查找命令

Init utilities:init程序的配置选项

。。。到networking utilities:网络方面的命令,可以选择一些可以方便调试的命令,如telnetd,ping,tftp等

修改根目录下的makefile 指定交叉编译工具然后执行make编译

最后执行CONFIG_PREFIX=dir_path install 就可以将编译好的busybox安装在dir_name指定的目录下。

使用 Busybox 可以自动生成根文件系统所需的bin、sbin、usr 目录和 linuxrc 文件。3.文件系统分类,2张图互相弥补如图:

Jffs2:主要用于norflash,基于MTD驱动层,可读写,支持数据压缩的日志型文件系统Yaffs:专为nandflash设计的一种文件系统不支持数据压缩,速度更快,挂载时间更短cramfs:一种只读的压缩文件系统,基于MTD程序,速度快,效率高

ramdisk:将一部分固定大小的内存当作分区来使用

nfs:网络共享文件技术,用于开发调试阶段,挂载到嵌入式设备,可非常方便的修改根文件系统的内容。

三.根文件系统的制作

1.根文件系统的制作

a.首先进入一个你想创建根文件系统rootfs的目录创建一shell脚本文件,取名只要自己便于

识别即可这里取名为create_rootfs_bash,打开后输入以下内容

#!/bin/sh //脚本解析命令

echo "------Create rootfs directons start...--------"

mkdir rootfs //在当前目录创建rootfs目录

cd rootfs //进入rootfs目录

echo "--------Create root,dev....----------"

mkdir root dev etc boot tmp var sys proc lib mnt home usr//创建一系列必备子目录mkdir etc/init.d etc/rc.d etc/sysconfig //同上

mkdir usr/sbin usr/bin usr/lib usr/modules//同上

echo "make node in dev/console dev/null"

mknod -m 600 dev/console c 5 1 //创建设备节点,若失败则启动时找不到console mknod -m 600 dev/null c 1 3 //同上

mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp

mkdir var/lib var/lock var/run var/tmp

chmod 1777 tmp //改变使用权使得只有用户有权删除他

chmod 1777 var/tmp

echo "-------make direction done---------"

b.因为这里使用动态链接库也可使用静态链接库(也可使用静态库,但静态库比较大,实际开发时往往使用动态库),这里直接拷贝友善之臂的动态库,root_qtopia下载后打开将lib 下的所有文件复制到rootfs目录下的lib目录

在这里我的为 cp /home/root_qtopia/lib* /home/filesystem/rootfs/lib

c.配置busybox,进入busybox目录修改makefile文件指定交叉编译器和平台

CROSS_COMPILE ?=arm-linux- //大约在164行

ARCH ?=arm //大约在189行

接下来执行make menuconfig开始配置若你有友善的默认配置的话可以直接参考拷贝

配置过程如下(1)Busybox Settings--->

一项项配置如下打开第一项

Build Options--->

[*] Build BusyBox as a static binary(no shared libs)//指定使用静态链接库,可选可不选,这里使用动态链接库。

Busybox Library Tuning --->

(1024)Maximum length of input

[*] vi-style line editing commands

[*]Fancy shell prompts

(2)Linux System Utilities --->

[*]Support /etc/mdev.conf //自动产生驱动程序所需设备节点

[*]Support command execution at device addition/removal

(3) Linux Module Utilities---> [ ]simplified modutils

[*] insmod

[*] rmmod

[*] lsmod

[*] modprobe

d.执行编译 make CONFIG_PREFIX=/home/filesystem/rootfs install

/home/filesystem/rootfs为rootfs所在目录。

在rootfs目录下会生成目录bin、sbin、usr和文件linuxrc的内容。

e.修改etc配置文件进入创建的rootfs目录

(1)拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。

(2)在etc/下创建mdev.conf文件(内容为空)

(3)etc/sysconfig目录下新建文件HOSTNAME,内容为” mini2440”。

(4)etc/inittab文件:仿照Busybox的examples/inittab文件,在etc/目录下创建一个

inittab文件,写上以下内容:

#etc/inittab

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

::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

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

(5)创建etc/init.d/rcS文件:

这是一个脚本文件,可以在里面添加自动执行的命令

#!/bin/sh

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

runlevel=S

prevlevel=N

umask 022

export PATH runlevel prevlevel

echo"--------- munt all--------"

mount –a

echo /sbin/mdev>/proc/sys/kernel/hotplug

mdev -s

echo "*************************"

echo "**********************mini2440ARM**************" echo "Kernel version:linux-2.6.32"

echo "author:sun"

echo "Data:2010,05,08"

echo "***********************"

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

然后改变他的属性chmod +x etc/init.d/rcS

(6)创建etc/fstab文件内容如下:

#device mount-point type option dump fsck order

proc /proc proc defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

none /tmp ramfs defaults 0 0

sysfs /sys sysfs defaults 0 0

mdev /dev ramfs defaults 0 0

(7)创建etc/profile文件:

#Ash profile

#vim:syntax=sh

#No core file by defaults

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

USER="id -un"

LOGNAME=$USER

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

PATH=$PATH

HOSTNAME='/bin/hostname'

export USER LOGNAME PS1 PATH

到这里根文件系统就已经制作完毕了。

四.几种常用的起根文件系统方式

1.yaffs2起根文件系统方式

a.去https://www.sodocs.net/doc/dc8693327.html,/node/346下载yaffs2源码

然后解压 tar –zxvf yaffs2接下来打补丁

/patch-ker.sh c /home/linux2.6.32

/home/linux2.6.32为需要打补丁的内核目录

b. 到友善之臂的网站下载,mkyaffs2image.tgz yaffs2文件系统制作工具

解压后有2个文件,一个128针对nand flash 大页的一个针对小页的

Mini2440为小页故 ./ mkyaffs2image rootfs rootfs.img制成根文件系统映像文件,下载至开发板即可。

2.nfs起根文件系统

a.启用NFS根文件系统需要在内核中指定,故要重新配置和编译内核

首先,进入内核目录,在修改makefile文件指定交叉编译器和平台后,清除配置make distclean,后使用make mini2440_defconfig 生成.config配置文件vim .config打开配置文件约340

修改如下:CONFIG_CMDLINE="root=/dev/nfs nfsroot=211.67.216.31:/nfsroot/rootfs ip=211.67.216.32 rw console=ttySAC0 mem=64M"

root=/dev/nfs:表示用nfs起根文件系统

nfsroot=211.67.216.31:/nfsroot/rootfs表示nfs起的根文件系统位于nfs服务器的nfsroot/rootfs目录服务器IP为nfsroot后所接

ip=211.67.216.32开发板地址要求与服务器IP在同一网段rw文件可读写

console=ttySAC0 mem=64M ttySACO作控制台内存为64M

配置内核make menuconfig如图在general setup目录file systems—》network file systems

选择NFS起根文件系统如上图

确定后编译内核 make uImage

修改nfs服务器配置 vim etc/export

/nfsroot/rootfs 211.67.216.* (rw,sync,no_root_squash) 指定同开发板为同一网段然后重启NFS服务器/etc/init.d/nfs restart 将编译好的内核下载到开发板即可

3.ramdisk起根文件系统

同样需要重新配置,编译内核首先make distclean 清除原有配置然后make mini2440_defconfig 修改配置文件.config vim .config 然后同样修改约340行修改如下CONFIG_CMDLINE="initrd=0x32000000,0x200000 root=/dev/ram rw console=ttySAC0 men=64M "

root=/dev/ram:表示用ramdisk起根文件系统

initrd=0x32000000表示内核冲0x32000000开始读取读取0x200000大小的ramdisk

rw 文件系统可读写

console=ttySAC0 mem=64M ttySACO作控制台内存为64M

接着make menuconfig修改配置文件在general setup目录下找到initial RAM启用ramdisk 然后在device drivers –》block devices中选中arm block device support接着编译内核make uImage

然后进入 nfsroot/rootfs删除内核模块目录 rm lib/modules/2.6.32-FriendlyARM/* -rf 用./genext2fs -b 8129 –d /nfsroot/rootfs ramdisk

gzip -9 -f ramdisk制作好ramdisk文件系统。

将ramdisk文件系统下载到32000000处将内核下载到31000000处启动开发板即可(mini2440开发板)

嵌入式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.sodocs.net/doc/dc8693327.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的一些选项。这里主要需要配置:

基于busybox的根文件系统制作

龙源期刊网 https://www.sodocs.net/doc/dc8693327.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常用工具功能有所

实验四 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

在硬盘上制作根文件系统.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 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。

实验八 构建根文件系统

实验八构建根文件系统 一、实验目的 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)

嵌入式 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)

根文件系统制作

Linux根文件系统的制作 1. 根文件系统 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。 注:对于我们应用开发来说,购买开发板的时候,厂家会提供好现成的根文件系统和BootLoader等,如果需要,我们可以改变其中的命令而无需从头开始制作一个新的根文件系统。不过这儿的制作过程可以让我们更深一点理解Linux的文件系统。 2.主要的根文件系统 * 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。这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试。 3.Ramdisk制作 RAMDisk的制作方法如下:

Linux内核配置编译与文件系统构建要点

Linux内核配置编译与文件系统构建 南京大学 黄开成101180046 2012.11.11 一:实验目的 1.了解嵌入式系统的开发环境,内核与文件系统的下载和启动; 2.了解Linux内核源代码的目录结构及各自目录的相关内容,了解Linux内核各配置选项内容和作用,掌握Linux内核的编译过程; 3.了解嵌入式操作系统中文件系统的类型和应用、了解JFFS2文件系统的优点及其在嵌入式系统中的作用、掌握利用Busybox软件制作嵌入式文件系统的方法,并且掌握嵌入式Linux文件系统的挂载过程。二:实验环境说明 1.PC机使用openSUSE 14 Enterprise 系统。 2.开发板使用深圳市武耀博德信息技术有限公司生产的基于Inter 的PXA270处理器的多功能嵌入式开发平台EELIOD。 3.PC机通过RS-232串口与开发板相连,在PC机终端上运行minicom 程序构造一个开发板上的终端,用于对开发板的控制。 4.PC机与开发板通过ethernet网络相连接,并可在开发板上通过加载网络文件系统(NFS)与PC机通信。 5.Bootloader可以通过tftp协议从PC机上下载内核镜像和根文件系统镜像。下载目录为/tftpboot 。 6.用于开发板的Linux内核源码为linux-2.4.21-51Board_EDR,

busybox版本为busybox-1.00-pre5。 7.交叉编译器的路径为/usr/local/arm-linux/bin/arm-linux。 三:实验操作过程和分析记录 1.嵌入式系统的开发环境和开发流程: 1.1启动minicom和开发板 在PC机上打开一个终端,输入: >minicom 按Ctrl+A-o进入minicom的configuration界面。对串行通信接口进行配置,串口设置为:/dev/ttyS0(串口线接在PC机的串口1上)、bps=115200、8位数据、无校验、无流控制。 然后打开开发板电源,看到屏幕有反应之后,按任意键进入配置界面,如果长时间没有按下任何键,bootloader将会自动从flash中读取内核和根文件系统并启动开发板上的Linux系统。 分析:嵌入式系统中,通常并没有像PC机中BIOS 那样的固件程序,因此整个系统的加载启动任务完全由bootloader来完成。bootloader的主要作用是:初始化硬件设备;建立内存空间的映射图;完成内核的加载,为内核设置启动参数。 按0进入命令行模式,出现51board>,可以设置开发板和PC机的IP 地址: 51board> set myipaddr 192.168.208.133(设置开发板的IP地址) 51board> set destipaddr 192.168.208.33(设置PC机的IP地址)注意IP地址的设置:使其处于同一网段,并且避免和其他系统的

《嵌入式系统》考试试卷及答案

《嵌入式系统》课程试卷 考试时间:__120___分钟开课学院___计算机___ 任课教师____________ 姓名______________ 学号_____________班级_______________ 一.单项选择题(2 × 20): 1下面不属于Xscale微架构处理器的主要特征有:( ) A.采用了7级超级流水线、动态跳转预测和转移目标缓冲器BTB技术(Branch Target Buffer)。 B.支持多媒体处理技术、新增乘/累加器MAC、40位累加器、兼容ARM V5TE 指令和特定DSP型协处理器CP0。 C.采用了32KB的指令Cache。 D.采用了64KB的数据Cache。 2以下不属于XScale超级流水线的流水级是( ) A.寄存器文件/移位级(FR) B.写回级(XWB) C.寄存器读取级 D.和执行级二(X2) 3 目前嵌入式系统领域中使用最广泛、市场占有率最高的实时系统是:() A. Symbian B. Windows CE C. VxWorks D. QNX 4 下面那句话的描述是不正确的?( ) A.在一个基于XScale内核的嵌入式系统中,系统在上电或复位时通常都从

地址0x00000000 处开始执行 B.引导装载程序通常是在硬件上执行的第一段代码,包括固化在固件中的 引导代码(可选)和Boot Loader两大部分。 C.在嵌入式系统中,Boot Loader不依赖于硬件实现。 D.Boot Loader就是在操作系统内核运行之前运行的一段小程序。 5 通常情况下,目标机上的Boot Loader通过串口与主机之间进行文件传输,下面不属于通常使用的传输协议的是:( ) A.modem协议 B.xmodem协议 C.ymodem协议 D.zmodem协议 6 Make预置了一些内部宏,其中$@表示:() A.没有扩展名的当前目标文件 B.当前目标文件 C.当前目标文件最近更新的文件名 D.当前目标文件最近更新的文件名 7 在Default kernel command string “root=1f03 rw console=ttyS0,115200 init=/linuxrc”中,代表根文件系统(“/”) 的设备文件主号码是什么?( ) A.1f B.03 C.ttyS0 D.115200 8 用命令dd if=/dev/zero of=ramdisk_img bs=1k count=8192创建的ramdisk_img 其空间大小为多少?( ) A.8M bit

定制最简linux和根文件系统(平台龙芯1B开发板)

定制最简linux和根文件系统(平台龙芯1B开发板)

版本历史

1. 前言 (5) 1.1. 开发板版本号 (7) 1.2. 工具链版本号 (8) 1.3. 参考文档及其版本号 (8) 1.4. 目标 (9) 2. 搭建开发环境 (9) 3. 制作根文件系统 (11) 3.1. 配置 (11) 3.1.1. 拷贝源码,并解压 (11) 3.1.2. 配置选项简述 (12) 3.2. 编译 (13) 3.3. 构建根文件系统 (15) 3.3.1. 建立系统根目录 (15) 3.3.2. 建立设备文件 (16) 3.3.3. 建立系统配置文件 (16) 4. 编译linux (22) 4.1. 配置 (23) 4.1.1. 首先拷贝源码,并解压 (23) 4.1.2. 不安装Ncurses (24)

4.1.3. 没有拷贝.config (24) 4.1.4. 不用修改Makefile (25) 4.1.5. 配置选项简述 (26) 4.2. 编译 (30) 5. 启动运行linux (31) 5.1. 拷贝vmlinux到tftp服务器目录下 . 31 5.2. 设置PMON的ip地址 (31) 5.3. 下载内核 (32) 5.4. 启动linux (33)

1.前言 很高心拿到了龙芯1B开发板。然后仔细的看了开发板光盘里的《1B开发板用户手册.pdf》。里面写得非常详细,并且都附有截图,很明了。从最开始装虚拟机到编译linux,制作根文件系统等等,连虚拟机软件和Ubuntu系统镜像都有。可以说这套开发板考虑得非常周到。 然后我就参照《1B开发板用户手册.pdf》编译了linux,制作了根文件系统,最后终于跑起来,进入了shell。 这里谈谈我的感想 用户手册更像一个工具书 就拿根文件系统来说吧。Cramfs,Jffs2,Yaffs2的制作步骤都有,这表示该手册很全面,但是如果是一个初学者的话,给的选择太多不一定是好事。这也是我想写这篇文档的原因。我想linux 的配置尽量简单(除了串口驱动以外,其它的比如,网卡,声卡,触屏等都暂时不需要),根文件系统也尽量简单(手册中的已经很简单了,后面我们就参照手册),另外为了再简单一点我把

定制最简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

Ubuntu for Arm根文件系统制作

1.安装rootstock软件 rootstock是一个用来制作Ubuntu根文件系统的工具,可以使用apt-get install rootstock获取,也可以在官网直接下载:https://https://www.sodocs.net/doc/dc8693327.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

嵌入式FAT文件系统

嵌入式FAT文件系统 嵌入式FAT文件系统

1.总则 本文件是嵌入式FAT文件系统技术资料,嵌入式FA T文件系统开发,应用人员均可通过阅读本文件,以掌握文件系统的原理,和应用。 2.参考文件 1)Microsoft Hardware White Paper FAT: General Overview of On-Disk Format 2)Microsoft Hardware White Paper Long Filename Specification 3.命名规范 1)盘符命名规范 a)盘符以物理磁盘分区的先后次序分配,从C开始到Z结束 2)文件命名规范(支持长文件名) a)文件名由文件名和扩展名两部分组成,其中1)短文件名长度不超过8个字符,长 文件名长度不超过255个字符2)文件扩展名不超过3个字符 b)文件名统一使用英文字母、数字和下划线的组合 c)文件名称必须由字母开始 d)文件名不区分大小写 4.文件寻址路径规范 1)文件寻址路径规范采用与Windows/DOS兼容的规范,其中 a)在路径的开始在“:\”前面用一个英文字母表示寻址盘符,盘符从C开 始到Z结束;路径以字符“\”开始,则表示从当前打开盘符根目录开始寻址; 路径以字符“A”“Z”开始,第二个字符不是“:”,为相对路径,表示从文件系 统的当前目录开始寻址; b)父目录与子目录之间用“\”分符,“\”后面的目录是子目录,其父目录在“\”之前。 c)文件名应放在文件寻址路径之后,相对路径文件寻址路径默认为文件系统的当前 目录 d)使用进入目录函数char cd_folder(char * foldername,char mode)可改变文件系统 的当前目录 e)路径实例--“c:\dos\program files\arv.c”表示寻址c盘根目录,dos子目录,program files子目录的文件avr.c f)路径最大长度占用字节数不超过260,如路径”c:\program files\system32\.....\Jsmart Memory Stick AVR”占用字节数不能超过260; 相对路径如” system32\.....\Jsmart Memory Stick A VR”加上当前目录之和占用字节数 不超过260 g)文件寻址路径不区分大小写 5.源程序文件规范 1)fat.c—file system 源代码 2)fat.h—file system include文件 3)Fat_cfg.h—file system 配置文件*.h 4)Types.h—数据类型重定义文件

farsight 构建Linux根文件系统

构建Linux根文件系统 1. 根文件系统 1.1 定义 存放系统启动所必需的文件 内核映像文件(嵌入式系统中,内核一般单独存放在一个分区中); 内核启动后运行的第一个程序(init); shell程序; 应用程序所依赖的库; …... 1.2 目录结构 1.2.1 FHS标准: (Filesystem Hierarchy Standard,文件系统层次标准); 定义文件系统中目录、文件存放的原则,不是强制性标准。 1.2.2 目录: /bin 存放所有用户都可以使用的、基本的命令; 比须和根文件系统在一个分区中。 /sbin 存放系统命令,只有管理员可以使用的命令 必须和根文件系统在同一分区中。 /---/sbin *基本的系统命令,用于启动系统、修复系统等。 *---/usr/sbin *不是急迫需要使用的系统命令。 *---/usr/local/sbin /本地安装的系统命令。 /dev:存放设备文件。 /etc:存放配置文件。 /lib /---libc.so.*动态链接C库。 *---ld*链接器、加载器。 /---modules内核可加载模块存放的目录。 /home:用户目录。 /root:根用户目录。 /usr 存放共享、只读的数据和程序; 可以存放在另一个分区中,系统启动后再挂接到根文件系统的/usr目录下。 /var:存放可变的数据。 /proc proc文件系统的挂接点; proc文件系统是一个虚拟的文件系统,用来表示系统的运行状态。 /mnt:用于临时挂接某个文件系统的挂接点。 /tmp 用于存放临时文件; 为减少对Flash的操作,可以在/tmp目录上挂接内存文件系统。

ramdisk根文件系统制作

制作根文件系统有两种方法 1、利用开发板提供的映像文件制作ramdisk 2、利用busybox制作根文件系统(制作过程复杂) 采用第一种方法制作需要的ramdisk 1、拷贝已有的uramdisk.image.gz 到新建的tmp/下,cp uramdisk.image.gz tmp/ 2、去掉mkimage生成的64 bytes 的文件头,生成新的ramdisk.image.gz $ dd if=uramdisk.image.gz of=ramdisk.image.gz bs=64 skip=1 3、 gunzip解压ramdisk.image.gz 生成ramdisk.image $ gunzip ramdisk.image.gz 4、新建挂载目录“ramdisk”,并将ramdisk.image挂载 $ sudo mount -o loop,rwramdisk.imageramdisk 5、接下来,只需要将ramdisk目录下的内容全部拷贝到rootfs下即可 cp -R ramdisk /* rootfs 这样就有了自己的rootfs,省去利用busybox制作的麻烦了 有了制作好的rootfs,下面就开始制作映像文件了 1、创建镜像文件ramdisk8M.image,并设置大小为8M,文件系统格式为ext2 $dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192 $mke2fs -F ramdisk8M.image -L "ramdisk" -b 1024 -m 0 $tune2fs ramdisk8M.image -i 0 $chmod 777 ramdisk8M.image 大小可以按照需要自己调整,但是最好不要超过32M,创建ramdisk目录,将ramdisk8M.image 挂载到该目录下 $mkdirramdisk $mount -o loop ramdisk8M.image ramdisk/ 接下来,只需要将rootfs目录下的内容全部拷贝到ramdisk下即可 $cp -R rootfs/* ramdisk 注意,这里cp的参数一定是R而非r。 这样,这个镜像文件的内容就是rootfs目录下的内容了。将其卸载就可, $umountramdisk/ 到此,根文件系统镜像文件ramdisk8M.image 制作完成,将其压缩 gzip -9 ramdisk8M.image 用mkimage添加文件头,生成新的uramdisk.image.gz 供u-boot 使用 $ mkimage -A arm -T ramdisk -C gzip -n Ramdisk -d ramdisk8M.image.gzuramdisk.image.gz 可以制作一个文件buildfs,如下

嵌入式linux下的文件系统

嵌入式linux下常见的文件系统RomFS:只读文件系统,可以放在ROM空间,也 可以在系统的RAM中,嵌入式linux中常用来作 根文件系统 ?RamFS:利用VFS自身结构而形成的内存文件系 统,使用系统的RAM空间 ?JFFS/JFFS2:为Flash设计的日志文件系统?Yaffs:专门为Nand Flash设计 ?proc:为内核和内核模块将信息发送给进程提 供一种机制,可以查看系统模块装载的信息?devFS:设备文件系统 Linux上的Ext2fs ?支持4 TB 存储、文件名称最长1012 字符 ?可选择逻辑块 ?快速符号链接 ?Ext2不适合flash设备 ?是为象IDE 设备那样的块设备设计的,逻辑块大小必 须是512 byte、1 KB、2KB等 ?没有提供对基于扇区的擦除/写操作的良好管理 ?如果在一个扇区中擦除单个字节,必须将整个扇区复制到RAM,然后擦除,再重写入

?在出现电源故障时,Ext2fs 是不能防止崩溃的 ?文件系统不支持损耗平衡,缩短了flash的寿命 jffs/jffs2文件系统的优缺点 ?日志文件系统 ?提供了更好的崩溃、掉电安全保护 ?jffs2支持对flash的均匀磨损 ?在扇区级别上执行闪存擦除/写/读操作要 比Ext2文件系统好 ?文件系统接近满时,JFFS2 会大大放慢运行 速度——垃圾收集 Nand上yaffs文件系统的优势 ?专门为Nand flash设计的日志文件系统 ?jffs/jffs2不适合大容量的Nand flash ?jffs的日志通过jffs_node建立在RAM中,占用RAM空间:对于128MB的Nand大概需要4MB的空间来维护节点 ?启动的时候需要扫描日志节点,不适合大容量 的Nand flash ?FAT系统没有日志 编译yaffs文件系统 ?mtd的最新补丁升级? ?接口更新,适合与yaffs

嵌入式文件系统镜像制作及烧写

嵌入式文件系统镜像制作及烧写 一。cramfs 文件系统+ jffs2文件系统。 1. cramfs 文件系统:存放系统文件:只读。 jffs2文件系统:存放用户文件:读写。 修改文件系统的自启动脚本: vim /etc/init.d/rcS 在其中添加: mount -t jffs2 /dev/mtdblock3 /home/y (给用户) 2.通过虚拟机制作cramfs文件系统: sudo mkfs.cramfs ./rootfs ./rootfs.cramfs 在虚拟机中,将做好的文件系统拷贝到tftp目录下,以备下载用: cp rootfs.cramfs /tftpboot 开发板下载cramfs文件系统到内存中: tftp 20008000 rootfs.cramfs 擦写nand flash: nand erase 400000 6400000 (此为分区大小) 将下载的文件系统烧写到开发板的nand flash中: nand write 20008000 400000 文件系统实际大小 同时擦写/dev/mtdblock3所在的文件系统(用户) nand erase 6800000 9800000 (此为分区大小) 设置u-boot 环境变量: setenv bootargs root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200

二。jffs2文件系统 1.通过虚拟机制作jffs2文件系统: sudo mkfs.jffs2 -r ./rootfs -o ./rootfs.jffs2 -e 0x20000(块大小) --pad=0x6400000(分区大小) –n 将做好的文件系统拷贝到tftp目录下,以备下载用: cp rootfs.jffs2 /tftpboot 开发板下载jffs2文件系统到内存中: tftp 20008000 rootfs.jffs2 擦写nand flash: nand erase 400000 6400000(此为分区大小) 将下载的文件系统烧写到开发板的nand flash中: nand write 20008000 400000文件系统实际大小 或:nand write 20008000 400000 6400000 设置u-boot 环境变量: setenv bootargs root=/dev/mtdblock2 init=/linuxrc rootfstype=jffs2 rw console=ttySAC0,115200

相关主题