Qemu搭建ARM vexpress开发环境(三)----NFS网络根文件系统

2020-02-14来源: eefocus关键字:Qemu  ARM  vexpress  开发环境  NFS  网络根文件系统

经过上一篇《Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核》,已经实现了通过u-boot加载Kernel启动开发板,并且挂载根文件系统,本文讲述通过NFS网络挂载根文件系统。


通过NFS网络根文件系统,可以实现开发板在通过u-boot启动内核后,通过NFS网络在别的PC主机上挂载根文件系统。对于开发调试阶段的工作学习提供了很大的便利,可以直接在Linux主机上开发、编译驱动或者APP,并将目标文件拷贝到NFS服务目录中进行使用(此时文件相当于被拷贝到了开发板的根文件系统中)。也可以在主机端直接修改rootfs文件系统中别的文件,等效于在开发板上直接修改。


本文来介绍NFS挂载网络根文件系统的操作步骤,本方法不仅仅适用于Qemu搭建的ARM vexpress开发板环境,也适用于所有其他的开发板实体。


由于各个开发板的NFS网络文件系统制作方法是相同的,也可以参考Exynos4412和NanopiNEO开发板环境搭建中的NFS网络文件系统制作方法部分内容。


1. 环境配置

Linux主机支持NFS服务

修改bootargs启动参数

设置NFS为根文件系统

设置主机NFS文件系统地址

内核支持NFS挂载文件系统


2. 安装并配置NFS服务

2.1 Linux主机开启NFS服务

安装:


# sudo apt install nfs-kernel-server

配置NFS:


# vim /etc/exports

// 添加NFS共享目录

/home/mcy/qemu/rootfs    *(rw, sync, no_root_squash, no_subtree_check)

    rw    可读可写操作

    sync    内存和磁盘上的内容保持同步

    no_root_squash    Linux主机不再将开发板设置为匿名用户,可以操作文件读写

    no_subtree_check    不检查根文件系统子目录文件

重启NFS服务:


sudo /etc/init.d/rpcbind restart

sudo /etc/init.d/nfs-kernel-server restart

或者:


# systemctl restart nfs-kernel-server

检查NFS共享目录是否创建:


# sudo showmount -e

Export list for mcy-VirtualBox:

/home/mcy/qemu/rootfs *

注:

使用NFS网络文件系统时,需要Linux主机关闭系统防火墙,否则,系统在运行时会出现异常。


2.2 开发板配置支持NFS网络

修改u-boot中的启动参数:


# vim include/configs/

CONFIG_BOOTCOMMAND

    setenv bootargs 'root=/dev/nfs rw   

    nfsroot=192.168.0.105:/home/mcy/qemu/rootfs init=/linuxrc   

    ip=192.168.0.110 console=ttyAMA0';   

配置内核支持NFS挂载文件系统


完善NFS文件系统

重启reboot命令


3. 制作根文件系统

编译busybox


nfs

Linux System Utilities  --->

    [*] mount (30 kb)

        [*]   Support mounting NFS file systems on Linux < 2.6.23

创建rootfs目录,并在rootfs目录下创建文件:


# mkdir etc

# cd etc

# vim inittab

::sysinit:/etc/init.d/rcS        // 执行rcS脚本

#::respawn:-/bin/sh

#tty2::askfirst:-/bin/sh

#::ctrlaltdel:/bin/umount -a -r


console::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

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

# vim init.d/rcS

#! /bin/sh

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

LD_LIBRARY_PATH=/lib

export PATH LD_LIBRARY_PATH


mount -a        // 挂载根文件系统 fstab

mkdir -p /dev/pts

mount -t devpts devpts dev/pts

mdev -s

mkdir -p /var/lock


echo "......"

# vim fstab

proc    /proc    proc    defaults    0    0

tmpfs    /tmp    tmpfs    default    0    0

sysfs    /sys    sysfs    default    0    0

tmpfs    /dev    tmpfs    default    0    0

var    /dev    tmpfs    default    0    0

ramfs    /dev    ramfs    default    0    0

# vim profile

PS1='xiami@vexpress:w #'

export PS1

