嵌入式 Linux 入门(一、Linux 基本介绍及文件结构)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
嵌入式 Linux入 门第一课嵌入式 linux 基础说明以及 Linux 文件结构。
目录
前言
学习嵌入式 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的FreeRTOSRT-Thread新分支RT-Thread smart已经支持但是不带MMU的也一直存在ucOS。
STM32 不带 MMU所以他无法运行 Linux
在 Cortex 家族中有更高端的 Cortex-A 系列的芯片大部分是带MMU的。比如Cortex-A7Cortex-A8等。
我们本专栏使用的开发板芯片为为 i.MX6ULL基于ARM Cortex-A7架构的处理器。
1.6 什么是 MMU
MMU是 Memory Management Unit 的缩写。
针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址与物理地址的转换提供硬件机制的内存访问授权。
现在的多用户多进程操作系统, 需要MMU, 才能达到每个用户进程都拥有自己的独立的地址空间的目标。
使用MMU, OS划分出一段地址区域, 在这块地址区域中, 每个进程看到的内容都不一定一样。
具体的 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
启动相关的文件包括一些连接文件以及镜像文件。在有些发行版中还包括grubgrub是一种通用的启动引导程序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的文件类型、属性基本操作等。本文就到这里谢谢