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:

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

目录
相关文章
|
4天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
16 2
|
1月前
|
机器学习/深度学习 数据采集 人工智能
未来的守护神:AI驱动的网络安全之盾,如何用智慧的光芒驱散网络黑暗势力?揭秘高科技防御系统背后的惊天秘密!
【10月更文挑战第3天】随着网络技术的发展,网络安全问题日益严峻,传统防御手段已显不足。本文探讨了构建AI驱动的自适应网络安全防御系统的必要性及其关键环节:数据采集、行为分析、威胁识别、响应决策和执行。通过Python库(如scapy、scikit-learn和TensorFlow)的应用实例,展示了如何利用AI技术提升网络安全防护水平。这种系统能够实时监控、智能分析并自动化响应,显著提高防护效率与准确性,为数字世界提供更强大的安全保障。
60 2
|
17天前
|
监控 安全 测试技术
网络信息系统的整个生命周期
网络信息系统规划、设计、集成与实现、运行维护及废弃各阶段介绍。从企业需求出发,经过可行性研究和技术评估,详细设计系统架构,完成设备安装调试和系统集成测试,确保稳定运行,最终安全退役。
32 1
网络信息系统的整个生命周期
|
4天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
27 3
|
4天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
25 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
18天前
|
机器学习/深度学习 存储 运维
图神经网络在复杂系统中的应用
图神经网络(Graph Neural Networks, GNNs)是一类专门处理图结构数据的深度学习模型,近年来在复杂系统的研究和应用中展现了强大的潜力。复杂系统通常涉及多个相互关联的组件,其行为和特性难以通过传统方法进行建模和分析。
40 3
|
18天前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
2月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
119 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
2月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
108 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
2月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
102 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面

热门文章

最新文章