機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
我的2.6.11內(nèi)核編譯過程
我的2.6.11內(nèi)核編譯過程
 更新時(shí)間:2009-8-12 16:52:47  點(diǎn)擊數(shù):0
【字體: 字體顏色
 星期天呀,不用上班了。呵呵,10:30起床,好像有一點(diǎn)早,昨天晚上玩游戲玩到3點(diǎn)鐘,好累呀.打開電腦,先玩一會(huì)游戲在說。11:00,不玩了,開始干正事了。先換到linux下去。本來想用虛擬機(jī)的,但是我做的ftp不能用,而且還可能好慢的。我的電腦是沒有上網(wǎng)的,在我的2003下架了個(gè)ftp,想讓虛擬機(jī)來訪問,可是虛擬機(jī)和我的電腦連不上,好郁悶。

(1)安裝module-init-tools-3.0.tar.gz:
# tar -zxvf module-init-tools-3.0.tar.gz
# cd module-init-tools-3.0
# ./configure --prefix=/sbin
# make
# make install
# ./generate-modprobe.conf /etc/modprobe.conf

不知道為什么,我用module-init-tools-3.1時(shí)make出錯(cuò)。如果改用3.0的就沒事了。

(2)安裝modutils-2.4.25-8.9.i386.rpm:
# rpm -Uvih modutils-2.4.25-8.9.i386.rpm
對(duì)modutils進(jìn)行升級(jí)。

(3)安裝新內(nèi)核:
將新內(nèi)核copy到/usr/src下,
#tar xzvf linux-2.6.11.tar.gz -----解壓縮.
II. 將名為linux的符號(hào)鏈接刪掉,這時(shí)舊版本內(nèi)核的符號(hào)鏈接.
#ln -s linux-2.6.11 linux ------建立linux-2.6.11的符號(hào)鏈接linux.

設(shè)置內(nèi)核.
# cd /usr/src/linux
# make mrproper -----刪除不必要的文件和目錄.

#make config(基于文本的最為傳統(tǒng)的配置界面,不推薦使用)

#make menuconfig(基于文本選單的配置界面,字符終端下推薦使用)

#make xconfig(基于圖形窗口模式的配置界面,Xwindow下推薦使用)

#make oldconfig(如果只想在原來內(nèi)核配置的基礎(chǔ)上修改一些小地方,會(huì)省去不少麻煩)

它們的目的是一樣的,那就是生成一個(gè).config文件

這三個(gè)命令中,make xconfig的界面最為友好,如果你可以使用Xwindow,你就用這個(gè)好了,這個(gè)比較方便,也好設(shè)置。
如果你不能使用Xwindow,那么就使用make menuconfig好了。界面雖然比上面一個(gè)差點(diǎn),總比make config的要好多了。
選擇相應(yīng)的配置時(shí),有三種選擇,它們分別代表的含義如下:
    Y--將該功能編譯進(jìn)內(nèi)核
    N--不將該功能編譯進(jìn)內(nèi)核
    M--將該功能編譯成可以在需要時(shí)動(dòng)態(tài)插入到內(nèi)核中的模塊

如果使用的是make xconfig,使用鼠標(biāo)就可以選擇對(duì)應(yīng)的選項(xiàng)。如果使用的是 make
menuconfig,則需要使用空格鍵進(jìn)行選取。你會(huì)發(fā)現(xiàn)在每一個(gè)選項(xiàng)前都有個(gè)括號(hào), 但有的
是中括號(hào)有的是尖括號(hào),還有一種圓括號(hào)。用空格鍵選擇時(shí)可以發(fā)現(xiàn),中括號(hào)里要么是空
,要么是"*",而尖括號(hào)里可以是空,"*"和"M"。這表示前者對(duì)應(yīng)的項(xiàng)要么不要,要么編譯
到內(nèi)核里;后者則多一樣選擇,可以編譯成模塊。而圓括號(hào)的內(nèi)容是要你在所提供的幾個(gè)
選項(xiàng)中選擇一項(xiàng)。

附內(nèi)核配置選項(xiàng)說明(這是我在網(wǎng)上找到的,還可以,有些也是不一樣的,給你一個(gè)參考)

代碼成熟度選項(xiàng):

Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
[*] Select only drivers expected to compile cleanly
打開使用開發(fā)中、不完全的代碼/驅(qū)動(dòng)會(huì)讓內(nèi)核配置多出很多選項(xiàng),由于我們需要使用一些正在開發(fā)中的功能,因此必需打開這一選項(xiàng)。
通用設(shè)置選項(xiàng),


General setup --->


() Local version - append to kernel release
這里填入的是64字符以內(nèi)的字符串,你在這里填上的字符口串可以用uname -a命令看到。
[*] Support for paging of anonymous memory (swap)
這是使用交換分區(qū)或者交換文件來做為虛擬內(nèi)存的,當(dāng)然要選上了。
[*] System V IPC
表示系統(tǒng)5的Inter Process Communication,它用于處理器在程序之間同步和交換信息,如果不選這項(xiàng),很多程序運(yùn)行不起來
[*] POSIX Message Queues
這是POSIX的消息隊(duì)列,它同樣是一種IPC。建議你最好將它選上
[*] BSD Process Accounting
這是充許用戶進(jìn)程訪問內(nèi)核將賬戶信息寫入文件中的。這通常被認(rèn)為是個(gè)好主意,建議你最好將它選上。
[*] BSD Process Accounting version 3 file format
[*] Sysctl support
這個(gè)選項(xiàng)能不重新編譯內(nèi)核修改內(nèi)核的某些參數(shù)和變量,如果你也選擇了支持/proc,將能從/proc/sys存取可以影響內(nèi)核的參數(shù)或變量。建議你最好將它選上
[ ] Auditing support
審記支持,用于和內(nèi)核的某些子模塊同時(shí)工作,例如SELinux。只有選擇此項(xiàng)及它的子項(xiàng),才能調(diào)用有關(guān)審記的系統(tǒng)調(diào)用
(15) Kernel log buffer size (16 => 64KB, 17 => 128KB)
內(nèi)核日志緩存的大小,12 => 4 KB,13 => 8 KB,14 => 16 KB單處理器,15 => 32 KB多處理器,16 => 64 KB for x86 NUMAQ or IA-64,17 => 128 KB for S/390
[*] Support for hot-pluggable devices
是否支持熱插拔的選項(xiàng),肯定要選上
[*] Kernel Userspace Events
內(nèi)核中分為系統(tǒng)區(qū)和用戶區(qū),這里系統(tǒng)區(qū)和用戶區(qū)進(jìn)行通訊的一種方式,選上。
[*] Kernel .config support
將.config配置信息保存在內(nèi)核中,選上它及它的子項(xiàng)使得其它用戶能從/proc中得到內(nèi)核的配置
[*] Enable access to .config through /proc/config.gz
[ ] Configure standard kernel features (for small systems) --->
這是為了編譯某些特殊的內(nèi)核使用的,通常你可以不選擇這一選項(xiàng),你也不用對(duì)它下面的子項(xiàng)操心了。
--- Configure standard kernel features (for small systems)
[ ] Load all symbols for debugging/kksymoops
是否裝載所有的調(diào)試符號(hào)表信息,如果你不需要對(duì)內(nèi)核調(diào)試,不需要選擇此項(xiàng)。
[*] Enable futex support
不選這個(gè)內(nèi)核不一定能正確的運(yùn)行使用glibc的程序,當(dāng)然要選上
[*] Enable eventpoll support
不選這個(gè)內(nèi)核將不支持事件輪循的系統(tǒng)調(diào)用,最好選上
[*] Optimize for size
這個(gè)選項(xiàng)使gcc使用-Os的參數(shù)而不是-O2的參數(shù)來優(yōu)化編譯,以獲得更小尺寸的內(nèi)核,建議選上。
[*] Use full shmem filesystem
除非你在很少的內(nèi)存且不使用交換內(nèi)存時(shí),才不要選擇這項(xiàng)
(0) Function alignment
(0) Label alignment
(0) Loop alignment
(0) Jump alignment

可加載模塊:
Loadable module support --->
[*] Enable loadable module support
[*] Module unloading
不選這個(gè)功能,加載的模塊就不能卸載
[ ] Forced module unloading
[ ] Module versioning support (EXPERIMENTAL)
[ ] Source checksum for all modules
[*] Automatic kernel module loading

處理器類型及特性:
Processor type and features --->
Subarchitecture Type (PC-compatible) --->
Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon) --->
[ ] Generic x86 support
這一選項(xiàng)針對(duì)x86系列的CPU使用更多的常規(guī)優(yōu)化。如果你在上面一項(xiàng)選的是i386、i586之類的才選這個(gè)
[*] HPET Timer Support
HPET是替代8254芯片的下一代時(shí)鐘處理器。這里你可以安全的選上這一選項(xiàng)。如果硬件不支持的話,將仍使用8254時(shí)鐘處理器
[*] Symmetric multi-processing support
對(duì)稱多處理器支持,在單CPU的機(jī)器上,不選這個(gè)選項(xiàng)會(huì)更快一些。由于超線程技術(shù),看起來是兩顆CPU,因些要選上這個(gè)選項(xiàng)
(1) Maximum number of CPUs (2-255) 支持的最大CPU數(shù)
[ ] SMT (Hyperthreading) scheduler support
[*] Preemptible Kernel
這個(gè)選項(xiàng)能使應(yīng)用程序即使內(nèi)核在高負(fù)載時(shí)也很可靠,建議最好選上
[*] Machine Check Exception
這個(gè)選項(xiàng)能讓CPU檢測(cè)到系統(tǒng)故障時(shí)通知內(nèi)核,一般我用組裝的臺(tái)式機(jī)會(huì)選這項(xiàng)。
< > Toshiba Laptop support
< > Dell laptop support
< > /dev/cpu/microcode - Intel IA32 CPU microcode support
< > /dev/cpu/*/msr - Model-specific register support
< > /dev/cpu/*/cpuid - CPU information support
Firmware Drivers --->
< > BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)
High Memory Support (4GB) --->
[ ] Allocate 3rd-level pagetables from highmem
[ ] Math emulation
[*] MTRR (Memory Type Range Register) support
[ ] Boot from EFI support (EXPERIMENTAL)
[*] Enable kernel irq balancing
[ ] Use register arguments (EXPERIMENTAL)


電源管理:
Power management options (ACPI, APM) --->
[*] Power Management support
[ ] Power Management Debug Support
[ ] Software Suspend (EXPERIMENTAL)
ACPI (Advanced Configuration and Power Interface) Support --->
APM (Advanced Power Management) BIOS Support --->
CPU Frequency scaling --->

ACPI (Advanced Configuration and Power Interface) Support --->
[*] ACPI Support
這是一種電源管理方式,你可以看看你的BIOS是否支持。如果支持的話建議你選上這項(xiàng)
[ ] Sleep States (EXPERIMENTAL)
< > AC Adapter
< > Battery
<*> Button 捕獲Power、Sleep、Lid(我也不知道這是什么按鈕)等按鈕是否按下,并做相應(yīng)的動(dòng)作
<*> Video 集成在板上的顯卡的ACPI支持,對(duì)有些板卡可能不起作用
< > Fan
<*> Processor
<*> Thermal Zone
< > ASUS/Medion Laptop Extras
< > IBM ThinkPad Laptop Extras
< > Toshiba Laptop Extras
(0) Disable ACPI for systems before Jan 1st this year
[ ] Debug Statements
[*] Power Management Timer Support

APM (Advanced Power Management) BIOS Support --->
< > APM (Advanced Power Management) BIOS support
高級(jí)電源管理的支持,一般來說筆記本應(yīng)該選上,臺(tái)式機(jī)可以不選。
[ ] Ignore USER SUSPEND
[*] Enable PM at boot time
[ ] Make CPU Idle calls when idle
[ ] Enable console blanking using APM
[ ] RTC stores time in GMT 按Unix的標(biāo)準(zhǔn),硬件的時(shí)鐘應(yīng)該設(shè)為格林威治時(shí)間
[ ] Allow interrupts during APM BIOS calls
[*] Use real mode APM BIOS call to power off

