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

目录

概述

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.mfbz.cn/a/498056.html

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

相关文章

誉天华为认证云计算课程如何

HCIA-Cloud Computing 5.0 课程介绍:掌握华为企业级虚拟化、桌面云部署,具备企业一线部署实施及运维能力 掌握虚拟化技术、网络基础、存储基础等内容,拥有项目实施综合能力 满足企业虚拟化方案转型需求,应对企业日益多样的业务诉求…

excel中批量插入分页符

excel中批量插入分页符,实现按班级打印学生名单。 1、把学生按照学号、班级排序好。 2、选择班级一列,点击数据-分类汇总。汇总方式选择计数,最后三个全部勾选。汇总结果一定要显示在数据的下发,如果显示在上方,后期…

typescript 实现RabbitMQ死信队列和延迟队列 订单10分钟未付归还库存

Manjaro安装RabbitMQ 安装 sudo pacman -S rabbitmq rabbitmqadmin启动管理模块 sudo rabbitmq-plugins enable rabbitmq_managementsudo rabbitmq-server管理界面 http://127.0.0.1:15672/ 默认用户名和密码都是guest。 要使用 rabbitmqctl 命令添加用户并分配权限&#xf…

RTOS线程切换的过程和原理

0 前言 RTOS中最重要的一个概念就是线程,线程的按需切换能够满足RTOS的实时性要求,同时能将复杂的需求分解成一个个线程执行减轻我们开发负担。 本文从栈的角度出发,详细介绍RTOS线程切换的过程和原理。 注:本文参考的RTOS是RT-T…

Typora字数过多的时候造成卡顿现象如何解决?

Typora字数过多的时候造成卡顿现象如何解决? 点击 、切换、滚动、打字都有点卡顿,下面介绍三种方法,三种方法都可以尝试,建议先尝试方法一,效果不满意就用方法二,实在不行就最后一个取巧的办法。 方法1&a…

Unity TMP 使用教程

文章目录 1 导入资源包2 字体制作3 表情包制作4 TMP 控件4.1 属性4.2 富文本标签 1 导入资源包 “Window -> TextMeshPro -> Import TMP Essential Resources”,导入完成后会创建一个名为"TextMehs Pro"的文件夹,这里面包含所需要的资源…

Maya 2024 for Mac/Win:重塑三维创意世界的利器

在数字化浪潮汹涌的当下,三维图形软件早已成为创意产业不可或缺的重要工具。而在这其中,Maya 2024以其卓越的性能和丰富的功能,赢得了无数设计师的青睐。无论是Mac还是Win平台,Maya 2024都能为您的三维创作提供强大的支持。 Maya…

Docker部署MinIO对象存储服务

1. 拉取MinIO镜像 # 下载镜像 docker pull minio/minio#查看镜像 docker images2. 创建目录 # 文件存储目录 mkdir -p /opt/minio/data# 配置文件 mkdir -p /opt/minio/config# 日志文件 mkdir -p /opt/minio/logs3. 创建Minio容器并运行 docker run \ -p 9000:9000 \ -p 90…

ES学习日记(二)-------集群设置

上一节写了elasticsearch单节点安装和配置,现在说集群,简单地说就是在多台服务器上搭建单节点,在配置文件里面增加多个ip地址即可,过程同单节点部署,主要说集群配置 注意:不建议在之前单节点es上修改配置为集群,据说运行之后会生成很多文件,在单点基础上修改容易出现未知问题,…

zedboard+AD9361 运行 open WiFi

先到github上下载img,网页链接如下: https://github.com/open-sdr/openwifi?tabreadme-ov-file 打开网页后下载 openwifi img 用win32 Disk lmager 把文件写入到SD卡中,这一步操作会把SD卡重新清空,注意保存数据。这个软件我会…

最小可行产品需要最小可行架构——可持续架构(三)

前言 最小可行产品(MVP)的概念可以帮助团队专注于尽快交付他们认为对客户最有价值的东西,以便在投入大量时间和资源之前迅速、廉价地评估产品的市场规模。MVP不仅需要考虑产品的市场可行性,还需要考虑其技术可行性,以…

【JavaWeb】Day24.Web入门——HTTP协议(一)

HTTP协议——概述 1.介绍 HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则。 http是互联网上应用最为广泛的一种网络协议http协议要求:浏览器在向服务器发送请求数据时,或是服务器在…

Oracle存数字精度问题number、binary_double、binary_float类型

--表1 score是number(10,5)类型 create table TEST1 (score number(10,5) ); --表2 score是binary_double类型 create table TEST2 (score binary_double ); --表3 score是binary_float类型 create table TEST3 (score binary_float );实验一:分别往三张表插入 小数…

Redis开源协议变更!Garnet:微软开源代替方案?

Garnet:微软开源的高性能替代方案,秉承兼容 RESP 协议的同时,以卓越性能和无缝迁移能力重新定义分布式缓存存储! - 精选真开源,释放新价值。 概览 最近,Redis修改了开源协议,从BSD变成了 SSPLv…

青龙脚本 猫猫看看

话不多说开图 https://raw.githubusercontent.com/Huansheng1/my-qinglong-js/main/%E7%8C%AB%E7%8C%AB%E7%9C%8B%E7%9C%8B.py

探索Python人工智能在气象监测中的创新应用

Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

Jupyter安装教程(Windows 版)

这几年AI人工智能这么火,陆陆续续诞生了很多新的产品,新的商业模式,随着Open-sora 1.0开源之后,让我更加地相信GPT5也即将要到来了,看来不学机器学习和深度学习,恐怕是要跟不上时代了。于是就想着今年开始接…

【管理咨询宝藏59】某大型汽车物流战略咨询报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏59】某大型汽车物流战略咨询报告 【格式】PDF 【关键词】HR调研、商业分析、管理咨询 【核心观点】 - 重新评估和调整商业模式,开拓…

智能设备配网保姆级教程

设备配网 简单来说,配网就是将物联网(IoT)设备连接并注册到云端,使其拥有与云端远程通信的能力。配网后,智能设备才能被手机应用或者项目管理后台控制,依托于智能场景创造价值。本文介绍了配网的相关知识&…

【分享】CMMI V3.0版本做了哪些改变?哪些企业适合申请CMMI3.0

​ CMM是由美国卡内基梅隆大学软件工程研究所1987年开发成功的,它基于过去所有软件工程过程改进的成果,吸取了以往软件工程的经验教训,提供了一个基于过程改进的框架;CMMI(Capability Maturity Model Integration能力成熟度模型集…