0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式Linux入門(一、Linux基本介紹及文件結構)

矜辰所致 ? 來源:矜辰所致 ? 作者:矜辰所致 ? 2023-06-19 10:33 ? 次閱讀
嵌入式 Linux入 門第一課,嵌入式 linux 基礎說明以及 Linux 文件結構。

前言

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

基本的說明介紹完,我們第一篇先來了解一下 Linux 的文件結構。

本文就簡單的說明一些必要的基本概念,以及介紹一下 Linux 的文件結構。但是呢,既然是自己寫博文,除非專有名詞會借用權威出處,并不想生搬硬套的說明,我會盡量用白話的方式給予說明。

說明,博主的參考資料會有韋東山,野火,正點原子,菜鳥教程, 及網(wǎng)上各種有關的資料,基他們的資料我都有看,然后根據(jù)自己的學習理解,把覺得好的需要掌握的東西都會記錄下來。

我是矜辰所致,全網(wǎng)同名,盡量用心寫好每一系列文章,不浮夸,不將就,認真對待學知識的我們,矜辰所致,金石為開!

一、嵌入式 Linux 基礎

第一章節(jié)來簡單描述一些 嵌入式 Linux 相關的基礎知識,主要是讓我們知道自己要面對的是什么,將來要做的事情大概是什么。有些基礎比如 Linux 發(fā)展歷史之類的與我們學習開發(fā)并無關系, 感興趣的可自行上網(wǎng)查閱。

廢話不多說,開整 !

1.1 Linux 簡介

Linux,全稱GNU/Linux,是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng)。

Linux不僅系統(tǒng)性能穩(wěn)定,而且是開源軟件。伴隨著互聯(lián)網(wǎng)的發(fā)展,Linux得到了來自全世界軟件愛好者、組織、公司的支持。它除了在服務器方面保持著強勁的發(fā)展勢頭以外,在個人電腦、嵌入式系統(tǒng)上都有著長足的進步。

簡單一句話,Linux 是一個開源的操作系統(tǒng)!

1.2 Linux 與 windows

對于操作系統(tǒng)而言,我們最熟悉的莫過于 Windows 操作系統(tǒng),Linux 如果不是相關人員一般都接觸不到。

對于我們熟悉的 Windows,我們知道電腦開機啟動的時候首先會進入一個界面,一般很快就會跳過,在那個界面出現(xiàn)我們可以通過鍵盤進入一個設置界面:就是 BIOS(不搞計算機的可能這個地方都不明白)。 我們進入 BIOS 的時候還與 Windows 系統(tǒng)無關,通過 BIOS 加載放在我們硬盤上面的 Windows 操作系統(tǒng)來啟動 windows,才進入到大家都熟悉的windows界面,接下來就是通過熟悉的圖形化操作界面進行各種操作和程序的運行。

Linux作為一個操作系統(tǒng),其實本質上這個流程是和 windows 一致的,這里韋東山老師的 Linux 教學資料里面有一張圖可以很好的說明這種情況:

在這里插入圖片描述

通過與我們熟悉的 Windows 操作系統(tǒng)做比較來說明 Linux 的啟動運行,讓我們更直觀的體會到 Linux 也不過是一個操作系統(tǒng),也能從大體上知道我們要以后要面對的一些工作:u-boot,驅動程序,內核,APP等。

1.3 Linux 版本選擇

因為 Linux 是一個開源的操作系統(tǒng),大家都可以進行開發(fā)使用,隨著各大社區(qū)家族不同的側重,如今有很多的版本:

具體版本區(qū)別說明可查看文章:[這么多Linux版本,你究竟該怎么選擇?]

我們簡單了解下一些主要的發(fā)行版本:

在這里插入圖片描述

我們做嵌入式 Linux 開發(fā),肯定需要在 Linux 環(huán)境下進行。博主本系列的文章,會使用 Ubuntu 為開發(fā)系統(tǒng)。

在這里插入圖片描述

1.4 何為嵌入式Linux?

我們學習嵌入式 Linux, 說直白點就是在微處理器上面跑 Linux 操作系統(tǒng)。

我們以前學習51單片機,STM32,除了裸機程序,我們還能跑一些嵌入式 RTOS,比如FreeRTOS ,RT-Thread 等。

同樣的,如果條件允許,我們也能在 MCU 上跑 Linux。

這里需要說明一定是需要條件允許,比如 STM32 就不能跑Linux。

