嵌入式 Linux 入门(一、Linux 基本介绍及文件结构)

article/2025/9/18 20:08:00
嵌入式 Linux入 门第一课,嵌入式 linux 基础说明以及 Linux 文件结构。

目录

  • 前言
  • 一、嵌入式 Linux 基础
    • 1.1 Linux 简介
    • 1.2 Linux 与 windows
    • 1.3 Linux 版本选择
    • 1.4 何为嵌入式Linux?
    • 1.5 STM32为什么不能跑 Linux?
    • 1.6 什么是 MMU?
  • 二、安装环境说明
    • 2.1 虚拟机软件
    • 2.2 环境安装
  • 三、Linux文件结构
    • 3.1 FHS_3.0
    • 3.2 目录简要说明
  • 结语

前言

学习嵌入式 Linux,首先我们得知道什么是Linux,什么是嵌入式Linux,有一些基本概念就先得先了解。

基本的说明介绍完,我们第一篇先来了解一下 Linux 的文件结构。

本文就简单的说明一些必要的基本概念,以及介绍一下 Linux 的文件结构。但是呢,既然是自己写博文,除非专有名词会借用权威出处,并不想生搬硬套的说明,我会尽量用白话的方式给予说明。

说明,博主的参考资料会有韦东山,野火,正点原子,菜鸟教程,一口 Linux, 及网上各种有关的资料,基他们的资料我都有看,然后根据自己的学习理解,把觉得好的需要掌握的东西都会记录下来。
我是矜辰所致,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!

一、嵌入式 Linux 基础

第一章节来简单描述一些 嵌入式 Linux 相关的基础知识,主要是让我们知道自己要面对的是什么,将来要做的事情大概是什么。有些基础比如 Linux 发展历史之类的与我们学习开发并无关系, 感兴趣的可自行上网查阅。

废话不多说,开整 !

1.1 Linux 简介

Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。

Linux不仅系统性能稳定,而且是开源软件。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。

简单一句话,Linux 是一个开源的操作系统!

1.2 Linux 与 windows

对于操作系统而言,我们最熟悉的莫过于 Windows 操作系统,Linux 如果不是相关人员一般都接触不到。

对于我们熟悉的 Windows,我们知道电脑开机启动的时候首先会进入一个界面,一般很快就会跳过,在那个界面出现我们可以通过键盘进入一个设置界面:就是 BIOS(不搞计算机的可能这个地方都不明白)。 我们进入 BIOS 的时候还与 Windows 系统无关,通过 BIOS 加载放在我们硬盘上面的 Windows 操作系统来启动 windows,才进入到大家都熟悉的windows界面,接下来就是通过熟悉的图形化操作界面进行各种操作和程序的运行。

Linux作为一个操作系统,其实本质上这个流程是和 windows 一致的,这里韦东山老师的 Linux 教学资料里面有一张图可以很好的说明这种情况:

在这里插入图片描述

通过与我们熟悉的 Windows 操作系统做比较来说明 Linux 的启动运行,让我们更直观的体会到 Linux 也不过是一个操作系统,也能从大体上知道我们要以后要面对的一些工作:u-boot,驱动程序,内核,APP等。

1.3 Linux 版本选择

因为 Linux 是一个开源的操作系统,大家都可以进行开发使用,随着各大社区家族不同的侧重,如今有很多的版本:

具体版本区别说明可查看下面文章:这么多Linux版本,你究竟该怎么选择?

我们简单了解下一些主要的发行版本:
在这里插入图片描述

我们做嵌入式 Linux 开发,肯定需要在 Linux 环境下进行。博主本系列的文章,会使用 Ubuntu 为开发系统。

在这里插入图片描述

1.4 何为嵌入式Linux?

我们学习嵌入式 Linux, 说直白点就是在微处理器上面跑 Linux 操作系统。

我们以前学习51单片机,STM32,除了裸机程序,我们还能跑一些嵌入式 RTOS,比如FreeRTOS ,RT-Thread 等。

