大學(xué)課件物聯(lián)網(wǎng)與嵌入式系統(tǒng)開(kāi)發(fā)--第7章_嵌入式Linux操作系統(tǒng)的移植_第1頁(yè)
大學(xué)課件物聯(lián)網(wǎng)與嵌入式系統(tǒng)開(kāi)發(fā)--第7章_嵌入式Linux操作系統(tǒng)的移植_第2頁(yè)
大學(xué)課件物聯(lián)網(wǎng)與嵌入式系統(tǒng)開(kāi)發(fā)--第7章_嵌入式Linux操作系統(tǒng)的移植_第3頁(yè)
大學(xué)課件物聯(lián)網(wǎng)與嵌入式系統(tǒng)開(kāi)發(fā)--第7章_嵌入式Linux操作系統(tǒng)的移植_第4頁(yè)
大學(xué)課件物聯(lián)網(wǎng)與嵌入式系統(tǒng)開(kāi)發(fā)--第7章_嵌入式Linux操作系統(tǒng)的移植_第5頁(yè)
已閱讀5頁(yè),還剩51頁(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、第第7章章嵌入式嵌入式Linux操作系統(tǒng)的移植操作系統(tǒng)的移植 本章主要內(nèi)容本章主要內(nèi)容7.1 Bootloader7.2 Linux的移植的移植7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作 思考與習(xí)題思考與習(xí)題本章主要內(nèi)容本章主要內(nèi)容 本章介紹將本章介紹將Linux-Linux-移植到移植到ARMARM平臺(tái)的過(guò)平臺(tái)的過(guò)程,開(kāi)發(fā)板為廣州友善之臂公司計(jì)算機(jī)科技有限公程,開(kāi)發(fā)板為廣州友善之臂公司計(jì)算機(jī)科技有限公司的司的mini2440mini2440開(kāi)發(fā)板。這里要說(shuō)明的是,從開(kāi)發(fā)板。這里要說(shuō)明的是,從Linux-Linux-2.6.322.6.32開(kāi)始,開(kāi)始,LinuxL

2、inux內(nèi)核已經(jīng)對(duì)內(nèi)核已經(jīng)對(duì)mini2440mini2440開(kāi)發(fā)板有了開(kāi)發(fā)板有了有限的支持,因此,我們這里主要介紹移植的方法。有限的支持,因此,我們這里主要介紹移植的方法。 Linux Linux移植必然要涉及到驅(qū)動(dòng)程序的移植,而移植必然要涉及到驅(qū)動(dòng)程序的移植,而LinuxLinux驅(qū)動(dòng)程序足足可以寫(xiě)一本書(shū),所以,本章只簡(jiǎn)驅(qū)動(dòng)程序足足可以寫(xiě)一本書(shū),所以,本章只簡(jiǎn)單的介紹移植單的介紹移植LinuxLinux的流程,對(duì)于驅(qū)動(dòng)程序則不作過(guò)的流程,對(duì)于驅(qū)動(dòng)程序則不作過(guò)多介紹,讀者可以參考相關(guān)書(shū)籍進(jìn)行深入學(xué)習(xí)。多介紹,讀者可以參考相關(guān)書(shū)籍進(jìn)行深入學(xué)習(xí)。7.1 Bootloader7.1.1 Bootlo

3、ader7.1.1 Bootloader簡(jiǎn)介簡(jiǎn)介7.1.2 7.1.2 常見(jiàn)常見(jiàn)BootloaderBootloader回本章目錄回本章目錄7.1 Bootloader7.1.1 Bootloader簡(jiǎn)介簡(jiǎn)介 Bootloader Bootloader是在操作系統(tǒng)內(nèi)核運(yùn)行之前是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段程序,它類(lèi)似于運(yùn)行的一段程序,它類(lèi)似于PCPC中的中的BIOSBIOS程序。程序。通過(guò)這段程序,可以完成硬件設(shè)備的初始化,通過(guò)這段程序,可以完成硬件設(shè)備的初始化,并建立內(nèi)存空間的映射關(guān)系,從而將系統(tǒng)的并建立內(nèi)存空間的映射關(guān)系,從而將系統(tǒng)的軟軟/ /硬件環(huán)境帶到一個(gè)合適的狀態(tài),為最終加硬件環(huán)

4、境帶到一個(gè)合適的狀態(tài),為最終加載系統(tǒng)內(nèi)核做好準(zhǔn)備。載系統(tǒng)內(nèi)核做好準(zhǔn)備。 大多數(shù)大多數(shù)BootloaderBootloader都包含兩種不同的操都包含兩種不同的操作模式:作模式:(1) (1) 啟動(dòng)加載模式啟動(dòng)加載模式(2) (2) 下載模式下載模式回本節(jié)目錄回本節(jié)目錄7.1 Bootloader7.1.1 Bootloader簡(jiǎn)介(續(xù))(1) (1) 啟動(dòng)加載模式啟動(dòng)加載模式也叫做也叫做“自主自主”模式,該模式下,模式,該模式下,Bootloader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到設(shè)備上將操作系統(tǒng)加載到RAM中并啟動(dòng)中并啟動(dòng)操作系統(tǒng)運(yùn)行,整個(gè)過(guò)程沒(méi)有用戶(hù)的

5、介操作系統(tǒng)運(yùn)行,整個(gè)過(guò)程沒(méi)有用戶(hù)的介入。入。嵌入式產(chǎn)品發(fā)布時(shí)的使用該模式。嵌入式產(chǎn)品發(fā)布時(shí)的使用該模式。7.1 Bootloader7.1.1 Bootloader簡(jiǎn)介(續(xù))(2) (2) 下載模式下載模式 下載模式是目標(biāo)機(jī)上的下載模式是目標(biāo)機(jī)上的BootloaderBootloader將通過(guò)串口將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件,如下連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件,如下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被件通常首先被BootloaderBootloader保存到目標(biāo)機(jī)的保存到目標(biāo)機(jī)的RAMRAM中,中,然后

6、被然后被BootloaderBootloader寫(xiě)入到目標(biāo)機(jī)上的固態(tài)存儲(chǔ)設(shè)備寫(xiě)入到目標(biāo)機(jī)上的固態(tài)存儲(chǔ)設(shè)備中。中。BootloaderBootloader的這種模式在系統(tǒng)更新時(shí)使用。的這種模式在系統(tǒng)更新時(shí)使用。 工作于這種模式下的工作于這種模式下的BootloaderBootloader通常都會(huì)向它通常都會(huì)向它的終端用戶(hù)提供一個(gè)簡(jiǎn)單的命令行接口。的終端用戶(hù)提供一個(gè)簡(jiǎn)單的命令行接口。7.1 Bootloader7.1.1 Bootloader簡(jiǎn)介(續(xù))BootloaderBootloader的啟動(dòng)流程一般分為兩個(gè)階的啟動(dòng)流程一般分為兩個(gè)階段:段:stage1stage1和和stage2stage2

7、。stage1stage1的代碼一般用匯編語(yǔ)言編寫(xiě)的代碼一般用匯編語(yǔ)言編寫(xiě)stage2stage2的代碼一般用的代碼一般用C C語(yǔ)言編寫(xiě)。語(yǔ)言編寫(xiě)。7.1 Bootloader7.1.1 Bootloader簡(jiǎn)介(續(xù))(1 1)stage1stage1階段主要完成以下工作階段主要完成以下工作 基本的硬件初始化,包括屏蔽所有的中斷、設(shè)置基本的硬件初始化,包括屏蔽所有的中斷、設(shè)置CPUCPU的速的速度和時(shí)鐘頻率、度和時(shí)鐘頻率、RAMRAM初始化、外圍設(shè)備初始化、關(guān)閉初始化、外圍設(shè)備初始化、關(guān)閉CPUCPU內(nèi)部指令和數(shù)據(jù)內(nèi)部指令和數(shù)據(jù)CacheCache等。等。 為加載為加載stage2stage2

8、準(zhǔn)備準(zhǔn)備RAMRAM空間,通常為了獲得更快的執(zhí)行速空間,通常為了獲得更快的執(zhí)行速度,通常把度,通常把stage2stage2加載到加載到RAMRAM空間中來(lái)執(zhí)行,因此必空間中來(lái)執(zhí)行,因此必須為加載須為加載BootloaderBootloader的的stage2stage2準(zhǔn)備好一段可用的準(zhǔn)備好一段可用的RAMRAM空間??臻g。 復(fù)制復(fù)制stage2stage2的代碼到的代碼到RAMRAM中,在這里要確定兩點(diǎn):中,在這里要確定兩點(diǎn):1 1、stage2stage2的可執(zhí)行映像在固態(tài)存儲(chǔ)設(shè)備的存放起的可執(zhí)行映像在固態(tài)存儲(chǔ)設(shè)備的存放起始地址和終止地址;始地址和終止地址;2 2、RAMRAM空間的起始

9、地址??臻g的起始地址。 設(shè)置堆棧指針設(shè)置堆棧指針SPSP,為執(zhí)行,為執(zhí)行stage2stage2的的C C語(yǔ)言代碼做好準(zhǔn)備。語(yǔ)言代碼做好準(zhǔn)備。7.1 Bootloader7.1.1 Bootloader簡(jiǎn)介(續(xù))(2 2)stage2stage2主要完成以下工作主要完成以下工作 用匯編語(yǔ)言跳轉(zhuǎn)到用匯編語(yǔ)言跳轉(zhuǎn)到stage2stage2的入口函數(shù)。的入口函數(shù)。 初始化本階段要使用到的硬件設(shè)備,包括初始初始化本階段要使用到的硬件設(shè)備,包括初始化串口、初始化定時(shí)器等。化串口、初始化定時(shí)器等。 檢測(cè)系統(tǒng)的內(nèi)存映射,所謂內(nèi)存映射就是指在檢測(cè)系統(tǒng)的內(nèi)存映射,所謂內(nèi)存映射就是指在整個(gè)物理地址空間中指出哪些地

10、址范圍被分整個(gè)物理地址空間中指出哪些地址范圍被分配用來(lái)尋址系統(tǒng)的內(nèi)存。配用來(lái)尋址系統(tǒng)的內(nèi)存。 加載內(nèi)核映像和根文件系統(tǒng)映像,這里包括規(guī)加載內(nèi)核映像和根文件系統(tǒng)映像,這里包括規(guī)劃內(nèi)存占用的布局和從劃內(nèi)存占用的布局和從FlashFlash上復(fù)制數(shù)據(jù)。上復(fù)制數(shù)據(jù)。 設(shè)置內(nèi)核的啟動(dòng)參數(shù)并啟動(dòng)內(nèi)核。設(shè)置內(nèi)核的啟動(dòng)參數(shù)并啟動(dòng)內(nèi)核。7.1 Bootloader7.1.2 常見(jiàn)常見(jiàn)Bootloader1 1)RedbootRedboot Redboot Redboot是是RedhatRedhat公司隨公司隨eCoseCos發(fā)布的一個(gè)發(fā)布的一個(gè)BOOTBOOT方案,是一個(gè)開(kāi)源項(xiàng)目。方案,是一個(gè)開(kāi)源項(xiàng)目。Redb