1.5 STM32為什么不能跑 Linux?

首先我們應該知道 STM32 是 Cortex-M系列,此系列的 MCU 并沒有 MMU(下面會說明什么是MMU) !

操作系統(tǒng)從某種意義上可以分為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等。

我們本專欄使用的開發(fā)板芯片為為 i.MX6ULL,基于ARM Cortex-A7架構的處理器

1.6 什么是 MMU?

MMU是 Memory Management Unit 的縮寫。

**針對各種CPU, MMU是個可選的配件. MMU負責的是虛擬地址與物理地址的轉換,提供硬件機制的內存訪問授權。

現(xiàn)在的多用戶多進程操作系統(tǒng), 需要MMU, 才能達到每個用戶進程都擁有自己的獨立的地址空間的目標。**

使用MMU, OS劃分出一段地址區(qū)域, 在這塊地址區(qū)域中, 每個進程看到的內容都不一定一樣。

具體的 MMU 分分析理解, 大家可以自行搜索一下。

二、安裝環(huán)境說明

在上面說明 Linux 版本選擇的時候,從最后的截圖中可以看到,博主自己使用的開發(fā)環(huán)境為虛擬機安裝 的 ubuntu 系統(tǒng)。

2.1 虛擬機軟件

安裝虛擬機需要專門的軟件,博主接觸過的虛擬機軟件其實也就兩款:VirtualBox 和 VMware Workstations。

VirtualBox:

VirtualBox 是德國 Innotek 公司開發(fā),由 Sun Microsystems 推出的一款使用非常廣泛的免費開源的虛擬機軟件。

VirtualBox 好處在于完全免費開源,在野火的 Linux 教程使用的就是 VirtualBox 安裝 Ubuntu 虛擬機,如下圖:

在這里插入圖片描述

VMware Workstations:

VMware Workstation(中文名“威睿工作站”)是一款功能強大的桌面虛擬計算機軟件,提供用戶可在單一的桌面上同時運行不同的操作系統(tǒng),和進行開發(fā)、測試 、部署新的應用程序的最佳解決方案。

功能比較強大,正點原子 和 韋東山老師 的教程用的是這款虛擬機,博主自己其實也一直習慣使用VMware Workstations, 其實用什么無所謂,按照自己的習慣來就好,看哪個順眼就用哪個。

在這里插入圖片描述

在現(xiàn)在的 Win10 系統(tǒng)中,還可以安裝桌面版本的 Ubuntu,可以直接在商店中找到,如下圖:

在這里插入圖片描述

但是聽說這種桌面版本不適用于開發(fā),具體的我自己以前安裝的時候也是各種問題,最后還是失敗放棄了。

建議 VirtualBox 和 VMware Workstations 安裝虛擬機都可以,看自己的習慣和喜好。

2.2 環(huán)境安裝

本來需要說明一下如何安裝的,但是因為自己所有電腦上面都已經安裝過了,而且使用了一段時間里面都有很多資料,所以不想破壞電腦上現(xiàn)在的環(huán)境,到時候換了電腦再來更新一篇手把手安裝說明。

等我賺錢換個電腦 = =!

網(wǎng)上的參考資料也多,這個自己動手安裝是必不可少的,也無法偷懶,必須得自己動手操作,環(huán)境安裝雖然簡單,但是安裝過的人都知道,經常也會有莫名其妙的問題,必須得自己遇坑填坑。

文章更新,環(huán)境安裝請參考的的環(huán)境篇博文(發(fā)燒友的小伙伴先等等,我也會在發(fā)燒友發(fā)表):

[嵌入式 Linux 入門 環(huán)境篇(二、安裝虛擬機 — 體驗 Ubuntu 22.04)]

三、Linux文件結構

好了介紹了那么多,今天作為第一篇我們需要了解的知識點:

Linux 文件結構,東西不多但是需要了解!

我們使用 Windows 系統(tǒng),進入系統(tǒng)以后我們可以看到分為 C 盤,D 盤,E盤 等不同的區(qū)間,每個區(qū)間都可以存放文件。

**Linux 系統(tǒng)里面所有的文件和目錄都是掛載在根目錄下面的:“/” 。

對于普通用戶,在Ubuntu下不再關心分區(qū)、盤符,需要關心的是哪個目錄存什么。

你可以簡單理解為在 Linux 系統(tǒng)中就一個盤,這個盤稱之為 “根目錄”,所有的東西都放在這個根目錄下面。**

