硬件环境:100ask stm32mp157开发板
Ubuntu18.4
使用busybox或buildroot构建文件系统后,将文件系统放在nfs文件夹内
cp rootfs.tar ~/nfs_rootfs/rootfs/
sudo tar -xvf rootfs.tar
解压完后如下
Linux 内核启动以后是需要根文件系统的,根文件系统存在哪里是由 uboot 的 bootargs 环境变量指定的,它会传递给 Linux 内核作为命令行(command line)参数。
bootargs 保存着 uboot 传递给 Linux 内核的参数, 比如指定 Linux 内核所使用的 console、指定根文件系统所在的分区等,如下面 bootargs 环境变量值:
console=ttySTM0,115200 root=/dev/mmcblk2p3 rootwait rw
bootargs设置格式为
setenv bootargs ‘console=开发板串口号,波特率
root=挂载方式
nfsroot=nfs服务器ip地址:nfs文件系统路径,proto=传输协议 读写权限
ip=开发板ip地址:nfs服务器ip地址:网关:子网掩码::开发板网口:off’
本文在uboot设置bootargs为
setenv bootargs 'root=/dev/nfs nfsroot=192.168.31.143:/home/book/nfs_rootfs/rootfs,vers=3 rw ip=dhcp'
saveenv
执行run bootcmd启动Linux系统,成功挂载服务器的根文件系统,如下