![基于CF卡的linux系統(tǒng)制作_第1頁(yè)](http://file4.renrendoc.com/view/7d111a5a3b4a6adba5b67f3a47534282/7d111a5a3b4a6adba5b67f3a475342821.gif)
![基于CF卡的linux系統(tǒng)制作_第2頁(yè)](http://file4.renrendoc.com/view/7d111a5a3b4a6adba5b67f3a47534282/7d111a5a3b4a6adba5b67f3a475342822.gif)
![基于CF卡的linux系統(tǒng)制作_第3頁(yè)](http://file4.renrendoc.com/view/7d111a5a3b4a6adba5b67f3a47534282/7d111a5a3b4a6adba5b67f3a475342823.gif)
![基于CF卡的linux系統(tǒng)制作_第4頁(yè)](http://file4.renrendoc.com/view/7d111a5a3b4a6adba5b67f3a47534282/7d111a5a3b4a6adba5b67f3a475342824.gif)
![基于CF卡的linux系統(tǒng)制作_第5頁(yè)](http://file4.renrendoc.com/view/7d111a5a3b4a6adba5b67f3a47534282/7d111a5a3b4a6adba5b67f3a475342825.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 在CF卡上安裝嵌入式linux全過(guò)程 吳剛 2007-4-4摘要:本文主要介紹在一塊128M的CF卡上定制安裝linux操作系統(tǒng),并在此基礎(chǔ)上建立一個(gè)簡(jiǎn)單的應(yīng)用平臺(tái)。關(guān)鍵詞:extlinux,busybox, CF卡,嵌入式linux隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的高速發(fā)展,嵌入式技術(shù)的廣泛應(yīng)用,嵌入式系統(tǒng)已經(jīng)打破傳統(tǒng)PC工業(yè)的壟斷地位,成為非PC設(shè)備的主體。而作為嵌入式系統(tǒng),應(yīng)用環(huán)境通常比較惡劣,而應(yīng)用又比較簡(jiǎn)單,為保證系統(tǒng)的穩(wěn)定性和便攜性通常使用DOM卡或CF卡一類的存儲(chǔ)設(shè)備來(lái)代替硬盤。經(jīng)過(guò)一段時(shí)間的摸索和收集資料終于在一塊CF卡上實(shí)踐安裝了一個(gè)滿足特定需要的嵌入式linux系統(tǒng),這里取名為cf
2、linux.在這里首先要感謝babylinux制作全過(guò)程的作者,正是這片文章,為我制作cflinux指明了道路。本文將講述在一張容量為128M的CF卡上定制安裝嵌入式linux操作系統(tǒng)的詳細(xì)過(guò)程,一 主機(jī)和目標(biāo)機(jī)情況簡(jiǎn)介 主機(jī): Linux:Red Hat 9.0Kernel: 2.4.20 目標(biāo)機(jī): 基于X86的工控板二 cflinux簡(jiǎn)介cflinux是一運(yùn)行于CF卡上的經(jīng)過(guò)自定義剪裁的嵌入式linux操作系統(tǒng)。因其運(yùn)行于CF卡上,故取名為cflinux.當(dāng)此操作系統(tǒng)和應(yīng)用環(huán)境搭建好后可以通過(guò)網(wǎng)絡(luò)telnet和串口訪問(wèn)目標(biāo)板,可運(yùn)行QT/E圖形界面應(yīng)用程序??梢酝ㄟ^(guò)串口,網(wǎng)口和USB口和外
3、圍設(shè)備交互。既可作為嵌入式操作系統(tǒng),也可作為啟動(dòng)盤作為系統(tǒng)維護(hù)工具。三 linux得引導(dǎo)過(guò)程簡(jiǎn)介 在系統(tǒng)啟動(dòng)時(shí),主板上的BIOS會(huì)讀取硬盤的主引導(dǎo)記錄(MBR),MBR中存放的是一段很小的程序,他的功能是從硬盤讀取操作系統(tǒng)核心文件并運(yùn)行,因?yàn)檫@個(gè)程序太小了,因此通常這個(gè)小程序不具備直接引導(dǎo)系統(tǒng)內(nèi)核的能力,他先區(qū)引導(dǎo)另一個(gè)稍微大一點(diǎn)的小程序去引導(dǎo)系統(tǒng)內(nèi)核。在linux系統(tǒng)中這樣得小程序有LILO,GRUB和SYSLINUX等。我們?cè)谶@個(gè)項(xiàng)目中這里用到的引導(dǎo)程序是SYSLINUX得一個(gè)分支:EXTLINUX。 Linux系統(tǒng)內(nèi)核被引導(dǎo)程序裝進(jìn)內(nèi)存并運(yùn)行后,linux內(nèi)核會(huì)檢測(cè)系統(tǒng)中得各種硬件,并做
4、好硬件得初始化工作,使他們?cè)谙到y(tǒng)正式運(yùn)行后能正常工作。剩下就是linux內(nèi)核要做得最后一個(gè)工作:運(yùn)行/sbin下得init程序。Init是英文單詞(initialization)初始化得簡(jiǎn)稱,init程序得工作是讀取/etc/inittab文件中的指令,對(duì)系統(tǒng)的各種軟硬件環(huán)境做最初的初始化工作,最后運(yùn)行g(shù)ettty活mingetty等待用戶輸入用戶名和密碼(當(dāng)然根據(jù)需要也可以跳過(guò)登錄這個(gè)步驟,直接以root身份登錄)。所有的工作就是這么簡(jiǎn)單。明白了這個(gè)道理,你也可以寫(xiě)一些腳本程序讓他在系統(tǒng)啟動(dòng)時(shí)的特定時(shí)間完成運(yùn)行,完成你指定的任務(wù)。/sbin/init程序只是系統(tǒng)默認(rèn)的運(yùn)行的第一個(gè)程序,他可以
5、是一個(gè)二進(jìn)制程序也可以是一段bash腳本,一個(gè)指向另一個(gè)程序的鏈接。他的位置也并不一定在/sbin下,只要啟動(dòng)內(nèi)核時(shí)加上init參數(shù)節(jié)能被運(yùn)行,開(kāi)始時(shí)給內(nèi)核加上init/bin/sh參數(shù),內(nèi)核就能直接運(yùn)行時(shí)并給出提示符,不需要登陸。四 extlinux安裝 EXTLINUX是SYSLINUX的一個(gè)新的派生??梢詮膌inux系統(tǒng)的ext2和ext3文件系統(tǒng)啟動(dòng)。EXTLINUX使用和SYSLINUX相似,只需做一點(diǎn)改動(dòng)即可。首先從 HYPERLINK /pub/linux/utils/boot/syslinux/ /pub/linux/utils/boot/syslinux/ 上下載syslin
6、ux-3.20.tar.gz。cp syslinux-3.20.tar.gz /usr/tmp tar xzvf syslinux-3.20.tar.gz 進(jìn)行解壓。然后用IDE to CF轉(zhuǎn)接卡把CF卡連到主機(jī)上(注意:一般CF卡是不支持熱插拔的,故插上CF后一般需要重新啟動(dòng)主機(jī)系統(tǒng))。我的CF卡對(duì)應(yīng)的設(shè)備文件是hdd1.在這里先使用fdisk工具把CF卡分成兩個(gè)區(qū),一個(gè)用于存放內(nèi)核和randisk,另一個(gè)用于存放應(yīng)用程序及相關(guān)文件。Fdisk的使用可參見(jiàn)相關(guān)資料,這里不做詳細(xì)說(shuō)明。我的CF卡主分區(qū)為hdd1,擴(kuò)展分區(qū)為hdd2,將所有的擴(kuò)展分區(qū)都分給邏輯分區(qū)hdd5。分好區(qū)后,將hdd1
7、和 hdd5格式化為ext2系統(tǒng)mke2fs m 0 /dev/hdd1mke2fs m 0 /dev/hdd5 /-m 0參數(shù)的作用是告訴系統(tǒng)不為root保留空間一切準(zhǔn)備好后,就可以安裝EXTKINUX了,安裝步驟如下:mount t auto /dev/hdd1 /mntcd /usr/tmp/syslinux-3.20/extlinux./extlinux i /mnt安裝成功后會(huì)提示extlinux 成功安裝到/mnt,然后在/mnt目錄下會(huì)出現(xiàn)extlinux.sys文件。umount /mnt 至此extlinux已經(jīng)安裝完畢,可以把CF卡插到工控板上,上電啟動(dòng)一下看看有什么效果。
8、如果安裝成功的話,啟動(dòng)后會(huì)出現(xiàn)如下的提示: EXTLINUX 3.20 2006-08-06 EBIOS Copyright (c) 1994-2005 H.peter Anvin Could not finf kernel image:linux boot:注:關(guān)于extlinux的詳細(xì)使用方法,請(qǐng)參閱syslinux-3.20目錄下的extlinux.doc文件五 linux內(nèi)核編譯 在內(nèi)核編譯前,我們首先要明確你需要內(nèi)核支持什么樣的硬件,支持多少種分區(qū)類型和文件系統(tǒng),支持那些網(wǎng)卡,支持那些網(wǎng)絡(luò)協(xié)議等等。雖然現(xiàn)在有128兆的空間,但也不能什么都要,夠用就行啊。好了,現(xiàn)在開(kāi)始內(nèi)核的編譯工作。
9、首先準(zhǔn)備好內(nèi)核代碼,可以到官方網(wǎng)站上下載,我的內(nèi)核源碼是安裝linux時(shí)帶上的,在/usr/src/linux-2.4/目錄下。 cd /usr/src/linux-2.4 make mrproper 清理源碼樹(shù) make menuconfig然后對(duì)各項(xiàng)取舍如下:(至于具體配置項(xiàng)的意義,請(qǐng)參考相關(guān)資料,不在本文討論范圍之內(nèi))code maturity level options先不選,當(dāng)我們配置好常規(guī)的東西,要加入framebuffer支持時(shí)再將這一項(xiàng)選上。因?yàn)樵?.4.20版本中,對(duì)frambuffer的支持尚屬于試驗(yàn)性代碼,如果不選擇此項(xiàng)將不能配置frambuffer.Load modul
10、e support取消選擇此項(xiàng),為了簡(jiǎn)化系統(tǒng)的制作,這個(gè)項(xiàng)目中將不選擇可加載內(nèi)核模塊的支持。Processer type and featuresProcessor family中選擇你需要的cpu類型,如果你想讓老至386,新到p4的CPU都能運(yùn)行cflinux的話,請(qǐng)選擇386,否則根據(jù)實(shí)際情況來(lái)選擇。建議選386。General setupNetworking support 都選上PCI支持 選上,除非你不用PCI設(shè)備,不過(guò)一般人都要的,因?yàn)榇蟛糠值木W(wǎng)卡都是PCI的。System V ipc 選上Systrl support選上Kernel support for ELF 選上其他內(nèi)容
11、如果沒(méi)什么特殊需要,都不選。Memory technology devices(MTD) 不選Parallel port support 由于本項(xiàng)目中需要使用并口打印機(jī),故將此項(xiàng)選上Plug and play configuration 不選Block devices Normal floppy disk support 不選Loopback device supportRAM disk supportInitial RAM disk(initrd)supportPer partion statics in /proc/partions以上幾項(xiàng)都選上。由于這幾項(xiàng)比較重要這里做詳細(xì)說(shuō)明。Loop
12、back device 即回環(huán)設(shè)備,我們平時(shí)用的命令瓜子ramdisk或光盤鏡像時(shí)都用到回環(huán)設(shè)備。如:mount o loop ramdisk.img /mntRAM disk support 即內(nèi)存磁盤(比較貼切的說(shuō)法是虛擬磁盤,即撥出一部分內(nèi)存當(dāng)磁盤用)。本項(xiàng)目中將所有系統(tǒng)的的文件都做成ramdisk,所以在運(yùn)行時(shí)你在根文件系統(tǒng)上所作的操作都是在內(nèi)存中完成的,但形式上和在真正的磁盤上運(yùn)行一樣。只不過(guò)放在RAM disk上的所有內(nèi)容會(huì)在系統(tǒng)關(guān)閉后全部消失。不僅在運(yùn)行cflinux時(shí)用到ramdisk,我們?cè)谥谱鞲募到y(tǒng)時(shí)也用到ramdisk。學(xué)習(xí)ramdisk的使用也是制作cflinux的
13、重要目標(biāo)之一。在linux中還支持另外一種虛擬磁盤:shm.(shared memory),這種要虛擬磁盤機(jī)制比ramdisk更加先進(jìn)。Ramdisk的大小是固定的,由編譯內(nèi)核時(shí)的default ram disk size決定,默認(rèn)為4096K,因?yàn)楸卷?xiàng)目中要往ramdisk中放很多東西,故這里我們要將其改為8192K(8M)。也可以在內(nèi)核加載錢加上ramdisk_size=參數(shù)來(lái)決定他的大小,但系統(tǒng)一啟動(dòng),ramdisk的大小是不能改變的,而shm的大小卻是動(dòng)態(tài)改變的。默認(rèn)情況下為物理內(nèi)存的一半,當(dāng)系統(tǒng)需要更多內(nèi)存的時(shí)候,他就自動(dòng)縮小。系統(tǒng)內(nèi)存富余時(shí),他又會(huì)自動(dòng)增大,這樣可以充分靈活的利用內(nèi)
14、存空間,shm通常作為磁盤的高速緩存,放在系統(tǒng)運(yùn)行中的臨時(shí)文件等。既然shm這么好,為什么這里還使用ramdisk呢,因?yàn)閞amdisk可以很方便的在系統(tǒng)啟動(dòng)時(shí)加載,而shm則沒(méi)那么容易。Initial RAM disk(initrd)support即初始化ramdisk支持,這個(gè)選項(xiàng)讓內(nèi)核有能力在內(nèi)核加載階段就能裝入RAMDISK,并運(yùn)行其中的內(nèi)容。否則只能在系統(tǒng)運(yùn)行階段用ramdisk,我們平時(shí)編譯了一個(gè)內(nèi)核后,如果你的根文件系統(tǒng)用的是ext3,而你沒(méi)有把ext編譯進(jìn)內(nèi)核,而作為一個(gè)模塊編譯了,那么就需要用mkinitrd命令做一個(gè)initrd,這個(gè)ramdisk里放了ext3的模塊,這樣
15、內(nèi)核在加載根文件系統(tǒng)前就能正確識(shí)別ext3系統(tǒng),否則內(nèi)核加載的最后一步就會(huì)出現(xiàn)kernel panic cant not find init.的錯(cuò)誤。Per partion statics in /proc/partions這個(gè)選項(xiàng)不是必須的,但是不把這個(gè)選項(xiàng)編譯進(jìn)內(nèi)核在執(zhí)行fdisk指令時(shí)就會(huì)提示找不到/proc/partions,另外還可能出現(xiàn)不能以簡(jiǎn)寫(xiě)的掛載命令來(lái)掛載文件系統(tǒng)。所以我把該選項(xiàng)也編譯進(jìn)內(nèi)核。Multidevice support(RAID and LVM) 不選Cryptography support(CryptoAPI) 不選Networking options在這一大項(xiàng)
16、中需要把下列項(xiàng)目編譯進(jìn)內(nèi)核:Packet socket:mmapped IOTCP/IP networking對(duì)于IP:advanced router 這項(xiàng),如果你想重點(diǎn)把cflinux用做靜態(tài)路由軟件,那么把這項(xiàng)編譯進(jìn)去。另外unix domain sockets 這項(xiàng)也不必選擇,只有運(yùn)行X的情況下才需要這項(xiàng)。Telephony support 不選ATA/IDE/MFM/RLL support 選上,然后在下面的“IDE,ATA and ATAPI Block Devices”按鈕就被激活,下面幾項(xiàng)選上,其余都不用選Enhanced IDE/MFM/RLL disk/cdrom/tape/
17、floppy supportInclude IDE/ATA-2 DISK supportAuto-Geometry Resizing supportInclude IDE/ATA CDROM supportSCSI support 因?yàn)檫@個(gè)項(xiàng)目中是通過(guò)CF卡啟動(dòng)的,所以把這項(xiàng)也選上。在這個(gè)大項(xiàng)中只需選擇一下3項(xiàng)即可:SCSI disk supportSCSI generic supportSCSI tape supportFusion MPT device support 不選IEEE1394(FireWrite)support 不選I2O device support 選上,子項(xiàng)全部選上Ne
18、twork device support 選上,這樣就可以支持網(wǎng)卡了,其余都選擇N.然后點(diǎn)Ethernet(10 or 100 Mbit)按鈕選擇你需要的網(wǎng)卡驅(qū)動(dòng),你可以把最常見(jiàn)的幾種Reltek8139,NE2000,3COM等網(wǎng)卡編譯進(jìn)內(nèi)核.雖然網(wǎng)卡的驅(qū)動(dòng)通常都很小 如果你發(fā)現(xiàn)你需要的網(wǎng)卡是灰色的,不能點(diǎn),那么先確定他上一級(jí)的選項(xiàng)已經(jīng)點(diǎn)了,比如你想選NE2000的網(wǎng)卡,就必需先選擇ELSA,VLB,PCI and on board controllers.如果還不能點(diǎn),那么請(qǐng)確定是否已經(jīng)把PCI的支持選項(xiàng)選上了,(在Geneal setup)里.沒(méi)有PCI的支持,PCI的網(wǎng)卡將不能選. A
19、mateur Radio support 不選 IrDA (infrared) support 不選 ISDN subsystem 不選 Old CD-ROM drivers (not SCSI,not IDE) 不選Import core support 因?yàn)楸卷?xiàng)目中要使用到鍵盤和鼠標(biāo),所以選上該項(xiàng),其子項(xiàng)也全部選中。然后把Horizontal screen resoulution 改為 800,vertial scrren resoulution 改為600。Character devices 這一項(xiàng)和block devices一樣重要,這里將作重點(diǎn)講述。如果要在終端上顯示系統(tǒng)信息就必須將
20、virtual terminal 和support for console on virtual terminal 選上。因?yàn)楸卷?xiàng)目中防治系統(tǒng)信息覆蓋掉QT的圖形界面,所以沒(méi)選這兩項(xiàng)。接下來(lái)就是對(duì)串口的指出。因?yàn)楸卷?xiàng)目中需要通過(guò)串口和并口與設(shè)備交互,故下面幾項(xiàng)都要選上:Standard (gtneric18250/16550 and compatible UARTs)serial supportSupport for console serial portExtended dumb serial driver optionsSupport special multport boardsNon-
21、standard serial port supportUnix98 PTY support(telnetd 服務(wù)用到)Parallel printer supportSupport for console on line printerSupport for user-space parallel device drivers哈哈,下面的文件系統(tǒng)可是個(gè)重頭戲哦,配置完這一項(xiàng),整個(gè)內(nèi)核配置也基本急速了。選上下面幾個(gè)常用的文件系統(tǒng)選項(xiàng): Kernel auto mounter support Kernel automounter version 4 support DOS FAT fs supp
22、ort MSDOS fs support UMSDOS:unixlike file system on top of standard MSDOS VFAT fs support EFS file system support/proc file system support 少了他很多軟件和命令都不能運(yùn)行/dev/pts file system for unix98 PTYs telnetd服務(wù)用到ROM file system supportSecond extended fs support cflinux的基本文件系統(tǒng)最后是console drivers這是linux在字符模式下高分辨
23、率顯示的內(nèi)核模塊,前面三個(gè)子項(xiàng)都選上。Frame-buffer support 按鈕是灰色的不能選,別急,回到第一個(gè)大項(xiàng),選上他,然后在Frame-buffer support的子項(xiàng)中選上Support for framebuffer devicesVESA VGA granphics console你也可以選擇其他的顯卡驅(qū)動(dòng),比如nVida的,但是VESA和VGA是通用性最好的,只要不是幾十年前的黑白卡,都兼容VESA和VGA。Support only 8 pixels wide fonts這個(gè)一定要選,否則當(dāng)你給內(nèi)核傳遞vga=768參數(shù),讓linux在字符界面下高分辨率顯示的時(shí)候,系統(tǒng)會(huì)
24、因?yàn)檎也坏胶线m的字體而返回低分辨率模式。好了,所有的內(nèi)核配置到這里就全部結(jié)速了,剩下的幾個(gè)大項(xiàng)全部不用選。保存退出。make depmake baImage編譯好的內(nèi)核放在:/usr/src/linux-2.4.20-8/arch/i386/boot目錄下將其拷貝到CF卡的主分區(qū)上:mount /dev/hdd1 /mntcp /usr/src/linux-2.4.20-8/arch/i386/boot/bzImage /mnt到此為止我們已經(jīng)安裝好了extlinux和內(nèi)核編譯,現(xiàn)在就可以試試剛編譯的內(nèi)核是否能啟動(dòng)了。不過(guò)首先要在bzImage所在的目錄建立extlinux.conf配置文件,
25、告訴extlinux在哪里尋找內(nèi)核和ramdisk。extlinux.conf的格式如下:default emblinuxdisplay logo.txtlabel emblinuxkernel bzImageappend root=/dev/hdc1 initrd=ramdisk.img ide=nodma vga=0 x0314保存即可。注:在工控板上cf卡對(duì)應(yīng)的設(shè)備是hdc所以這里用root=/dev/hdc1 指明根文件系統(tǒng)所在initrd=ramdisk.img 指明ramdisk名稱。ide=nodma 告訴內(nèi)核不使用DMA控制器,這是針對(duì)CF卡的一個(gè)選項(xiàng)。vga=0 x0314
26、指明分辨率為800600執(zhí)行 umount /mnt 卸載CF卡,然后將CF卡插到工控板上上電啟動(dòng),看看是不是能看到系統(tǒng)內(nèi)核啟動(dòng)信息了啊。六 編譯busybox1 busybox簡(jiǎn)介 Busybox是一個(gè)集成一百多個(gè)最長(zhǎng)用的linux命令和工具的軟件,他甚至還集成了http服務(wù)器、dhcp服務(wù)器和telnet服務(wù)器,而所有這些功能卻只有1M左右的大小。我們平時(shí)用的那些linux命令就好比分離的電子元件,而busybox就好比是一個(gè)集成電路,把常用的工具和命令集成壓縮在一個(gè)可執(zhí)行的文件里,功能基本不變,而大小卻小很多倍,在嵌入式式linux中使用非常廣泛?,F(xiàn)在最新的busybox版本是1.5.0
27、可以從busybox的官方網(wǎng)站上下載得到: HYPERLINK Busybox的小身材大作用的特性,給制作嵌入式linux帶來(lái)了極大的方便。2 busybox的用法 可以這樣用busybox #busybox ls 其功能就相當(dāng)于運(yùn)行l(wèi)s命令。 最常用的用法就是建立指向busybox的鏈接,不同的鏈接名稱完成不同的功能 ln s busybox ls 然后運(yùn)行鏈接: #./ls 就相當(dāng)于完成類似的命令功能。雖然所有指令都指向同一個(gè)可執(zhí)行程序busybox但是只要鏈接名不同,完成的功能就不同,busybox就是這么神奇。3 配置busybox busybox的配置程序和linux內(nèi)核菜單配置方式
28、簡(jiǎn)直一模一樣.熟悉用make menuconfig方式配置linux內(nèi)核的朋友很容易上手.#cp busybox-1.5.0.tar.gz /usr/tmp#cd /usr/tmp#tar xvfz busybox-1.5.0.tar.gz#cd busybox-1.5.0#make menuconfig下面是需要編譯進(jìn)busybox的功能選項(xiàng),其他的可以根據(jù)需要自選,但是同樣不要太貪心.General Configuration應(yīng)該選的選項(xiàng)Use devpts filesystem for unix98 PTYSShow verbose applet usage messagesRuntim
29、e SUID/SGID configuration via /etc/busybox.conf Build Optionsbuild shared libbusyboxUse shared libbysybox for busybox 這里把busybox編譯成共享庫(kù)的形式,由于這個(gè)項(xiàng)目中的應(yīng)用程序也用到和busybox一樣的庫(kù)文件,所以就沒(méi)必要把busybox編譯成靜態(tài)庫(kù)的形式了。但是在做軟盤啟動(dòng)盤等空間有限的項(xiàng)目時(shí)最好編譯成靜態(tài)庫(kù)形式。Installation OptionsDont use /usr這個(gè)選項(xiàng)也一定要選,否則make install 后busybox將安裝在原系統(tǒng)的/usr
30、下,這將覆蓋掉系統(tǒng)原有的命令.選擇這個(gè)選項(xiàng)后,make install后會(huì)在busybox目錄下生成一個(gè)叫_install的目錄,里面有busybox和指向他的鏈接.其他選項(xiàng)都是一些linux基本命令選項(xiàng),自己需要哪些命令就編譯進(jìn)去,一般用默認(rèn)的就可以了.配置好后退出并保存.注意:(1) 在Applets大項(xiàng)的shell子項(xiàng)中的Standalone shell 不用選。否則在bin目錄 下將沒(méi)有sh這個(gè)applet(2) 如果 要使用telnetd服務(wù)的話,可以選上Support standalone telnetd(not inexd only)選項(xiàng),這樣在啟動(dòng)telnetd服務(wù)時(shí)就不用in
31、etd 服務(wù)來(lái)管理。(3) 關(guān)于busybox各條命令的使用和選項(xiàng)的詳細(xì)信息請(qǐng)察看 HYPERLINK 官方網(wǎng)站。4 編譯安裝busyboxmake#make install編譯好后在busybox目錄下生成_install目錄,里面的內(nèi)容是:drwxr-xr-x 2 root root 4096 3月 29 18:06 binlrwxrwxrwx 1 root root 11 3月 29 18:06 linuxrc - bin/busyboxdrwxr-xr-x 2 root root 4096 1月 29 18:06 sbin其中可執(zhí)行文件busybox在bin目錄下,其他文件都是指向bu
32、sybox的連接。七制作根文件系統(tǒng)。1 基本的目錄結(jié)構(gòu)linux常見(jiàn)的目錄結(jié)構(gòu)包括bin sbin lib etc dev var proc root home tmp mnt,lost+found,usr,opt等。為了對(duì)文件系統(tǒng)結(jié)構(gòu)有進(jìn)一步的認(rèn)識(shí),這里對(duì)這些目錄作簡(jiǎn)單胡說(shuō)明。Bin :顯然,bin就是二進(jìn)制(binary)的縮寫(xiě),在一般的系統(tǒng)中,你都可以在這個(gè)目錄下找到linux系統(tǒng)常用的命令。Sbin:這個(gè)目錄下通常存放系統(tǒng)管理員的系統(tǒng)管理程序Lib:lib是庫(kù)(library)的縮寫(xiě)。這個(gè)目錄是用來(lái)存放系統(tǒng)動(dòng)態(tài)連接庫(kù)的,幾乎所有的應(yīng)用程序都會(huì)用到該目錄下的共享庫(kù)。Etc:etc這個(gè)目錄
33、是linux系統(tǒng)最重要的目錄之一,在這個(gè)目錄下存放了系統(tǒng)管理是要用到胡各種配制文件和子目錄。我們要用到的網(wǎng)絡(luò)配制文件,文件系統(tǒng),x系統(tǒng)配制文件,設(shè)備配制信息,用戶信息等都在這個(gè)目錄下。 Dev:dev是(device)的英文設(shè)備,這個(gè)目錄對(duì)所有的用戶都十分重要。在這目錄中包含了linux系統(tǒng)的所有外部設(shè)備,這里存放的并不是外部設(shè)備的驅(qū)動(dòng)程序,而是訪問(wèn)這些設(shè)備的端口。有了這些端口對(duì)設(shè)備的訪問(wèn)就象訪問(wèn)文件一樣簡(jiǎn)單。Var:這個(gè)目錄的內(nèi)容是經(jīng)常變動(dòng)的,看名字就知道,我們可以理解為vary的縮寫(xiě)。/var下有/var/log是用來(lái)存放系統(tǒng)日志的目錄。Proc:可以在這個(gè)目錄下獲得系統(tǒng)信息,這些信息是在
34、內(nèi)存中,由系統(tǒng)自己產(chǎn)生的。Root:如果你是以超級(jí)用戶身份登陸的,那么這個(gè)目錄就是你工作的主目錄。Home:如果我們建立一個(gè)用戶aa,那么在home目錄下就會(huì)出現(xiàn)一個(gè)aa目錄,這個(gè)aa目錄就是用戶aa的主目錄。Tmp:用于存放各應(yīng)用程序產(chǎn)生的臨時(shí)文件。Mnt:這個(gè)目錄一般是空的,你可以臨時(shí)將別的文件系統(tǒng)掛載到這個(gè)目錄下。Lost+found:這個(gè)目錄大多數(shù)情況下是空的,但是如果你正在工作突然停電,或沒(méi)有以正常方式關(guān)機(jī),在你重起時(shí),有些文件就找不到應(yīng)該存放的地方,對(duì)于這些文件,系統(tǒng)就將她們放在這個(gè)目錄下,就相當(dāng)于給無(wú)家可歸的人提供一個(gè)臨時(shí)住所。Usr:是系統(tǒng)存放程序的目錄。Opt:是可選目錄,有
35、些軟件默認(rèn)的安裝目錄是這里。好了,了解了文件系統(tǒng)的結(jié)構(gòu),現(xiàn)在就開(kāi)始向各目錄中填充內(nèi)容了。#cd /usr/tmp#mkdir rootfs#cd rootfs#mkdir root home mnt usr opt var proc etc dev tmp myapp其中etc proc 和dev是一定要有的,myapp用于將hdc5上存放的應(yīng)用程序掛載到此目錄下.bin shin 就不用建了,因?yàn)閎usybox中已經(jīng)有了。直接拷貝過(guò)來(lái)就可以了.#cp arf busybox-1.5.0/_install/* .我在制作cflinux過(guò)程中遇到一個(gè)奇怪的bug,就是系統(tǒng)起來(lái)后運(yùn)行/sbin目錄
36、下的指令時(shí)都提示該指令不存在。后來(lái),我把連接地址“./bin/busybox”改為“/bin/busybox”或”/bin/sh”就可以了。建立var目錄中子目錄和連接: #cd var#mkdir lib#ln s /tmp lock#ln s /tmp log#ln s /tmp pcmcia#ln s /tmp run#ln s /tmp spool#/n s /tmp tmp3 建立設(shè)備文件#cd /usr/tmp/rootfs/dev 你可以用mknod手工建立,也可以直接從原系統(tǒng)的/dev目錄下拷貝過(guò)來(lái).手工建立的方法:#ls -l /dev/consolecrw 1 root r
37、oot 5, 1 11月 30 09:02 /dev/console這樣就查看到了console設(shè)備的主設(shè)備號(hào)是5,輔設(shè)備號(hào)是1,是一個(gè)標(biāo)記為C的字符設(shè)備.于是,我們可以用mknod建立一個(gè)同樣的設(shè)備文件:#mknod console c 5 1但是手工方法建立太麻煩了,通常直接從/dev下把需要的設(shè)備文件拷貝過(guò)來(lái).這些設(shè)備文件是特殊文件,在拷貝時(shí)一定要加上-arf參數(shù)才能拷貝.#cp -arf /dev/console ./#cp -arf /dev/null ./#cp -arf /dev/zero ./.以下是我認(rèn)為需要的設(shè)備名: console core fb fb0 fb1 hda1
38、 hda2 hdb hdb1 hdb2 hdc hdc1 hdc2 hdc3 hdc4 hdc5 hdc6 hdc7 hdc8 hdc9 hdd hdd1 hdd2 kmem loop0 loop1 loop2 loop3 loop4 loop5 mem null psaux psmouse ptmx pts ram ram0 ram1 ram2 ram3 ram4 ram5 ram6 ram7 ram8 ram9 ramdisk random sda sda1 sda2 sdb sdb1 sdb2 sdc sdc1 sdc2 stderr stdin stdout systty tty tt
39、y0 tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 tty9 ttyS0 ttyS1 ttyS2 ttyS5 ttyS5 urandom zero 其中console ram ram1 tty1 null zero loop fb0 fb等是必須的。至于其他的一些設(shè)備可以根據(jù)實(shí)際情況進(jìn)行剪裁。建立etc下的配制文件busybox.conf group inittab motd matb passwd resolv.conf shadow- fstab init.d(目錄) issue profile shadow inputrc issue protocols
40、 securetty services network(目錄)busybox.conf motd matb 是一個(gè)空文件. Protocols和services直接重系統(tǒng)目錄下拷貝過(guò)來(lái)Cp f /etc protocols services ./其他文件內(nèi)容如下:group:root:x:0:cf:x:1001:inittab:# /etc/inittab# Copyright (C) 2001 Erik Andersen # Note: BusyBox init doesnt support runlevels. The runlevels field is# completely igno
41、red by BusyBox init. If you want runlevels, use# sysvinit.# Format for each entry: :# id = tty to run on, or empty for /dev/console# runlevels = ignored# action = one of sysinit, respawn, askfirst, wait, and once# process = program to run# Startup the systemnull:sysinit:/bin/mount -o remount,rw /nul
42、l:sysinit:/bin/mount -t proc proc /procnull:sysinit:/bin/mount -a /etc/mtabnull:sysinit:/bin/hostname -F /etc/hostnamenull:sysinit:/sbin/ifconfig lo upnull:sysinit:/sbin/ifconfig -a eth0null:sysinit:/sbin/ifconfig eth0 4 netmask 92null:sysinit:/sbin/route add -net netmask lonull:sysinit:/sbin/route
43、add -net netmask 55 eth0# now run any rc scripts:sysinit:/etc/init.d/rcS# Set up a couple of gettys# 使用login登陸管理tty1:respawn:/sbin/getty 38400 tty1 #不需要登陸直接進(jìn)入控制臺(tái),進(jìn)行操作#tty1:respawn:/bin/shtty2:askfirst:/bin/sh# Put a getty on the serial port#ttyS0:respawn:/sbin/getty -L ttyS0 115200 vt100# Stuff to d
44、o for the 3-finger salute:ctrlaltdel:/sbin/reboot:restart:/sbin/init# Stuff to do before rebootingnull:shutdown:/bin/umount -a rpasswd:root:x:0:0:root:/root:/bin/shcf:x:1001:0:Linux User,:/home/soullon:/bin/sh shadow: root:10933:0:99999:7:cf:13604:0:99999:7:注意:這里兩個(gè)用戶都沒(méi)設(shè)密碼,如果要加密碼胡話在用戶名后的第一個(gè)“:”和第二個(gè)“:”
45、之間加上密碼胡hash值。如:root:$1$NuFDgiiI$664QR8N4HSdgkUDKpxEB00:10933:0:99999:7:shadow-:root:10933:0:99999:7:cf:13604:0:99999:7:resolv.conf /tmp/resolv.conffstab: /dev/hdc1 / ext2 defaults 1 1/dev/hdc1 / ext2 defaults 1 1none /proc proc defaults 0 0usbdevfs /proc/bus/usb usbdevfs rw 0 0none /dev/pts devpts r
46、w,gid=5,mode=620 0 0none /tmp tmpfs defaults 0 0/dev/hdc5 /myapp ext2 defaults 0 0init.d(目錄):rcS:#start inetd and telnetd/sbin/telnetd -p 23#run myappexport QTDIR=/yysgexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/myapp/lib:/usr/libcd /myapp./myapp qws issue: Welcome to CFLinuxprofile :# /.bashrc: execut
47、ed by bash(1) for non-login interactive shells.export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/bin# If running interactively, then:if $PS1 ; then if $BASH ; thenexport PS1=uh W$ alias ll=/bin/ls -color=tty -laFhn/ls -color=tty -Fexport LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;
48、33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.png=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;3
49、5:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:; else if id -u -eq 0 ; then export PS1=# elseexport PS1=$ fi fi export USER=id -un export LOGNAME=$USER export HOSTNAME=/bin/host
50、name export HISTSIZE=1000 export HISTFILESIZE=1000 export PAGER=/bin/more export EDITOR=/bin/vi export INPUTRC=/etc/inputrc export DMALLOC_OPTIONS=debug=0 x34f47d83,inter=100,log=logfile # Some aliases alias ps2=ps facux alias ps1=ps faxo %U %t %p %a alias af=ps af alias cls=clear alias df=df -h ali
51、as indent=indent -bad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs -npsl -nsc -nsob -nss -ts4 #alias bc=bc -l alias minicom=minicom -c on alias calc=calc -Cd alias bc=calc -Cd fi;inputrc:# /etc/inputrc - global inputrc for librea
52、dline# See readline(3readline) and info readline for more information.# Be 8 bit clean.set input-meta onset output-meta onset bell-style visible# To allow the use of 8bit-characters like the german umlauts, comment out# the line below. However this makes the meta key not work as a meta key,# which i
53、s annoying to those which dont need to type in 8-bit characters.# set convert-meta offe0d: backward-worde0c: forward-wordeh: beginning-of-lineef: end-of-linee1: beginning-of-linee4: end-of-line#e5: beginning-of-history#e6: end-of-historye3: delete-chare2: quoted-insert# Common standard keypad and cu
54、rsor# (codes courtsey Werner Fink, )#e1: history-search-backwarde2: yanke3: delete-char#e4: set-marke5: history-search-backwarde6: history-search-forward# Normal keypad and cursor of xtermeF: end-of-lineeH: beginning-of-line# Application keypad and cursor of xtermeOA: previous-historyeOC: forward-chareOB: next-historyeOD: backward-chareOF: end-of-lineeOH: beginning-of-linesecuretty:tty1tty2t
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年B116型一氧化碳中溫變換催化劑合作協(xié)議書(shū)
- 2025年大功率電源及系統(tǒng)合作協(xié)議書(shū)
- 2025年微電子組件合作協(xié)議書(shū)
- 北京和協(xié)航電科技有限公司的射頻研發(fā)筆試題
- 2025年中班幼兒園教師年度個(gè)人工作總結(jié)(四篇)
- 2025年節(jié)能高效果汁濃縮設(shè)備合作協(xié)議書(shū)
- 2025年鄉(xiāng)村企業(yè)職工勞動(dòng)合同(五篇)
- 2025年產(chǎn)品租賃協(xié)議樣本(2篇)
- 2025年九年級(jí)上冊(cè)數(shù)學(xué)教學(xué)工作總結(jié)模版(三篇)
- 2025年二人合伙開(kāi)店協(xié)議標(biāo)準(zhǔn)版本(三篇)
- 會(huì)陰擦洗課件
- 2024年交管12123學(xué)法減分考試題庫(kù)和答案
- 臨床下肢深靜脈血栓的預(yù)防和護(hù)理新進(jìn)展
- 呼吸道疾病的健康宣教
- 動(dòng)物生產(chǎn)與流通環(huán)節(jié)檢疫(動(dòng)物防疫檢疫課件)
- 裝配式建筑預(yù)制構(gòu)件安裝-預(yù)制構(gòu)件的吊裝
- 英語(yǔ)主語(yǔ)從句省公開(kāi)課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件
- 上海天文館分析
- 中醫(yī)睡眠養(yǎng)生中心方案
- 大學(xué)生返家鄉(xiāng)社會(huì)實(shí)踐報(bào)告
- 《醫(yī)學(xué)免疫學(xué)實(shí)驗(yàn)》課件
評(píng)論
0/150
提交評(píng)論