11、ootRedboot支持的處理器構(gòu)支持的處理器構(gòu)架有架有ARMARM、MIPSMIPS、MN10300MN10300、PowerPCPowerPC、Renesas SHxRenesas SHx、v850v850、x86x86等。等。 Redboot Redboot的特性有:的特性有: 支持支持eCoseCos、LinuxLinux操作系統(tǒng)引導(dǎo);操作系統(tǒng)引導(dǎo); 在線讀寫(xiě)在線讀寫(xiě)FlashFlash; 支持串行口支持串行口kermitkermit,S-recordS-record下載代碼;下載代碼; 監(jiān)控(監(jiān)控(MonitorMonitor)命令集,包括讀寫(xiě))命令集,包括讀寫(xiě)I/OI/O,內(nèi),內(nèi)存

12、,寄存器、內(nèi)存、外設(shè)測(cè)試功能等。存,寄存器、內(nèi)存、外設(shè)測(cè)試功能等。回本節(jié)目錄回本節(jié)目錄7.1 Bootloader7.1.2 常見(jiàn)Bootloader(續(xù))2 2)UBootUBoot UBoot UBoot(Universal BootloaderUniversal Bootloader)是由開(kāi)源項(xiàng))是由開(kāi)源項(xiàng)目目PPCBootPPCBoot發(fā)展起來(lái)的,它是在發(fā)展起來(lái)的,它是在GPLGPL下資源代碼最完下資源代碼最完整的一個(gè)通用整的一個(gè)通用BootloaderBootloader。目前。目前UBootUBoot差不多以每差不多以每隔隔3 3個(gè)月發(fā)布一次。個(gè)月發(fā)布一次。UBootUBoot的官

