1.制作根文件系统及nfs烧写。 然后基于以下5单来构建最小根文件系统。

1.制作根文件系统及nfs烧写

在上节制作busybox后(位于/work/nfs_root/mini_fs), 然后基于以下5只来构建最小根文件系统:

1.1 先解压文件系统,/wok/nfs_root
目录下是已经组织好的各种文件系统:
① fs_mini.tar.bz2 是太小的到底文件系统,里面的设备节点是先行建立好之;
② fs_mini_mdev.tar.bz2 凡无与伦比小之彻底文件系统,里面的配备节点是当系统启动后使
mdev 自动建立之;
③ fs_qtopia.tar.bz2 凡是 JZ2440 使用的支撑触摸屏的一干二净文件系统;
④ fs_xwindow.tar.bz2 凡是书上的冲 X 的到底文件系统。

(1)/dev/console(终端控制台,
提供正规输入、标准输出和规范错误)

图片 1

/dev/null  (表示空设备终端, 所有写到这个文件中的数据都会被丢弃掉。)

步骤:  

(2)init进程的顺序(也即是busybox,因为init程序在busybox中,已经成功)

cd
/work/nfs_root          // 进入nfs_root目录

(3)/etc/inittab(用于init进程读取配置,
然后实施inittab里的指定应用程序)

mkdir  tmp                          //新建目录tmp

(4)应用程序(被inittab配置文件调用的应用程序)

cp    fs_mini_mdev.tar.bz2    tmp/    //
将fs_mini_mdev.tar.bz2文件系统压缩包复制到tmp目录里(这里因为fs_mini_mdev.tar.bz2文件系统为条例)  

(5)C库(glibc,被应用程序调用的C库函数,比如:printf,strcmp,fopen等)

cd  tmp/                                          //进入tmp目录

1.创建终端(/dev/console和/dev/null)

sudo   tar    xjf     fs_mini_mdev.tar.bz2     //使用sudo解压 ( 因为解压出来的 dev 目录下有部分配备节点,生成它们而就此到 root 权限)

1.1输入ls /dev/console /dev/null -l
查看pc机上顶的配备号:

1.2
解压好后,使用mkyaffs2image
工具进行打造文件系统映象文件

 图片 2

 由于拖欠ubuntu里不曾mkyaffs2image
工具,所以率先以Windows里之mkyaffs2image
工具复制到linux里之work/tools里,它于光盘里linux/tools 目录下 。

汲取:/dev/console主设备号=5,次设备号=1

 图片 3

     /dev/null 
主设备号=1,次设备号=3

 

1.2基于地方得出的设施号,创建console和null字符设备文件

步骤:  

mkdir dev                
//先在mini_fs目录下创造个dev目录(设备都位居dev目录下)

cd  /work/tools                                                //  
进入正复制的职目录下

cd dev/

sudo   cp  mkyaffs2image   /usr/local/bin                  
 //将mkyaffs2image 复制到 /usr/local/bin目录里

sudo mknod console c 5 1
   //创建console字符设备,

在意:bin目录主要存放在可执行命令文件,其中bin目录共有4栽:

sudo mknod null c 1 3    //创建null
字符设备,

/bin:用来放置根分区/上的次序。

2.
busybox早就做好,所以init进程的程序也不怕搞好了

/sbin:用来存放在系统管理程序的途径

3.构造/etc/inittab
(执行inittab里之指定应用程序)

/usr/bin:用来划分发包管理器

mkdir etc    
     //在mini_fs目录下创造个etc目录

/usr/local/bin:用来存放在用户自己之主次,不吃分发包管理器的控制

vi  etc/inittab      
//创建inittab文件

sudo  chmod   +x   /usr/local/bin/mkyaffs2image        //给mkyaffs2image
 添加  执行命令(添加后直接输入mkyaffs2image  就好查看下验证)        
   

inittab里补充加内容:

mkyaffs2image  fs_mini_mdev   fs.yaffs2    //
 将fs_mini_mdev制作成fs.yaffs2 映像文件。                        