[*] CPU Frequency scaling
這一選項(xiàng)允許改變CPU的主頻,使CPU在低負(fù)荷或使用電池時(shí)降低主頻,達(dá)到省電的目的。
[ ] Enable CPUfreq debugging
< > /proc/cpufreq interface (deprecated)
Default CPUFreq governor (performance) --->
--- 'performance' governor
<*> 'powersave' governor
<*> 'userspace' governor for userspace frequency scaling
[ ] /proc/sys/cpu/ interface (2.4. / OLD)
<*> 'ondemand' cpufreq policy governor自動(dòng)調(diào)節(jié)主頻
<*> CPU frequency table helpers 多數(shù)的CPU需要這一項(xiàng)來調(diào)節(jié)主頻
<*> ACPI Processor P-States driver 報(bào)告處理器的狀態(tài)
< > AMD Mobile K6-2/K6-3 PowerNow!
< > AMD Mobile Athlon/Duron PowerNow!
< > AMD Opteron/Athlon64 PowerNow!
< > Cyrix MediaGX/NatSemi Geode Suspend Modulation
<*> Intel Enhanced SpeedStep Intel的變頻技術(shù)支持
[ ] Use ACPI tables to decode valid frequency/voltage pairs
--- Built-in tables for Banias CPUs
< > Intel Speedstep on ICH-M chipsets (ioport interface)
< > Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
< > Intel Pentium 4 clock modulation
< > nVidia nForce2 FSB changing
< > Transmeta LongRun
< > VIA Cyrix III Longhaul
--- shared options
[ ] /proc/acpi/processor/../performance interface (deprecated)
[ ] Relaxed speedstep capability checks

總線類型:
[*] PCI support
PCI access mode (Any) --->強(qiáng)列建議選Any,系統(tǒng)將優(yōu)先使用MMConfig,然后使用BIOS,最后使用Direct檢測(cè)PCI設(shè)備。
[ ] Message Signaled Interrupts (MSI and MSI-X)
[ ] Legacy /proc/pci interface
[ ] PCI device name database
[ ] ISA support
[*] EISA support
[*] Vesa Local Bus priming
[*] Generic PCI/EISA bridge
[*] EISA virtual root device
[ ] EISA device name database
[ ] MCA support
< > NatSemi SCx200 support
PCCARD (PCMCIA/CardBus) support --->
PCI Hotplug Support --->

PCCARD (PCMCIA/CardBus) support --->一般只有筆記本電腦上才會(huì)有PCMCIA插槽,如果你是臺(tái)式機(jī)的話,可以不選這一項(xiàng),然后跳過這一部份。

PCI Hotplug Support --->
< > Support for PCI Hotplug (EXPERIMENTAL)
一般來講只有服務(wù)器上會(huì)有熱插拔的設(shè)備,如果你使用的是臺(tái)式機(jī),你可以不選擇此項(xiàng)并跳過這一部份。

可執(zhí)行文件格式,
[*] Kernel support for ELF binaries
ELF是開放平臺(tái)下最常用的二進(jìn)制文件,它支持不同的硬件平臺(tái)
< > Kernel support for a.out and ECOFF binaries
<*> Kernel support for MISC binaries
此選項(xiàng)允許插入二進(jìn)制的封裝層到內(nèi)核中,當(dāng)使用Java、.NET、Python、Lisp等語言編寫的程序時(shí)非常有用

硬件設(shè)備[相當(dāng)復(fù)雜,看得偶頭暈,大家針對(duì)自己的設(shè)備慎重選擇(手邊最好準(zhǔn)備一本漢英字典:)如果想使用adsl,記得網(wǎng)絡(luò)部分除了TCP/IP協(xié)議還得把ppp部分編譯進(jìn)內(nèi)核,想當(dāng)初偶就是把這個(gè)給忘了,郁悶了許久:)

