国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

用busybox制作嵌入式Linux的文件系統

發布時間:2010-8-5 13:00    發布者:lavida
關鍵詞: busybox , linux , 文件系統
1 busybox簡介   

熟悉嵌入式Linux的人對busybox一定不會陌生。它被非常形象地稱為嵌入式Linux系統中的“瑞士軍刀”,因為它將許多常用的UNIX命令和工具結合到了一個單獨的可執行程序中。雖然與相應的GNU工具比較起來,busybox所提供的功能和參數略少,但在比較小的系統(例如啟動盤)或者嵌入式系統中,已經足夠了。   

busybox在設計上就充分考慮了硬件資源受限的特殊工作環境。它采用一種很巧妙的辦法減少自己的體積:所有的命令都通過“插件”的方式集中到一個可執行文件中,在實際應用過程中通過不同的符號鏈接來確定到底要執行哪個操作。例如最終生成的可執行文件為busybox,當為它建立一個符號鏈接ls的時候,就可以通過執行這個新命令實現列目錄的功能。采用單一執行文件的方式最大限度地共享了程序代碼,甚至連文件頭、內存中的程序控制塊等其他操作系統資源都共享了,對于資源比較緊張的系統來說,真是最合適不過了。   

在busybox的編譯過程中,可以非常方便地加減它的“插件”,最后的符號鏈接也可以由編譯系統自動生成。下面就來一步步地用busybox從無到有地建立一個全新的Linux文件系統。   

2 編譯busybox   

2004年10月中旬,busybox的1.00穩定版終于推出了,完整的源代碼可以從http://www.busybox.net下載,壓縮包大小為1.3 MB左右。將源碼解壓之后,進入到busybox1.00目錄中,運行make menuconfig可以打開它的編譯界面。這個界面和Linux內核編譯有些接近,如圖1所示。   

在這個菜單界面中除了可以對最終編譯到可執行文件中的命令進行選擇外,還有很多其他設置也是非常重要的。下面三個目錄是很多人都會感興趣的:Build Options --->
installation Options ---> Login/Password ManagementUtilities --->在Build Options里面有是否使用交叉編譯的選項(Do you want to build BusyBox with a Cross Compiler)。如果要對其他平臺進行編譯就要選擇它并設置相應的編譯程序前綴。   

在Installation Options里面可以設置安裝的路徑,即設置為新文件系統的根目錄。當然也可以用缺省的 _install目錄,安裝之后再復制到新文件系統中去。   

在設置Login/Password Management Utilities的時候,為了免去配置glibc的麻煩,最好設置使用busybox自己的password和shadow文件的功能(Use internal password and group functions rather than system functions)。   

busybox提供的命令無疑比較全面,但它的缺省配置還不能構成一個功能比較完備的文件系統。必須要添加的命令有Login/Password Management Utilities里面的getty、login和passwd,這些命令從前是由另外一個軟件包tinylogin所提供的。當然,如果不需要一個交互的登錄界面,這些命令也可以去掉。通過設定內核參數init=/bin/sh可以在系統啟圖1busybox的編譯配置界面動后直接得到一個shell。   

tlenetd命令是一個遠程登錄服務程序,把它編譯進busybox中會為將來的調試提供很多的方便。當然也可以通過串口終端的方式管理嵌入式設備,但網絡登錄的方式卻更為方便。   

設置完畢后保存、退出,執行make; make install命令,busybox將在未來的根文件系統中建立/usr、/bin、/sbin等目錄。從中可以看到,編譯好的busybox可執行文件和其他應用命令的符號鏈接。典型的busybox文件大小在動態鏈接的情況下是300 KB左右,靜態鏈接為800 KB左右,用它實現的文件系統完全可以控制在1 MB以下。但就目前為止,得到的還不是一個完整可用的文件系統,必須要在這個基礎上添加一些必要的文件,讓它可以工作。   

3 完善文件系統   

3.1 需要增加的文件   

參考一個正常的Linux系統就會發現,busybox建立的文件系統還缺少很多文件。下面三行命令建立了常見UNIX系統中包含的一些目錄,雖然它們不全是必需的,但建立它們更符合標準一些。這些命令都是在新文件系統的根目錄中執行的,第三條命令的執行還必須要有root權限。

mkdir mnt root var tmp proc boot etc lib
mkdir /var/{lock,log,mail,run,spool}
chown 0:0R *如果busybox采用了動態鏈接的方式編譯,還需要把busybox所需要的動態庫:libcrypt.so.1、libc.so.6、ldlinux.so.2放到lib目錄中。最好按照標準的方式建立相應的文件和鏈接,可以參考下面的列表:-rwxrwxrwx 192519ld-2.3.2.so
lrwxrwxrwx 111ld-linux.so.2 -> ld-2.3.2.so
-rwxrwxrwx 1 1190032libc-2.3.2.so
lrwxrwxrwx 113libc.so.6 -> libc-2.3.2.so
-rwxr-xr-x 118348libcrypt-2.3.2.so
lrwxrwxrwx 117libcrypt.so.1 -> libcrypt-2.3.2.so

3.2 編寫 etc

