Linux之所以被称为操作系统,肯定是需要有引导程序来启动各个关键外设的运行,这里可以和个人电脑PC做个类比。我们在开机的时候是不是先要进入BIOS,BIOS在初始化硬盘、内存、USB接口、网口等之后,才可以进入Windows系统对吧?当然现在的电脑BIOS的引导是感受不到的。这里的BIOS就相当于一个bootloader引导程序,所以Linux也需要这样的bootloader。实际上,一个完整的Linux操作系统就是由Bootloader+Linux内核(Linux Kernel)+根文件系统(rootfs)这三大部分组成的。
关于Uboot移植,我是完全按照正点原子的教程来一步步学习和实际练习的,但是碰到了几个坑花了很长时间才搞明白并解决,所以这一篇笔记想重点记录这几个坑的解决过程,也可以让其他碰到类似问题的伙伴能多个参考。
第一个坑也是最大的坑,就是网络配置。我开发板和PC是用网线直连的,PC通过无线网卡上互联网,这个方式估计是很多初学者的标配吧,但就是这个方式给我造成了很长时间的困扰。最容易出现的问题就是无法ping通开发板和Ubuntu虚拟机,Ubuntu和PC机也无法互相ping通,甚至出现了刚设置好可以ping通了,一重启虚拟机又不行了的奇妙现象,这就使得NFS服务和TFTP服务无法正常使用,也就没办法实际练习内核的启动。在网络上找了很多所谓的教程,发现都无法彻底解决此问题(深深觉得CSDN就是一个你抄我的、我抄你的抄袭论坛)。最后还是自己研究了虚拟机和PC机的网络设置,还算成功的搞定了。但是我的这种方法在虚拟机、PC机和开发板都互相ping通的情况下,虚拟机是无法联互联网的。
首先要确保PC和虚拟机可以互相ping通,只要这两个能互通,开发板再设置在同一网段就没问题了。
-
在PC的以太网属性中,必须不要勾选
Micro