标签(空格分隔): Qemu ARM Linuxhtml
通过上一篇《Qemu搭建ARM vexpress开发环境(二)----经过u-boot启动Linux内核》,已经实现了经过u-boot加载Kernel启动开发板,而且挂载根文件系统,本文讲述经过NFS网络挂载根文件系统。linux
经过NFS网络根文件系统,能够实现开发板在经过u-boot启动内核后,经过NFS网络在别的PC主机上挂载根文件系统。对于开发调试阶段的工做学习提供了很大的便利,能够直接在Linux主机上开发、编译驱动或者APP,并将目标文件拷贝到NFS服务目录中进行使用(此时文件至关于被拷贝到了开发板的根文件系统中)。也能够在主机端直接修改rootfs文件系统中别的文件,等效于在开发板上直接修改。express
本文来介绍NFS挂载网络根文件系统的操做步骤,本方法不单单适用于Qemu搭建的ARM vexpress开发板环境,也适用于全部其余的开发板实体。vim
因为各个开发板的NFS网络文件系统制做方法是相同的,也能够参考Exynos4412和NanopiNEO开发板环境搭建中的NFS网络文件系统制做方法部份内容。bash
Linux主机支持NFS服务
修改bootargs启动参数
设置NFS为根文件系统
设置主机NFS文件系统地址
内核支持NFS挂载文件系统网络
安装:学习
# sudo apt install nfs-kernel-server
配置NFS:spa
# 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
或者:rest
# systemctl restart nfs-kernel-server
检查NFS共享目录是否建立:
# sudo showmount -e Export list for mcy-VirtualBox: /home/mcy/qemu/rootfs *
注:
使用NFS网络文件系统时,须要Linux主机关闭系统防火墙,不然,系统在运行时会出现异常。
修改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命令
编译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