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

devtools/2024/10/9 5:18:23/

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.ppmy.cn/devtools/123211.html

相关文章

【机器学习-无监督学习】降维与主成分分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

查看PyTorch的GPU使用情况的工具

文章目录 torch.cuda APISnapshottorchinfo torch.cuda API torch.cuda.memory_stats:返回给定设备的 CUDA 内存分配器统计信息字典。该函数的返回值是一个统计字典,每个字典都是一个非负整数。torch.cuda.memory_summary:返回给定设备当前内…

docker详解介绍+基础操作 (一)

话不多说,先上干货 配置方法 Ubuntu 14.04/16.04/18.04/20.04/22.04/24.04(使用 apt-get 进行安装) # step 1: 安装必要的一些系统工具 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-…

Go语言实现随机森林 (Random Forest)算法

在 Go 语言中实现随机森林(Random Forest)算法通常涉及以下几个步骤: 数据准备:将数据集分为训练集和测试集,确保数据格式适合算法使用。 决策树的构建:随机森林是由多个决策树构成的,首先需要…

大数据毕业设计选题推荐-白酒销售数据分析-Python数据可视化-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

昆虫分类与检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

昆虫分类与检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

需求8——通过一个小需求来体会AI如何帮助改bug

这篇文章,我们通过一个简单的例子来说明,平时在写需求的时候,我们可以在什么时候用AI来帮助我们写代码。 首先来看一下这个需求:系统中某个用户使用的时候出现了bug,通过手机建立临时任务报错,没有办法新增…

【VUE】会员管理(增删改查)

前端 router/index.js import { createRouter, createWebHistory } from vue-router import {userInfoStore} from "/stores/user.js";const router createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: /login,name: login,comp…