1. gzyueqian
      18078865874

      定制嵌入式Linux系統(tǒng)的啟動(dòng)程序

      更新時(shí)間: 2007-07-30 13:10:29來(lái)源: 粵嵌教育瀏覽量:862

        摘 要  嵌入式系統(tǒng)的特點(diǎn)決定了它具有功能的專用性,而不能作為一種通用的計(jì)算機(jī)系統(tǒng)。基于Linux操作系統(tǒng)開(kāi)發(fā)嵌入式產(chǎn)品,必須對(duì)它的啟動(dòng)程序進(jìn)行定制。本文研究了Linux操作系統(tǒng)的啟動(dòng)過(guò)程,并給出了如何為嵌入式Linux系統(tǒng)添加用戶自己的啟動(dòng)服務(wù),以及指定開(kāi)機(jī)后運(yùn)行的主功能程序的方法。

        關(guān)鍵詞  嵌入式    Linux   啟動(dòng)程序

        一、嵌入式系統(tǒng)的概念及特點(diǎn)[1]
         
        引用電氣工程師協(xié)會(huì)IEE給嵌入式系統(tǒng)下的一個(gè)定義:嵌入式系統(tǒng)是用來(lái)控制或監(jiān)視機(jī)器、裝置或工廠等大規(guī)模系統(tǒng)的設(shè)備。但是后來(lái)隨著嵌入式系統(tǒng)的發(fā)展,這個(gè)定義就變得不是很準(zhǔn)確。比如說(shuō)像手機(jī)、PDA及電子詞典之類的小型設(shè)備,它們均由內(nèi)部的嵌入式系統(tǒng)控制,但是卻不可稱之為大規(guī)模的系統(tǒng)。
      有些文獻(xiàn)這樣下定義我覺(jué)得比較確切:嵌入式系統(tǒng)是電腦軟件與硬件的綜合體,它是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件均可裁剪,能夠適應(yīng)實(shí)際應(yīng)用中對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。
         
        嵌入式系統(tǒng)具有以下幾個(gè)特點(diǎn):
         
        1、 嵌入式系統(tǒng)是先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)以及電子技術(shù)與各個(gè)行業(yè)的具體應(yīng)用相結(jié)合的產(chǎn)物。也就是說(shuō)嵌入式系統(tǒng)并不像通用計(jì)算機(jī)那樣通用,而是與各待業(yè)的特定應(yīng)用相關(guān)聯(lián)的,每行每業(yè)的嵌入式系統(tǒng)要實(shí)現(xiàn)的功能也不一樣。因此,在嵌入式系統(tǒng)上沒(méi)有哪個(gè)公司的操作系統(tǒng)和處理器能夠壟斷市場(chǎng)。
         
        2、 嵌入式系統(tǒng)實(shí)現(xiàn)的功能單一,通常是面向用戶、面向產(chǎn)品、面向特定應(yīng)用的,一般只實(shí)現(xiàn)某行業(yè)的特定功能。
         
        3、 成本低、體積小、功耗低及可靠性高,在運(yùn)行速度及存儲(chǔ)容量上有一定的限制。
         
        4、 嵌入式系統(tǒng)本身不具備在其上進(jìn)一步開(kāi)發(fā)的能力,必須要在相關(guān)的開(kāi)發(fā)平臺(tái)上開(kāi)發(fā)。
         
        5、 全自動(dòng)操作循環(huán),一直重復(fù)地執(zhí)行一個(gè)特定的程序
         
        嵌入式系統(tǒng)的靈魂應(yīng)該說(shuō)是它的嵌入式操作系統(tǒng),本文使用的是嵌入式Linux,硬件基礎(chǔ)是基于x86的嵌入式主板。由上述嵌入式系統(tǒng)的特點(diǎn)可知,為了讓嵌入式系統(tǒng)具有一個(gè)產(chǎn)品或儀器的特性,不能讓像通用計(jì)算機(jī)那樣開(kāi)機(jī)后進(jìn)入桌面系統(tǒng),而是要運(yùn)行指定服務(wù)和一個(gè)特定的用戶應(yīng)用程序。本文將如何讓Linux開(kāi)機(jī)后執(zhí)行指定服務(wù)和運(yùn)行一特定的用戶程序進(jìn)行探討。

        二、Linux系統(tǒng)的啟動(dòng)過(guò)程
         
        讓我們先了解一下Linux系統(tǒng)啟動(dòng)的過(guò)程。當(dāng)引導(dǎo)程序(如LILO)加載Linux內(nèi)核映象啟動(dòng)時(shí),它先進(jìn)行內(nèi)核的初始化工作,主要是檢測(cè)整個(gè)硬件環(huán)境。內(nèi)核初始化完成后,系統(tǒng)就啟動(dòng)init進(jìn)程,它是系統(tǒng)的個(gè)用戶級(jí)進(jìn)程。Linux系統(tǒng)具有許多運(yùn)行級(jí)別,它由文件/etc/inittab文件決定,各級(jí)別的功能如下:
          
        0:終止或停止系統(tǒng)的運(yùn)行
        1:?jiǎn)斡脩裟J?br />  2:多用戶模式,但無(wú)網(wǎng)絡(luò)功能
        3:多用戶模式且有網(wǎng)絡(luò)功能
        4:保留,用戶可以定義自己的啟動(dòng)模式
        5:圖形界面登陸模式
        6:重新啟動(dòng)系統(tǒng)
         
        init進(jìn)程運(yùn)行后,它會(huì)訪問(wèn)/etc/inittab文件,該文件確定系統(tǒng)運(yùn)行于上面的哪個(gè)級(jí)別。由于嵌入式系統(tǒng)的特性,我們要讓系統(tǒng)運(yùn)行于級(jí)別1上,即單用戶模式,這只要在/etc/inittab文件的id:3:initdefault行,將3改為0即可。同時(shí)每個(gè)級(jí)別還對(duì)應(yīng)了一個(gè)啟動(dòng)各種服務(wù)的腳本目錄,一般在/etc/rc.d/下面。
         
        接著init進(jìn)程又分別啟動(dòng)/etc/rc.d/rc.sysinit和與等級(jí)n相對(duì)應(yīng)的/etc/rc.d/rcn.d目錄里的初始化進(jìn)程,init會(huì)運(yùn)行用戶登陸程序,這時(shí)在終端上就會(huì)顯示login:的登錄信息,用戶登錄成功后會(huì)啟動(dòng)shell程序,shell啟動(dòng)后,它會(huì)讀取并執(zhí)行文件/etc/profile,/etc/bashrc,和用戶主目錄下的文件.bashrc,這些文件負(fù)責(zé)建立用戶自己的環(huán)境。

        三、設(shè)置特定服務(wù)及開(kāi)機(jī)啟動(dòng)程序
          
        如前所述,添加指定服務(wù),定制特定的啟動(dòng)程序,就從配置文件/etc/rc.d/rcn.d和/etc/profile入手。
          
        1、添加指定的服務(wù):是指在系統(tǒng)啟動(dòng)時(shí)進(jìn)行一些用戶所需要的操作,如初始化用戶應(yīng)用程序或用戶開(kāi)發(fā)的新硬件等等。可以增加自己的腳本程序來(lái)完成這些工作,主要步驟如下:
         
        (1) 仿照系統(tǒng)目錄/etc/rc.d/init.d里的任何一個(gè)腳本文件的格式自己編寫一個(gè)啟動(dòng)服務(wù)腳本文件。
        (2) 將寫好的腳本文件拷貝到/etc/rc.d/init.d目錄下。因?yàn)?etc/rc.d/rcn.d只是/etc/rc.d/init.d的一個(gè)鏈接,故要將真實(shí)的文件先拷到后者的目錄下。
        (3) 在相應(yīng)的運(yùn)行級(jí)別n的/etc/rc.d/rcn.d下建立該腳本文件的鏈接。如運(yùn)行級(jí)別為2,則n=2,目錄即為/etc/rc.d/rc2.d。假如該腳本名為initform,鏈接名定為my_initform,則鍵入如下命令即可:ln –s /etc/rc.d/init.d/initform  /etc/rc.d/rc2.d/my_initform。
         
        完成以上幾步后,系統(tǒng)開(kāi)機(jī)后就會(huì)自動(dòng)執(zhí)行腳本initform里的服務(wù)。
          
        2、運(yùn)行特定用戶應(yīng)用程序:這里主要是指GUI應(yīng)用程序,如果原系統(tǒng)啟動(dòng)后直接進(jìn)入桌面系統(tǒng),則要將桌面程序在相應(yīng)腳本中屏蔽,然后修改/etc/profile腳本定制用戶自己的程序。步驟如下:
          
        (1) 在startx腳本中將運(yùn)行相應(yīng)的桌面系統(tǒng)程序屏蔽。例如桌面系統(tǒng)程序名為qvwm(紅旗嵌入式Linux的桌面系統(tǒng)),則修改內(nèi)容如下:
          
        ……
        # xinit /usr/bin/qvwm
        #加個(gè)“#”表示將這行腳本屏蔽掉
          
        (2) 修改/etc/profile,啟動(dòng)用戶應(yīng)用程序。如用戶應(yīng)用程序名為start_initform,且在目錄/root/ 下,則在它的末尾加上如下幾行內(nèi)容:
       
        ……
        export LC_ALL=zh_CN.GB2312
        #設(shè)置中文化環(huán)境
        cd /root/
        #切換到應(yīng)用程序當(dāng)前目錄
        xinit ./start_initform
        #運(yùn)行指定的用戶應(yīng)用程序
          
        修改完成后,重新啟動(dòng)系統(tǒng),則當(dāng)系統(tǒng)初始化完后,會(huì)執(zhí)行用戶指定的服務(wù),且運(yùn)行用戶應(yīng)用程序,達(dá)到嵌入式系統(tǒng)的要求。

        參考文獻(xiàn)

        1 李善平,劉文峰,王煥龍. Linux與嵌入式系統(tǒng). 清華大學(xué)出版社,2002
        2 鄒思軼. 嵌入式Linux設(shè)計(jì)與應(yīng)用. 清華大學(xué)出版社,2002
        3 王學(xué)龍. 嵌入式Linux系統(tǒng)設(shè)計(jì)與應(yīng)用. 清華大學(xué)出版社,2001
        4 于明儉,陳向明,方漢. Linux程序設(shè)計(jì)權(quán)威指南. 機(jī)械工業(yè)出版社,2001
        5 聯(lián)想軟件超星空工作室. 精通Linux系統(tǒng)管理與應(yīng)用開(kāi)發(fā)技術(shù). 清華大學(xué)出版社,2001
        6 李主琛. Linux面向?qū)ο蟠翱诰幊? 科學(xué)出版社,2001
        7 徐千洋. Linux 函數(shù)庫(kù)參考手冊(cè). 中國(guó)青年出版社,200

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲日韩高清在线亚洲专区2021 | 日本在线a一区视频 | 亚洲人成网站在线播放vr | 亚洲一区欧美国产 | 亚洲欧洲中文日韩AV乱 | 亚洲高清vr播放在线观看 |