console::askfirst:-/bin/sh   
  //action值必须小写  id可以写成/dev/xx或xx

图片 4

表示action=
askfirst(每次启动/bin/sh进程之前等待用户仍下enter键),然后指定/bin/sh的终端对应/dev/console字符设备

1.3
使用nfs烧写fs.yaffs2 映像文件

4.安装glibc库

步骤:

mkdir lib             
//在mini_fs目录下创办个lib目录 (存放库函数)

nfs 30000000 192.168.1.106:/work/nfs_root/tmp/fs.yaffs2                
   //192.168.1.106指的凡虚拟机IP地址

cd
/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib     //进入源目录

nand erase root                                                        
  // 擦除root分区(root:包含文件系统等,0x30260000~0x3fffffff)

cp *.so* /work/nfs_root/mini_fs/lib
-d        //复制glibc库到lib目录(*:匹配符,-d:保持链接)

nand write.yaffs 30000000   260000   $(filesize)    //
260000:0X30000000偏移地址   $(filesize) :指定烧写的文件大小

5.用到mkyaffs2image制作文件系统(yaffs1针对小页512B,yaffs2针对大页2KB)

2.施用nfs挂载虚拟机目录

5.1生成mkyaffs2image工具

步骤:

于/work/system目录中
有一个压缩文件yaffs_source_util_larger_small_page_nand.tar.bz2(保存了yaffs1和yaffs2)

ls                                                      
//查看开发板目录,其中mnt(mount)目录就用来开发板挂载的目

tar –xjf 
yaffs_source_util_larger_small_page_nand.tar.bz2    //解压

图片 5

解压得到Development_util_ok,里面纵使来yaffs1和yaffs2,如下图:

mount -t  nfs  -o  nolock,vers=2  192.168.1.106:/work/nfs_root     /mnt
 //mount命令用远端虚拟机/work/nfs_root目录挂载到开发板/mnt目录里

 图片 6

                                                                       
                                 //nolock:禁用文件锁  
  vers=2:nfs版本商谈2     192.168.1.106:虚拟机地址

5.2然后,进入yaffs2/utils,执行make
命令生成mkyaffs2image工具,将她复制到usr/local/bin目录:

 

cd yaffs2/utils

一般来说图,挂载后,进入mnt后即可看出虚拟机/work/nfs_root目录下文件了。

make

图片 7

sudo cp mkyaffs2image
/usr/local/bin

 

sudo chmod +x /usr/local/bin/
mkyaffs2image                //添加可实行性

 如果挂载失败,那么是以下简单单因:

5.3
mkyaffs2image制作yaffs2文件系统

1.规定板子是否跟虚拟机位于同一网段

cd /work/nfs_root              
//进入文件系统目录及同样重合

ifconfig eth0 up                 //开启网关0,连接网线到路由器

mkyaffs2image  mini_fs 
mini_fs.yaffs2     
//将mini_fs文件系统制作成mini_fs.yaffs2映像文件系统

ifconfig eth0 192.168.1.107       //设置ip,与虚拟机ip网段一样,

6.拿制作好的mini_fs.yaffs2通过DNW下充斥及板子上,进行考

ping 192.168.1.106             //与虚拟机ping一下,是否曾经连

串口输出如下图,发现无法打开控制台:

2.规定虚拟机是否会为挂载目录

图片 8

 要使虚拟机能够被挂载目录,在/etc/exports中上加要让挂载的目录即可

察觉凡是在开立console和null字符设备文件那里来了问题,因为无加权限模式,所以基本无法找到console。

例如:

剔除console和null设备,重新创设它们:

sudo vi /etc/exports                

sudo mknod –m 660  console c 5 1   
//创建console字符设备,设置权限用户以及组都能诵写

增长以下一段内容:

sudo mknod –m 660 null c 1 3   
//创建null 字符设备, 设置权限用户和组都能读写

