当前位置: 首页 > news >正文

Linux 系统移植(一)-- 系统组成

参考资料:

  1. linux系统移植篇(一)—— linux系统组成
  2. 【野火Linux移植篇】1-uboot初识与编译/烧录步骤

文章目录

  • 一、linux系统组成
  • 二、Uboot
  • 三、Linux内核
  • 四、设备树

本篇为Linux系统移植系列的第一篇文章,介绍了一个完整可运行的Linux系统由哪些部分组成,每个部分的作用是什么。

一、linux系统组成

一个完整的linux系统,通常包含了bootloader、kernel、设备树以及根文件系统。

  1. bootloader是在操作系统运行之前运行的一段小程序,主要负责把操作系统映像文件拷贝到RAM中去,然后跳转到它的入口处去执行。

  2. Linux 内核是操作系统的主要组件,也是计算机硬件与其进程之间的核心接口。它负责两者之间的通信,还要尽可能高效地管理资源。

  3. 设备树是一种描述硬件的数据结构,它把这些硬件设备的信息, 而这个文件,就是Device Tree(设备树),设备树包括设备树源码(Device Tree Source,DTS)文件、 设备树编译工具(Device Tree Compiler,DTC)与二进制格式设备树(Device Tree Blob,DTB), DTS包含的头文件格式为DTSI,其关系如下图所示:
    在这里插入图片描述
    Uboot和Linux不能直接识别DTS文件, 而DTB可以被内核与BootLoader识别解析,通常在制作NAND Flash、SD Card启动镜像时, 通常会为DTB文件留下一部分存储区域以存储DTB,在BootLoader启动内核时,会先读取DTB到内存,再提供给内核使用。

  4. 根文件系统(rootfs)是linux在初始化时加载的第一个文件系统, 根文件系统包括根目录和真实文件系统,它包含系统引导和使其他文件系统得以挂载(mount)所必要的文件。

  5. Uboot的全称 Universal Boot Loader。主要作用是用来启动操作系统内核,它分为两个阶段,即boot + loader, boot阶段启动系统,初始化硬件设备,建立内存空间映射图,将系统的软硬件带到一个合适的状态, loader阶段将操作系统内核文件加载至内存,之后跳转到内核所在地址运行。

二、Uboot

U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。 Uboot的全称 Universal Boot Loader,是遵循GPL条款的开源项目, U-Boot的主要作用是用来启动操作系统内核,它分为两个阶段,即boot + loader, boot阶段启动系统,初始化硬件设备,建立内存空间映射图,将系统的软硬件带到一个合适的状态, loader阶段将操作系统内核文件加载至内存,之后跳转到内核所在地址运行。

另外,某些BootLoader可能含有一些高级特性,如校验操作系统镜像,从多个操作系统镜像中选择引导合适的操作系统, 或者添加网络功能,让系统自主从网上寻找合适的镜像并且进行引导等等。
在这里插入图片描述

三、Linux内核

Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。 Linux内核是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为“内核”,也可以称为“核心”。Linux内核的主要模块(或组件)分以下几个部分:进程管理子系统、内存管理子系统、文件子系统、网络子系统、设备子系统等。
在这里插入图片描述

四、设备树

设备树是一种描述硬件的数据结构,它把这些硬件设备的信息, 而这个文件,就是Device Tree(设备树),设备树包括设备树源码(Device Tree Source,DTS)文件、 设备树编译工具(Device Tree Compiler,DTC)与二进制格式设备树(Device Tree Blob,DTB), DTS包含的头文件格式为DTSI。

node1 {a-string-property = "A string";a-string-list-property = "first string", "second string";a-byte-data-property = [0x01 0x23 0x34 0x56];child-node1 {first-child-property;second-child-property = <1>;a-string-property = "Hello, world";};
};

在Uboot启动内核时,会先读取DTB到内存,然后再启动内核,内核可以从设备树中获取硬件信息。
在这里插入图片描述
五、根文件系统
根文件系统(rootfs)是linux在初始化时加载的第一个文件系统, 根文件系统包括根目录和真实文件系统,它包含系统引导和使其他文件系统得以挂载(mount)所必要的文件。 根文件系统包函Linux启动时所必须的目录和关键性的文件,例如Linux启动时必要的初始化文件, 它在init目录下,此外根文件系统中还包括了许多的应用程序bin目录等, 任何包括这些Linux 系统启动所必须的文件都可以成为根文件系统。

