日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式動態(tài)
[導讀]一張軟盤裝下嵌入式Linux


  嵌入式Linux由一個幾百KB的kernel(內核)和一些根據需要進行定制的系統(tǒng)模塊組成。由于Linux是開放源代  碼的操作系統(tǒng),因此,其在嵌入式領域有其不可替代的成本和高度靈活性等優(yōu)勢。 

  將Linux系統(tǒng)裁減到就像DOS一樣只要一張軟盤就能啟動,是制作嵌入式Linux的基礎。網絡上有許多實現方法  的介紹,但是在實踐過程中都或多或少存在著一些問題或不方便之處。我們結合自己在這方面的實踐經驗,詳細介紹基于軟盤Linux的制作過程。 

  三個基本元素 

  一個嵌入式Linux系統(tǒng)只需要下面三個基本元素:引導程序、Linux微內核(由內存管理、進程管理和事務處理  構成)和初始化進程。如果要讓它有更多的功能且保持小型化,還可以加上文件系統(tǒng)、TCP/IP網絡支持、GUI(圖形用戶界面)和設計精簡的應用程序,并將其放在ROM、RAM、FLASH或Disk On Chip中啟動。由于嵌入式Linux操作系統(tǒng)的高度靈活性,開發(fā)者可以很容易地對它進行定制或作適當開發(fā),來滿足實際應用需要。 

  將Linux的系統(tǒng)裁減到只要一張軟盤就能啟動,不但是制作嵌入式Linux的基礎,而且自己也有廣泛的應用前景。 這些應用包括簡單路由器管理、三層交換機管理、floppy-boot防火墻管理等。國外有專門的組織致力于這方面的工作,如LOAF(Linux on a floopy)等組織。 

  選擇內核 

  創(chuàng)建一個啟動盤首先必須創(chuàng)建系統(tǒng)內核。由于軟盤容量有限,因此常采用對內核進行手工配置,去掉不必要的模塊的方法來裁減內核。 

  要想裁減內核體積,創(chuàng)建它時就得把不必要的功能去掉,如去掉對網絡的支持和對不必要設備的支持。但是一定要記住保留內核對RAMDISK和ext2的支持,否則啟動盤將不能工作。其過程如下: 

  1)以root超級用戶登錄,進入目錄/usr/src/linux。 

  2)執(zhí)行#make menuconfig來對內核模塊進行配置(也可以在X Window中運行make xconfig)。 

  3)依次執(zhí)行#make dep和#make bzImage (如果內核不大則執(zhí)行#make zImage),執(zhí)行該命令后,將在 /usr/src/linux/arch/i386/boot目錄下生成內核文件bzImage(或zImage)。若配置中加入了模塊的支持(選項為M),還需要執(zhí)行#make modules和#make modules_install。 

  4)用命令#cp usr/src/linux/arch/i386/ boot/bzImage /boot拷貝新內核到/boot目錄,修改文件 

    /etc/lilo.conf,加入: 

  image = /boot/bzImage 

  label = new 

  root =/dev/hdxx(你自己的啟動硬盤分區(qū)) 

  read-only 

  執(zhí)行命令#lilo載入新內核,#reboot重啟系統(tǒng),在出現“l(fā)ilo:”時鍵入new。若系統(tǒng)正常引導,則執(zhí)行下一步,  若不行則用老內核引導后,到步驟1)重新配置編譯內核。 

  5)插入軟盤執(zhí)行 

  #dd bs=1k if=/usr/src/linux/arch/i386/ boot/bzImage of=/dev/fd0  

  這樣將內核拷貝到軟盤上。 

  6)用命令#ls -s將在/usr/src/linux/ arch/i386/boot/bzImage得到內核的大小(假定為476),將這個大小記錄下來以備后用。 

  這樣就制作了包含裁減內核的可供啟動的Linux啟動軟盤。但是由于沒有root文件系統(tǒng),使用這張軟盤啟動系統(tǒng)后,系統(tǒng)會顯示“VFS: cannot open root device x:x”和 
“kernel panic: VFS: unalbe to boot root fs on x:x”的錯誤。 

  root文件系統(tǒng) 

  一個root文件系統(tǒng)必須包括支持完整Linux系統(tǒng)的全部東西,因此,它至少應包括:基本文件系統(tǒng)結構;至少含有目錄/dev、/proc、/bin、/etc、/lib、/usr、/tmp;最基本的應用程序,如sh、ls、cp、mv等;最低限度的 配置文件,如rc、inittab、fstab等;設備:/dev/hd*、/dev/ tty*、/dev/fd0;基本程序運行所需的函數庫。 

  由于以上所需文件遠超過1.44M,因此我們通常的做法是在準備好內容后將其壓縮到軟盤中。當用軟盤啟動時,再把文件解壓到內存中,形成一個虛擬盤(RAMDISK),通過RAMDISK控制系統(tǒng)啟動。如果你使用LILO控制啟動,先檢 
查一下LILO的配置文件/etc/lilo.conf中定義的RAMDISK的大小: 

  RAMDISK_SIZE = nnn 

  創(chuàng)建root文件系統(tǒng) 

  回到根目錄或用戶的缺省目錄,用#mkdir flop建立工作目錄flop。在這個目錄下用mkdir建立以下一些目錄: 
/dev,設備;/proc - proc,文件系統(tǒng)所需目錄;/etc,系統(tǒng)配置文件;/sbin,重要的系統(tǒng)程序;/bin,基本應 用程序;/lib,共享函數庫;/mnt,裝載其他磁盤節(jié)點;/usr,附加應用程序。 

  其中/proc、/mnt和/usr在此情況下都是空的,只需要用mkdir創(chuàng)建它們即可。其余的目錄應根據需要分別創(chuàng)建。
 
下面對它們一個一個地詳細敘述。 

  /dev:這個目錄中含有系統(tǒng)不可缺少的設備文件。你可以把現有系統(tǒng)中/dev的文件拷貝過來,然后刪除不必要的文件。不過一定要保留console、kmem、mem、null、ram、tty*等文件。其余的都可以根據需要刪除。 

  /etc:這個目錄中含有一些必不可少的系統(tǒng)配置文件。一般可以包含rc.d/* (系統(tǒng)啟動腳本)、fstab(列出要登錄的文件系統(tǒng))、inittab(包含啟動過程參數)、passwd (用戶名和目錄)、group(用戶組)、shadow(用戶加密密碼)。 
如果不使用init作為登錄進程,而將init鏈接到/bin/bash,則/etc目錄下可以不含有任何文件。 

  /bin和/sbin:該目錄中包含有必不可少的應用程序,如ls、mv、cat、cp、getty(mingettty)。也可以根據自己的需要選擇,不過一定要記住包括以下程序:init、getty、login、mount、bash。 

  /lib:該目錄中包含有你的啟動盤啟動過程中所需要的共享函數庫。在/lib目錄下還必須有函數庫裝載器,這個裝載器或是ld.so (對a.out庫)或是ld-linux.so (對ELF庫)。 

  模塊 

  如果有一個模塊化的內核,你還得必須考慮需要加載的模塊。它們都位于/lib/modules。你可以把不是很重要的模塊放到別的盤上,當系統(tǒng)啟動后再加載,這樣會節(jié)省啟動盤的空間。 

  打包 

  1)建立loop設備的臨時掛接點和一個大小為4.6兆(大小可以調節(jié))的臨時文件,并將其清零: 

  #mkdir /mnt/loop 2>/dev/null 

  #dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=4600 >/dev/null 

  2)將loop設備與臨時文件聯系起來 

  #losetup /dev/loop0 /tmp/loop_tmp 

  3)Linux內核識別兩種可以直接拷貝到RAMDISK的文件系統(tǒng),它們是minix和ext2,ext2性能更好: 

  #mke2fs -m 0 /dev/loop0 2>/dev/null 

  #mke2fs將會自動判斷設備容量的大小并相應地配置自身,-m 0參數防止它給root保留空間,這樣會騰出更多 
的有用空間。 

  4)接著把虛擬盤掛在節(jié)點/mnt上: 

  #mount /dev/loop0 /mnt/loop -t ext2 

  5)將制作好的root文件系統(tǒng)拷貝到所掛的節(jié)點上,卸下掛接點,刪除建立的掛接點,再取消loop設備與臨時掛接點的聯系。 

  #cp -a ./tree/* /mnt/loop 

  #umount /mnt/loop 

  #rmdir /mnt/loop 2>/dev/null 

  #losetup -d /dev/loop0 

  6)壓縮文件系統(tǒng)后,就擁有了一個壓縮的root文件系統(tǒng),刪除建立的臨時文件。 

  #dd if=/tmp/loop_tmp | gzip -9 > rootfs.gz 

  #rm -f /tmp/loop_tmp 

  7)檢查壓縮后的root文件系統(tǒng)的大小,如果大了,還得去掉一些東西。 

  #ls -s ./zImage|cut -f2 -d 

  整合 

  有了root文件系統(tǒng)和內核之后,最后的工作就是把它們整合在一起。 

  先檢查總文件的大小,包括已經制作的內核和打包的root文件系統(tǒng)。如果超出1.44M,就得考慮重新創(chuàng)建。root文  件系統(tǒng)所需的所有文件都準備就緒,你就可以運行它了,運行結果應該沒有錯誤,否則就應該仔細檢查一下。 

  真正的嵌入式Linux系統(tǒng) 

  到這里基于軟盤的Linux盤已經做好了,剩下的工作就是測試這張盤的正確性,如果有問題還得從頭再來。 

  現在許多Linux的發(fā)行套件中都有廠家做好的啟動盤,它們的制做原理和以上介紹的大同小異,但是它們常常使用  許多不同的技巧,因為它們要面對更多的硬件和各種可能發(fā)生的情況。 

  真正的基于IA應用的嵌入式Linux還必須加入GUI(圖形用戶界面)和設計精簡的應用程序,如網絡瀏覽器等。GUI方面開放源代碼的,國外有Microwindows(可訪問www.microwindows.org),國內有miniGUI(可訪問 www.minigui.org )。 
它們的源代碼都可以在網上找到。瀏覽器方面用得較廣的是ViewMLwww.viewml.org),它也是開放源代碼的。結合以上一些工具,再加上對硬件驅動程序的開發(fā),就可以形成一套嵌入式的Linux操作系統(tǒng)。 

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