/work/nfs_root   *(rw,sync,no_root_squash)   //要被挂载的目录:/work/nfs_root

重新制作yaffs2并烧写就能得逞了,
如下图:

sudo  /etc/init.d/nfs-kernel-sever  restart        //重启nfs服务

 图片 9

 

恰对应inittab配置文件被内容:console::
askfirst:-/bin/sh

  

askfirst:
启动/bin/sh进程之前等待用户仍下enter键    

 

太简便的到底文件系统就好了,接下开始到根文件系统。

* *

7
完美体系——添加ps命令

它是通过proc虚拟文件系统挂接到proc目录,然后当前历程的信息会坐文件的样式保留及proc目录,就足以为此ps命令来查看内存中当前历程的状态了

mkdir proc                   
//创建proc目录

mount –t proc none /proc      //挂载proc,
 none:表示运行mount命令时显示proc相关的出口

联网下就是足以运用ps命令了,如下图:

 图片 10

此间的PID进程号还盖文件之款式是了/proc目录里,例如cd
proc/1 ,进入init进程(init进程是基础第1个挂载的历程),如下图

 图片 11

其中fd文件就保存init进程的3单公文讲述符–标准输入(0)、标准输出(1)以及标准错误(2)

经过ls –l fd  
可以看来这3只文本讲述符都指向/dev/console控制台,如下图:

图片 12

7.1
inittab配置文件中多内容,避免手动mount挂载proc

方法1:

以inittab里搭内容:

::sysinit:/etc/init.d/rcS  
       //将/etc/init.d/rcS脚本设置成体系的初始化文件

然后mkdir -p etc/init.d 和vi
etc/init.d/rcS, 添加一行命令(也得以长任何命令)

mount -t proc none /proc   
  //挂载proc(前提根文件系统有proc目录)

连累加可尽权

sudo chmod +x
etc/init.d/rcS               //使脚本rcS能够执行命令

方法2:

除了采取以rcS中上加mount -t proc non
/proc命令

为可就此mount
-a  作用是加载文件/etc/fstab中布局的持有装备

其见面借助一个配置文件/etc/fstab

它的格式如下
(参考linux应用开发手册第368页)

图片 13

vi etc/init.d/rcS, 添加一行命令

mount -a   
  //加载文件/etc/fstab中布局的具有装备

然后创建fstab文件vi  etc
/fstab,添加内容:

#device   mount-point  type    
options   dump   fsck order

proc       /proc       proc    
defaults   0       0

足直接以板子里操作,然后再度开就能够使ps命令了。

透过cat proc/mounts
命令就可翻时挂载proc虚拟文件系统:

 图片 14

8
完美体系——使用mdev自动在/dev下创造设备节点

而今dev下单发生2独字符设备,如果大气日增设备的话,手动创建太累,可以行使udev。

mdev 是udev的一个迷你版,
它要的功用是管理/dev目录底下的设施节点。它以为是故来接任devfs及热插拔的效力

mdev以说明在busybox-1.7.0/docs/medev.txt中以及linux应用开发手册第369页,如下图:

 图片 15

自从上面得出mdev都急需内核sysfs、tmpfs、devpts的支撑,

sysfs是管理虚拟系统,为udev提供设备进口以及uevent通道,sysfs类型,需要挂载到/sys目录下

tmpfs是内存文件系统,tmpfs类型,需要挂载到/dev目录下

devpts是内核虚拟系统,
管理员通过文件系统和水源进行联系(读\描绘)的一样种渠道,
devpts类型,需要挂载到/dev/pts目录下

8.1
创建sysfs、tmpfs、devpts要挂载的目录

mkdir   /sys                    
//创建sysfs要挂载的目

mkdir   /dev/pts                
//创建pevptes要挂载的目

8.2  vi etc/init.d/rcS,
追加热拔插命令和安排/dev设备,添加内容如下:

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

//自动创建/proc/sys/kernel/hotplug,
/sbin/mdev并对准hotplug,使mdev支持热插拔

