快速编译嵌入式Linux(4.9.229)内核(硬件:mini2440)

news2024/11/25 10:03:32

目录

概述

1 Linux内核介绍

1.1 Linux 内核版本

1.2 下载Linux 内核

2 编译内核

2.1 解压内核

2.2 编译环境

2.3 编译内核


概述

本文主要以硬件板卡mini2440为例,介绍如何从linux内核官网下载一个原生态的内核源码包,通过简单的配置编译适合在ARM上运行的内核。笔者使用linux 内核版本为linux-4.9.229为模版,介绍内容包括:交叉工具的配置,linux内核目录结构,编译内核使用的命令,以及如何生成zImage文件。

1 Linux内核介绍

1.1 Linux 内核版本

Linux内核有3个数字组成,数字之间用“.”号隔开,前两个数字是内核的版本号,第三个数字是版本大的发行号。下面用一张表说明它们的含义。以内核版本linux-4.9.229 为例介绍各个参数的意义:

Index表示的意义注释
byte0: 4主版本号
byte1: 9表示的意义次版本号偶数版本:稳定版本 奇数版本: 测试版本
byte2: 229发行号

1.2 下载Linux 内核

linux内核的官方镜像地址:

https://mirrors.edge.kernel.org/pub/linux/kernel/

打开链接:

也可以选择国内镜像,其下载速度相对官方镜像地址要快许多,地址链接:

https://mirror.bjtu.edu.cn/kernel/linux/kernel/

本文选择下载的内核版本为:linux-4.9.229

2 编译内核

2.1 解压内核

解压内核源代码包:linux-4.9.229.xz,在源代码压缩包的同级目录下登录shell窗口,使用命令:

 tar -xvf linux-4.9.229.tar.xz

解压完成后,进入到内核目录linux-4.9.229,可以看见如下源码目录结构,每个目录中源代码的功能如下:

目录结构说明
arch包含此内核源代码所支持的硬件体系结构相关的底层代码,每种处理器架构平台占据一个目录,例如: arm、arm64、avr32、x86
block块设备的通用函数库
crypto系统加密和散列(hash)算法(例如:AES、DES、MD5)等,还包括一些压缩和CRC的校验算法
DocumentationLinux内核各部分的通用解释和说明文档
drivers内核支持的绝大部分设备驱动程序,每一类驱动程序占据一个目录
firmware第三方设备的驱动库,文件格式为.ihex
fs内核支持的各种相关的文件系统目录
include内核头文件目录。和系统相关的头文件放在include/linux目录下,与处理器相关的头文件放在include/asm-generic
init内核启动相关的代码目录
ipc进程通信相关的点目录
kernel内核的核心目录,包括进程创建和调度,定时器,系统控制,中断,软中断和工作队列等代码,而与处理器相关的核心代码放在arch/*/kernel 目录下
lib库文件代码目录。与CPU架构相关的库文件放在arch/*/lib
samples一些内核和设备的使用范例
scripts用于配置和编译内的脚本文件
sound和音频设备相关的驱动代码
tools编译内核的工具
usr内核编译将在该目录下生成一个压缩的cpio格式的initramfs文件:initramfs_data.cpio.gz,它将在系统启动的过程中被挂载到系统中
virt虚拟机相关的文件

2.2 编译环境

打卡linux-4.9.229/Makefile文件,配置如下参数

代码257行: 配置系统为arm架构

代码258行:交叉编译器的绝对路径

ARCH		?= arm
CROSS_COMPILE	?= /home/ctools/gcc-linaro-4.9.4-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-

# Architecture as present in compile.h
UTS_MACHINE 	:= $(ARCH)
SRCARCH 	:= $(ARCH)

# Additional ARCH settings for x86
ifeq ($(ARCH),i386)
        SRCARCH := x86
endif
ifeq ($(ARCH),x86_64)
        SRCARCH := x86
endif

在linux-4.9.229/arch/arm/configs目录下有许多和板卡相关的配置,笔者选择选择mini2440配置编译参数,配置命令如下:

make clean
make mini2440_defconfig

执行命令后:

2.3 编译内核

配置完成以后就可以编译了,使用如下命令编译 Linux 内核,使用命令:

make -j16

如果要生成zImage文件,使用命令:

make zImage

进入到/linux-4.9.229/arch/arm/boot目录,可以看见zImage文件

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

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

相关文章

Python+Django+Yolov5路面墙体桥梁裂缝特征检测识别html网页前后端

程序示例精选 PythonDjangoYolov5路面墙体桥梁裂缝特征检测识别html网页前后端 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonDjangoYolov5路面墙体桥梁裂缝特征检测识别html网页前…

算法---动态规划练习-7(按摩师)【类似打家劫舍】

按摩师 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 首先,给定一个整数数组 nums,其中 nums[i] 表示第 i 天的预约时间长度。 定义两个辅助数组 f 和 g,长度都为 n(n 是数组…

RabbitMQ 实验消费原始队列消息, 拒绝(reject)投递死信交换机过程

如果你想通过 RabbitMQ 的死信队列功能实现消费者拒绝消息投递到死信交换机的行为,你可以按照以下步骤操作: 创建原始队列,并将其绑定到一个交换机上: export RABBITMQ_SERVER127.0.0.1 export RABBITMQ_PORT5672 export RAB…

【VMware Workstation】公司所有主机和虚拟机ip互通,以及虚拟机目录迁移

文章目录 1、场景2、环境3、实战3.1、所有主机和虚拟机ip互通Stage 1 : 【虚拟机】设置为桥接模式Stage 2 : 【虚拟机】设置ipStage 3 : 【路由器】ARP 静态绑定MACStage 3-1 ping 路由器 ipStage 3-2 【静态绑定】虚拟机查看mac地址Stage 3-3 【静态绑定】路由器ARP 静态绑定 …

基于js css的瀑布流demo

要实现照片按照瀑布流展示&#xff0c;写个小demo&#xff0c;记录下。 瀑布流实现思路如下&#xff1a; CSS 弹性布局对 3 列按横向排列&#xff0c;对每一列内部按纵向排列 html代码&#xff1a; <div class"content"></div> css代码&#xff1a; …

【 MyBatis 】| 关于多表联查返回 List 集合只查到一条的 BUG

目录 一. &#x1f981; 写在前面二. &#x1f981; 探索过程2.1 开端 —— 开始写 bug2.2 发展 —— bug 完成2.3 高潮 —— bug探究2.4 结局 —— 效果展示 三. &#x1f981; 写在最后 一. &#x1f981; 写在前面 今天又是 BUG 气满满的一天&#xff0c;一个 xxxMapper.xm…

新手体验OceanBase社区版V4.2:离线部署单节点集群

本文源自OceanBase用户的分享 先简单总结如下&#xff1a; 1.本文适合初学者体验OceanBase社区版 v4.2.2 2.仅需准备一台配置为2C/8G的Linux虚拟机 3.通过离线方式安装&#xff0c;以便更直观地了解安装过程 一、Linux系统准备 在宿主机(即你的windows PC电脑)上安装vbox软…

Mac添加和关闭开机应用

文章目录 mac添加和关闭开机应用添加开机应用删除/查看 mac添加和关闭开机应用 添加开机应用 删除/查看 打开&#xff1a;系统设置–》通用–》登录项–》查看登录时打开列表 选中打开项目&#xff0c;点击“-”符号

大模型时代下的“金融业生物识别安全挑战”机遇

作者&#xff1a;中关村科金AI安全攻防实验室 冯月 金融行业正在面临着前所未有的安全挑战&#xff0c;人脸安全事件频发&#xff0c;国家高度重视并提出警告&#xff0c;全行业每年黑产欺诈涉及资金额超过1100亿元。冰山上是安全事件&#xff0c;冰山下隐藏的是“裸奔”的技术…

npm救赎之道:探索--save与--save--dev的神秘力量!

目录 1. --save和--save-dev是什么&#xff1f;2. 区别与应用场景--save--save-dev 3. 生产环境与开发环境4. 实际应用示例--save--save-dev 5. 总结 在现代软件开发中&#xff0c;npm&#xff08;Node Package Manager&#xff09;扮演着不可或缺的角色&#xff0c;为开发者提…

python基础 | 核心库:PIL

1、读取图像信息 查看图像信息 读取同一文件夹下的文件 可加 ./可不加 rom PIL import Image img Image.open(image.jpg) # 打开图像文件(注意:是去掉文件头的纯数据) print(img.format) # 图像格式(如BMP PNG JPEG 等) print(img.size) # 图像大小(…

第二十一章 Jquery ajax

文章目录 1. jquery下载2. jquery的使用3. jquery页面加载完毕执行4. jquery属性控制6. 遍历器 2. ajax1. 准备后台服务器2. ajax发送get请求3. ajax发送post请求 1. jquery下载 点击下载 稳定版本1.9 2. jquery的使用 存放到html文件的同级目录 3. jquery页面加载完毕执行…

Unity照片墙简易圆形交互效果总结

还要很多可以优化的点地方&#xff0c;有兴趣的可以做 比如对象的销毁和生成可以做成对象池&#xff0c;走到最左边后再移动到最右边循环利用 分析过程文件&#xff0c;采用Blender&#xff0c;资源已上传&#xff0c;可以播放动画看效果&#xff0c;下面截个图&#xff1a; …

OpenPLC_Editor 在Ubuntu 虚拟机安装记录

1. OpenPLC_Editor在虚拟机上费劲的装了一遍&#xff0c;有些东西已经忘了&#xff0c;主要还是python3 的缺失库版本对应问题&#xff0c;OpenPLC_Editor使用python3编译的&#xff0c;虚拟机的Ubuntu 18.4 有2.7和3.6两个版本&#xff0c;所以需要注意。 2. OpenPLC_Editor …

专题:一个自制代码生成器(嵌入式脚本语言)之应用实例

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 专题&#xff1a;一个自制代码…

【嵌入式机器学习开发实战】(十二)—— 政安晨:通过ARM-Linux掌握基本技能【C语言程序的安装运行】

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 嵌入式机器学习开发实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 在ARM-Linux系统中&#xff0c;C语言程序的安装和运行可…

局域网找不到共享电脑怎么办?

局域网找不到共享电脑是一种常见的问题&#xff0c;给我们的共享与合作带来一定的困扰。天联组网技术可以解决这个问题。本文将介绍天联组网的原理和优势&#xff0c;并探讨其在解决局域网找不到共享电脑问题中的应用。 天联组网的原理和优势 天联组网是一种基于加速服务器的远…

Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤

集群搭建 整体思路:先在一个节点上安装、配置,然后再克隆出多个节点,修改 IP ,免密,主机名等 提前规划: 需要三个节点,主机名分别命名:node1、node2、node3 在下面对 node1 配置时,先假设 node2 和 node3 是存在的 **注意:**整个搭建过程,除了1和2 步,其他操作都使…

浅谈C语言编译与链接

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 翻译环境和运行环境 在ANSI C&#xff08;标准 C&#xff09;的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个…

XUbuntu22.04之激活Linux最新Typora版本(二百二十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…