Linux内核基础知识

news2025/1/10 20:25:58

1.arm设备的启动过程

x86、Interl windows

  • 启动过程: 电源 ---- >BIOS----->windows内核 --->文件系统(C盘、D盘) ---->应用程序启动
  • 嵌入式产品: 树莓派、mini2440、manopi、海思、RK(瑞芯微)等
  • 启动过程: 电源-->bootloader (引导操作系统启动) -->linux内核--->文件系统(根据功能组织文件夹) --->应用
  • 安卓的启动过程: 电源---->bootloader/FastBoot--->inux内核---.>文件系统--->虚拟机--->Home应用程序C51/32启动过程: start启动文件--->应用程序
  • bootloader: 一段裸机代码,cpu、内存、flash、串口、数据段、驱动 (汇编和C语言)

2.linux内核源码分析

  1. 是开源、免费,linux开源社区工作者共同维护
  2. linux内核大概1.3万个文件,但是linux编译出来就几M
  3. Linux是一个开源,支持多架构的多平台代码,可执行非常高
  4. 支持多平台多架构,编译之前需要配置出适合的目标平台
  5. ARM: 海思: 树莓派、nanopi、2440; x86;PowerPC

3.linux内核源码配置

驱动代码的编写,必须要一个配置编译好的内核

配置的最终目标会生成 .config 文件 ,这个文件会指导makefile把需要用到的东西组织成内核

  • 第一种方式,厂家配了linux内核源码,cp厂家的.config   / find . -name *_defconfig
  • 第二种方式,make menuconfig 一项一项配置,基于厂家提供的config来配置
  • 第三种方式,完全自己手动配置

如何配置树莓派的Linux内核

1.ubuntu交叉编译环境的搭建

  • 获取交叉编译工具和源码
  • 手动配置环境变量

2.配置config

树莓派1是bcmrpi_defconfig,树莓派2、3工程是bcm2709_defconfig

使用源码自带的config:ARCH=arm CROSS_COMPILE=arm-linux-gnueablhf-KERNEL=kernel7 make bcm2709_defconfig 此命令功能是获取bcm2709_defconfig的配置到 .config里

驱动两种方式加载

  • *编译进内核 zImage包含了内核
  • M 模块方式生成驱动文件xxxx.ko ,系统启动后,通过命令 inmosd xxx.ko 加载

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig
            指定ARM架构   指定编译器                      树莓派          主要核心指令

4.Linux内核编译

安装必要的库:
sudo apt-get install bc
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install zlib1g:i386
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5

5.1 编译:
            ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs
j4 指定多少电脑进行编译,zImage生成内核镜像 ,modules要生成的驱动模块,dtbs生成配置文 件

5.2 编译成功后,看到源码树目录多了vmlinux,失败则无此文件
            成功后,目标zImage镜像arch/arm/boot底下

5.3 打包zImage成树莓派可用的xxx.img
            ./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img

5.4 数据拷贝

(1)挂载U盘

        mkdir data1 data2

        sudo mount /dev/sdb1 data1   一个fat分区,是boot相关的内容,kernel的img

        sudo mount /dev/sdb2 data2   一个是ext4分区,也就是系统的根目录分区。

(2 )安装modules, 设备驱动文件: hdmi usb wifi io 等等

        sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make         INSTALL_MOD_PATH=/home/zgl/data2 modules_install

(3)安装更新 kernel.img 文件,注意镜像名字是kernel7.img

        先备份

        cd /home/zgl/data1

        cp kernel7.img kernel7OLD.img

        再把编译新生成的拷贝到data1,起名kernel7.img

        cp kernel_new.img /home/zgl/data1/kernel7.img

  (4)复制其他相关文件

        cp arch/arm/boot/dts/.*dtb* /home/zgl/data1

        cp arch/arm/boot/dts/overlays/.*dtb* /home/zgl/data1/overlays/

        cp arch/arm/boot/dts/overlays/README /home/zgl/data1/overlays/

最后将Linux内核镜像拷贝至树莓派并启动新内核

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

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

相关文章

【人工智能】—_一阶逻辑、量词的推理规则、一般化分离规则、合一、前向_反向链接算法、归结算法

文章目录 量词的推理规则全称量词实例化存在量词实例化 简化到命题逻辑推理Generalized Modus Ponens(一般化分离规则)举例 合一Forward chaining 前向链接算法示例 Backward chaining algorithm 反向链接算法一般FOL的FC/BC的完整性 归结算法归结推理规…

CEF内核和高级爬虫知识

