LINUX——内核移植、内核编译教程

Linux内核编译是一个将内核源代码转换成可在特定硬件架构上运行的二进制文件的过程。以下是编译Linux内核的一般步骤:

1、准备工作

  • 确保安装了必要的编译工具,如gccmakencurses库(用于make menuconfig)等。

2、获取内核源码

  • 从Linux内核官网下载内核源码或使用git克隆源码仓库。
  • eg:这是我使用的内核源码压缩包

3、解压源码:如果下载的是压缩包,使用tar命令解压到工作目录。
eg :tar -xvf xxxxxxxxxx.tar.gz

解压完成后会生成一个文件夹,后续有些操作就在该文件夹顶层操作

4、拷贝默认配置到.config(该操作要在解压后的顶层目录下操作)
eg :cp config_mini2440_td35  .config

4、配置内核:运行make menuconfig进行内核配置(处在内核源码目录顶层)。这些命令提供了一个图形界面来配置内核选项,配置完毕后,退出并保存。

5、编译内核:在内核源码目录中运行make uImage命令开始编译过程。根据系统性能,这个过程可能需要一些时间。

在编译过程中也许会出现这个错误,按照错误提示,去kernel/timeconst.pl line 373.修改

原来的代码是这样:

修改后:

然后再次编译:

等待一会儿后编译完成:

此时地址还存在一定问题,因为uImage会带有64字节的头信息,而在编译完成后的信息中显示,下载地址和入口地址一样,均为0x30008000,这样会导致最后启动0x30008000地址处代码时,出现异常:如图:

所以,我们需要将入口地址向后偏移64字节,即偏移到:0x30008040处。

原代码:

修改后代码:

6、将编译完成的uImage拷贝到tftproot,即tftfp服务文件夹下

7、连开发板,运行bootloader程序,进入U-Boot界面

U-Boot

  • 通常会显示一个启动菜单,其中包含一些基本信息,如内存配置、启动参数和网络配置等。
  • 如果配置了网络启动,可能会显示网络启动的状态信息。

8、通过tftp服务将内核镜像文件uImage下载在内存地址为0x30008000处。

如果下载失败,需要检查网络配置问题,如通过ping  ubuntu的地址查看是否可以连接上;

9、配置环境变量,向内核传参,挂载根文件系统;

10、bootm 0x30008000 启动这个地址处的代码,即拷贝过去的内核代码;

看到这里,就证明已经成功了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点云深度学习系列:4DenoiseNet——考虑时空维度的去雪模型

文章:4DenoiseNet: Adverse Weather Denoising From Adjacent Point Clouds 代码:https://github.com/alvariseppanen/4DenoiseNet 1)摘要 可靠的点云数据对于感知任务至关重要,例如在机器人和自动驾驶应用中。恶劣天气会导致特定…

giugughk

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

基于Arduino的智能眼镜

基于Arduino的智能眼镜 制作智能眼镜 大家好,今天我要和大家分享一个非常有趣的项目——使用Arduino Nano制作智能眼镜。这个项目结合了电子技术和编程,是DIY爱好者的完美选择。以下是如何构建这款智能眼镜的基本概述。 实物图: 智能眼镜的…

ESP8266使用AT指令完成MQTT功能

ESP8266使用AT指令完成MQTT功能 在esp8266设备中烧录安信可的AT固件之后,进行AT指令完成信息发布,并最终实现在Homeassistant中发布传感器并设置传感器状态。 一、基础指令 以下是完整的步骤和对应的AT指令: 1. 配置ESP8266为Station模式 …

贪吃蛇游戏(代码篇)

我们并不是为了满足别人的期待而活着。 前言 这是我自己做的第五个小项目---贪吃蛇游戏(代码篇)。后期我会继续制作其他小项目并开源至博客上。 上一小项目是贪吃蛇游戏(必备知识篇),没看过的同学可以去看看&#xf…

多态对象的存储方案小结

某个类型有几种不同的子类,Jackson中的JsonTypeInfo 和JsonSubTypes可以应对这种情形,但有点麻烦,并且name属性必须是字符串、必须用Jackson为基础的json工具类对json字符串和对象进行序列化和反序列化。用过一次这种方案后边就不想再用了。 …

【Python数据结构】深入理解Python中的列表、字典和集合!

【Python数据结构】深入理解Python中的列表、字典和集合! 在Python编程中,数据结构是处理和组织数据的核心部分。Python提供了许多内置的数据结构,如列表、字典和集合,它们为程序员提供了灵活、高效的数据管理方式。本篇博客将深…