在這里插入圖片描述

在這里插入圖片描述

pwd 命令為顯示當前所處的目錄,上圖中目錄就是一個斜杠 “/”,這個就是根目錄。

3.1 FHS_3.0

因為 Linux 是開源免費的一個內核,所以任何公司和個人都可以使用 Linux 進行使用開發(fā),但是為了保證文件結構的一致性,Linux 基金會提出了文件系統(tǒng)的層次結構標準 ——《 Filesystem Hierarchy Standard 》。

可以在下面這個網(wǎng)址中下載 PDF 文檔:https://refspecs.linuxfoundation.org/FHS_3.0

在這里插入圖片描述

這個文檔中詳細介紹了 Linux 的文件系統(tǒng)結構:

在這里插入圖片描述

在之前很多博文中我都說過,最好的資料其實都是來自官方文檔,所以只要好好看了上面的文檔,對于 Linux 的文件結構就能夠有全面的認識。

但話說回來,英文的文檔確實對有部分伙伴不太友好,所以還是得,資料回看起來也相對多費時間,所以我們還是進行簡要的說明。

3.2 目錄簡要說明

對于初學者還沒有學習命令行,還不了解目錄結構,所以這里說明截圖以圖形界面的形式講解,但是也僅在入門開始的時候使用這種截圖 = =!

我們就以下圖的順序來說明:

在這里插入圖片描述

/bin

bin 是 Binaries (二進制文件) 的縮寫, 這個目錄存放著最經常使用的命令。任何人都可以使用的命令。

在這里插入圖片描述

/boot

啟動相關的文件,包括一些連接文件以及鏡像文件。在有些發(fā)行版中還包括grub,grub是一種通用的啟動引導程序(linux 里面的 uboot)。

在這里插入圖片描述

/cdrom

以前用來掛載CD的鏡像,現(xiàn)在逐漸淘汰了。

/dev

dev 是 Device(設備) 的縮寫, 該目錄下存放的是 Linux 的外部設備,**在 Linux 中訪問設備的方式和訪問文件的方式是相同的。

**

在以后學習 Linux 應用編程的時候,對外設的操作,就是通過dev 中的這些文件操作來進行的。

☆ Linux下一切皆文件 ☆

在這里插入圖片描述

/etc

etc 是 Etcetera(等等) 的縮寫,這個目錄用來存放所有的系統(tǒng)管理所需要的配置文件和子目錄。

系統(tǒng)和應用程序的配置文件。

在這里插入圖片描述

/home

用戶的主目錄,在 Linux 中,每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的,如下圖:

在這里插入圖片描述

/lib 、/lib32、/lib64

lib 是 Library(庫) 的縮寫這個目錄里存放著系統(tǒng)最基本的動態(tài)連接共享庫,其作用類似于 Windows 里的 DLL 文件。幾乎所有的應用程序都需要用到這些共享庫。

/lib32 和 /lib64 屬于備用格式基本共享庫(可選),提供對32位和 64 位不同程序的庫。

在這里插入圖片描述

/media

掛載一些多媒體設備,linux 系統(tǒng)會自動識別一些設備,例如U盤、光驅等等,當識別后,Linux 會把識別的設備掛載到這個目錄下。

在這里插入圖片描述

/mnt

系統(tǒng)提供該目錄是為了讓用戶臨時掛載別的文件系統(tǒng)的,我們可以將光驅掛載在 /mnt/ 上,然后進入該目錄就可以查看光驅里的內容了。

這個目錄的用途與 /media 類似,在有了/media之后,這個目錄就只用來暫時掛載。

/opt

opt 是 optional (可選) 的縮寫,可以做軟件測試 或者 安裝額外軟件的目錄。

在這里插入圖片描述

/proc

proc 是 Processes(進程) 的縮寫,存放的都是程序相關的信息。

/proc 是一種偽文件系統(tǒng)(也即虛擬文件系統(tǒng)),存儲的是當前內核運行狀態(tài)的一系列特殊文件,這個目錄是一個虛擬的目錄,它是系統(tǒng)內存的映射,我們可以通過直接訪問這個目錄來獲取系統(tǒng)信息。

在這里插入圖片描述

/root

系統(tǒng)管理員主目錄,也稱作超級權限者的用戶主目錄。

存放系統(tǒng)管理員相關的東西,需要輸入密碼才能進去的:

在這里插入圖片描述

/run

是一個臨時文件系統(tǒng),存儲系統(tǒng)啟動以來的信息。當系統(tǒng)重啟時,這個目錄下的文件應該被刪掉或清除。

/sbin

與 bin 類似,只不過這里的 bin 是給系統(tǒng)管理員使用的。

s 就是 Super User 的意思,是 Superuser Binaries (超級用戶的二進制文件) 的縮寫,這里存放的是系統(tǒng)管理員使用的系統(tǒng)管理程序,普通用戶無法執(zhí)行。

/snap

ubuntu 下面的軟件管理工具,是和 apt 軟件管理工具類似的。對于 ubuntu 的 snap 工具,有興趣的可上網(wǎng)搜搜,但是我們在 Linux 下面,還是使用常用的 apt 工具即可。

/srv

該目錄存放一些網(wǎng)絡服務相關的信息,一些網(wǎng)路服務啟動之后,這些服務所需要取用的資料目錄。

在這里插入圖片描述

/sys

存放了一些硬件操作的接口,這個目錄使得我們可以使用控制終端控制外設變得簡單。

在這里插入圖片描述

/tmp

tmp 是 temporary(臨時) 的縮寫這個目錄是用來存放一些臨時文件的。

這個目錄是任何人都能夠存取的,重要數(shù)據(jù)不可放置在此目錄下,F(xiàn)HS建議在開機時,將/tmp下的資料刪除。

在這里插入圖片描述

/usr

存放了我們整個系統(tǒng)大部分的軟件,是我們整個文件系統(tǒng)中最大的一個目錄。

usr 是 unix shared resources(共享資源) 的縮寫,這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似于 windows 下的 program files 目錄。

在這里插入圖片描述

/var

var 是 variable(變量) 的縮寫,這個目錄中存放這一些易變的文件,一些不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日志文件。

在這里插入圖片描述

在 Linux 系統(tǒng)中,有幾個目錄是比較重要的,平時需要注意不要誤刪除或者隨意更改內部文件:

  • /etc: 上邊也提到了,這個是系統(tǒng)中的配置文件,如果你更改了該目錄下的某個文件可能會導致系統(tǒng)不能啟動。
  • /bin, /sbin, /usr/bin, /usr/sbin: 這是系統(tǒng)預設的執(zhí)行文件的放置目錄。
  • /var: 這是一個非常重要的目錄,系統(tǒng)上跑了很多程序,那么每個程序都會有相應的日志產生,而這些日志就被記錄到這個目錄下。

結語

本文主要說明了嵌入式 Linux 的一些基礎問題,同時了解了一下 Linux 的文件結構。

做 Linux 開發(fā),要記住一句話:☆ Linux一切皆文件☆

在我們入門的幾篇基本上都是對 Linux 系統(tǒng)的基本了解,還用不到開發(fā)板,但是這是做嵌入式 Linux 開發(fā)的前提,所以我們也需要認真對待。

接下來的基礎文章我們還需要說明,Linux的文件類型、屬性,基本操作等。本文就到這里,謝謝!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5059

    文章

    18973

    瀏覽量

    302030
  • Linux
    +關注

    關注

    87

    文章

    11207

    瀏覽量

    208717
  • 程序
    +關注

    關注

    116

    文章

    3756

    瀏覽量

    80751
  • MMU
    MMU
    +關注

    關注

    0

    文章

    91

    瀏覽量

    18248
  • 文件結構
    +關注

    關注

    0

    文章

    5

    瀏覽量

    5865
