Linux学习笔记8-Uboot移植-网络设置和其他坑的解决

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通,只要这两个能互通,开发板再设置在同一网段就没问题了。

  1. 在PC的以太网属性中,必须不要勾选Microsoft LLDP协议驱动程序
    在这里插入图片描述

  2. 在以太网属性的IPv4中指定IP地址,例如192.168.0.xx

  3. 进入Ubuntu主机的虚拟网络编辑器,点击更改设置
    在这里插入图片描述

  4. 红线位置选择你PC的有线网卡,注意是有线网卡。正是这一步设置使得虚拟机无法连上互联网,而且网络连接的图标上会有个问号。所以如果有需要利用虚拟机上网的,在这里选择已桥接至自动即可。
    在这里插入图片描述
    在这里插入图片描述

  5. 在虚拟机设置的网络适配器中选择桥接模式
    在这里插入图片描述

  6. 在虚拟机的设置-网络-有线连接中,IPv4选择手动,并输入和PC同网段的IP地址
    在这里插入图片描述

  7. 这时候应该就差不多了,先在终端打一下ifconfig -a,看看网卡有没有设置地址成功。
    在这里插入图片描述
    继续在终端里ping PC主机:ping 192.168.0.xx,其中xx是自己设置的PC机以太网的IP地址。
    也可以在PC主机里ping虚拟机。
    注意:主机和虚拟机互相ping的时候一定要把网线插到开发板,开发板必须打开电源!

  8. 利用boot阶段设置开发板的IP地址等环境变量,使用setenv命令和saveenv命令,就按照正点原子的教程操作即可,当然也要用192.168.0网段。到这里基本就没问题了。

还有个坑也是困扰我了几天,但原因其实很弱智,就是使用NFS挂载根文件系统时,IP地址后面和绝对路径之间不能有空格,否则NFS挂载不了根文件系统,Linux系统启动不起来,就是下面这句指令。

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.0.12:/home/xxx/linux/nfs/rootfs,proto=tcp,nfsvers=3 rw ip=192.168.0.13:192.168.0.12:192.168.0.1:255.255.255.0::eth0:off' 

192.168.0.12:/home/xxx…冒号和/之间不能有空格~~

正点原子其实提供了适配他们开发板的U-boot,Kernel和根文件系统,也基于NXP提供的原版文件进行了适应开发板的修改,建议按照教程一步步的基于原版文件进行修改,会有不一样的收获。

接着会进入到Linux驱动开发的学习,这也是最重要的部分了。

(未完待续)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/267576.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CUMT--Java复习--文件及IO流

目录 一、文件 1、文件系统和路径 2、File类 3、FilenameFilter接口 二、IO流 1、流的分类 2、流的体系结构 三、字节流 1、InputStream 2、OutputStream 四、字符流 1、Reader 2、Writer 五、过滤流和转换流 1、过滤流 2、转换流 六、序列化 1、对象序列化…

LeetCode 1954. 收集足够苹果的最小花园周长:数学O(1)的做法

【LetMeFly】1954.收集足够苹果的最小花园周长:数学O(1)的做法 力扣题目链接:https://leetcode.cn/problems/minimum-garden-perimeter-to-collect-enough-apples/ 给你一个用无限二维网格表示的花园,每一个 整数坐标处都有一棵苹果树。整数…

DRF之初识

一、序列化和反序列化 api接口开发,最核心最常见的一个过程就是序列化 【1】序列化 把我们能识别的数据结构(python的字典,列表,对象)转换成其他语言(程序)能识别的数据结构。例如: 我们在django中获取到的数据默认是模型对象(…

【论文解读】3D视觉标定的显式文本解耦和密集对齐(CVPR 2023)

来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/abs/2209.14941 开源代码:https://github.com/yanmin-wu/EDA 图1所示。文本解耦,密集对齐的3D视觉标定。文本中的不同颜色对应不同的解耦分量。…

Windows 11中显示文件扩展名的方法与Windows 10大同小异,但前者更人性化

默认情况下,Windows 11会隐藏已知文件类型的文件扩展名。这可能会使在不首先打开文件的情况下很难识别文件类型。 幸运的是,你可以将Windows 11配置为显示已知文件类型的扩展名。该方法类似于Windows 10,但该选项现在组织在下拉菜单中&#…

[kubernetes]控制平面ETCD

什么是ETCD CoreOS基于Raft开发的分布式key-value存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)etcd像是专门为集群环境的服务发现和注册而设计,它提供了数据TTL失效、数据改变监视、多值、目录监听、…

