linux系统移植到开发板简要过程(移植bootloader引导加载程序---移植linux内核---制作根文件系统)

news2024/11/19 17:31:55

 一.标准linux启动过程图

        对于linux启动流程分析,我们需要移植bootloader引导加载程序---移植linux内核---制作根文件系统镜像文件;

二.为什么进行系统移植?

        对于不同的硬件平台,linux系统启动流程大体相同,但是资源需求有差异,所以需要对已有平台的linux系统的各种配置资源进行少量修改和裁剪,移植到已有的开发板上,使其在开发板上能运行;

三.移植bootloader引导加载程序(uboot移植)

1.uboot简介

  • bootloader:引导加载程序统称;
  • uboot是bootloader中,其中一种加载引导程序;
  • 在嵌入式开发中,常用引导加载程序为uboot,相当于电脑bios;

2.uboot特点作用

  1. uboot是一个开源分布式软件;

  2. uboot支持多种硬件架构平台(ARM/X86/POWERPC/.........);

  3. uboot是一个裸机开发程序;

  4. uboot是一个短命鬼,主要引导内核进行启动,内核启动成功之后,生命周期就结束;

  5. uboot引导内核进行启动时,会给内核传递两个参数(bootcmd/bootargs),bootcmd参数:自启动命令 ==> 进入自启动模式;bootargs参数:自启动参数 ==> 将ubuntu指定文件夹,挂载到开发板中;

 

四.移植linux内核

1.移植原因

        uboot已经移植成功,uboot主要作用引导内核进行启动,会给内核传递两个参数(bootcmd / bootargs);

        需要内核的五大功能:

  • 内存管理(内存是计算机系统中最主要的资源,内存申请释放等),
  • 文件管理(在Linux系统中一切皆是文件,通过文件系统格式进行ext2/ext3/ext4格式进行管理),
  • 进程管理(进程是在计算机系统中资源分配的最小单元,进程创建/销毁/调度),
  • 网络管理(内核支持各种网络标准协议和网络设备,通过网络协议栈,完成数据收发),
  • 设备管理(Linux 系统中几乎每个系统操作最终都映射到一个或多个物理设备上,字符设备 / 块设备);

2.linux内核特点

  1. linux内核是开源的,内核中由C语言和汇编语言实现;
  2. linux内核支持多种硬件架构平台;
  3. linux内核具有很好的移植性和裁剪性;
  4. linux内核可以采用模块化方式进行编译;

五.制作根文件系统

1.什么是根文件系统?

  • 根文件系统(rootfs):系统运行时,必须依赖的一些脚本和库相关文件;
  • 根文件系统镜像文件(ramdisk.img):将rootfs以某种格式进行压缩;

2.为什么制作根文件系统?

        内核已经成功,并且uboot可以引导内核进行启动成功,我们不能直接操作内核,内核空间属于3G~4G,应用层空间属于0G~3G , 用户是不可以直接操作内核空间;

        在Linux系统中一切皆是文件,文件是计算机系统的软件资源,操作系统本身和大量的用户程序、数据都是以文件形式组织和存放的,我们可以通过控制rootfs文件,间接控制开发板;

3.制作工具

        根文件系统制作网址:Index of /downloads

4.测试工具

        通过nfs服务器进行测试,将~/nfs/rootfs目录挂载到开发板上,串口工具对~/nfs/rootfs操作;

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

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

相关文章

多线程的创建

一、基本概念 1 cpu CPU的中文名称是中央处理器,是进行逻辑运算用的,主要由运算器、控制器、寄存器三部分组成,从字面意思看就是运算就是起着运算的作用,控制器就是负责发出cpu每条指令所需要的信息,寄存器就是保存运…

spaCy库的实体链接踩坑,以及spaCy-entity-linker的knowledge_base下载问题

问题1. spacy Can’t find factory for ‘entityLinker’ 1)问题 写了一个实体链接类,代码如下: nlp spacy.load("en_core_web_md")class entieyLink:def __init__(self, doc, nlp):self.nlp nlpself.doc self.nlp(doc)# Che…

MATLAB入门-矩阵的运算

MATLAB入门-矩阵的运算 本篇文章为学习笔记,课程链接为:头歌 相关知识 常见的矩阵运算有算术运算、关系运算和逻辑运算。MATLAB中的所有变量都是以矩阵的形式存储的,单个变量就相当于一个1*1的矩阵。 算术运算 下面展示的是常见的矩阵之…

云负载均衡

华为云:弹性负载均衡(ELB) 服务列表----弹性负载均衡 腾讯云:负载均衡 阿里云:弹性负载均衡(SLB)【ALB NLB CLB】 云服务: 云弹性负载均衡(ELB/SLB) 云服务…

Unity3D之简单溶解特效制作

文章目录 新建Shader Graph设置参数新建Step节点新建Simple Noise节点查看效果 新建Shader Graph 这里选择 Shader Graph -> URP -> Unlit Shader Graph 创建 设置参数 把 Surface Type 改成 Transparent 新建Step节点 创建一个Step的节点 把 Step 的 Out 连接到 Frag…

Java8-17 --- idea2022

目录 一、idea官网 二、使用idea编写hello world 三、查看工程中的JDK配置信息 四、详细设置 4.1、显示工具栏 4.2、默认启动项目配置 4.3、取消自动更新 4.4、选择整体主体与背景图 4.5、设置编辑器主题样式 4.5.1、编辑器主题 4.5.2、字体大小 4.5.3、修改注…