收藏 人收藏

    評論

    相關推薦

    嵌入式Linux入門(二、Linux文件系統(tǒng)、文件類型及權限管理)

    嵌入式 Linux入 門第二課, linux 文件系統(tǒng)、文件類型及權限管理。 ...... 矜辰所致
    的頭像 發(fā)表于 06-20 11:44 ?1957次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>入門</b>(二、<b class='flag-5'>Linux</b><b class='flag-5'>文件</b>系統(tǒng)、<b class='flag-5'>文件</b>類型及權限管理)

    嵌入式linux 入門教材

    嵌入式linux 入門教材 1、什么是嵌入式Linux   嵌入式
    發(fā)表于 03-02 16:03 ?127次下載

    嵌入式Linux

    嵌入式Linux隨著Linux的迅速發(fā)展,嵌入式Linux現(xiàn)在已經有許多的版本,包括強實時的嵌入式
    發(fā)表于 06-17 00:36 ?915次閱讀

    詳解嵌入式linux文件類型

    學習嵌入式linux系統(tǒng)開發(fā),對于linux文件類型需要有很深的理解。Linux文件類型常見的
    發(fā)表于 06-11 16:29 ?990次閱讀
    詳解<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>文件</b>類型

    學習嵌入式linux系統(tǒng)開發(fā),文件類型定要分清

    學習嵌入式linux系統(tǒng)開發(fā),對于linux文件類型需要有很深的理解。Linux文件類型常見的
    發(fā)表于 07-05 07:01 ?860次閱讀

    如何使用ARM進行嵌入式linux的系統(tǒng)設計

    本文簡要介紹了ARM處理器的特點及其基本結構,詳細論述了基于ARM的嵌入式linux系統(tǒng)的關鍵技術,包括引導加載程序、Linux內核、
    發(fā)表于 05-06 18:22 ?10次下載
    如何使用ARM進行<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>的系統(tǒng)設計

    嵌入式】基于ARM的嵌入式Linux開發(fā)總結

    前言嵌入式知識點復習嵌入式知識點復習二 --體系結構嵌入式知識點復習三 --ARM-LINUX
    發(fā)表于 10-19 18:32 ?26次下載
    【<b class='flag-5'>嵌入式</b>】基于ARM的<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>開發(fā)總結

    嵌入式linux和桌面linux的區(qū)別

    嵌入式linux和桌面linux的區(qū)別主要區(qū)別是:1. 硬件平臺:嵌入式Linux般是Mips
    發(fā)表于 10-20 15:36 ?4次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>和桌面<b class='flag-5'>linux</b>的區(qū)別

    嵌入式】構建嵌入式Linux系統(tǒng)(uboot、內核、文件系統(tǒng))

    嵌入式Linux系統(tǒng)知識架構及層次嵌入式Linux系統(tǒng)構成及啟動略析嵌入式Linux三劍客之ub
    發(fā)表于 10-20 18:20 ?42次下載
    【<b class='flag-5'>嵌入式</b>】構建<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系統(tǒng)(uboot、內核、<b class='flag-5'>文件</b>系統(tǒng))

    嵌入式Linux(基礎篇)】從標準Linux嵌入式Linux + 嵌入式Linux知識架構

    主要介紹了GNU/Linux的誕生,標準Linux是如何應用在嵌入式系統(tǒng)中的,最后講述了嵌入式Linux
    發(fā)表于 11-02 09:51 ?34次下載
    【<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>(基礎篇)】從標準<b class='flag-5'>Linux</b>到<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b> + <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>知識架構

    嵌入式Linux路線

    嵌入式linux開發(fā)環(huán)境搭建、嵌入式linux開發(fā)模型、linux內核移植和文件系統(tǒng)、
    發(fā)表于 11-02 11:51 ?18次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>路線

    嵌入式Linux專題()——嵌入式Linux系統(tǒng)構成及啟動流程

    本文簡單的介紹了什么是嵌入式系統(tǒng),以及嵌入式Linux的系統(tǒng)結構,并且簡單的介紹
    發(fā)表于 11-02 12:36 ?15次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>專題(<b class='flag-5'>一</b>)——<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系統(tǒng)構成及啟動流程

    嵌入式linux_嵌入式系統(tǒng)基礎知識(): 系統(tǒng)結構嵌入式Linux

    目錄. 嵌入式體系結構二. 開發(fā)過程中的分工三. 嵌入式軟件體系結構四. 嵌入式
    發(fā)表于 11-02 12:36 ?14次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>_<b class='flag-5'>嵌入式</b>系統(tǒng)基礎知識(<b class='flag-5'>一</b>): 系統(tǒng)<b class='flag-5'>結構</b>和<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>

    視頻教程-嵌入式Linux系統(tǒng)基礎入門-Linux

    嵌入式Linux系統(tǒng)基礎入門 嵌入式開發(fā)工程師,有超過8年的
    發(fā)表于 11-02 14:21 ?14次下載
    視頻教程-<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系統(tǒng)基礎<b class='flag-5'>入門</b>-<b class='flag-5'>Linux</b>

    Linux 下的make 工具和 Makefile

    單點的文章過度下,上篇講到了 Linux 下的 C 編程,本文就要引出 Make 以及 Makefile 了。 嵌入式 Linux
    的頭像 發(fā)表于 06-22 10:45 ?1026次閱讀
    <b class='flag-5'>Linux</b> 下的make 工具和 Makefile