如何实现简单的 WinCC 项目分屏?

说明: 本文主要介绍了在不使用分屏器的情况下,通过 WinCC 项目中的设置,实现简单的分屏操作。两台显示器分别显示不同的 WinCC 画面,独自操作,互不影响。 试验环境 : 本文试验时所用硬件及软件环境…

Ubuntu如何显示pcl版本

终端输入: apt-cache show libpcl-dev可以看到,Ubuntu20.04,下载的pcl,应该都是1.10版本的

机器学习可解释性

机器学习的稳健性、可解释性和结果正确性等是人工智能安全可信应用必须解决的关键问题。 传统机器学习: 内置可解释性:决策树IF-Then规则,直观可理解事后可解释性:训练结束后的可解释技术特定于模型体系结构的解释与解释方法及模…

VS Code设置右侧滚动条高亮选中的字符位置

打开菜单“文件 -> 首选项 -> 设置”, 搜索“hightlight”,扩展中的Highlight Selections,再点击“在 settings.json中编辑”, 将editor.selectionHighlight选项改为true保存即可

【读书笔记·VLSI电路设计方法解密】问题12:制造MOSFET晶体管的主要工艺步骤是什么

VLSI芯片是在半导体材料上制造的,这种材料的导电性介于绝缘体和导体之间。通过一种称为掺杂的工艺引入杂质,可以改变半导体的电气特性。能够在半导体材料的细小且定义明确的区域内控制导电性,促使了半导体器件的发展。结合更简单的无源元件(电阻、电容和电感),这些器件被…

股市入门常见术语介绍

鉴于最近行情讨论火热,我也想借此平台,结合我大学时期身边同学老师的投资经历,写一篇交易入门术语简介。内容不多但是足以达到科普之用。 ​ 希望大家能谨慎对待投资,始终保持谦虚学习的态度。不要迷失在瞬息万变的金融市场&…

Redis拒绝连接问题分析与解决方案

目录 前言1. 问题描述2. Redis拒绝连接的常见原因分析2.1 Redis服务未启动2.2 Redis配置中的绑定地址问题2.3 防火墙或安全组问题2.4 Redis连接池耗尽2.5 Redis服务器负载过高2.6 权限配置问题 3. 深度解决方案和优化建议4. 总结 前言 在分布式系统中,Redis作为高性…

游戏服务端架构演进

文章目录 前言初出茅庐粗通皮毛略有小成炉火纯青内劲深厚最后 前言 对于网络游戏,一般分为客户端和服务端,客户端主要负责界面图像的渲染与一些交互操作,服务端主要负责数据的业务处理与存储还有与客户端之间的信息交互 比如玩家聊天、广播…

黑马程序员-redis项目实践笔记1

目录 一、 基于Session实现登录 发送验证码 验证用户输入验证码 校验登录状态 Redis代替Session登录 发送验证码修改 验证用户输入验证码 登录拦截器的优化 二、 商铺查询缓存 缓存更新策略 数据库和缓存不一致解决方案 缓存更新策略的最佳实践方案 实现商铺缓…

TS中如何正确处理window类型

在Typescript项目中,你可能都遇到过这个错误: Window & typeof globalThis 类型上不存在属性 X。 快速修复方案 我们将介绍几种不同的解决方案来解决这个问题。 Window 接口是在名为 lib.dom.d.ts 的文件中全局定义的。你可以使用各种技术来更改它&a…

Windows 11 24H2版本有哪些新功能_Windows 11 24H2十四大新功能介绍

距离上次发布的23H2版本已经过去了一年时间,现在,Win 11的24H2版本终于等到了,微软已经全面公开发布Win11 24H2版本,版本号为26100.1742,此次官宣的版本包括了消费者版、商业版、LTSC 2024版等,各种语言版本…

如何启动hive

检查mysql是否启动 通过Navicat测试mysql是否可以连接 找打hive配置文件所在目录 检查连接mysql的账号密码是否正确,如果不正确就要修改为正确的 初始化hive元数据存储的库:schematool -dbType <database_type> -initSchema 检查mysql中是否创建hive数据库,这里看到hive数…

zookeeper客户端

启动单机版的zookeeper 配置Maven环境 (1) IDEA自带maven (2) 更新Maven库镜像地址&#xff1a; ① 拷贝D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\plugins\maven\lib\maven3\conf\settings.xml [IntelliJ的安装目录]到 C:/用户/username/.m2 (如果.m2文件不存在&…