系统移植概述及环境搭建(下)

主机与开发板网线直接相连搭建方法:

1. 开发板ping主机

使用TFTP和NFS从虚拟机下载文件或者制作根文件系统的前提是开发板能够ping同虚拟机,而ping通虚拟机的前提是能ping通主机。
先说结论:ping不通最大的问题就是3者不位于同一网段,只要设置成静态ip且位于同一网段一定能ping通。

1.1 硬件连接情况

开发板网线直连主机,主机通过无线网卡wifi上网。

1.2 主机以太网卡设置

注意,这里用无线网卡连接外网,但是用以太网卡(有线网卡)连接的开发板,所以,要对有线网卡进行IPv4的设置。

设置IP地址时,将有线网卡设置为网关,网段不与外网网段冲突即可。

值得注意的是,即使设置完毕,使用ipconig查询依然无法获取有线网的IP地址。

1.3 开发板端设置

  1. 进入uboot,使用help命令可以查阅到可用命令。

  2. 使用 pri 命令查询当前环境变量

  3. 使用 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通。

2. 虚拟机端设置

  1. 虚拟机网卡设置
  2. 打开虚拟机ubuntu18.04,进入终端,对网络进行设置
linux@ubuntu:~/Level10/day1$ vim /etc/netplan/01-network-manager-all.yaml 

netplan apply       //重启ubuntu18.04网卡
ifconfig            //查看网络状态


3. tftp服务 客户端设置

网络自动 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 //保存环境变量

4. nfs服务 客户端设置

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 //保存环境变量

设置之后的环境变量

启动后的状态:

主机与开发板网线通过路由器相连搭建方法:

1. 开发板ping主机

使用TFTP和NFS从虚拟机下载文件或者制作根文件系统的前提是开发板能够ping同虚拟机,而ping通虚拟机的前提是能ping通主机。
先说结论:ping不通最大的问题就是3者不位于同一网段,只要设置成静态ip且位于同一网段一定能ping通。

1.1 硬件连接情况

开发板和主机均与路由器相连。

1.2 主机以太网卡设置

这里使用网线连接外网,需要进行IP地址绑定MAC,即静态IP。可以使用路由器进行绑定,也可以在主机端进行绑定。

设置IP地址时,将路由器IP地址设置为网关,ip不与其他设备冲突即可。

设置完毕,使用ipconfig查询可获取有线网的IP地址。

1.3 开发板端设置

  1. 进入uboot,使用help命令可以查阅到可用命令。

  2. 使用 pri 命令查询当前环境变量

  3. 使用 setenv saveenv 命令修改并保存环境变量

setenv gatewayip 192.168.1.1            //设置网关IP地址
setenv ipaddr 192.168.1.160             //设置本设备的IP地址
saveenv                                 //保存环境变量

  1. 设置完毕 ping一下主机 和 linux 虚拟机

注意,IP与mac未绑定的情况下,可以ping通。若绑定后则无法ping通,但仍可正常运行后面的uboot 和 系统加载。

2. 虚拟机端设置

  1. 虚拟机网卡设置
  2. 打开虚拟机ubuntu18.04,进入终端,对网络进行设置
linux@ubuntu:~/Level10/day1$ vim /etc/netplan/01-network-manager-all.yaml 

netplan apply       //重启ubuntu18.04网卡
ifconfig            //查看网络状态


3. tftp服务 客户端设置

网络自动 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 //保存环境变量

4. nfs服务 客户端设置

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 //保存环境变量

设置之后的环境变量

启动后的状态: