Imx6ull 开发板通过Uboot使用网络启动系统

简介: Imx6ull 开发板通过Uboot使用网络启动系统

tftp服务端环境配置

1、安装tftp服务端程序

sudo apt-get install tftp-hpa tftpd-hpa

2、配置tftp服务

zh@zh-lpc:~$ sudo vi /etc/default/tftpd-hpa

3、修改如下:

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/zh/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"

4、启动tftp服务

zh@zh-lpc:~$ sudo /etc/init.d/tftpd-hpa start
Starting tftpd-hpa (via systemctl): tftpd-hpa.service.
zh@zh-lpc:~$

5、创建测试文件

zh@zh-lpc:~$ mkdir /home/zh/tftpboot
zh@zh-lpc:~$ touch /home/zh/tftpboot/test.txt
zh@zh-lpc:~$

6、进入Uboot命令行界面

7、配置ip地址和服务器的ip地址

设置自己的板子在Uboot的时候的ip地址;

所以这个ip是在自己局域网内必须是唯一的

setenv ipaddr 192.168.1.99

设置服务器的ip,后期tftp需要从这个ip去下载文件;

所以这个ip是tftp服务器的ip

setenv serverip 192.168.1.100

设置完之后,记得进行保存,不然重启后就没了

saveenv

技巧:

如果你回车就继续执行上一步的命令的花,你就按Ctrl+C即可。

8、测试是否可以把文件下载下来

出现下面这个状态的时候,说明成功了

=>
=> tftp test.txt
Using ethernet@020b4000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.99
Filename 'test.txt'.
Load address: 0x80800000
Loading: #
         0 Bytes/s
done

通过网络启动内核

在imx6ull中直接执行run netboot

可以看到并未成功,显示没有这些文件,所以我们先去准备这些文件。一共需要两个:

  • 1、zImage
  • 2、100ask_imx6ull-14x14.dtb
=> run netboot
Booting from net ...
Using ethernet@020b4000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.99
Filename 'zImage'.
Load address: 0x80800000
Loading: *
TFTP error: 'File not found' (1)
Not retrying...
Using ethernet@020b4000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.99
Filename '100ask_imx6ull-14x14.dtb'.
Load address: 0x83000000
Loading: *
TFTP error: 'File not found' (1)
Not retrying...
Bad Linux ARM zImage magic!
=>

准备好两个文件

zh@zh-lpc:~$ ls ~/tftpboot/ -lah
总用量 8.6M
drwxrwxr-x  2 zh zh 4.0K 9月  25 16:58 .
drwxr-xr-x 22 zh zh 4.0K 9月  25 16:55 ..
-rw-r--r--  1 zh zh  38K 9月  25 16:58 100ask_imx6ull-14x14.dtb
-rw-rw-r--  1 zh zh   11 9月  25 16:34 test.txt
-rwxrwxr-x  1 zh zh 8.5M 9月  25 16:55 zImage
zh@zh-lpc:~$

再次执行成功了!

=>
=> run netboot
Booting from net ...
Using ethernet@020b4000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.99
Filename 'zImage'.
Load address: 0x80800000
Loading: #############T ########T ############################################
         #################################################################
         #################################################################
         ######################################################T ######T #####
         #####T ##T ###########################################################
         #################################################################
         #################################################################
         #################################################################
         ###################################T ##############################
         ####################
         112.3 KiB/s
done
Bytes transferred = 8873336 (876578 hex)
Using ethernet@020b4000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.99
Filename '100ask_imx6ull-14x14.dtb'.
Load address: 0x83000000
Loading: ###
         385.7 KiB/s
done
Bytes transferred = 38370 (95e2 hex)
Kernel image @ 0x80800000 [ 0x000000 - 0x876578 ]
## Flattened Device Tree blob at 83000000
   Booting using the fdt blob at 0x83000000
   Using Device Tree in place at 83000000, end 8300c5e1
Modify /soc/aips-bus@02200000/epdc@0228c000:status disabled
ft_system_setup for mx6
Starting kernel ...
.....
....
...
省略
[   64.533635] Bluetooth: hci0: Failed to load rtl_bt/rtl8723b_config.bin
[   64.540244] Bluetooth: hci0: rtl: loading rtl_bt/rtl8723b_fw.bin
[   64.546857] bluetooth hci0: Falling back to user helper
[  110.083855] VFS: Unable to mount root fs via NFS, trying floppy.
[  110.093753] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[  110.102127] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[  125.973127] Bluetooth: hci0: Failed to load rtl_bt/rtl8723b_fw.bin
[  163.472993] random: crng init done

可以看到走到这里,就不往下走了

错误原因是,我们并没有制作rootfs,也就是文件系统。

我的根文件系统:

这里就不在这里啰嗦了,如果不会制作,可以参考我的本系列的下一篇文章。制作根文件系统,将会在下一篇文章中写。

zh@zh-lpc:~/100ask_imx6ull-sdk/Buildroot_2019.02/output/target$ pwd
/home/zh/100ask_imx6ull-sdk/Buildroot_2019.02/output/target
zh@zh-lpc:~/100ask_imx6ull-sdk/Buildroot_2019.02/output/target$ ls
bin   dev  home  lib32    linuxrc  mnt  proc  run   sys       THIS_IS_NOT_YOUR_ROOT_FILESYSTEM  usr
boot  etc  lib   libexec  media    opt  root  sbin  test.txt  tmp                               var
zh@zh-lpc:~/100ask_imx6ull-sdk/Buildroot_2019.02/output/target$

我的根文件系统的路径:

/home/zh/100ask_imx6ull-sdk/Buildroot_2019.02/output/target

还需要开启nfs服务:

zh@zh-lpc:~$ cat /etc/exports
/home/zh *(rw,sync)
zh@zh-lpc:~$

启动:

/etc/init.d/nfs-kernel-server restart

启动nfs之后,可以用showmount命令查看本机,或者其他主机共享的文件:

zh@zh-lpc:~$ showmount -e
Export list for zh-lpc:
/home/zh *
zh@zh-lpc:~$
zh@zh-lpc:~$
zh@zh-lpc:~$
zh@zh-lpc:~$ showmount -e 192.168.1.100
Export list for 192.168.1.100:
/home/zh *
zh@zh-lpc:~$

在开发板中配置nfsroot的地址:

1、可以使用pri命令查看已有的环境变量。

2、关键的一条如下:

nfsroot=${serverip}:${nfsroot}

我们配置了serverip=192.168.1.100

没有配置nfsroot的环境变量。

所以需要配置一下。

netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp

3、配置nfsroot环境变量

记得保存哈

setenv nfsroot /home/zh/100ask_imx6ull-sdk/Buildroot_2019.02/output/target
saveenv

4、然后输入run netboot命令进行重新从网络启动

run netboot

5、验证是否成功

成功后出现如图所示界面

输入df命令可以看到根目录是挂载上去的:

方便之处&测试

好处1:文件内容实时同步。

我们在pc机或自己的Linux虚拟机中在制作的根目录中创建一个简单的文件

zh@zh-lpc:~$
zh@zh-lpc:~$ echo "zhenghui haha" > /home/zh/100ask_imx6ull-sdk/Buildroot_2019.02/output/target/root/zhenghui.txt
zh@zh-lpc:~$

可以看到在开发板中就会立马同步了。

好处2:

修改了系统中的代码文件,只需要重启即可自动挂载执行新的代码程序。

目录
相关文章
|
1月前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
63 7
|
1月前
|
编解码 开发工具 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
37 2
|
1天前
|
网络协议 网络安全 数据库
LabVIEW中MAX在我的网络上不显示“远程系统”选项卡或设备
LabVIEW中MAX在我的网络上不显示“远程系统”选项卡或设备
|
3天前
|
机器学习/深度学习 人工智能 安全
构建未来:AI驱动的自适应网络安全防御系统
【5月更文挑战第8天】 随着网络攻击的不断演变,传统的安全措施已不足以应对日益复杂的威胁。本文提出了一种基于人工智能(AI)的自适应网络安全防御系统,旨在通过实时分析网络流量和行为模式来自动调整安全策略。系统利用深度学习算法识别潜在威胁,并通过强化学习优化防御机制。初步实验表明,该系统能够有效提高检测率,减少误报,并在未知攻击面前展现出较强的适应性。
15 1
|
6天前
|
机器学习/深度学习 存储 算法
m基于Yolov2深度学习网络的螺丝检测系统matlab仿真,带GUI界面
MATLAB 2022a中展示了YOLOv2算法的螺丝检测仿真结果,该系统基于深度学习的YOLOv2网络,有效检测和定位图像中的螺丝。YOLOv2通过批标准化、高分辨率分类器等优化实现速度和精度提升。核心代码部分涉及设置训练和测试数据,调整图像大小,加载预训练模型,构建YOLOv2网络并进行训练,最终保存检测器模型。
22 3
|
10天前
|
机器学习/深度学习 自动驾驶 安全
基于深度学习的图像识别技术在自动驾驶系统中的应用网络安全与信息安全:防御前线的关键技术与意识
【4月更文挑战第30天】随着人工智能技术的飞速发展,深度学习已成为推动多个技术领域革新的核心力量。特别是在图像识别领域,深度学习模型已展现出超越传统算法的性能。在自动驾驶系统中,准确的图像识别是确保行车安全和高效导航的基础。本文将探讨深度学习在自动驾驶中图像识别的应用,分析关键技术挑战,并提出未来的发展方向。
|
11天前
|
机器学习/深度学习 数据采集 安全
基于机器学习的网络安全威胁检测系统
【4月更文挑战第30天】 随着网络技术的迅猛发展,网络安全问题日益凸显。传统的安全防御机制在应对复杂多变的网络攻击时显得力不从心。为了提高威胁检测的准确性和效率,本文提出了一种基于机器学习的网络安全威胁检测系统。该系统通过集成多种数据预处理技术和特征选择方法,结合先进的机器学习算法,能够实时识别并响应各类网络威胁。实验结果表明,与传统方法相比,本系统在检测率、误报率以及处理速度上均有显著提升,为网络安全管理提供了一种新的技术手段。
|
11天前
|
机器学习/深度学习 算法 计算机视觉
m基于Yolov2深度学习网络的智能零售柜商品识别系统matlab仿真,带GUI界面
MATLAB 2022a中展示了YOLOv2目标检测算法的仿真结果,包括多张检测图像。YOLOv2是实时检测算法,由卷积层和全连接层构成,输出张量包含边界框坐标和类别概率。损失函数由三部分组成。程序使用75%的数据进行训练,剩余25%作为测试集。通过ResNet-50预训练模型构建YOLOv2网络,并用SGDM优化器进行训练。训练完成后,保存模型为`model.mat`。
24 2
|
13天前
|
机器学习/深度学习 监控 安全
入侵检测系统:实时监测与防范网络攻击
网络攻击频发,防火墙并非万全之策。入侵检测系统(IDS)成为重要补充,监控可疑活动并发出警报。IDS分为网络IDS(NIDS)、主机IDS(HIDS)等类型,分别监控网络流量和主机行为。NIDS部署在边界或内部网络,HIDS关注单台主机安全。IDS结合机器学习能检测异常行为,有效应对已知和未知威胁。在容器安全领域,如德迅蜂巢,通过多锚点监测实现入侵的实时响应和闭环处理,确保业务系统安全,同时具备低影响和高准确性。未来,研究人员将继续借助深度学习等技术提升入侵检测效能。
|
13天前
|
网络协议 算法 安全
【专栏】硬核干货:BGP(边界网关协议)是自治系统间交换路由信息的关键协议,用于大型网络的高效路由选择
【4月更文挑战第28天】BGP(边界网关协议)是自治系统间交换路由信息的关键协议,用于大型网络的高效路由选择。它基于路径向量算法,通过TCP连接建立邻居关系,交换并选择最优路径。BGP支持丰富的路由属性和多种消息类型,允许灵活的路由控制。配置与应用包括启用BGP、配置邻居、路由宣告、过滤及社区属性使用。虽然BGP具备强大路由控制和可扩展性,但其配置复杂,存在安全挑战。理解BGP对于网络管理和优化至关重要。