13、網(wǎng)是的官網(wǎng)是http:/www.denx.de/wiki/U-Boothttp:/www.denx.de/wiki/U-Boot。 UBoot UBoot支持的處理器構(gòu)架包括支持的處理器構(gòu)架包括PowerPCPowerPC、ARMARM、MIPSMIPS、x86x86等,等,UBootUBoot提供兩種操作模式:?jiǎn)?dòng)加載提供兩種操作模式:?jiǎn)?dòng)加載模式和下載模式,并具有大型模式和下載模式,并具有大型Boot LoaderBoot Loader的全部的全部功能。功能。7.1 Bootloader7.1.2 常見(jiàn)Bootloader(續(xù))2 2)UBootUBoot UBoot UBoot的主要特性

14、有:的主要特性有: SCC/FEC SCC/FEC以太網(wǎng)支持;以太網(wǎng)支持; BOOTP/TFTP BOOTP/TFTP引導(dǎo);引導(dǎo); IP IP、MACMAC預(yù)置;預(yù)置; 在線讀寫(xiě)在線讀寫(xiě)FlashFlash、IDEIDE、IICIIC、EEROMEEROM、RTCRTC等;等; 支持串行口支持串行口kermitkermit,S-recordS-record下載代碼;下載代碼; 支持多種操作系統(tǒng)的引導(dǎo);支持多種操作系統(tǒng)的引導(dǎo); 監(jiān)控命令集,讀寫(xiě)監(jiān)控命令集,讀寫(xiě)I/OI/O,內(nèi)存、寄存器、內(nèi)存、,內(nèi)存、寄存器、內(nèi)存、外設(shè)測(cè)試功能等;外設(shè)測(cè)試功能等; 腳本語(yǔ)言支持(類(lèi)似腳本語(yǔ)言支持(類(lèi)似BASHBA

15、SH腳本);腳本); 支持支持WatchdogWatchdog、LCD logoLCD logo,狀態(tài)指示功能等。,狀態(tài)指示功能等。7.1 Bootloader7.1.2 常見(jiàn)Bootloader(續(xù))3 3)vivivivi vivi vivi是當(dāng)前比較流行的專(zhuān)為是當(dāng)前比較流行的專(zhuān)為ARM9ARM9處理器而設(shè)計(jì)處理器而設(shè)計(jì)的一款的一款BootloaderBootloader,它操作簡(jiǎn)便,同時(shí)提供了完備,它操作簡(jiǎn)便,同時(shí)提供了完備的命令體系。的命令體系。vivivivi是由韓國(guó)是由韓國(guó)MiziMizi公司開(kāi)發(fā)的一種公司開(kāi)發(fā)的一種BootloaderBootloader,適合于,適合于ARM9A

16、RM9處理器,支持處理器,支持S3C2410 xS3C2410 x處處理器,其源代碼可以在理器,其源代碼可以在http:/http:/網(wǎng)站網(wǎng)站下載。下載。 一個(gè)功能完備的大型一個(gè)功能完備的大型BootloaderBootloader的工作量,相的工作量,相當(dāng)于一個(gè)小型的操作系統(tǒng)。由于當(dāng)于一個(gè)小型的操作系統(tǒng)。由于BootloaderBootloader的移植的移植比較復(fù)雜,這里就不能詳述了,讀者可以查閱其他比較復(fù)雜,這里就不能詳述了,讀者可以查閱其他資料。資料。7.2 Linux的移植的移植7.2.1 7.2.1 安裝前的準(zhǔn)備工作安裝前的準(zhǔn)備工作7.2.2 Linux7.2.2 Linux的移植

17、步驟的移植步驟回本章目錄回本章目錄7.2 Linux的移植的移植7.2.1 安裝前的準(zhǔn)備工作安裝前的準(zhǔn)備工作1 1)熟悉硬件)熟悉硬件 由于由于LinuxLinux最終要操作硬件,而嵌入式系統(tǒng)的最終要操作硬件,而嵌入式系統(tǒng)的一個(gè)特點(diǎn)就是硬件可定制,不同的產(chǎn)品其硬件電路一個(gè)特點(diǎn)就是硬件可定制,不同的產(chǎn)品其硬件電路有可能很大的不同,比如有可能很大的不同,比如IICIIC芯片以及地址、網(wǎng)絡(luò)芯片以及地址、網(wǎng)絡(luò)芯片等,所以,在移植前一定要對(duì)要移植的平臺(tái)有芯片等,所以,在移植前一定要對(duì)要移植的平臺(tái)有深入的理解。深入的理解。 對(duì)于對(duì)于mini2440mini2440開(kāi)發(fā)板,有幾個(gè)關(guān)鍵要了解的內(nèi)開(kāi)發(fā)板,有幾個(gè)

18、關(guān)鍵要了解的內(nèi)容,如下。容,如下。 mini2440 mini2440開(kāi)發(fā)板的晶振為開(kāi)發(fā)板的晶振為12000000Hz12000000Hz?;乇竟?jié)目錄回本節(jié)目錄7.2 Linux的移植的移植7.2.1 安裝前的準(zhǔn)備工作(續(xù))1 1)熟悉硬件)熟悉硬件 mini2440 mini2440的的BootloaderBootloader對(duì)對(duì)NAND FlashNAND Flash的分區(qū)如下。的分區(qū)如下。分區(qū)名稱(chēng)分區(qū)名稱(chēng)起始地址起始地址分區(qū)大小分區(qū)大小vivi0 x000000000 x00040000param0 x000400000 x00020000kernel0 x000600000 x0050