同样的,如果条件允许,我们也能在 MCU 上跑 Linux。

这里需要说明一定是需要条件允许,比如 STM32 就不能跑Linux。

1.5 STM32为什么不能跑 Linux?

首先我们应该知道 STM32 是 Cortex-M系列,此系列的 MCU 并没有 MMU(下面会说明什么是MMU) !

操作系统从某种意义上可以分为2种:

  • 需要MMU的: Linux 、Windows、MacOS
  • 不需要MMU的:FreeRTOS,RT-Thread(新分支RT-Thread smart已经支持,但是不带MMU的也一直存在),ucOS。

STM32 不带 MMU,所以他无法运行 Linux!

在 Cortex 家族中,有更高端的 Cortex-A 系列的芯片大部分是带MMU的。比如Cortex-A7,Cortex-A8等。

我们本专栏使用的开发板芯片为为 i.MX6ULL,基于ARM Cortex-A7架构的处理器。

1.6 什么是 MMU?

MMU是 Memory Management Unit 的缩写。

针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址与物理地址的转换,提供硬件机制的内存访问授权。
现在的多用户多进程操作系统, 需要MMU, 才能达到每个用户进程都拥有自己的独立的地址空间的目标。

使用MMU, OS划分出一段地址区域, 在这块地址区域中, 每个进程看到的内容都不一定一样。

具体的 MMU 分分析理解,可以查看下面推荐博文:

MMU的理解

硬件篇之MMU

二、安装环境说明

在上面说明 Linux 版本选择的时候,从最后的截图中可以看到,博主自己使用的开发环境为虚拟机安装 的 ubuntu 系统。

2.1 虚拟机软件

安装虚拟机需要专门的软件,博主接触过的虚拟机软件其实也就两款:VirtualBox 和 VMware Workstations。

VirtualBox:

VirtualBox 是德国 Innotek 公司开发,由 Sun Microsystems 推出的一款使用非常广泛的免费开源的虚拟机软件。

VirtualBox 好处在于完全免费开源,在野火的 Linux 教程使用的就是 VirtualBox 安装 Ubuntu 虚拟机,如下图:

在这里插入图片描述

VMware Workstations:

VMware Workstation(中文名“威睿工作站”)是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。

功能比较强大,正点原子 和 韦东山老师 的教程用的是这款虚拟机,博主自己其实也一直习惯使用VMware Workstations, 其实用什么无所谓,按照自己的习惯来就好,看哪个顺眼就用哪个。

在这里插入图片描述

在现在的 Win10 系统中,还可以安装桌面版本的 Ubuntu,可以直接在商店中找到,如下图:

在这里插入图片描述

但是听说这种桌面版本不适用于开发,具体的我自己以前安装的时候也是各种问题,最后还是失败放弃了。

建议 VirtualBox 和 VMware Workstations 安装虚拟机都可以,看自己的习惯和喜好。

2.2 环境安装

本来需要说明一下如何安装的,但是因为自己所有电脑上面都已经安装过了,而且使用了一段时间里面都有很多资料,所以不想破坏电脑上现在的环境,到时候换了电脑再来更新一篇手把手安装说明。

等我赚钱换个电脑 = =!

网上的参考资料也多,这个自己动手安装是必不可少的,也无法偷懒,必须得自己动手操作,环境安装虽然简单,但是安装过的人都知道,经常也会有莫名其妙的问题,必须得自己遇坑填坑。

文章更新,环境安装请参考的的环境篇博文:

嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)

三、Linux文件结构

好了介绍了那么多,今天作为第一篇我们需要了解的知识点:

Linux 文件结构,东西不多但是需要了解!

我们使用 Windows 系统,进入系统以后我们可以看到分为 C 盘,D 盘,E盘 等不同的区间,每个区间都可以存放文件。

Linux 系统里面所有的文件和目录都是挂载在根目录下面的:“/” 。
对于普通用户,在Ubuntu下不再关心分区、盘符,需要关心的是哪个目录存什么。
你可以简单理解为在 Linux 系统中就一个盘,这个盘称之为 “根目录”,所有的东西都放在这个根目录下面。

