版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Linux 內(nèi)核裁剪的自動化方法隨著廣泛地獲得使用并被移植到不同的平臺,Linux 內(nèi)核源代碼正在越來越大,比如, Linux 2.6.28 中, 文件數(shù)有 25282 個,大小有350M。 對于某一個平臺,真正需要的的文件其實不到 10%, 為了提高研發(fā)效率,我們應(yīng)當(dāng)刪除或者暫時刪除那些永遠(yuǎn)也不會用到的文件, 比如,可以使內(nèi)核的文件數(shù)縮減到5000, 從而節(jié)約拷貝、查找等的時間,提高研發(fā)效率。 本文提出一種高效、干凈的進(jìn)行內(nèi)核裁剪的辦法。以往,我們是通過手工刪除某些目錄來完成這個任務(wù)的。 手工刪除的缺點有:1.花時間,每次裁剪都要花 1 2 天, 才能將文件數(shù)目刪除到 5000 以下。2.不
2、夠干凈。 內(nèi)核代碼的 Makefile 以及 Kconfig 配置文件彼此的依賴性比較大, 即使某個目錄下的功能不被使用,直接刪除也會導(dǎo)致編譯出錯, 從而, 不得不修改相應(yīng)的 Makefile 以及 Kconfig 才能使編譯通過。 這留下一下隱患。3.恢復(fù)困難。 根據(jù)2)的描述,在我們對外發(fā)布完整版本而需要將以前刪除、修改的文件復(fù)原時,需要使用比較工具,仔細(xì)地比對,才能完整恢復(fù), 這也非常花時間。 在經(jīng)歷了手工操作的痛苦之后,我們提出了一種自動化的方法。具體為:1.只刪除文件,不刪除目錄,保留 Makefile 及 Kconfig2.使用時,只需要填充一個配置表,其中,可以指定:1.刪除某個
3、文件, 比如:drivers/macintosh/adbhid.c2.刪除某個目錄下的匹配文件, 比如:include/asm-arm/hardware/*.h3.刪除某個目錄及其子目錄下的匹配文件,比如:drivers/block/#.c4.刪除某個目錄及其子目錄下的適合刪除文件, 比如:arch/alpha/#3.腳本會根據(jù)配置表,將相關(guān)的文件移動到一備份目錄,并保持原有的目錄結(jié)構(gòu)4.需要恢復(fù)時,只需要將備份目錄下的文件拷貝到原來的目錄,既可。 優(yōu)點如下:1.配置文件一次指定,可反復(fù)使用, 對同一內(nèi)核,不需要更改就可以再次運行。對不同內(nèi)核,只要稍作修改(內(nèi)核的目錄結(jié)構(gòu)不怎么變化),既可復(fù)用
4、。2.配置文件指定后,裁剪及備份內(nèi)核的操作可以在幾秒內(nèi)完成,大大提高的效率。3.由于我們只刪除 *.c, *.h, *.txt 等文件,而不刪除編譯相關(guān)的配置文件,裁剪后的內(nèi)核特別干凈,不會影響編譯。打外部 patch 也特別容易。4.需要對外發(fā)布版本時,可以直接運行 restore.sh 腳本,瞬間完成。5.由于操作的可反復(fù)性,我們可以不斷優(yōu)化裁剪列表,得到最小內(nèi)核。最大程度地提高研發(fā)效率。 以下為例子配置文件:# README #here to specify which files(unused in your project) to move#you can specify a rel
5、ative directory with file name followed#you can specify # *.c to mean all c files below the dir # #.c to mean all c files below the dir and subdir# # to mean all files of known type below the dir and subdir# # Example:# drivers/macintosh/adbhid.c# drivers/dio/*.c# drivers/block/#.c# drivers/dio/#*ke
6、rnel version: 2.6.25# arch/#arch/alpha/#arch/avr32/#arch/blackfin/#arch/cris/#arch/frv/#arch/h8300/#arch/ia64/#arch/m32r/#arch/m68k/#arch/m68knommu/#arch/mips/#arch/mn10300/#arch/parisc/#arch/powerpc/#arch/ppc/#arch/s390/#arch/sh/#arch/sparc/#arch/sparc64/#arch/v850/#arch/x86/#arch/xtensa/# arch/arm
7、#arch/arm/mach-s3c2442/#arch/arm/mach-imx/#arch/arm/mach-s3c2440/#arch/arm/mach-omap2/#arch/arm/mach-clps711x/#arch/arm/mach-s3c2443/#arch/arm/plat-iop/#arch/arm/mach-davinci/#arch/arm/mach-ixp2000/#arch/arm/mach-iop13xx/#arch/arm/mach-integrator/#arch/arm/mach-iop33x/#arch/arm/plat-s3c24xx/#arch/ar
8、m/plat-s3c/#arch/arm/plat-omap/#arch/arm/mach-sa1100/#arch/arm/mach-omap1/#arch/arm/mach-aaec2000/#arch/arm/mach-ixp23xx/#arch/arm/mach-mx3/#arch/arm/mach-l7200/#arch/arm/mach-ixp4xx/#arch/arm/mach-at91/#arch/arm/mach-clps7500/#arch/arm/mach-rpc/#arch/arm/mach-s3c2400/#arch/arm/plat-mxc/#arch/arm/ma
9、ch-iop32x/#arch/arm/mach-footbridge/#arch/arm/mach-h720x/#arch/arm/mach-ep93xx/#arch/arm/mach-ebsa110/#arch/arm/mach-realview/#arch/arm/mach-s3c2412/#arch/arm/mach-ns9xxx/#arch/arm/mach-orion/#arch/arm/mach-shark/#arch/arm/mach-netx/#arch/arm/mach-pnx4008/#arch/arm/mach-s3c2410/#arch/arm/mach-lh7a40
10、x/#arch/arm/mach-ks8695/#arch/arm/mach-versatile/#arch/arm/mach-msm/# Documetation#Documentation/# drivers #drivers/acorn/#drivers/acpi/#drivers/amba/#drivers/ata/#drivers/atm/#drivers/auxdisplay/#drivers/cdrom/#drivers/dca/#drivers/dio/#drivers/edac/#drivers/eisa/#drivers/ide/#drivers/ieee1394/#dri
11、vers/infiniband/#drivers/isdn/#drivers/macintosh/#drivers/mca/#drivers/md/#drivers/memstick/#drivers/nubus/#drivers/of/#drivers/parisc/#drivers/parport/#drivers/pci/#drivers/pcmcia/#drivers/pnp/#drivers/ps3/#drivers/rapidio/#drivers/s390/#drivers/sbus/#drivers/sh/#drivers/sn/#drivers/ssb/#drivers/te
12、lephony/#drivers/thermal/#drivers/xen/#drivers/zorro/# drivers/char #drivers/char/agp/#drivers/char/mwave/#drivers/char/pcmcia/#drivers/char/rio/#drivers/char/drm/# drivers/net #drivers/net/appletalk/#drivers/net/ibm_emac/#drivers/net/ibm_newemac/#drivers/net/ixp2000/#drivers/net/pcmcia/#drivers/net
13、/tokenring/# drivers/scsi #drivers/scsi/aic7xxx/#drivers/scsi/aic7xxx_old/#drivers/scsi/aic94xx/#drivers/scsi/lpfc/#drivers/scsi/pcmcia/#drivers/scsi/qla2xxx/#drivers/scsi/qla4xxx/#drivers/scsi/sym53c8xx_2/# drivers/media #drivers/media/dvb/# drivers/media/video #drivers/media/video/bt8xx/#drivers/m
14、edia/video/cpia2/#drivers/media/video/cx23885/#drivers/media/video/cx25840/#drivers/media/video/em28xx/#drivers/media/video/ivtv/#drivers/media/video/pvrusb2/#drivers/media/video/saa7134/#drivers/media/video/sn9c102/#drivers/media/video/zc0301/# fs #fs/9p/#fs/afs/#fs/adfs/#fs/affs/#fs/bfs/#fs/befs/#
15、fs/coda/#fs/dlm/#fs/freevxfs/#fs/gfs2/#fs/hfs/#fs/hfsplus/#fs/hpfs/#fs/isofs/#fs/jbd/#fs/jbd2/#fs/jfs/#fs/minix/#fs/ntfs/#fs/ncpfs/#fs/ocfs2/#fs/qnx4/#fs/udf/#fs/ufs/#fs/xfs/# include #include/acpi/#include/asm-alpha/#include/asm-avr32/#include/asm-blackfin/#include/asm-cris/#include/asm-frv/#includ
16、e/asm-h8300/#include/asm-ia64/#include/asm-m32r/#include/asm-m68k/#include/asm-m68knommu/#include/asm-mips/#include/asm-mn10300/#include/asm-parisc/#include/asm-powerpc/#include/asm-ppc/#include/asm-s390/#include/asm-sh/#include/asm-sparc/#include/asm-sparc64/#include/asm-um/#include/asm-v850/#inclu
17、de/asm-x86/#include/asm-xtensa/#include/pcmcia/# include/asm-arm #include/asm-arm/arch-ks8695/#include/asm-arm/arch-iop33x/#include/asm-arm/arch-mxc/#include/asm-arm/arch-iop32x/#include/asm-arm/arch-ep93xx/#include/asm-arm/arch-h720x/#include/asm-arm/arch-iop13xx/#include/asm-arm/arch-ns9xxx/#inclu
18、de/asm-arm/arch-ebsa285/#include/asm-arm/arch-orion/#include/asm-arm/arch-ixp2000/#include/asm-arm/arch-s3c2400/#include/asm-arm/arch-msm/#include/asm-arm/arch-ixp4xx/#include/asm-arm/arch-lh7a40x/#include/asm-arm/arch-ebsa110/#include/asm-arm/arch-netx/#include/asm-arm/arch-imx/#include/asm-arm/arc
19、h-ixp23xx/#include/asm-arm/arch-davinci/#include/asm-arm/arch-sa1100/#include/asm-arm/plat-s3c24xx/#include/asm-arm/plat-s3c/#include/asm-arm/arch-l7200/#include/asm-arm/arch-versatile/#include/asm-arm/arch-clps711x/#include/asm-arm/arch-aaec2000/#include/asm-arm/arch-cl7500/#.h include/asm-arm/arch
20、-pnx4008/#include/asm-arm/arch-integrator/#include/asm-arm/arch-at91/#include/asm-arm/arch-shark/#include/asm-arm/arch-rpc/#include/asm-arm/arch-s3c2410/#include/asm-arm/arch-realview/# net/#net/ax25/#net/can/#net/decnet/#net/ipv6/#net/x25/# sound/#sound/aoa/#sound/isa/#sound/mips/#sound/oss/#sound/
21、parisc/#sound/pci/#sound/pcmcia/#sound/ppc/#sound/sh/#sound/sparc/#以下為備份腳本:#! /bin/bash#name: move.sh#function: move unused files from kernel to make size smaller#set -x function usage() echo Usage: $0 filename echo filename is the file that includes files to be deleted echo if not provided, filenam
22、e default to to_delete_files if $# -ne 1 ; then INPUT_FILE=to_cutoff_files echo inputfile default to $INPUT_FILEelse if $1 = -h ; then usage exit 0 fi INPUT_FILE=$1fi BASE_ORIG=cd .; pwd/BASE_NEW=cd files; pwd/FILES_LIST=.$INPUT_FILE_detailedrm -f $FILES_LIST #echo restore files#cp -a files/* ./ 2/d
23、ev/null#rm -rf files/* 2 /dev/null echo generate detailed file list.cat $INPUT_FILE | grep -v # | while read LINEdo if ! -z $LINE ; then if expr index $LINE # != 0 ; then DIR_ORIG=$BASE_ORIG$LINE DIR_ORIG=$DIR_ORIG%/* find $DIR_ORIG -name *.h $FILES_LIST find $DIR_ORIG -name *.c $FILES_LIST find $DIR_ORIG -name *.S $FILES_LIST find $DIR_ORIG -name
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024簡單家具維修合同范本
- 2024年加工承攬合同標(biāo)的與質(zhì)量標(biāo)準(zhǔn)
- 2024建筑材料采購合同范本下載
- 2024年度公園綠化樹苗采購合同
- 2024年山東濰坊物業(yè)委托管理合同
- 迷霧解說課件教學(xué)課件
- 2024年度互聯(lián)網(wǎng)金融產(chǎn)品研發(fā)與推廣合同
- 04版智能家居系統(tǒng)研發(fā)與銷售合同
- 2024年度云服務(wù)提供商合同
- 2024年店鋪投資合作協(xié)議
- 護(hù)理質(zhì)量安全與風(fēng)險管理的案例分析
- 工程流體力學(xué)課后習(xí)題答案-(杜廣生)
- AI智能客服應(yīng)用實踐
- 《止吐藥臨床應(yīng)用》課件
- 幕墻工程檢驗批質(zhì)量驗收記錄
- 危險化學(xué)品經(jīng)營企業(yè)安全生產(chǎn)獎懲制度范本
- 報價單模板完
- 30題藥品質(zhì)量檢測崗位常見面試問題含HR問題考察點及參考回答
- 《嬰幼兒行為觀察、記錄與評價》期末試卷及答案 卷3
- 企業(yè)戰(zhàn)略管理概述
- 消防安全概述
評論
0/150
提交評論