Linux开发速记教程之第一篇
一、Linux職業(yè)方向
①、服務(wù)器運(yùn)維;②、應(yīng)用軟件開發(fā);③、設(shè)備驅(qū)動開發(fā)。
二、設(shè)備驅(qū)動開發(fā)
Linux 系統(tǒng)的一個重要設(shè)計(jì)哲學(xué)是一切皆文件。包括硬件設(shè)備,對于系統(tǒng)來說也是一個文件,所以系統(tǒng)向上層應(yīng)用程序提供 open、 write、 read、 close 等統(tǒng)一的文件操作接口,應(yīng)用程序可以利用這些接口對設(shè)備文件進(jìn)行訪問,從而實(shí)現(xiàn)對硬件設(shè)備的初始化、寫入、讀取以及關(guān)閉等操作。
當(dāng)系統(tǒng)接收到應(yīng)用程序的這些訪問請求時,它會向下查詢對應(yīng)設(shè)備具體的操作函數(shù),然后調(diào)用相應(yīng)的函數(shù)處理請求,而這些針對不同設(shè)備具體的操作函數(shù)就是設(shè)備驅(qū)動程序。因此,設(shè)備驅(qū)動就是這樣一種把硬件與操作系統(tǒng)連接在一起的程序, Linux 系統(tǒng)會提供統(tǒng)一的格式,設(shè)備驅(qū)動開發(fā)工程師根據(jù)具體的設(shè)備按照系統(tǒng)格式要求實(shí)現(xiàn)相應(yīng)的設(shè)備操作函數(shù)。
三、i.MX 系列應(yīng)用處理器
i.MX 應(yīng)用處理器包括 i.MX8、 i.MX7、 i.MX6 及 i.MX28 系列,被廣泛應(yīng)用于工業(yè)控制、汽車電子領(lǐng)域,其中 i.MX6 系列應(yīng)用處理器包含基于 Cortex 的單核、雙核和四核系列的的產(chǎn)品,其架構(gòu)有,主要采用 CortexA7, Cortex-A9 作為內(nèi)核,部分型號采用 Cortex-A9+Cortex-M4 的雙核心方案。主頻從 528MHz~1.2GHz 不等。該系列芯片主要應(yīng)用在車載多媒體系統(tǒng)、數(shù)字標(biāo)牌電子閱讀器、人機(jī)界面、物聯(lián)網(wǎng)網(wǎng)關(guān)、智能工業(yè)控制系統(tǒng)等輕量、低功耗的領(lǐng)域,在物聯(lián)網(wǎng)推進(jìn)的大潮下,該芯片定有一番作為。
本篇采用的是i.MX6ULL系列處理器,包含一個Cortex-A7內(nèi)核,主頻有528MHz、792MHz和900MHz。如型號為 MCIMX6Y2CVM08AB 的芯片,它屬于 i.MX6ULL 系列,是主頻為 792MHz、芯片封裝為 BGA,尺寸為 14x14mm,焊盤間距為 0.8pitch的工業(yè)級芯片。
四、Linux內(nèi)核和發(fā)行版
Linux 內(nèi)核負(fù)責(zé)控制硬件、管理文件系統(tǒng)、進(jìn)程管理、網(wǎng)絡(luò)通訊等,但它本身并沒有給用戶提供必要的工具和應(yīng)用軟件。基于 Linux 內(nèi)核搭配各種各樣系統(tǒng)管理軟件或應(yīng)用工具軟件,從而組成一套完整可用的操作系統(tǒng),見下圖。我們稱這樣的系統(tǒng)為 Linux 發(fā)行版(distribution)。完整的 Linux 系統(tǒng)就如同汽車, Linux 內(nèi)核構(gòu)成了最為關(guān)鍵的引擎,不同的發(fā)行版就類似使用相同引擎的不同車型。
五、根目錄
根目錄是 Linux 下所有文件和目錄的起點(diǎn),它的路徑用斜杠符號“/”來表示。家目錄(個人目錄)路徑為“/home/用戶名/” ,整個 Linux 系統(tǒng)有且只有一棵從根目錄開始的目錄樹,目錄樹只是一個管理上的概念,它本身并不跟硬件掛鉤的,例如這些文件之所以是存儲在磁盤中,是因?yàn)樵诎惭b系統(tǒng)時,已經(jīng)把整個根目錄“掛載”在了磁盤上。所謂掛載就是把存儲器的分區(qū)與某個目錄對應(yīng)起來,對該目錄進(jìn)行訪問時,相應(yīng)的操作會被映射到其掛載的存儲器分區(qū),而這些存儲器包括磁盤、光盤、 U 盤、
NAND FLASH 等。
①、/bin 目錄:/bin 目錄是/binary 的縮寫,它包含眾多普通用戶可用的命令。而命令的本質(zhì)就是可執(zhí)行程序,即二進(jìn)制 bin 文件。熟悉 Linux 命令后,回頭再來本目錄看看,會發(fā)現(xiàn) ls、 cp、 cat 等命令,都可以在此處找到。
②、/sbin 目錄:/sbin 目錄是/system bin 的縮寫,它的功能類似/bin ,不過它存儲的一般是系統(tǒng)程序,一般需要使用管理員權(quán)限才能使用。如顯示系統(tǒng)已加載的模塊命令 lsmod、對存儲器分區(qū)進(jìn)行格式化的 mkfs 等。
④、/etc 目錄:/etc 目錄是/etcetera 的縮寫,據(jù)說原始的 Unix 設(shè)計(jì)是在該目錄存放些零碎的內(nèi)容,但現(xiàn)在該目錄現(xiàn)在已發(fā)展成存放系統(tǒng)的各種配置文件,非常重要。如用戶信息文件/etc/passwd,系統(tǒng)初始化文件/etc/rc 等,系統(tǒng)依據(jù)這些配置運(yùn)行。在給系統(tǒng)安裝某些軟件或服務(wù)后,常常需要修改/etc 目錄下的文件進(jìn)行配置。
⑤、 /root 目錄:/root 是超級用戶的目錄,在 Ubuntu 下默認(rèn)為空。
⑥、 /home 目錄:/home 即前面介紹的家目錄。
⑦、/lib 目錄:/lib 目錄是/library 的縮寫,根文件系統(tǒng)上的程序所需的共享庫,存放了根文件系統(tǒng)程序運(yùn)行所需的共享文件。如 C 語言標(biāo)準(zhǔn)庫,這些文件包含了可被許多程序共享的代碼,以避免每個程序都包含有相同的子程序的副本,故可以使得可執(zhí)行文件變得更小,節(jié)省空間。
⑦、/dev 目錄:/dev 目錄存放了設(shè)備文件,即設(shè)備驅(qū)動程序,用戶通過這些文件訪問外部設(shè)備。比如,用戶可以通過訪
問/dev/mouse 來訪問鼠標(biāo)的輸入,就像訪問其他文件一樣。
⑧、/proc 目錄:/proc 目錄通常包含了內(nèi)核導(dǎo)出到用戶空間的內(nèi)核信息,通過訪問該目錄下的文件可以查看這些信息。
**⑨、/sys 目錄:**與/proc 目錄類似, /sys 目錄用于把內(nèi)核的設(shè)備驅(qū)動導(dǎo)出到用戶空間,可通過訪問 sys 目錄及其下的文件,來查看甚至控制內(nèi)核的一些驅(qū)動設(shè)備。
⑩、/tmp 目錄:/tmp 目錄存放程序在運(yùn)行時產(chǎn)生的信息和數(shù)據(jù)。但在引導(dǎo)啟動后,運(yùn)行的程序最好使用/var/tmp 來代替/tmp,因?yàn)榍罢呖赡軗碛幸粋€更大的磁盤空間。
11、/boot 目錄:/boot 目錄存放引導(dǎo)加載器 (bootstrap loader) 使用的文件,如 lilo,核心映像也經(jīng)常放在這里,而不是放在根目錄中。但是如果有許多核心映像,這個目錄就可能變得很大,這時使用單獨(dú)的文件系統(tǒng)會更好一些。
12、/mnt 目錄:/mnt 目錄是系統(tǒng)管理員臨時掛載 (mount) 文件系統(tǒng)的安裝點(diǎn)。 /mnt 下面可以分為許多子目錄,例如/mnt/dosa可能是使用 msdos 文件系統(tǒng)的軟驅(qū),而/mnt/exta 可能是使用 ext2 文件系統(tǒng)的軟驅(qū), /mnt/cdrom 光驅(qū)等等。
13、/media 目錄:/media 目錄通常是一些自動掛載的設(shè)備目錄,如光盤和 U 盤,部分系統(tǒng)會自動掛載到這個目錄下,然后通過
自動掛載的目錄可以訪問對應(yīng)的設(shè)備。
14、/usr 目錄:
曾經(jīng)的 /usr 還是用戶的家目錄,存放著各種用戶文件——現(xiàn)在已經(jīng)被 /home 取代了(例如 /usr/someone 已經(jīng)改為 /home/someone)。現(xiàn)代的 /usr 只專門存放各種程序和數(shù)據(jù),用戶目錄已經(jīng)轉(zhuǎn)移。雖然 /usr 名稱未改,不過其含義已經(jīng)從“用戶目錄”變成了“unixsystem resource” (Unix 系統(tǒng)資源)。值得注意的是,在一些 unix 系統(tǒng)上,仍然把 /usr/someone 當(dāng)做用戶家目錄,如 Minix。
? /usr/bin : 所有可執(zhí)行文件,如 gcc, firefox 等(指不包含在 /sbin 和 /bin 內(nèi)的);
? /usr/include : 各種頭文件,編譯文件等時需要使用;
? /usr/include/’ package-name’ : 程序特定的頭文件;
? /usr/lib : 所以可執(zhí)行文件所需要的庫文件;
? /usr/scr:源代碼, Linux 內(nèi)核的源代碼就放在該目錄下。
六、文件類型
**①、普通文件:**如文本文件, bin 文件等。
**②、可執(zhí)行文件:**可執(zhí)行文件包括腳本和應(yīng)用程序,這些文件可被系統(tǒng)加載運(yùn)行,類似 Windows 下的 bat 腳本、 exe 程序文件
等。
**③、鏈接文件:**鏈接文件分為硬鏈接和軟鏈接:? 硬鏈接是指同一個文件的不同別名。? 軟鏈接文件有類似于 Windows 的快捷方式。它實(shí)際上是一個特殊的文件。在符號連接中,文件實(shí)際上是一個文本文件,其中包含的有另一文件的位置信息。
**④、目錄文件:**在 Linux 下目錄也是文件。
**⑤、設(shè)備文件:**硬件設(shè)備也是文件,通過打開對應(yīng)的設(shè)備文件可以初始化設(shè)備,部分設(shè)備還可以通過讀寫設(shè)備文件實(shí)現(xiàn)對硬件的控制。
七、用戶及用戶組
①、Linux是多用戶操作系統(tǒng),root用戶管理其他用戶和計(jì)算機(jī)的全部資源;
②、在Linux中,每個用戶都有一個特定的UID編號來標(biāo)識一個系統(tǒng)用戶,并且把標(biāo)號0分配給root用戶的uid,它可以分配給每個用戶不同的權(quán)限,因此每個用戶可進(jìn)行的操作也不同。
③、Linux 的文件屬性,可以分為讀權(quán)限、寫權(quán)限、執(zhí)行權(quán)限。讀權(quán)限以及寫權(quán)限,基本上和 Windows 操作系統(tǒng)是一樣的。
八、Linux命令行
Shell是命令行解釋器,Linux系統(tǒng)與用戶通過Shell進(jìn)行交互的。
①、Shell:指命令解釋器,常見的解釋器有bash、sh,在Ubuntu系統(tǒng)默認(rèn)是bash解釋器,所以有時候說bash也是指命令行。
②、終端(Terminal):通常指用來運(yùn)行 Shell 的程序,示場景的不同有不一樣的名稱,如 Ubuntu 系統(tǒng)自帶的叫本地終端,嵌入式開發(fā)板常常提供串口進(jìn)行輸入輸出的串口終端,通過網(wǎng)絡(luò)訪問的 ssh 終端。
③、控制臺(Console):特指某些終端,通常是指它的物理形態(tài),如帶鍵盤和顯示器的物理設(shè)備。
④、快捷鍵 Ctrl+Alt+T,可以快速打開一個命令行終端;
cd命令:change dir 的簡寫,它可以把終端當(dāng)前所在的路徑切換至目標(biāo)路徑。
mkdir 命令是 make directory 的簡寫,它可以在文件系統(tǒng)中創(chuàng)建一個新的目錄。
touch 命令可以創(chuàng)建不存在的文件,或者 touch 通過參數(shù)修改目錄或文件的日期時間,就是摸一下,更新它的時間。
ls 命令功能為顯示指定目錄下的內(nèi)容(文件及子目錄) ,還可以查看文件大小,修改日期等等信息。
cat 命令是 通常被用來在終端下輸出文件的內(nèi)容進(jìn)行查看。
echo 命令的功能是在終端上打印一段文字,也可以把終端的變量內(nèi)容打印出來。
輸出重定向到文件“>”或“?”,其中“>”會直接用輸出覆蓋原文件,而“?”則把輸出追加到原文件的末尾。
rmdir 命令是 remove directory 的簡寫,它的功能是刪除空的目錄。
rm 命令是 remove 的簡寫,它的功能是刪除一個或多個文件或目錄。
sudo 命令是 switch user do 的簡寫,意思是切換用戶去做某件事情。
clear命令是 清除命令行的內(nèi)容及打印出來的內(nèi)容。
reboot/poweroff 命令來控制系統(tǒng)的重啟與關(guān)機(jī)。
man命令可以用來查找更多的命令。
總結(jié)
以上是生活随笔為你收集整理的Linux开发速记教程之第一篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows11安装 Python
- 下一篇: 【Linux】/lib64/libstd