(转)关于MFC中如何使用CEF内核(CEF初解析) Python GUI: cefpython3的简单分析和应用 cefpython3:一款强大的Python库 开始大多数抓取尝试可以从几乎一行代码开始: fun main() PulsarContexts.createSession().scrapeOutPages(&q…

PMP中常用英文术语

常用术语(五) Project 项目 为完成一个唯一的产品或服务的一种一次性努力。 Project Charter 项目许可证 由高级管理部门提供的一个文档,它给项目经理特权把组织的资源应用到项目工作中。 Project Communication Management 项目沟通管理 项目…

3D视觉测量:面对面的对称度 点对(附源码)

文章目录 0. 测试效果1. 基本内容2. 3D视觉测量对称度测量思路3. 代码实现4. 参考文章目录:3D视觉测量目录微信:dhlddxB站: Non-Stop_目标:通过3D视觉方法计算面对面的对称度0. 测试效果 数据说明:此测试点云是通过UG建模,Meshlab降采样得到,数据比较理想,仅作为测试使用…

Blazor前后端框架Known-V1.2.14

V1.2.14 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行。 Gitee: https://gitee.com/known/KnownGithub:https://github.com/known/Known 概述 基于C#和Blazo…

ASIC-WORLD Verilog(16)综合

写在前面 在自己准备写一些简单的verilog教程之前,参考了许多资料----Asic-World网站的这套verilog教程即是其一。这套教程写得极好,奈何没有中文,在下只好斗胆翻译过来(加点自己的理解)分享给大家。 这是网站原文&…

HTML基础代码

以下是HTML基础代码&#xff1a; <!DOCTYPE html> <html> <head><title>网页标题</title> </head> <body><h1>这是一级标题</h1><p>这是一个段落。</p><img src"图片路径" alt"图片描述…

PNG图片压缩原理

png&#xff1f;&#xff1f;png的图片我们每天都在用&#xff0c;可是png到底是什么&#xff0c;它的压缩原理是什么&#xff1f; 很好&#xff0c;接下来我将会给大家一一阐述。 什么是PNG PNG的全称叫便携式网络图型&#xff08;Portable Network Graphics&#xff09;是…

一文讲清楚redis的线程池jedis

背景 在shigen实习的时候&#xff0c;遇到了日志系统的性能优化问题&#xff0c;当时的优化点就是&#xff1a;使用redis的线程池&#xff0c;实现并发状态下的性能优化。但是找了很多的技术方案&#xff0c;发现redis的线程池配置起来比较麻烦。正巧&#xff0c;这个周末shig…

arthas常用命令,排查cpu和内存场景

常用命令 命令&#xff1a;dashboard 查看jvm总体信息&#xff0c;包括线程&#xff0c;内存和运行环境 命令&#xff1a;monitor monitor -c 5 com.liubike.ta.controller.service.ApiService newString "param[1]2"每5秒统计一次监控方法被调用的次数 命令&…

numpy矩阵求MSE

MSE loss #官方示例 from sklearn.metrics import mean_squared_error y_true [[0.5, 1],[-1, 1],[7, -6]] y_pred [[0, 2],[-1, 2],[8, -5]] mean_squared_error(y_true, y_pred) #0.708验证 import numpy as np A np.array(y_true) B np.array(y_pred)mse (np.square…

【图解RabbitMQ-1】图解消息队列是什么玩意儿?它的应用场景有哪些?

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表&#xff0c;业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

NeoVim 安装

一、NeoVim 是什么&#xff1f; hyperextensible Vim-based text editor 译&#xff1a;基于超可扩展Vim的文本编辑器 二、如何安装NeoVim 1.brew 安装 注&#xff1a;brew 是 MacOS 上的包管理工具&#xff0c;即该命令一般情况下只适用于 Mac 电脑 brew install neovim如果…

4.Flasgger-接口文档化

一.下载安装 pip install flasgger0.9.7.1二.基本使用 from flask import Flask, jsonify from flasgger import Swaggerapp Flask(__name__) swagger Swagger(app)app.route(/colors/<palette>/) def colors(palette):"""Example endpoint returnin…

git co 命令是什么意思,用法是怎么样的

偶然看到同事使用 git co feat/xxx 来操作 git&#xff0c;以为 co 是什么 git 新命令&#xff0c;看起来很牛逼&#xff0c;所以问了下 chatgpt&#xff0c;chatgpt 的回答如下&#xff1a; git co 是 git checkout 的缩写形式&#xff0c;需要在Git的全局配置或别名配置中启用…

基于 Zookeeper 实现服务注册和服务发现

文章目录 前言声明前置知识服务注册和发现Zookeeper 工作原理实现过程注册中心服务注册服务发现 总结 前言 无论是采用SOA还是微服务架构&#xff0c;都需要使用服务注册和服务发现组件。我刚开始接触 Dubbo 时一直对服务注册/发现以及 Zookeeper 的作用感到困惑&#xff0c;现…

100天精通Python(可视化篇)——第99天:Pyecharts绘制多种炫酷K线图参数说明+代码实战

文章目录 专栏导读一、K线图介绍1. 说明2. 应用场景 二、配置说明三、K线图实战1. 普通k线图2. 添加辅助线3. k线图鼠标缩放4. 添加数据缩放滑块5. K线周期图表 书籍推荐 专栏导读 &#x1f525;&#x1f525;本文已收录于《100天精通Python从入门到就业》&#xff1a;本专栏专…

UI自动化之混合框架

什么是混合框架&#xff0c;混合框架就是将数据驱动与关键字驱动结合在一起&#xff0c;主要用来回归业务主流程&#xff0c;将核心流程串联起来。 上一篇我们写到了关键字驱动框架&#xff0c;关键字驱动框架是针对一个业务场景的单条测试用例的。 我们以163邮箱的登录到创建…

官方发布:Mac 版 Visual Studio IDE将于明年 8 月 31 日停止支持

近日&#xff0c;微软官方宣布&#xff1a;适用于 Mac 平台的 Visual Studio 集成开发环境&#xff08;IDE&#xff09;已经启动 "退休" 进程。Visual Studio for Mac 17.6 将继续支持 12 个月&#xff0c;持续到 2024 年 8 月 31 日。 微软表示在未来的 1 年内将重…

Matlab图像处理-中值滤波

中值滤波 中值滤波也是基于空间域&#xff08;邻域&#xff09;操作的&#xff0c;中值滤波是将像素邻域内灰度的中值来代替中心像素的值&#xff0c;把不同灰度的像素点看起来更接近于邻域内的像素点。 优点是可以很好的过滤掉椒盐噪声。中值滤波是非线性的图像处理方法&…