19、0000root0 x005600000 x3fa80000 IIC。mini2440具有一個(gè)直接連接具有一個(gè)直接連接CPU的的IIC信號(hào)引腳信號(hào)引腳的的EEPROM 芯片芯片AT24C08,它的容量為,它的容量為1024B,器件地址,器件地址為為A0。 DM9000。mini2440采用了采用了DM9000網(wǎng)卡芯片,它可網(wǎng)卡芯片,它可以自適應(yīng)以自適應(yīng) 10/100Mbit/s網(wǎng)絡(luò)。網(wǎng)絡(luò)。MAC地址需要通過(guò)軟件設(shè)定。地址需要通過(guò)軟件設(shè)定。7.2 Linux的移植的移植7.2.1 安裝前的準(zhǔn)備工作(續(xù))1 1)熟悉硬件)熟悉硬件 UDA134x UDA134x。mini2440mini2440分

20、別使用分別使用CPUCPU的的GPB2GPB2、GPB3GPB3、GPB4GPB4端口模擬實(shí)現(xiàn)端口模擬實(shí)現(xiàn)L3-BusL3-Bus規(guī)范的規(guī)范的L3MODEL3MODE、L3DATAL3DATA、L3CLOCKL3CLOCK。 以上內(nèi)容在以上內(nèi)容在mini2440mini2440的平臺(tái)設(shè)備文件的平臺(tái)設(shè)備文件(arch/arm/mach-s3c2440/mach-mini2440.carch/arm/mach-s3c2440/mach-mini2440.c)中,讀者可)中,讀者可以查看該文件以了解詳細(xì)內(nèi)容。以查看該文件以了解詳細(xì)內(nèi)容。7.2 Linux的移植的移植7.2.1 安裝前的準(zhǔn)備工作(續(xù))

21、2 2)獲取內(nèi)核源代碼)獲取內(nèi)核源代碼 Linux Linux版本很多,而且更新很快。我們這里選擇版本很多,而且更新很快。我們這里選擇Linux-Linux-作為我們移植的對(duì)象。作為我們移植的對(duì)象。 Linux Linux內(nèi)核的官網(wǎng)地址為內(nèi)核的官網(wǎng)地址為//,該,該網(wǎng)站列出了最近更新的幾個(gè)穩(wěn)定版。讀者要下載歷史版本,網(wǎng)站列出了最近更新的幾個(gè)穩(wěn)定版。讀者要下載歷史版本,可以從可以從/pub/linux/kernel/ftp:/ftp.kernel.

22、org/pub/linux/kernel/下載。下載。7.2 Linux的移植的移植7.2.1 安裝前的準(zhǔn)備工作(續(xù))3 3)檢測(cè)移植環(huán)境)檢測(cè)移植環(huán)境 桌面桌面LinuxLinux發(fā)行版:這里選擇發(fā)行版:這里選擇fedora 14fedora 14。 make make程序:要編譯程序:要編譯LinuxLinux沒(méi)有沒(méi)有makemake程序是不行的,用戶(hù)可程序是不行的,用戶(hù)可以使用以使用make -vmake -v命令來(lái)查看命令來(lái)查看makemake是否存在以及其版本號(hào)。是否存在以及其版本號(hào)。 交叉編譯器:交叉編譯器的安裝在交叉編譯器:交叉編譯器的安裝在6.26.2節(jié)已經(jīng)介紹過(guò),這節(jié)已經(jīng)介紹

23、過(guò),這里不再重復(fù)。里不再重復(fù)。 必要的庫(kù):這里必要的庫(kù)很難一一列出,如果出現(xiàn)了必要的庫(kù):這里必要的庫(kù)很難一一列出,如果出現(xiàn)了LinuxLinux需要而系統(tǒng)中不存在的庫(kù),需要而系統(tǒng)中不存在的庫(kù),LinuxLinux會(huì)有提示,會(huì)有提示,fedorafedora用用戶(hù)可以使用戶(hù)可以使用yumyum命令來(lái)下載并安裝所需的庫(kù)。命令來(lái)下載并安裝所需的庫(kù)。7.2 Linux的移植的移植7.2.1 安裝前的準(zhǔn)備工作(續(xù))4 4)下載)下載YAFFS2YAFFS2 YAFFS/YAFFS2 YAFFS/YAFFS2文件系統(tǒng)是專(zhuān)門(mén)針對(duì)文件系統(tǒng)是專(zhuān)門(mén)針對(duì)NAND FlashNAND Flash設(shè)計(jì),其具有可寫(xiě)入、修

24、改并能永久保存文件的特設(shè)計(jì),其具有可寫(xiě)入、修改并能永久保存文件的特性,并提供了損耗平衡和掉電保護(hù)。性,并提供了損耗平衡和掉電保護(hù)。 在在LinuxLinux下,使用命令下,使用命令 git clone git:/www.aleph1.co.uk/yaffs2 git clone git:/www.aleph1.co.uk/yaffs2來(lái)下載來(lái)下載YAFFS2YAFFS2的源代碼。的源代碼。YAFFSYAFFS的官網(wǎng)地址為的官網(wǎng)地址為http:/ Linux的移植的移植7.2.1 安裝前的準(zhǔn)備工作(續(xù))4 4)下載)下載YAFFS2YAFFS2csufedora Documents$ git c

25、lone git:/www.aleph1.co.uk/yaffs2csufedora Documents$ git clone git:/www.aleph1.co.uk/yaffs2Cloning into yaffs2.Cloning into yaffs2.remote: Counting objects: 6930, doneremote: Counting objects: 6930, doneremote: Compressing objects: 100% remote: Compressing objects: 100% (4153/41534153/4153), done,

