目录
芯片:Exynos4412
实验流程:通过sd卡启动uboot;通过tftp加载内核,nfs挂载根文件系统
一、ubuntu网络环境配置
1、VM网络连接模式设置
编辑-虚拟网络编辑器(vm以管理员模式打开)
选择桥接模式,桥接到有限网卡
(若无法选择桥接模式,则先将 ubuntu 关机,然后关闭VMware,然后再以管理员 身份运行 VMware,然后再打开上述界面,单击左下角的“还原默认设置(R)”,等待完成 还原后即可选择“桥接模式”,然后再打开 ubuntu 即可)
(一般电脑都有有线网卡和无线网卡,不同电脑网卡名不一样,一般有线网卡的名字中带 有“PCIe”,无线网卡的名字中带有 “Wireless”,根据自己电脑的实际情况进行区分 这里选择网卡的原则是,如果想让 ubuntu 上外网,那么 windows 下使用哪个网卡就桥 接到哪个网卡;如果想让 ubuntu 与开发板连接,直接桥接到有线网卡)
虚拟机-设置
设置为桥接模式
2、ubuntu网络设置
使用图形化界面配置,所以先删除配置信息
sudo vi /etc/network/interfaces
保留如下信息,保存退出
选择Edit Connections
add添加新链接,使用默认ethernet,点击create
在弹出的对话框中先为新建的连接填写名字(随意),然后单击“IPv4 settings” 设置 IP 信息,将“Method”栏选为“Manual”,然后单击“Add”填写 IP 信息
ip信息在win下用ipconfig查看
Address 设置成与 windows 下的“IPV4 地址”在同一个网段下的不同地址 。比如 windows 下的 IP 为“192.168.1.102” 则将 ubuntu 下的 IP 设为“192.168.1.100”
Netmask 设置成与 windows 下的“子网掩码”一致
Gateway 设置成与 windows 下的“默认网关”一致
DNS servers 设置成与 windows 下的“默认网关”一致
断开原有连接,然后选择刚刚建立的连接
3、连接开发板
ifconfig查看主机ip
在uboot交互模式下,设置uboot中相关环境变量
serverip 即服务器 IP,设置成与 ubuntu 主机一样的 IP
ipaddr 即自身 IP,设置成与 ubuntu 主机在同一个网段下的不同地址 比如 ubuntu 主机的 IP 为“192.168.1.100” 则将 ipaddr 设置为“192.168.1.200”
命令:
查看环境变量
printenv
设置环境变量
setenv 环境变量 要修改的值
保存环境变量
saveenv
开发板与电脑用网线直连,然后在 uboot 交互模式下使用 ping 命令连接 ubuntu,若 显示“host xxx.xxx.xxx.xxx is alive”则表示网络已连通(轻薄本没有网口使用拓展坞且通过上述步骤开发板还是一直ping不通主机的情况直接跳转到 五、笔者遇到的问题 )
二、tftp服务器环境搭建
打开一个命令行终端,执行如下命令查看是否已安装 tftp 服务器
dpkg -s tftpd-hpa
若未安装,执行如下命令安装
sudo apt-get install tftpd-hpa tftp-hpa
修改 tftp 服务器的配置文件
sudo vi /etc/default/tftpd-hpa
修改为如下内容,然后保存退出
注:TFTP_DIRECTORY 是 tftp 服务器的工作目录,即客户端要下载的文件需要放到该目录下
创建服务器工作目录并设置为最高的权限
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot
重启 tftp 服务,使配置生效
sudo service tftpd-hpa restart
本地测试是否安装成功
进入到服务器工作目录 $ cd /tftpboot/
创建一个文件 $ sudo touch test.txt
回到家目录 $ cd
使用 tftp 命令登录本机 $ tftp localhost
获取文件 $ get test.txt
退出 $ q
执行如下命令查看是否获取到 $ ls
当前目录下获取到了 test.txt 文件表示安装成功
三、nfs服务器环境搭建
打开一个命令行终端,执行如下命令查看是已否安装 nfs 服务器
dpkg -s nfs-kernel-server
若未安装,执行如下命令安装(确保 ubuntu 能上网)
sudo apt-get install nfs-kernel-server
修改 nfs 服务器的配置文件,在文件末尾添加如下配置,然后保存退出(/opt/4412/rootfs 是 nfs 服务器的工作目录,即客户端要访问的文件需要放到该目录下)
sudo vi /etc/exports
创建服务器工作目录并设置为最高的权限
sudo mkdir -p /opt/4412/rootfs
sudo chmod -R 777 /opt
重启 nfs 服务,使配置生效
sudo service nfs-kernel-server restart
本地测试是否安装成功
进入到服务器工作目录 $ cd /opt/4412/rootfs/
创建一个文件 $ sudo touch test.txt
回到家目录 $ cd
使用 nfs 挂载工作目录到/mnt $ sudo mount -t nfs localhost:/opt/4412/rootfs /mnt
查看是否挂载成功 $ ls /mnt/
若目录下有了 test.txt 文件表示安装成功
取消挂载 $ sudo umount /mnt
四、tftp加载内核,nfs挂载根文件系统
将内核镜像,设备树拷贝到tftp工作路径下;根文件系统拷贝到nfs工作路径下
设置环境变量
setenv bootargs root=/dev/nfs nfsroot=xxx.xxx.xxx.xxx:/opt/4412/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=***.***.***.***
root 根文件系统类型(nfs)
nfsroot 主机IP网络文件系统路径
rw 网络文件系统的权限
console 控制台,波特率
init 开机启动的进程
ip linux启动后自身的IP
修改 uboot 的启动参数
setenv bootcmd tftp 0x41000000 uImage\;tftp 0x42000000 exynos4412-fs4412.dtb\;bootm 0x41000000 - 0x42000000
设置完成后保存这些参数
电脑每次开机都要重启tftp和nfs
sudo service tftpd-hpa restart
sudo service nfs-kernel-server restart
五、笔者遇到的问题
由于笔者的电脑为轻薄本没有自带网口,使用USB转网口线连接,但通过桥接模式开发板和主机一直无法ping通,解决方案有两个。
一是路由器连接,将主机和板子都连接在一个路由器上,主机还是按照上述步骤设置
二是直接将USB转网口设备连接到虚拟机上,虚拟机的网络设置还是按照上述步骤设置