文件系统 | 如何使用网络根文件系统启动开发板?
来源:互联网 发布:java安卓4.4.4模拟器 编辑:程序博客网 时间:2024/05/21 12:14
1.1 开发板通过串口连接至Windows主机
1.2 在Windows主机上开启虚拟机Ubuntu主机
1.3 已制作好的网络根文件系统为:Ubuntu主机的 /work/nfs_root/ 这个目录
1.4 通过 $ ifconfig 命令确定Ubuntu主机IP为192.168.0.7
2.Ubuntu主机上的操作
2.1 查看是否安装nfs服务器
$ sudo apt-get install nfs-kernel-server
我们看到“nfs-kernel-server is already the newest version. ”,说明已安装
2.2 修改服务器的配置文件
服务器的配置是放在/etc/exports这个文件下的,编辑它即可
$ sudo vi /etc/exports
加上如下一行,把我们想作为根文件系统的目录/work/nfs_root/放进去,并作配置,然后保存退出:
/work/nfs_root *(rw,sync,no_root_squash)
2.3 重启nfs服务器
$ sudo /etc/init.d/nfs-kernel-server restart
可以看到,exportfs: /etc/exports……/work/nfs_root,说明/work/nfs_root/这个目录已经作为exportfs(输出文件系统)了,当然我们也可以通过这个命令来查看
$ showmount -e
可以看到一个export list,下面就有“/work/nfs_root”这个目录
3.开发板上的操作
3.1 启动开发板进入Uboot
3.2 查看配置信息
(这一步是为了后面能重新通过设置uboot参数来重新实现从flash启动)
OpenJTAG> print
记录下bootargs
“bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0”
3.3 设置bootargs,并保存
OpenJTAG> set bootargs noinitrd root=/dev/nfs nfsroot=192.168.0.7:/work/nfs_root
ip=192.168.0.17:192.168.0.7:192.168.0.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
OpenJTAG> save
3.4 重启开发板
这时候开发板就以网络根文件系统来启动了,也就是说,在Ubuntu主机上的/work/nfs_root/这个目录现在成了开发板的根目录。
让我们来验证一下:
在Ubuntu主机的/work/nfs_root/,建立一个名为“666haha”的文件
$ cd /work/nfs_root/
$ touch 666haha
然后我们在串口界面下查看开发板的根目录,看一下这个文件是否存在
# ls 666haha -l
可见它在开发板的根目录下也是存在的
现在,通过串口我们在根目录下把它删除
# rm 666haha
然后,回到Ubuntu主机上的/work/nfs_root/目录查看一下是否也是删除掉了
$ ls /work/nfs_root/666haha -l
我们可以看到如下信息:
ls: cannot access 666haha: No such file or directory
即这个文件已经不见了
由此可见,我们在开发板的根目录下的操作,和我们在Ubuntu主机的/work/nfs_root/目录下的操作是同步的
说明1. bootargs
说明2. 开发板的Linux IP和Uboot IP
我们在设置bootargs的时候用的是Linux系统下的IP,而非Uboot下的"ipaddr"!两者有何区别?
在3.2里,我们在Uboot输入print命令后可看到如下一行:
ipaddr=192.168.0.16
这个就是Uboot IP
而Linux IP和Uboot IP是两个独立的IP,可以不一样(当然也可以一样)。那么它是怎么来的?
其实是我们在构建根文件系统的时候设置好的,它放在Ubuntu主机的/work/nfs_root/etc/init.d/rcS这个文件里
$ cd work/nfs_root/etc/init.d
$ vi rcS
查看这个文件(它其实就是一个shell脚本),有如下一行:
ifconfig eth0 192.168.0.17
当开发板从uboot跳入kernel,开始进行初始化的时候,就会调用这个脚本,这时候开发板的Linux IP就被设定好了
问题:如何改为重新由NandFlash启动根目录?
还记得在3.2里面记录的信息吗?
bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
稍微修改一下:
set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
然后,启动开发板进入Uboot,输入上面这条命令,重新设定bootargs即可:
OpenJTAG> set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
OpenJTAG> save
再启动开发板,这时候开发板使用的就是NandFlash上面的根文件系统了
如果我们想再次使用NFS启动根文件系统,就再改一下bootargs就可以了
OpenJTAG> set bootargs noinitrd root=/dev/nfs nfsroot=192.168.0.7:/work/nfs_root/first_fs ip=192.168.0.17:192.168.0.7:192.168.0.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
OpenJTAG> save
- 文件系统 | 如何使用网络根文件系统启动开发板?
- 使用NFS启动Tiny4412开发板根文件系统
- 使用NFS启动Tiny4412开发板根文件系统
- 开发板以网络文件系统启动的一些问题
- 网络文件系统nfs文件系统使用
- 网络文件系统nfs文件系统使用
- OMAP3730开发板uboot学习以及nfs网络启动根文件系统
- JZ2440设置从开发板启动或使用NFS作为根文件系统启动
- 使用nfs文件系统启动开发板的一些问题
- jz2440开发板制作烧写根文件系统,使用NFS启动
- 使用NFS根文件系统登录开发板
- 如何搭建网络文件系统
- 君正4750开发板使用日记3-根文件系统、启动文件与helloworld
- S5PV210210使用网络文件系统nfs作为根文件系统
- 使用网络文件系统(NFS)
- ok6410开发板用nfs启动文件系统
- 开发板从nfs文件系统启动
- TIdm368开发--nfs网络文件系统启动问题集合
- 运行301毕设-初步学习
- UML的视图分类
- HDOJ2806 位运算
- python中chr与ord函数的使用
- 【转】Spring知识点提炼
- 文件系统 | 如何使用网络根文件系统启动开发板?
- 【NOIP模拟】 (10.23) T2 杆子的排列
- 网页单位和rem小分享
- ES6 模块系统
- saltstack的SSH使用--Roster的配置使用
- java面试总结
- Visual Studio 2017开发linux程序使用实例及原理简析
- 16. 3Sum Closest
- JDK7中LinkedBlockingQueue源码解析