linux內核編譯和裁剪
1. 如何裁剪linux內核,請簡單描述一下過程
進程間通信函數和系統調用。linux內核的五大組成部分之一,一定要選。BSD Process Accounting(CONFIG_BSD_PROCESS_ACCT)[N/y/?]用於啟動由內核將進程信息寫入文件的用戶級系統調用。就看您想不想用它了。Sysctl support(CONFIG_SYSCTL)[Y/n/?]在內核正在運行的時候修改內核。用8KB空間換取某種方便。別選吧,除非你真的想試試。Kernel support for a.out binaries(CONFIG_BINFMT_AOUT)[Y/m/n/?]為了能使用以前編譯的程序
2. linux 內核裁剪 + linux驅動,一般需要多少時間
內核裁剪熟悉了十幾分鍾搞定,要是不熟悉,就要很久了,因為內核也分目錄的,每目錄下的每項都要明白是干什麼的才能取捨。驅動一般包含在內核內,linux系統通過內核管理設備,外部安裝的較少。
我常用menuconfig來編譯內核。在gentoo系統下有genkernel軟體,更方便一些。當然,gentoo系統安裝起來不方便。
3. 嵌入式Linux的裁剪與編譯
首先要看linux內核支不支持你的arm處理器。
如不支持,那就放棄用linux,想自已修改內核以支持處理器,是一個長期而艱難的任務。
如支持,那麼再看看支不支持你的開發板。
如都支持,即基本不需做修改,直接配置內核進行編譯即可。
不支持你的開發板,那就要進行一些修改,一是內存配置的修改,讓內核知道你的開發板上內存的配置。二是開發板硬體驅動的修改,讓內核能正確使用你的開發板硬體。
因為目前的開發板能常都是參考某一內核已支持的開發板來做的,所以修改時,也主要是在內核的相應開發板代碼中進行修改。
4. 如何選擇和裁剪嵌入式linux內核
一、內核的獲得
可以從網上下載內核文件,http://www.kernel.org。如果是為了練習,盡量下載2.4.x的內核。因為2.6.x的內核比較大,當然編譯也需要更都的時間。
二、內核的編譯
Linux內核的編譯菜單主要有三個版本:
1)make config:進入命令行,可以一行一行的配置。
2)make menuconfig:開發人員比較熟悉的menuconfig菜單。
3)make xconfig:在2.4.X以及以前版本中xconfig菜單是基於TCL/TK的圖形庫的.
我們採用menuconfig菜單
編譯內核需要root許可權,以下操作都假定你是root用戶.先在根目錄下建立名為ARM2410的目錄.然後
把你需要升級的內核拷到/usr/src/下(下文中以2.4.18的內核的linux-2.4.18.tar.gz為例),命令為
#cp linux-2.4.18.tar.gz /usr/src
然後解壓該文件,命令為:
#tar -zxvf linux-2.4.18.tar.gz
如果你所下載的是.bz2文件,例如linux-2.4.0test8.tar.bz2,請使用下面的命令
#bzip2 -d linux-2.4.18.tar.bz2
#tar -xvf linux-2.4.18.tar
下面我們開始編譯:
第一步:在終端下進入內核所在目錄 "/arm2410";
第二步:鍵入make menuconfig,進入內核配置菜單,
注意:
1)帶有"-->"表示該選項包含選項;
2)每個選項前面有[ ]或< >,中括弧表示僅有2種選擇(*或空),尖括弧表示有3種選擇(M,*或空),按空格鍵可顯示這幾個選擇;
3)M表示以模塊方式編譯進內核,在內核啟動後,需要手工執行insmod命令才能使用該項驅動;*表示直接編譯進內核;空表示不編譯進內核;
第三步:按著自己的需求,配置內核.一共有21項.
第四步:鍵入make clean命令,刪除已生成的模塊和目標文件.
第五步:鍵入make dep命令,編譯變數依賴關系等;
第六步:鍵入make zlmage生成經壓縮以後的內核映像文件zlmage;
第七步:鍵入make moles編譯模塊;
第八步:鍵入make moles_install安裝編譯完成的模塊;
內核映像文件zlmage存放在 ./arch/arm/boot/目錄下.
5. 有關linux內核移植時的裁剪涉及哪些內容
嵌入式Linux系統的移植主要有U-Boot、Linux內核、文件系統這三部分。
Uboot是在系統上電時開始執行,初始化硬體設備,准備好軟體環境,然後才調用Linux操作系統內核。文件系統是Linux操作系統中用來管理用戶文件的內核軟體層。文件系統包括根文件系統和建立於Flash內存設備之上文件系統。根文件系統包括系統使用的軟體和庫,以及所有用來為用戶提供支持架構和用戶使用的應用軟體,並作為存儲數據讀寫結果的區域。
可將Linux系統移植過程大致需要分成6個步驟:
1) 准備工作,包括下載源碼、建立交叉編譯環境等。交叉開發是指在開發主機上安裝開發工具,編輯、編譯目標板的引導程序、內核和文件系統,使其能在目標板上運行。
2) 配置和編bootloader(引導裝載程序)。通過這段小程序,可以初始化硬體設備、建立內存空間的映射表,從而建立適當的系統硬體環境,為最終調用操作系統內核做好准備。
3) 配置和編譯Linux內核,對其進行相應的裁剪,修改內核以支持相關的硬體設備。
4) 為大容量NAND Flash移植YAFFS文件系統,並將該文件系統加入Linux內核中;
5) 製作RAMdisk來掛載根文件系統。Linux系統中的文件和設備是通過文件系統來組織的。文件系統的存在使得數據和設備可以被有效而透明地存取訪問。一個linux的最簡根文件系統應該包括支持linux系統正常運行的基本內容,包括系統使用的軟體和庫,以及所有用來為用戶提供基本支持的架構和指令。
6) 燒寫、調試系統;如果調試出錯,則需要重新配置,返回上述步驟(2)。
6. 怎麼裁剪linux內核
在menuconfig中配置:
詳細介紹內核配置選項及刪改情況
第一部分:全部刪除
Code maturity level options ---> 代碼成熟等級選項
[]Prompt for development and/or incomplete code/drivers 默認情況下是選擇的,這將會在設置界面中顯示還在開發或者還沒有完成的代碼與驅動.不選。
第二部分 :除以下選項,其它全部刪除
General setup—〉
System V IPC (IPC:Inter Process Communication)是組系統調用及函數庫,它能讓程序彼此間同步進行交換信息。某些程序以及DOS模擬環境都需要它。為進程提供通信機制,這將使系統中各進程間有交換信息與保持同步的能力。有些程序只有在選Y的情況下才能運行,所以不用考慮,這里一定要選。
第三部分:除以下選項,其它全部刪除
Loadable mole support ---> 可引導模塊支持 建議作為模塊加入內核
[] Enable loadable mole support 這個選項可以讓你的內核支持模塊,模塊是什麼呢?模塊是一小段代碼,編譯後可在系統內核運行時動態的加入內核,從而為內核增加一些特性或是對某種硬體進行支持。一般一些不常用到的驅動或特性可以編譯為模塊以減少內核的體積。在運行時可以使用modprobe命令來載入它到內核中去(在不需要時還可以移除它)。一些特性是否編譯為模塊的原則是,不常使用的,特別是在系統啟動時不需要的驅動可以將其編譯為模塊,如果是一些在系統啟動時就要用到的驅動比如說文件系統,系統匯流排的支持就不要編為模塊了,否在無法啟動系統。
[]Automatic kernel mole loading 一般情況下,如果我們的內核在某些任務中要使用一些被編譯為模塊的驅動或特性時,我們要先使用modprobe命令來載入它,內核才能使用。不過,如果你選擇了這個選項,在內核需要一些模塊時它可以自動調用modprobe命令來載入需要的模塊,這是個很棒的特性,當然要選Y嘍。
第四部分:全部刪除
Block layer-----〉塊設備
第五部分:除以下選項,其它全部刪除
Processor type and features ---> 處理器類型
Subarchitecture Type (PC-compatible) ---> 這選項的主要的目的,是使Linux可以支持多種PC標准,一般我們使用的PC機是遵循所謂IBM兼容結構(pc/at)。這個選項可以讓你選擇一些其它架構。我們一般選擇PC-compatible就可以了。
Processor family(386) : 它會對每種CPU做最佳化,讓它跑的好又快,一般來說,你是什麼型號的就選什麼型號的就好。我選的是386,這樣內核會省下不少空間
第六部分:除以下選項,其它全部刪除
Power management options (ACPI, APM) ---> 電源管理選項
[ ] Power Management Debug Support 電源管理的調試信息支持,如果不是要調試內核有關電源管理部份,請不要選擇這項。
ACPI Support ---〉高級電源介面配置支持,如果BIOS支持,建議選上這項
[]Button 這個選項用於注冊基於電源按鈕的事件,比如power, sleep等,當你按下按鈕時事件將發生,一個守護程序將讀取/proc/acpi/event,並執行用戶在這些事件上定義的動作比如讓系統關機。可以不選擇,根據自己的需求。
第七部分:除以下選項,其它全部刪除
Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> 匯流排選項
[]PCI support
PCI access mode (Any) ---> PCI外圍設備配置,強列建議選Any,系統將優先使用MMConfig,然後使用BIOS,最後使用Direct檢測PCI設備。
第八部分:除以下選項,其它全部刪除
Executable file formats --->
Kernel support for ELF binaries ELF是開放平台下最常用的二進制文件,它支持不同的硬體平台。一定要選。
第九部分:除以下選項,其它全部刪除
Networking
Networking options --->
[]Unix domain sockets
[]TCP/IP networking
第十部分:除以下選項,其它全部刪除
Device Drivers --->設備驅動
Block devices-------〉
[]Compaq SMART2 support
[] Compaq Smart Array 5xxx support
[]Loopback device support 大部分的人這一個選項都選N,因為沒有必要。但是如果你要mount iso文件的話,你得選上Y。這個選項的意思是說,可以將一個文件掛成一個文件系統。如果要燒光碟片的,那麼您很有可能在把一個文件燒進去之前,看看這個文件是否符合IS09660的文件系統的內容,是否符合您的需求。而且,可以對這個文件系統加以保護。不過,如果您想做到這點的話,您必須有最新的mount程序,版本是在2.5X版以上的。而且如果您希望對這個文件系統加上保護,則您必須有des.1.tar.gz 這個程序。注意:此處與網路無關。建議編譯成模塊
[] RAM disk support
SCSI device support ---> 裡面有關於USB支持的,要選擇
[]SCSI device support USB要用,必須選擇
[]legacy /proc/scsi/ support USB要用,必須選擇
[]SCSI disk support USB要用,必須選擇
SCSI Low-level drivers
[]Serial ATA(SATA) support
[]Intel PIIX/ICH SATA support 這個必須選擇,否則無法產生引導文件
[]Via SATA support
Networking device support ---> 這個下面是選網卡驅動,一定要選
Ethernet(1000mbit)-我的電腦是千兆網卡所以就選這個
[]broadcom Tigon3support
Input device support ---> 這個裡面要設置你的滑鼠鍵盤什麼的
[]Provide legacy /dev/psaux device
Graphics support --->
[]Support for frame buffer devices 支持Frame buffer的,一定要選擇
USB support --->
[]USB device filesystem 這個好象是用U盤必須的
[]EHCI HCD (USB 2.0) support 有usb2.0就選上把,編譯成模塊
[]OHCI HCD support 必須選擇,編譯成模塊
[]UHCI HCD (most Intel and VIA) support 必須選擇,編譯成模塊
[]USB Mass Storage support 用U盤必須選擇
USB Human Interface Device (full HID) support 裡面選擇usb滑鼠和usb鍵盤,如果你有一定選上這個必需選
HID input layer support 應該選擇
/dev/hiddev raw HID device support如果這里有USB鍵盤和滑鼠選項,一定要選擇
第十一部分:除以下選項,其它全部刪除
file systems --->文件系統
Second extended fs support
Ext2 extended attributes
Ext2 POSIX Access Control Lists
Ext2 Security Labels
Ext3 journalling file system support
Ext3 extended attributes
Ext3 POSIX Access Control Lists
Ext3 Security Labels 以上這些肯定是要選擇的,linux的標准文件系統
Kernel automounter support 內核自動掛載的,當然要選
Kernel automounter version 4 support (also supports v3) 當然要選
DOS/FAT/NT Filesystems --->
DOS FAT fs support
MSDOS fs support
VFAT (Windows-95) fs support
NTFS file system support
Native language support語言支持,這里就支持英語和漢語就行了,不多說了
[]NLS ISO 8859-1 必須選擇,這個是關於U盤掛載的。
CD-ROM/DVD Filesystems ---> 這個是關於掛載ISO文件的,用的話就選。
ISO 9660 CDROM file system support
第十二部分: 全部刪除
Instrumentation support
第十三部分:全部刪除
Kernel hacking --->破解核心?可不是當骸客啦,不選
第十四部分:全部刪除
Security options --->
第十五部分:全部刪除
Cryptographic options --->這是核心支持加密的選項
第十六部分:全部刪除
Library routines --->
附:
內核配置
內核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig等等,它們的功能都是一樣的,區別應該從名字上就能看出來,只有make oldconfig是指用系統當前的設置(./.config)作為預設值。這里用的是make menuconfig。
需要牢記:不必要的驅動越多,內核就越大,不僅運行速度慢、佔用內存多,在少數情況下、還會引發其他問題。具體步驟如下:
首先確定shell是bash。
然後
$make menuconfig
有一些默認的符號其含義如下:
y:載入
n:不載入
m:作為模塊載入
可以配置的選項有以下一些:
1)code maturity level option 代碼成熟度
prompt for development and/or incomplete code/drivers [N/y/?]
如果有興趣測試一下內核中尚未最終完成的某些模塊,就選y,否則選N,想知道更詳細的信息選?會看到聯機幫助(以下?的含義相同),N大寫表示預設值。
2)processor type and features 處理器類型及特性
Processor family(386,486/Cx486,586/K5/5x86/6x86,Pentium/K6/TSC, PPro/6x86MX)[PPro/6x86MX]
[]內的是預設值,我們可以根據前面介紹的uname 命令執行的結果選擇。此項如果高於386,那麼生成的內核在386機器上將不能啟動。
Math emulation(CONFIG_MATH_EMULATION)[N/y/?]
需要進行協處理器模擬嗎?一般的機器都回n。如果機器已經有硬體的協處理器,那麼內核仍將使用硬體,而忽略軟體的math-emulation,這將使內核變大變慢。
MTRR(Memory Type Range Register)support(CONFIG_MTRR)[N/y/?]
在Pentium、Pro/Pentium II類的系統中可以提高圖像寫入速度。
Symmetric multi-processing support(CONFIG_SMP)[Y/n/?]
如果您的機器有多個處理器,就選y。此時要選中下面的Enhanced Real Time Clock Support
3)loadable model support 可載入模塊支持
Enable loadable mole support(CONFIG_MODULES)[Y/n/?]
最好選y,不然許多僅供動態載入的模塊就不能用了。
Set version information on all symbols
7. 如何Linux內核剪裁、編譯和移植
你的問題說出來比一匹布還長,在度娘這里很難得到實質的幫助。
可以參考金步國先生的文章來操練,網路「金步國」即可!
聲明,非廣告,純建議,望採納!
8. linux內核裁剪是什麼
類型選擇安裝你需要的功能,因為Linux安裝好後很多你用不上,當時安裝的時候沒有選項給你勾選,所以你就刪除掉,《Linux就該這么學》內核裁剪的思路
首先,輸入命令 make menuconfig進入配置菜單;
然後,退出且保存配置;
保存成功後,在linux源碼根目錄下.config文件根據menueconfig的配置生成對應的宏定義;
最後,編譯內核時候,編譯器會根據.config文件里的宏定義進行內核裁剪。
9. ARM上如何運行Linux操作系統Linux內核裁剪、編譯是做什麼的
fedora arm架構專用版!試試看!
10. linux內核裁剪是否指的就是通過make menuconfig進行內核配置編譯
就是通過menuconfig選擇適合某平台(如arm)的功能,將多餘的東西屏蔽掉,再生產一個鏡像文件,就可以說是剪裁內核了。
裁剪Linux不一定要對內核源碼了如指掌,當然能學就多學點還是必須的。
可以看看《構建嵌入式Linux系統》,好像是這個名,記不清楚了。紅白色封面的。另外建議購買一個ARM開發板,一般買開發板都是送相應的Linux內核源碼。你可以任意配置給內核,加入你想要的功能,刪掉無用的功能。這樣上手非常快。