详解-制作根文件系统,并使用yaffs,jffs,nfs挂载系统(2)

1.安装mkyaffsimage, mkyaffs2image命令(用来制作yaffs文件系统)

第一个命令针对Flash小页512B,第二个针对Flash大页2KB
首先下载压缩文件 yaffs_source_util_larger_small_page_nand.tar.bz2
安装mkyaffs2image命令为例:

tar –xjf yaffs_source_util_larger_small_page_nand.tar.bz2 //解压出yaffs1和yaffs2
cd /Development_util_ok/yaffs2/utils
make    //生成mkyaffsimage和mkyaffs2image
sudo cp mkyaffs2image /usr/local/bin 
//将mkyaffs2image命令复制到可执行目录路径下

然后输入mkyaffs2image命令,如果不能运行,则使用chmod命令加可执行属性即可

 

2.安装mkfs.jffs2命令(用来制作jffs文件系统)
首先下载压缩文件mtd-utils-05.07.23.tar.bz2,然后安装步骤如下:

tar -xf mtd-utils-05.07.23.tar.bz2
cd mtd-utils-05.07.23/util
make
sudo make install

 

3.制作文件系统

3.1 解压安装busybox-1.7.0

cd busybox-1.7.0
make menuconfig    

然后在菜单里进入-> Busybox Settings-> Busybox Library Tuning选上:

[*] Tab completion //tab补齐命令

然后输入vi Makefile,找到CROSS_COMPILE字段,后面添加”arm-linux-”:

 接着输入:

make //编译
mkdir /work/nfs_root/busybox1.7_fs //创建要安装的文件系统目录 
make install CONFIG_PREFIX=/work/nfs_root/busybox1.7_fs //指定安装位置

安装好了后,可以看到busybox1.7_fs/bin里便保存着linux命令,如下图所示:

 

3.2构造lib目录(被应用程序调用的C库函数,比如:printf,strcmp,fopen等)

cd /work/nfs_root/busybox1.7_fs
mkdir lib //创建lib目录 (存放库函数)
cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib //进入源目录
cp *.so* /work/nfs_root/ busybox1.7_fs/lib -d //复制glibc库到lib目录(*:匹配符,-d:表示如果是链接文件,则继续保持链接)

 

3.3构造etc目录
在etc目录下,需要构造以下3个文件

  • etc/inittab :     init进程会根据inittab文件里,来创建其它子进程,比如-/bin/sh进程
  • etc/init.d/rcS: 脚本文件,里面用来执行命令,比如设置网卡,使用mount -a来装载/etc/fstab中的文件系统
  • etc/fstab :       里面保存要被挂载的哪个文件系统,比如proc、sysfs、tmpfs、devpts等系统

1)构造/etc/inittab

cd /work/nfs_root/busybox1.7_fs
mkdir etc/
vi etc/inittab

添加以下几句:

::sysinit:/etc/init.d/rcS     //内核启动时,执行/etc/init.d/rcS
console::askfirst:-/bin/sh    //启动console对应的-/bin/sh进程之前,等待用户按enter键,等价于: ::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot     //按下ctrl+alt+del组合键时,启动reboot命令
::shutdown:/bin/umount -a -r  //系统关机前,卸载所有文件系统

2)构造etc/init.d/rcS

mkdir etc/init.d/ 
vi etc/init.d/rcS

添加以下几句:

mount -a //装载/etc/fstab中的文件系统
echo /sbin/mdev > /proc/sys/kernel/hotplug //使/sbin/medv指向hotplug,从而支持热拔插
mdev -s 
//使用medv命令将会扫描/sys/class和/sys/block中所有的类设备目录,然后把读取到的dev相关文件自动在/dev创建下的所有设备节点,

并给rcS文件加上可执行权限:

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

3)构造etc/fstab

PS: 使用mdev命令需要sysfs、tmpfs、devpts这3个文件系统的支持

  • mdev:   是udev的一个迷你版, 它主要的功能是管理/dev目录底下的设备节点。它同时也是用来接替devfs及热插拔的功能
  • proc:     虚拟文件系统, 它只存在内存当中,而不占用外存空间, 可以通过proc得到系统的信息,比如运行的每个进程pid便存在/proc里
  • sysfs:    管理虚拟系统,为udev提供设备入口和uevent通道, sysfs类型,需要挂载到/sys目录下
  • tmpfs:   临时文件系统,用来减少对flash频繁读写,tmpfs类型,需要挂载到/dev目录下
  • devpts:  内核虚拟系统, devpts类型,需要挂载到/dev/pts目录下
mkdir proc/ //创建proc要挂载的目录
mkdir sys/ //创建sysfs要挂载的目录,
mkdir dev/pts -p //创建devpts要挂载的目录
vi etc/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
devpts /dev/pts devpts defaults 0 0

 

3.4构造其它文件/目录
1)创建终端文件(dev/console和dev/null)

sudo mknod -m 660 dev/console c 5 1 
sudo mknod -m 660 dev/null c 1 3 

2)创建其它目录

mkdir mnt tmp root


4.制作烧写yaffs2

mkyaffs2image busybox1.7_fs busybox1.7_fs.yaffs2    //使用mkyaffs2image生成yaffs2

进入uboot烧写:

nfs 30000000 192.168.1.199:/work/nfs_root/busybox1.7_fs.yaffs2
nand erase root
nand write.yaffs 0x30000000 0x260000 $(filesize) 
// write.yaffs:实现yaffs文件系统镜像的烧写, 如果NandFlash相应的区域有坏块,可以跳过坏块。

设置启动参数:

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

启动内核:


5.制作烧写jffs2

mkfs.jffs2 -n -s 2048 -e 128KiB -d busybox1.7_fs -o busybox1.7_fs.jffs2
/*-n:表示每块不添加清除标记, -s:size一页大小为2k,  -e:一块大小为128kb-d:制作的dir目录,    -o:输出文件 */

进入uboot烧写:

nfs 30000000 192.168.1.199:/work/nfs_root/busybox1.7_fs.jffs2
nand erase root
nand write.jffs2 0x30000000 0x260000 $(filesize) 
// write. jffs2 :和yffs原理一样 

设置启动参数:

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

启动内核:

 

6.通过uboot启动nfs系统
6.1 在内核documentation目录里找到nfsroot.txt文档
找到nfs服务器地址设置"nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]":

  • server-ip:    服务器(虚拟机)IP地址
  • root-dir:      nfs根目录位置
  • nfs-options:选项,默认可以不填

找到nfs客户端设置"ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>":

  • client-ip:  客户端(开发板)IP地址
  • server-ip:服务器(虚拟机)IP地址
  • gw-ip:      网关地址,一般都是192.168.1.1
  • netmask:  子网掩码,255.255.255.0
  • hostname:主机名,可以不填
  • device:      网卡设备,默认一个网卡就填eth0
  • autoconf:  自动连接,填off不自动连接

6.2 所以设置启动参数为

set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.199:/work/nfs_root/busybox1.7_fs ip=192.168.1.198:192.168.1.199:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 

启动内核:

 

7.在内核里使用mount挂载nfs目录

mount -t nfs -o nolock,vers=2 192.168.1.199:/work/nfs_root /mnt 
//mount命令将远端虚拟机/work/nfs_root目录挂载到开发板/mnt目录里
//nolock:禁用文件锁 vers=2:nfs版本协议2 192.168.1.199:虚拟机地址

运行出错:

找到原因是网卡没设置,输入mount前设置即可(也可以直接写入/etc/init.d/rcS):

ifconfig eth0 up
ifconfig eth0 192.168.1.198

 


8.如果mount挂载/启动nfs系统失败,那么有可能有下面两个原因
8.1 确定板子是否与虚拟机位于同一网段

ifconfig eth0 up //开启网关0,连接网线到路由器
ifconfig eth0 192.168.1.107 //设置ip,与虚拟机ip网段一样,
ping 192.168.1.106 //与虚拟机ping一下,是否已通


8.2 确定虚拟机是否能被挂载目录
要使虚拟机能够被挂载目录,在/etc/exports中添加需要被挂载的目录即可
例如:

sudo vi /etc/exports 
/work/nfs_root *(rw,sync,no_root_squash)            //要被挂载的目录:/work/nfs_root
sudo /etc/init.d/nfs-kernel-sever restart            //然后输入命令重启nfs服务

转载于:https://www.cnblogs.com/lifexy/p/7049743.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据中心综合布线时,使用交叉连接和互连的好处?

数据中心中&#xff0c;在交换机之间或交换机与服务器之间&#xff0c;为了灵活性和方便管理&#xff0c;有源设备之间都是使用交叉连接和通过配线架互联。在一些场合&#xff0c;还有的要求在同一通道内使用多个交叉连接或互联。 大多数人都知道&#xff0c;永久链路是通道的…

Oracle 通过出生日期计算年龄

sysdate 为系统日期时间&#xff0c;BIRTH_DATE 为表中出生日期字段 SELECTCOUNT( * ) FROMBARN_SWALLOW_INFO WHEREVALID_FLAG 1 AND IS_JINQIAO 1 AND TRUNC( months_between( SYSDATE, BIRTH_DATE ) / 12 ) > 25 AND TRUNC( months_between( SYSDATE, BIRTH_DATE )…

网站如何集成百度UEditor编辑器

在平时的网站维护使用过程中&#xff0c;富文本编辑器是网站必不可少的元素之一。现在市面上各种编辑器功能设计参差不齐&#xff0c;自己做了几个网站都是用蝉知建站系统做的&#xff0c;而蝉知默认内置的编辑器是KindEditor&#xff0c;功能简单&#xff0c;已经满足不了我的…

福禄克DSX系列教你如何测试铜缆跳线和光纤跳线

无论是用于在数据中心的光纤配线区和交换机之间进行连接的光纤跳线&#xff0c;还是用于将终端设备连接到工作区插座的局域网中的铜跳线&#xff0c;跳线都是网络不可或缺的一个组成部分&#xff0c;而跳线通常也是网络中最脆弱的环节。它比其他任何部件都更容易受到损坏。 由于…