文件夾下的文件etc文件夾是許多系統配置文件保存的地方。這些文件非常重要,如果配置錯誤,就可能影響系統的啟動。busybox源代碼example/bootfloopy/etc目錄中的文件算是一個簡單的例子,可以把其中的文件拷貝過來作為基礎。(在example/bootfloopy目錄中的一些腳本和文檔也很值得閱讀)   

首先inittab文件是系統啟動后所訪問的第一個腳本文件,后續啟動的文件都由它指定。這個文件的格式和普通微機Linux上的inittab是有區別的,其具體含義可以參考busybox的文檔。下面是一個比較簡單的例子:::sysinit:/etc/init.d/rcStty0::respawn:/sbin/getty38400tty0tty2::askfirst:/bin/shctrlaltdel:/sbin/rebootshutdown:/bin/umountarshutdown:/bin/mount / o remount,ro其中第一行指定了系統的啟動腳本為/etc/init.d/rcS;第二行指定在第一個虛擬終端打開一個登錄會話;第三行指定在第三個虛擬終端打開一個無須登錄驗證的shell;第四行指定了當按下ctrl+alt+del組合鍵時的執行命令;最后兩行指定了關機時執行的操作。

fstab文件定義了文件系統的各個“掛接點”,需要與實際的系統相配合。一個簡單的fstab文件如下:proc/procprocdefaults00
/dev/hda1/ext2rw,noauto01
devpts/dev/ptsdevptsdefaults00其中第三行是為UNIX PTYs準備的,telnetd要用到。
profile文件是終端登錄之后首先運行的腳本,這里可以不去管它。我們比較關心的是系統在無人登錄的情況下有哪些程序要執行。從inittab文件可以看出系統啟動之后要運行/etc/init.d/rcS腳本,需要啟動的程序和需要進行的設置都可以寫在這里面。一個可能的rcS文件如下:#! /bin/sh
echo e Starting System
ifconfig lo 127.0.0.1
ifconfig eth0 192.168.0.100
hostname F /etc/hostname
/bin/mount / o remount,rw
/bin/mount /proc
/bin/mount /dev/pts
/usr/sbin/telnetd
dmesg > /var/log/dmesg為了滿足終端登錄用戶驗證的要求,etc目錄下還需要有passwd、group和shadow (在編譯busybox時如果不選擇shadow功能將不需要這個文件)。這些文件至少要包含 root用戶的定義,如下所示:passwd:
root:x:0:0:root:/root:/bin/sh
group:
root:x:0:
shadow:
root::12179:0:99999:7:::其中,如果shadow (對于不支持shadow的系統則是passwd )文件的第一個冒號和第二個冒號之間沒有內容,表示這個用戶登錄不需要密碼。如果需要設定密碼或者增加新的登錄用戶,就可以參考開發主機上的相應文件,或者在目標系統啟動之后用passwd命令和adduser命令完成。   

最后還可以給目標機起一個名字,在/etc目錄下建立文件hostname,將起好的名字寫到里面。前面介紹的啟動腳本rcS,通過hostname命令把文件的內容設置為機器名。   

4 測試新的文件系統   

文件系統的安裝隨著應用環境的不同差別比較大。在嵌入式環境中,一般只要通過特殊的打包工具將文件系統打包,并燒錄到非易失性存儲器中就可以了。例如,對于JFFS2類型的文件系統就可以用mkfs.jffs2命令生成文件系統的映像。   

文件系統安裝之后重新啟動目標設備,應該就可以使用新建立的文件系統了。如果系統啟動失敗,則可以通過內核消息查找錯誤的原因。如果錯誤信息提示不能正確掛載文件系統,問題可能出在啟動引導裝載程序(bootloader)上。文件系統比較容易出問題的是用戶的驗證和動態鏈接庫的加載。最簡單的檢測辦法是把busybox編譯為靜態鏈接并設置內核參數init=/bin/sh來躲開對用戶登錄的驗證。   

5 總結   
一般構建文件系統的方式是從原有的文件系統進行剪裁和修補。其實使用最新的busybox制作全新的文件系統并不復雜,甚至更加簡便,對啟動腳本的配置也更加靈活和自由。
本文地址:http://m.qingdxww.cn/thread-19385-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲字幕久久| 中文字幕第38页永久乱码| 下雨天小说词枝| 99RE8国产这里只有精品| 欧美性爱 先锋影音| 特级淫片大乳女子高清视频| 日本草逼视频| 青青国产线免观看手机版精品| 亚洲最稳定资源在线观看| 永久毛片| 国产亚洲精品在浅麻豆| 亚洲区视频| 天天狠天天操| 色久综合在线| 爽爽影院在线观看| 9277高清在线观看视频| 久久综合九色综合国产| 亚洲二区在线视频| 日本在线观看免费高清| 污网站免费观看在线高清| 丰满饥渴老太性hd| 色就色综合| 视频一区二区在线| 四虎影院永久| 亚洲一区二区三区91| 国产精品永久在线| 午夜在线观看免费完整直播网| 欧美成人国产| 婷婷在线五月| 永久免费黄色软件| 蜜臀AV色欲A片无码一区| 亚洲成a人| 日韩免费精品视频| 亚洲国产成人在线| 精品人妻一区二区三区视频53| 曰曰夜夜在线影院视| 青青操视频在线观看| 一级做a爰片久久免费| 97人人碰免费视频公开| 色婷婷综合久久久久中文一区二区| 三级网站日本|