JS看板:bryntum taskboard 5.5.2 Crack

Bryntum 任务板是一个灵活的看板 Web 组件,可帮助您可视化和管理您的工作。 任务板非常灵活,允许您完全自定义卡片、列和泳道的渲染和样式。借助丰富的 API,您甚至可以在运行时打开或关闭功能。 在繁忙的团队中跟踪任务可能会令人畏惧。任务…

AMD GPU 内核驱动架构分析(一)

在Linux系统中,GPU驱动是集成在DRM框架中的,AMD GPU的内核驱动结构是一个复杂的软件堆栈,负责管理和控制AMD图形硬件,以便应用程序可以与GPU进行通信并利用其图形处理能力。以下是AMD GPU内核驱动的主要组成部分: 硬件…

【操作系统】聊聊进程、线程、协程

进程内部有那些数据 为什么创建进程的成本高 进程和线程 进程是资源分配的基本单位,而线程是程序执行的基本单位,一个是从资源分配的角度看,另一个是执行角度。 那么进程和程序的区别是什么? 程序,一段代码&#xff…

Linux 6.6 初步支持AMD 新一代 Zen 5 处理器

AMD 下一代 Zen 5 CPU 现已开始为 Linux 6.6 支持提交相关代码,最新补丁包括提供温度监控和 EDAC 报告等。 最新的 Linux 6.6 代码中已经加入了包括支持硬件监视器温度监控和 EDAC 报告的补丁。此外,新版本还加入了 x86 / misc 补丁,Phoronix…

9.11C高级day4

实现一个对数组求和的函数,数组通过实参传递给函数 sum0 function add() {for i in $*  #$*接收传来的所有参数do((sumi))doneecho $sum }#定义一个数组 arr(1 2 3 4 5 7 9)#向函数传参 add ${arr[*]}写一个函数,输出当前用户的uid和gid,并…

shell中分支语句,循环语句,函数

实现对一个数组求和的函数,将数组作为实参传给函数 #!/bin/bash sum() {for i in $do((sumi))doneecho $sum} read -p "请输入一组数字: " -a arr sum ${arr[*]}2 调用函数,输出当前用户的uid gid 并使用变量接收结果 #!/bin/bashget() {uid…

R语言发送邮件丨blastula包使用教程

R语言自动发送邮件 今天分享一个小技巧,用R语言脚本实现STMP邮件自动发送功能。 生信分析实际操作过程中,可能会偶尔会遇到耗时比较久的计算,比如基因组上游分析GATK标准流程往往耗时几天时间。 使用R语言自动发送邮件,在关键节点…

【性能测试】Jmeter —— jmeter计数器

jmeter计数器 如果需要引用的数据量较大,且要求不能重复或者需要递增,那么可以使用计数器来实现 如:新增功能,要求名称不能重复 1,新增计数器 计数器:允许用户创建一个在线程组之内都可以被引用的计数器…

LeGo-LOAM 源码解析

文章目录 0、整体框架1、imageProjection —— 点云分割0. main()1. cloudHandler()2. copyPointCloud()3. findStartEndAngle()4. projectPointCloud()5. groundRemoval()6. cloudSegmentation()7. labelComponents()8. publishCloud()9. resetParameters() 2、featureAssocia…

宠物互联网医院|宠物互联网医院掌上宠物的健康助手

宠物互联网医院依托于互联网技术,将宠物健康管理与现代科技相结合,为宠物主人们提供了全方位、便捷的养宠服务。通过智能手机APP,宠物主人不仅能够快速轻松地了解自己宠物的健康状况,还能够与兽医进行实时的在线咨询、预约就诊。不…

迷你无人车 Navigation 导航(3)

迷你无人车 Navigation 导航&#xff08;3&#xff09; 自己实现了对于迷你无人车关节的控制&#xff0c;由于原本的关节布置仅支持阿克曼转向&#xff0c;因此先进行阿克曼转向的控制 修改 URDF 文件 添加 transmission 标签&#xff0c;定义关节的驱动 <transmission …

MySQL Oracle区别

由于SQL Server不常用&#xff0c;所以这里只针对MySQL数据库和Oracle数据库的区别 (1) 对事务的提交 MySQL默认是自动提交&#xff0c;而Oracle默认不自动提交&#xff0c;需要用户手动提交&#xff0c;需要在写commit;指令或者点击commit按钮 (2) 分页查询 MySQL是直接在SQL语…

使用鳄鱼指标和ADX开立空头的条件,3秒讲清楚

使用鳄鱼指标和ADX开立空头的条件其实很简单&#xff0c;anzo capital昂首资本3秒钟讲清楚。 首先&#xff0c;市场行情需呈水平状态。再者&#xff0c;均线体系开始向上发散&#xff0c;给出明确的信号。最后&#xff0c;ADX确认该信号&#xff0c;要求指数上涨20%以上&#…

Weblogic(CVE-2017-10271)与 Struts2(s2-045) 反序列化漏洞复现

文章目录 Java 反序列化漏洞复现weblogic环境搭建漏洞复现 Struts2(s2-045)环境搭建漏洞复现**漏洞利用** Java 反序列化漏洞复现 weblogic Weblogic < 10.3.6 ‘wls-wsat’ XMLDecoder 反序列化漏洞&#xff08;CVE-2017-10271&#xff09; ​ Weblogic的WLS Security组…