由于kernel制作的不同,需要在uboot上烧写kernel,这里可以采用tftp的方式进行烧写。
1. 安装软件包
sudo apt-get install tftpd tftp xinetd
2. 建立配置文件
在/etc/xinetd.d/下建立一个配置文件tftp
sudo vi /etc/xinetd.d/tftp
在里面写入如下内容
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
3. 建立tftp服务文件目录
在上一步配置中有server_args = -s /tftpboot,其中/tftpboot这个目录就是上传文件与下载文件的位置。我们现在创建这个目录,并设置权限。
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot -R
4. 重新启动tftp服务
sudo /etc/init.d/xinetd restart
5. 测试
sudo netstat -a | grep tftp
如果启动成功,则可以查看到
upd 0 0 *:tftp *:*
再运行
tftp 192.168.0.200 -g -r xxx
即可设置主机地址。
6. 本机测试
在/tftpboot目录下创建一个ky文件,启动另外一个终端,输入:
tftp 127.0.0.1
tftp> get ky #获取ky文件
tftp> q #退出tftp
在终端输入ls命令,可以看到当前目录下看到ftp获取到的ky文件。
这样我们的主机上tftp就已经搭建好了
在虚拟机选择网络为桥接模式,并且在编辑菜单网络参数中,选择已桥接到Relteck…(表示本地有线网卡)
如果不成功,检查防火墙是否已经关闭。
主机设置IP地址 192.168.1.100
sudo ifconfig ens33 192.168.1.100 netmask 255.255.255.0
这里的ens33为网卡名称,通过ifconfig查看
uboot里设置开发板地址 192.168.1.11
setenv ipaddr 192.168.1.11
setenv serverip 192.168.1.100
saveenv
这里只要保证网段相同即可
然后测试是否可以ping通
ping 192.168.1.100
若成功,则显示以下内容:
host 192.168.1.100 is alive
继而启动开发板,进入U-Boot命令行,用tftp命令加载tftp服务器中的文件,(注意,服务器为/tftpboot文件夹,保证文件夹内有该文件)如:
U-Boot$ tftp 10800000 uImage
注意:用网线连接开发板与主机的时候,有时候连接不稳定 ,可以在主机上重新运行sudo ifconfig ens33 192.168.1.100 netmask 255.255.255.0, 保证连接。
结果显示:
TFTP from server 192.168.1.100; our IP address is 192.168.1.11
Filename 'uImage'.
Load address: 0x10800000
Loading: #################################
done
Bytes transferred = 479927 (752b7 hex)
这样就下载到内存成功
继而可以开始运行