嵌入式Linux開(kāi)發(fā)教程(上冊(cè))_第1頁(yè)
嵌入式Linux開(kāi)發(fā)教程(上冊(cè))_第2頁(yè)
嵌入式Linux開(kāi)發(fā)教程(上冊(cè))_第3頁(yè)
嵌入式Linux開(kāi)發(fā)教程(上冊(cè))_第4頁(yè)
嵌入式Linux開(kāi)發(fā)教程(上冊(cè))_第5頁(yè)
已閱讀5頁(yè),還剩75頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、12目錄第一篇Linux基礎(chǔ) (1第1章Linux操作系統(tǒng)簡(jiǎn)介 (31.1Linux內(nèi)核 (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使用現(xiàn)成的虛擬機(jī) (202.5創(chuàng)建和配置虛擬機(jī) (242.6安裝Ubuntu (292.7初識(shí)Ubuntu (373第3章開(kāi)始使用Linux (433.1Linux Shell (433.2Linux常見(jiàn)命令 (453.3Shell文件 (693.4Linux環(huán)境變量 (69第4章

2、Linux文件系統(tǒng) (734.1Linux目錄結(jié)構(gòu) (734.2Linux的文件 (754.3Linux文件系統(tǒng) (78第5章Vi編輯器 (855.1Vi/Vim編輯器 (855.2Vi的模式 (855.3Vim的安裝 (865.4啟動(dòng)和關(guān)閉Vi (8645.5光標(biāo)移動(dòng) (875.6文本編輯 (875.7配置vi (915.8文件對(duì)比 (93第6章嵌入式Linux開(kāi)發(fā)環(huán)境構(gòu)建 (956.1嵌入式Linux開(kāi)發(fā)模型 (956.2安裝交叉編譯器 (966.3SSH服務(wù)器 (1006.4NFS服務(wù)器 (1086.5TFTP服務(wù)器 (110第二篇EasyARM-i.MX283A開(kāi)發(fā)平臺(tái) (113第7章

3、EasyARM-i.MX283A開(kāi)發(fā)套件介紹 (1157.1開(kāi)發(fā)套件簡(jiǎn)介 (11557.2硬件資源 (1167.3軟件資源 (1167.4開(kāi)發(fā)所需配件 (1177.5產(chǎn)品組裝 (1187.6AP-283Demo擴(kuò)展板 (119第8章EasyARM-i.MX283A入門(mén)實(shí)操 (1218.1開(kāi)機(jī)和登錄 (1218.2關(guān)機(jī)和重啟 (1338.3查看系統(tǒng)信息 (1338.4設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng) (1348.5加載驅(qū)動(dòng)模塊 (1358.6網(wǎng)絡(luò)設(shè)置 (1368.7通過(guò)SSH登錄系統(tǒng) (1398.8TF卡使用 (1408.9U盤(pán)使用 (1408.10USB Device使用 (1418.11LED使用 (143

4、68.12蜂鳴器使用 (1448.13LCD背光控制 (1458.14觸摸屏校準(zhǔn) (1458.15GPIO操作 (1458.16進(jìn)階操作 (147第9章系統(tǒng)固件燒寫(xiě) (1539.1NAND Flash存儲(chǔ)器分區(qū) (1539.2燒寫(xiě)流程圖 (1539.3格式化NAND Flash (1549.4TF卡燒寫(xiě)方案 (1589.5USB燒寫(xiě)方案 (1619.6使用網(wǎng)絡(luò)升級(jí)內(nèi)核或文件系統(tǒng) (165第三篇Linux應(yīng)用編程 (169第10章Linux C編程環(huán)境 (17110.1GCC (171710.2GNU make (18310.3GDB (19310.4Eclipse IDE for C/C+ (

5、20310.5Windows下開(kāi)發(fā)Linux應(yīng)用程序 (221第11章Linux文件I/O (24911.1Linux的文件I/O概述 (24911.2文件描述符 (24911.3常用文件I/O操作和函數(shù) (250811.4I/O操作和蜂鳴器 (261第12章進(jìn)程與進(jìn)程間通信 (26512.1進(jìn)程環(huán)境 (26512.2進(jìn)程基本操作 (27012.3信號(hào) (27712.4進(jìn)程間通信 (282第13章Linux多線(xiàn)程編程 (29913.1Linux多線(xiàn)程概述 (29913.2POSIX Threads概述 (30013.3線(xiàn)程管理 (300913.4線(xiàn)程安全 (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)境運(yùn)行Qt程序 (3421014.7Qt幫助文檔 (34314.8Qt編程實(shí)戰(zhàn) (343第15章特殊硬件接口編程 (37715.1點(diǎn)亮一個(gè)LED燈 (37715.2GPIO硬件編程 (38015.3用戶(hù)態(tài)SPI編程 (38615.4用戶(hù)態(tài)I2C編程 (39415.5按鍵應(yīng)用層編程 (40215.6用戶(hù)態(tài)ADC編程 (4081

7、115.7溫度檢測(cè)和報(bào)警系統(tǒng) (414第16章Linux串口編程 (43716.1串口基本操作 (43716.2串口屬性設(shè)置 (440第17章C語(yǔ)言網(wǎng)絡(luò)編程入門(mén) (45117.1網(wǎng)絡(luò)基本概念 (45117.2編程接口BSD Socket (4571217.3實(shí)例:TCP/UDP ECHO服務(wù)器 (467第18章Shell編程初步 (47918.1基礎(chǔ)概念 (47918.2必要高級(jí)概念 (48318.3腳本編程 (4921314第一篇Linux基礎(chǔ)本篇主要講述進(jìn)行嵌入式Linux開(kāi)發(fā)所必備的基礎(chǔ)知識(shí),以實(shí)用和夠用為標(biāo)準(zhǔn)進(jìn)行介紹,與嵌入式Linux開(kāi)發(fā)不相關(guān)的知識(shí)都不在講述之列。,特別是Linux

8、命令部分,并沒(méi)有介紹全部的Linux命令,而僅僅精選嵌入式Linux開(kāi)發(fā)中的常用命令進(jìn)行介紹。本篇一共分為6章,從Linux操作系統(tǒng)開(kāi)始,循序漸進(jìn)地介紹,到最后講述嵌入式Linux 開(kāi)發(fā)環(huán)境的構(gòu)建,為嵌入式Linux開(kāi)發(fā)做準(zhǔn)備。各章標(biāo)題和內(nèi)容概要如下:第1章 Linux操作系統(tǒng)簡(jiǎn)介,主要介紹Linux內(nèi)核和發(fā)行版等知識(shí),屬于常識(shí)性?xún)?nèi)容,作為一般性了解即可;第2章安裝Linux操作系統(tǒng),以Ubuntu為例講述Linux操作系統(tǒng)安裝過(guò)程,這部分內(nèi)容屬于實(shí)操性?xún)?nèi)容,建議跟著做一遍;第3章開(kāi)始使用Linux,主要介紹嵌入式Linux開(kāi)發(fā)相關(guān)的操作和命令,掌握這部分內(nèi)容是基礎(chǔ)也是必備技能,需要多加操作和

9、練習(xí),做到熟練掌握;第4章 Linux文件系統(tǒng),介紹Linux文件系統(tǒng)的一些常識(shí)性?xún)?nèi)容,做一般性了解即可;第5章 Vi編輯器,講述Vi編輯器的基本使用。掌握一款Linux下的文本編輯器是進(jìn)行Linux開(kāi)發(fā)的一項(xiàng)必備技能,需要多加練習(xí),熟練運(yùn)用;第6章嵌入式Linux開(kāi)發(fā)環(huán)境構(gòu)建,這部分內(nèi)容也是實(shí)操性?xún)?nèi)容,需要深刻理解,建議照著做一遍。整個(gè)第一篇的內(nèi)容,都沒(méi)有什么難點(diǎn),但對(duì)于習(xí)慣了Windows操作,或者剛接觸Linux的初學(xué)者來(lái)說(shuō),可能會(huì)對(duì)Linux的操作方式有點(diǎn)不習(xí)慣,特別是命令行操作。只要多加練習(xí),很快就可以度過(guò)適應(yīng)期,習(xí)慣并喜歡上Linux“簡(jiǎn)單就是美”的設(shè)計(jì)哲學(xué)和操作方式。1第1章Li

10、nux操作系統(tǒng)簡(jiǎn)介本章導(dǎo)讀本章首先對(duì)Linux發(fā)展簡(jiǎn)史進(jìn)行簡(jiǎn)要介紹,然后對(duì)Linux內(nèi)核進(jìn)行了介紹,重點(diǎn)介紹了Linux內(nèi)核的特點(diǎn)和功能,接著對(duì)Linux發(fā)行版進(jìn)行介紹,并列舉了一些典型的發(fā)行版;最后對(duì)嵌入式Linux進(jìn)行了簡(jiǎn)要介紹,包括嵌入式Linux的特點(diǎn)和產(chǎn)品形態(tài)。1.1 Linux內(nèi)核Linux是全球最受歡迎的開(kāi)源操作系統(tǒng)。它是一個(gè)由C語(yǔ)言編寫(xiě)的,符合POSIX標(biāo)準(zhǔn)的類(lèi)UNIX系統(tǒng)。詞條POSIXPOSIX是Portable Operating System Interface的縮寫(xiě),表示可移植操作系統(tǒng)接口,它規(guī)定了操作系統(tǒng)應(yīng)該為應(yīng)用編程提供的接口標(biāo)準(zhǔn)。詞條UNIXUNIX是一個(gè)強(qiáng)大的

11、多用戶(hù)、多任務(wù)分時(shí)操作系統(tǒng),支持多種處理器架構(gòu),于1969年在AT&T的貝爾實(shí)驗(yàn)室開(kāi)發(fā)。UNIX是商業(yè)操作系統(tǒng),需要收費(fèi)。Linus當(dāng)時(shí)提交到Minix新聞組的原名并不是Linux,而是Freax,取自“Free”和“Unix”兩個(gè)單詞,為“免費(fèi)的Unix”之意。但當(dāng)時(shí)的管理員并不喜歡“Freax”這個(gè)名稱(chēng),并以“Linuss Minix”之意,將Freax放到了一個(gè)名為“Linux”的目錄下,之后便一直用Linux這個(gè)名稱(chēng)。Linux誕生、發(fā)展和壯大于網(wǎng)絡(luò),目前依然掌控于Linux社區(qū),遍布全球數(shù)以萬(wàn)計(jì)的黑客和志愿者參與Linux開(kāi)發(fā),也有商業(yè)公司為L(zhǎng)inux貢獻(xiàn)代碼。Linux內(nèi)核核心開(kāi)發(fā)

12、隊(duì)伍的領(lǐng)導(dǎo)者目前是Linus本人。Linus其人2014年,Linus獲得2014 IEEE計(jì)算機(jī)先驅(qū)獎(jiǎng);2012年,芬蘭千禧年科技獎(jiǎng);2012年,首批入駐“互聯(lián)網(wǎng)名人堂”;2011年,首屆ITechLaw成就獎(jiǎng);2004年,被評(píng)為世界最有影響力的人之一;1998年,電子前哨基金會(huì)先鋒獎(jiǎng)。除Linux操作系統(tǒng)之外,Linus還創(chuàng)建了目前最流行的版本控制系統(tǒng)Git。Linux遵循GPL協(xié)議,允許任何人對(duì)代碼進(jìn)行修改或發(fā)行,包括商業(yè)行為。只要其遵守該GPL協(xié)議,所有基于Linux的軟件也必須以GPL協(xié)議的形式發(fā)表,并提供源代碼。詞條GPLGPL是GNU General Public License

13、的縮寫(xiě),非正式中文翻譯為“GNU通用公共許可證”。只有GPL英文原版才具有法律效力。 在軟件中采用了使用GPL協(xié)議的產(chǎn)品,該軟件產(chǎn)品也必須采用GPL協(xié)議,即必須開(kāi)源,這是GPL所謂的“傳染性”。下載各版本的內(nèi)核源碼,包括測(cè)試版和最新穩(wěn)定版。Linux的吉祥物是一只名叫Tux的企鵝,看起來(lái)像穿了一件晚禮服的企鵝,如右圖。Linux吉祥物創(chuàng)作于1996年,據(jù)說(shuō)Linus被澳大利亞國(guó)家動(dòng)物園的一只小企鵝輕輕咬了一下,于是就有了用企鵝做吉祥物的想法。Tux全稱(chēng)tuxedo,但大多數(shù)人更傾向于另一種說(shuō)法,說(shuō)是Tux名字來(lái)源于“Torvalds UniX”。Linux發(fā)音li:nks,這也是Linus本人

14、的發(fā)音,在不同語(yǔ)言里發(fā)音有差異,國(guó)內(nèi)很大一部分人發(fā)音li:n juks。1.Linux內(nèi)核的重要特點(diǎn)Linux是一個(gè)開(kāi)放自由的操作系統(tǒng)內(nèi)核,具有一些鮮明的特點(diǎn):(1Linux是一個(gè)一體化內(nèi)核;注:“一體化內(nèi)核”是也稱(chēng)“宏內(nèi)核”,是相對(duì)于“微內(nèi)核”而言的。幾乎所有的嵌入式和實(shí)時(shí)系統(tǒng)都采用微內(nèi)核,如VxWorks、uC/OS-II、PSOS等。(2可移植性強(qiáng)。盡管Linus最初只為在X86 PC上實(shí)現(xiàn)一個(gè)“類(lèi)UNIX”,后來(lái)隨著加入者的努力,Linux目前已經(jīng)成為支持硬件平臺(tái)最廣泛的操作系統(tǒng);注:目前已經(jīng)在X86、IA64、ARM、MIPS、AVR32、M68K、S390、Blackfin、M32

15、R等眾多架構(gòu)處理器上運(yùn)行。(3是一個(gè)可裁剪操作系統(tǒng)內(nèi)核。Linux極具伸縮性,內(nèi)核可以任意裁剪,可以大至幾十或者上百兆,可以小至幾百K,運(yùn)行的設(shè)備從超級(jí)計(jì)算機(jī)、大型服務(wù)器到小型嵌入式系統(tǒng)、掌上移動(dòng)設(shè)備或者嵌入式模塊,都可以運(yùn)行;(4模塊化。Linux內(nèi)核采用模塊化設(shè)計(jì),很多功能模塊都可以編譯為模塊,可以在內(nèi)核運(yùn)行中動(dòng)態(tài)加載/卸載而無(wú)需重啟系統(tǒng);(5網(wǎng)絡(luò)支持完善。Linux內(nèi)核集成了完整的POSIX網(wǎng)絡(luò)協(xié)議棧,網(wǎng)絡(luò)功能完善;(6穩(wěn)定性強(qiáng)。運(yùn)行Linux的內(nèi)核的服務(wù)器可以做到幾年不用復(fù)位重啟;(7安全性好。Linux源碼開(kāi)放,由眾多黑客參與Linux的開(kāi)發(fā),一旦發(fā)現(xiàn)漏洞都能及時(shí)修復(fù);(8支持的設(shè)備

16、廣泛。Linux源碼中,設(shè)備驅(qū)動(dòng)源碼占了很大比例,幾乎能支持任何常見(jiàn)設(shè)備,無(wú)論是很老舊的設(shè)備還是最新推出的硬件設(shè)備,幾乎都能找到Linux下的驅(qū)動(dòng)。Linux操作系統(tǒng)的特點(diǎn)2.以L(fǎng)inux內(nèi)核為核心的操作系統(tǒng)具有如下特點(diǎn):(1開(kāi)放性遵循世界標(biāo)準(zhǔn)規(guī)范,特別是遵循開(kāi)放系統(tǒng)互連(OSI國(guó)際標(biāo)準(zhǔn)。凡遵循國(guó)際標(biāo)準(zhǔn)所開(kāi)發(fā)的硬件和軟件,都能彼此兼容,可方便地實(shí)現(xiàn)互連。詞條OSIOSI是Open System Interconnection的縮寫(xiě),意為開(kāi)放系統(tǒng)互聯(lián),該模型由ISO (國(guó)際標(biāo)準(zhǔn)化組織制定。模型把網(wǎng)絡(luò)通信分為7層:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話(huà)層、表示層和應(yīng)用層。詞條ISOISO是Int

17、ernational Organization for Standardization的縮寫(xiě),即國(guó)際標(biāo)準(zhǔn)化組織,該組織是由國(guó)家標(biāo)準(zhǔn)化機(jī)構(gòu)組成的世界范圍的聯(lián)合會(huì),現(xiàn)有140個(gè)成員國(guó)。ISO 中央辦事機(jī)構(gòu)設(shè)在瑞士的日內(nèi)瓦。(2多用戶(hù)Linux操作系統(tǒng)是一個(gè)真正的多用戶(hù)操作系統(tǒng);系統(tǒng)資源可以被不同用戶(hù)各自擁有使用,即每個(gè)用戶(hù)對(duì)自己的資源有特定的權(quán)限,互不影響。經(jīng)常有初學(xué)者將Linux的多用戶(hù)與Windows的多用戶(hù)弄混淆,實(shí)際上兩者的差別是很大的。Windows桌面同一時(shí)刻只允許一個(gè)用戶(hù)登錄,其余用戶(hù)必須鎖定;而Linux則允許多個(gè)用戶(hù)同時(shí)登錄。(3多任務(wù)多任務(wù)是現(xiàn)代計(jì)算機(jī)的最主要的一個(gè)特點(diǎn)。它是指

18、計(jì)算機(jī)同時(shí)執(zhí)行多個(gè)程序,而且各個(gè)程序的運(yùn)行互相獨(dú)立。Linux系統(tǒng)調(diào)度每一個(gè)進(jìn)程平等地訪(fǎng)問(wèn)處理器。多任務(wù)實(shí)際上很常見(jiàn),例如我們?cè)诰帉?xiě)文檔的時(shí)候,還可以一邊聽(tīng)歌,甚至還可以從網(wǎng)上下載資料。這至少就有文檔處理、音樂(lè)播放和網(wǎng)絡(luò)下載三個(gè)任務(wù),相互互不影響,并且是同時(shí)運(yùn)行的。(4良好的用戶(hù)界面Linux向用戶(hù)提供了兩種界面:用戶(hù)界面和系統(tǒng)調(diào)用。1Linux的傳統(tǒng)用戶(hù)界面是基于文本的命令行界面,即Shell,它既可以聯(lián)機(jī)使用,又可存在文件上脫機(jī)使用。Shell有很強(qiáng)的程序設(shè)計(jì)能力,用戶(hù)可方便地用它編制程序,從而為用戶(hù)擴(kuò)充系統(tǒng)功能提供了更高級(jí)的手段。2Linux還為用戶(hù)提供了圖形用戶(hù)界面。它利用鼠標(biāo)、菜單、

19、窗口、滾動(dòng)條等設(shè)施,給用戶(hù)呈現(xiàn)一個(gè)直觀、易操作、交互性強(qiáng)的友好的圖形化界面。3系統(tǒng)調(diào)用是提供給用戶(hù)編程時(shí)使用的界面。用戶(hù)可以在編程時(shí)直接使用系統(tǒng)提供的系統(tǒng)調(diào)用。系統(tǒng)通過(guò)這個(gè)界面為用戶(hù)程序提供低級(jí)、高效率的服務(wù)。(5設(shè)備獨(dú)立性L(fǎng)inux操作系統(tǒng)把所有外部設(shè)備統(tǒng)一當(dāng)作成文件來(lái)看待,只要安裝它們的驅(qū)動(dòng)程序,任何用戶(hù)都可以像使用文件一樣,操縱、使用這些設(shè)備,而不必知道它們的具體存在形式。Linux的設(shè)備獨(dú)立性使得它具有高度適應(yīng)能力,能夠適應(yīng)隨時(shí)增加支持新設(shè)備。設(shè)備獨(dú)立性主要是對(duì)應(yīng)用程序開(kāi)發(fā)者來(lái)說(shuō)的。例如,對(duì)應(yīng)用開(kāi)發(fā)者來(lái)說(shuō),系統(tǒng)自帶的串口與USB串口的操作方式是一樣的,都是串口設(shè)備,而不用關(guān)心這個(gè)串口設(shè)

20、備實(shí)際對(duì)應(yīng)的物理硬件是什么。現(xiàn)代計(jì)算機(jī)都實(shí)現(xiàn)了設(shè)備獨(dú)立特性。(6完善的網(wǎng)絡(luò)功能Linux內(nèi)置完整的POSIX網(wǎng)絡(luò)協(xié)議棧,在通信和網(wǎng)絡(luò)功能方面優(yōu)于其它操作系統(tǒng)。Linux 為用戶(hù)提供了完善的、強(qiáng)大的網(wǎng)絡(luò)功能:1支持Internet。Linux免費(fèi)提供了大量支持Internet的軟件,使得用戶(hù)能用Linux與世界上的其他人通過(guò)Internet網(wǎng)絡(luò)進(jìn)行通信。2網(wǎng)絡(luò)文件傳輸。用戶(hù)能通過(guò)一些Linux命令完成內(nèi)部信息或文件的傳輸。3遠(yuǎn)程訪(fǎng)問(wèn)功能。Linux系統(tǒng)既允許本身通過(guò)網(wǎng)絡(luò)訪(fǎng)問(wèn)遠(yuǎn)程的系統(tǒng),也允許遠(yuǎn)程系統(tǒng)通過(guò)網(wǎng)絡(luò)訪(fǎng)問(wèn)自身。(7可靠的系統(tǒng)安全Linux采取了許多安全技術(shù)措施,包括對(duì)讀、寫(xiě)進(jìn)行權(quán)限控制、帶

21、保護(hù)的子系統(tǒng)、審計(jì)跟蹤、核心授權(quán)等,為網(wǎng)絡(luò)多用戶(hù)環(huán)境中的用戶(hù)提供了必要的安全保障。(8模塊化運(yùn)行時(shí)可以根據(jù)系統(tǒng)的需要加載程序而無(wú)需重啟系統(tǒng)。Linux的模塊化極大地提高了Linux的可裁剪性和靈活性。(9良好的可移植性L(fǎng)inux是一種可移植的操作系統(tǒng),能夠在從微型計(jì)算機(jī)到大型計(jì)算機(jī)的任何環(huán)境和任何平臺(tái)上運(yùn)行。目前已經(jīng)成為支持平臺(tái)最廣泛的操作系統(tǒng)。Linux內(nèi)核移植分3個(gè)層次:體系結(jié)構(gòu)級(jí)別移植、處理器級(jí)別移植和板級(jí)移植。對(duì)大多數(shù)開(kāi)發(fā)者而言,只需進(jìn)行板級(jí)移植。Linux內(nèi)核版本由Linus所領(lǐng)導(dǎo)的內(nèi)核開(kāi)發(fā)小組控制,版本號(hào)有嚴(yán)格規(guī)定。Linux內(nèi)核由5個(gè)主要子系統(tǒng)組成,分別是:內(nèi)存管理、進(jìn)程管理、進(jìn)

22、程間通信、虛擬文件系統(tǒng)和網(wǎng)絡(luò),各子系統(tǒng)之間的關(guān)系如圖 1.1所示。 圖 1.1 Linux內(nèi)核組成部分1.進(jìn)程管理進(jìn)程管理負(fù)責(zé)控制進(jìn)程對(duì)CPU的訪(fǎng)問(wèn),如任務(wù)的創(chuàng)建、調(diào)度和終止等。任務(wù)調(diào)度是進(jìn)程管理最核心的工作,由Linux內(nèi)核調(diào)度器來(lái)完成。Linux內(nèi)核調(diào)度器根據(jù)一定算法來(lái)選擇最值得運(yùn)行的進(jìn)程。一個(gè)進(jìn)程的可能狀態(tài)有如下幾種:(1運(yùn)行態(tài)已經(jīng)獲得了資源,并且進(jìn)程正在被CPU執(zhí)行。進(jìn)程既可運(yùn)行在內(nèi)核態(tài),也可運(yùn)行在用戶(hù)態(tài)。內(nèi)核態(tài),內(nèi)核和驅(qū)動(dòng)所運(yùn)行時(shí)的狀態(tài),程序處于特權(quán)階級(jí),能夠訪(fǎng)問(wèn)系統(tǒng)的任何資源,好比社會(huì)的統(tǒng)治者。用戶(hù)態(tài),用戶(hù)程序運(yùn)行的狀態(tài),處于非特權(quán)階級(jí),不能隨意訪(fǎng)問(wèn)系統(tǒng)資源,必須通過(guò)驅(qū)動(dòng)程序方可訪(fǎng)

23、問(wèn),用戶(hù)態(tài)程序可通過(guò)系統(tǒng)調(diào)用進(jìn)入內(nèi)核態(tài)。用戶(hù)態(tài)程序有如社會(huì)的被統(tǒng)治者,處于被管理的非特權(quán)階級(jí),只有通過(guò)某種途徑才能進(jìn)入特權(quán)階級(jí)。(2就緒態(tài)當(dāng)系統(tǒng)資源已經(jīng)可用,但由于前一個(gè)進(jìn)程還沒(méi)有執(zhí)行完而釋放CPU,準(zhǔn)備進(jìn)入運(yùn)行狀態(tài)。(3可中斷睡眠狀態(tài)當(dāng)進(jìn)程處于可中斷等待狀態(tài)時(shí),系統(tǒng)不會(huì)調(diào)度該程序執(zhí)行。當(dāng)系統(tǒng)產(chǎn)生一個(gè)中斷或者釋放了進(jìn)程正在等待的資源,或者進(jìn)程收到一個(gè)信號(hào),都可以被喚醒進(jìn)入就緒狀態(tài)或者運(yùn)行態(tài)。(4不可中斷睡眠狀態(tài)處于中斷等待狀態(tài),但是該進(jìn)程只能被使用wake_up(函數(shù)明確喚醒的時(shí)候才可進(jìn)入就緒狀態(tài)。(5暫停狀態(tài)當(dāng)進(jìn)程收到SIGSTOP、SIGSTP、SIGTTIN或者SIGTTOU就會(huì)進(jìn)入暫停

24、狀態(tài),收到SIGCONT信號(hào)即可進(jìn)入運(yùn)行態(tài)。(6僵死態(tài)進(jìn)程已經(jīng)停止運(yùn)行,但是其父進(jìn)程還沒(méi)有詢(xún)問(wèn)其狀態(tài)。各狀態(tài)之間的轉(zhuǎn)換關(guān)系和轉(zhuǎn)換條件如圖 1.2所示。 暫停不可中斷睡眠 圖 1.2 Linux 進(jìn)程狀態(tài)和轉(zhuǎn)換進(jìn)程和狀態(tài)的轉(zhuǎn)換有點(diǎn)抽象,用生活中一個(gè)比較接近的例子類(lèi)比一下,或許能有助于理解。Linux 內(nèi)核調(diào)度器好比是生產(chǎn)線(xiàn)的主管,而進(jìn)程則好比是生產(chǎn)線(xiàn)上的工人。主管24小時(shí)不間斷的工作,工人的工作時(shí)間是朝九晚五,其余時(shí)間在等待區(qū)排隊(duì)等候。早上工人到達(dá)工廠,還沒(méi)到9點(diǎn)上班時(shí)間,工人可以在等待區(qū)休息,這個(gè)狀態(tài)可以稱(chēng)之為“就緒態(tài)”;但是9點(diǎn)一到,工人則必須上生產(chǎn)線(xiàn)工作,這個(gè)工作狀態(tài)可稱(chēng)之為“運(yùn)行態(tài)”;下

25、午5點(diǎn)一到,到了工人下班時(shí)間,工人離開(kāi)生產(chǎn)線(xiàn)又回到等待區(qū)排隊(duì)等候,處于“就緒態(tài)”。 如果工人上班的時(shí)候,收到主管的命令,說(shuō)是“你暫時(shí)不用工作了,到休息室休息等待”,工人此時(shí)的這個(gè)狀態(tài),可以稱(chēng)之為“暫?!睜顟B(tài),過(guò)了一段時(shí)間,主管通知工人說(shuō)是“休息結(jié)束,要準(zhǔn)備工作了”,工人不能直接回生產(chǎn)線(xiàn)崗位,而是必須先到等待區(qū)排隊(duì)等待,輪到后才上生產(chǎn)線(xiàn)工作。如果有一天工人精神狀態(tài)不好,向主管申請(qǐng)要睡覺(jué)休息,理由可以是“某種配件不到,我無(wú)法工作”,也可以是“我就是困了,想睡覺(jué)”,工人最后可能得到兩種批準(zhǔn)結(jié)果:一是主管批準(zhǔn)了,但是附加了一個(gè)條件說(shuō)“等我叫醒你,你必須醒來(lái)上班”,然后工人就去享受他的安穩(wěn)覺(jué)了,工人進(jìn)入

26、“不可中斷睡眠”狀態(tài);另一種是主管也批準(zhǔn)了,但是附加了另一個(gè)條件,說(shuō)“在你睡覺(jué)的時(shí)候,如果配件到了,你就得立馬給我起來(lái)上班”,工人也去睡覺(jué)去了,但此時(shí)工人睡得并不安心,因?yàn)檫@不是一個(gè)安穩(wěn)覺(jué),是“可中斷睡眠”。無(wú)論工人睡得是安穩(wěn)覺(jué),還是不安穩(wěn)覺(jué),醒來(lái)都不能直接上生產(chǎn)線(xiàn),而是回到等待區(qū),等待輪值。 還有一種情況,工人干完活到點(diǎn)下班了,但主管對(duì)他不聞不問(wèn),也不安排新的工作,這是一種非正常狀況,工人進(jìn)入了“僵死態(tài)”。內(nèi)存管理2.內(nèi)存管理的主要作用是控制和管理多個(gè)進(jìn)程,使之能夠安全的共享主內(nèi)存區(qū)域。當(dāng)CPU 提供內(nèi)存管理單元(MMU 時(shí),內(nèi)存管理為各進(jìn)程實(shí)現(xiàn)虛擬地址到內(nèi)存物理地址的轉(zhuǎn)換。在32位系統(tǒng)上,

27、Linux 內(nèi)核將4G 空間分為1G 內(nèi)核空間(34G 和3G (03G 用戶(hù)空間,通過(guò)內(nèi)存管理,每個(gè)進(jìn)程都可以使用3G 的用戶(hù)空間。文件系統(tǒng)3.Linux內(nèi)核支持眾多的邏輯文件系統(tǒng),如Ext2、Ext3、Ext4、btrfs、NFS、VFAT等。VFS則是Linux基于各種邏輯文件系統(tǒng)抽象出的一種內(nèi)存中的文件系統(tǒng),隱藏了各種硬件設(shè)備細(xì)節(jié),為用戶(hù)提供統(tǒng)一的操作接口,是用戶(hù)訪(fǎng)問(wèn)各種不同文件系統(tǒng)和設(shè)備時(shí),不用區(qū)分具體的邏輯文件系統(tǒng)。例如,Linux下硬盤(pán)上使用的文件系統(tǒng)通常是Ext3/4格式,而U盤(pán)通常是FAT32格式,但是用戶(hù)在使用中根本感覺(jué)不到差異,也不用區(qū)分文件系統(tǒng)的具體差別。4.網(wǎng)絡(luò)接口L

28、inux對(duì)網(wǎng)絡(luò)支持相當(dāng)完善,網(wǎng)絡(luò)接口提供了對(duì)各種網(wǎng)絡(luò)標(biāo)準(zhǔn)的存取和各種網(wǎng)絡(luò)硬件的支持,接口可分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動(dòng)程序。網(wǎng)絡(luò)協(xié)議部分負(fù)責(zé)實(shí)現(xiàn)每一種可能的網(wǎng)絡(luò)傳輸協(xié)議。網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)與硬件設(shè)備通訊,每一種可能的硬件設(shè)備都有相應(yīng)的設(shè)備驅(qū)動(dòng)程序。5.進(jìn)程間通信支持進(jìn)程間各種通信機(jī)制,如管道、命名管道、信號(hào)、消息隊(duì)列、內(nèi)存共享、信號(hào)量和套接字等。管道通常用于具有親緣關(guān)系的父子進(jìn)程或者兄弟進(jìn)程間通信,是半雙工的,數(shù)據(jù)只能往一個(gè)方向流動(dòng),先入先出,與自來(lái)水管很相似。如果雙方互通時(shí),需要建立兩個(gè)管道。命名管道則突破了進(jìn)程間的親緣關(guān)系限制,即非父子、兄弟進(jìn)程之間也可相互通信。信號(hào)是軟件中斷,用于在多個(gè)進(jìn)程

29、之間傳遞異步信號(hào)。日常生活中信號(hào)的例子很多了,如一對(duì)很親密的啞巴情侶,在很多時(shí)候只需要一個(gè)簡(jiǎn)單的眼神,對(duì)方就能知道他(她需要什么,并做出回應(yīng),這個(gè)眼神,就是一個(gè)“信號(hào)”。信號(hào)能傳遞的信息有限,而消息隊(duì)列則正好彌補(bǔ)了這點(diǎn)。例如情侶的一個(gè)眼神,對(duì)方可能能知道情侶的需求,但是如果情侶有一大堆需求,僅僅靠一個(gè)眼神就比較費(fèi)力了。情侶就把自己的需求寫(xiě)在了一張紙條上,遞交給對(duì)方,對(duì)方根據(jù)紙條的內(nèi)容,逐一滿(mǎn)足情侶的需求。共享內(nèi)存常用于不同進(jìn)程間進(jìn)行大量數(shù)據(jù)傳遞。Linux下每個(gè)進(jìn)程都有自己的獨(dú)立空間,各自都不能直接訪(fǎng)問(wèn)其它進(jìn)程的空間。好比這對(duì)情侶都有自己的小金庫(kù),有時(shí)候需要給對(duì)方一部分錢(qián)用,但他們不能直接相互

30、轉(zhuǎn)賬,必須先將前存到他們倆合開(kāi)的一個(gè)公共賬戶(hù)上面,然后再使用。這個(gè)公共賬戶(hù)就是這對(duì)情侶的“共享內(nèi)存”。信號(hào)量用于進(jìn)程同步。只有獲得了信號(hào)量的進(jìn)程才可以運(yùn)行,沒(méi)有獲得信號(hào)量的進(jìn)程則只能等待。就像十字路口的紅綠燈,只有在綠燈亮(獲得了綠燈的時(shí)候才能通行,否則只能等待。套接字(Socket起源于BSD,也常稱(chēng)“BSD套接字”,用于多個(gè)進(jìn)程間通信,可以基于文件,也可基于網(wǎng)絡(luò)。Socket本意是“插座”,套接字設(shè)計(jì)就是通過(guò)某些參數(shù)設(shè)定,然后將一個(gè)“插座”與另外一個(gè)“插座”連接起來(lái)??赡苓€有點(diǎn)抽象,看一個(gè)例子可能就好理解了。把套接字理解為固定電話(huà)的插口,現(xiàn)在要打電話(huà)出去,必須要知道打給誰(shuí),往哪里打;另外電

31、話(huà)另一端必須有人在聽(tīng)才可以通話(huà),否則也不能打電話(huà)。1.2 Linux 發(fā)行版由Linus 主持開(kāi)發(fā)的Linux 僅僅是一個(gè)內(nèi)核,提供硬件抽象層、磁盤(pán)及文件系統(tǒng)控制、多任務(wù)等功能,并不是一個(gè)完整的操作系統(tǒng)。一套基于Linux 內(nèi)核的完整操作系統(tǒng)叫作Linux 操作系統(tǒng),也稱(chēng)GNU/Linux 。據(jù)不完全統(tǒng)計(jì),目前大大小小應(yīng)用于不同場(chǎng)合的Linux 發(fā)行版已經(jīng)超過(guò)400余種,桌面/服務(wù)器上常見(jiàn)的也就十來(lái)種,如Redhat 、Mandriva 、Fedora 、SuSe 、Debian 、Ubuntu 等。一個(gè)完整的Linux 發(fā)行版,是以L(fǎng)inux 內(nèi)核為基礎(chǔ),外加眾多外圍應(yīng)用程序和文檔組成,一個(gè)

32、典型的GNU/Linux 發(fā)行版基本系統(tǒng)結(jié)構(gòu)如圖 1.3所示。不同軟件廠商發(fā)布的Linux 發(fā)行版各自包含的外圍軟件也不一樣,發(fā)布版的鏡像大小差別也很大。用戶(hù)程序GNU C 庫(kù)(glibc系統(tǒng)調(diào)用接口Linux 內(nèi)核體系結(jié)構(gòu)相關(guān)代碼硬件平臺(tái)內(nèi)核空間用戶(hù)空間圖 1.3 GNU/Linux 操作系統(tǒng)基本體系結(jié)構(gòu)Linux 內(nèi)核為一些軟件廠商提供了內(nèi)核,促使了發(fā)行版的誕生;發(fā)行版的流行使得Linux 更加廣為人知,并吸引更多的黑客參與Linux 應(yīng)用開(kāi)發(fā),甚至內(nèi)核開(kāi)發(fā),促進(jìn)了內(nèi)核的快速發(fā)展。不同發(fā)行版之間功能定位、用戶(hù)群體都有差異,幾乎每個(gè)發(fā)行版都擁有相當(dāng)大數(shù)量的固定的用戶(hù)群或者忠實(shí)追隨者。Linu

33、x 社區(qū)各大發(fā)行版之間的爭(zhēng)論一直沒(méi)有停止過(guò),甚至有時(shí)候還有不同發(fā)行版用戶(hù)之間的口水戰(zhàn),但是這并不妨礙Linux 內(nèi)核的發(fā)展。Linux 發(fā)行版的版本號(hào)是發(fā)行廠商自定義的代號(hào),與Linux 內(nèi)核版本號(hào)沒(méi)有任何直接關(guān)系,并且各發(fā)行版的命名規(guī)則也各不相同,如Fedora 20、Ubuntu 14.04等。常見(jiàn)的Linux 發(fā)行版有:RedHat1.Linux 目前依然是不少工程Fedora2.Fedora贊助, Madriva3.的大部分優(yōu)良 分區(qū)大小變更Debian 4.Ubuntu 5.個(gè)月發(fā)布一個(gè)新SuSe6. Gentoo 7.Slackware 8.紅旗Linux 9.1.3 嵌入式Lin

34、ux嵌入式Linux 是對(duì)運(yùn)行在嵌入式設(shè)備上的Linux 的統(tǒng)稱(chēng),嚴(yán)格說(shuō)來(lái),每種不同應(yīng)用的嵌入式Linux 都可以稱(chēng)為是一個(gè)發(fā)行版。嵌入式Linux 往往針對(duì)于某個(gè)特殊領(lǐng)域,專(zhuān)門(mén)為實(shí)現(xiàn)某些特定的功能而開(kāi)發(fā),一般說(shuō)來(lái),嵌入式Linux 所運(yùn)行的程序相對(duì)來(lái)說(shuō)比較單一,功能定位也比較明確,如嵌入式網(wǎng)關(guān)、路由器等。將標(biāo)準(zhǔn)Linux應(yīng)用到嵌入式領(lǐng)域,往往是根據(jù)實(shí)際需要裁減內(nèi)核,內(nèi)核一般從幾百K到幾兆字節(jié)不等。所使用的文件系統(tǒng)也不是桌面Linux這樣復(fù)雜龐大的軟件包,一般也是用源碼或者其它工具定制,文件系統(tǒng)的大小也可以從幾兆到幾十兆,或者上百兆不等。Linux在嵌入式領(lǐng)域的分化,一般是兩個(gè)方向,小型化和實(shí)

35、時(shí)化。小型化一般就是根據(jù)需要將不需要的功能和服務(wù)去掉,盡可能的減小內(nèi)核和系統(tǒng)的體積,以節(jié)省硬件資源和成本,如ETLinux、uLinux、ThinLinux等。實(shí)時(shí)化一般是通過(guò)修改源代碼,為L(zhǎng)inux內(nèi)核增加比校準(zhǔn)內(nèi)核更好的實(shí)時(shí)性,以滿(mǎn)足一些對(duì)實(shí)時(shí)性有要求的特定領(lǐng)域的應(yīng)用,如RTLinux、RTAI等。與其它嵌入式系統(tǒng)產(chǎn)品一樣,嵌入式Linux產(chǎn)品在物理形態(tài)上與普通Linux設(shè)備有很大差異,不同產(chǎn)品之間物理形態(tài)也是各不相同。與桌面Linux相比,嵌入式Linux產(chǎn)品往往沒(méi)有碩大的顯示器,或者鼠標(biāo)鍵盤(pán)這樣的外設(shè)。嵌入式Linux產(chǎn)品既可以作為一個(gè)獨(dú)立形態(tài)的產(chǎn)品出現(xiàn),如手持機(jī)、交換機(jī)、路由器等,也

36、有可能以某種特殊功能設(shè)備的形式出現(xiàn),通過(guò)某種通信接口參與系統(tǒng)集成,例如協(xié)議轉(zhuǎn)換器,或者甚至以電路板或者模塊的形式出現(xiàn)在某種設(shè)備的電路板上,如嵌入式工業(yè)交換機(jī)模塊。無(wú)論如何,它們的共性都是運(yùn)行了經(jīng)過(guò)高度裁剪的、具備特定功能的嵌入式Linux操作系統(tǒng)。圖 1.4列舉了生活中一些常見(jiàn)的嵌入式Linux產(chǎn)品。 圖 1.4 生活中常見(jiàn)的嵌入式Linux產(chǎn)品無(wú)論最終產(chǎn)品以何種形態(tài)出現(xiàn),在開(kāi)發(fā)階段,串口和網(wǎng)口幾乎是必不可缺的外設(shè)接口。嵌入式Linux的默認(rèn)終端通常是調(diào)試串口,系統(tǒng)輸出信息通過(guò)串口輸出,也通過(guò)串口接收各種命令。而網(wǎng)口則常用于數(shù)據(jù)傳輸和程序調(diào)試,特別是在內(nèi)核開(kāi)發(fā)階段以及應(yīng)用程序開(kāi)發(fā)階段,網(wǎng)絡(luò)幾乎

37、也是必須的。第2章安裝Linux操作系統(tǒng)本章導(dǎo)讀學(xué)習(xí)Linux,必須要有一個(gè)Linux環(huán)境。本章先介紹獲得Linux環(huán)境的3種方式,然后以Ubuntu發(fā)行版為例講解Linux操作系統(tǒng)的安裝和設(shè)置,圖文并茂,清晰明了的展示Ubuntu 操作系統(tǒng)安裝的全過(guò)程,引領(lǐng)讀者完成Ubuntu操作系統(tǒng)的安裝。本章最后對(duì)Ubuntu桌面進(jìn)行了粗略介紹。2.1 獲得Linux環(huán)境的三種方式學(xué)習(xí)Linux,必須先獲得一個(gè)Linux主機(jī)環(huán)境,通常情況下,可以通過(guò)以下三種方式獲得Linux環(huán)境。1.雙系統(tǒng)安裝如果沒(méi)有閑置的計(jì)算機(jī),或者現(xiàn)有Windows系統(tǒng)的計(jì)算機(jī)有足夠的硬盤(pán)空間,可以考慮劃分一部分硬盤(pán)空間,用于安裝

38、Linux操作系統(tǒng),最終形成雙系統(tǒng)計(jì)算機(jī)。優(yōu)點(diǎn):經(jīng)濟(jì)實(shí)惠,且對(duì)計(jì)算機(jī)硬件要求不太高。缺點(diǎn):安裝雙系統(tǒng)比較危險(xiǎn),一不小心有可能造成整個(gè)硬盤(pán)數(shù)據(jù)丟失;在開(kāi)發(fā)過(guò)程使用到Windows工具時(shí),需進(jìn)行系統(tǒng)切換,不是很方便。2.全新硬盤(pán)安裝如果有足夠的計(jì)算機(jī)可用,可以選擇一臺(tái)計(jì)算機(jī)全新安裝Linux操作系統(tǒng)。優(yōu)點(diǎn):不用考慮多系統(tǒng)并存的問(wèn)題,且對(duì)計(jì)算機(jī)硬件硬件要求不太高。缺點(diǎn):在嵌入式開(kāi)發(fā)過(guò)程中,通常還會(huì)用到Windows下的工具,還需另外一臺(tái)計(jì)算機(jī)安裝Windows系統(tǒng)。3.安裝虛擬機(jī)如果計(jì)算機(jī)配置較高,可以考慮虛擬機(jī)方案。在Windows下安裝虛擬機(jī)軟件,然后通過(guò)虛擬機(jī)軟件創(chuàng)建一臺(tái)虛擬電腦,最后在虛擬電

39、腦中安裝Linux操作系統(tǒng);也可以安裝Linux,在Linux中安裝虛擬機(jī)再安裝Windows。常用的虛擬機(jī)軟件有VMware、Virtual Box和Virtual PC等,不同虛擬機(jī)軟件的使用方法稍有不同。下文以VMware為例進(jìn)行介紹。優(yōu)點(diǎn):安裝和使用Linux都很方便;還可同時(shí)使用Windows系統(tǒng)。缺點(diǎn):對(duì)計(jì)算機(jī)硬件要求高,特別是內(nèi)存,推薦4GB及以上。在Windows下使用虛擬機(jī),除了可以繼續(xù)使用Windows下的工具之外,還有下列好處:一臺(tái)電腦可以同時(shí)存放多臺(tái)虛擬機(jī),這樣就可以存在多個(gè)不同版本的Linux系統(tǒng);在硬件允許的情況下,甚至可以同時(shí)運(yùn)行多臺(tái)虛擬機(jī);安裝好的虛擬機(jī)可以任意

40、復(fù)制和拷貝,方便在不同電腦之間遷移和擴(kuò)散。2.2 發(fā)行版選擇和ISO下載在第一章介紹Linux發(fā)行版的時(shí)候提到,Linux有眾多發(fā)行版,就算是常用的發(fā)行版也有十來(lái)種。不同發(fā)行版之間,在安裝和使用上都有差異,選擇一個(gè)合適的發(fā)行版,是能促進(jìn)Linux的學(xué)習(xí)的。首先要考慮該發(fā)行版的流行度,越流行的發(fā)行版,用戶(hù)越多,遇到問(wèn)題尋求技術(shù)支持也很方便,如果選擇小眾的發(fā)行版,尋求技術(shù)支持就不那么方便了。其次要考慮該發(fā)行版使用的難易程度,通常來(lái)說(shuō),越簡(jiǎn)單易用的發(fā)行版越流行。進(jìn)行嵌入式Linux開(kāi)發(fā),還必須考慮嵌入式Linux開(kāi)發(fā)工具的問(wèn)題。最好選擇處理器半導(dǎo)體廠商以及開(kāi)發(fā)平臺(tái)廠商所選擇的發(fā)行版,這樣能夠直接使用

41、半導(dǎo)體或者開(kāi)發(fā)平臺(tái)原廠提供的各種工具,減少開(kāi)發(fā)過(guò)程中的障礙。 圖 2.1 Ubuntu鏡像下載網(wǎng)頁(yè)界面建議選擇Desktop版本,到底是32-bit版本還是64-bit版本,需要根據(jù)計(jì)算機(jī)硬件來(lái)決定,在硬件允許的情況下,推薦選擇64-bit版本。下載ISO文件后,如果進(jìn)行虛擬安裝,則可以直接使用ISO文件;如果進(jìn)行物理實(shí)體安裝,則可將ISO刻成啟動(dòng)光盤(pán),或者用unetbootin-windows軟件制作成USB啟動(dòng)盤(pán)備用。如果使用虛擬機(jī),還可以選擇下載已經(jīng)安裝好的Ubuntu虛擬機(jī)文件,請(qǐng)參考2.4小節(jié)。2.3 VMware Player軟件 圖 2.2 VMware Player下載頁(yè)面截止

42、到本書(shū)完稿時(shí),VMware Player已經(jīng)更新到了7.0版本,7.0版本沒(méi)有32位系統(tǒng)支持了,32位系統(tǒng)請(qǐng)選擇6.0版本下載使用。 圖 2.3 安裝VMware Player在彈出的“許可協(xié)議”對(duì)話(huà)框中選擇“我接受許可協(xié)議中的條款”,如圖 2.4所示。 圖 2.4 接受許可協(xié)議然后按默認(rèn)設(shè)置一直點(diǎn)擊“下一步”直至如圖2.5所示界面。 圖 2.5 準(zhǔn)備安裝此時(shí)點(diǎn)擊“繼續(xù)”按鈕即可進(jìn)行VMware Player軟件的安裝,安裝完成時(shí)如圖 2.6所示。 圖 2.6 完成安裝對(duì)于大多數(shù)PC而言,主板設(shè)置默認(rèn)支持虛擬化,無(wú)需進(jìn)行這步操作,但是對(duì)于一些筆記本電腦,默認(rèn)關(guān)閉了虛擬化支持,需要使能才能正常使

43、用虛擬機(jī)。設(shè)置虛擬化支持,需要進(jìn)入系統(tǒng)BIOS進(jìn)行操作。不同品牌的筆記本進(jìn)入BIOS的方法也存在差異,有的是在剛啟動(dòng)時(shí)持續(xù)按F2鍵進(jìn)入BIOS,有的是F10鍵,具體請(qǐng)參考對(duì)應(yīng)品牌電腦的主板說(shuō)明。當(dāng)進(jìn)入BIOS系統(tǒng),找到Intel Virtualization Technology選項(xiàng),將其配置為Enable,如圖2.7所示。注意,不同PC的BIOS中對(duì)應(yīng)的選項(xiàng)位置及描述可能不同,請(qǐng)以實(shí)際情況為準(zhǔn)。 圖 2.7使能Intel Virtualization Technology設(shè)置好虛擬化支持后,保存并退出BIOS,重啟電腦。2.4 使用現(xiàn)成的虛擬機(jī)前面已經(jīng)提到過(guò),虛擬機(jī)可以在不同電腦之間遷移和擴(kuò)

44、散。如果覺(jué)得安裝Linux操作系統(tǒng)麻煩,或者暫時(shí)不想安裝,可以直接使用已經(jīng)安裝好的虛擬機(jī)鏡像。打開(kāi) 圖 2.8 下載得到的虛擬機(jī)鏡像和解壓后的文件夾下載頁(yè)面同時(shí)提供了64位和32位虛擬機(jī)文件,請(qǐng)根據(jù)計(jì)算機(jī)硬件具體情況選擇:32位處理器的計(jì)算機(jī)只能使用32位鏡像;而對(duì)于64位處理器的計(jì)算機(jī),無(wú)論安裝了32位還是64位操作系統(tǒng),都可以任意選擇。打開(kāi)WMware Player軟件,點(diǎn)擊“打開(kāi)虛擬機(jī)”,選擇打開(kāi)已有的虛擬機(jī),如圖2.9所示。 圖 2.9 選擇“打開(kāi)虛擬機(jī)”在文件瀏覽器中,找到剛才虛擬機(jī)解壓后得到的目錄,打開(kāi)選擇打開(kāi)虛擬機(jī)配置文件,如圖 2.10所示。 圖 2.10 打開(kāi)虛擬機(jī)配置文件打

45、開(kāi)了虛擬機(jī)配置文件的VMware Player界面如圖 2.11所示,點(diǎn)擊“播放虛擬機(jī)”可以啟動(dòng)虛擬機(jī)。 圖 2.11 虛擬機(jī)裝載成功后的界面虛擬機(jī)文件被拷貝到新的位置,第一次運(yùn)行虛擬機(jī)會(huì)出現(xiàn)如圖2.12所示的對(duì)話(huà)框,選擇“我已復(fù)制該虛擬機(jī)”即可。 圖 2.12 選擇“I copied it”之后虛擬機(jī)將會(huì)正常啟動(dòng),啟動(dòng)成功后,可以看到Ubuntu桌面,如圖2.13所示。 圖 2.13 VMware Player成功啟動(dòng)Ubuntu虛擬機(jī)Ubuntu系統(tǒng)在VMware Player中成功啟動(dòng)后,可以先閱讀2.7小節(jié),初步了解Ubuntu 后,即可進(jìn)入第3章,開(kāi)始學(xué)習(xí)Linux命令。如果以后想學(xué)

46、習(xí)安裝Ubuntu,可以在另外的目錄新建新的虛擬機(jī),并安裝新的Ubuntu 系統(tǒng)。在有些電腦上,特別是筆記本電腦,有可能出現(xiàn)啟動(dòng)登錄后黑屏的狀況,出現(xiàn)這種狀況的原因有可能是VMware軟件設(shè)置默認(rèn)開(kāi)啟了“加速3D圖形”選項(xiàng),進(jìn)入關(guān)閉即可。先關(guān)閉虛擬機(jī)系統(tǒng),打開(kāi)虛擬機(jī)并裝載虛擬機(jī)配置文件,在VMware Player主界面,選擇“編輯虛擬機(jī)設(shè)置”,在“硬件”選項(xiàng)卡中選擇“顯示器”,將“加速3D圖形”前面的勾去掉,如圖 2.14所示。 圖 2.14 關(guān)閉3D圖形加速2.5 創(chuàng)建和配置虛擬機(jī)雙擊桌面的VMware Player啟動(dòng)快捷方式圖標(biāo)打開(kāi)VMware Player軟件,運(yùn)行界面如圖2.15所

47、示。點(diǎn)擊“創(chuàng)建新虛擬機(jī)(N”,可以創(chuàng)建一臺(tái)虛擬機(jī)。 圖 2.15 創(chuàng)建新虛擬機(jī)在彈出的向?qū)g迎界面中選擇“稍后安裝操作系統(tǒng)(S”,然后點(diǎn)擊“下一步”按鈕,如圖2.16所示。 圖 2.16 選擇“稍后安裝操作系統(tǒng)”在圖 2.17所示的“選擇客戶(hù)機(jī)操作系統(tǒng)”界面,選擇“Linux(L”,并在版本下拉框中選擇“Ubuntu 32位”或者“Ubunutu 64位”。請(qǐng)根據(jù)實(shí)際計(jì)算機(jī)硬件情況進(jìn)行選擇,圖2.17的示例是安裝Ubuntu 64位系統(tǒng)。 圖 2.17 選擇客戶(hù)機(jī)操作系統(tǒng)對(duì)于64處理器的計(jì)算機(jī),安裝了32位操作系統(tǒng),開(kāi)啟了虛擬化支持的話(huà),在安裝虛擬機(jī)的時(shí)候也可以選擇64位Linux系統(tǒng)。點(diǎn)擊“

48、下一步”,進(jìn)入“命名虛擬機(jī)”設(shè)置界面,可設(shè)置虛擬機(jī)名稱(chēng)以及存儲(chǔ)位置,如圖2.18所示。名稱(chēng)可用默認(rèn)名稱(chēng),也可以更改為自己滿(mǎn)意的名稱(chēng);但存放位置則不推薦用默認(rèn)值,必須放置到有足夠空閑空間的硬盤(pán)分區(qū)上。 圖 2.18 設(shè)置虛擬機(jī)名稱(chēng)及存儲(chǔ)位置設(shè)置好確認(rèn)無(wú)誤后,繼續(xù)點(diǎn)擊“下一步”,進(jìn)入“指定磁盤(pán)容量”界面,如圖 2.19所示。 圖 2.19 指定虛擬磁盤(pán)容量磁盤(pán)容量設(shè)置,建議40GB以上。除了安裝Ubuntu操作系統(tǒng)本身外,還會(huì)安裝嵌入式Linux開(kāi)發(fā)的各種工具,以及對(duì)應(yīng)的源碼等,都需要較大空間。圖2.19示例分配了40GB虛擬磁盤(pán),會(huì)產(chǎn)生虛擬磁盤(pán)文件,但并不會(huì)立即占用40GB實(shí)際硬盤(pán)空間。虛擬磁盤(pán)

49、文件會(huì)在使用過(guò)程中逐步增大,直到最大容量40GB。盡管不會(huì)立即占用40GB硬盤(pán)空間,但是為了將來(lái)方便使用,必須保證放置虛擬機(jī)的磁盤(pán)有超過(guò)40GB的空閑空間。由于虛擬磁盤(pán)文件大小會(huì)在使用中變化,分割成多個(gè)文件是比較好的選擇。確認(rèn)設(shè)置無(wú)誤后,點(diǎn)擊“下一步”按鈕,出現(xiàn)已經(jīng)創(chuàng)建完畢的虛擬機(jī)的信息概覽,如圖2.20所示,點(diǎn)擊完成即可。 圖 2.20 完成虛擬機(jī)創(chuàng)建創(chuàng)建得到的虛擬機(jī),默認(rèn)采用典型值,有的參數(shù)可能不是很合適,可以根據(jù)實(shí)際需要進(jìn)行調(diào)整。點(diǎn)擊圖2.20界面的“自定義硬件”,可以對(duì)虛擬計(jì)算機(jī)硬件進(jìn)行調(diào)整定制。1.內(nèi)存調(diào)整系統(tǒng)默認(rèn)的內(nèi)存值通常都比較小,建議適當(dāng)增加,如在有4GB內(nèi)存或以上的計(jì)算機(jī)上,

50、給虛擬電腦的內(nèi)存可以設(shè)置為2GB。進(jìn)入自定義硬件界面后,在“硬件”選項(xiàng)卡選中“內(nèi)存”,得到如圖2.21所示的界面,在這個(gè)界面可以設(shè)置內(nèi)存大小。 圖 2.21 內(nèi)存調(diào)整界面2.虛擬網(wǎng)卡設(shè)置不少VMware用戶(hù)都碰到過(guò)VMware的虛擬網(wǎng)卡的問(wèn)題,這里重點(diǎn)介紹一下。進(jìn)入自定義硬件界面后,在“硬件”選項(xiàng)卡選擇“網(wǎng)絡(luò)適配器”,得到如圖2.22所示的網(wǎng)卡設(shè)置界面。 圖 2.22 虛擬網(wǎng)卡設(shè)置虛擬網(wǎng)卡有3種模式,分別如下:(1橋接模式在這種模式下,VMWare虛擬出來(lái)的操作系統(tǒng)就像是局域網(wǎng)中的一臺(tái)獨(dú)立的主機(jī),它可以訪(fǎng)問(wèn)網(wǎng)內(nèi)任何一臺(tái)機(jī)器。在橋接模式下,虛擬系統(tǒng)和宿主機(jī)器的關(guān)系,就像連接在同一個(gè)Hub上的兩臺(tái)

51、電腦。用戶(hù)需要手工為虛擬系統(tǒng)配置IP地址、子網(wǎng)掩碼,而且還要和宿主機(jī)器處于同一網(wǎng)段,這樣虛擬系統(tǒng)才能和宿主機(jī)器進(jìn)行通信。同時(shí),由于這個(gè)虛擬系統(tǒng)是局域網(wǎng)中的一個(gè)獨(dú)立的主機(jī)系統(tǒng),那么就可以手工配置它的TCP/IP配置信息,以實(shí)現(xiàn)通過(guò)局域網(wǎng)的網(wǎng)關(guān)或路由器訪(fǎng)問(wèn)互聯(lián)網(wǎng)。在進(jìn)行嵌入式Linux開(kāi)發(fā),要目標(biāo)板通過(guò)NFS掛載虛擬機(jī)的NFS共享目錄的話(huà),必須將虛擬網(wǎng)卡配置為橋接模式。(2NAT模式使用NAT模式,就是讓虛擬系統(tǒng)借助NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換功能,通過(guò)宿主機(jī)器所在的網(wǎng)絡(luò)來(lái)訪(fǎng)問(wèn)公網(wǎng),也就是說(shuō),使用NAT模式可以實(shí)現(xiàn)在虛擬系統(tǒng)里訪(fǎng)問(wèn)互聯(lián)網(wǎng)。NA T模式下的虛擬系統(tǒng)的TCP/IP配置信息是由VMnet8(NA

52、T虛擬網(wǎng)絡(luò)的DHCP服務(wù)器提供的,虛擬機(jī)無(wú)法正常對(duì)主機(jī)所連網(wǎng)絡(luò)中的其它主機(jī)提供普通的網(wǎng)絡(luò)服務(wù),如TFTP、NFS和FTP等。采用NAT模式最大的優(yōu)勢(shì)是虛擬系統(tǒng)接入互聯(lián)網(wǎng)非常簡(jiǎn)單,用戶(hù)不需要進(jìn)行任何其它的配置,只需要宿主機(jī)器能訪(fǎng)問(wèn)互聯(lián)網(wǎng)即可。(3僅主機(jī)模式在某些特殊的網(wǎng)絡(luò)調(diào)試環(huán)境中,要求將真實(shí)環(huán)境和虛擬環(huán)境隔離開(kāi),這時(shí)用戶(hù)就可采用僅主機(jī)(Host-Only模式。在Host-Only模式中,所有的虛擬系統(tǒng)是可以相互通信的,但虛擬系統(tǒng)和真實(shí)的網(wǎng)絡(luò)是被隔離開(kāi)的。2.6 安裝UbuntuUbuntu的安裝過(guò)程,無(wú)論在硬件實(shí)體安裝還是虛擬機(jī)安裝,大致過(guò)程是相同的。以下的安裝過(guò)程都是在虛擬機(jī)中完成的,物理實(shí)體安裝也是一樣的。如果進(jìn)行物理實(shí)體安裝,需要制作啟動(dòng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論