mdev -s                     
//将/dev目录下之设施文件创建成节点

8.3  vi  etc
/fstab,添加sysfs、tmpfs、pevpts挂载内容:

sysfs     /sys      sysfs      defaults  
0       0

tmpfs     /dev      tmpfs      defaults  
0       0

devpts    /dev/pts   devpts    
defaults   0       0

然后烧录至板子中翻效果,如下图,dev目录下自行创建了诸多节点,然后/proc/mounts里吧出挂载记录

图片 16

9
mkfs.jffs2制作jffs2文件系统(参考linux应用手册375页)

9.1 安装zlib(压缩动态库)

cd /work/GUI/xwindow/X/deps

tar -xzf zlib-1.2.3.tar.gz

cd zlib-1.2.3

./configure –shared –prefix=/usr 
//配置安装动态库(shared)到指定(prefix)的/usr目录下

make            //编译

sudo make install         //安装

9.2 然后编译mkfs.jffs2工具

cd /work/tools

tar -xjf
mtd-utils-05.07.23.tar.bz2

cd mtd-utils-05.07.23/util

make

sudo make install

9.3造jffs2文件系统

cd /work/nfs_root                  
//准备制作子目录mini_fs

mkfs.jffs2 -n  -s 2048  -e 128KiB  -d
mini_fs  -o mini_fs.jffs2

/*-n:表示每块不弥加祛除标记,-s:size一页大小也2k,-e:一片大小也128kb

-d:制作的dir目录,-o:输出文件       
*/

9.4
烧入板子中,并设置bootargs参数为yaffs启动

在uboot中输入:

set bootargs noinitrd
 root=/dev/mtdblock3 rootfstype=jffs2  init=/linuxrc
console=ttySAC0

// rootfstype:将root file system
type(根文件系统类型)强制设为jffs2

下一场save保存后更启航水源:

 图片 17

 

10
使用nfs挂载虚拟机目录

10.1规定板子是否和虚拟机位于同一网段

ifconfig eth0 up                
//开启网关0,连接网线到路由器

ifconfig eth0 192.168.0.107      
//设置ip

ping 192.168.0.106            
//与虚拟机ping一下,是否已经连接

10.2确定虚拟机是否能于挂载目录

首先使要虚拟机能够为他人挂载目录,在/etc/exports中补充加要被挂载的目录即可

例如:

sudo vi /etc/exports            

添加以下一段子内容:

/work/nfs_root/mini_fs  
*(rw,sync,no_root_squash)
//添加挂载目录:/work/nfs_root/mini_fs

 

sudo  /etc/init.d/nfs-kernel-sever 
restart        //然后更开nfs服务

10.3
然后以板子内核来挂载虚拟机目录

mkdir  /mnt                 
//创建而挂载的目录

mount
-t nfs -o nolock,vers=2 192.168.0.106:/work/nfs_root/mini_fs    
/mnt

          
//将远端虚拟机/work/nfs_root/mini_fs目录挂载到开发板/mnt目录里

//命令详细参数参考:
http://www.cnblogs.com/lifexy/p/7380549.html

正如图,然后板子内核的/mnt目录就是虚拟机/work/nfs_root/mini_fs目录了

 图片 18

 

11
使用nfs 作为根本文件系统启动

经设置u-boot的bootargs来转开机自动进入nfs文件系统,不需mount指令

步骤(参考http://www.cnblogs.com/lifexy/p/7049743.html):

进入uboot,输入:

set  bootargs  noinitrd  root=/dev/nfs
 nfsroot=192.168.0.106:/work/nfs_root/mini_fs
 ip=192.168.0.107:192.168.0.106:192.168.0.1:255.255.255.0::eth0:off 
 init=/linuxrc console=ttySAC0            

 //设置npptargs,添加nfsroot(红色:远端服务器参数,蓝色:开发板客户端参数)

save                                           
//保存参数

然后重新开开发板进入本,就开行nfs文件系统了

 图片 19

 

相关文章