在这里插入图片描述在这里插入图片描述

pwd 命令为显示当前所处的目录,上图中目录就是一个斜杠 “/”,这个就是根目录。

3.1 FHS_3.0

因为 Linux 是开源免费的一个内核,所以任何公司和个人都可以使用 Linux 进行使用开发,但是为了保证文件结构的一致性,Linux 基金会提出了文件系统的层次结构标准 ——《 Filesystem Hierarchy Standard 》。

可以在下面这个网址中下载 PDF 文档:https://refspecs.linuxfoundation.org/FHS_3.0

在这里插入图片描述

这个文档中详细介绍了 Linux 的文件系统结构:

在这里插入图片描述

在之前很多博文中我都说过,最好的资料其实都是来自官方文档,所以只要好好看了上面的文档,对于 Linux 的文件结构就能够有全面的认识。

但话说回来,英文的文档确实对有部分伙伴不太友好,所以还是得,资料回看起来也相对多费时间,所以我们还是进行简要的说明。

3.2 目录简要说明

对于初学者还没有学习命令行,还不了解目录结构,所以这里说明截图以图形界面的形式讲解,但是也仅在入门开始的时候使用这种截图 = =!

我们就以下图的顺序来说明:

在这里插入图片描述

/bin

bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。任何人都可以使用的命令。

在这里插入图片描述

/boot

启动相关的文件,包括一些连接文件以及镜像文件。在有些发行版中还包括grub,grub是一种通用的启动引导程序(linux 里面的 uboot)。

在这里插入图片描述

/cdrom

以前用来挂载CD的镜像,现在逐渐淘汰了。

/dev

dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

在以后学习 Linux 应用编程的时候,对外设的操作,就是通过dev 中的这些文件操作来进行的。

☆ Linux下一切皆文件 ☆
在这里插入图片描述

/etc

etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

系统和应用程序的配置文件。

在这里插入图片描述

/home

用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如下图:

在这里插入图片描述

/lib 、/lib32、/lib64

lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

/lib32 和 /lib64 属于备用格式基本共享库(可选),提供对32位和 64 位不同程序的库。

在这里插入图片描述

/media

挂载一些多媒体设备,linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

在这里插入图片描述

/mnt

系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

这个目录的用途与 /media 类似,在有了/media之后,这个目录就只用来暂时挂载。

/opt

opt 是 optional (可选) 的缩写,可以做软件测试 或者 安装额外软件的目录。

在这里插入图片描述

/proc

proc 是 Processes(进程) 的缩写,存放的都是程序相关的信息。

/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

在这里插入图片描述

/root

系统管理员主目录,也称作超级权限者的用户主目录。

存放系统管理员相关的东西,需要输入密码才能进去的:

在这里插入图片描述

/run

是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。

/sbin

与 bin 类似,只不过这里的 bin 是给系统管理员使用的。

s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序,普通用户无法执行。

/snap

ubuntu 下面的软件管理工具,是和 apt 软件管理工具类似的。对于 ubuntu 的 snap 工具,有兴趣的可上网搜搜,但是我们在 Linux 下面,还是使用常用的 apt 工具即可。

/srv

该目录存放一些网络服务相关的信息,一些网路服务启动之后,这些服务所需要取用的资料目录。

在这里插入图片描述
/sys

存放了一些硬件操作的接口,这个目录使得我们可以使用控制终端控制外设变得简单。

在这里插入图片描述

/tmp

tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

这个目录是任何人都能够存取的,重要数据不可放置在此目录下,FHS建议在开机时,将/tmp下的资料删除。

在这里插入图片描述
/usr

存放了我们整个系统大部分的软件,是我们整个文件系统中最大的一个目录。

usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

在这里插入图片描述

/var

var 是 variable(变量) 的缩写,这个目录中存放这一些易变的文件,一些不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

在这里插入图片描述

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件:

  • /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
  • /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录。
  • /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下。