也可以在~/.bashrc中修改或设置PS1


启动流程:

Linux内核启动之后,挂载根文件系统

开启init进程,bootargs init=/linuxrc,启动第一个用户进程

在用户进程中读取inittab脚本,


构建其他目录

其他的目录可以是空目录


# cd rootfs

# mkdir proc mnt tmp sys root


关键字:Qemu  ARM  vexpress  开发环境  NFS  网络根文件系统 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic488238.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于全志H3芯片的ARM开发环境搭建
下一篇:Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

基于TQ2440和Qemu的GDB+串口调试(1)
执行quit命令,再次打开ckermit还可以连上板子,并且还可以再次通过echo使kernel再次进入等待远程gdb连接模式。三、Qemu + GDB这部分参考的是笨叔叔的《奔跑吧 Linux内核》。首先需要配置内核,确保编译出来的内核包含调试信息:Kernel hacking    ----> Compile-time checks and compiler options            ----> [*] Compile the kernel with debug info在启动Qemu的时候设置两个参数:-S: 表示Qemu
发表于 2020-02-09
qemu+chroot构建arm aarch64虚拟机
在X86环境下构建出arm虚拟机可以模拟arm环境进行开发、在arm linux的文件系统中安装相应的库文件,编译arm版本等。简单介绍下在X86环境下构建ARM虚拟机的步骤。1、x86环境安装qemu-user-staticsudo apt-get install qemu-user-static2、准备arm linux根文件系统arm linux根文件系统可以直接下载干净的版本或者从运行的arm单板上进行备份获取。arm单板上备份根文件系统命令:sudo tar -cvpzf rootfs.tgz --exclude=/proc --exclude=/mnt --exclude=/sys --exclude
发表于 2020-02-06
基于嵌入式云技术的油井液位远程测试系统
。 其在嵌入式Linux系统的支撑下,通过移植KVM、QEMU虚拟机,实现了测试设备的虚拟化,测控节点和测控服务器之间采用Modbus通信协议。系统实现了实时测试和远程实时测控的功能,能有效地提高采油井的测试效率,节省人力物力财力,更节省了宝贵的时间。 1 系统体系结构 本文设计的嵌入式云测试系统是由云测试监控中心和现场测控两部分构成,现场测控设备由嵌入式测控节点与嵌入式云服务器构成。测控的总体结构如图1所示。 本文基于亚马逊公司的Eucalyptus(桉树)云平台实现了云测试监控中心的功能。Eucalyptus是用于完成对各种虚拟设备、虚拟机实例的全局性监控,对整个集群的计算资源、存储资源、网络资源进行动态配置。在云测试监控中心
发表于 2014-10-24
基于嵌入式云技术的油井液位远程测试系统
MIPS发布简化Android开发的架构工具
    美普思科技公司(MIPS Technologies, Inc.)宣布,可简化Android 应用开发的先进调试和开发工具已开始供货。这些免费工具可通过Android on MIPS 社区获得。MIPS 科技除了发布QEMU 开放源仿真器,还通过与Viosoft 公司合作提供用于QEMU的业界领先Arriba开发工具,使开发工作变得更加容易。MIPS 科技还强化了MIPS架构的Android NDK(Native Development Kit),采用了编译器和丰富的图形用户界面(GUI),可将整个构建过程简化为以简单的点选动作(point-and-click),进行快速的本土开发。     MIPS 科技营销副总裁Art
发表于 2010-03-08
海思ARM平台交叉编译zeroMQ
在使用海思的项目中要使用到ZeroMQ这个消息队列框架,之前在PC端使用感觉不错。所以通过要通过交叉编译,将其移植到ARM平台。移植方法,可以参考 https://blog.csdn.net/sishuihuahua/article/details/77203094  以下是我使用海思交叉编译工具的方法:一、配置编译器./configure --host=arm-himix100-linux --prefix=/opt/hisi-linux/zeromq-4.1.6/arm-zeromq  --without-libsodiumarm-himix100-linux   --host
发表于 2020-02-08
ARM常用汇编指令列表
发表于 2020-02-07
ARM常用汇编指令列表
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved