如何構(gòu)建嵌入式Linux系統(tǒng)_第1頁
如何構(gòu)建嵌入式Linux系統(tǒng)_第2頁
如何構(gòu)建嵌入式Linux系統(tǒng)_第3頁
如何構(gòu)建嵌入式Linux系統(tǒng)_第4頁
如何構(gòu)建嵌入式Linux系統(tǒng)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

構(gòu)建嵌入式Linux系統(tǒng)1.取本實驗相關(guān)的軟件包到ftp下載以下軟件包:備注制作交叉編譯工具鏈所需的源碼包文件名binutils-2.16.1.tar.bz2gcc-4.0.2.tar.bz2glibc_2.3.6.tar.bz2glibc-linuxthreads-2.3.6.tar.bz2linux-.tar.bz21inux-1ibc-headers-.tar.bz2備注制作交叉編譯工具鏈所需的源碼包這時屏幕上出現(xiàn)很多內(nèi)核啟動信息,之后提示登錄,輸入root即可登錄。(none)login:root現(xiàn)在可以試試各種Linux基本命令。注意cramfs是只讀文件系統(tǒng),在開發(fā)板上運行時不能改動里面的文件。有些時候我們可能會嘗試配置不同的內(nèi)核選項,會得到不同的幾個內(nèi)核zlmage文件,這樣都燒寫到flash上再reset啟動太浪費時間,可以用tftp把內(nèi)核zImage加載到內(nèi)存0x30008000地址上,不燒寫,直接用myboot0x30008000去啟動內(nèi)存上的內(nèi)核。如下圖示:AKAE2440#AKAE2440#tftp0x30008000myzlmageFilename?myzlmage1.箱adaddress:0x30008000Loading:##################################################################################################################################################################################################################################################################################################doneBytestransferred=1483828(16a434hex)AKAE2440#myboot0x3OOO8OOO|CTRL-AZforhelp|1152008N1|NOR|Minicom2.3-rc|VT102|Offline將自己定制的根文件系統(tǒng)下載到開發(fā)板運行“根文件系統(tǒng)”是一種不嚴格的說法,其實是指文件系統(tǒng)中的文件和目錄,這些文件和目錄構(gòu)成了一個Linux系統(tǒng)運行所需的基本框架。ftp上的rootfs-basic.tar是根文件系統(tǒng)的打包,由于包含設(shè)備文件,需要root權(quán)限才能解包:~$sudotarxfrootfs-basic.tar解包后可以根據(jù)自己的需要修改其中的目錄和文件,然后將根文件系統(tǒng)目錄制作成cramfs映像再下到開發(fā)板運行,這樣就達到了修改根文件系統(tǒng)中的目的。首先確認你的主機上安裝了軟件包cramfsprogs,然后制作cramfs文件系統(tǒng)映像:~$mkcramfs?/rootfsrootfs.cramfs然后按照前面的步驟把rootfs.cramfs下載到開發(fā)板的ext2分區(qū),運行一下試試。設(shè)置開發(fā)板的啟動方式為NFSRoot基本思想是:在主機上開NFS服務(wù)器,把主機上的?/rootfs目錄導(dǎo)出為NFS服務(wù)目錄,使開發(fā)板一啟動就自動加載主機的?/rootfs目錄為根文件系統(tǒng),省去了下載和燒寫映像的麻煩,在主機上修改根文件系統(tǒng)中的文件立刻在開發(fā)板的系統(tǒng)上生效,在開發(fā)過程中十分便利。首先在主機上安裝和配置NFS服務(wù),確認你的主機安裝了nfs-kernel-server軟件包。然后修改配置文件/etc/exports,添加下面一行(注意*號后面緊跟左括號,無空格,每個逗號后面也不能有空格):/home/akaedu/rootfs*(rw,sync,no_root_squash)這表示我們把上一節(jié)中通過解壓rootfs-basic.tar得到的/home/akaedu/rootfs/目錄設(shè)置為nfs服務(wù)目錄。更改配置后需要重啟NFS服務(wù):~$sudo/etc/init.d/nfs-kernel-serverrestart用rpcinfo-p命令看一下portmapper和nfs服務(wù)是否正常啟動了,用exportfs命令看一下導(dǎo)出目錄的設(shè)置是否正確。進入開發(fā)板的bootloader,修改內(nèi)核啟動參數(shù):AKAE2440#setbootcmdnandread0x30008000kernel0x200000\;myboot0x30008000AKAE2440#setbootargsnoinitrdconsole=ttySACO,115200AKAE2440#setinit/linuxrcAKAE2440#setnfsroot/home/akaedu/rootfsAKAE2440#setbootmodenfsAKAE2440#saveAKAE2440#reset真正完整的內(nèi)核啟動命令行參數(shù)是:noinitrdconsole=ttySAC0,115200init=/linuxrcroot=/dev/nfsnfsroot=1:/home/akaedu/rootfsmtdparts=akae2440-nand:IM(u-boot),2M(kernel),16M(ext2),45M(temp)ip=00:192,168.2.21:1:255,255.255.0::ethO:off注意,如果某一項參數(shù)很長,而miniconi提供的終端卻不能自動換行,一行寫不下的部分只好盲打了,注意不要打錯。如果是圖形界面的console,可以把字體調(diào)小使得一行可以容得下這么長的參數(shù),或者在gedit寫字板程序中寫好后直接粘貼到console窗口(我們推薦采用這種方法,把經(jīng)常用到的啟動參數(shù)都集中寫好,以后可以選擇對應(yīng)的參數(shù)直接粘貼就好了,非常方便)。關(guān)于NFS根文件系統(tǒng)的內(nèi)核啟動參數(shù)參考內(nèi)核源代碼的Documentation/nfsroot.txt文檔?,F(xiàn)在可以自己交叉編譯一些小程序,然后拷貝到主機的?/rootfs目錄,我們可以立刻在開發(fā)板上運行該程序,而不需要重新下載和燒寫了。3.4配,3.4配,[YAFFS文件系統(tǒng)cramfs是只讀文件系統(tǒng),在Flash上壓縮存儲,解壓并加載到RAM運行。由于只讀因而功能上很受限制,但可以保護系統(tǒng)文件不被意外的寫操作損壞。實際產(chǎn)品往往配置兩個Flash分區(qū),一個只讀分區(qū)用于存放系統(tǒng)文件(程序文件和庫文件),另一個可寫分區(qū),采用JFFS或YAFFS文件系統(tǒng),用于存放應(yīng)用程序數(shù)據(jù),為了簡便起見,我們只分一個區(qū),使用可寫的YAFFS文件系統(tǒng)。注意,完成這個實驗之前先要完成上一節(jié)內(nèi)容,能啟動到nfs根文件系統(tǒng)。首先用NFS方式啟動系統(tǒng)。YAFFS文件系統(tǒng)和我們熟悉的ext2不同,不需要格式化,只需要全部擦除就可以用了。用根文件系統(tǒng)中的flash.eraseall命令擦除root分區(qū)并mount上來。以下命令在開發(fā)板上執(zhí)行flash_eraseall/dev/mtd2Erasing16Kibyte@6b8000—10%complete.Skippingbadblockat0x006bc000Erasing16Kibyte@3dfc000—99%complete.mount-tyaffs/dev/mtdblock2/mntyaffs:devis32505859nameisnmtdblock2Hyaffs:AttemptingMTDmounton31.3,nmtdblock2Hblock432isbadIs/mntlost+foundflash_eraseall命令是從mtd項目()的源代碼中交叉編譯得來的?,F(xiàn)在可以把根文件系統(tǒng)中的所有文件拷貝到Flash分區(qū)。以下命令在開發(fā)板上執(zhí)行:cp-abinetcliblinuxrcoptsbinsrvtmpusr/mnt/mkdir-p/mnt/proc/mnt/sys/mnt/dev/mnt/mnt/mnt/var/runmknod/mnt/dev/console-m600c51mknod/mnt/dev/null-m666c13umountmntreboot注意:像/proc、/sys這樣正mount著特殊文件系統(tǒng)的目錄和/dev目錄下的設(shè)備文件一定不可以用cp命令拷貝。/nrnt目錄顯然也不能拷貝。這些目錄和設(shè)備文件需要手動創(chuàng)建。重啟目標系統(tǒng)之后進入U-boot,修改內(nèi)核啟動參數(shù)使之從ext2分區(qū)啟動即可(如果下次還用NFS啟動,這里就不save了):AKAE2440#setbootmodenandAKAE2440#setroot/dev/mtdblock2AKAE2440#setbootargsnoinitrdrootfstype=yaffsrwconsole=ttySACO,l15200AKAE2440#saveAKAE2440#reset現(xiàn)在試試能不能修改Flash根文件系統(tǒng)中的文件。4.編譯內(nèi)核將內(nèi)核釋放到?/linux-2.6.27目錄下~$進入內(nèi)核目錄:~$cdlinux-2.6.27(本開發(fā)板不用修改makefile,打補丁時就會自動修改)首先修改Makefile,找到ARCH?=$(SUBARCH)CROSS_COMPILE?=改為ARCH?=armCROSS_COMPILE?=arm-linux-注意ARCH?=arm后面不能有空格,要確??崭褚褎h除干凈,并且不要漏了armTinux-末尾的。下面對內(nèi)核打patch(注意打patch不要重復(fù)打):-/linux-2.6.27$patch-pl<然后以內(nèi)核源代碼自帶的smdk2440基本配置文件為基礎(chǔ),使用menuconfig定制內(nèi)核(確認你的主機安裝了libncurses-dev軟件包)。-/linux-2.6.27$cparch/arm/configs/akae2440_defconfig.config?/linux-2.6.27$makemenuconfig查看配置菜單中的如下選項(有些已經(jīng)默認選中):1、在Floatingpointemulation中選擇NWFPEmathemulation。由于ARM920T沒有浮點協(xié)處理器,浮點數(shù)指令需要用其它指令仿真實現(xiàn)。有兩種方法可以仿真浮點指令:一種方法如先前所說的,使交叉編譯器支持soft-float,也就是一遇到C代碼里的浮點運算就自動生成仿真指令,另一種方法是交叉編譯器仍然生成浮點運算指令(對于ARM平臺是指協(xié)處理器指令),然而ARM920T沒有浮點協(xié)處理器,無法識別浮點指令,因而產(chǎn)生undefined異常,這個Floatingpointemulation內(nèi)核選項就是在undefined異常的處理函數(shù)中仿真實現(xiàn)浮點運算。也就是說,這里我們使用非soft-float的交叉編譯器并在內(nèi)核中實現(xiàn)浮點仿真。這樣的運行效率比使用soft-float編譯要低,因為每次浮點運算都需要處理異常和進入內(nèi)核,但是兼容性好,便于我們利用別人已編譯好的程序。2、選中->Pseudo->/procsupport;Sysctlsupport(/proc/sys);sysfssupport和Virtualmemorysupport(formershmfs);TmpfsPOSIXAccesscontrolListSo/procm(或者叫procfs)是內(nèi)核提供給用戶程序的接口,很多Linux程序都需要在proofs中讀寫數(shù)據(jù),比如busybox,因此這個選項一般是不能少的。Virtualmemorym(或者叫tmpfs)用于內(nèi)存虛擬磁盤,后面我們在做根文件系統(tǒng)時要mount一個tmpfs到/dev目錄下。3、不需要改變Bootoptions->Defaultkernelcommandstring,因為bootloader中的內(nèi)核啟動參數(shù)會取代這里的設(shè)置。4、選中DeviceDrivers->Networkdevicesupport->Ethernet(10or100Mbit)->CS8900Asupport,添加對網(wǎng)卡芯片的支持。在~>Networks菜單中選上NFSclientsupport;NFSclientsupportforNFSversions;NFSclientsupportfortheNFSv3ACLprotocolextension和RootonNFS。5、選中DeviceDrivers->MemoryTechnologyDevices(MTD)->MTDpartitioningsupport,在DeviceDrivers->MemoryTechnologyDevices(MTD),選中NANDDeviceSupport和它下面的NANDFlashsupportforS3C2410/S3C2440SoC;S3C2410NANDdriverdebug,不要選擇S3c2410NANDHardwareECC,因為S3c2410硬件生成ECC碼的算法和我們所需要的不一致。6、在->Miscellaneouss中選中YAFFS2support;Autoselectyaffs2format;cacheshortnamesinRAM,再選上CompressedROMsupport(cramfs)o7、在DeviceDrivers->Graphicssupport中選中Supportforframebufferdevices,再選中它下面的EnablefirmwareEDID;EnablevideoModeHandlingHelpers;S3C2410LCDframebuffersupport,不選擇VirtualFrameBuffersupport因為它是一個用于調(diào)試的虛擬設(shè)備驅(qū)動而不是實際硬件的驅(qū)動。如果還選中了BootupLogo,那么在內(nèi)核啟動過程中初始化framebuffer時會在屏幕上看到Linux的企鵝logo,這是測試framebuffer驅(qū)動是否正常工作最直接的方法。BootupLogo有三種規(guī)格,我們的開發(fā)板支持VGA輸出,可以選擇224色的漂亮logo。8、在DeviceDrivers->USBsupport中選中SupportforHost-sideUSB,然后選擇OHCIHCDsupport,在DeviceDrivers->Inputdevicesupport中選中Mouseinterface,設(shè)置屏幕分辨率HorizontalscreenresolutionVerticalscreenresolution為1024和768o9、選中DeviceDrivers->Realtimeclock->SetsystemtimefromRTConstartupandresume;/sys/class/rtc/rtcN(sysfs);/proc/driver/rtc(procfsforrtcO);/dev/rtcN(characterdevices);Testdriver/device.10、如果不希望在/dev目錄下生成大量偽終端設(shè)備文件,可以取消選擇DeviceDrivers->Characterdevices->Legacy(BSD)PTYsupporto配置完成后用make命令編譯內(nèi)核,這個過程需要較長時間,編譯好的內(nèi)核位于Vlinux-2.6.27/arch/arm/boot/zImageo現(xiàn)在將自己編譯的內(nèi)核下載到開發(fā)板,看系統(tǒng)能不能正常啟動。5.制作根文件系統(tǒng)1根文件系統(tǒng)框架和busybox首先用mkdir手動創(chuàng)建如下的基本目錄結(jié)構(gòu):飛treerootfs/rootfs/|一bin|一dev|一etc||--init.d一一networkj--if-down.dif-post-down.d一if-pre-up.d|、一if-up.d|--lib|一mnt|一opt|一proc|一sbin|一srv|一sys|一tmp|一usr||一bin||--lib——sbin一var一run/bin/sbin/usr/bin/usr/sbin系統(tǒng)的基本命令,系統(tǒng)關(guān)鍵組件的可執(zhí)行文件位于/bin和/sbin,其它應(yīng)用程序的可執(zhí)行文件位于/usr/bin和/usr/sbin,bin和sbin的區(qū)別在于,bin目錄下的可執(zhí)行文件用于日常操作,例如Is、cp,sbin目錄下的可執(zhí)行文件用于管理操作,例如ifconfig,執(zhí)行管理操作通常需要root權(quán)限/lib/usr/lib共享庫,也是分為系統(tǒng)關(guān)鍵組件的共享庫和其它應(yīng)用程序的共享庫/procproc文件系統(tǒng)的掛載點/syssys文件系統(tǒng)的掛載點/dev設(shè)備文件/etc配置文件、啟動腳本/var運行時產(chǎn)生的記錄文件、鎖文件、日志文件/tmp運行時產(chǎn)生的臨時文件/mnt一般用作掛載點/opt一般存放第二方軟件/srv一般用作Web服務(wù)、ftp服務(wù)的服務(wù)目錄接下來安裝busybox到根文件系統(tǒng)中。busybox是專為嵌入式Linux設(shè)計的,它把大多數(shù)常用命令(如Is、cp、tar等等)的常用選項剪裁出來拼在一起。在根文件系統(tǒng)中只有一個可執(zhí)行文件就是/bin/busybox,而其它的命令都創(chuàng)建為/bin/busybox的鏈接文件,busybox通過命令行第0個參數(shù)(也就是命令名)判斷應(yīng)該執(zhí)行哪個命令。這樣使得嵌入式Linux系統(tǒng)有完整的命令集卻占用很小的存儲空間。首先從官方網(wǎng)站./下載源碼包busyboxT.9.1.tar.bz2并解包到主目錄下。~$tarxfbusybox-1.9.1busybox的配置系統(tǒng)和內(nèi)核源代碼很相似,因此配置方法也和內(nèi)核相似,首先修改Makefile,找到ARCH?=$(SUBARCH)CROSS_COMPILE?=改為ARCH?=armCROSS.COMPILE?=arm-linux-然后我們以一個缺省配置為起點來做進一步的配置:-/busybox-1.9.1$makedefconfig-/busybox-1.9.1$makemenuconfig在菜單中做如下配置:選擇BusyBoxSettings->InstallationOptions->BusyBoxinstallationprefix,設(shè)置為/home/akaedu/rootfs,編譯后將安裝到這個目錄下。根據(jù)需要裁剪各命令。但是Shells->Chooseyourdefaultshell選項一定要保留一個默認shell(例如ash),如果沒有默認shell,將不會創(chuàng)建/bin/sh這個鏈接,而一般的shell腳本都是以#!/bin/sh開頭的,如果找不到/bin/sh就不能執(zhí)行。然后編譯和安裝busybox:?/busybox-1?9.1$make-/busybox-1.9.1$makeinstallbusybox文件和一系列的鏈接文件將安裝到/home/akaedu/rootfs下。busybox文件位于根文件系統(tǒng)的/bin目錄,其它鏈接文件位于/bin、/sbin>/usr/bin、/usr/sbin目錄,有一個鏈接文件linuxrc位于根文件系統(tǒng)的根目錄/,它是系統(tǒng)的啟動程序,bootloader中內(nèi)核的啟動參數(shù)有init=/linuxrc,也就是說內(nèi)核啟動后首先執(zhí)行/linuxrc(也是busybox的一個符號鏈接)。linuxrc負責(zé)完成系統(tǒng)的初始化工作:0.設(shè)置信號處理程序.初始化console.解析/etc/inittab文件.執(zhí)行系統(tǒng)初始化腳本,缺省的是/etc/init.d/rcS.執(zhí)行inittab中類型為wait的程序.執(zhí)行inittab中類型為once的程序上述步驟完成后系統(tǒng)啟動完成,此后init程序?qū)⒀h(huán)執(zhí)行以下步驟:0.執(zhí)行inittab中類型為respawn的程序,如果所執(zhí)行的程序終止,則再次執(zhí)行它.如果收到用戶請求,則執(zhí)行inittab中類型為askfirst的程序linuxrc需要讀取設(shè)備文件/dev/console和/dev/null,我們手動創(chuàng)建這些設(shè)備文件:~$cdrootfs/dev;sudomknod-m600consolec51;sudomknod-m666nullc13注意,創(chuàng)建設(shè)備文件需要root權(quán)限,常見設(shè)備文件的設(shè)備號可以從內(nèi)核代碼的Documentation/devices.txt文件中查到。然后創(chuàng)建一個啟動配置文件~/rootfs/etc/inittab:::sysinit:/etc/init.d/rcS::respawn:/sbin/getty115200s3c2410_serial0::restart:/sbin/init::shutdown:/bin/umount-a-r啟動的過程中首先執(zhí)行rcS啟動腳本,我們創(chuàng)建這個腳本?/rootfs/etc/init.d/rcS:#!/bin/shmount-a注意這個腳本需要加可執(zhí)行權(quán)限:chmod+xrcSo這個腳本做了一件事情,根據(jù)/etc/fstab配置文件提供的信息mount一些文件系統(tǒng),我們創(chuàng)建這個配置文件?/rootfs/etc/fstab:#<><mountpoint><type><options><dump><pass>proc/procprocdefaults00sys/syssysfsdefaults00/proc和/sys都是pseudo文件系統(tǒng),它們并不在磁盤或flash上存儲任何數(shù)據(jù),雖然看起來/proc和/sys目錄下有很多文件,但這些文件都是內(nèi)核導(dǎo)出的接口,對這些文件進行讀寫會讀寫到內(nèi)核中的一些運行時參數(shù),而不會讀寫到磁盤。/proc文件系統(tǒng)是busybox中的許多程序所需要的接口,/sys文件系統(tǒng)則是后面要講的mdev所需要的接口。mount完文件系統(tǒng)后,rcS執(zhí)行結(jié)束。下面將執(zhí)行inittab文件中類型為respawn的命令,也就是/sbin/getty115200s3c2410_serial0我們的PC在啟動時執(zhí)行g(shù)etty打開幾個虛終端,例如/dev/ttyl?/dev/tty6,嵌入式開發(fā)板也是用getty打開虛終端,這個虛終端對應(yīng)的是串口,因此需要訪問串口的設(shè)備文件/dev/s3c2410_serial0,以上命令還指定了波特率為115200?,F(xiàn)在我們創(chuàng)建這個設(shè)備文件:~$cdrootfs/dev;sudomknod-m600s3c2410_serial0c20464這個設(shè)備號在內(nèi)核代碼的Documentation/arm/Samsung-S3C24XX/0verview.txt中可以查到,在內(nèi)核代碼中,S3c2410的第一個串口表示為ttySACO,但是后面介紹的mdev程序?qū)⑹褂胹3c2410_serial0這個名字,因此這里把文件名指定為s3c2410一serial。。系統(tǒng)啟動打開虛終端后會提示輸入用戶名和密碼然后才啟動shell,我們需要創(chuàng)建帳號文件passwd和groupo?/rootfs/etc/passwd文件內(nèi)容為:root::0:0:root:/:/bin/sh^/rootfs/etc/group文件內(nèi)容為:root::0:這樣就創(chuàng)建了一個root帳號,沒有密碼。如果需要密碼,可以把主機上的/etc/shadow文件中root帳號的那一行放到開發(fā)板的根文件系統(tǒng)中。2glibc由于busybox需要glibc共享庫的支持,下面的步驟將在根文件系統(tǒng)中安裝glibco在此之前首先解釋一下應(yīng)用程序如何找到所需的共享庫。通過Id命令的參數(shù)-rpath可以在鏈接時將共享庫的路徑記在應(yīng)用程序中,但是通常不推薦這樣做,通常應(yīng)用程序中只記錄共享庫的文件名(稍后提到的soname),啟動程序時由動態(tài)鏈接器/lib/ldTinux.so根據(jù)以下規(guī)則查找共享庫(摘自ld?so(8)):0.首先在環(huán)境變量LD_LIBRARY_PATH所記錄的路徑中查找.然后從緩存文件中查找。將共享庫的路徑寫進然后執(zhí)行Idconfig命令就可以生成緩存文件.如果上述步驟都找不到,則到默認的系統(tǒng)路徑中查找,先是/usr/lib然后是/lib注意,LD_LIBRARY_PATH是不推薦使用的,盡量不要把它設(shè)定為環(huán)境變量,詳細解釋參見WhyLD_LIBRARY_PATHisbad(/"barr/ldpath.html)。每個共享庫有三個文件名:realname>soname、linkername。realname是庫文件的名字,包含完整的共享庫版本號;soname是庫文件的一個符號鏈接的名字,只包含主版本號,主版本號一致即可保證庫函數(shù)的接口一致,因此應(yīng)用程序只需確認soname與所需的共享庫一致;linkername僅由鏈接器使用,有的是庫文件的一個符號鏈接的名字,有的是一段鏈接腳本的名字。庫文件的文件頭記錄了soname,因此Idconfig命令可以讀取文件頭生成相應(yīng)的符號鏈接文件。綜上,Idconfig命令讀取Id.so.conf后做兩件事,一是創(chuàng)建適當(dāng)?shù)膕oname鏈接,二是生成Id.so.cache,包含共享庫的軟件包在安裝過程中都會執(zhí)行一下Idconfig命令。下面以libc為例說明共享庫的三個文件名:-rw-r-r-1akaeduakaedu1952008-03-1611:10libc.so$catlibc.so/*GNUIdscriptUsethesharedlibrary,butsomefunctionsareonlyinthestaticlibrary,sotrythatsecondarily.*/0UTPUT_F0RMAT(elf32-littlearm)GROUP(libc.so.6libc_nonshared.a)在我們先前制作交叉編譯工具鏈時已經(jīng)交叉編譯了glibc,位于/opt/crosstool/gcc-4.0.2-glibc-2.3.6/arm-1inux/arm-1inux/1ib目錄下,我們把這些共享庫拷到根文件系統(tǒng)?/rootfs/lib目錄下:~$cd/opt/crosstool/gcc-4.0.2-glibc-2.3.6/arm-linux/arm-linux/lib;cp-dp*/home/akaedu/rootfs/lib/然后到?/rootfs/lib目錄下刪掉所有靜態(tài)庫和一些不常用的庫,剩下這些庫文件:Vrootfs/lib$Isld-2.3.6.sold-linux.so.2libanl-2.3.6.solibanl.solibanl.so.11ibBrokenLocale-2.3.6.solibBrokenLocale.solibBrokenLocale.so.1libc-2.3.6.solibcrypt-2.3.6.solibcrypt.solibcrypt.so.1libc.solibc.so.6libdl-2.3.6.solibdl.solibdl.so.2libgcc_s.solibm.so.6libnsl-2.3.6.solibnsl.solibnsl.so.11ibnss_compat-2.3.6.solibnsscompat.solibnss_compat.so.2libnss_dns-2.3.6.solibnss_dns.solibnssdns.so.2libpcprolibpthread-0.10.solibpthread.solibpthread.so.0libresolv-2.3.6.solibresolv.solibresolv.so.2librt-2.3.6.solibrt.solibrt.so.1libnsslibSegFault.solibnssVrootfs/lib$Isld-2.3.6.sold-linux.so.2libanl-2.3.6.solibanl.solibanl.so.11ibBrokenLocale-2.3.6.solibBrokenLocale.solibBrokenLocale.so.1libc-2.3.6.solibcrypt-2.3.6.solibcrypt.solibcrypt.so.1libc.solibc.so.6libdl-2.3.6.solibdl.solibdl.so.2libgcc_s.solibm.so.6libnsl-2.3.6.solibnsl.solibnsl.so.11ibnss_compat-2.3.6.solibnsscompat.solibnss_compat.so.2libnss_dns-2.3.6.solibnss_dns.solibnssdns.so.2libpcprolibpthread-0.10.solibpthread.solibpthread.so.0libresolv-2.3.6.solibresolv.solibresolv.so.2librt-2.3.6.solibrt.solibrt.so.1libnsslibSegFault.solibnsslibstdc++.solibnss_libstdc++.so.6libnss_hesiod-2.3.6.solibnsshesiod.solibnsshesiod.so.2libnss_nis-2.3.6.solibnss_nisp]us-2.3.6.solibstdc++?so.6.0.6libthreaddb-l.0.solibthreaddb.solibthreaddb.so.1libutil-2.3.6.so制作交叉編譯工具鏈的腳本和補丁crosstool.tar.bz2已制作好的交叉編譯工具鏈,需要解包到/opt目錄使用內(nèi)核2627針對2440開發(fā)板制作的內(nèi)核patchzlmage已編譯好的內(nèi)核,可直接下載到開發(fā)板rootfs-basic.tar基本根文件系統(tǒng)打包,由于有設(shè)備文件,所以解包需要root權(quán)限r(nóng)ootfs-basic.cramfs采用cramfs文件系統(tǒng)格式的基本根文件系統(tǒng)映像,可直接下載到開發(fā)板busybox-1.9.1,tar.bz2busybox源碼包,嵌入式根文件系統(tǒng)基本命令集sqlite源碼包,嵌入式數(shù)據(jù)庫libcgi源碼包,用于編寫CGI程序的C函數(shù)庫QtopiaCore源碼包,Qt的嵌入式版本2.交叉編譯工具鏈要做嵌入式Linux開發(fā),首先需要有交叉編譯工具鏈(crosscompilingtoolchain),也就是在主機(x86PC)上可編譯生成目標板可執(zhí)行文件(ARM指令)的編譯工具。和普通的編譯工具鏈一樣,交叉編譯工具鏈也包括編譯、鏈接、修改目標文件的各種程序,如gcc>glibc>Id、gas、objdump、readelf等等。交叉編譯工具鏈本身也是需要編譯生成的,要得到一套完整的交叉編譯工具鏈需要編譯以下源碼包:binutilsgccglibclinux(內(nèi)核)linux-libc-headersglibc-linuxthreads這些源碼包具有非常強的版本依賴關(guān)系,如果源碼包的版本不匹配,在編譯過程中會出現(xiàn)各種各樣的問題,有些問題需要對源碼做些修改或者打補丁,有些問題則是沒有解決libgcc_s.so.1libm-2.3.6.solibmemusage.solibm.solibgcc_s.so.1libm-2.3.6.solibmemusage.solibm.solibgcc_s.so.1libm-2.3.6.solibmemusage.solibm.solibnss_nisplus.solibutil.solibnss_nisplus.so.2libutil.so.1libgcc_s.so.1libm-2.3.6.solibmemusage.solibm.solibnss_nis.solibnss_nis.so.2Idconfig是很常用的一個命令,如果某些程序把共享庫安裝到非標準目錄(/lib和/usr/lib),則需要執(zhí)行Idconfig更新緩存文件/etc/ld.so.cache,比如后面安裝QtopiaCore時就會用到。但是busybox不包含Idconfig命令,因為它和glibc密切相關(guān),是隨glibc一起發(fā)布的,先前我們制作交叉編譯工具鏈時己經(jīng)生成了Idconfig,現(xiàn)在把它拷到根文件系統(tǒng):~$現(xiàn)在通過NFS啟動開發(fā)板,應(yīng)該可以成功啟動到shell了。3mdev先前我們在根文件系統(tǒng)的/dev目錄下手動創(chuàng)建了三個設(shè)備文件:console、null和s3c2410_serial0,內(nèi)核里還有很多設(shè)備驅(qū)動需要通過設(shè)備文件提供接口給應(yīng)用程序訪問,如果一個一個手動創(chuàng)建太麻煩而且容易出錯,busybox提供的mdev程序可以從sysfs中讀出內(nèi)核提供的設(shè)備驅(qū)動信息,在/dev目錄下自動創(chuàng)建相應(yīng)的設(shè)備文件并為這些設(shè)備文件命名。在PC上完成這一功能的是udev,mdev是busybox為嵌入式系統(tǒng)裁剪過的udev。把以下幾行附加到啟動腳本~/rootfs/etc/init.d/rcS的末尾:mount-ttmpfsmdev/devmdev-smkdir/dev/inputIn-s/dev/mice/dev/input/micemdev還需要一個配置文件mdev.conf,用于指定各設(shè)備文件的所有者和權(quán)限,其格式可參考busybox源代碼中的docs/mdev.txt。我們不做特別的設(shè)置,但這個文件是需要存在的,因此創(chuàng)建一個空文件:~$touchrootfs/etc/mdev.conf現(xiàn)在重新啟動開發(fā)板,從minicorn可以看到開發(fā)板的/dev目錄下創(chuàng)建了很多設(shè)備文件,而從主機上查看NFS目錄?/rootfs/dev卻仍然只有先前的三個設(shè)備文件,想一想這是為什么。5.4系統(tǒng)時鐘首先將主機上的時區(qū)文件拷到開發(fā)板根文件系統(tǒng):~$cp/etc/localtime-/rootfs/etc/然后在啟動腳本~/=00土£5/61;”門五.d/rcS中添加一條命令:hwclock—hctosys選項--hctosys的意思是讀取硬件RTC時鐘(he)成為當(dāng)前的系統(tǒng)時鐘(sys)。在系統(tǒng)運行期間,調(diào)用time(2)等函數(shù)讀取的都是內(nèi)核維護的系統(tǒng)時鐘,而不會直接去讀硬件時鐘,所以,如果用date命令修改了系統(tǒng)時鐘:#date031915232007MonMar1915:23:00CST2007這時關(guān)閉系統(tǒng),時鐘信息還是會丟失。如果在上述命令后用hwclock命令寫到硬件RTC時鐘:#hwclock—systohe在系統(tǒng)斷電期間RTC時鐘由電池來維持,下次啟動通過hwclock—hctosys仍然可以將系統(tǒng)時鐘設(shè)定正確。5.5網(wǎng)絡(luò)配在bootloader中設(shè)置的開發(fā)板IP地址僅在bootloader階段與主機通信時起作用。如果是NFSRoot方式啟動,系統(tǒng)啟動后的IP地址是由內(nèi)核啟動參數(shù)中的NFS設(shè)置決定的,這樣系統(tǒng)啟動后仍然可以讀取主機的NFS導(dǎo)出目錄。如果是Flash根文件系統(tǒng)啟動,則啟動之后需耍重新配置IP地址和激活網(wǎng)絡(luò)接口,我們可以把配置寫在啟動腳本Vrootfs/etc/init.d/rcS中:ifup-a并且添加一個配置文件~/rootfs/etc/network/interfaces:autoloifaceloinetloopbackautoethOifup命令根據(jù)配置文件激活網(wǎng)絡(luò)接口lo(loopback設(shè)備)和ethO(以太網(wǎng)接口)。.6httpdbusybox自帶了一個Web服務(wù)器程序httpd,我們在啟動腳本~/「001£$九1”5近.d/rcS中添加如下一行:httpd-h/srv/www這樣httpd在啟動時以daemon方式運行,使用默認的80端口(使用-p選項可以自己指定端口)。服務(wù)目錄是/srv/www,如果瀏覽器請求/srv/n目錄下的可執(zhí)行文件,則被httpd當(dāng)作CGI程序執(zhí)行。我們在根文件系統(tǒng)中創(chuàng)建服務(wù)目錄:~$mkdir-prootfs/srv/現(xiàn)在啟動開發(fā)板系統(tǒng),試驗以下功能:0.編輯一個index.html放在?/rootfs/srv/www下,從主機上打開瀏覽器,輸入開發(fā)板的IP地址看能否瀏覽。.編輯一個shell腳本,加可執(zhí)行權(quán)限,放在~/rootfs/srv/n下,從主機打開瀏覽器,輸入該腳本的地址(例如)看能否得到執(zhí)行結(jié)果。腳本如下所示:#!/bin/shecho“Content-Type:text/plain〃echoIs-a最終我們的啟動腳本~/rootfs/etc/init.d/rcS是這樣的:#!/bin/shmount-amount-ttmpfsmdev/devmdev-smkdir/dev/inputIn-s/dev/mice/dev/input/micehwclock—hctosysifup-ahttpd-h/srv/www.參考資料<BuildingEmbeddedLinuxSystems>byKarimYaghmour,O'Reilly出版附錄資料:不需要的可以自行刪除電腦相關(guān)技巧介紹主要介紹一下Windows操作系統(tǒng)在C盤空間不足的情況下,我們可以通過那些具體手段來增加C盤空間。.打開“我的電腦”-“工具”-“文件夾選項”-“查看”-在“顯示所有文件和文件夾”選項前打勾-“確定”.刪除以下文件夾中的內(nèi)容:x:\DocumentsandSettings'用戶名'Cookies'下的所有文件(保留index文件)x:\DocumentsandSettings'用戶名'LocalSettings\Temp\下的所有文件(用戶臨時文件)x:\DocumentsandSettings'用戶名\LocalSettings\TemporaryInternetFiles'下的所有文件(頁面文件)x:\DocumentsandSettings'用戶名\LocalSettings\History\下的所有文件(歷史紀錄)x:\DocumentsandSettings'用戶名\Recent\下的所有文件(最近瀏覽文件的快捷方式)x:\WINDOWS\Temp\下的所有文件(臨時文件)x:\WINDOWS\ServicePackFiles(升級spl或sp2后的備份文件)x:\WINDOWS\DriverCache\i386下的壓縮文件(驅(qū)動程序的備份文件)x:\WINDOWS\SoftwareDistribution\download下的所有文件.如果對系統(tǒng)進行過windoesupdade升級,則刪除以下文件:x:\windows'下以$u...開頭的隱藏文件.然后對磁盤進行碎片整理,整理過程中請退出一切正在運行的程序.碎片整理后打開“開始程序”-“附件”-“系統(tǒng)工具系統(tǒng)還原”-“創(chuàng)建一個還原點”(最好以當(dāng)時的日期作為還原點的名字)6,打開“我的電腦”-右鍵點系統(tǒng)盤-“屬性”-“磁盤清理”-“其他選項”-單擊系統(tǒng)還原一欄里的“清理”-選擇“是"-ok了7、在各種軟硬件安裝妥當(dāng)之后,其實XP需要更新文件的時候就很少To刪除系統(tǒng)備份文件吧:開始f運行fsfc.exe/purgecache近3xxM。(該命令的作用是立即清除〃Windows文件保護〃文件高速緩存,釋放出其所占據(jù)的空間)8、刪掉\windows\system32\dllcache下dll檔(減去200300mb),這是備用的dll檔,只要你已拷貝了安裝文件,完全可以這樣做。9、XP會自動備份硬件的驅(qū)動程序,但在硬件的驅(qū)動安裝正確后,一般變動硬件的可能性不大,所以也可以考慮將這個備份刪除,文件位于\windows\drivercache\i386目錄下,名稱為driver,cab,你直接將它刪除就可以了,通常這個文件是74Mo10、刪除不用的輸入法:對很多網(wǎng)友來說,WindowsXPt系統(tǒng)自帶的輸入法并不全部都合適自己的使用,比如IMJP8」日文輸入法、IMKR6」韓文輸入法這些輸入法,如果用不著,我們可以將其刪除。輸入法位于\windows\ime\文件夾中,全部占用了88M的空間。11、升級完成發(fā)現(xiàn)windows'多了許多類似$NtUninstallQ311889$這些目錄,都干掉吧,lx-3xM12、另外,保留著\windows\help目錄下的東西對我來說是一種傷害,呵呵。。。都干掉!13、關(guān)閉系統(tǒng)還原:系統(tǒng)還原功能使用的時間一長,就會占用大量的硬盤空間。因此有必要對其進行手工設(shè)置,以減少硬盤占用量。打開〃系統(tǒng)屬性〃對話框,選擇〃系統(tǒng)還原〃選項,選擇〃在所有驅(qū)動器上關(guān)閉系統(tǒng)還原〃復(fù)選框以關(guān)閉系統(tǒng)還原。也可僅對系統(tǒng)所在的磁盤或分區(qū)設(shè)置還原。先選擇系統(tǒng)所在的分區(qū),單擊〃配置〃按鈕,在彈出的對話框中取消〃關(guān)閉這個驅(qū)動器的系統(tǒng)還原〃選項,并可設(shè)置用于系統(tǒng)還原的磁盤空間大小。14、休眠功能會占用不少的硬盤空間,如果使用得少不妨將共關(guān)閉,關(guān)閉的方法是的:打開〃控制面板〃,雙擊〃電源選項〃,在彈出的〃電源選項屬性〃對話框中選擇〃休眠〃選項卡,取消〃啟用休眠〃復(fù)選框。15、卸載不常用組件:XP默認給操作系統(tǒng)安裝了一些系統(tǒng)組件,而這些組件有很大一部分是你根本不可能用到的,可以在〃添加/刪除Windows組件〃中將它們卸載。但其中有一些組件XP默認是隱藏的,在〃添加/刪除Windows組件〃中找不到它們,這時可以這樣操作:用記事本打開\windows\inf\sysoc.inf這個文件,用查找/替換功能把文件中的〃hide〃字符全部替換為空。這樣,就把所有組件的隱藏屬性都去掉了,存盤退出后再運行〃添加-刪除程序“,就會看見多出不少你原來看不見的選項,把其中那些你用不到的組件刪掉(記住存盤的時候要保存為sysoc.inf,而不是默認的sysoc.txt),如Internal信使服務(wù)、傳真服務(wù)、Windowsmessenger,碼表等,大約可騰出近50MB的空間。16、清除系統(tǒng)臨時文件:系統(tǒng)的臨時文件一般存放在兩個位置中:一個Windows安裝目錄下的Temp文件夾;另一個是x:\DocumentsandSettings〃用戶名〃'LocalSettings\Temp文件夾(Y:是系統(tǒng)所在的分區(qū))。這兩個位置的文件均可以直接刪除。17、清除Internet臨時文件:定期刪除上網(wǎng)時產(chǎn)生的大量Internet臨時文件,將節(jié)省大量的硬盤空間。打開IE瀏覽器,從〃工具〃菜單中選擇〃Internet選項〃,在彈出的對話框中選擇〃常規(guī)〃選項卡,在〃Internet臨時文件〃欄中單擊〃刪除文件〃按鈕,并在彈出〃刪除文件〃對話框,選中〃刪除所有脫機內(nèi)容〃復(fù)選框,單擊〃確定〃按鈕。18、清除預(yù)讀文件:WindowsXP的預(yù)讀設(shè)置雖然可以提高系統(tǒng)速度,但是使用一段時間后,預(yù)讀文件夾里的文件數(shù)量會變得相當(dāng)龐大,導(dǎo)致系統(tǒng)搜索花費的時間變長。而且有些應(yīng)用程序會產(chǎn)生死鏈接文件,更加重了系統(tǒng)搜索的負擔(dān)。所以,應(yīng)該定期刪除這些預(yù)讀文件。預(yù)計文件存放在WindowsXP系統(tǒng)文件夾的Prefetch文件夾中,該文件夾下的所有文件均可刪除。19、壓縮NTFS驅(qū)動器、文件或文件夾:如果你的硬盤采用的是NTFS文件系統(tǒng),空間實在緊張,還可以考慮啟用NTFS的壓縮功能。右擊要壓縮的驅(qū)動器一〃屬性〃一〃常規(guī)〃一〃壓縮磁盤以節(jié)省磁盤空間〃,然后單擊〃確定〃,在〃確認屬性更改〃中選擇需要的選項。這樣可以節(jié)省約20%的硬盤空間。在壓縮C盤的時候,最好在安全模式下壓縮,這樣效果要好一些。20、關(guān)閉華醫(yī)生Dr.Watson:要關(guān)閉Dr.Watson可打開注冊表編輯器,找到〃HKEYLOCALMACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug〃分支,雙擊其下的Auto鍵值名稱,將其〃數(shù)值數(shù)據(jù)〃改為0,最后按F5刷新使設(shè)置生效,這樣就取消它的運行了。也在〃開始〃->〃運行〃中輸入〃drwtsn32〃命令,或者"開始"-『程序〃附件“->〃系統(tǒng)工具”->〃系統(tǒng)信息〃->〃工具〃->〃DrWatson〃,調(diào)出系統(tǒng)里的華醫(yī)生Dr.Watson,只保留〃轉(zhuǎn)儲全部線程上下文〃選項,否則一旦程序出錯,硬盤會讀很久,并占用大量空間。如以前有此情況,請查找user.dmp文件,刪除后可節(jié)省幾十MB空間。21、關(guān)閉遠程桌面:〃我的電腦〃->〃屬性〃->〃遠程〃,〃遠程桌面〃里的〃允許用戶遠程連接到這臺計算機〃勾去掉。22、取消XP對ZIP支持:WindowsXP在默認情況下打開了對zip文件支持,這要占用一定的系統(tǒng)資源,可選擇〃開始一運行〃,在〃運行〃對話框中鍵入〃regsvr32/uzipfldr.dll",回車確認即可取消XP對ZIP解壓縮的支持,從而節(jié)省系統(tǒng)資源。23、關(guān)閉錯誤報告:當(dāng)應(yīng)用程序出錯時,會彈出發(fā)送錯誤報告的窗口,其實這樣的錯誤報告對普通用戶而言幾乎沒有任何意義,關(guān)閉它是明智的選擇。在〃系統(tǒng)屬性”對話框中選擇〃高級〃選項卡,單擊“錯誤報告〃按鈕,在彈出的〃錯誤匯報〃對話框中,選擇〃禁用錯誤匯報〃單選項,最后單擊〃確定〃即可。另外我們也可以從組策略中關(guān)閉錯誤報告:從〃運行〃中鍵入〃gpedit.msc〃,運行〃組策略編輯器〃,展開〃計算機配置一管理模板一系統(tǒng)一錯誤報告功能〃,雙擊右邊設(shè)置欄中的〃報告錯誤〃,在彈出的〃屬性〃對話框中選擇〃已禁用〃單選框即可將〃報告錯誤〃禁用。24、關(guān)掉不用的設(shè)備:WindowsXP總是盡可能為電腦的所有設(shè)備安裝驅(qū)動程序并進行管理,這不僅會減慢系統(tǒng)啟動的速度,同時也造成了系統(tǒng)資源的大量占用。針對這一情況,你可在設(shè)備管理器中,將PCMCIA卡、調(diào)制解調(diào)器、紅外線設(shè)備、打印機端口(LPT1)或者串口(COM1)等不常用的設(shè)備停用,方法是雙擊要停用的設(shè)備,在其屬性對話框中的〃常規(guī)“選項卡中選擇〃不要使用這個設(shè)備(停用)〃。在重新啟動設(shè)置即可生效,當(dāng)需要使用這些設(shè)備時再從設(shè)備管理器中啟用它們。25、定期清理系統(tǒng)還原點:打開磁盤清理,選擇其他選項一>清理系統(tǒng)還原點,點擊清理。26、卸載不需要的程序,這個就不用我多說了27、其它優(yōu)化:a將應(yīng)用軟件裝在其它硬盤(不要安裝在系統(tǒng)盤下,這對重裝系統(tǒng)也有好處);b將“我的文檔〃文件夾都轉(zhuǎn)到其他分區(qū):在桌面的〃我的文檔〃圖標上是右擊鼠標,選擇〃屬性〃->〃移動〃;C將IE臨時文件夾都轉(zhuǎn)到其他分區(qū):打開IE瀏覽器,選擇〃工具〃-yinternet選項〃->〃常規(guī)〃->〃設(shè)置〃-〉〃移動文件夾〃;d把虛擬內(nèi)存也轉(zhuǎn)到其它硬盤;e把pages文件都指向一個地方:控制面板f系統(tǒng)f性能一高級一虛擬內(nèi)存一更改,注意要點〃設(shè)置〃才會生效;f在桌面的“我的電腦〃圖標上是右擊鼠標,選擇〃屬性高級一性能設(shè)置〃一〉〃高級一虛擬內(nèi)存〃,調(diào)至330—720。而且定時清理。主要介紹一下Windows操作系統(tǒng)在C盤空間不足的情況下,我們可以通過那些具體手段來增加C盤空間。.打開“我的電腦”-“工具”-“文件夾選項”-“查看”-在“顯示所有文件和文件夾”選項前打勾-“確定”.刪除以下文件夾中的內(nèi)容:x:\DocumentsandSettings'用戶名'Cookies'下的所有文件(保留index文件)x:\DocumentsandSettings'用戶名\LocalSettings\Temp\下的所有文件(用戶臨時文件)x:\DocumentsandSettings'用戶名\LocalSettings\TemporaryInternetFiles'下的所有文件(頁面文件)x:\DocumentsandSettings'用戶名\LocalSettings\History\下的所有文件(歷史紀錄)x:\DocumentsandSettings'用戶名\Recent\下的所有文件(最近瀏覽文件的快捷方式)x:\WIND0WS\Temp\下的所有文件(臨時文件)x:\WINDOWS\ServicePackFiles(升級spl或sp2后的備份文件)x:\WINDOWS\DriverCache\i386下的壓縮文件(驅(qū)動程序的備份文件)辦法的,只能更換匹配較好的版本。編譯的步驟也是比較復(fù)雜的,主要有以下幾步:0.根據(jù)目標平臺配置內(nèi)核源代碼,生成內(nèi)核頭文件.編譯binutils.編譯器的自舉(bootstnip),也就是先編譯出gcc的部分功能(沒有g(shù)libc支持,只有C編譯器沒有C++編譯器).編譯glibc.編譯完整的gcc首先從stool下載crosstool-0.43.tar.gz,在主目錄下解包~$tarxfcrosstool-0.43.tar.gz;cdcrosstool-0.43現(xiàn)在選擇一種源碼包的版本組合,各種版本組合的兼容性可以參考l/crosstool-0.43/buildlogs/,在此我們選擇在arm平臺上glibc版本較高,兼容性較好的一個組合:修改crosstool-0.43目錄下的腳本demo-arm.sh,取消這一行開頭的#號注釋符:#eval"catarm.datgcc-4.0.2-glibc-2.3.6.dafshalLsh—notest同時將原本沒有注釋的這一行注釋掉(前面加#號):eval'catarm.datgcc-4.1.0-glibc-2.3.2-tls.dafshall.sh—notest注意該腳本開頭有TARBALLS_DIR=$HOME/downloadsRESULT_TOP=/opt/crosstool這說明,該腳本運行時,自動從和下載相關(guān)的源碼包到主目錄的downloads目錄下,如果你已經(jīng)下載過這些源碼包,將它們拷到downloads目錄下就可以不必再次下載了。對應(yīng)于我們選擇的版本組合,downloads目錄下的源碼包有:linux-2.6?x:\WINDOWS\SoftwareDistribution\download下的所有文件.如果對系統(tǒng)進行過windoesupdade升級,則刪除以下文件:x:\windows\下以$u...開頭的隱藏文件.然后對磁盤進行碎片整理,整理過程中請退出一切正在運行的程序.碎片整理后打開“開始”-“程序附件”-“系統(tǒng)工具系統(tǒng)還原”-“創(chuàng)建一個還原點”(最好以當(dāng)時的日期作為還原點的名字).打開“我的電腦”-右鍵點系統(tǒng)盤-“屬性”-“磁盤清理其他選項”-單擊系統(tǒng)還原一欄里的“清理”-選擇“是"-ok了7、在各種軟硬件安裝妥當(dāng)之后,其實XP需要更新文件的時候就很少了。刪除系統(tǒng)備份文件吧:開始f運行fsfc.exe/purgecache近3xxM。(該命令的作用是立即清除〃Windows文件保護〃文件高速緩存,釋放出其所占據(jù)的空間)8、刪掉\windows\system32\dncache下dll檔(減去200300mb),這是備用的dll檔,只要你已拷貝了安裝文件,完全可以這樣做。9、XP會自動備份硬件的驅(qū)動程序,但在硬件的驅(qū)動安裝正確后,一般變動硬件的可能性不大,所以也可以考慮將這個備份刪除,文件位于\windows\drivercache\i386目錄下,名稱為driver,cab,你直接將它刪除就可以了,通常這個文件是74MO10、刪除不用的輸入法:對很多網(wǎng)友來說,WindowsXPt系統(tǒng)自帶的輸入法并不全部都合適自己的使用,比如IMJP8」日文輸入法、IMKR6」韓文輸入法這些輸入法,如果用不著,我們可以將其刪除。輸入法位于\windows\ime\文件夾中,全部占用了88M的空間。11、升級完成發(fā)現(xiàn)windows'多了許多類似$NtUninstallQ311889$這些目錄,都干掉吧,lx-3xM12、另外,保留著\windows\help目錄下的東西對我來說是一種傷害,呵呵。。。都干掉!13、關(guān)閉系統(tǒng)還原:系統(tǒng)還原功能使用的時間一長,就會占用大量的硬盤空間。因此有必要對其進行手工設(shè)置,以減少硬盤占用量。打開〃系統(tǒng)屬性〃對話框,選擇〃系統(tǒng)還原〃選項,選擇〃在所有驅(qū)動器上關(guān)閉系統(tǒng)還原〃復(fù)選框以關(guān)閉系統(tǒng)還原。也可僅對系統(tǒng)所在的磁盤或分區(qū)設(shè)置還原。先選擇系統(tǒng)所在的分區(qū),單擊〃配置〃按鈕,在彈出的對話框中取消〃關(guān)閉這個驅(qū)動器的系統(tǒng)還原〃選項,并可設(shè)置用于系統(tǒng)還原的磁盤空間大小。14、休眠功能會占用不少的硬盤空間,如果使用得少不妨將共關(guān)閉,關(guān)閉的方法是的:打開〃控制面板〃,雙擊〃電源選項〃,在彈出的〃電源選項屬性〃對話框中選擇〃休眠〃選項卡,取消〃啟用休眠〃復(fù)選框。15、卸載不常用組件:XP默認給操作系統(tǒng)安裝了一些系統(tǒng)組件,而這些組件有很大一部分是你根本不可能用到的,可以在〃添加/刪除Windows組件〃中將它們卸載。但其中有一些組件XP默認是隱藏的,在〃添加/刪除Windows組件〃中找不到它們,這時可以這樣操作:用記事本打開\windows\inf\sysoc.inf這個文件,用查找/替換功能把文件中的〃hide〃字符全部替換為空。這樣,就把所有組件的隱藏屬性都去掉了,存盤退出后再運行〃添加-刪除程序〃,就會看見多出不少你原來看不見的選項,把其中那些你用不到的組件刪掉(記住存盤的時候要保存為sysoc.inf,而不是默認的sysoc.txt),如Internal信使服務(wù)、傳真服務(wù)、Windowsmessenger,碼表等,大約可騰出近50MB的空間。16、清除系統(tǒng)臨時文件:系統(tǒng)的臨時文件一般存放在兩個位置中:一個Windows安裝目錄下的Temp文件夾;另一個是x:\DocumentsandSettings〃用戶名〃\LocalSettings\Temp文件夾(Y:是系統(tǒng)所在的分區(qū))。這兩個位置的文件均可以直接刪除。17、清除Internet臨時文件:定期刪除上網(wǎng)時產(chǎn)生的大量Internet臨時文件,將節(jié)省大量的硬盤空間。打開IE瀏覽器,從〃工具〃菜單中選擇〃Internet選項〃,在彈出的對話框中選擇〃常規(guī)〃選項卡,在〃Internet臨時文件〃欄中單擊〃刪除文件〃按鈕,并在彈出〃刪除文件〃對話框,選中〃刪除所有脫機內(nèi)容〃復(fù)選框,單擊〃確定〃按鈕。18、清除預(yù)讀文件:WindowsXP的預(yù)讀設(shè)置雖然可以提高系統(tǒng)速度,但是使用一段時間后,預(yù)讀文件夾里的文件數(shù)量會變得相當(dāng)龐大,導(dǎo)致系統(tǒng)搜索花費的時間變長。而且有些應(yīng)用程序會產(chǎn)生死鏈接文件,更加重了系統(tǒng)搜索的負擔(dān)。所以,應(yīng)該定期刪除這些預(yù)讀文件。預(yù)計文件存放在WindowsXP系統(tǒng)文件夾的Prefetch文件夾中,該文件夾下的所有文件均可刪除。19、壓縮NTFS驅(qū)動器、文件或文件夾:如果你的硬盤采用的是NTFS文件系統(tǒng),空間實在緊張,還可以考慮啟用NTFS的壓縮功能。右擊要壓縮的驅(qū)動器一〃屬性〃一〃常規(guī)〃一〃壓縮磁盤以節(jié)省磁盤空間〃,然后單擊〃確定〃,在〃確認屬性更改〃中選擇需要的選項。這樣可以節(jié)省約20%的硬盤空間。在壓縮C盤的時候,最好在安全模式下壓縮,這樣效果要好一些。20、關(guān)閉華醫(yī)生Dr.Watson:要關(guān)閉Dr.Watson可打開注冊表編輯器,找到〃HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug〃分支,雙擊其下的Auto鍵值名稱,將其〃數(shù)值數(shù)據(jù)〃改為0,最后按F5刷新使設(shè)置生效,這樣就取消它的運行了。也在〃開始〃-〉〃運行〃中輸入〃drwtsn32〃命令,或者〃開始〃-〉〃程序〃->〃附件〃->〃系統(tǒng)工具〃-〉〃系統(tǒng)信息〃-〉〃工具〃->〃DrWatson〃,調(diào)出系統(tǒng)里的華醫(yī)生Dr.Watson,只保留〃轉(zhuǎn)儲全部線程上下文〃選項,否則一旦程序出錯,硬盤會讀很久,并占用大量空間。如以前有此情況,請查找user,dmp文件,刪除后可節(jié)省幾十MB空間。21、關(guān)閉遠程桌面:〃我的電腦〃-〉〃屬性〃->〃遠程〃,〃遠程桌面〃里的〃允許用戶遠程連接到這臺計算機〃勾去掉。22、取消XP對ZIP支持:WindowsXP在默認情況下打開了對zip文件支持,這要占用一定的系統(tǒng)資源,可選擇〃開始一運行〃,在〃運行〃對話框中鍵入〃regsvr32/uzipfldr.dll",回車確認即可取消XP對ZIP解壓縮的支持,從而節(jié)省系統(tǒng)資源。23、關(guān)閉錯誤報告:當(dāng)應(yīng)用程序出錯時,會彈出發(fā)送錯誤報告的窗口,其實這樣的錯誤報告對普通用戶而言幾乎沒有任何意義,關(guān)閉它是明智的選擇。在〃系統(tǒng)屬性〃對話框中選擇〃高級〃選項卡,單擊〃錯誤報告〃按鈕,在彈出的〃錯誤匯報〃對話框中,選擇〃禁用錯誤匯報〃單選項,最后單擊〃確定〃即可。另外我們也可以從組策略中關(guān)閉錯誤報告:從〃運行〃中鍵入〃gpedit.msc〃,運行〃組策略編輯器〃,展開〃計算機配置一管理模板一系統(tǒng)一錯誤報告功能〃,雙擊右邊設(shè)置欄中的〃報告錯誤〃,在彈出的〃屬性〃對話框中選擇〃已禁用〃單選框即可將〃報告錯誤〃禁用。24、關(guān)掉不用的設(shè)備:WindowsXP總是盡可能為電腦的所有設(shè)備安裝驅(qū)動程序并進行管理,這不僅會減慢系統(tǒng)啟動的速度,同時也造成了系統(tǒng)資源的大量占用。針對這一情況,你可在設(shè)備管理器中,將PCMCIA卡、調(diào)制解調(diào)器、紅外線設(shè)備、打印機端口(LPTl)或者串口(0)乂1)等不常用的設(shè)備停用,方法是雙擊要停用的設(shè)備,在其屬性對話框中的〃常規(guī)〃選項卡中選擇〃不要使用這個設(shè)備(停用)〃。在重新啟動設(shè)置即可生效,當(dāng)需要使用這些設(shè)備時再從設(shè)備管理器中啟用它們。25、定期清理系統(tǒng)還原點:打開磁盤清理,選擇其他選項一〉清理系統(tǒng)還原點,點擊清理。26、卸載不需要的程序,這個就不用我多說了27、其它優(yōu)化:a將應(yīng)用軟件裝在其它硬盤(不要安裝在系統(tǒng)盤下,這對重裝系統(tǒng)也有好處);b將〃我的文檔〃文件夾都轉(zhuǎn)到其他分區(qū):在桌面的〃我的文檔〃圖標上是右擊鼠標,選擇〃屬性〃-〉〃移動〃;c將IE臨時文件夾都轉(zhuǎn)到其他分區(qū):打開IE瀏覽器,選擇〃工具〃->〃internet選項常規(guī)〃->〃設(shè)置”->〃移動文件夾〃;d把虛擬內(nèi)存也轉(zhuǎn)到其它硬盤;e把pages文件都指向一個地方:控制面板f系統(tǒng)一性能一高級一虛擬內(nèi)存一更改,注意要點〃設(shè)置〃才會生效;f在桌面的〃我的電腦〃圖標上是右擊鼠標,選擇〃屬性〃->〃高級一性能設(shè)置〃一>〃高級一虛擬內(nèi)存〃,調(diào)至330—720。而且定時清理。整個編譯結(jié)束后,交叉編譯工具鏈將放在/opt/crosstool目錄下,因此腳本需要在/opt下建子目錄,如果不希望使用root權(quán)限運行該腳本,則需要事先給/opt目錄設(shè)置寫權(quán)限:~$sudochmoda+w/opt然后修改arm.dat,其中有TARGET=arm-unknown-linux-gnu這是按標準的命名規(guī)則為工具鏈命名的,但是通常我們都采用更簡單的命名,很多軟件的Makefile中交叉編譯器默認也都采用簡單的命名,為此我們把它改為TARGET=arm-linux。由于編譯過程需要用到patch、bison、flex,確認你的系統(tǒng)中安裝了這些軟件包。在編譯過程中可能還會遇到腳本的兼容性問題,如果你的Linux發(fā)行版將sh指向dash(例如Ubuntu),應(yīng)將其改指向bash:$cd/bin$sudoIn-sfbashsh雖然用dash執(zhí)行腳本時非常高效并且其實現(xiàn)完全遵守POSIX標準,然而現(xiàn)存的很多腳本(比如glibc中的腳本)有不符合POSIX標準的用法,所以仍需改用bash執(zhí)行。準備就緒后,在crosstool-0.43目錄下運行demo-arm.sh腳本開始編譯。編譯完成后,交叉編譯工具鏈的可執(zhí)行文件位于/opt/crosstool/gcc-4.0.2-glibc-2.3.6/arm-linux/bin目錄,我們可以把這個路徑添加到PATH環(huán)境變量中,例如將以下命令添加到?/.bashrc啟動腳本:此外,網(wǎng)上也可下載到已編譯好的交叉編譯工具鏈,比如,但是使用別人編譯好的交叉編譯工具鏈有很多限制,不能按自己的特殊需要對其定制,比如有些項目需要特定版本的gcc和glibc,再比如需要soft-float的編譯器(生成指令模擬浮點數(shù)運算)。以上編譯步驟需要很長時間,也可以直接從ftp下載已制作好的交叉編譯工具鏈安裝到主機:~$sudochmoda+w/opt~$tarxfcrosstool.tar.bz2-C/opt然后在~/.bashrc啟動腳本中修改PATH環(huán)境變量。3.熟悉開發(fā)環(huán)境U-boot的基本使用方法連接好開發(fā)板的網(wǎng)線和串口線,啟動minicom(配置成1152008N1,無FlowControl)。按下開發(fā)板電源,立刻按除回車以外的任意鍵,進入bootloader提示符AKAE2440#。如果沒來及按鍵就已經(jīng)啟動了內(nèi)核,可以按開發(fā)板上的RESET鍵重來。注意:u-boot的終端不能處理控制字符,不要用移動光標鍵或翻頁鍵等,退格鍵可以用。按了產(chǎn)生控制字符的鍵再輸入命令就會產(chǎn)生錯亂,這時可以按下回車輸入當(dāng)前這條已經(jīng)錯亂的命令,然后在新的提示符下重新鍵入命令。輸入printenv命令顯示bootloader的參數(shù)。更改參數(shù)使用命令set或者setenv,如下圖所示:上圖中,setenvipaddr2表示設(shè)置開發(fā)板的IP地址為2。setenvnetmask表示設(shè)置子網(wǎng)掩碼為。setenvserverip1表示設(shè)置與開發(fā)板相連的PC機IP是1??梢愿鶕?jù)你的情況重新設(shè)置。為了統(tǒng)一起見,在后面的實驗中,我們統(tǒng)一設(shè)置為:AKAE2440#setipaddr10

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論