结语

本文主要说明了嵌入式 Linux 的一些基础问题,同时了解了一下 Linux 的文件结构。

做 Linux 开发,要记住一句话:☆ Linux一切皆文件☆

在我们入门的几篇基本上都是对 Linux 系统的基本了解,还用不到开发板,但是这是做嵌入式 Linux 开发的前提,所以我们也需要认真对待。

接下来的基础文章我们还需要说明,Linux的文件类型、属性,基本操作等。本文就到这里,谢谢!


http://chatgpt.dhexx.cn/article/2j6DoIFB.shtml

相关文章

仿支付宝蚂蚁森林效果

CustomWaterView 项目地址:xiaohaibin/CustomWaterView 简介::star: 仿支付宝蚂蚁森林效果 更多:作者 提 Bug 标签: 实现原理文章:https://www.jianshu.com/p/d3de46af06ad 支付宝蚂蚁森林效果:…

怎么用linux给苹果手机降级,如何查询iOS可降级版本?苹果iOS随意降级工具或即将到来...

有不少小伙伴在为 iPhone 升级新系统之后,又发现一些问题从而想要降级,但往往很遗憾的是,苹果官方已经关闭了降级验证的通道,无法成功进行降级。 如何查询当前设备可降级的 iOS 版本?有三种方法: 1.将 iOS …

如何安装IOS11系统

如何安装IOS 11系统 在WWDC2017大会上发布了炫酷的IOS 11系统,那如何亲手体验呢?这里分为几个步骤简单介绍下如何安装IOS 11系统: 1、下载文件 这里需要下载2个东西,一个IOS 11系统文件,一个是描述文件,都可以从苹果的开发者官网下载到,不过需要开发者账号。没有账号…

iOS11 持续定位

