標籤(空格分隔): 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