文件系統(tǒng),
<*> 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
[ ] JBD (ext3) debugging support
<*> Reiserfs support
[ ] Enable reiserfs debug mode
[ ] Stats in /proc/fs/reiserfs
[*] ReiserFS extended attributes
[*] ReiserFS POSIX Access Control Lists
[*] ReiserFS Security Labels
JFS filesystem support
[*] JFS POSIX Access Control Lists
[ ] JFS debugging
[ ] JFS statistics
XFS filesystem support
[*] Realtime support (EXPERIMENTAL)
[*] Quota support
[*] Security Label support
[*] POSIX ACL support
< > Minix fs support
< > ROM file system support
[*] Quota support
< > Old quota format support
Quota format v2 support
[*] Dnotify support
< > Kernel automounter support
< > Kernel automounter version 4 support (also supports v3)
CD-ROM/DVD Filesystems --->
DOS/FAT/NT Filesystems --->
Pseudo filesystems --->
Miscellaneous filesystems --->
Network File Systems --->
Partition Types --->
Native Language Support --->
Profiling support --->
Kernel hacking --->
Security options --->
Cryptographic options --->
Library routines --->


這個(gè)東東你要是搞不來就不要搞,默認(rèn)的也可以的。先學(xué)習(xí)一下怎么樣編譯內(nèi)核,等成功了,有了經(jīng)驗(yàn)了在改也沒有事的!

編譯內(nèi)核:
# cd /usr/src/linux
# make dep -----鏈接程序代碼與函數(shù)庫(kù).
# make clean -----刪除不必要的模塊和文件.
# make bzImage -----開始編譯系統(tǒng)內(nèi)核.
# make modules -----開始編譯外掛模塊.
# make modules_install -----安裝編譯完成的模塊.
要好常時(shí)間的,我洗了一件衣服,抽了N根白沙之后,總算完成了,好激動(dòng)呀!
# su -
# /sbin/depmod -a -----創(chuàng)建模塊的鏈接.

更換內(nèi)核:
# cd /boot -----切換到引導(dǎo)分區(qū)/boot.
# rm System.map vmlinuz -----刪除舊的符號(hào)鏈接.
# mv /usr/src/linux/System.map System.map
# mv /usr/src/linux/arch/i386/boot/bzImage vmlinuz

如果你用GRUB來管理開機(jī),簡(jiǎn)單點(diǎn)就是你裝了win還裝了linux就要修改/boot/grub下的menu.1st文件:
# vi /boot/grub/menu.1st
鍵入i進(jìn)入編輯模式:


# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,1)
# kernel /boot/vmlinuz-version ro root=/dev/hda2
# initrd /boot/initrd-version.img
#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
title Fedora Core(2.6.11)
root (hd0,1)
kernel /boot/vmlinuz ro root=/dev/hda2 ---你的linux所在的分區(qū)
title DOS
rootnoverify (hd0,0)
chainloader +1


title Fedora Core(2.4.22)
root (hd0,1)
kernel /boot/vmlinuz-2.4.22-1.2115.nptl ro root=LABEL=/ hdd=ide-scsi rhgb
initrd /boot/initrd-2.4.22-1.2115.nptl.img
這樣還可以保留舊版本的內(nèi)核以防編譯新內(nèi)核失敗進(jìn)不了系統(tǒng)

從啟電腦,好了,進(jìn)去了。網(wǎng)上說新內(nèi)核速度好快的,我怎么感覺快不了多少呢。無所謂了,反正是成功了。呵呵,我可是失敗了很多次才成功的。好高興,2點(diǎn)了,穿衣服去吃東西了。


rpm沒法用了,怎么辦?
在/usr/lib/rpm/macros里面尋找代碼:
%__dbi_cdb create cdb mpool mp_mmapsize=16Mb mp_size=1Mb
修改成代碼:
%__dbi_cdb create cdb mpool mp_mmapsize=16Mb mp_size=1Mb private
  • 上一篇: 升級(jí)、編譯自己的內(nèi)核—— Debian篇
  • 下一篇: 32/64位SPARC上的Solaris遷移到x86上Linux的指南
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1