由于iOS11更新了定位服务设置:可选择使用使用app期间定位,虽然这种做替用户免去担忧,但给app使用可能造成了影响,开发者就要调整自己的应用程序了。本文只讲述在iOS11进行持续定位需要注意的事项,怎么去前台后台持续定位(使用Core…

A7芯片 IOS降级 跳过ID | ipad Mini2降级 10.3.3

A7芯片的mac mini2,可以降级到IOS 10.3.3.3 ,一定程度增加系统流畅度 本文所有方案、软件都是网上公开免费的 降级方案,比较通用的有2个降级方案,vieux操作比较复杂,这里选择Leetdown 1.下载并安装软件,仅M…

苹果手机iOS系统如何降级 数据备份?

降级回iOS 也许你所依赖的一个应用程序还不兼容,或者也许你只是遇到了太多的错误,并根据你的口味挂起,没问题,你可以降级回最新签署的iOS版本。您可能会丢失一些数据,因此在降级之前进行备份也是必须的。我们强烈建议您使用iMazi…

Ipad2.4 9.3.5 降级8.4.1方法

家里一台2012年ipad2,当初刚出2代的时候给LP买的礼物,刷剧看片很给力。后来年会抽到ipad air2 原来的机器就吃灰了。有一天手欠拿出来升级到了9.3.5变得很卡,决心越狱降级。 先再威锋和爱思论坛看了看,觉得有点了解了&#xff0c…

iPhone 4 无shsh 完美降级 iOS 6

你是否为自己升级iOS 7而后悔?😭😭 却没有备份shsh文件,强降总会睡死?🥲🥲 来看看iPhone 4降级iOS 6的方法👍👍👍 ⚠️此方法不需要任何shsh文件、不需要越…

iOS16Beta如何降级iOS15不丢失数据和出现白苹果?

你的iPhone升级到iOS16Beta了吗?现在很多人都升级了ios16 beta测试版,但因iOS16并非正式版,一般都会有很多bug,导致许多用户在升级体验了新功能后,又想降级到iOS 15,但有部分小伙伴反馈降级到ios15后iPhone出现白苹果&…

IOS11更新教程大分享(附带降级教程)

自从iPhone 8发布后,紧接着IOS 11正式版也全面推送了。不知道期待已久的你们,是不是已经准备升级系统了呢? 我们先来了解一下升级的方法,以及系统升级后新增的功能。 一、IOS 11升级 苹果公司向来都是“鼓励”用户更新系统的&a…

iOS11降级到iOS10.3.3/10.3.2教程

首先说一下iOS 11,在WWDC发布之后我对iOS11上面带来的诸多新特性感觉很好想体验一下,并在第一时间更新了iOS11开发者预览版! 更新后体验一天后我的感想是卡卡卡卡,几乎任何一个反应,都有延迟,都要等,等得我…

android手机刷ios6,iOS8.4降级6.1.3教程 iPhone4s降级iOS6.1.3

iOS8.4怎么降级6.1.3?这里小编和大家分享一个iOS8.4降级6.1.3教程。时至今日,苹果iOS6的拟物化设计风格依旧让不少用户怀念不已,现在一个好机会来了,国外开发者开发出了一款可让iPhone4s降级iOS6.1.3系统的工具,而且还…

IPAD2降级ios6教程整合

IPAD2降级ios6教程整合 降级之前的准备:降级方法:iPad2降级后升级IOS8的原因:升级方法: 我这台IPAD2买来也有八、九年了,版本号是ios9.3.5,非常卡,连打开个设置都是龟速,别说拿来用了…

android高仿ios11系统,安卓仿ios11桌面全套文件

安卓手机想要苹果11的桌面的话,安卓仿ios11桌面全套文件app就可以帮您实现哦。安卓仿ios11桌面全套文件app是一款超级优质的手机桌面工具软件,平台上面拥有海量的壁纸资源,大家可以任意选取哦。 应用说明 修改负一屏效果 修改dock栏模糊度 修…

iphone13 ios 16.2降级15.6刷机教程

最近,更新了最新的ios16.2之后,系统经常出现卡屏卡死和异常耗电情况,最终决定对手机进行系统降级处理,下面是我的一个刷机过程。 目录 一、下载电脑版爱思助手 二、下载ios15.6版本固件 三、导入固件到爱思助手 四、刷机过程中…

IOS11降级到IOS10的操作方法(刷机有风险,操作需谨慎)

经过了那么多个beta版本的测试,iOS11正式版终于推送了。虽然这个版本没有多少让人眼前一亮的功能,多数都是一些小修小补。但也正是这些小修小补,使得iOS系统愈发完善。 系统在不断变化,但真理是不变的:流畅是相对于新…

ios自建服务器降级,iOS14降级操作步骤 iOS14怎么降级到iOS13

iOS14正式版升级之后,有不少用户感觉使用过程中不是很满意,尤其是出现了一些bug问题以及软件适配问题,想要降级到iOS13系统,那么iOS14降级到iOS13具体要怎么操作呢,我们来看下降级的流程。 1、目前iOS14可降级的版本是…

ios虚拟服务器降级,iOS降级教程

SuccessionDown降级工具,目前支持的机型有6S、6SP、6、6P、5s。 SuccessionDown安装添加源:repo.matthewpison.github.io/ 支持6s系列从13.3.1降级到13.3.1~13.0之间的任意版本 支持6代系列从12.4.5降级到12.4.5~12.0之间的任意版本,甚至可以到11.3~11.4.1 支持5s从12.4.5…

ios自建服务器降级,苹果系统怎样降级?iOS11降级至iOS10的方法

我相信肯定有很多小伙伴升级新的苹果系统后,因为暂时还不习惯新系统,或者是设备对新系统兼容度不高的原因,想要降级手机系统。那么苹果系统怎样降级呢?今天小编就给大家带来iOS11降级至iOS10的方法,希望能够帮助到大家…

送福利

阅读本文大概需要 1.6 分钟。 那个,先说个拉仇恨的话。 我们公司从昨天就全员放假啦,因为公司和团队都在上海,所以今年我们太不容易了,上半年封了三个月抢菜,下半年放开了抢药,好在,今年结束了&…