使用TFTP和NFS从虚拟机下载文件或者制作根文件系统的前提是开发板能够ping同虚拟机,而ping通虚拟机的前提是能ping通主机。
先说结论:ping不通最大的问题就是3者不位于同一网段,只要设置成静态ip且位于同一网段一定能ping通。
开发板网线直连主机,主机通过无线网卡wifi上网。
注意,这里用无线网卡连接外网,但是用以太网卡(有线网卡)连接的开发板,所以,要对有线网卡进行IPv4的设置。
设置IP地址时,将有线网卡设置为网关,网段不与外网网段冲突即可。
值得注意的是,即使设置完毕,使用ipconig查询依然无法获取有线网的IP地址。
进入uboot,使用help命令可以查阅到可用命令。
使用 pri 命令查询当前环境变量
使用 setenv saveenv 命令修改并保存环境变量
setenv gatewayip=192.168.31.1 //设置网关IP地址 setenv ipaddr=192.168.31.5 //设置本设备的IP地址 saveenv //保存环境变量
4. 设置完毕 ping一下主机
host 192.168.31.1 is alive //is alive说明ping成功了 失败的话会显示 is not alive
注意,网线直接接主机和开发板的情况下,只能开发板->主机单向ping通。开发板->虚拟机也是单向ping通。
linux@ubuntu:~/Level10/day1$ vim /etc/netplan/01-network-manager-all.yaml
netplan apply //重启ubuntu18.04网卡
ifconfig //查看网络状态
网络自动 tftp 加载内核,并挂载nfs rootfs 启动
# setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 - 42000000 /* 设置tftp方式加载内核 setenv bootcmd 设置环境变量(自启动命令 bootcmd) tftp 41000000 uImage\; 通过tftp从虚拟机/tftpboot目录下下载内核uImage到板子的内存 41000000 处。 \; 用于分割多个命令 tftp 42000000 exynos4412-fs4412.dtb 通过tftp下载设备树文件 exynos4412-fs4412.dtb 到板子的内存 42000000 处 bootm 41000000 - 42000000 启动内核(41000000处放的是内核uImage, 42000000处放的是设备树文件) */ # savenenv //保存环境变量
linux ubuntu18.04不能直接运行nfs,需在配置文件中加入一行命令才可运行。
linux@ubuntu:~$ sudo vi /etc/default/nfs-kernel-server RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog" linux@ubuntu:~$ sudo service nfs-kernel-server restart
# setenv bootargs root=/dev/nfs nfsroot=192.168.31.6:/home/linux/source/rootfs rw console=ttySAC2,115200 clk_ignore_unused init=/linuxrc ip=192.168.31.5 /* 挂载nfs rootfs setenv bootarg 设置环境变量( bootarg是启动参数) root=/dev/nfs 指定根文件系统类型是 nfs nfsroot=192.168.31.6:/linux/home/source/rootfs 指定source rootfs的位置 (是在ip 是192.168.9.120的机器上,的/source/rootfs目录下). 注意/home/linux/source/rootfs必须和前面NFS服务配置文件设置一致 */ # savenenv //保存环境变量
设置之后的环境变量
启动后的状态:
使用TFTP和NFS从虚拟机下载文件或者制作根文件系统的前提是开发板能够ping同虚拟机,而ping通虚拟机的前提是能ping通主机。
先说结论:ping不通最大的问题就是3者不位于同一网段,只要设置成静态ip且位于同一网段一定能ping通。
开发板和主机均与路由器相连。
这里使用网线连接外网,需要进行IP地址绑定MAC,即静态IP。可以使用路由器进行绑定,也可以在主机端进行绑定。
设置IP地址时,将路由器IP地址设置为网关,ip不与其他设备冲突即可。
设置完毕,使用ipconfig查询可获取有线网的IP地址。
进入uboot,使用help命令可以查阅到可用命令。
使用 pri 命令查询当前环境变量
使用 setenv saveenv 命令修改并保存环境变量
setenv gatewayip 192.168.1.1 //设置网关IP地址 setenv ipaddr 192.168.1.160 //设置本设备的IP地址 saveenv //保存环境变量
注意,IP与mac未绑定的情况下,可以ping通。若绑定后则无法ping通,但仍可正常运行后面的uboot 和 系统加载。
linux@ubuntu:~/Level10/day1$ vim /etc/netplan/01-network-manager-all.yaml
netplan apply //重启ubuntu18.04网卡
ifconfig //查看网络状态
网络自动 tftp 加载内核,并挂载nfs rootfs 启动
# setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 - 42000000 /* 设置tftp方式加载内核 setenv bootcmd 设置环境变量(自启动命令 bootcmd) tftp 41000000 uImage\; 通过tftp从虚拟机/tftpboot目录下下载内核uImage到板子的内存 41000000 处。 \; 用于分割多个命令 tftp 42000000 exynos4412-fs4412.dtb 通过tftp下载设备树文件 exynos4412-fs4412.dtb 到板子的内存 42000000 处 bootm 41000000 - 42000000 启动内核(41000000处放的是内核uImage, 42000000处放的是设备树文件) */ # savenenv //保存环境变量
linux ubuntu18.04不能直接运行nfs,需在配置文件中加入一行命令才可运行。
linux@ubuntu:~$ sudo vi /etc/default/nfs-kernel-server RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog" linux@ubuntu:~$ sudo service nfs-kernel-server restart
# setenv bootargs root=/dev/nfs nfsroot=192.168.1.158:/home/linux/source/rootfs rw console=ttySAC2,115200 clk_ignore_unused init=/linuxrc ip=192.168.1.160 /* 挂载nfs rootfs setenv bootarg 设置环境变量( bootarg是启动参数) root=/dev/nfs 指定根文件系统类型是 nfs nfsroot=192.168.31.6:/linux/home/source/rootfs 指定source rootfs的位置 (是在ip 是192.168.9.120的机器上,的/source/rootfs目录下). 注意/home/linux/source/rootfs必须和前面NFS服务配置文件设置一致 */ # savenenv //保存环境变量
设置之后的环境变量
启动后的状态: