版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、12目錄第一篇Linux基礎 (1第1章Linux操作系統(tǒng)簡介 (31.1Linux內核 (31.2Linux發(fā)行版 (101.3嵌入式Linux (12第2章安裝Linux操作系統(tǒng) (152.1獲得Linux環(huán)境的三種方式 (152.2發(fā)行版選擇和ISO下載 (162.3VMware Player軟件 (172.4使用現成的虛擬機 (202.5創(chuàng)建和配置虛擬機 (242.6安裝Ubuntu (292.7初識Ubuntu (373第3章開始使用Linux (433.1Linux Shell (433.2Linux常見命令 (453.3Shell文件 (693.4Linux環(huán)境變量 (69第4章
2、Linux文件系統(tǒng) (734.1Linux目錄結構 (734.2Linux的文件 (754.3Linux文件系統(tǒng) (78第5章Vi編輯器 (855.1Vi/Vim編輯器 (855.2Vi的模式 (855.3Vim的安裝 (865.4啟動和關閉Vi (8645.5光標移動 (875.6文本編輯 (875.7配置vi (915.8文件對比 (93第6章嵌入式Linux開發(fā)環(huán)境構建 (956.1嵌入式Linux開發(fā)模型 (956.2安裝交叉編譯器 (966.3SSH服務器 (1006.4NFS服務器 (1086.5TFTP服務器 (110第二篇EasyARM-i.MX283A開發(fā)平臺 (113第7章
3、EasyARM-i.MX283A開發(fā)套件介紹 (1157.1開發(fā)套件簡介 (11557.2硬件資源 (1167.3軟件資源 (1167.4開發(fā)所需配件 (1177.5產品組裝 (1187.6AP-283Demo擴展板 (119第8章EasyARM-i.MX283A入門實操 (1218.1開機和登錄 (1218.2關機和重啟 (1338.3查看系統(tǒng)信息 (1338.4設置開機自動啟動 (1348.5加載驅動模塊 (1358.6網絡設置 (1368.7通過SSH登錄系統(tǒng) (1398.8TF卡使用 (1408.9U盤使用 (1408.10USB Device使用 (1418.11LED使用 (143
4、68.12蜂鳴器使用 (1448.13LCD背光控制 (1458.14觸摸屏校準 (1458.15GPIO操作 (1458.16進階操作 (147第9章系統(tǒng)固件燒寫 (1539.1NAND Flash存儲器分區(qū) (1539.2燒寫流程圖 (1539.3格式化NAND Flash (1549.4TF卡燒寫方案 (1589.5USB燒寫方案 (1619.6使用網絡升級內核或文件系統(tǒng) (165第三篇Linux應用編程 (169第10章Linux C編程環(huán)境 (17110.1GCC (171710.2GNU make (18310.3GDB (19310.4Eclipse IDE for C/C+ (
5、20310.5Windows下開發(fā)Linux應用程序 (221第11章Linux文件I/O (24911.1Linux的文件I/O概述 (24911.2文件描述符 (24911.3常用文件I/O操作和函數 (250811.4I/O操作和蜂鳴器 (261第12章進程與進程間通信 (26512.1進程環(huán)境 (26512.2進程基本操作 (27012.3信號 (27712.4進程間通信 (282第13章Linux多線程編程 (29913.1Linux多線程概述 (29913.2POSIX Threads概述 (30013.3線程管理 (300913.4線程安全 (30913.5互斥量 (31013.
6、6條件變量 (317第14章嵌入式GUI編程 (3231.1Qt和Qt/Embedded (32314.2Qt/Embedded交叉編譯環(huán)境的搭建 (32414.3Qt Sdk搭建 (32914.4qmake (33214.5Qt Creator (33514.6在嵌入式環(huán)境運行Qt程序 (3421014.7Qt幫助文檔 (34314.8Qt編程實戰(zhàn) (343第15章特殊硬件接口編程 (37715.1點亮一個LED燈 (37715.2GPIO硬件編程 (38015.3用戶態(tài)SPI編程 (38615.4用戶態(tài)I2C編程 (39415.5按鍵應用層編程 (40215.6用戶態(tài)ADC編程 (4081
7、115.7溫度檢測和報警系統(tǒng) (414第16章Linux串口編程 (43716.1串口基本操作 (43716.2串口屬性設置 (440第17章C語言網絡編程入門 (45117.1網絡基本概念 (45117.2編程接口BSD Socket (4571217.3實例:TCP/UDP ECHO服務器 (467第18章Shell編程初步 (47918.1基礎概念 (47918.2必要高級概念 (48318.3腳本編程 (4921314第一篇Linux基礎本篇主要講述進行嵌入式Linux開發(fā)所必備的基礎知識,以實用和夠用為標準進行介紹,與嵌入式Linux開發(fā)不相關的知識都不在講述之列。,特別是Linux
8、命令部分,并沒有介紹全部的Linux命令,而僅僅精選嵌入式Linux開發(fā)中的常用命令進行介紹。本篇一共分為6章,從Linux操作系統(tǒng)開始,循序漸進地介紹,到最后講述嵌入式Linux 開發(fā)環(huán)境的構建,為嵌入式Linux開發(fā)做準備。各章標題和內容概要如下:第1章 Linux操作系統(tǒng)簡介,主要介紹Linux內核和發(fā)行版等知識,屬于常識性內容,作為一般性了解即可;第2章安裝Linux操作系統(tǒng),以Ubuntu為例講述Linux操作系統(tǒng)安裝過程,這部分內容屬于實操性內容,建議跟著做一遍;第3章開始使用Linux,主要介紹嵌入式Linux開發(fā)相關的操作和命令,掌握這部分內容是基礎也是必備技能,需要多加操作和
9、練習,做到熟練掌握;第4章 Linux文件系統(tǒng),介紹Linux文件系統(tǒng)的一些常識性內容,做一般性了解即可;第5章 Vi編輯器,講述Vi編輯器的基本使用。掌握一款Linux下的文本編輯器是進行Linux開發(fā)的一項必備技能,需要多加練習,熟練運用;第6章嵌入式Linux開發(fā)環(huán)境構建,這部分內容也是實操性內容,需要深刻理解,建議照著做一遍。整個第一篇的內容,都沒有什么難點,但對于習慣了Windows操作,或者剛接觸Linux的初學者來說,可能會對Linux的操作方式有點不習慣,特別是命令行操作。只要多加練習,很快就可以度過適應期,習慣并喜歡上Linux“簡單就是美”的設計哲學和操作方式。1第1章Li
10、nux操作系統(tǒng)簡介本章導讀本章首先對Linux發(fā)展簡史進行簡要介紹,然后對Linux內核進行了介紹,重點介紹了Linux內核的特點和功能,接著對Linux發(fā)行版進行介紹,并列舉了一些典型的發(fā)行版;最后對嵌入式Linux進行了簡要介紹,包括嵌入式Linux的特點和產品形態(tài)。1.1 Linux內核Linux是全球最受歡迎的開源操作系統(tǒng)。它是一個由C語言編寫的,符合POSIX標準的類UNIX系統(tǒng)。詞條POSIXPOSIX是Portable Operating System Interface的縮寫,表示可移植操作系統(tǒng)接口,它規(guī)定了操作系統(tǒng)應該為應用編程提供的接口標準。詞條UNIXUNIX是一個強大的
11、多用戶、多任務分時操作系統(tǒng),支持多種處理器架構,于1969年在AT&T的貝爾實驗室開發(fā)。UNIX是商業(yè)操作系統(tǒng),需要收費。Linus當時提交到Minix新聞組的原名并不是Linux,而是Freax,取自“Free”和“Unix”兩個單詞,為“免費的Unix”之意。但當時的管理員并不喜歡“Freax”這個名稱,并以“Linuss Minix”之意,將Freax放到了一個名為“Linux”的目錄下,之后便一直用Linux這個名稱。Linux誕生、發(fā)展和壯大于網絡,目前依然掌控于Linux社區(qū),遍布全球數以萬計的黑客和志愿者參與Linux開發(fā),也有商業(yè)公司為Linux貢獻代碼。Linux內核核心開發(fā)
12、隊伍的領導者目前是Linus本人。Linus其人2014年,Linus獲得2014 IEEE計算機先驅獎;2012年,芬蘭千禧年科技獎;2012年,首批入駐“互聯(lián)網名人堂”;2011年,首屆ITechLaw成就獎;2004年,被評為世界最有影響力的人之一;1998年,電子前哨基金會先鋒獎。除Linux操作系統(tǒng)之外,Linus還創(chuàng)建了目前最流行的版本控制系統(tǒng)Git。Linux遵循GPL協(xié)議,允許任何人對代碼進行修改或發(fā)行,包括商業(yè)行為。只要其遵守該GPL協(xié)議,所有基于Linux的軟件也必須以GPL協(xié)議的形式發(fā)表,并提供源代碼。詞條GPLGPL是GNU General Public License
13、的縮寫,非正式中文翻譯為“GNU通用公共許可證”。只有GPL英文原版才具有法律效力。 在軟件中采用了使用GPL協(xié)議的產品,該軟件產品也必須采用GPL協(xié)議,即必須開源,這是GPL所謂的“傳染性”。下載各版本的內核源碼,包括測試版和最新穩(wěn)定版。Linux的吉祥物是一只名叫Tux的企鵝,看起來像穿了一件晚禮服的企鵝,如右圖。Linux吉祥物創(chuàng)作于1996年,據說Linus被澳大利亞國家動物園的一只小企鵝輕輕咬了一下,于是就有了用企鵝做吉祥物的想法。Tux全稱tuxedo,但大多數人更傾向于另一種說法,說是Tux名字來源于“Torvalds UniX”。Linux發(fā)音li:nks,這也是Linus本人
14、的發(fā)音,在不同語言里發(fā)音有差異,國內很大一部分人發(fā)音li:n juks。1.Linux內核的重要特點Linux是一個開放自由的操作系統(tǒng)內核,具有一些鮮明的特點:(1Linux是一個一體化內核;注:“一體化內核”是也稱“宏內核”,是相對于“微內核”而言的。幾乎所有的嵌入式和實時系統(tǒng)都采用微內核,如VxWorks、uC/OS-II、PSOS等。(2可移植性強。盡管Linus最初只為在X86 PC上實現一個“類UNIX”,后來隨著加入者的努力,Linux目前已經成為支持硬件平臺最廣泛的操作系統(tǒng);注:目前已經在X86、IA64、ARM、MIPS、AVR32、M68K、S390、Blackfin、M32
15、R等眾多架構處理器上運行。(3是一個可裁剪操作系統(tǒng)內核。Linux極具伸縮性,內核可以任意裁剪,可以大至幾十或者上百兆,可以小至幾百K,運行的設備從超級計算機、大型服務器到小型嵌入式系統(tǒng)、掌上移動設備或者嵌入式模塊,都可以運行;(4模塊化。Linux內核采用模塊化設計,很多功能模塊都可以編譯為模塊,可以在內核運行中動態(tài)加載/卸載而無需重啟系統(tǒng);(5網絡支持完善。Linux內核集成了完整的POSIX網絡協(xié)議棧,網絡功能完善;(6穩(wěn)定性強。運行Linux的內核的服務器可以做到幾年不用復位重啟;(7安全性好。Linux源碼開放,由眾多黑客參與Linux的開發(fā),一旦發(fā)現漏洞都能及時修復;(8支持的設備
16、廣泛。Linux源碼中,設備驅動源碼占了很大比例,幾乎能支持任何常見設備,無論是很老舊的設備還是最新推出的硬件設備,幾乎都能找到Linux下的驅動。Linux操作系統(tǒng)的特點2.以Linux內核為核心的操作系統(tǒng)具有如下特點:(1開放性遵循世界標準規(guī)范,特別是遵循開放系統(tǒng)互連(OSI國際標準。凡遵循國際標準所開發(fā)的硬件和軟件,都能彼此兼容,可方便地實現互連。詞條OSIOSI是Open System Interconnection的縮寫,意為開放系統(tǒng)互聯(lián),該模型由ISO (國際標準化組織制定。模型把網絡通信分為7層:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。詞條ISOISO是Int
17、ernational Organization for Standardization的縮寫,即國際標準化組織,該組織是由國家標準化機構組成的世界范圍的聯(lián)合會,現有140個成員國。ISO 中央辦事機構設在瑞士的日內瓦。(2多用戶Linux操作系統(tǒng)是一個真正的多用戶操作系統(tǒng);系統(tǒng)資源可以被不同用戶各自擁有使用,即每個用戶對自己的資源有特定的權限,互不影響。經常有初學者將Linux的多用戶與Windows的多用戶弄混淆,實際上兩者的差別是很大的。Windows桌面同一時刻只允許一個用戶登錄,其余用戶必須鎖定;而Linux則允許多個用戶同時登錄。(3多任務多任務是現代計算機的最主要的一個特點。它是指
18、計算機同時執(zhí)行多個程序,而且各個程序的運行互相獨立。Linux系統(tǒng)調度每一個進程平等地訪問處理器。多任務實際上很常見,例如我們在編寫文檔的時候,還可以一邊聽歌,甚至還可以從網上下載資料。這至少就有文檔處理、音樂播放和網絡下載三個任務,相互互不影響,并且是同時運行的。(4良好的用戶界面Linux向用戶提供了兩種界面:用戶界面和系統(tǒng)調用。1Linux的傳統(tǒng)用戶界面是基于文本的命令行界面,即Shell,它既可以聯(lián)機使用,又可存在文件上脫機使用。Shell有很強的程序設計能力,用戶可方便地用它編制程序,從而為用戶擴充系統(tǒng)功能提供了更高級的手段。2Linux還為用戶提供了圖形用戶界面。它利用鼠標、菜單、
19、窗口、滾動條等設施,給用戶呈現一個直觀、易操作、交互性強的友好的圖形化界面。3系統(tǒng)調用是提供給用戶編程時使用的界面。用戶可以在編程時直接使用系統(tǒng)提供的系統(tǒng)調用。系統(tǒng)通過這個界面為用戶程序提供低級、高效率的服務。(5設備獨立性Linux操作系統(tǒng)把所有外部設備統(tǒng)一當作成文件來看待,只要安裝它們的驅動程序,任何用戶都可以像使用文件一樣,操縱、使用這些設備,而不必知道它們的具體存在形式。Linux的設備獨立性使得它具有高度適應能力,能夠適應隨時增加支持新設備。設備獨立性主要是對應用程序開發(fā)者來說的。例如,對應用開發(fā)者來說,系統(tǒng)自帶的串口與USB串口的操作方式是一樣的,都是串口設備,而不用關心這個串口設
20、備實際對應的物理硬件是什么。現代計算機都實現了設備獨立特性。(6完善的網絡功能Linux內置完整的POSIX網絡協(xié)議棧,在通信和網絡功能方面優(yōu)于其它操作系統(tǒng)。Linux 為用戶提供了完善的、強大的網絡功能:1支持Internet。Linux免費提供了大量支持Internet的軟件,使得用戶能用Linux與世界上的其他人通過Internet網絡進行通信。2網絡文件傳輸。用戶能通過一些Linux命令完成內部信息或文件的傳輸。3遠程訪問功能。Linux系統(tǒng)既允許本身通過網絡訪問遠程的系統(tǒng),也允許遠程系統(tǒng)通過網絡訪問自身。(7可靠的系統(tǒng)安全Linux采取了許多安全技術措施,包括對讀、寫進行權限控制、帶
21、保護的子系統(tǒng)、審計跟蹤、核心授權等,為網絡多用戶環(huán)境中的用戶提供了必要的安全保障。(8模塊化運行時可以根據系統(tǒng)的需要加載程序而無需重啟系統(tǒng)。Linux的模塊化極大地提高了Linux的可裁剪性和靈活性。(9良好的可移植性Linux是一種可移植的操作系統(tǒng),能夠在從微型計算機到大型計算機的任何環(huán)境和任何平臺上運行。目前已經成為支持平臺最廣泛的操作系統(tǒng)。Linux內核移植分3個層次:體系結構級別移植、處理器級別移植和板級移植。對大多數開發(fā)者而言,只需進行板級移植。Linux內核版本由Linus所領導的內核開發(fā)小組控制,版本號有嚴格規(guī)定。Linux內核由5個主要子系統(tǒng)組成,分別是:內存管理、進程管理、進
22、程間通信、虛擬文件系統(tǒng)和網絡,各子系統(tǒng)之間的關系如圖 1.1所示。 圖 1.1 Linux內核組成部分1.進程管理進程管理負責控制進程對CPU的訪問,如任務的創(chuàng)建、調度和終止等。任務調度是進程管理最核心的工作,由Linux內核調度器來完成。Linux內核調度器根據一定算法來選擇最值得運行的進程。一個進程的可能狀態(tài)有如下幾種:(1運行態(tài)已經獲得了資源,并且進程正在被CPU執(zhí)行。進程既可運行在內核態(tài),也可運行在用戶態(tài)。內核態(tài),內核和驅動所運行時的狀態(tài),程序處于特權階級,能夠訪問系統(tǒng)的任何資源,好比社會的統(tǒng)治者。用戶態(tài),用戶程序運行的狀態(tài),處于非特權階級,不能隨意訪問系統(tǒng)資源,必須通過驅動程序方可訪
23、問,用戶態(tài)程序可通過系統(tǒng)調用進入內核態(tài)。用戶態(tài)程序有如社會的被統(tǒng)治者,處于被管理的非特權階級,只有通過某種途徑才能進入特權階級。(2就緒態(tài)當系統(tǒng)資源已經可用,但由于前一個進程還沒有執(zhí)行完而釋放CPU,準備進入運行狀態(tài)。(3可中斷睡眠狀態(tài)當進程處于可中斷等待狀態(tài)時,系統(tǒng)不會調度該程序執(zhí)行。當系統(tǒng)產生一個中斷或者釋放了進程正在等待的資源,或者進程收到一個信號,都可以被喚醒進入就緒狀態(tài)或者運行態(tài)。(4不可中斷睡眠狀態(tài)處于中斷等待狀態(tài),但是該進程只能被使用wake_up(函數明確喚醒的時候才可進入就緒狀態(tài)。(5暫停狀態(tài)當進程收到SIGSTOP、SIGSTP、SIGTTIN或者SIGTTOU就會進入暫停
24、狀態(tài),收到SIGCONT信號即可進入運行態(tài)。(6僵死態(tài)進程已經停止運行,但是其父進程還沒有詢問其狀態(tài)。各狀態(tài)之間的轉換關系和轉換條件如圖 1.2所示。 暫停不可中斷睡眠 圖 1.2 Linux 進程狀態(tài)和轉換進程和狀態(tài)的轉換有點抽象,用生活中一個比較接近的例子類比一下,或許能有助于理解。Linux 內核調度器好比是生產線的主管,而進程則好比是生產線上的工人。主管24小時不間斷的工作,工人的工作時間是朝九晚五,其余時間在等待區(qū)排隊等候。早上工人到達工廠,還沒到9點上班時間,工人可以在等待區(qū)休息,這個狀態(tài)可以稱之為“就緒態(tài)”;但是9點一到,工人則必須上生產線工作,這個工作狀態(tài)可稱之為“運行態(tài)”;下
25、午5點一到,到了工人下班時間,工人離開生產線又回到等待區(qū)排隊等候,處于“就緒態(tài)”。 如果工人上班的時候,收到主管的命令,說是“你暫時不用工作了,到休息室休息等待”,工人此時的這個狀態(tài),可以稱之為“暫?!睜顟B(tài),過了一段時間,主管通知工人說是“休息結束,要準備工作了”,工人不能直接回生產線崗位,而是必須先到等待區(qū)排隊等待,輪到后才上生產線工作。如果有一天工人精神狀態(tài)不好,向主管申請要睡覺休息,理由可以是“某種配件不到,我無法工作”,也可以是“我就是困了,想睡覺”,工人最后可能得到兩種批準結果:一是主管批準了,但是附加了一個條件說“等我叫醒你,你必須醒來上班”,然后工人就去享受他的安穩(wěn)覺了,工人進入
26、“不可中斷睡眠”狀態(tài);另一種是主管也批準了,但是附加了另一個條件,說“在你睡覺的時候,如果配件到了,你就得立馬給我起來上班”,工人也去睡覺去了,但此時工人睡得并不安心,因為這不是一個安穩(wěn)覺,是“可中斷睡眠”。無論工人睡得是安穩(wěn)覺,還是不安穩(wěn)覺,醒來都不能直接上生產線,而是回到等待區(qū),等待輪值。 還有一種情況,工人干完活到點下班了,但主管對他不聞不問,也不安排新的工作,這是一種非正常狀況,工人進入了“僵死態(tài)”。內存管理2.內存管理的主要作用是控制和管理多個進程,使之能夠安全的共享主內存區(qū)域。當CPU 提供內存管理單元(MMU 時,內存管理為各進程實現虛擬地址到內存物理地址的轉換。在32位系統(tǒng)上,
27、Linux 內核將4G 空間分為1G 內核空間(34G 和3G (03G 用戶空間,通過內存管理,每個進程都可以使用3G 的用戶空間。文件系統(tǒng)3.Linux內核支持眾多的邏輯文件系統(tǒng),如Ext2、Ext3、Ext4、btrfs、NFS、VFAT等。VFS則是Linux基于各種邏輯文件系統(tǒng)抽象出的一種內存中的文件系統(tǒng),隱藏了各種硬件設備細節(jié),為用戶提供統(tǒng)一的操作接口,是用戶訪問各種不同文件系統(tǒng)和設備時,不用區(qū)分具體的邏輯文件系統(tǒng)。例如,Linux下硬盤上使用的文件系統(tǒng)通常是Ext3/4格式,而U盤通常是FAT32格式,但是用戶在使用中根本感覺不到差異,也不用區(qū)分文件系統(tǒng)的具體差別。4.網絡接口L
28、inux對網絡支持相當完善,網絡接口提供了對各種網絡標準的存取和各種網絡硬件的支持,接口可分為網絡協(xié)議和網絡驅動程序。網絡協(xié)議部分負責實現每一種可能的網絡傳輸協(xié)議。網絡設備驅動程序負責與硬件設備通訊,每一種可能的硬件設備都有相應的設備驅動程序。5.進程間通信支持進程間各種通信機制,如管道、命名管道、信號、消息隊列、內存共享、信號量和套接字等。管道通常用于具有親緣關系的父子進程或者兄弟進程間通信,是半雙工的,數據只能往一個方向流動,先入先出,與自來水管很相似。如果雙方互通時,需要建立兩個管道。命名管道則突破了進程間的親緣關系限制,即非父子、兄弟進程之間也可相互通信。信號是軟件中斷,用于在多個進程
29、之間傳遞異步信號。日常生活中信號的例子很多了,如一對很親密的啞巴情侶,在很多時候只需要一個簡單的眼神,對方就能知道他(她需要什么,并做出回應,這個眼神,就是一個“信號”。信號能傳遞的信息有限,而消息隊列則正好彌補了這點。例如情侶的一個眼神,對方可能能知道情侶的需求,但是如果情侶有一大堆需求,僅僅靠一個眼神就比較費力了。情侶就把自己的需求寫在了一張紙條上,遞交給對方,對方根據紙條的內容,逐一滿足情侶的需求。共享內存常用于不同進程間進行大量數據傳遞。Linux下每個進程都有自己的獨立空間,各自都不能直接訪問其它進程的空間。好比這對情侶都有自己的小金庫,有時候需要給對方一部分錢用,但他們不能直接相互
30、轉賬,必須先將前存到他們倆合開的一個公共賬戶上面,然后再使用。這個公共賬戶就是這對情侶的“共享內存”。信號量用于進程同步。只有獲得了信號量的進程才可以運行,沒有獲得信號量的進程則只能等待。就像十字路口的紅綠燈,只有在綠燈亮(獲得了綠燈的時候才能通行,否則只能等待。套接字(Socket起源于BSD,也常稱“BSD套接字”,用于多個進程間通信,可以基于文件,也可基于網絡。Socket本意是“插座”,套接字設計就是通過某些參數設定,然后將一個“插座”與另外一個“插座”連接起來??赡苓€有點抽象,看一個例子可能就好理解了。把套接字理解為固定電話的插口,現在要打電話出去,必須要知道打給誰,往哪里打;另外電
31、話另一端必須有人在聽才可以通話,否則也不能打電話。1.2 Linux 發(fā)行版由Linus 主持開發(fā)的Linux 僅僅是一個內核,提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務等功能,并不是一個完整的操作系統(tǒng)。一套基于Linux 內核的完整操作系統(tǒng)叫作Linux 操作系統(tǒng),也稱GNU/Linux 。據不完全統(tǒng)計,目前大大小小應用于不同場合的Linux 發(fā)行版已經超過400余種,桌面/服務器上常見的也就十來種,如Redhat 、Mandriva 、Fedora 、SuSe 、Debian 、Ubuntu 等。一個完整的Linux 發(fā)行版,是以Linux 內核為基礎,外加眾多外圍應用程序和文檔組成,一個
32、典型的GNU/Linux 發(fā)行版基本系統(tǒng)結構如圖 1.3所示。不同軟件廠商發(fā)布的Linux 發(fā)行版各自包含的外圍軟件也不一樣,發(fā)布版的鏡像大小差別也很大。用戶程序GNU C 庫(glibc系統(tǒng)調用接口Linux 內核體系結構相關代碼硬件平臺內核空間用戶空間圖 1.3 GNU/Linux 操作系統(tǒng)基本體系結構Linux 內核為一些軟件廠商提供了內核,促使了發(fā)行版的誕生;發(fā)行版的流行使得Linux 更加廣為人知,并吸引更多的黑客參與Linux 應用開發(fā),甚至內核開發(fā),促進了內核的快速發(fā)展。不同發(fā)行版之間功能定位、用戶群體都有差異,幾乎每個發(fā)行版都擁有相當大數量的固定的用戶群或者忠實追隨者。Linu
33、x 社區(qū)各大發(fā)行版之間的爭論一直沒有停止過,甚至有時候還有不同發(fā)行版用戶之間的口水戰(zhàn),但是這并不妨礙Linux 內核的發(fā)展。Linux 發(fā)行版的版本號是發(fā)行廠商自定義的代號,與Linux 內核版本號沒有任何直接關系,并且各發(fā)行版的命名規(guī)則也各不相同,如Fedora 20、Ubuntu 14.04等。常見的Linux 發(fā)行版有:RedHat1.Linux 目前依然是不少工程Fedora2.Fedora贊助, Madriva3.的大部分優(yōu)良 分區(qū)大小變更Debian 4.Ubuntu 5.個月發(fā)布一個新SuSe6. Gentoo 7.Slackware 8.紅旗Linux 9.1.3 嵌入式Lin
34、ux嵌入式Linux 是對運行在嵌入式設備上的Linux 的統(tǒng)稱,嚴格說來,每種不同應用的嵌入式Linux 都可以稱為是一個發(fā)行版。嵌入式Linux 往往針對于某個特殊領域,專門為實現某些特定的功能而開發(fā),一般說來,嵌入式Linux 所運行的程序相對來說比較單一,功能定位也比較明確,如嵌入式網關、路由器等。將標準Linux應用到嵌入式領域,往往是根據實際需要裁減內核,內核一般從幾百K到幾兆字節(jié)不等。所使用的文件系統(tǒng)也不是桌面Linux這樣復雜龐大的軟件包,一般也是用源碼或者其它工具定制,文件系統(tǒng)的大小也可以從幾兆到幾十兆,或者上百兆不等。Linux在嵌入式領域的分化,一般是兩個方向,小型化和實
35、時化。小型化一般就是根據需要將不需要的功能和服務去掉,盡可能的減小內核和系統(tǒng)的體積,以節(jié)省硬件資源和成本,如ETLinux、uLinux、ThinLinux等。實時化一般是通過修改源代碼,為Linux內核增加比校準內核更好的實時性,以滿足一些對實時性有要求的特定領域的應用,如RTLinux、RTAI等。與其它嵌入式系統(tǒng)產品一樣,嵌入式Linux產品在物理形態(tài)上與普通Linux設備有很大差異,不同產品之間物理形態(tài)也是各不相同。與桌面Linux相比,嵌入式Linux產品往往沒有碩大的顯示器,或者鼠標鍵盤這樣的外設。嵌入式Linux產品既可以作為一個獨立形態(tài)的產品出現,如手持機、交換機、路由器等,也
36、有可能以某種特殊功能設備的形式出現,通過某種通信接口參與系統(tǒng)集成,例如協(xié)議轉換器,或者甚至以電路板或者模塊的形式出現在某種設備的電路板上,如嵌入式工業(yè)交換機模塊。無論如何,它們的共性都是運行了經過高度裁剪的、具備特定功能的嵌入式Linux操作系統(tǒng)。圖 1.4列舉了生活中一些常見的嵌入式Linux產品。 圖 1.4 生活中常見的嵌入式Linux產品無論最終產品以何種形態(tài)出現,在開發(fā)階段,串口和網口幾乎是必不可缺的外設接口。嵌入式Linux的默認終端通常是調試串口,系統(tǒng)輸出信息通過串口輸出,也通過串口接收各種命令。而網口則常用于數據傳輸和程序調試,特別是在內核開發(fā)階段以及應用程序開發(fā)階段,網絡幾乎
37、也是必須的。第2章安裝Linux操作系統(tǒng)本章導讀學習Linux,必須要有一個Linux環(huán)境。本章先介紹獲得Linux環(huán)境的3種方式,然后以Ubuntu發(fā)行版為例講解Linux操作系統(tǒng)的安裝和設置,圖文并茂,清晰明了的展示Ubuntu 操作系統(tǒng)安裝的全過程,引領讀者完成Ubuntu操作系統(tǒng)的安裝。本章最后對Ubuntu桌面進行了粗略介紹。2.1 獲得Linux環(huán)境的三種方式學習Linux,必須先獲得一個Linux主機環(huán)境,通常情況下,可以通過以下三種方式獲得Linux環(huán)境。1.雙系統(tǒng)安裝如果沒有閑置的計算機,或者現有Windows系統(tǒng)的計算機有足夠的硬盤空間,可以考慮劃分一部分硬盤空間,用于安裝
38、Linux操作系統(tǒng),最終形成雙系統(tǒng)計算機。優(yōu)點:經濟實惠,且對計算機硬件要求不太高。缺點:安裝雙系統(tǒng)比較危險,一不小心有可能造成整個硬盤數據丟失;在開發(fā)過程使用到Windows工具時,需進行系統(tǒng)切換,不是很方便。2.全新硬盤安裝如果有足夠的計算機可用,可以選擇一臺計算機全新安裝Linux操作系統(tǒng)。優(yōu)點:不用考慮多系統(tǒng)并存的問題,且對計算機硬件硬件要求不太高。缺點:在嵌入式開發(fā)過程中,通常還會用到Windows下的工具,還需另外一臺計算機安裝Windows系統(tǒng)。3.安裝虛擬機如果計算機配置較高,可以考慮虛擬機方案。在Windows下安裝虛擬機軟件,然后通過虛擬機軟件創(chuàng)建一臺虛擬電腦,最后在虛擬電
39、腦中安裝Linux操作系統(tǒng);也可以安裝Linux,在Linux中安裝虛擬機再安裝Windows。常用的虛擬機軟件有VMware、Virtual Box和Virtual PC等,不同虛擬機軟件的使用方法稍有不同。下文以VMware為例進行介紹。優(yōu)點:安裝和使用Linux都很方便;還可同時使用Windows系統(tǒng)。缺點:對計算機硬件要求高,特別是內存,推薦4GB及以上。在Windows下使用虛擬機,除了可以繼續(xù)使用Windows下的工具之外,還有下列好處:一臺電腦可以同時存放多臺虛擬機,這樣就可以存在多個不同版本的Linux系統(tǒng);在硬件允許的情況下,甚至可以同時運行多臺虛擬機;安裝好的虛擬機可以任意
40、復制和拷貝,方便在不同電腦之間遷移和擴散。2.2 發(fā)行版選擇和ISO下載在第一章介紹Linux發(fā)行版的時候提到,Linux有眾多發(fā)行版,就算是常用的發(fā)行版也有十來種。不同發(fā)行版之間,在安裝和使用上都有差異,選擇一個合適的發(fā)行版,是能促進Linux的學習的。首先要考慮該發(fā)行版的流行度,越流行的發(fā)行版,用戶越多,遇到問題尋求技術支持也很方便,如果選擇小眾的發(fā)行版,尋求技術支持就不那么方便了。其次要考慮該發(fā)行版使用的難易程度,通常來說,越簡單易用的發(fā)行版越流行。進行嵌入式Linux開發(fā),還必須考慮嵌入式Linux開發(fā)工具的問題。最好選擇處理器半導體廠商以及開發(fā)平臺廠商所選擇的發(fā)行版,這樣能夠直接使用
41、半導體或者開發(fā)平臺原廠提供的各種工具,減少開發(fā)過程中的障礙。 圖 2.1 Ubuntu鏡像下載網頁界面建議選擇Desktop版本,到底是32-bit版本還是64-bit版本,需要根據計算機硬件來決定,在硬件允許的情況下,推薦選擇64-bit版本。下載ISO文件后,如果進行虛擬安裝,則可以直接使用ISO文件;如果進行物理實體安裝,則可將ISO刻成啟動光盤,或者用unetbootin-windows軟件制作成USB啟動盤備用。如果使用虛擬機,還可以選擇下載已經安裝好的Ubuntu虛擬機文件,請參考2.4小節(jié)。2.3 VMware Player軟件 圖 2.2 VMware Player下載頁面截止
42、到本書完稿時,VMware Player已經更新到了7.0版本,7.0版本沒有32位系統(tǒng)支持了,32位系統(tǒng)請選擇6.0版本下載使用。 圖 2.3 安裝VMware Player在彈出的“許可協(xié)議”對話框中選擇“我接受許可協(xié)議中的條款”,如圖 2.4所示。 圖 2.4 接受許可協(xié)議然后按默認設置一直點擊“下一步”直至如圖2.5所示界面。 圖 2.5 準備安裝此時點擊“繼續(xù)”按鈕即可進行VMware Player軟件的安裝,安裝完成時如圖 2.6所示。 圖 2.6 完成安裝對于大多數PC而言,主板設置默認支持虛擬化,無需進行這步操作,但是對于一些筆記本電腦,默認關閉了虛擬化支持,需要使能才能正常使
43、用虛擬機。設置虛擬化支持,需要進入系統(tǒng)BIOS進行操作。不同品牌的筆記本進入BIOS的方法也存在差異,有的是在剛啟動時持續(xù)按F2鍵進入BIOS,有的是F10鍵,具體請參考對應品牌電腦的主板說明。當進入BIOS系統(tǒng),找到Intel Virtualization Technology選項,將其配置為Enable,如圖2.7所示。注意,不同PC的BIOS中對應的選項位置及描述可能不同,請以實際情況為準。 圖 2.7使能Intel Virtualization Technology設置好虛擬化支持后,保存并退出BIOS,重啟電腦。2.4 使用現成的虛擬機前面已經提到過,虛擬機可以在不同電腦之間遷移和擴
44、散。如果覺得安裝Linux操作系統(tǒng)麻煩,或者暫時不想安裝,可以直接使用已經安裝好的虛擬機鏡像。打開 圖 2.8 下載得到的虛擬機鏡像和解壓后的文件夾下載頁面同時提供了64位和32位虛擬機文件,請根據計算機硬件具體情況選擇:32位處理器的計算機只能使用32位鏡像;而對于64位處理器的計算機,無論安裝了32位還是64位操作系統(tǒng),都可以任意選擇。打開WMware Player軟件,點擊“打開虛擬機”,選擇打開已有的虛擬機,如圖2.9所示。 圖 2.9 選擇“打開虛擬機”在文件瀏覽器中,找到剛才虛擬機解壓后得到的目錄,打開選擇打開虛擬機配置文件,如圖 2.10所示。 圖 2.10 打開虛擬機配置文件打
45、開了虛擬機配置文件的VMware Player界面如圖 2.11所示,點擊“播放虛擬機”可以啟動虛擬機。 圖 2.11 虛擬機裝載成功后的界面虛擬機文件被拷貝到新的位置,第一次運行虛擬機會出現如圖2.12所示的對話框,選擇“我已復制該虛擬機”即可。 圖 2.12 選擇“I copied it”之后虛擬機將會正常啟動,啟動成功后,可以看到Ubuntu桌面,如圖2.13所示。 圖 2.13 VMware Player成功啟動Ubuntu虛擬機Ubuntu系統(tǒng)在VMware Player中成功啟動后,可以先閱讀2.7小節(jié),初步了解Ubuntu 后,即可進入第3章,開始學習Linux命令。如果以后想學
46、習安裝Ubuntu,可以在另外的目錄新建新的虛擬機,并安裝新的Ubuntu 系統(tǒng)。在有些電腦上,特別是筆記本電腦,有可能出現啟動登錄后黑屏的狀況,出現這種狀況的原因有可能是VMware軟件設置默認開啟了“加速3D圖形”選項,進入關閉即可。先關閉虛擬機系統(tǒng),打開虛擬機并裝載虛擬機配置文件,在VMware Player主界面,選擇“編輯虛擬機設置”,在“硬件”選項卡中選擇“顯示器”,將“加速3D圖形”前面的勾去掉,如圖 2.14所示。 圖 2.14 關閉3D圖形加速2.5 創(chuàng)建和配置虛擬機雙擊桌面的VMware Player啟動快捷方式圖標打開VMware Player軟件,運行界面如圖2.15所
47、示。點擊“創(chuàng)建新虛擬機(N”,可以創(chuàng)建一臺虛擬機。 圖 2.15 創(chuàng)建新虛擬機在彈出的向導歡迎界面中選擇“稍后安裝操作系統(tǒng)(S”,然后點擊“下一步”按鈕,如圖2.16所示。 圖 2.16 選擇“稍后安裝操作系統(tǒng)”在圖 2.17所示的“選擇客戶機操作系統(tǒng)”界面,選擇“Linux(L”,并在版本下拉框中選擇“Ubuntu 32位”或者“Ubunutu 64位”。請根據實際計算機硬件情況進行選擇,圖2.17的示例是安裝Ubuntu 64位系統(tǒng)。 圖 2.17 選擇客戶機操作系統(tǒng)對于64處理器的計算機,安裝了32位操作系統(tǒng),開啟了虛擬化支持的話,在安裝虛擬機的時候也可以選擇64位Linux系統(tǒng)。點擊“
48、下一步”,進入“命名虛擬機”設置界面,可設置虛擬機名稱以及存儲位置,如圖2.18所示。名稱可用默認名稱,也可以更改為自己滿意的名稱;但存放位置則不推薦用默認值,必須放置到有足夠空閑空間的硬盤分區(qū)上。 圖 2.18 設置虛擬機名稱及存儲位置設置好確認無誤后,繼續(xù)點擊“下一步”,進入“指定磁盤容量”界面,如圖 2.19所示。 圖 2.19 指定虛擬磁盤容量磁盤容量設置,建議40GB以上。除了安裝Ubuntu操作系統(tǒng)本身外,還會安裝嵌入式Linux開發(fā)的各種工具,以及對應的源碼等,都需要較大空間。圖2.19示例分配了40GB虛擬磁盤,會產生虛擬磁盤文件,但并不會立即占用40GB實際硬盤空間。虛擬磁盤
49、文件會在使用過程中逐步增大,直到最大容量40GB。盡管不會立即占用40GB硬盤空間,但是為了將來方便使用,必須保證放置虛擬機的磁盤有超過40GB的空閑空間。由于虛擬磁盤文件大小會在使用中變化,分割成多個文件是比較好的選擇。確認設置無誤后,點擊“下一步”按鈕,出現已經創(chuàng)建完畢的虛擬機的信息概覽,如圖2.20所示,點擊完成即可。 圖 2.20 完成虛擬機創(chuàng)建創(chuàng)建得到的虛擬機,默認采用典型值,有的參數可能不是很合適,可以根據實際需要進行調整。點擊圖2.20界面的“自定義硬件”,可以對虛擬計算機硬件進行調整定制。1.內存調整系統(tǒng)默認的內存值通常都比較小,建議適當增加,如在有4GB內存或以上的計算機上,
50、給虛擬電腦的內存可以設置為2GB。進入自定義硬件界面后,在“硬件”選項卡選中“內存”,得到如圖2.21所示的界面,在這個界面可以設置內存大小。 圖 2.21 內存調整界面2.虛擬網卡設置不少VMware用戶都碰到過VMware的虛擬網卡的問題,這里重點介紹一下。進入自定義硬件界面后,在“硬件”選項卡選擇“網絡適配器”,得到如圖2.22所示的網卡設置界面。 圖 2.22 虛擬網卡設置虛擬網卡有3種模式,分別如下:(1橋接模式在這種模式下,VMWare虛擬出來的操作系統(tǒng)就像是局域網中的一臺獨立的主機,它可以訪問網內任何一臺機器。在橋接模式下,虛擬系統(tǒng)和宿主機器的關系,就像連接在同一個Hub上的兩臺
51、電腦。用戶需要手工為虛擬系統(tǒng)配置IP地址、子網掩碼,而且還要和宿主機器處于同一網段,這樣虛擬系統(tǒng)才能和宿主機器進行通信。同時,由于這個虛擬系統(tǒng)是局域網中的一個獨立的主機系統(tǒng),那么就可以手工配置它的TCP/IP配置信息,以實現通過局域網的網關或路由器訪問互聯(lián)網。在進行嵌入式Linux開發(fā),要目標板通過NFS掛載虛擬機的NFS共享目錄的話,必須將虛擬網卡配置為橋接模式。(2NAT模式使用NAT模式,就是讓虛擬系統(tǒng)借助NAT(網絡地址轉換功能,通過宿主機器所在的網絡來訪問公網,也就是說,使用NAT模式可以實現在虛擬系統(tǒng)里訪問互聯(lián)網。NA T模式下的虛擬系統(tǒng)的TCP/IP配置信息是由VMnet8(NA
52、T虛擬網絡的DHCP服務器提供的,虛擬機無法正常對主機所連網絡中的其它主機提供普通的網絡服務,如TFTP、NFS和FTP等。采用NAT模式最大的優(yōu)勢是虛擬系統(tǒng)接入互聯(lián)網非常簡單,用戶不需要進行任何其它的配置,只需要宿主機器能訪問互聯(lián)網即可。(3僅主機模式在某些特殊的網絡調試環(huán)境中,要求將真實環(huán)境和虛擬環(huán)境隔離開,這時用戶就可采用僅主機(Host-Only模式。在Host-Only模式中,所有的虛擬系統(tǒng)是可以相互通信的,但虛擬系統(tǒng)和真實的網絡是被隔離開的。2.6 安裝UbuntuUbuntu的安裝過程,無論在硬件實體安裝還是虛擬機安裝,大致過程是相同的。以下的安裝過程都是在虛擬機中完成的,物理實體安裝也是一樣的。如果進行物理實體安裝,需要制作啟動
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版臨時司機薪酬福利與勞動關系合同4篇
- 2025年臨時用工人員培訓與晉升合同4篇
- 二零二五版新能源汽車關鍵部件采購合同標準范本3篇
- 二零二五年泵車租賃與施工監(jiān)理合同匯編3篇
- 二零二五年度路燈照明設施節(jié)能技術研發(fā)合同4篇
- 二零二五年度高端個人珠寶質押借款合同范本正規(guī)范本3篇
- 二零二五年度文化旅游項目尾款結算與產業(yè)發(fā)展合同3篇
- 二零二五版房地產開發(fā)前期土地獲取及政策支持合同3篇
- 二零二五年度離婚協(xié)議及子女教育金及生活費支付合同3篇
- 2025年林業(yè)生態(tài)修復項目承包合同范本4篇
- 智能教育輔助系統(tǒng)運營服務合同
- 心功能分級及護理
- DLT 572-2021 電力變壓器運行規(guī)程
- 重慶育才中學2025屆化學九上期末教學質量檢測試題含解析
- 成都市2022級(2025屆)高中畢業(yè)班摸底測試(零診)數學試卷(含答案)
- 【云南省中藥材出口現狀、問題及對策11000字(論文)】
- 服裝板房管理制度
- 河北省興隆縣盛嘉恒信礦業(yè)有限公司李杖子硅石礦礦山地質環(huán)境保護與治理恢復方案
- 第七章力與運動第八章壓強第九章浮力綜合檢測題(一)-2023-2024學年滬科版物理八年級下學期
- 醫(yī)療機構診療科目名錄(2022含注釋)
- 微視頻基地策劃方案
評論
0/150
提交評論