本文:全部参考 ivan 老师的配置方法,谢谢 ivan 老师
(1)安装虚拟机
(2)运行Linux系统
后面都是在前面两步的基础上执行的,
//----虚拟机上安装tftp服务
$ sudo dpkg -s tftpd-hpa //检查是否安装tftp server
//表示已经安装了tftp服务
//$ sudo apt-get install tftpd-hpa //如果未安装,安装 tftp-server
//$ sudo apt-get install tftp
$ sudo vi /etc/default/tftpd-hpa //修改tftp服务器配置文件为
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-c -s -l"
$ mkdir /tftpboot //创建tftpboot目录,
$ sudo chmod -R 777 /tftpboot //更改文件夹权限
$ sudo service tftpd-hpa restart //启动 tftp-server
//-----验证虚拟机tftp服务是否OK
$ sudo cat /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
$ sudo service tftpd-hpa restart //如果有更改配置,需要重启一下 tftp-server
$ cd /tftpboot
$ touch test
$ cd /tmp
$ tftp 127.0.0.1
tftp>get test
tftp>q
$ ls //看到有test文件,表示该tftp服务是OK的
//tftp安装与检测完毕
$ service nfs-kernel-server /*检查nfs服务是否安装
如果显示下面信息, 表示有安装
* Usage: nfs-kernel-server {start|stop|status|reload|force-reload|restart}
如果没有,需安装
#sudo apt-get install nfs-kernel-server
$ sudo vi /etc/exports /*修改配置文件,指定共享目录位置 在末尾追加
/nfs/rootfs *(rw,sync,no_root_squash)
或 /source/ *(rw,sync,no_subtree_check)
*/
$ sudo mkdir /nfs
$ sudo chmod 777 /nfs
$ cd /nfs
$ 拷贝 rootfs.tar.xz 到 /nfs 目录下 //rootfs.tar.xz是已制作好的根文件系统
$ tar -xvf rootfs.tar.xz
$ sudo chmod 777 rootfs
$ sudo /etc/init.d/nfs-kernel-server restart //重启nfs服务(使得前面修改生效)
$ sudo mount -t nfs localhost:/nfs/rootfs/ /mnt/ //测试nfs服务是否安装成功。
$ ls /mnt/ /*如果其中的内容和/nfs/rootfs中一致。 表示有挂载成功
如显示下面内容,表示成功
bin dev etc lib linuxrc mnt proc root sbin sys tmp usr var
*/
$ sudo umount /mnt //卸载
编辑 -> 虚拟网络编辑器 -> VMnet0 桥接到(选连板子的网卡) //注意不要用automic,应手动指定对应的网卡
虚拟机 -> 设置 -> 网卡适配器 -> 自定义 (选 VMnet0) /*使虚拟机内的虚拟网卡,关联到电脑实际用到的网卡
通过选VMnet0 和 VMnet1 。实现连板子,还是上internet的切换
*/
点ubuntu右上角网络图标 -> 右键选编辑连接 -> 全删掉 -> 添加(改新连接名称为board)
-> IPV4 设置 -> 方法(选手动) -> 点添加 设置为 192.168.9.120 255.255.255.0 192.168.9.1 并保存退出
点右上角网络图标,先断开,再选board连接 /* 通过选board,和internet 实现连板子,还是上internet的切换
注意如果不能选 board ,需更改网络配置文件/etc/network/interfaces的内容为
auto lo
iface lo inet loopback
或
加上
auto eth0
iface eth0 inet static
address 192.168.9.120
netmask 255.255.255.0
gateway 192.168.9.1
重启电脑
*/
$ ifconfig //看ip是否已变为了192.168.9.120
$ ifconfig //查看IP信息
{//2. 板子能ping通虚拟机 (要关闭防火墙 网卡右键高级)
------------------------
|板子 192.168.9.110 |
------------------------
|
------------------------
|虚拟机 192.168.9.120 |
------------------------
//---------确认板子和电脑是能通信的
启动板子,快速按任意键停在boot处,设置u-boot 的环境变量
//要在同一个网段 .9就点9 .6就点6
# setenv ipaddr 192.168.9.110
# setenv gatewayip 192.168.9.1
# setenv serverip 192.168.9.120 //注意它与虚拟机里 ubuntu 的ip要一致
# pri /*查看设置后效果
FS4412 # pri
baudrate=115200
bootargs=root=/dev/nfs nfsroot=192.168.9.120:/nfs/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.9.9
bootcmd=tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 - 42000000
bootdelay=3
ethact=dm9000
ethaddr=11:22:33:44:55:66
gatewayip=192.168.9.1
ipaddr=192.168.9.9
netmask=255.255.255.0
serverip=192.168.9.120
*/
# saveenv 保存设置
//---------确认电脑和虚拟机时能通信
//---------确认板子能和虚拟机能通讯
$ ping 192.168.9.120 //注意: boot阶段是板子能ping 电脑 ,电脑不能ping板子 (要关防火墙)
host 192.168.9.120 is alive //通讯OK ,失败会显示not alive
//注意: 有时因网卡不稳定,ping不通,但tftp uImage 成功也可以。
}
(注意这只是针对三星公司的【 exynos4412-fs4412】) //其他芯片就不同了 但理念是一样的
# 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处放的是设备树文件)
*/
# setenv bootargs noinitrd root=/dev/nfs nfsroot=192.168.9.120:/nfs/rootfs/ rw rootwait earlyprintk=ttySAC2,115200n8 console=ttySAC2,115200n8 init=/linuxrc ip=192.168.9.110 printk.time=Y clk_ignore_unused
/* 挂载nfs rootfs
setenv bootarg 设置环境变量( bootarg是启动参数)
root=/dev/nfs 指定根文件系统类型是 nfs
nfsroot=192.168.9.120:/nfs/rootfs 指定source rootfs的位置 (是在ip 是192.168.9.120的机器上 ,的/source/rootfs目录下). 注意/nfs/rootfs必须和前面NFS服务配置文件设置一致
*/
# saveenv //保存环境变量
掉电重启动板子 /* 看能否挂载nfs rootfs成功
能看到下面信息表示成功
[root@farsight ]# ls
etc linuxrc proc sbin tmp var
bin dev lib mnt root sys usr
在里面创建文件,电脑的/nfs/rootfs上同步变化
*/
}
}
切换到对应的 nfs/rootfs
(在里面的就是同步文件了)
//使用交叉编译工具 (没有要自己安装 )使得可执行文件能在ARM平台上运行
$arm-none-linux-gnueabi-
//下面是配置环境时出现问题,锁定错误和解决的办法
方法: 替换法
问题定位;二分法
板子的启动,接口,端口号,(主机)(目标机)
排除:线没有问题,(换电脑,换线)替换法