26、doneremote: Total 6930 remote: Total 6930 (delta 5484delta 5484), reused 3476 , reused 3476 (delta 2700delta 2700)Receiving Objects: 100% Receiving Objects: 100% (6930/69306930/6930), 3.42MiB | 17 Kibit/s, done., 3.42MiB | 17 Kibit/s, done.Receiving deltas: 100% Receiving deltas: 100% (5484/54845484

27、/5484), done, done7.2 Linux的移植的移植7.2.2 Linux的移植步驟的移植步驟 這里假設(shè)讀者下載的是這里假設(shè)讀者下載的是linux-.tar.bz2linux-.tar.bz2,并,并放到放到csucsu用戶(hù)的用戶(hù)的DocumentDocument目錄下。目錄下。1 1)解壓)解壓LinuxLinux內(nèi)核并為內(nèi)核打上內(nèi)核并為內(nèi)核打上YAFFS2YAFFS2補(bǔ)丁補(bǔ)丁csufedora Documents$ lscsufedora Documents$ lslinux-.tar.bz2 yaffs2linux-2.6.3

28、8.7.tar.bz2 yaffs2csufedora Documents$ tar xjf linux-.tar.bz2csufedora Documents$ tar xjf linux-.tar.bz2csufedora Documents$ cd yaffs2/csufedora Documents$ cd yaffs2/csufedora yaffs2$ ./patch-ker.sh c m ./linux-csufedora yaffs2$ ./patch-ker.sh c m ./linux-Updating ./l

29、inux-/fs/KconfigUpdating ./linux-/fs/KconfigUpdating ./linux-/fs/MakefileUpdating ./linux-/fs/Makefilecsufedora yaffs2$ cd ./linux-csufedora yaffs2$ cd ./linux-回本節(jié)目錄回本節(jié)目錄7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))2 2)建立自己的平臺(tái)文件)建立自己的平臺(tái)文件 在在LinuxLinux內(nèi)核中,每個(gè)支持的開(kāi)發(fā)板

30、都有一個(gè)內(nèi)核中,每個(gè)支持的開(kāi)發(fā)板都有一個(gè)平臺(tái)文件,平臺(tái)文件,LinuxLinux自帶的自帶的mini2440mini2440開(kāi)發(fā)板的平臺(tái)文開(kāi)發(fā)板的平臺(tái)文件為件為“arch/arm/mach-s3c2440/mach-“arch/arm/mach-s3c2440/mach-mini2440.c”mini2440.c”。我們這里就使用內(nèi)核自帶的平臺(tái)設(shè)。我們這里就使用內(nèi)核自帶的平臺(tái)設(shè)備文件,讀者可以自己查看該文件以學(xué)習(xí)平臺(tái)設(shè)備備文件,讀者可以自己查看該文件以學(xué)習(xí)平臺(tái)設(shè)備文件的寫(xiě)法。文件的寫(xiě)法。 如果使用內(nèi)核不支持的平臺(tái)移植,或如果使用內(nèi)核不支持的平臺(tái)移植,或?yàn)閮?nèi)核添為內(nèi)核添加一個(gè)新平臺(tái)時(shí),加一個(gè)新平

31、臺(tái)時(shí),需要自己創(chuàng)建一個(gè)新的平臺(tái)設(shè)備需要自己創(chuàng)建一個(gè)新的平臺(tái)設(shè)備文件,并需要修改平臺(tái)設(shè)備文件下的文件,并需要修改平臺(tái)設(shè)備文件下的MakefileMakefile文件文件和和KconfigKconfig文件,其中文件,其中MakefileMakefile文件負(fù)責(zé)編譯,文件負(fù)責(zé)編譯,KconfigKconfig文件用于配置。文件用于配置。7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))3 3)修改驅(qū)動(dòng)程序)修改驅(qū)動(dòng)程序 驅(qū)動(dòng)程序要根據(jù)實(shí)際情況進(jìn)行修改,對(duì)于驅(qū)動(dòng)程序要根據(jù)實(shí)際情況進(jìn)行修改,對(duì)于mini2440mini2440,這里有三個(gè)關(guān)鍵的地方需要修改,其他,這里有三個(gè)關(guān)鍵的地方

32、需要修改,其他需要修改的內(nèi)容這里就不再一一列舉。需要修改的內(nèi)容這里就不再一一列舉。 (1 1)UDA134xUDA134x驅(qū)動(dòng)驅(qū)動(dòng)mini2440mini2440的聲卡驅(qū)動(dòng)的聲卡驅(qū)動(dòng) (2 2)DM9000DM9000驅(qū)動(dòng)驅(qū)動(dòng)mini2400mini2400的網(wǎng)卡驅(qū)動(dòng)的網(wǎng)卡驅(qū)動(dòng) (3 3)為)為DM9000DM9000指定指定MACMAC地址地址mini2440mini2440所用的所用的DM9000DM9000網(wǎng)卡并沒(méi)有外接網(wǎng)卡并沒(méi)有外接EEPROMEEPROM用以存儲(chǔ)用以存儲(chǔ)MACMAC地址,即地址,即MACMAC地址需要通地址需要通過(guò)軟件進(jìn)行修改過(guò)軟件進(jìn)行修改7.2 Linux的移植的移

33、植7.2.2 Linux的移植步驟(續(xù))3 3)修改驅(qū)動(dòng)程序)修改驅(qū)動(dòng)程序(1 1)UDA134xUDA134x驅(qū)動(dòng)驅(qū)動(dòng)static int uda134x_startupstatic int uda134x_startup(struct snd_pcm_substream struct snd_pcm_substream * *substream,substream,) else else uda134x-master_substream = substream; uda134x-master_substream = substream;#if defined#if defined( CON