在Linux内核启动的初始阶段,首先内核会初始化一个基于内存的文件系 统,如initramfs,initrd等,然后以只读的方式去加载根文件系统(load rootfs), 读取并且运行/sbin/init初始化文件,根据/etc/inittab配置文件完成系统的初始化工作 (提示:/sbin/init是一个二进制可执行文件,为系统的初始化程序,而/etc/inittab是它的配置文件), 在初始化的过程中,还会以读写的方式重新挂载根文件系统,在系统启动后, 根文件系统就可用于存储数据了,存在根文件系统是Linux启动时的必要条件。

我们常见的根文件系统制作工具有 buildroot、Ubuntu、Debian、yocto、busybox,这些工具的优缺点列出如下
在这里插入图片描述

相关文章:

Linux 系统移植(一)-- 系统组成

参考资料&#xff1a; linux系统移植篇&#xff08;一&#xff09;—— linux系统组成【野火Linux移植篇】1-uboot初识与编译/烧录步骤 文章目录 一、linux系统组成二、Uboot三、Linux内核四、设备树 本篇为Linux系统移植系列的第一篇文章&#xff0c;介绍了一个完整可运行的L…...

利用git的贮藏功能

可以将自己分支的当前状态贮藏切换到其它分支再切换回来的时候&#xff0c;应用就行了...