通过福禄克LinkIQ网络电缆测试仪排除 VLAN 故障

IT行业的每个人都听说过局域网&#xff08;LAN&#xff09;&#xff0c;并且很可能知道它是一个由无数设备组成的网络——计算机、服务器、路由器、监控摄像头等他们都是都连接在一个物理位置。由于虚拟局域网&#xff08;VLAN&#xff09;在技术上并不存在于物理上&#xff0c…

2021-09-22

missing right parenthesis 少反括号 后面没跟反括号。

使用福禄克CFP单模光纤测试仪像专家一样设置参数!

在使用福禄克CFP单模光纤测试仪测试光纤链路时&#xff0c;如果要测试一个光纤接头的损耗&#xff0c;不可能只测量单个光纤接头&#xff0c;必须将其与类似的已知质量接头相匹配。这里光纤接头损耗指的是配对光纤接头的损耗&#xff0c;这也是为什么要设置参考值。 举例&…

java不要使用e.printStackTrace()

不要使用e.printStackTrace() 反例&#xff1a; 正例&#xff1a; 原因 e.printStackTrace()打印出的堆栈日志跟业务代码日志是交错混合在一起的&#xff0c;通常排查异常日志不太方便。e.printStackTrace()语句产生的字符串记录的是堆栈信息&#xff0c;如果信息太长太多&am…

阿里云服务器ECS按ctrl+alt+delete无法登录

今天在使用阿里云服务器远程桌面的时候发现怎么也进入不了&#xff0c;远程桌面无法连接&#xff0c;于是想到了在阿里云服务器管理控制台可以使用连接管理终端进行远程桌面连接&#xff0c;下面详细介绍阿里云服务器操作经验。 操作步骤如下 登录阿里云 - 进入云服务器管理控制…

DSX2-5000 CH测试结果使用福禄克LinkWare Live软件的好处

近日&#xff0c;福禄克网络宣布&#xff0c;福禄克LinkWare Live软件中的上传结果数量已超过5000万。如果您是在过去一年中为5000万中做出贡献的众多之一&#xff0c;那么您一定见证体会且享受到了在布线认证工作时随时随地与任何设备上任何人一起管理的方便性及成本节约的好处…

java异常日志不要只打一半,要输出全部错误信息

//错误 try{ }catch(Exception e){log.error("你的程序有异常啦"); } 异常e都没有打印出来&#xff0c;所以压根不知道出了什么类型的异常 //错误 try{ }catch(Exception e){log.error("你的程序有异常啦" e.getMessage()); }e.getMessage()不会记录详细…

福禄克FI-3000光纤监测显微仪使用MPO检查摄像头?

福禄克网络FI-3000 光纤检测显微仪是行业内较好且可以完整的光纤检查仪器&#xff0c;它有单光纤和MPO的测摄像机&#xff1b;自动或手动检查&#xff0c;还可与福禄克网络Versiv布线认证系统、Linkware或智能手机配合使用。下面福禄克网络指定经销商—明辰智航的工程师给大家讲…

Cisco Catalyst 4500

Q. 思科正在推出哪些Cisco Catalyst 4500 E系列线路卡&#xff1f;A.思科正在推出三款全新的E系列线路卡&#xff0c;性能为每线路卡插槽2.4万兆。它们包括&#xff1a; 48端口10/100/1000 PoE &#xff08;2:1过多订购&#xff09; 48端口10/100/1000增强型PoE线路卡&#xff…

通过福禄克FI-7000光纤显微摄像机进行光纤端面清洁

无论任何光纤类型、应用或数据速率&#xff0c;光的传输都需要干净的链接路径&#xff0c;包括通过路线上的任何无源连接或接头&#xff0c;虽然我们谈论了很多关于光纤清洁度的话题&#xff0c;但不管我们在这个话题上说了多少&#xff0c;当我们面对它时&#xff0c;光纤端面…

单元测试mock当前时间

在实际项目中很多地方用到DateTime.Now&#xff0c;这个时间是时时变化的。如果要进行单元测试对比预期结果时&#xff0c;这个时间无法预测&#xff0c;可以添加如下两个时间类 namespace Common.Helper {/// <summary>/// 获取当前时间/// However, when unit testing …

利用福禄克DSX2-5000 CH解决双绞线布线中常见的故障

双绞线布线中最常见的故障原因包括安装错误、在劣质组件&#xff08;电缆、连接器、跳线等&#xff09;中发现的缺陷、已安装电缆的损坏以及测试仪设置不正确&#xff0c;但有时技术人员想知道链路故障的具体原因 那么基于性能参数测试失败的原因都有哪些呢&#xff1f; 当涉…

Windows 2003性能监视器中的计数器名称变成数字的解决方法

前些天在给Exchange安装IMF后&#xff0c;看到IMF指南里面说&#xff0c;利用Performance也就是性能监视器可以查看IMF的性能&#xff0c;于是打开Performance, 但是却看到了下面这一幕&#xff0c;所有的计数器都变成数字。 还好&#xff0c;在微软SUPPORT网站很容易找到了下面…