音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

嵌入式Linux的文件系統(tǒng)制作

出處:tqzzj1 發(fā)布于:2008-08-27 16:07:30

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

  在busybox的編譯過程中,可以非常方便地加減它的“插件”,的符號(hào)鏈接也可以由編譯系統(tǒng)自動(dòng)生成。下面就來一步步地用busybox從無到有地建立一個(gè)全新的Linux文件系統(tǒng)。

  2編譯busybox

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

  在這個(gè)菜單界面中除了可以對(duì)終編譯到可執(zhí)行文件中的命令進(jìn)行選擇外,還有很多其他設(shè)置也是非常重要的。下面三個(gè)目錄是很多人都會(huì)感興趣的:Build Options --->

  Installation Options ---> Login/Password ManagementUtilities --->在Build Options里面有是否使用交叉編譯的選項(xiàng)(Do you want to build BusyBox with a Cross Compiler)。如果要對(duì)其他平臺(tái)進(jìn)行編譯就要選擇它并設(shè)置相應(yīng)的編譯程序前綴。

  在Installation Options里面可以設(shè)置安裝的路徑,即設(shè)置為新文件系統(tǒng)的根目錄。當(dāng)然也可以用缺省的 _install目錄,安裝之后再復(fù)制到新文件系統(tǒng)中去。

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

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

  tlenetd命令是一個(gè)遠(yuǎn)程登錄服務(wù)程序,把它編譯進(jìn)busybox中會(huì)為將來的調(diào)試提供很多的方便。當(dāng)然也可以通過串口終端的方式管理嵌入式設(shè)備,但網(wǎng)絡(luò)登錄的方式卻更為方便。

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

  3完善文件系統(tǒng)

  3.1需要增加的文件

  參考一個(gè)正常的Linux系統(tǒng)就會(huì)發(fā)現(xiàn),busybox建立的文件系統(tǒng)還缺少很多文件。下面三行命令建立了常見UNIX系統(tǒng)中包含的一些目錄,雖然它們不全是必需的,但建立它們更符合標(biāo)準(zhǔn)一些。這些命令都是在新文件系統(tǒng)的根目錄中執(zhí)行的,第三條命令的執(zhí)行還必須要有root權(quán)限。mkdir mnt root var tmp proc boot etc lib

  mkdir /var/{lock,log,mail,run,spool}

  chown 0:0R *如果busybox采用了動(dòng)態(tài)鏈接的方式編譯,還需要把busybox所需要的動(dòng)態(tài)庫:libcrypt.so.1、libc.so.6、ldlinux.so.2放到lib目錄中。按照標(biāo)準(zhǔn)的方式建立相應(yīng)的文件和鏈接,可以參考下面的列表:-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.so3.2編寫 etc

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

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

  fstab文件定義了文件系統(tǒng)的各個(gè)“掛接點(diǎn)”,需要與實(shí)際的系統(tǒng)相配合。一個(gè)簡單的fstab文件如下:proc/procprocdefaults00

  /dev/hda1/ext2rw,noauto01

  devpts/dev/ptsdevptsdefaults00其中第三行是為UNIX PTYs準(zhǔn)備的,telnetd要用到。

  profile文件是終端登錄之后首先運(yùn)行的腳本,這里可以不去管它。我們比較關(guān)心的是系統(tǒng)在無人登錄的情況下有哪些程序要執(zhí)行。從inittab文件可以看出系統(tǒng)啟動(dòng)之后要運(yùn)行/etc/init.d/rcS腳本,需要啟動(dòng)的程序和需要進(jìn)行的設(shè)置都可以寫在這里面。一個(gè)可能的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為了滿足終端登錄用戶驗(yàn)證的要求,etc目錄下還需要有passwd、group和shadow (在編譯busybox時(shí)如果不選擇shadow功能將不需要這個(gè)文件)。這些文件至少要包含 root用戶的定義,如下所示:passwd:

  root:x:0:0:root:/root:/bin/sh

  group:

  root:x:0:

  shadow:

  root::12179:0:99999:7:::其中,如果shadow (對(duì)于不支持shadow的系統(tǒng)則是passwd )文件的個(gè)冒號(hào)和第二個(gè)冒號(hào)之間沒有內(nèi)容,表示這個(gè)用戶登錄不需要密碼。如果需要設(shè)定密碼或者增加新的登錄用戶,就可以參考開發(fā)主機(jī)上的相應(yīng)文件,或者在目標(biāo)系統(tǒng)啟動(dòng)之后用passwd命令和adduser命令完成。

  還可以給目標(biāo)機(jī)起一個(gè)名字,在/etc目錄下建立文件hostname,將起好的名字寫到里面。前面介紹的啟動(dòng)腳本rcS,通過hostname命令把文件的內(nèi)容設(shè)置為機(jī)器名。

  4測試新的文件系統(tǒng)

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

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

  5總結(jié)

  一般構(gòu)建文件系統(tǒng)的方式是從原有的文件系統(tǒng)進(jìn)行剪裁和修補(bǔ)。其實(shí)使用的busybox制作全新的文件系統(tǒng)并不復(fù)雜,甚至更加簡便,對(duì)啟動(dòng)腳本的配置也更加靈活和自由

  歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(m.58mhw.cn)



  
關(guān)鍵詞:嵌入式Linux的文件系統(tǒng)制作

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!