34、FIG_MACH_MINI2440 CONFIG_MACH_MINI2440 ) /* 把錄音通道改為把錄音通道改為 VIN2 */uda134x_writeuda134x_write(codec, 2, 2 |codec, 2, 2 |(5U25U2); ;#endif#endifreturn 0;return 0; 7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))3 3)修改驅(qū)動(dòng)程序)修改驅(qū)動(dòng)程序(2 2)DM9000DM9000驅(qū)動(dòng)驅(qū)動(dòng)static int _init dm9000_initstatic int _init dm9000_init(voidvoid)

35、#if defined#if defined(CONFIG_MACH_MINI2440CONFIG_MACH_MINI2440)#include #include unsigned int oldval_bwscon = unsigned int oldval_bwscon = * *(volatile unsigned int volatile unsigned int * *)S3C2410_BWSCON;S3C2410_BWSCON;* *(volatile unsigned int volatile unsigned int * *)S3C2410_BWSCONS3C2410_BWSC

36、ON) = = ( oldval_bwscon & oldval_bwscon & (3163dev_addrndev-dev_addr) / /* * try reading from mac try reading from mac * */ /mac_src = chip;mac_src = chip;for for (i = 0; i 6; i+i = 0; i dev_addri = iorndev-dev_addri = ior(db, i+DM9000_PARdb, i+DM9000_PAR); ; #if defined#if defined(CONFIG_MA

37、CH_MINI2440CONFIG_MACH_MINI2440)/ /* * 指定指定MAC MAC 地址為地址為 08:90:90:90:90:90 08:90:90:90:90:90 * */ /memcpymemcpy(ndev-dev_addr, x08x90 x90 x90 x90 x90, 6ndev-dev_addr, x08x90 x90 x90 x90 x90, 6); ;#endif#endif 7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))4 4)配置內(nèi)核)配置內(nèi)核cd /home/csu/fedoracd /home/csu/fedoramake

38、ARCH=arm menuconfigmake ARCH=arm menuconfig7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))4 4)配置內(nèi)核)配置內(nèi)核 內(nèi)核可以配置的選項(xiàng)有兩種:內(nèi)核可以配置的選項(xiàng)有兩種: 一種是使用用方括號(hào)的選項(xiàng),這種選項(xiàng)可以選一種是使用用方括號(hào)的選項(xiàng),這種選項(xiàng)可以選擇編譯進(jìn)內(nèi)核(擇編譯進(jìn)內(nèi)核( * * )或者不編譯()或者不編譯( );); 另一種選項(xiàng)使用的是尖括號(hào),這種選項(xiàng)可以選另一種選項(xiàng)使用的是尖括號(hào),這種選項(xiàng)可以選擇編譯進(jìn)內(nèi)核(擇編譯進(jìn)內(nèi)核( )、編譯成模塊()、編譯成模塊()或)或者不編譯(者不編譯()。)。 按空格鍵可以在這幾個(gè)選項(xiàng)間

39、切換,按按空格鍵可以在這幾個(gè)選項(xiàng)間切換,按Y Y鍵選鍵選擇編譯進(jìn)內(nèi)核,按擇編譯進(jìn)內(nèi)核,按M M鍵選擇編譯成模塊,按鍵選擇編譯成模塊,按N N鍵選擇鍵選擇不編譯。不編譯。7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))4 4)配置內(nèi)核)配置內(nèi)核 除了使用除了使用menuconfigmenuconfig,還可以使用,還可以使用xconfigxconfig或或gconfiggconfig來(lái)使用圖形界面進(jìn)行配置。來(lái)使用圖形界面進(jìn)行配置。 內(nèi)核的配置根據(jù)實(shí)際情況進(jìn)行選擇,這里只列內(nèi)核的配置根據(jù)實(shí)際情況進(jìn)行選擇,這里只列出幾個(gè)關(guān)鍵的選項(xiàng),其他選項(xiàng)讀者可以自己查找相出幾個(gè)關(guān)鍵的選項(xiàng),其他

40、選項(xiàng)讀者可以自己查找相關(guān)資料。關(guān)資料。(1 1)系統(tǒng)類(lèi)型)系統(tǒng)類(lèi)型(2 2)內(nèi)核特性)內(nèi)核特性(3 3)設(shè)備驅(qū)動(dòng))設(shè)備驅(qū)動(dòng)(4 4)文件系統(tǒng))文件系統(tǒng)7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))4 4)配置內(nèi)核)配置內(nèi)核(1 1)系統(tǒng)類(lèi)型)系統(tǒng)類(lèi)型系統(tǒng)類(lèi)型決定要將系統(tǒng)類(lèi)型決定要將Linux移植到哪個(gè)平臺(tái)移植到哪個(gè)平臺(tái)7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))4 4)配置內(nèi)核)配置內(nèi)核(2 2)內(nèi)核特性)內(nèi)核特性?xún)?nèi)核特性決定內(nèi)核特性決定Linux內(nèi)核的一些基本特性?xún)?nèi)核的一些基本特性7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù)

41、)4 4)配置內(nèi)核)配置內(nèi)核(2 2)內(nèi)核特性)內(nèi)核特性 這里要注意兩點(diǎn):這里要注意兩點(diǎn): 一是使能一是使能Use the ARM EABI to compile the kernel后,要在圖后,要在圖7-3的的Floating point emulation中選擇至少一項(xiàng),一般就選中選擇至少一項(xiàng),一般就選NWFPE math emulation; 二是從二是從Linux- 2.6.36開(kāi)始,參數(shù)的傳遞方式有所開(kāi)始,參數(shù)的傳遞方式有所改變,改變,mini2440的的Bootloader仍然使用的是舊方仍然使用的是舊方式,所以這里要選擇式,所以這里要選擇Provide old way to p

42、ass kernel parameters,以允許舊的參數(shù)傳遞方式。,以允許舊的參數(shù)傳遞方式。7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))4 4)配置內(nèi)核)配置內(nèi)核(3 3)設(shè)備驅(qū)動(dòng))設(shè)備驅(qū)動(dòng) Linux提供的設(shè)備驅(qū)動(dòng)很多,要根據(jù)實(shí)際情況進(jìn)提供的設(shè)備驅(qū)動(dòng)很多,要根據(jù)實(shí)際情況進(jìn)行選擇,這里就不再一一列舉了。行選擇,這里就不再一一列舉了。7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))4 4)配置內(nèi)核)配置內(nèi)核(4 4)文件系統(tǒng))文件系統(tǒng) 決定決定LinuxLinux支持的文件系統(tǒng),這里選擇支持的文件系統(tǒng),這里選擇yaffs2yaffs2,一般,一般FA

43、TFAT格式要選擇,格式要選擇,這樣就可以讀取這樣就可以讀取SDSD卡上的文件,卡上的文件,NFSNFS文件系統(tǒng)在調(diào)試文件系統(tǒng)時(shí)很有用。文件系統(tǒng)在調(diào)試文件系統(tǒng)時(shí)很有用。7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))5 5)編譯內(nèi)核)編譯內(nèi)核 使用如下命令編譯內(nèi)核:使用如下命令編譯內(nèi)核:make ARCH=arm CROSS_COMPILE=arm-linux- -j2 zImagemake ARCH=arm CROSS_COMPILE=arm-linux- -j2 zImage 其中,其中,CROSS_COMPILECROSS_COMPILE指定了交叉編譯器的前綴,指定了

44、交叉編譯器的前綴,zImagezImage是最終的目標(biāo),是壓縮版的內(nèi)核,是最終的目標(biāo),是壓縮版的內(nèi)核,-j2-j2表示使用兩個(gè)表示使用兩個(gè)編譯線程,可以加快編譯速度。編譯線程,可以加快編譯速度。 編譯好的編譯好的zImagezImage文件保存在文件保存在arch/arm/bootarch/arm/boot目錄下。目錄下。7.2 Linux的移植的移植7.2.2 Linux的移植步驟(續(xù))6 6)編譯內(nèi)核模塊)編譯內(nèi)核模塊 使用如下命令編譯內(nèi)核模塊:使用如下命令編譯內(nèi)核模塊:make ARCH=arm CROSS_COMPILE=arm-linux- modulesmake ARCH=arm

45、CROSS_COMPILE=arm-linux- modules7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作 只有內(nèi)核而沒(méi)有文件系統(tǒng)是工作不只有內(nèi)核而沒(méi)有文件系統(tǒng)是工作不起來(lái)的,根文件系統(tǒng)是內(nèi)核啟動(dòng)時(shí)使用起來(lái)的,根文件系統(tǒng)是內(nèi)核啟動(dòng)時(shí)使用的第一個(gè)文件系統(tǒng),根文件系統(tǒng)由一系的第一個(gè)文件系統(tǒng),根文件系統(tǒng)由一系列目錄組成,目錄中包含了應(yīng)用程序、列目錄組成,目錄中包含了應(yīng)用程序、C C語(yǔ)言庫(kù)以及相關(guān)的配置文件。語(yǔ)言庫(kù)以及相關(guān)的配置文件。回本章目錄回本章目錄7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作 Busybox Busybox是一個(gè)集成了一百多個(gè)最常是一個(gè)集成了一百多個(gè)最常用用LinuxLinux命令和工

46、具的軟件,它甚至還集命令和工具的軟件,它甚至還集成了一個(gè)成了一個(gè)httphttp服務(wù)器和一個(gè)服務(wù)器和一個(gè)telnettelnet服務(wù)服務(wù)器,而所有這一切功能卻只有區(qū)區(qū)器,而所有這一切功能卻只有區(qū)區(qū)1MB1MB左左右的大小。右的大小。BusyboxBusybox把常用的工具和命令把常用的工具和命令集成壓縮在一個(gè)可執(zhí)行文件里,功能基集成壓縮在一個(gè)可執(zhí)行文件里,功能基本不變,而大小卻小了很多,在嵌入式本不變,而大小卻小了很多,在嵌入式LinuxLinux中有非常廣的應(yīng)用。中有非常廣的應(yīng)用。7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作 Busybox Busybox基于這樣一個(gè)事實(shí):很多標(biāo)準(zhǔn)基于這樣一個(gè)事

47、實(shí):很多標(biāo)準(zhǔn)LinuxLinux工具都可以共享很多共同的元素。例如,工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如很多基于文件的工具(比如grepgrep和和findfind)都)都需要在目錄中搜索文件的代碼。當(dāng)這些工具需要在目錄中搜索文件的代碼。當(dāng)這些工具被合并到一個(gè)可執(zhí)行程序中時(shí),它們就可以被合并到一個(gè)可執(zhí)行程序中時(shí),它們就可以共享這些相同的元素,這樣可以產(chǎn)生更小的共享這些相同的元素,這樣可以產(chǎn)生更小的可執(zhí)行程序。實(shí)際上,可執(zhí)行程序。實(shí)際上,BusyboxBusybox可以將大約可以將大約3.5MB3.5MB的工具包裝成大約的工具包裝成大約200KB200KB大小。這就為大小

48、。這就為可引導(dǎo)的磁盤(pán)和使用可引導(dǎo)的磁盤(pán)和使用LinuxLinux的嵌入式設(shè)備提供的嵌入式設(shè)備提供了更多功能。了更多功能。7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作 根文件系統(tǒng)的制作流程如下所述。根文件系統(tǒng)的制作流程如下所述。1 1)下載)下載BusyboxBusybox Busybox Busybox的官網(wǎng)是的官網(wǎng)是,用,用戶(hù)可到戶(hù)可到http:/ http:/ 網(wǎng)站下載。網(wǎng)站下載。BusyboxBusybox也有多個(gè)版本,用戶(hù)可以也有多個(gè)版本,用戶(hù)可以選擇合適的版本下載。這里以最新的選擇合適的版本下載。這里以最新的Busybox-1.19.4Busybox-1.19.4為例來(lái)說(shuō)明。為例來(lái)說(shuō)明。

49、7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作2 2)建立根文件系統(tǒng)目錄)建立根文件系統(tǒng)目錄 用戶(hù)可以使用如下命令來(lái)建立所有必須用戶(hù)可以使用如下命令來(lái)建立所有必須的文件。的文件。csufedora $ mkdir rootfscsufedora $ mkdir rootfscsufedora $ cd rootfs/csufedora $ cd rootfs/csufedora rootfs$ mkdir bin dev etc home csufedora rootfs$ mkdir bin dev etc home lib mnt opt proc root sbin tmp usr varli

50、b mnt opt proc root sbin tmp usr varcsufedora rootfs$ mkdir usr/bin usr/lib csufedora rootfs$ mkdir usr/bin usr/lib usr/sbin lib/modulesusr/sbin lib/modules7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作3 3)創(chuàng)建必要的設(shè)備文件)創(chuàng)建必要的設(shè)備文件 用戶(hù)需要使用如下命令來(lái)建立用戶(hù)需要使用如下命令來(lái)建立consoleconsole和和nullnull兩個(gè)設(shè)備文件。兩個(gè)設(shè)備文件。csufedora rootfs$ cd devcsufedora ro

51、otfs$ cd devcsufedora dev$ mknod -m 666 console c 5 1csufedora dev$ mknod -m 666 console c 5 1csufedora dev$ mknod -m 666 null c 1 3csufedora dev$ mknod -m 666 null c 1 37.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作4 4)配置)配置BusyboxBusybox 依次執(zhí)行如下命令來(lái)開(kāi)始配置依次執(zhí)行如下命令來(lái)開(kāi)始配置BusyboxBusybox:csufedora $ tar xjf busybox-1.19.4.tar.bz2csu

52、fedora $ tar xjf busybox-1.19.4.tar.bz2csufedora $ cd busybox-1.19.4csufedora $ cd busybox-1.19.4csufedora busybox-1.19.4$ make menuconfigcsufedora busybox-1.19.4$ make menuconfig7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作4 4)配置)配置BusyboxBusybox Busybox Busybox的配置這里不再詳細(xì)說(shuō)明,只說(shuō)明三點(diǎn)。的配置這里不再詳細(xì)說(shuō)明,只說(shuō)明三點(diǎn)。(1 1)為了避免出錯(cuò),需要選擇)為了避免出錯(cuò),需要

53、選擇“Dont use /usr”“Dont use /usr”。Busybox Settings -Busybox Settings -General Configuration -General Configuration - * * Dont use /usr Dont use /usr(2 2)這里將)這里將BusyboxBusybox編譯為動(dòng)態(tài)鏈接,并制定交叉編譯器前綴。編譯為動(dòng)態(tài)鏈接,并制定交叉編譯器前綴。Build Options -Build Options - Build BusyBox as a static binary Build BusyBox as a static

54、 binary (arm-linux-arm-linux-) Cross Compiler prefix Cross Compiler prefix(3 3)指定將)指定將BusyboxBusybox安裝的位置,即上面的安裝的位置,即上面的rootfsrootfs文件夾。文件夾。 Installation Options Installation Options (make install behaviormake install behavior) - -What kind of applet links to install What kind of applet links to ins

55、tall (as soft-linksas soft-links) - -(/home/csu/rootfs/home/csu/rootfs) BusyBox installation prefix BusyBox installation prefix7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作5 5)編譯并安裝)編譯并安裝BusyboxBusybox 使用命令使用命令makemake來(lái)編譯來(lái)編譯BusyboxBusybox,使用命令,使用命令make make installinstall命令將命令將BusyboxBusybox安裝到配置時(shí)指定的目錄。安裝到配置時(shí)指定的目錄。6 6)安裝必要的

56、庫(kù))安裝必要的庫(kù) 由于這里使用了動(dòng)態(tài)鏈接,所以需要將使用到的由于這里使用了動(dòng)態(tài)鏈接,所以需要將使用到的庫(kù)復(fù)制到庫(kù)復(fù)制到rootfs/lib目錄下。讀者可以使用目錄下。讀者可以使用arm-linux-readelf -d命令來(lái)查看需要的庫(kù)。這里為了方命令來(lái)查看需要的庫(kù)。這里為了方便,將交叉編譯器中所有的庫(kù)復(fù)制過(guò)來(lái),因?yàn)榧词贡?,將交叉編譯器中所有的庫(kù)復(fù)制過(guò)來(lái),因?yàn)榧词笲usybox不使用這些庫(kù),其他應(yīng)用程序也可能要使不使用這些庫(kù),其他應(yīng)用程序也可能要使用這些庫(kù)。用這些庫(kù)。7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作7 7)編寫(xiě)配置文件)編寫(xiě)配置文件 至少需要編寫(xiě)如下配置文件:至少需要編寫(xiě)如下配置文件:

57、etc/init.d/rcSetc/init.d/rcSetc/inittabetc/inittabetc/profileetc/profileetc/resolv.confetc/resolv.confetc/ inetd.confetc/ inetd.confetc/fstabetc/fstabetc/passwdetc/passwd7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作7 7)編寫(xiě)配置文件)編寫(xiě)配置文件 這幾個(gè)文件的作用是:這幾個(gè)文件的作用是:rcSrcS:?jiǎn)?dòng)腳本文件,:?jiǎn)?dòng)腳本文件,inittabinittab:initinit進(jìn)程按照進(jìn)程按照inittabinittab文件所提供

58、的信文件所提供的信息創(chuàng)建進(jìn)程,息創(chuàng)建進(jìn)程,profileprofile:主要負(fù)責(zé)系統(tǒng)的環(huán)境變量,:主要負(fù)責(zé)系統(tǒng)的環(huán)境變量,resolv.confresolv.conf:是域名解析器的配置文件,:是域名解析器的配置文件,inetd.confinetd.conf:保存了系統(tǒng)提供:保存了系統(tǒng)提供internetinternet服務(wù)的數(shù)服務(wù)的數(shù)據(jù)庫(kù),據(jù)庫(kù),fstabfstab:存放系統(tǒng)的文件系統(tǒng)信息,:存放系統(tǒng)的文件系統(tǒng)信息,passwdpasswd:用于存放用戶(hù)關(guān)鍵信息。:用于存放用戶(hù)關(guān)鍵信息。7.3 根文件系統(tǒng)的制作根文件系統(tǒng)的制作7 7)編寫(xiě)配置文件)編寫(xiě)配置文件(1 1)etc/init.d/rcSetc/init.d/rcS需要開(kāi)啟該文件的執(zhí)行權(quán)限。需要開(kāi)啟該文件的執(zhí)行權(quán)限。#!/bin/sh #!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin PATH=/sbin:/bin:/usr/sbin:/usr/bin runlevel=S runlevel=S prevlevel=N prevlevel=N umask 022 umask 022 export PATH runlevel prevlevel export PATH runlevel prevlevel /bin/hostname Micro2440/bin/ho

溫馨提示

  • 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)論