第52节:cesium 3DTiles模型特效+选中高亮(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><vc-navigation...

day03_基础语法

今日内容 零、复习昨日 一、Idea安装&#xff0c;配置 二、Idea使用 三、输出语句 四、变量 五、数据类型 附录: 单词 零、 复习昨日 1 装软件(typora,思维导图) 2 gpt(学会让他帮你解决问题) 3 java发展(常识) 4 HelloWorld程序 5 编码规范 6 安装jdk,配置环境变量 电脑常识 任…...

数据结构与算法-时间复杂度与空间复杂度

数据结构与算法 &#x1f388;1.概论&#x1f52d;1.1什么是数据结构&#xff1f;&#x1f52d;1.2什么是算法&#xff1f; &#x1f388;2.算法效率&#x1f52d;2.1如何衡量一个算法的好坏&#xff1f;&#x1f52d;2.2算法的复杂度&#x1f52d;2.3时间复杂度&#x1f4d6;2…...

数组的去重

根据您提供的代码片段&#xff0c;看起来您尝试使用嵌套的 for 循环将数组 data 中的元素添加到新数组 newData 中。然而&#xff0c;在您给出的代码中&#xff0c;if 语句的条件部分为空&#xff0c;可能是因为您还没有确定用于判断重复项的条件。如果您想要去除数组中的重复项…...

Electron自动化测试技术选型调研

Electron简介 Electron是一个开源的框架&#xff0c;用于构建跨平台的桌面应用程序。它由GitHub开发并于2013年首次发布。Electron允许开发人员使用Web技术&#xff08;如HTML、CSS和JavaScript&#xff09;来构建桌面应用程序&#xff0c;同时可以在Windows、macOS和Linux等操…...

微服务学习(九):安装OpenOffice

微服务学习&#xff08;九&#xff09;&#xff1a;安装OpenOffice 一、下载OpenOffice 下载地址&#xff1a;OpenOffice 二、开始安装 上传资源到服务器 解压资源包 tar -zxvf Apache_OpenOffice_4.1.13_Linux_x86-64_install-rpm_zh-CN.tar.gz进入zh-CN/RPMS目录下安装…...

SAP Oracle表空间扩展技术手册

1、DBACOCKPIT下查看表空间 当表空间不足(达到99%)时,需要按以下步骤扩充表空间(每次扩充20000M,20G): (也可以通过DB13,DB02查看表空间) 新浪博客 Tablespace PSAPSR3 is 100% used | SAP Community Oracle是通过增加数据文件的方式来为表空间扩容。为指定表空间增…...

Linux系统编程——线程的学习

学习参考博文&#xff1a; Linux多线程编程初探 Linux系统编程学习相关博文 Linux系统编程——文件编程的学习Linux系统编程——进程的学习Linux系统编程——进程间通信的学习Linux系统编程——网络编程的学习 Linux系统编程——线程的学习 一、概述1. 进程与线程的区别2. 使…...

zemaxMIF曲线图

调制传递函数&#xff08; Modulation Transfer Function&#xff0c;MTF &#xff09;是用来形容光学系统成像质量的重要指标。 通过对光学系统像空间进行傅里叶变换&#xff0c;可以得到一张分析图表&#xff0c;来描述像面上对比度和空间频率之间的对应关系。 对比度&…...

【苹果】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本

前言 &#x1f34a;缘由 Iphone15来了&#xff0c;两年之约你还记得吗&#xff1f; 两年前&#xff0c;与特别的人有一个特别的约定。虽物是人非&#xff0c;但思念仍在。 遂整合之前iphone13及iphone14的相关抢购代码&#xff0c;完成一个SpringBoot监听Iphone15有货邮件提…...

什么是WhatsApp群发,WhatsApp协议,WhatsApp云控

那么WhatsApp群控云控可以做什么呢&#xff1f; 1、获客 自动化引流&#xff0c;强大的可控性&#xff0c;产品快速拓客 2、导流 一键式傻瓜化自动加好友&#xff0c;群发&#xff0c;朋友圈营销 3、群控 一键式拉群好友&#xff0c;建群&#xff0c;进群 …...

RealVNC viewer 窗口指定默认显示

RealVNC Viewer关于显示器(monitor)的参数有两个&#xff0c;一个是monitor&#xff0c;一个是useallmonitor。 monitor就是指定viewer窗体在哪个显示器上显示的&#xff0c;windows下的默认值是空白&#xff0c;改为\\.\DISPLAY2 就可以在打开远程窗口的时候默认在副屏上显…...

图论20(Leetcode1254.统计封闭岛屿的数目)

代码&#xff1a; class Solution {static int[][] dirs {{1,0},{-1,0},{0,1},{0,-1}};public int closedIsland(int[][] grid) {int num 0; for(int i0;i<grid.length;i){for(int j0;j<grid[0].length;j){if(grid[i][j]0){int[] start {i,j};if(getIsland(start,gri…...

Docker 的基本概念和优势,以及在应用程序开发中的实际应用

Docker是一种开源的容器化平台&#xff0c;它可以将应用程序打包成容器&#xff0c;并且可以在不同的环境中运行。Docker的基本概念包括&#xff1a; 镜像&#xff08;Image&#xff09;&#xff1a;Docker镜像是一个可执行的包&#xff0c;它包含了运行应用程序所需的所有文件…...

数据仓库整理

数仓 olap vs oltp OLTP主要用于支持日常的业务操作&#xff0c;如银行交易、电子商务等&#xff0c;强调数据的准确性、实时性和并发性。OLAP主要用于支持复杂的数据分析&#xff0c;如数据仓库、决策支持等&#xff0c;强调数据的维度、聚合和可视化。 将OLTP数据库的数据…...

《C++API设计》读书笔记(3):模式

本章内容 本章涵盖了一些与CAPI设计相关的设计模式和惯用法。 “设计模式(Design Pattern)”表示软件设计问题的一些通用解决方案。该术语来源于《设计模式&#xff1a;可复用面向对象软件的基础》&#xff08;Design Patterns: Elements of Reusable Object-Oriented Softwar…...

小程序搜索词优化:小陈运营的秘密武器

大家好&#xff0c;我是小陈&#xff0c;今天要和大家分享一下小程序搜索词优化的经验和技巧。在数字化时代&#xff0c;小程序已经成为许多企业的重要工具&#xff0c;但要让小程序在竞争激烈的市场中脱颖而出&#xff0c;搜索词优化是不可或缺的一环。在本文中&#xff0c;我…...

SpringSecurity 入门

文章目录 Spring Security概念快速入门案例环境准备Spring配置文件SpringMVC配置文件log4j配置文件web.xmlTomcat插件 整合SpringSecurity 认证操作自定义登录页面关闭CSRF拦截数据库认证加密认证状态记住我授权注解使用标签使用 Spring Security概念 Spring Security是Spring…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...