版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
構(gòu)建嵌入式Linux系統(tǒng)1.取本實(shí)驗(yàn)相關(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備注制作交叉編譯工具鏈所需的源碼包這時(shí)屏幕上出現(xiàn)很多內(nèi)核啟動(dòng)信息,之后提示登錄,輸入root即可登錄。(none)login:root現(xiàn)在可以試試各種Linux基本命令。注意cramfs是只讀文件系統(tǒng),在開發(fā)板上運(yùn)行時(shí)不能改動(dòng)里面的文件。有些時(shí)候我們可能會(huì)嘗試配置不同的內(nèi)核選項(xiàng),會(huì)得到不同的幾個(gè)內(nèi)核zlmage文件,這樣都燒寫到flash上再reset啟動(dòng)太浪費(fèi)時(shí)間,可以用tftp把內(nèi)核zImage加載到內(nèi)存0x30008000地址上,不燒寫,直接用myboot0x30008000去啟動(dòng)內(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ā)板運(yùn)行“根文件系統(tǒng)”是一種不嚴(yán)格的說法,其實(shí)是指文件系統(tǒng)中的文件和目錄,這些文件和目錄構(gòu)成了一個(gè)Linux系統(tǒng)運(yùn)行所需的基本框架。ftp上的rootfs-basic.tar是根文件系統(tǒng)的打包,由于包含設(shè)備文件,需要root權(quán)限才能解包:~$sudotarxfrootfs-basic.tar解包后可以根據(jù)自己的需要修改其中的目錄和文件,然后將根文件系統(tǒng)目錄制作成cramfs映像再下到開發(fā)板運(yùn)行,這樣就達(dá)到了修改根文件系統(tǒng)中的目的。首先確認(rèn)你的主機(jī)上安裝了軟件包c(diǎn)ramfsprogs,然后制作cramfs文件系統(tǒng)映像:~$mkcramfs?/rootfsrootfs.cramfs然后按照前面的步驟把rootfs.cramfs下載到開發(fā)板的ext2分區(qū),運(yùn)行一下試試。設(shè)置開發(fā)板的啟動(dòng)方式為NFSRoot基本思想是:在主機(jī)上開NFS服務(wù)器,把主機(jī)上的?/rootfs目錄導(dǎo)出為NFS服務(wù)目錄,使開發(fā)板一啟動(dòng)就自動(dòng)加載主機(jī)的?/rootfs目錄為根文件系統(tǒng),省去了下載和燒寫映像的麻煩,在主機(jī)上修改根文件系統(tǒng)中的文件立刻在開發(fā)板的系統(tǒng)上生效,在開發(fā)過程中十分便利。首先在主機(jī)上安裝和配置NFS服務(wù),確認(rèn)你的主機(jī)安裝了nfs-kernel-server軟件包。然后修改配置文件/etc/exports,添加下面一行(注意*號(hào)后面緊跟左括號(hào),無空格,每個(gè)逗號(hào)后面也不能有空格):/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ù)是否正常啟動(dòng)了,用exportfs命令看一下導(dǎo)出目錄的設(shè)置是否正確。進(jìn)入開發(fā)板的bootloader,修改內(nèi)核啟動(dòng)參數(shù):AKAE2440#setbootcmdnandread0x30008000kernel0x200000\;myboot0x30008000AKAE2440#setbootargsnoinitrdconsole=ttySACO,115200AKAE2440#setinit/linuxrcAKAE2440#setnfsroot/home/akaedu/rootfsAKAE2440#setbootmodenfsAKAE2440#saveAKAE2440#reset真正完整的內(nèi)核啟動(dòng)命令行參數(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注意,如果某一項(xiàng)參數(shù)很長,而miniconi提供的終端卻不能自動(dòng)換行,一行寫不下的部分只好盲打了,注意不要打錯(cuò)。如果是圖形界面的console,可以把字體調(diào)小使得一行可以容得下這么長的參數(shù),或者在gedit寫字板程序中寫好后直接粘貼到console窗口(我們推薦采用這種方法,把經(jīng)常用到的啟動(dòng)參數(shù)都集中寫好,以后可以選擇對(duì)應(yīng)的參數(shù)直接粘貼就好了,非常方便)。關(guān)于NFS根文件系統(tǒng)的內(nèi)核啟動(dòng)參數(shù)參考內(nèi)核源代碼的Documentation/nfsroot.txt文檔。現(xiàn)在可以自己交叉編譯一些小程序,然后拷貝到主機(jī)的?/rootfs目錄,我們可以立刻在開發(fā)板上運(yùn)行該程序,而不需要重新下載和燒寫了。3.4配,3.4配,[YAFFS文件系統(tǒng)cramfs是只讀文件系統(tǒng),在Flash上壓縮存儲(chǔ),解壓并加載到RAM運(yùn)行。由于只讀因而功能上很受限制,但可以保護(hù)系統(tǒng)文件不被意外的寫操作損壞。實(shí)際產(chǎn)品往往配置兩個(gè)Flash分區(qū),一個(gè)只讀分區(qū)用于存放系統(tǒng)文件(程序文件和庫文件),另一個(gè)可寫分區(qū),采用JFFS或YAFFS文件系統(tǒng),用于存放應(yīng)用程序數(shù)據(jù),為了簡便起見,我們只分一個(gè)區(qū),使用可寫的YAFFS文件系統(tǒng)。注意,完成這個(gè)實(shí)驗(yàn)之前先要完成上一節(jié)內(nèi)容,能啟動(dòng)到nfs根文件系統(tǒng)。首先用NFS方式啟動(dòng)系統(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項(xiàng)目()的源代碼中交叉編譯得來的?,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è)備文件需要手動(dòng)創(chuàng)建。重啟目標(biāo)系統(tǒng)之后進(jìn)入U(xiǎn)-boot,修改內(nèi)核啟動(dòng)參數(shù)使之從ext2分區(qū)啟動(dòng)即可(如果下次還用NFS啟動(dòng),這里就不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目錄下~$進(jìn)入內(nèi)核目錄:~$cdlinux-2.6.27(本開發(fā)板不用修改makefile,打補(bǔ)丁時(shí)就會(huì)自動(dòng)修改)首先修改Makefile,找到ARCH?=$(SUBARCH)CROSS_COMPILE?=改為ARCH?=armCROSS_COMPILE?=arm-linux-注意ARCH?=arm后面不能有空格,要確??崭褚褎h除干凈,并且不要漏了armTinux-末尾的。下面對(duì)內(nèi)核打patch(注意打patch不要重復(fù)打):-/linux-2.6.27$patch-pl<然后以內(nèi)核源代碼自帶的smdk2440基本配置文件為基礎(chǔ),使用menuconfig定制內(nèi)核(確認(rèn)你的主機(jī)安裝了libncurses-dev軟件包)。-/linux-2.6.27$cparch/arm/configs/akae2440_defconfig.config?/linux-2.6.27$makemenuconfig查看配置菜單中的如下選項(xiàng)(有些已經(jīng)默認(rèn)選中):1、在Floatingpointemulation中選擇NWFPEmathemulation。由于ARM920T沒有浮點(diǎn)協(xié)處理器,浮點(diǎn)數(shù)指令需要用其它指令仿真實(shí)現(xiàn)。有兩種方法可以仿真浮點(diǎn)指令:一種方法如先前所說的,使交叉編譯器支持soft-float,也就是一遇到C代碼里的浮點(diǎn)運(yùn)算就自動(dòng)生成仿真指令,另一種方法是交叉編譯器仍然生成浮點(diǎn)運(yùn)算指令(對(duì)于ARM平臺(tái)是指協(xié)處理器指令),然而ARM920T沒有浮點(diǎn)協(xié)處理器,無法識(shí)別浮點(diǎn)指令,因而產(chǎn)生undefined異常,這個(gè)Floatingpointemulation內(nèi)核選項(xiàng)就是在undefined異常的處理函數(shù)中仿真實(shí)現(xiàn)浮點(diǎn)運(yùn)算。也就是說,這里我們使用非soft-float的交叉編譯器并在內(nèi)核中實(shí)現(xiàn)浮點(diǎn)仿真。這樣的運(yùn)行效率比使用soft-float編譯要低,因?yàn)槊看胃↑c(diǎn)運(yùn)算都需要處理異常和進(jìn)入內(nèi)核,但是兼容性好,便于我們利用別人已編譯好的程序。2、選中->Pseudo->/procsupport;Sysctlsupport(/proc/sys);sysfssupport和Virtualmemorysupport(formershmfs);TmpfsPOSIXAccesscontrolListSo/procm(或者叫procfs)是內(nèi)核提供給用戶程序的接口,很多Linux程序都需要在proofs中讀寫數(shù)據(jù),比如busybox,因此這個(gè)選項(xiàng)一般是不能少的。Virtualmemorym(或者叫tmpfs)用于內(nèi)存虛擬磁盤,后面我們?cè)谧龈募到y(tǒng)時(shí)要mount一個(gè)tmpfs到/dev目錄下。3、不需要改變Bootoptions->Defaultkernelcommandstring,因?yàn)閎ootloader中的內(nèi)核啟動(dòng)參數(shù)會(huì)取代這里的設(shè)置。4、選中DeviceDrivers->Networkdevicesupport->Ethernet(10or100Mbit)->CS8900Asupport,添加對(duì)網(wǎng)卡芯片的支持。在~>Networks菜單中選上NFSclientsupport;NFSclientsupportforNFSversions;NFSclientsupportfortheNFSv3ACLprotocolextension和RootonNFS。5、選中DeviceDrivers->MemoryTechnologyDevices(MTD)->MTDpartitioningsupport,在DeviceDrivers->MemoryTechnologyDevices(MTD),選中NANDDeviceSupport和它下面的NANDFlashsupportforS3C2410/S3C2440SoC;S3C2410NANDdriverdebug,不要選擇S3c2410NANDHardwareECC,因?yàn)镾3c2410硬件生成ECC碼的算法和我們所需要的不一致。6、在->Miscellaneouss中選中YAFFS2support;Autoselectyaffs2format;cacheshortnamesinRAM,再選上CompressedROMsupport(cramfs)o7、在DeviceDrivers->Graphicssupport中選中Supportforframebufferdevices,再選中它下面的EnablefirmwareEDID;EnablevideoModeHandlingHelpers;S3C2410LCDframebuffersupport,不選擇VirtualFrameBuffersupport因?yàn)樗且粋€(gè)用于調(diào)試的虛擬設(shè)備驅(qū)動(dòng)而不是實(shí)際硬件的驅(qū)動(dòng)。如果還選中了BootupLogo,那么在內(nèi)核啟動(dòng)過程中初始化framebuffer時(shí)會(huì)在屏幕上看到Linux的企鵝logo,這是測試framebuffer驅(qū)動(dòng)是否正常工作最直接的方法。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)核,這個(gè)過程需要較長時(shí)間,編譯好的內(nèi)核位于Vlinux-2.6.27/arch/arm/boot/zImageo現(xiàn)在將自己編譯的內(nèi)核下載到開發(fā)板,看系統(tǒng)能不能正常啟動(dòng)。5.制作根文件系統(tǒng)1根文件系統(tǒng)框架和busybox首先用mkdir手動(dòng)創(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)的掛載點(diǎn)/syssys文件系統(tǒng)的掛載點(diǎn)/dev設(shè)備文件/etc配置文件、啟動(dòng)腳本/var運(yùn)行時(shí)產(chǎn)生的記錄文件、鎖文件、日志文件/tmp運(yùn)行時(shí)產(chǎn)生的臨時(shí)文件/mnt一般用作掛載點(diǎn)/opt一般存放第二方軟件/srv一般用作Web服務(wù)、ftp服務(wù)的服務(wù)目錄接下來安裝busybox到根文件系統(tǒng)中。busybox是專為嵌入式Linux設(shè)計(jì)的,它把大多數(shù)常用命令(如Is、cp、tar等等)的常用選項(xiàng)剪裁出來拼在一起。在根文件系統(tǒng)中只有一個(gè)可執(zhí)行文件就是/bin/busybox,而其它的命令都創(chuàng)建為/bin/busybox的鏈接文件,busybox通過命令行第0個(gè)參數(shù)(也就是命令名)判斷應(yīng)該執(zhí)行哪個(gè)命令。這樣使得嵌入式Linux系統(tǒng)有完整的命令集卻占用很小的存儲(chǔ)空間。首先從官方網(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-然后我們以一個(gè)缺省配置為起點(diǎn)來做進(jìn)一步的配置:-/busybox-1.9.1$makedefconfig-/busybox-1.9.1$makemenuconfig在菜單中做如下配置:選擇BusyBoxSettings->InstallationOptions->BusyBoxinstallationprefix,設(shè)置為/home/akaedu/rootfs,編譯后將安裝到這個(gè)目錄下。根據(jù)需要裁剪各命令。但是Shells->Chooseyourdefaultshell選項(xiàng)一定要保留一個(gè)默認(rèn)shell(例如ash),如果沒有默認(rèn)shell,將不會(huì)創(chuàng)建/bin/sh這個(gè)鏈接,而一般的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目錄,有一個(gè)鏈接文件linuxrc位于根文件系統(tǒng)的根目錄/,它是系統(tǒng)的啟動(dòng)程序,bootloader中內(nèi)核的啟動(dòng)參數(shù)有init=/linuxrc,也就是說內(nèi)核啟動(dòng)后首先執(zhí)行/linuxrc(也是busybox的一個(gè)符號(hào)鏈接)。linuxrc負(fù)責(zé)完成系統(tǒng)的初始化工作:0.設(shè)置信號(hào)處理程序.初始化console.解析/etc/inittab文件.執(zhí)行系統(tǒng)初始化腳本,缺省的是/etc/init.d/rcS.執(zhí)行inittab中類型為wait的程序.執(zhí)行inittab中類型為once的程序上述步驟完成后系統(tǒng)啟動(dòng)完成,此后init程序?qū)⒀h(huán)執(zhí)行以下步驟:0.執(zhí)行inittab中類型為respawn的程序,如果所執(zhí)行的程序終止,則再次執(zhí)行它.如果收到用戶請(qǐng)求,則執(zhí)行inittab中類型為askfirst的程序linuxrc需要讀取設(shè)備文件/dev/console和/dev/null,我們手動(dòng)創(chuàng)建這些設(shè)備文件:~$cdrootfs/dev;sudomknod-m600consolec51;sudomknod-m666nullc13注意,創(chuàng)建設(shè)備文件需要root權(quán)限,常見設(shè)備文件的設(shè)備號(hào)可以從內(nèi)核代碼的Documentation/devices.txt文件中查到。然后創(chuàng)建一個(gè)啟動(dòng)配置文件~/rootfs/etc/inittab:::sysinit:/etc/init.d/rcS::respawn:/sbin/getty115200s3c2410_serial0::restart:/sbin/init::shutdown:/bin/umount-a-r啟動(dòng)的過程中首先執(zhí)行rcS啟動(dòng)腳本,我們創(chuàng)建這個(gè)腳本?/rootfs/etc/init.d/rcS:#!/bin/shmount-a注意這個(gè)腳本需要加可執(zhí)行權(quán)限:chmod+xrcSo這個(gè)腳本做了一件事情,根據(jù)/etc/fstab配置文件提供的信息mount一些文件系統(tǒng),我們創(chuàng)建這個(gè)配置文件?/rootfs/etc/fstab:#<><mountpoint><type><options><dump><pass>proc/procprocdefaults00sys/syssysfsdefaults00/proc和/sys都是pseudo文件系統(tǒng),它們并不在磁盤或flash上存儲(chǔ)任何數(shù)據(jù),雖然看起來/proc和/sys目錄下有很多文件,但這些文件都是內(nèi)核導(dǎo)出的接口,對(duì)這些文件進(jìn)行讀寫會(huì)讀寫到內(nèi)核中的一些運(yùn)行時(shí)參數(shù),而不會(huì)讀寫到磁盤。/proc文件系統(tǒng)是busybox中的許多程序所需要的接口,/sys文件系統(tǒng)則是后面要講的mdev所需要的接口。mount完文件系統(tǒng)后,rcS執(zhí)行結(jié)束。下面將執(zhí)行inittab文件中類型為respawn的命令,也就是/sbin/getty115200s3c2410_serial0我們的PC在啟動(dòng)時(shí)執(zhí)行g(shù)etty打開幾個(gè)虛終端,例如/dev/ttyl?/dev/tty6,嵌入式開發(fā)板也是用getty打開虛終端,這個(gè)虛終端對(duì)應(yīng)的是串口,因此需要訪問串口的設(shè)備文件/dev/s3c2410_serial0,以上命令還指定了波特率為115200?,F(xiàn)在我們創(chuàng)建這個(gè)設(shè)備文件:~$cdrootfs/dev;sudomknod-m600s3c2410_serial0c20464這個(gè)設(shè)備號(hào)在內(nèi)核代碼的Documentation/arm/Samsung-S3C24XX/0verview.txt中可以查到,在內(nèi)核代碼中,S3c2410的第一個(gè)串口表示為ttySACO,但是后面介紹的mdev程序?qū)⑹褂胹3c2410_serial0這個(gè)名字,因此這里把文件名指定為s3c2410一serial。。系統(tǒng)啟動(dòng)打開虛終端后會(huì)提示輸入用戶名和密碼然后才啟動(dòng)shell,我們需要?jiǎng)?chuàng)建帳號(hào)文件passwd和groupo?/rootfs/etc/passwd文件內(nèi)容為:root::0:0:root:/:/bin/sh^/rootfs/etc/group文件內(nèi)容為:root::0:這樣就創(chuàng)建了一個(gè)root帳號(hào),沒有密碼。如果需要密碼,可以把主機(jī)上的/etc/shadow文件中root帳號(hào)的那一行放到開發(fā)板的根文件系統(tǒng)中。2glibc由于busybox需要glibc共享庫的支持,下面的步驟將在根文件系統(tǒng)中安裝glibco在此之前首先解釋一下應(yīng)用程序如何找到所需的共享庫。通過Id命令的參數(shù)-rpath可以在鏈接時(shí)將共享庫的路徑記在應(yīng)用程序中,但是通常不推薦這樣做,通常應(yīng)用程序中只記錄共享庫的文件名(稍后提到的soname),啟動(dòng)程序時(shí)由動(dòng)態(tài)鏈接器/lib/ldTinux.so根據(jù)以下規(guī)則查找共享庫(摘自ld?so(8)):0.首先在環(huán)境變量LD_LIBRARY_PATH所記錄的路徑中查找.然后從緩存文件中查找。將共享庫的路徑寫進(jìn)然后執(zhí)行Idconfig命令就可以生成緩存文件.如果上述步驟都找不到,則到默認(rèn)的系統(tǒng)路徑中查找,先是/usr/lib然后是/lib注意,LD_LIBRARY_PATH是不推薦使用的,盡量不要把它設(shè)定為環(huán)境變量,詳細(xì)解釋參見WhyLD_LIBRARY_PATHisbad(/"barr/ldpath.html)。每個(gè)共享庫有三個(gè)文件名:realname>soname、linkername。realname是庫文件的名字,包含完整的共享庫版本號(hào);soname是庫文件的一個(gè)符號(hào)鏈接的名字,只包含主版本號(hào),主版本號(hào)一致即可保證庫函數(shù)的接口一致,因此應(yīng)用程序只需確認(rèn)soname與所需的共享庫一致;linkername僅由鏈接器使用,有的是庫文件的一個(gè)符號(hào)鏈接的名字,有的是一段鏈接腳本的名字。庫文件的文件頭記錄了soname,因此Idconfig命令可以讀取文件頭生成相應(yīng)的符號(hào)鏈接文件。綜上,Idconfig命令讀取Id.so.conf后做兩件事,一是創(chuàng)建適當(dāng)?shù)膕oname鏈接,二是生成Id.so.cache,包含共享庫的軟件包在安裝過程中都會(huì)執(zhí)行一下Idconfig命令。下面以libc為例說明共享庫的三個(gè)文件名:-rw-r-r-1akaeduakaedu1952008-03-1611:10libc.so$catlibc.so/*GNUIdscriptUsethesharedlibrary,butsomefunctionsareonlyinthestaticlibrary,sotrythatsecondarily.*/0UTPUT_F0RMAT(elf32-littlearm)GROUP(libc.so.6libc_nonshared.a)在我們先前制作交叉編譯工具鏈時(shí)已經(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制作交叉編譯工具鏈的腳本和補(bǔ)丁crosstool.tar.bz2已制作好的交叉編譯工具鏈,需要解包到/opt目錄使用內(nèi)核2627針對(duì)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),也就是在主機(jī)(x86PC)上可編譯生成目標(biāo)板可執(zhí)行文件(ARM指令)的編譯工具。和普通的編譯工具鏈一樣,交叉編譯工具鏈也包括編譯、鏈接、修改目標(biāo)文件的各種程序,如gcc>glibc>Id、gas、objdump、readelf等等。交叉編譯工具鏈本身也是需要編譯生成的,要得到一套完整的交叉編譯工具鏈需要編譯以下源碼包:binutilsgccglibclinux(內(nèi)核)linux-libc-headersglibc-linuxthreads這些源碼包具有非常強(qiáng)的版本依賴關(guān)系,如果源碼包的版本不匹配,在編譯過程中會(huì)出現(xiàn)各種各樣的問題,有些問題需要對(duì)源碼做些修改或者打補(bǔ)丁,有些問題則是沒有解決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是很常用的一個(gè)命令,如果某些程序把共享庫安裝到非標(biāo)準(zhǔn)目錄(/lib和/usr/lib),則需要執(zhí)行Idconfig更新緩存文件/etc/ld.so.cache,比如后面安裝QtopiaCore時(shí)就會(huì)用到。但是busybox不包含Idconfig命令,因?yàn)樗蚲libc密切相關(guān),是隨glibc一起發(fā)布的,先前我們制作交叉編譯工具鏈時(shí)己經(jīng)生成了Idconfig,現(xiàn)在把它拷到根文件系統(tǒng):~$現(xiàn)在通過NFS啟動(dòng)開發(fā)板,應(yīng)該可以成功啟動(dòng)到shell了。3mdev先前我們?cè)诟募到y(tǒng)的/dev目錄下手動(dòng)創(chuàng)建了三個(gè)設(shè)備文件:console、null和s3c2410_serial0,內(nèi)核里還有很多設(shè)備驅(qū)動(dòng)需要通過設(shè)備文件提供接口給應(yīng)用程序訪問,如果一個(gè)一個(gè)手動(dòng)創(chuàng)建太麻煩而且容易出錯(cuò),busybox提供的mdev程序可以從sysfs中讀出內(nèi)核提供的設(shè)備驅(qū)動(dòng)信息,在/dev目錄下自動(dòng)創(chuàng)建相應(yīng)的設(shè)備文件并為這些設(shè)備文件命名。在PC上完成這一功能的是udev,mdev是busybox為嵌入式系統(tǒng)裁剪過的udev。把以下幾行附加到啟動(dòng)腳本~/rootfs/etc/init.d/rcS的末尾:mount-ttmpfsmdev/devmdev-smkdir/dev/inputIn-s/dev/mice/dev/input/micemdev還需要一個(gè)配置文件mdev.conf,用于指定各設(shè)備文件的所有者和權(quán)限,其格式可參考busybox源代碼中的docs/mdev.txt。我們不做特別的設(shè)置,但這個(gè)文件是需要存在的,因此創(chuàng)建一個(gè)空文件:~$touchrootfs/etc/mdev.conf現(xiàn)在重新啟動(dòng)開發(fā)板,從minicorn可以看到開發(fā)板的/dev目錄下創(chuàng)建了很多設(shè)備文件,而從主機(jī)上查看NFS目錄?/rootfs/dev卻仍然只有先前的三個(gè)設(shè)備文件,想一想這是為什么。5.4系統(tǒng)時(shí)鐘首先將主機(jī)上的時(shí)區(qū)文件拷到開發(fā)板根文件系統(tǒng):~$cp/etc/localtime-/rootfs/etc/然后在啟動(dòng)腳本~/=00土£5/61;”門五.d/rcS中添加一條命令:hwclock—hctosys選項(xiàng)--hctosys的意思是讀取硬件RTC時(shí)鐘(he)成為當(dāng)前的系統(tǒng)時(shí)鐘(sys)。在系統(tǒng)運(yùn)行期間,調(diào)用time(2)等函數(shù)讀取的都是內(nèi)核維護(hù)的系統(tǒng)時(shí)鐘,而不會(huì)直接去讀硬件時(shí)鐘,所以,如果用date命令修改了系統(tǒng)時(shí)鐘:#date031915232007MonMar1915:23:00CST2007這時(shí)關(guān)閉系統(tǒng),時(shí)鐘信息還是會(huì)丟失。如果在上述命令后用hwclock命令寫到硬件RTC時(shí)鐘:#hwclock—systohe在系統(tǒng)斷電期間RTC時(shí)鐘由電池來維持,下次啟動(dòng)通過hwclock—hctosys仍然可以將系統(tǒng)時(shí)鐘設(shè)定正確。5.5網(wǎng)絡(luò)配在bootloader中設(shè)置的開發(fā)板IP地址僅在bootloader階段與主機(jī)通信時(shí)起作用。如果是NFSRoot方式啟動(dòng),系統(tǒng)啟動(dòng)后的IP地址是由內(nèi)核啟動(dòng)參數(shù)中的NFS設(shè)置決定的,這樣系統(tǒng)啟動(dòng)后仍然可以讀取主機(jī)的NFS導(dǎo)出目錄。如果是Flash根文件系統(tǒng)啟動(dòng),則啟動(dòng)之后需耍重新配置IP地址和激活網(wǎng)絡(luò)接口,我們可以把配置寫在啟動(dòng)腳本Vrootfs/etc/init.d/rcS中:ifup-a并且添加一個(gè)配置文件~/rootfs/etc/network/interfaces:autoloifaceloinetloopbackautoethOifup命令根據(jù)配置文件激活網(wǎng)絡(luò)接口lo(loopback設(shè)備)和ethO(以太網(wǎng)接口)。.6httpdbusybox自帶了一個(gè)Web服務(wù)器程序httpd,我們?cè)趩?dòng)腳本~/「001£$九1”5近.d/rcS中添加如下一行:httpd-h/srv/www這樣httpd在啟動(dòng)時(shí)以daemon方式運(yùn)行,使用默認(rèn)的80端口(使用-p選項(xiàng)可以自己指定端口)。服務(wù)目錄是/srv/www,如果瀏覽器請(qǐng)求/srv/n目錄下的可執(zhí)行文件,則被httpd當(dāng)作CGI程序執(zhí)行。我們?cè)诟募到y(tǒng)中創(chuàng)建服務(wù)目錄:~$mkdir-prootfs/srv/現(xiàn)在啟動(dòng)開發(fā)板系統(tǒng),試驗(yàn)以下功能:0.編輯一個(gè)index.html放在?/rootfs/srv/www下,從主機(jī)上打開瀏覽器,輸入開發(fā)板的IP地址看能否瀏覽。.編輯一個(gè)shell腳本,加可執(zhí)行權(quán)限,放在~/rootfs/srv/n下,從主機(jī)打開瀏覽器,輸入該腳本的地址(例如)看能否得到執(zhí)行結(jié)果。腳本如下所示:#!/bin/shecho“Content-Type:text/plain〃echoIs-a最終我們的啟動(dòng)腳本~/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盤空間。.打開“我的電腦”-“工具”-“文件夾選項(xiàng)”-“查看”-在“顯示所有文件和文件夾”選項(xiàng)前打勾-“確定”.刪除以下文件夾中的內(nèi)容:x:\DocumentsandSettings'用戶名'Cookies'下的所有文件(保留index文件)x:\DocumentsandSettings'用戶名'LocalSettings\Temp\下的所有文件(用戶臨時(shí)文件)x:\DocumentsandSettings'用戶名\LocalSettings\TemporaryInternetFiles'下的所有文件(頁面文件)x:\DocumentsandSettings'用戶名\LocalSettings\History\下的所有文件(歷史紀(jì)錄)x:\DocumentsandSettings'用戶名\Recent\下的所有文件(最近瀏覽文件的快捷方式)x:\WINDOWS\Temp\下的所有文件(臨時(shí)文件)x:\WINDOWS\ServicePackFiles(升級(jí)spl或sp2后的備份文件)x:\WINDOWS\DriverCache\i386下的壓縮文件(驅(qū)動(dòng)程序的備份文件)x:\WINDOWS\SoftwareDistribution\download下的所有文件.如果對(duì)系統(tǒng)進(jìn)行過windoesupdade升級(jí),則刪除以下文件:x:\windows'下以$u...開頭的隱藏文件.然后對(duì)磁盤進(jìn)行碎片整理,整理過程中請(qǐng)退出一切正在運(yùn)行的程序.碎片整理后打開“開始程序”-“附件”-“系統(tǒng)工具系統(tǒng)還原”-“創(chuàng)建一個(gè)還原點(diǎn)”(最好以當(dāng)時(shí)的日期作為還原點(diǎn)的名字)6,打開“我的電腦”-右鍵點(diǎn)系統(tǒng)盤-“屬性”-“磁盤清理”-“其他選項(xiàng)”-單擊系統(tǒng)還原一欄里的“清理”-選擇“是"-ok了7、在各種軟硬件安裝妥當(dāng)之后,其實(shí)XP需要更新文件的時(shí)候就很少To刪除系統(tǒng)備份文件吧:開始f運(yùn)行fsfc.exe/purgecache近3xxM。(該命令的作用是立即清除〃Windows文件保護(hù)〃文件高速緩存,釋放出其所占據(jù)的空間)8、刪掉\windows\system32\dllcache下dll檔(減去200300mb),這是備用的dll檔,只要你已拷貝了安裝文件,完全可以這樣做。9、XP會(huì)自動(dòng)備份硬件的驅(qū)動(dòng)程序,但在硬件的驅(qū)動(dòng)安裝正確后,一般變動(dòng)硬件的可能性不大,所以也可以考慮將這個(gè)備份刪除,文件位于\windows\drivercache\i386目錄下,名稱為driver,cab,你直接將它刪除就可以了,通常這個(gè)文件是74Mo10、刪除不用的輸入法:對(duì)很多網(wǎng)友來說,WindowsXPt系統(tǒng)自帶的輸入法并不全部都合適自己的使用,比如IMJP8」日文輸入法、IMKR6」韓文輸入法這些輸入法,如果用不著,我們可以將其刪除。輸入法位于\windows\ime\文件夾中,全部占用了88M的空間。11、升級(jí)完成發(fā)現(xiàn)windows'多了許多類似$NtUninstallQ311889$這些目錄,都干掉吧,lx-3xM12、另外,保留著\windows\help目錄下的東西對(duì)我來說是一種傷害,呵呵。。。都干掉!13、關(guān)閉系統(tǒng)還原:系統(tǒng)還原功能使用的時(shí)間一長,就會(huì)占用大量的硬盤空間。因此有必要對(duì)其進(jìn)行手工設(shè)置,以減少硬盤占用量。打開〃系統(tǒng)屬性〃對(duì)話框,選擇〃系統(tǒng)還原〃選項(xiàng),選擇〃在所有驅(qū)動(dòng)器上關(guān)閉系統(tǒng)還原〃復(fù)選框以關(guān)閉系統(tǒng)還原。也可僅對(duì)系統(tǒng)所在的磁盤或分區(qū)設(shè)置還原。先選擇系統(tǒng)所在的分區(qū),單擊〃配置〃按鈕,在彈出的對(duì)話框中取消〃關(guān)閉這個(gè)驅(qū)動(dòng)器的系統(tǒng)還原〃選項(xiàng),并可設(shè)置用于系統(tǒng)還原的磁盤空間大小。14、休眠功能會(huì)占用不少的硬盤空間,如果使用得少不妨將共關(guān)閉,關(guān)閉的方法是的:打開〃控制面板〃,雙擊〃電源選項(xiàng)〃,在彈出的〃電源選項(xiàng)屬性〃對(duì)話框中選擇〃休眠〃選項(xiàng)卡,取消〃啟用休眠〃復(fù)選框。15、卸載不常用組件:XP默認(rèn)給操作系統(tǒng)安裝了一些系統(tǒng)組件,而這些組件有很大一部分是你根本不可能用到的,可以在〃添加/刪除Windows組件〃中將它們卸載。但其中有一些組件XP默認(rèn)是隱藏的,在〃添加/刪除Windows組件〃中找不到它們,這時(shí)可以這樣操作:用記事本打開\windows\inf\sysoc.inf這個(gè)文件,用查找/替換功能把文件中的〃hide〃字符全部替換為空。這樣,就把所有組件的隱藏屬性都去掉了,存盤退出后再運(yùn)行〃添加-刪除程序“,就會(huì)看見多出不少你原來看不見的選項(xiàng),把其中那些你用不到的組件刪掉(記住存盤的時(shí)候要保存為sysoc.inf,而不是默認(rèn)的sysoc.txt),如Internal信使服務(wù)、傳真服務(wù)、Windowsmessenger,碼表等,大約可騰出近50MB的空間。16、清除系統(tǒng)臨時(shí)文件:系統(tǒng)的臨時(shí)文件一般存放在兩個(gè)位置中:一個(gè)Windows安裝目錄下的Temp文件夾;另一個(gè)是x:\DocumentsandSettings〃用戶名〃'LocalSettings\Temp文件夾(Y:是系統(tǒng)所在的分區(qū))。這兩個(gè)位置的文件均可以直接刪除。17、清除Internet臨時(shí)文件:定期刪除上網(wǎng)時(shí)產(chǎn)生的大量Internet臨時(shí)文件,將節(jié)省大量的硬盤空間。打開IE瀏覽器,從〃工具〃菜單中選擇〃Internet選項(xiàng)〃,在彈出的對(duì)話框中選擇〃常規(guī)〃選項(xiàng)卡,在〃Internet臨時(shí)文件〃欄中單擊〃刪除文件〃按鈕,并在彈出〃刪除文件〃對(duì)話框,選中〃刪除所有脫機(jī)內(nèi)容〃復(fù)選框,單擊〃確定〃按鈕。18、清除預(yù)讀文件:WindowsXP的預(yù)讀設(shè)置雖然可以提高系統(tǒng)速度,但是使用一段時(shí)間后,預(yù)讀文件夾里的文件數(shù)量會(huì)變得相當(dāng)龐大,導(dǎo)致系統(tǒng)搜索花費(fèi)的時(shí)間變長。而且有些應(yīng)用程序會(huì)產(chǎn)生死鏈接文件,更加重了系統(tǒng)搜索的負(fù)擔(dān)。所以,應(yīng)該定期刪除這些預(yù)讀文件。預(yù)計(jì)文件存放在WindowsXP系統(tǒng)文件夾的Prefetch文件夾中,該文件夾下的所有文件均可刪除。19、壓縮NTFS驅(qū)動(dòng)器、文件或文件夾:如果你的硬盤采用的是NTFS文件系統(tǒng),空間實(shí)在緊張,還可以考慮啟用NTFS的壓縮功能。右擊要壓縮的驅(qū)動(dòng)器一〃屬性〃一〃常規(guī)〃一〃壓縮磁盤以節(jié)省磁盤空間〃,然后單擊〃確定〃,在〃確認(rèn)屬性更改〃中選擇需要的選項(xiàng)。這樣可以節(jié)省約20%的硬盤空間。在壓縮C盤的時(shí)候,最好在安全模式下壓縮,這樣效果要好一些。20、關(guān)閉華醫(yī)生Dr.Watson:要關(guān)閉Dr.Watson可打開注冊(cè)表編輯器,找到〃HKEYLOCALMACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug〃分支,雙擊其下的Auto鍵值名稱,將其〃數(shù)值數(shù)據(jù)〃改為0,最后按F5刷新使設(shè)置生效,這樣就取消它的運(yùn)行了。也在〃開始〃->〃運(yùn)行〃中輸入〃drwtsn32〃命令,或者"開始"-『程序〃附件“->〃系統(tǒng)工具”->〃系統(tǒng)信息〃->〃工具〃->〃DrWatson〃,調(diào)出系統(tǒng)里的華醫(yī)生Dr.Watson,只保留〃轉(zhuǎn)儲(chǔ)全部線程上下文〃選項(xiàng),否則一旦程序出錯(cuò),硬盤會(huì)讀很久,并占用大量空間。如以前有此情況,請(qǐng)查找user.dmp文件,刪除后可節(jié)省幾十MB空間。21、關(guān)閉遠(yuǎn)程桌面:〃我的電腦〃->〃屬性〃->〃遠(yuǎn)程〃,〃遠(yuǎn)程桌面〃里的〃允許用戶遠(yuǎn)程連接到這臺(tái)計(jì)算機(jī)〃勾去掉。22、取消XP對(duì)ZIP支持:WindowsXP在默認(rèn)情況下打開了對(duì)zip文件支持,這要占用一定的系統(tǒng)資源,可選擇〃開始一運(yùn)行〃,在〃運(yùn)行〃對(duì)話框中鍵入〃regsvr32/uzipfldr.dll",回車確認(rèn)即可取消XP對(duì)ZIP解壓縮的支持,從而節(jié)省系統(tǒng)資源。23、關(guān)閉錯(cuò)誤報(bào)告:當(dāng)應(yīng)用程序出錯(cuò)時(shí),會(huì)彈出發(fā)送錯(cuò)誤報(bào)告的窗口,其實(shí)這樣的錯(cuò)誤報(bào)告對(duì)普通用戶而言幾乎沒有任何意義,關(guān)閉它是明智的選擇。在〃系統(tǒng)屬性”對(duì)話框中選擇〃高級(jí)〃選項(xiàng)卡,單擊“錯(cuò)誤報(bào)告〃按鈕,在彈出的〃錯(cuò)誤匯報(bào)〃對(duì)話框中,選擇〃禁用錯(cuò)誤匯報(bào)〃單選項(xiàng),最后單擊〃確定〃即可。另外我們也可以從組策略中關(guān)閉錯(cuò)誤報(bào)告:從〃運(yùn)行〃中鍵入〃gpedit.msc〃,運(yùn)行〃組策略編輯器〃,展開〃計(jì)算機(jī)配置一管理模板一系統(tǒng)一錯(cuò)誤報(bào)告功能〃,雙擊右邊設(shè)置欄中的〃報(bào)告錯(cuò)誤〃,在彈出的〃屬性〃對(duì)話框中選擇〃已禁用〃單選框即可將〃報(bào)告錯(cuò)誤〃禁用。24、關(guān)掉不用的設(shè)備:WindowsXP總是盡可能為電腦的所有設(shè)備安裝驅(qū)動(dòng)程序并進(jìn)行管理,這不僅會(huì)減慢系統(tǒng)啟動(dòng)的速度,同時(shí)也造成了系統(tǒng)資源的大量占用。針對(duì)這一情況,你可在設(shè)備管理器中,將PCMCIA卡、調(diào)制解調(diào)器、紅外線設(shè)備、打印機(jī)端口(LPT1)或者串口(COM1)等不常用的設(shè)備停用,方法是雙擊要停用的設(shè)備,在其屬性對(duì)話框中的〃常規(guī)“選項(xiàng)卡中選擇〃不要使用這個(gè)設(shè)備(停用)〃。在重新啟動(dòng)設(shè)置即可生效,當(dāng)需要使用這些設(shè)備時(shí)再從設(shè)備管理器中啟用它們。25、定期清理系統(tǒng)還原點(diǎn):打開磁盤清理,選擇其他選項(xiàng)一>清理系統(tǒng)還原點(diǎn),點(diǎn)擊清理。26、卸載不需要的程序,這個(gè)就不用我多說了27、其它優(yōu)化:a將應(yīng)用軟件裝在其它硬盤(不要安裝在系統(tǒng)盤下,這對(duì)重裝系統(tǒng)也有好處);b將“我的文檔〃文件夾都轉(zhuǎn)到其他分區(qū):在桌面的〃我的文檔〃圖標(biāo)上是右擊鼠標(biāo),選擇〃屬性〃->〃移動(dòng)〃;C將IE臨時(shí)文件夾都轉(zhuǎn)到其他分區(qū):打開IE瀏覽器,選擇〃工具〃-yinternet選項(xiàng)〃->〃常規(guī)〃->〃設(shè)置〃-〉〃移動(dòng)文件夾〃;d把虛擬內(nèi)存也轉(zhuǎn)到其它硬盤;e把pages文件都指向一個(gè)地方:控制面板f系統(tǒng)f性能一高級(jí)一虛擬內(nèi)存一更改,注意要點(diǎn)〃設(shè)置〃才會(huì)生效;f在桌面的“我的電腦〃圖標(biāo)上是右擊鼠標(biāo),選擇〃屬性高級(jí)一性能設(shè)置〃一〉〃高級(jí)一虛擬內(nèi)存〃,調(diào)至330—720。而且定時(shí)清理。主要介紹一下Windows操作系統(tǒng)在C盤空間不足的情況下,我們可以通過那些具體手段來增加C盤空間。.打開“我的電腦”-“工具”-“文件夾選項(xiàng)”-“查看”-在“顯示所有文件和文件夾”選項(xiàng)前打勾-“確定”.刪除以下文件夾中的內(nèi)容:x:\DocumentsandSettings'用戶名'Cookies'下的所有文件(保留index文件)x:\DocumentsandSettings'用戶名\LocalSettings\Temp\下的所有文件(用戶臨時(shí)文件)x:\DocumentsandSettings'用戶名\LocalSettings\TemporaryInternetFiles'下的所有文件(頁面文件)x:\DocumentsandSettings'用戶名\LocalSettings\History\下的所有文件(歷史紀(jì)錄)x:\DocumentsandSettings'用戶名\Recent\下的所有文件(最近瀏覽文件的快捷方式)x:\WIND0WS\Temp\下的所有文件(臨時(shí)文件)x:\WINDOWS\ServicePackFiles(升級(jí)spl或sp2后的備份文件)x:\WINDOWS\DriverCache\i386下的壓縮文件(驅(qū)動(dòng)程序的備份文件)辦法的,只能更換匹配較好的版本。編譯的步驟也是比較復(fù)雜的,主要有以下幾步:0.根據(jù)目標(biāo)平臺(tái)配置內(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平臺(tái)上glibc版本較高,兼容性較好的一個(gè)組合:修改crosstool-0.43目錄下的腳本demo-arm.sh,取消這一行開頭的#號(hào)注釋符:#eval"catarm.datgcc-4.0.2-glibc-2.3.6.dafshalLsh—notest同時(shí)將原本沒有注釋的這一行注釋掉(前面加#號(hào)):eval'catarm.datgcc-4.1.0-glibc-2.3.2-tls.dafshall.sh—notest注意該腳本開頭有TARBALLS_DIR=$HOME/downloadsRESULT_TOP=/opt/crosstool這說明,該腳本運(yùn)行時(shí),自動(dòng)從和下載相關(guān)的源碼包到主目錄的downloads目錄下,如果你已經(jīng)下載過這些源碼包,將它們拷到downloads目錄下就可以不必再次下載了。對(duì)應(yīng)于我們選擇的版本組合,downloads目錄下的源碼包有:linux-2.6?x:\WINDOWS\SoftwareDistribution\download下的所有文件.如果對(duì)系統(tǒng)進(jìn)行過windoesupdade升級(jí),則刪除以下文件:x:\windows\下以$u...開頭的隱藏文件.然后對(duì)磁盤進(jìn)行碎片整理,整理過程中請(qǐng)退出一切正在運(yùn)行的程序.碎片整理后打開“開始”-“程序附件”-“系統(tǒng)工具系統(tǒng)還原”-“創(chuàng)建一個(gè)還原點(diǎn)”(最好以當(dāng)時(shí)的日期作為還原點(diǎn)的名字).打開“我的電腦”-右鍵點(diǎn)系統(tǒng)盤-“屬性”-“磁盤清理其他選項(xiàng)”-單擊系統(tǒng)還原一欄里的“清理”-選擇“是"-ok了7、在各種軟硬件安裝妥當(dāng)之后,其實(shí)XP需要更新文件的時(shí)候就很少了。刪除系統(tǒng)備份文件吧:開始f運(yùn)行fsfc.exe/purgecache近3xxM。(該命令的作用是立即清除〃Windows文件保護(hù)〃文件高速緩存,釋放出其所占據(jù)的空間)8、刪掉\windows\system32\dncache下dll檔(減去200300mb),這是備用的dll檔,只要你已拷貝了安裝文件,完全可以這樣做。9、XP會(huì)自動(dòng)備份硬件的驅(qū)動(dòng)程序,但在硬件的驅(qū)動(dòng)安裝正確后,一般變動(dòng)硬件的可能性不大,所以也可以考慮將這個(gè)備份刪除,文件位于\windows\drivercache\i386目錄下,名稱為driver,cab,你直接將它刪除就可以了,通常這個(gè)文件是74MO10、刪除不用的輸入法:對(duì)很多網(wǎng)友來說,WindowsXPt系統(tǒng)自帶的輸入法并不全部都合適自己的使用,比如IMJP8」日文輸入法、IMKR6」韓文輸入法這些輸入法,如果用不著,我們可以將其刪除。輸入法位于\windows\ime\文件夾中,全部占用了88M的空間。11、升級(jí)完成發(fā)現(xiàn)windows'多了許多類似$NtUninstallQ311889$這些目錄,都干掉吧,lx-3xM12、另外,保留著\windows\help目錄下的東西對(duì)我來說是一種傷害,呵呵。。。都干掉!13、關(guān)閉系統(tǒng)還原:系統(tǒng)還原功能使用的時(shí)間一長,就會(huì)占用大量的硬盤空間。因此有必要對(duì)其進(jìn)行手工設(shè)置,以減少硬盤占用量。打開〃系統(tǒng)屬性〃對(duì)話框,選擇〃系統(tǒng)還原〃選項(xiàng),選擇〃在所有驅(qū)動(dòng)器上關(guān)閉系統(tǒng)還原〃復(fù)選框以關(guān)閉系統(tǒng)還原。也可僅對(duì)系統(tǒng)所在的磁盤或分區(qū)設(shè)置還原。先選擇系統(tǒng)所在的分區(qū),單擊〃配置〃按鈕,在彈出的對(duì)話框中取消〃關(guān)閉這個(gè)驅(qū)動(dòng)器的系統(tǒng)還原〃選項(xiàng),并可設(shè)置用于系統(tǒng)還原的磁盤空間大小。14、休眠功能會(huì)占用不少的硬盤空間,如果使用得少不妨將共關(guān)閉,關(guān)閉的方法是的:打開〃控制面板〃,雙擊〃電源選項(xiàng)〃,在彈出的〃電源選項(xiàng)屬性〃對(duì)話框中選擇〃休眠〃選項(xiàng)卡,取消〃啟用休眠〃復(fù)選框。15、卸載不常用組件:XP默認(rèn)給操作系統(tǒng)安裝了一些系統(tǒng)組件,而這些組件有很大一部分是你根本不可能用到的,可以在〃添加/刪除Windows組件〃中將它們卸載。但其中有一些組件XP默認(rèn)是隱藏的,在〃添加/刪除Windows組件〃中找不到它們,這時(shí)可以這樣操作:用記事本打開\windows\inf\sysoc.inf這個(gè)文件,用查找/替換功能把文件中的〃hide〃字符全部替換為空。這樣,就把所有組件的隱藏屬性都去掉了,存盤退出后再運(yùn)行〃添加-刪除程序〃,就會(huì)看見多出不少你原來看不見的選項(xiàng),把其中那些你用不到的組件刪掉(記住存盤的時(shí)候要保存為sysoc.inf,而不是默認(rèn)的sysoc.txt),如Internal信使服務(wù)、傳真服務(wù)、Windowsmessenger,碼表等,大約可騰出近50MB的空間。16、清除系統(tǒng)臨時(shí)文件:系統(tǒng)的臨時(shí)文件一般存放在兩個(gè)位置中:一個(gè)Windows安裝目錄下的Temp文件夾;另一個(gè)是x:\DocumentsandSettings〃用戶名〃\LocalSettings\Temp文件夾(Y:是系統(tǒng)所在的分區(qū))。這兩個(gè)位置的文件均可以直接刪除。17、清除Internet臨時(shí)文件:定期刪除上網(wǎng)時(shí)產(chǎn)生的大量Internet臨時(shí)文件,將節(jié)省大量的硬盤空間。打開IE瀏覽器,從〃工具〃菜單中選擇〃Internet選項(xiàng)〃,在彈出的對(duì)話框中選擇〃常規(guī)〃選項(xiàng)卡,在〃Internet臨時(shí)文件〃欄中單擊〃刪除文件〃按鈕,并在彈出〃刪除文件〃對(duì)話框,選中〃刪除所有脫機(jī)內(nèi)容〃復(fù)選框,單擊〃確定〃按鈕。18、清除預(yù)讀文件:WindowsXP的預(yù)讀設(shè)置雖然可以提高系統(tǒng)速度,但是使用一段時(shí)間后,預(yù)讀文件夾里的文件數(shù)量會(huì)變得相當(dāng)龐大,導(dǎo)致系統(tǒng)搜索花費(fèi)的時(shí)間變長。而且有些應(yīng)用程序會(huì)產(chǎn)生死鏈接文件,更加重了系統(tǒng)搜索的負(fù)擔(dān)。所以,應(yīng)該定期刪除這些預(yù)讀文件。預(yù)計(jì)文件存放在WindowsXP系統(tǒng)文件夾的Prefetch文件夾中,該文件夾下的所有文件均可刪除。19、壓縮NTFS驅(qū)動(dòng)器、文件或文件夾:如果你的硬盤采用的是NTFS文件系統(tǒng),空間實(shí)在緊張,還可以考慮啟用NTFS的壓縮功能。右擊要壓縮的驅(qū)動(dòng)器一〃屬性〃一〃常規(guī)〃一〃壓縮磁盤以節(jié)省磁盤空間〃,然后單擊〃確定〃,在〃確認(rèn)屬性更改〃中選擇需要的選項(xiàng)。這樣可以節(jié)省約20%的硬盤空間。在壓縮C盤的時(shí)候,最好在安全模式下壓縮,這樣效果要好一些。20、關(guān)閉華醫(yī)生Dr.Watson:要關(guān)閉Dr.Watson可打開注冊(cè)表編輯器,找到〃HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug〃分支,雙擊其下的Auto鍵值名稱,將其〃數(shù)值數(shù)據(jù)〃改為0,最后按F5刷新使設(shè)置生效,這樣就取消它的運(yùn)行了。也在〃開始〃-〉〃運(yùn)行〃中輸入〃drwtsn32〃命令,或者〃開始〃-〉〃程序〃->〃附件〃->〃系統(tǒng)工具〃-〉〃系統(tǒng)信息〃-〉〃工具〃->〃DrWatson〃,調(diào)出系統(tǒng)里的華醫(yī)生Dr.Watson,只保留〃轉(zhuǎn)儲(chǔ)全部線程上下文〃選項(xiàng),否則一旦程序出錯(cuò),硬盤會(huì)讀很久,并占用大量空間。如以前有此情況,請(qǐng)查找user,dmp文件,刪除后可節(jié)省幾十MB空間。21、關(guān)閉遠(yuǎn)程桌面:〃我的電腦〃-〉〃屬性〃->〃遠(yuǎn)程〃,〃遠(yuǎn)程桌面〃里的〃允許用戶遠(yuǎn)程連接到這臺(tái)計(jì)算機(jī)〃勾去掉。22、取消XP對(duì)ZIP支持:WindowsXP在默認(rèn)情況下打開了對(duì)zip文件支持,這要占用一定的系統(tǒng)資源,可選擇〃開始一運(yùn)行〃,在〃運(yùn)行〃對(duì)話框中鍵入〃regsvr32/uzipfldr.dll",回車確認(rèn)即可取消XP對(duì)ZIP解壓縮的支持,從而節(jié)省系統(tǒng)資源。23、關(guān)閉錯(cuò)誤報(bào)告:當(dāng)應(yīng)用程序出錯(cuò)時(shí),會(huì)彈出發(fā)送錯(cuò)誤報(bào)告的窗口,其實(shí)這樣的錯(cuò)誤報(bào)告對(duì)普通用戶而言幾乎沒有任何意義,關(guān)閉它是明智的選擇。在〃系統(tǒng)屬性〃對(duì)話框中選擇〃高級(jí)〃選項(xiàng)卡,單擊〃錯(cuò)誤報(bào)告〃按鈕,在彈出的〃錯(cuò)誤匯報(bào)〃對(duì)話框中,選擇〃禁用錯(cuò)誤匯報(bào)〃單選項(xiàng),最后單擊〃確定〃即可。另外我們也可以從組策略中關(guān)閉錯(cuò)誤報(bào)告:從〃運(yùn)行〃中鍵入〃gpedit.msc〃,運(yùn)行〃組策略編輯器〃,展開〃計(jì)算機(jī)配置一管理模板一系統(tǒng)一錯(cuò)誤報(bào)告功能〃,雙擊右邊設(shè)置欄中的〃報(bào)告錯(cuò)誤〃,在彈出的〃屬性〃對(duì)話框中選擇〃已禁用〃單選框即可將〃報(bào)告錯(cuò)誤〃禁用。24、關(guān)掉不用的設(shè)備:WindowsXP總是盡可能為電腦的所有設(shè)備安裝驅(qū)動(dòng)程序并進(jìn)行管理,這不僅會(huì)減慢系統(tǒng)啟動(dòng)的速度,同時(shí)也造成了系統(tǒng)資源的大量占用。針對(duì)這一情況,你可在設(shè)備管理器中,將PCMCIA卡、調(diào)制解調(diào)器、紅外線設(shè)備、打印機(jī)端口(LPTl)或者串口(0)乂1)等不常用的設(shè)備停用,方法是雙擊要停用的設(shè)備,在其屬性對(duì)話框中的〃常規(guī)〃選項(xiàng)卡中選擇〃不要使用這個(gè)設(shè)備(停用)〃。在重新啟動(dòng)設(shè)置即可生效,當(dāng)需要使用這些設(shè)備時(shí)再從設(shè)備管理器中啟用它們。25、定期清理系統(tǒng)還原點(diǎn):打開磁盤清理,選擇其他選項(xiàng)一〉清理系統(tǒng)還原點(diǎn),點(diǎn)擊清理。26、卸載不需要的程序,這個(gè)就不用我多說了27、其它優(yōu)化:a將應(yīng)用軟件裝在其它硬盤(不要安裝在系統(tǒng)盤下,這對(duì)重裝系統(tǒng)也有好處);b將〃我的文檔〃文件夾都轉(zhuǎn)到其他分區(qū):在桌面的〃我的文檔〃圖標(biāo)上是右擊鼠標(biāo),選擇〃屬性〃-〉〃移動(dòng)〃;c將IE臨時(shí)文件夾都轉(zhuǎn)到其他分區(qū):打開IE瀏覽器,選擇〃工具〃->〃internet選項(xiàng)常規(guī)〃->〃設(shè)置”->〃移動(dòng)文件夾〃;d把虛擬內(nèi)存也轉(zhuǎn)到其它硬盤;e把pages文件都指向一個(gè)地方:控制面板f系統(tǒng)一性能一高級(jí)一虛擬內(nèi)存一更改,注意要點(diǎn)〃設(shè)置〃才會(huì)生效;f在桌面的〃我的電腦〃圖標(biāo)上是右擊鼠標(biāo),選擇〃屬性〃->〃高級(jí)一性能設(shè)置〃一>〃高級(jí)一虛擬內(nèi)存〃,調(diào)至330—720。而且定時(shí)清理。整個(gè)編譯結(jié)束后,交叉編譯工具鏈將放在/opt/crosstool目錄下,因此腳本需要在/opt下建子目錄,如果不希望使用root權(quán)限運(yùn)行該腳本,則需要事先給/opt目錄設(shè)置寫權(quán)限:~$sudochmoda+w/opt然后修改arm.dat,其中有TARGET=arm-unknown-linux-gnu這是按標(biāo)準(zhǔn)的命名規(guī)則為工具鏈命名的,但是通常我們都采用更簡單的命名,很多軟件的Makefile中交叉編譯器默認(rèn)也都采用簡單的命名,為此我們把它改為TARGET=arm-linux。由于編譯過程需要用到patch、bison、flex,確認(rèn)你的系統(tǒng)中安裝了這些軟件包。在編譯過程中可能還會(huì)遇到腳本的兼容性問題,如果你的Linux發(fā)行版將sh指向dash(例如Ubuntu),應(yīng)將其改指向bash:$cd/bin$sudoIn-sfbashsh雖然用dash執(zhí)行腳本時(shí)非常高效并且其實(shí)現(xiàn)完全遵守POSIX標(biāo)準(zhǔn),然而現(xiàn)存的很多腳本(比如glibc中的腳本)有不符合POSIX標(biāo)準(zhǔn)的用法,所以仍需改用bash執(zhí)行。準(zhǔn)備就緒后,在crosstool-0.43目錄下運(yùn)行demo-arm.sh腳本開始編譯。編譯完成后,交叉編譯工具鏈的可執(zhí)行文件位于/opt/crosstool/gcc-4.0.2-glibc-2.3.6/arm-linux/bin目錄,我們可以把這個(gè)路徑添加到PATH環(huán)境變量中,例如將以下命令添加到?/.bashrc啟動(dòng)腳本:此外,網(wǎng)上也可下載到已編譯好的交叉編譯工具鏈,比如,但是使用別人編譯好的交叉編譯工具鏈有很多限制,不能按自己的特殊需要對(duì)其定制,比如有些項(xiàng)目需要特定版本的gcc和glibc,再比如需要soft-float的編譯器(生成指令模擬浮點(diǎn)數(shù)運(yùn)算)。以上編譯步驟需要很長時(shí)間,也可以直接從ftp下載已制作好的交叉編譯工具鏈安裝到主機(jī):~$sudochmoda+w/opt~$tarxfcrosstool.tar.bz2-C/opt然后在~/.bashrc啟動(dòng)腳本中修改PATH環(huán)境變量。3.熟悉開發(fā)環(huán)境U-boot的基本使用方法連接好開發(fā)板的網(wǎng)線和串口線,啟動(dòng)minicom(配置成1152008N1,無FlowControl)。按下開發(fā)板電源,立刻按除回車以外的任意鍵,進(jìn)入bootloader提示符AKAE2440#。如果沒來及按鍵就已經(jīng)啟動(dòng)了內(nèi)核,可以按開發(fā)板上的RESET鍵重來。注意:u-boot的終端不能處理控制字符,不要用移動(dòng)光標(biāo)鍵或翻頁鍵等,退格鍵可以用。按了產(chǎn)生控制字符的鍵再輸入命令就會(huì)產(chǎn)生錯(cuò)亂,這時(shí)可以按下回車輸入當(dāng)前這條已經(jīng)錯(cuò)亂的命令,然后在新的提示符下重新鍵入命令。輸入printenv命令顯示bootloader的參數(shù)。更改參數(shù)使用命令set或者setenv,如下圖所示:上圖中,setenvipaddr2表示設(shè)置開發(fā)板的IP地址為2。setenvnetmask表示設(shè)置子網(wǎng)掩碼為。setenvserverip1表示設(shè)置與開發(fā)板相連的PC機(jī)IP是1??梢愿鶕?jù)你的情況重新設(shè)置。為了統(tǒng)一起見,在后面的實(shí)驗(yàn)中,我們統(tǒng)一設(shè)置為:AKAE2440#setipaddr10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)一年級(jí)加減法口算100道A4直接打印
- 小學(xué)五年級(jí)數(shù)學(xué)上期小數(shù)點(diǎn)乘除法計(jì)算習(xí)題
- 中國中學(xué)生心理健康量表共60項(xiàng)-分為10個(gè)因子-各因子所包
- 企業(yè)財(cái)務(wù)報(bào)表附注
- 《華為管理之道教材》課件
- 電火焊工必知必會(huì)知識(shí)點(diǎn)
- 食品行業(yè)食品安全檢測總結(jié)
- 健身行業(yè)的個(gè)人發(fā)展規(guī)劃計(jì)劃
- 印刷行業(yè)印刷排版培訓(xùn)總結(jié)
- 紡織業(yè)人事工作總結(jié)
- 2024年江蘇省無錫惠山經(jīng)濟(jì)開發(fā)區(qū)招聘14人歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 快件處理員(中級(jí))職業(yè)技能鑒定考試題及答案
- 2024年企業(yè)環(huán)保工作計(jì)劃(三篇)
- 2023-2024公需科目(數(shù)字經(jīng)濟(jì)與驅(qū)動(dòng)發(fā)展)考試題庫及答案
- 2024標(biāo)準(zhǔn)版勞務(wù)合同范本下載
- 2023年膨潤土行業(yè)分析報(bào)告及未來五至十年行業(yè)發(fā)展報(bào)告
- 黑布林閱讀初一5《大衛(wèi)和超級(jí)神探》中文版
- 河南省鄭州市二七區(qū)興華小學(xué)教育集團(tuán)2023-2024學(xué)年三年級(jí)上學(xué)期期末監(jiān)測調(diào)研語文試卷
- (完整版)新員工進(jìn)場三級(jí)安全教育考核-試卷及答案
- 1.3 中華文明的起源 課件 2024-2025學(xué)年部編版七年級(jí)歷史上學(xué)期
- 蘇教版四年級(jí)上冊(cè)數(shù)學(xué)計(jì)算題大全1000道帶答案
評(píng)論
0/150
提交評(píng)論