linux最小系统如何分配设备树,文件系统和镜像

linux最小系统如何分配设备树,文件系统和镜像,第1张

1、准备Linux系统的内核、uboot、文件系统、设备树等文件

2、在工作空间建立uboot目录,进入uboot目录,解压uboot源码。

3、编译完成后,在当前目录下会生成ubootELF文件,将其重命名为uboot.elf。

4、在工作空间建立filesystem目录,进入filesystem目录,将uramdisk.image.gz拷贝至该目录。

5、重新生成ramdisk,同步文件系统并卸载ramdisk即可。

今天在学习嵌入式linux的uboot系统移植时出现了一个问题,挂载内核无反应。先贴图

问题排查

一开始我的反应是网络的问题,我就开始排查网络,测试uboot下开发板是否能ping虚拟机

发现是没有问题的,接下来我就想去试试虚拟机是否也能ping通开发板,当然我已经是完成我的开发

板的网络配置。然后出现的情况是

发现并不能ping通开发板。于是我开始纳闷是否是我的网口以及网络配置出错了。针对于此我进行了

以下几项排查工作:

1、开发板的网络环境搭建

这里我使用的设备是台式机电脑,开发板,光猫一台,网线2条。(PS:这里我明白了带路由器功能的

光猫就相当于普通光猫接路由器)然后进入虚拟机中将网络连接设置为桥接模式。

2、设置主机、虚拟机、开发板IP都在同一网段

经配置之后各IP分别是:主机:192.168.1.4,虚拟机:192.168.1.6,开发板:192.168.1.10

至此我已经配置完成网络情况,开始进行相互的ping测试,结果发现主机和虚拟机之间ping不通,经过

百度一查,才知道要关闭主机和linux虚拟机的防火墙。关于如何关闭两者防火墙参考链接:

https://blog.csdn.net/m0_54203133/article/details/112428037

以上步骤我试了很多次还是没能解决。然后我继续寻找相关资料,直到看到正点原子的文档中的一段话:

看到这句话我恍然大悟,我一直苦苦纠结IP网络配置并不是造成错误的唯一原因,当开发板能够ping通

虚拟机和主机的时候,就已经说明上述的两个步骤我已经配置正确了。那么既然网络配置没有问题,那就应

该是TFTP的问题吧,因为我们使用的网络传输是TFTP协议,我转而开始排查TFTP环境搭建。

发现问题

我跟着tftp环境搭建的步骤一步一步的重新配置,结果总算是发现问题所在:

在tftp-hpa配置文件中,不知道怎么我这里根目录下的home家目录多了一个o,这样就导致了在传输的

时候无法按照有效路径获取虚拟机上的文件。终于解决了这个问题。然后修改了之后马上进行试验,却又

出现了另一个问题。

可以看到“TFTP error: 'Permission denied' (0)”这样的错误提示,提示没有权限,然后经过我查资料,

出现这个错误一般有两个原因:

1、在 Ubuntu 中创建 tftpboot 目录的时候没有给予 tftboot 相应的权限。

2、tftpboot 目录中要下载的文件没有给予相应的权限。

针对这两个原因,我们需要一个个的排查,都给上最高权限。使用命令" chmod 777 xxx ",其中“xxx”就

是要给予权限的文件或者文件夹。至此,问题终于得以解决,最终正确的结果如图

总结

针对uboot阶段无法使用tftp(或者nfs)挂载内核和设备树的一般解决思路。

1、检查开发板网络环境的搭建是否正确,也就是关于主机,虚拟机,开发板,路由器或者交换机之间网线

连接是否正确,对应的IP配置是否正确,防火墙是否关闭,最终的检测方法就是使用ping测试,开发板能

够ping通ubuntu虚拟机和windows主机即可,这一步检查完成,不用管ubuntu是否能ping通uboot阶段的开

发板(这是我犯的错误)。

2、如果完成第1个仍没有解决,那就去检查tftp和nfs的环境配置是否正确,这里有一些配置文件需要进行

修改,需要仔细核对是否修改正确了,尤其是文件路径是否正确了,像我这次的问题就在于文件路径出错,

导致找不到文件,还没有有效的提醒,如果路径正确,目标文件不存在还会有提醒(此文件不存在)。

3、这是对第2步的补充,出现提示权限问题,则我们对相应的文件及文件夹进行开最高权限(本应该如此)。

4、对于前3步的结果我们也可以通过一种方法来验证。我们将开发板进入到linux系统中去,然后在开发板

文件系统中执行相关的命令(跟在普通linux环境中一样),使用tftp命令或者nfs命令,将虚拟机中自己新建

的一个测试文件传输到开发板中,查看是否能够传输成功,从而验证整个环境是否搭建成功。

uboot是个引导启动程序。BIOS自检完成后就把电脑控制权交给uboot,由uboot来加载并引导 *** 作系统运行。

内核就是最最最核心的那部份。 *** 作系统内核就是 *** 作系统的最最最最核心的那些程序。新安装的 *** 作系统中,一些自带的小工具啊,小游戏啊,甚至连键盘鼠标控制功能,这些都不属于内核。内核是不包括硬件驱动程序的。

*** 作系统就是控制计算机硬件的软件系统。它与内核的区别是它包含硬件驱动和一些基本的实用功能。

根文件系统这个名词很少出现在windows中。在计算机存储中,目录结构都是以树形结构表示的,根就是指这棵树的根部。其他所有目录都是在这个“根”上面逐级分配而来。“根文件系统”因为你加了“系统”二字,所以可以解释为是指“整棵树”,整个“树形结构的文件系统”

它们之间的关系是:BIOS自检---uboot引导----加载内核---- *** 作系统启动---启动完成,系统待机。这几个步骤所需要用到的文件与程序什么的全部存贮在文件系统中。在这几个名词来说,文件系统可以独立存在,但其他几样则无法脱离文件系统而存在。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11772399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存