版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 在CF卡上安裝嵌入式linux全過程 吳剛 2007-4-4摘要:本文主要介紹在一塊128M的CF卡上定制安裝linux操作系統(tǒng),并在此基礎(chǔ)上建立一個簡單的應(yīng)用平臺。關(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)用又比較簡單,為保證系統(tǒng)的穩(wěn)定性和便攜性通常使用DOM卡或CF卡一類的存儲設(shè)備來代替硬盤。經(jīng)過一段時間的摸索和收集資料終于在一塊CF卡上實踐安裝了一個滿足特定需要的嵌入式linux系統(tǒng),這里取名為cf
2、linux.在這里首先要感謝babylinux制作全過程的作者,正是這片文章,為我制作cflinux指明了道路。本文將講述在一張容量為128M的CF卡上定制安裝嵌入式linux操作系統(tǒng)的詳細過程,一 主機和目標機情況簡介 主機: Linux:Red Hat 9.0Kernel: 2.4.20 目標機: 基于X86的工控板二 cflinux簡介cflinux是一運行于CF卡上的經(jīng)過自定義剪裁的嵌入式linux操作系統(tǒng)。因其運行于CF卡上,故取名為cflinux.當此操作系統(tǒng)和應(yīng)用環(huán)境搭建好后可以通過網(wǎng)絡(luò)telnet和串口訪問目標板,可運行QT/E圖形界面應(yīng)用程序??梢酝ㄟ^串口,網(wǎng)口和USB口和外
3、圍設(shè)備交互。既可作為嵌入式操作系統(tǒng),也可作為啟動盤作為系統(tǒng)維護工具。三 linux得引導(dǎo)過程簡介 在系統(tǒng)啟動時,主板上的BIOS會讀取硬盤的主引導(dǎo)記錄(MBR),MBR中存放的是一段很小的程序,他的功能是從硬盤讀取操作系統(tǒng)核心文件并運行,因為這個程序太小了,因此通常這個小程序不具備直接引導(dǎo)系統(tǒng)內(nèi)核的能力,他先區(qū)引導(dǎo)另一個稍微大一點的小程序去引導(dǎo)系統(tǒng)內(nèi)核。在linux系統(tǒng)中這樣得小程序有LILO,GRUB和SYSLINUX等。我們在這個項目中這里用到的引導(dǎo)程序是SYSLINUX得一個分支:EXTLINUX。 Linux系統(tǒng)內(nèi)核被引導(dǎo)程序裝進內(nèi)存并運行后,linux內(nèi)核會檢測系統(tǒng)中得各種硬件,并做
4、好硬件得初始化工作,使他們在系統(tǒng)正式運行后能正常工作。剩下就是linux內(nèi)核要做得最后一個工作:運行/sbin下得init程序。Init是英文單詞(initialization)初始化得簡稱,init程序得工作是讀取/etc/inittab文件中的指令,對系統(tǒng)的各種軟硬件環(huán)境做最初的初始化工作,最后運行g(shù)ettty活mingetty等待用戶輸入用戶名和密碼(當然根據(jù)需要也可以跳過登錄這個步驟,直接以root身份登錄)。所有的工作就是這么簡單。明白了這個道理,你也可以寫一些腳本程序讓他在系統(tǒng)啟動時的特定時間完成運行,完成你指定的任務(wù)。/sbin/init程序只是系統(tǒng)默認的運行的第一個程序,他可以
5、是一個二進制程序也可以是一段bash腳本,一個指向另一個程序的鏈接。他的位置也并不一定在/sbin下,只要啟動內(nèi)核時加上init參數(shù)節(jié)能被運行,開始時給內(nèi)核加上init/bin/sh參數(shù),內(nèi)核就能直接運行時并給出提示符,不需要登陸。四 extlinux安裝 EXTLINUX是SYSLINUX的一個新的派生??梢詮膌inux系統(tǒng)的ext2和ext3文件系統(tǒng)啟動。EXTLINUX使用和SYSLINUX相似,只需做一點改動即可。首先從 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 進行解壓。然后用IDE to CF轉(zhuǎn)接卡把CF卡連到主機上(注意:一般CF卡是不支持熱插拔的,故插上CF后一般需要重新啟動主機系統(tǒng))。我的CF卡對應(yīng)的設(shè)備文件是hdd1.在這里先使用fdisk工具把CF卡分成兩個區(qū),一個用于存放內(nèi)核和randisk,另一個用于存放應(yīng)用程序及相關(guān)文件。Fdisk的使用可參見相關(guān)資料,這里不做詳細說明。我的CF卡主分區(qū)為hdd1,擴展分區(qū)為hdd2,將所有的擴展分區(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保留空間一切準備好后,就可以安裝EXTKINUX了,安裝步驟如下:mount t auto /dev/hdd1 /mntcd /usr/tmp/syslinux-3.20/extlinux./extlinux i /mnt安裝成功后會提示extlinux 成功安裝到/mnt,然后在/mnt目錄下會出現(xiàn)extlinux.sys文件。umount /mnt 至此extlinux已經(jīng)安裝完畢,可以把CF卡插到工控板上,上電啟動一下看看有什么效果。
8、如果安裝成功的話,啟動后會出現(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的詳細使用方法,請參閱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)在開始內(nèi)核的編譯工作。
9、首先準備好內(nèi)核代碼,可以到官方網(wǎng)站上下載,我的內(nèi)核源碼是安裝linux時帶上的,在/usr/src/linux-2.4/目錄下。 cd /usr/src/linux-2.4 make mrproper 清理源碼樹 make menuconfig然后對各項取舍如下:(至于具體配置項的意義,請參考相關(guān)資料,不在本文討論范圍之內(nèi))code maturity level options先不選,當我們配置好常規(guī)的東西,要加入framebuffer支持時再將這一項選上。因為在2.4.20版本中,對frambuffer的支持尚屬于試驗性代碼,如果不選擇此項將不能配置frambuffer.Load modul
10、e support取消選擇此項,為了簡化系統(tǒng)的制作,這個項目中將不選擇可加載內(nèi)核模塊的支持。Processer type and featuresProcessor family中選擇你需要的cpu類型,如果你想讓老至386,新到p4的CPU都能運行cflinux的話,請選擇386,否則根據(jù)實際情況來選擇。建議選386。General setupNetworking support 都選上PCI支持 選上,除非你不用PCI設(shè)備,不過一般人都要的,因為大部分的網(wǎng)卡都是PCI的。System V ipc 選上Systrl support選上Kernel support for ELF 選上其他內(nèi)容
11、如果沒什么特殊需要,都不選。Memory technology devices(MTD) 不選Parallel port support 由于本項目中需要使用并口打印機,故將此項選上Plug and play configuration 不選Block devices Normal floppy disk support 不選Loopback device supportRAM disk supportInitial RAM disk(initrd)supportPer partion statics in /proc/partions以上幾項都選上。由于這幾項比較重要這里做詳細說明。Loop
12、back device 即回環(huán)設(shè)備,我們平時用的命令瓜子ramdisk或光盤鏡像時都用到回環(huán)設(shè)備。如:mount o loop ramdisk.img /mntRAM disk support 即內(nèi)存磁盤(比較貼切的說法是虛擬磁盤,即撥出一部分內(nèi)存當磁盤用)。本項目中將所有系統(tǒng)的的文件都做成ramdisk,所以在運行時你在根文件系統(tǒng)上所作的操作都是在內(nèi)存中完成的,但形式上和在真正的磁盤上運行一樣。只不過放在RAM disk上的所有內(nèi)容會在系統(tǒng)關(guān)閉后全部消失。不僅在運行cflinux時用到ramdisk,我們在制作根文件系統(tǒng)時也用到ramdisk。學(xué)習(xí)ramdisk的使用也是制作cflinux的
13、重要目標之一。在linux中還支持另外一種虛擬磁盤:shm.(shared memory),這種要虛擬磁盤機制比ramdisk更加先進。Ramdisk的大小是固定的,由編譯內(nèi)核時的default ram disk size決定,默認為4096K,因為本項目中要往ramdisk中放很多東西,故這里我們要將其改為8192K(8M)。也可以在內(nèi)核加載錢加上ramdisk_size=參數(shù)來決定他的大小,但系統(tǒng)一啟動,ramdisk的大小是不能改變的,而shm的大小卻是動態(tài)改變的。默認情況下為物理內(nèi)存的一半,當系統(tǒng)需要更多內(nèi)存的時候,他就自動縮小。系統(tǒng)內(nèi)存富余時,他又會自動增大,這樣可以充分靈活的利用內(nèi)
14、存空間,shm通常作為磁盤的高速緩存,放在系統(tǒng)運行中的臨時文件等。既然shm這么好,為什么這里還使用ramdisk呢,因為ramdisk可以很方便的在系統(tǒng)啟動時加載,而shm則沒那么容易。Initial RAM disk(initrd)support即初始化ramdisk支持,這個選項讓內(nèi)核有能力在內(nèi)核加載階段就能裝入RAMDISK,并運行其中的內(nèi)容。否則只能在系統(tǒng)運行階段用ramdisk,我們平時編譯了一個內(nèi)核后,如果你的根文件系統(tǒng)用的是ext3,而你沒有把ext編譯進內(nèi)核,而作為一個模塊編譯了,那么就需要用mkinitrd命令做一個initrd,這個ramdisk里放了ext3的模塊,這樣
15、內(nèi)核在加載根文件系統(tǒng)前就能正確識別ext3系統(tǒng),否則內(nèi)核加載的最后一步就會出現(xiàn)kernel panic cant not find init.的錯誤。Per partion statics in /proc/partions這個選項不是必須的,但是不把這個選項編譯進內(nèi)核在執(zhí)行fdisk指令時就會提示找不到/proc/partions,另外還可能出現(xiàn)不能以簡寫的掛載命令來掛載文件系統(tǒng)。所以我把該選項也編譯進內(nèi)核。Multidevice support(RAID and LVM) 不選Cryptography support(CryptoAPI) 不選Networking options在這一大項
16、中需要把下列項目編譯進內(nèi)核:Packet socket:mmapped IOTCP/IP networking對于IP:advanced router 這項,如果你想重點把cflinux用做靜態(tài)路由軟件,那么把這項編譯進去。另外unix domain sockets 這項也不必選擇,只有運行X的情況下才需要這項。Telephony support 不選ATA/IDE/MFM/RLL support 選上,然后在下面的“IDE,ATA and ATAPI Block Devices”按鈕就被激活,下面幾項選上,其余都不用選Enhanced IDE/MFM/RLL disk/cdrom/tape/
17、floppy supportInclude IDE/ATA-2 DISK supportAuto-Geometry Resizing supportInclude IDE/ATA CDROM supportSCSI support 因為這個項目中是通過CF卡啟動的,所以把這項也選上。在這個大項中只需選擇一下3項即可:SCSI disk supportSCSI generic supportSCSI tape supportFusion MPT device support 不選IEEE1394(FireWrite)support 不選I2O device support 選上,子項全部選上Ne
18、twork device support 選上,這樣就可以支持網(wǎng)卡了,其余都選擇N.然后點Ethernet(10 or 100 Mbit)按鈕選擇你需要的網(wǎng)卡驅(qū)動,你可以把最常見的幾種Reltek8139,NE2000,3COM等網(wǎng)卡編譯進內(nèi)核.雖然網(wǎng)卡的驅(qū)動通常都很小 如果你發(fā)現(xiàn)你需要的網(wǎng)卡是灰色的,不能點,那么先確定他上一級的選項已經(jīng)點了,比如你想選NE2000的網(wǎng)卡,就必需先選擇ELSA,VLB,PCI and on board controllers.如果還不能點,那么請確定是否已經(jīng)把PCI的支持選項選上了,(在Geneal setup)里.沒有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 因為本項目中要使用到鍵盤和鼠標,所以選上該項,其子項也全部選中。然后把Horizontal screen resoulution 改為 800,vertial scrren resoulution 改為600。Character devices 這一項和block devices一樣重要,這里將作重點講述。如果要在終端上顯示系統(tǒng)信息就必須將
20、virtual terminal 和support for console on virtual terminal 選上。因為本項目中防治系統(tǒng)信息覆蓋掉QT的圖形界面,所以沒選這兩項。接下來就是對串口的指出。因為本項目中需要通過串口和并口與設(shè)備交互,故下面幾項都要選上: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)可是個重頭戲哦,配置完這一項,整個內(nèi)核配置也基本急速了。選上下面幾個常用的文件系統(tǒ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 少了他很多軟件和命令都不能運行/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)核模塊,前面三個子項都選上。Frame-buffer support 按鈕是灰色的不能選,別急,回到第一個大項,選上他,然后在Frame-buffer support的子項中選上Support for framebuffer devicesVESA VGA granphics console你也可以選擇其他的顯卡驅(qū)動,比如nVida的,但是VESA和VGA是通用性最好的,只要不是幾十年前的黑白卡,都兼容VESA和VGA。Support only 8 pixels wide fonts這個一定要選,否則當你給內(nèi)核傳遞vga=768參數(shù),讓linux在字符界面下高分辨率顯示的時候,系統(tǒng)會
24、因為找不到合適的字體而返回低分辨率模式。好了,所有的內(nèi)核配置到這里就全部結(jié)速了,剩下的幾個大項全部不用選。保存退出。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)核是否能啟動了。不過首先要在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卡對應(yīng)的設(shè)備是hdc所以這里用root=/dev/hdc1 指明根文件系統(tǒng)所在initrd=ramdisk.img 指明ramdisk名稱。ide=nodma 告訴內(nèi)核不使用DMA控制器,這是針對CF卡的一個選項。vga=0 x0314
26、指明分辨率為800600執(zhí)行 umount /mnt 卸載CF卡,然后將CF卡插到工控板上上電啟動,看看是不是能看到系統(tǒng)內(nèi)核啟動信息了啊。六 編譯busybox1 busybox簡介 Busybox是一個集成一百多個最長用的linux命令和工具的軟件,他甚至還集成了http服務(wù)器、dhcp服務(wù)器和telnet服務(wù)器,而所有這些功能卻只有1M左右的大小。我們平時用的那些linux命令就好比分離的電子元件,而busybox就好比是一個集成電路,把常用的工具和命令集成壓縮在一個可執(zhí)行的文件里,功能基本不變,而大小卻小很多倍,在嵌入式式linux中使用非常廣泛?,F(xiàn)在最新的busybox版本是1.5.0
27、可以從busybox的官方網(wǎng)站上下載得到: HYPERLINK Busybox的小身材大作用的特性,給制作嵌入式linux帶來了極大的方便。2 busybox的用法 可以這樣用busybox #busybox ls 其功能就相當于運行l(wèi)s命令。 最常用的用法就是建立指向busybox的鏈接,不同的鏈接名稱完成不同的功能 ln s busybox ls 然后運行鏈接: #./ls 就相當于完成類似的命令功能。雖然所有指令都指向同一個可執(zhí)行程序busybox但是只要鏈接名不同,完成的功能就不同,busybox就是這么神奇。3 配置busybox busybox的配置程序和linux內(nèi)核菜單配置方式
28、簡直一模一樣.熟悉用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下面是需要編譯進busybox的功能選項,其他的可以根據(jù)需要自選,但是同樣不要太貪心.General Configuration應(yī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編譯成共享庫的形式,由于這個項目中的應(yīng)用程序也用到和busybox一樣的庫文件,所以就沒必要把busybox編譯成靜態(tài)庫的形式了。但是在做軟盤啟動盤等空間有限的項目時最好編譯成靜態(tài)庫形式。Installation OptionsDont use /usr這個選項也一定要選,否則make install 后busybox將安裝在原系統(tǒng)的/usr
30、下,這將覆蓋掉系統(tǒng)原有的命令.選擇這個選項后,make install后會在busybox目錄下生成一個叫_install的目錄,里面有busybox和指向他的鏈接.其他選項都是一些linux基本命令選項,自己需要哪些命令就編譯進去,一般用默認的就可以了.配置好后退出并保存.注意:(1) 在Applets大項的shell子項中的Standalone shell 不用選。否則在bin目錄 下將沒有sh這個applet(2) 如果 要使用telnetd服務(wù)的話,可以選上Support standalone telnetd(not inexd only)選項,這樣在啟動telnetd服務(wù)時就不用in
31、etd 服務(wù)來管理。(3) 關(guān)于busybox各條命令的使用和選項的詳細信息請察看 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é)構(gòu)包括bin sbin lib etc dev var proc root home tmp mnt,lost+found,usr,opt等。為了對文件系統(tǒng)結(jié)構(gòu)有進一步的認識,這里對這些目錄作簡單胡說明。Bin :顯然,bin就是二進制(binary)的縮寫,在一般的系統(tǒng)中,你都可以在這個目錄下找到linux系統(tǒng)常用的命令。Sbin:這個目錄下通常存放系統(tǒng)管理員的系統(tǒng)管理程序Lib:lib是庫(library)的縮寫。這個目錄是用來存放系統(tǒng)動態(tài)連接庫的,幾乎所有的應(yīng)用程序都會用到該目錄下的共享庫。Etc:etc這個目錄
33、是linux系統(tǒng)最重要的目錄之一,在這個目錄下存放了系統(tǒng)管理是要用到胡各種配制文件和子目錄。我們要用到的網(wǎng)絡(luò)配制文件,文件系統(tǒng),x系統(tǒng)配制文件,設(shè)備配制信息,用戶信息等都在這個目錄下。 Dev:dev是(device)的英文設(shè)備,這個目錄對所有的用戶都十分重要。在這目錄中包含了linux系統(tǒng)的所有外部設(shè)備,這里存放的并不是外部設(shè)備的驅(qū)動程序,而是訪問這些設(shè)備的端口。有了這些端口對設(shè)備的訪問就象訪問文件一樣簡單。Var:這個目錄的內(nèi)容是經(jīng)常變動的,看名字就知道,我們可以理解為vary的縮寫。/var下有/var/log是用來存放系統(tǒng)日志的目錄。Proc:可以在這個目錄下獲得系統(tǒng)信息,這些信息是在
34、內(nèi)存中,由系統(tǒng)自己產(chǎn)生的。Root:如果你是以超級用戶身份登陸的,那么這個目錄就是你工作的主目錄。Home:如果我們建立一個用戶aa,那么在home目錄下就會出現(xiàn)一個aa目錄,這個aa目錄就是用戶aa的主目錄。Tmp:用于存放各應(yīng)用程序產(chǎn)生的臨時文件。Mnt:這個目錄一般是空的,你可以臨時將別的文件系統(tǒng)掛載到這個目錄下。Lost+found:這個目錄大多數(shù)情況下是空的,但是如果你正在工作突然停電,或沒有以正常方式關(guān)機,在你重起時,有些文件就找不到應(yīng)該存放的地方,對于這些文件,系統(tǒng)就將她們放在這個目錄下,就相當于給無家可歸的人提供一個臨時住所。Usr:是系統(tǒng)存放程序的目錄。Opt:是可選目錄,有
35、些軟件默認的安裝目錄是這里。好了,了解了文件系統(tǒng)的結(jié)構(gòu),現(xiàn)在就開始向各目錄中填充內(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 就不用建了,因為busybox中已經(jīng)有了。直接拷貝過來就可以了.#cp arf busybox-1.5.0/_install/* .我在制作cflinux過程中遇到一個奇怪的bug,就是系統(tǒng)起來后運行/sbin目錄
36、下的指令時都提示該指令不存在。后來,我把連接地址“./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目錄下拷貝過來.手工建立的方法:#ls -l /dev/consolecrw 1 root r
37、oot 5, 1 11月 30 09:02 /dev/console這樣就查看到了console設(shè)備的主設(shè)備號是5,輔設(shè)備號是1,是一個標記為C的字符設(shè)備.于是,我們可以用mknod建立一個同樣的設(shè)備文件:#mknod console c 5 1但是手工方法建立太麻煩了,通常直接從/dev下把需要的設(shè)備文件拷貝過來.這些設(shè)備文件是特殊文件,在拷貝時一定要加上-arf參數(shù)才能拷貝.#cp -arf /dev/console ./#cp -arf /dev/null ./#cp -arf /dev/zero ./.以下是我認為需要的設(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ù)實際情況進行剪裁。建立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 是一個空文件. Protocols和services直接重系統(tǒng)目錄下拷貝過來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 #不需要登陸直接進入控制臺,進行操作#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:注意:這里兩個用戶都沒設(shè)密碼,如果要加密碼胡話在用戶名后的第一個“:”和第二個“:”
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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深入解析技術(shù)服務(wù)合同范本模板
- 保安服務(wù)提供商合同
- 延期還款協(xié)議
- 物資招標文件寫作技巧
- 水利建設(shè)合同協(xié)議
- 貨品購買合同格式
- 專業(yè)合同協(xié)議合規(guī)管理方法服務(wù)
- 聯(lián)營共營合同范例
- 心理輔導(dǎo)與咨詢服務(wù)
- 節(jié)能改造合同能源
- 提高髖關(guān)節(jié)置換患者VTE防控措施落實PDCA
- 廣西2023年廣西北部灣銀行校園招聘考試參考題庫含答案詳解
- 大學(xué)生心理健康教育讀本PPT(第2版)高職完整全套教學(xué)課件
- 加油站安全檢查表分析(SCL)及評價記錄
- 豐田車系卡羅拉(雙擎)轎車用戶使用手冊【含書簽】
- 幼兒園突發(fā)安全事件事故處置措施
- 現(xiàn)代藥物制劑與新藥研發(fā)智慧樹知到答案章節(jié)測試2023年蘇州大學(xué)
- 肺結(jié)核的學(xué)習(xí)課件
- 心肺復(fù)蘇術(shù)最新版
- 2023-2024學(xué)年貴州省貴陽市小學(xué)數(shù)學(xué)六年級上冊期末自測提分卷
- GB/T 9115.2-2000凹凸面對焊鋼制管法蘭
評論
0/150
提交評論