cygwin64路径转换小工具

文章目录 cygwin64路径转换小工具改善效果实现函数END cygwin64路径转换小工具 改善 在cygwin64做实验呢, 用VSCODE自己加的cygwin64的启动命令行作为控制台. 如果是一个比较长的windows路径, 输入起来真的烦. 做了一个就几句代码的小工具, 让输入路径时, 可以从工具上拷贝到…

2023.12.22 关于 Redis 数据类型 String 常用命令

目录 引言 String 类型基本概念 SET & GET SET 命令 GET 命令 MSET & MGET MSET 命令 MGET 命令 SETNX & SETEX & PSETEX SETNX 命令 SETEX 命令 PSETEX 命令 计数命令 INCR 命令 INCRBY 命令 DECR 命令 DECRBY 命令 INCRBYFLOAT 命令 总结…

代码随想录27期|Python|Day24|回溯法|理论基础|77.组合

图片来自代码随想录 回溯法题目目录 理论基础 定义 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。回溯函数也就是递归函数,指的都是一个函数。 基本问题 组合问题(无序&…

Spring(3)Spring从零到入门 - Spring整合技术及AOP事务管理

Spring(3)Spring从零到入门 - Spring整合技术及AOP事务管理 文章目录 Spring(3)Spring从零到入门 - Spring整合技术及AOP事务管理4 Spring整合技术示例4.1 Spring整合Mybatis4.1.1 Mybatis开发回顾4.1.2 整合Spring分析4.1.3 Spri…

AI项目十九:YOLOV8实现目标追踪

若该文为原创文章,转载请注明原文出处。 主要是学习一下实现目标追踪的原理,并测试一下效果。 目的是通过YOLOV8实现人员检测,并实现人员追踪,没个人员给分配一个ID,实现追踪的效果。 也可以统计人数。在小区办公楼…

JavaScript中的prototype和_proto_的关系是什么

JavaScript中的prototype和_proto_的关系是什么 __proto__ 是 JavaScript 中对象的一个内部属性,它指向该对象的原型。JavaScript 中每个对象都有一个 __proto__ 属性,通过它可以访问对象的原型。prototype 是函数对象特有的属性,每个函数都…

5. 创建型模式 - 单例模式

亦称: 单件模式、Singleton 意图 单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。 问题 单例模式同时解决了两个问题, 所以违反了单一职责原则: 保证一个类只有一…

C语言——关于数据在内存中存储的练习

大家好,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流 本文由:残念ing原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各位→…

gitattributes配置文件的作用

0 Preface/Foreword Git版本管控工具功能强大,在使用过程中,在多人合作的项目开发过程中,经常会遇到提交代码时出现的warning提醒,尤其是换行符。 Linux/Unix/Mac OS操作系统的换行符使用LF符号(\n)&…

基于python的selenium

一.安装 安装WebDriver 查看chrome版本号,设置-帮助-关于Google chrome,找到版本号。 可以到这个网站进行下载对应版本的chromedriver,如果chrome浏览器版本过高,可以下载最新版的chromedriver进行使用 Chrome for Testing availability 下载下来之后…

(附源码)SSM银行账目管理平台 计算机毕设43684

摘 要 当今社会已进入信息社会时代,信息已经受到社会的广泛关注,被看作社会和科学技术发展的三大支柱(材料,能源,信息)。信息是管理的基础,是进行决策的的基本依据。在一个组织里信息已作为人力,物力,财力之外的第四种能源,占有重要的地位。然…

Simulink元件

constant元件 输出常数/标量 这样我们就只输出了一个常数 输出一维数组/矢量 这样我们就输出了1-5一共5个数字 输出二维数组 这样我们就输出了4个数字 选择框Interpret vector parameters as 1-D 如果标量或者矩阵,勾与不勾都一样。 如果是向量,勾选…

【OAuth2】:赋予用户控制权的安全通行证--原理篇

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于OAuth2的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.什么是OAuth? 二.为什么要用OAuth?…