當(dāng)前位置:
首頁 >
Ubuntu下编译内核
發(fā)布時(shí)間:2025/3/21
58
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Ubuntu下编译内核
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、下載源代碼和編譯軟件的準(zhǔn)備?
下載內(nèi)核源代碼:http://www.kernel.org/?
注意,點(diǎn)擊2.6.25內(nèi)核的F版,即完整版。?
如果你懶得去網(wǎng)站點(diǎn)聯(lián)接,運(yùn)行下列命令:?
代碼: $cd ~
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.10.tar.bz2
安裝有關(guān)編譯程序。安裝make ,gcc, make-kpkg,運(yùn)行menuconfig等等和編譯內(nèi)核相關(guān)的工具。
安裝不了,請(qǐng)檢查/etc/apt/sources.list 文件。
有關(guān)命令:
代碼: $sudo? apt-get install build-essential kernel-package?? libncurses5-dev
二、解壓源代碼
注意,網(wǎng)上很多教程上說應(yīng)該解壓到 /usr/src,純屬以訛傳訛,linux掌門人linus說解壓到任何目錄上都可以。當(dāng)然,linus的說法是正確的。我放在自己的主目錄下的src目錄。
如果你下載源代碼是放到自己的主目錄下或者運(yùn)行上面的wget下載的,那么運(yùn)行下列命令:
代碼: $ cd ~
$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/
現(xiàn)在,源代碼就在 ~/src/linux-2.6.25.10
進(jìn)入源代碼的目錄,準(zhǔn)備下一步的工作。后面都在這個(gè)目錄里面進(jìn)行。
代碼: $ cd ~/src/linux-2.6.25.10
三、開始編譯前的準(zhǔn)備工作。
首先,清理以前編譯時(shí)留下的臨時(shí)文件。如果是剛剛解開的包,不需要執(zhí)行這步。如果是第二次或者是第n次編譯,那么一定要執(zhí)行。
相關(guān)命令如下:
代碼: $ sudo make mrproper
網(wǎng)上很多教程上說把現(xiàn)在使用的內(nèi)核的config拷貝過來參考,據(jù)實(shí)驗(yàn),是不需要的,ubuntu還有
debian會(huì)自動(dòng)做這步。不過這條命令倒是可以學(xué)習(xí)一下。當(dāng)然你可以將以前的配置拷貝過來。
命令:
代碼: cp /boot/config-`uname -r` ./.config
四、開始配置內(nèi)核選項(xiàng)。
相關(guān)命令:
代碼: $sudo make menuconfig
配置用到的鍵只有幾個(gè),esc退出菜單;空格改變選項(xiàng)狀態(tài);光標(biāo)鍵上下左右移動(dòng),回車選定。
選項(xiàng)意義:M是編譯成可以隨時(shí)加入的模塊,*是編譯進(jìn)入內(nèi)核,空就是不要。
配置選項(xiàng)非常多,具體配置可以參考金步國先生翻譯的資料:Linux 2.6.19.x 內(nèi)核編譯配置選項(xiàng)。
參考網(wǎng)址:http://lamp.linux.gov.cn/Linux/kernel_options.html
為了一次成功,請(qǐng)大家遵循一個(gè)原則,如果你自己使用的內(nèi)核已經(jīng)選用了某個(gè)選項(xiàng),如果你沒用充分的理由,不要隨便改動(dòng)。這樣雖然內(nèi)核不那么精簡,但是不容易出現(xiàn)問題。
我們可以精簡的部分是硬件模塊部分,對(duì)于自己沒有的硬件要毫不猶豫的清除。
如果你很執(zhí)著,或者你有潔癖,你也可以一項(xiàng)項(xiàng)對(duì)過去,按照金步國先生的資料描述去選擇基本上沒有問題。
五、必須強(qiáng)調(diào)的幾個(gè)選項(xiàng):
1、在“General setup”里面的“Prompt for development and/or incomplete code/drivers”金步國認(rèn)為是不需要。但是如果你的硬件比較新,那幾乎是必須選的,這樣,我們才可以找到4965無線網(wǎng)卡,alsa聲音驅(qū)動(dòng)等等。
Kernel log buffer size 我選15,雙核。如果你用ia64,要選16。
Control Group support 集群支持?可以不要
Choose SLAB allocator (SLUB (Unqueued Allocator)) 內(nèi)存管理模式slab和slub選擇slub。
2、在“Block layer”里,假如沒有2TB的硬盤,就去掉:Support for Large Block Devices 。Support for Large Single Files 也不需要,誰有2TB的文件?
3、Processor type and features中是關(guān)于cpu的,要認(rèn)真選。
Symmetric multi-processing support是打開多核的開關(guān),我的cpu是雙核的,選中。
Processor family (Core 2/newer Xeon) 我的是Core 2/newer Xeon。找到自己的cpu后,把Generic x86 support選項(xiàng)取消。
Subarchitecture Type 選(PC-compatible)
Maximum number of CPUs 輸入自己的核心數(shù)目,我輸入2。
SMT (Hyperthreading) scheduler support說的是超線程技術(shù),P4有支持的,我的t8100不支持,目前大部分市場上的家用cpu都不支持。
High Memory Support (4GB) 1G以下選1G;我是3G,選4G;4G以上的選16G
在“ Timer frequency ”里,默認(rèn)是250Hz,較新的cpu都可以選擇了1000Hz,性能更好。
4、Power management options中把APM (Advanced Power Management) BIOS support關(guān)閉。現(xiàn)在的電腦都用acpi了。
CPU Frequency scaling 是筆記本cpu節(jié)電技術(shù)
Default CPUFreq governor (conservative) cpu節(jié)電模式有四個(gè),筆記本默認(rèn)選conservative比較好。
ACPI Processor P-States driver 必須選,不然CPU Frequency就不能用。
后面的可選自己硬件相關(guān)的,我選的是Intel Enhanced SpeedStep和 Intel Speedstep on ICH-M chipsets,其他的統(tǒng)統(tǒng)消滅。
5、Bus options的選擇:
Bus options (PCI, PCMCIA, EISA, MCA, ISA)
PCI support
PCI Express support 現(xiàn)在新買的機(jī)器基本上都是PCI Express了
ISA support 較新的新機(jī)器沒有ISA設(shè)備,可以去掉
MCA support 去掉
NatSemi SCx200 support 去掉
PCI Hotplug Support
Support for PCI Hotplug (EXPERIMENTAL) 如果沒有PCI熱插拔設(shè)備,去掉
這里的選項(xiàng)可以考慮全部編譯進(jìn)內(nèi)核,而不是以模塊形式存在。
6、Device Drivers是重點(diǎn),由于linux不但面向個(gè)人工作站,更多的是面向服務(wù)器的應(yīng)用,所以可以把自己機(jī)器上沒有的硬件全部去掉,而不用面面俱到。但是通用型的選項(xiàng)要慎重。
比如在網(wǎng)卡的部分,除了我的千兆網(wǎng)卡 Broadcom Tigon3 support和4965無線網(wǎng)卡Intel Wireless WiFi 4965AGN,其余的硬件支持統(tǒng)統(tǒng)去掉。
再比如聲卡部分,我的是hd聲卡,我只是在PCI devices中,選intel hd 聲卡,再選Build IDT/Sigmatel HD-audio codec support,除此之外的硬件支持全部去掉。
聲卡還有一個(gè)細(xì)節(jié),在ubuntu7.10里面, 需要在/etc/modprobe.d/alsa-base后面添加options snd-hda-intel probe_mask=1 model=3stack,這樣我的筆記本喇叭才可以發(fā)聲,不然只有外接耳機(jī)或者音箱。這次編譯以后,這個(gè)動(dòng)作就不必了,但是兩個(gè)耳機(jī)插口只有一個(gè)可以用了。
再比如我的電腦中沒有agp,就可以直接把a(bǔ)gp相關(guān)的選項(xiàng)全部取消。
要注意的:
ATA/ATAPI/MFM/RLL support
Include IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盤上,那么這里一定要選*,選M都不行。否則啟動(dòng)時(shí)會(huì)出現(xiàn)“waiting for root file system”的提示而停滯不前。
SCSI emulation support 要用刻錄機(jī),必須選。
SCSI device support 現(xiàn)在都是SATA硬盤,一定要選*
SCSI disk support 如果你的/boot放在SATA硬盤上,一定要選*。
SCSI CDROM support 雖然康寶刻錄機(jī)是ide接口的,但是必須把它當(dāng)成scsi接口的,這是老問題了。用刻錄機(jī),必須選。
Graphics support
Support for frame buffer devices 選中,進(jìn)入選擇?
VESA VGA graphics support 選上,不然字符界面啟動(dòng)會(huì)有問題,
后面的顯卡選擇:由于我的顯卡是nvidia 8400gs,要自己安裝nvidia公司的驅(qū)動(dòng),所以一個(gè)都沒有選。這樣導(dǎo)致ubuntu開機(jī)動(dòng)畫會(huì)出問題,我索性在grub中的splash字符全部刪除,把開機(jī)動(dòng)畫關(guān)閉。字符界面很正常。
Console display driver support 有人開機(jī)后字符控制臺(tái)錯(cuò)誤,就是這部分選項(xiàng)沒有選,出問題了。
Framebuffer Console support 需要打開。
Bootup logo 開機(jī)圖標(biāo),會(huì)在自檢的畫面上加上個(gè)性圖標(biāo)。需要在grub上添加“vga=”的選項(xiàng),可以參考http://dotimes.com/articles /t23-slackware-framebuffer.html
7、File systems
Filesystem in Userspace support 簡稱fuse。是必選的,如果你要用windows分區(qū)。
CD-ROM/DVD Filesystems
ISO 9660 CDROM file system support 一般選*
DOS/FAT/NT Filesystems
VFAT (Windows-95) fs support 有FAT32分區(qū)就選*吧
NTFS file system support 有NTFS分區(qū)就選*吧
NTFS write support 如果想對(duì) NTFS分區(qū)進(jìn)行寫操作,選*
必須將啟動(dòng)盤的文件系統(tǒng)編譯進(jìn)內(nèi)核,默認(rèn)是編譯成模塊,這樣無法啟動(dòng)系統(tǒng)。ubuntu采用的文件系統(tǒng)是ext3,請(qǐng)把ext2,ext3相關(guān)的必要選項(xiàng)都編譯進(jìn)入內(nèi)核。
8、Virtualization這個(gè)大類是我多花幾百元買t8100的主要原因,因?yàn)閠8100支持intel vt技術(shù)
使linux上的虛擬機(jī)的性能大幅度提高。這里的選項(xiàng)我除了amd的,其他都編譯成模塊。
9、全部設(shè)置完成,最后一項(xiàng)是保存設(shè)置。
按照我的習(xí)慣,先在上一層目錄保存一個(gè)備份,文件名類似 ../config20080630
然后再保存到當(dāng)起目錄,文件名 .config
退出設(shè)置程序。
六、開始編譯內(nèi)核。
ubuntu的工具是make-kpkg,和其他的發(fā)行版相比,步驟相對(duì)簡單。
相關(guān)命令:
代碼: $sudo make-kpkg clean?? 這條命令好像不要超級(jí)權(quán)限,很多資料上說要,不過這不是原則問題。
$ sudo make-kpkg -initrd --initrd --append-to-version=dell1400 kernel_image kernel-headers
上述命令中的dell1400可以用自己喜歡的字符代替,最后的字符一定是數(shù)字.
輸完上述命令回車之前,建議大家把瀏覽器還有別的運(yùn)用程序都關(guān)掉,機(jī)器開始的工作比較艱苦。我的機(jī)器大概十幾分鐘。
七、安裝內(nèi)核
編譯完成就是安裝工作。編譯好的內(nèi)核在上一層目錄。包括linux-headers-...-_i386.deb和linux-image-...-i386.deb兩個(gè)文件,如果你不搞開發(fā)的話,只要安裝內(nèi)核就可以,頭文件以后要用的時(shí)候再說。
安裝相關(guān)命令:
代碼: $ cd ..
$ sudo dpkg -i?? linux-image-(按tab鍵)
文件名很長,如果不用tab自動(dòng)補(bǔ)足是不可能的,tab鍵萬歲。
安裝完成后和老內(nèi)核比較一下大小
代碼: $ ls -l /boot/
八、重新啟動(dòng)驗(yàn)證新內(nèi)核。
代碼: $ sudo reboot
九、顯卡驅(qū)動(dòng)
如果你的顯卡和我一樣是nvidia顯卡,啟動(dòng)之后往往無法正常進(jìn)入x-window。即使能看到gdm登錄界面,效果也是很差的。
那么就要安裝nvidia驅(qū)動(dòng)。
用ctrl+alt+f1 進(jìn)入字符命令行,輸入用戶名,密碼登錄。
命令:
代碼: 下載驅(qū)動(dòng)
$ wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.12/NVIDIA-Linux-x86-173.14.12-pkg1.run
$sudo -s
輸入密碼取得超級(jí)權(quán)限。
#ps ax
看看和gdm相關(guān)的進(jìn)程,把這些進(jìn)程全部關(guān)閉;用sudo /etc/init.d/gdm stop有可能有一個(gè)進(jìn)程沒有關(guān)閉:
#kill 進(jìn)程號(hào)
然后安裝nvidia顯卡驅(qū)動(dòng),當(dāng)然驅(qū)動(dòng)要先下好,到nvidia驅(qū)動(dòng)所在的目錄里,運(yùn)行:
# sh ./NVIDIA-Linux-x86-173.14.12-pkg1.run
重新啟動(dòng)以后就ok。要用nvidia的驅(qū)動(dòng),每次升級(jí)內(nèi)核都要這么做。
十、無線網(wǎng)卡
相關(guān)的內(nèi)核選項(xiàng)是
Networking --->
Wireless --->
Generic IEEE 802.11 Networking Stack (mac80211)
還有4965的驅(qū)動(dòng)。
4965無線網(wǎng)卡驅(qū)動(dòng)雖然已經(jīng)編入內(nèi)核,但沒有firmware無法使用。需要把原來內(nèi)核的firmware拷貝到新內(nèi)核對(duì)應(yīng)的目錄,名字和內(nèi)核一致,我的內(nèi)核是linux-image-2.6.25.10dell1400,那建的目錄名就是2.6.25.10dell1400。
代碼: 具體命令:
$ cd /lib/firmware/
$ sudo mkdir 2.6.25.10dell1400
把你的老內(nèi)核中的4965的firmware拷貝過來。
$ sudo cp 2.6.24-16-generic/* 2.6.25.10dell1400/
上面的命令和下面的命令是等價(jià)的:
$ cd /lib/firmware/
$ sudo cp -R 2.6.24-16-generic/? 2.6.25.10dell1400/
重新啟動(dòng)系統(tǒng),無線網(wǎng)卡就正常了。?
附編譯使用的機(jī)器配置:dell vostro 1400,t8100,nvidia 8400cs顯卡,內(nèi)置SigmaTel STAC9228芯片的聲卡,4965無線網(wǎng)卡,BCM5906M千兆網(wǎng)卡,3G內(nèi)存,160G硬盤,combo刻錄。?
編譯系統(tǒng)版本:ubuntu 8.04桌面版.
下載內(nèi)核源代碼:http://www.kernel.org/?
注意,點(diǎn)擊2.6.25內(nèi)核的F版,即完整版。?
如果你懶得去網(wǎng)站點(diǎn)聯(lián)接,運(yùn)行下列命令:?
代碼: $cd ~
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.10.tar.bz2
安裝有關(guān)編譯程序。安裝make ,gcc, make-kpkg,運(yùn)行menuconfig等等和編譯內(nèi)核相關(guān)的工具。
安裝不了,請(qǐng)檢查/etc/apt/sources.list 文件。
有關(guān)命令:
代碼: $sudo? apt-get install build-essential kernel-package?? libncurses5-dev
二、解壓源代碼
注意,網(wǎng)上很多教程上說應(yīng)該解壓到 /usr/src,純屬以訛傳訛,linux掌門人linus說解壓到任何目錄上都可以。當(dāng)然,linus的說法是正確的。我放在自己的主目錄下的src目錄。
如果你下載源代碼是放到自己的主目錄下或者運(yùn)行上面的wget下載的,那么運(yùn)行下列命令:
代碼: $ cd ~
$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/
現(xiàn)在,源代碼就在 ~/src/linux-2.6.25.10
進(jìn)入源代碼的目錄,準(zhǔn)備下一步的工作。后面都在這個(gè)目錄里面進(jìn)行。
代碼: $ cd ~/src/linux-2.6.25.10
三、開始編譯前的準(zhǔn)備工作。
首先,清理以前編譯時(shí)留下的臨時(shí)文件。如果是剛剛解開的包,不需要執(zhí)行這步。如果是第二次或者是第n次編譯,那么一定要執(zhí)行。
相關(guān)命令如下:
代碼: $ sudo make mrproper
網(wǎng)上很多教程上說把現(xiàn)在使用的內(nèi)核的config拷貝過來參考,據(jù)實(shí)驗(yàn),是不需要的,ubuntu還有
debian會(huì)自動(dòng)做這步。不過這條命令倒是可以學(xué)習(xí)一下。當(dāng)然你可以將以前的配置拷貝過來。
命令:
代碼: cp /boot/config-`uname -r` ./.config
四、開始配置內(nèi)核選項(xiàng)。
相關(guān)命令:
代碼: $sudo make menuconfig
配置用到的鍵只有幾個(gè),esc退出菜單;空格改變選項(xiàng)狀態(tài);光標(biāo)鍵上下左右移動(dòng),回車選定。
選項(xiàng)意義:M是編譯成可以隨時(shí)加入的模塊,*是編譯進(jìn)入內(nèi)核,空就是不要。
配置選項(xiàng)非常多,具體配置可以參考金步國先生翻譯的資料:Linux 2.6.19.x 內(nèi)核編譯配置選項(xiàng)。
參考網(wǎng)址:http://lamp.linux.gov.cn/Linux/kernel_options.html
為了一次成功,請(qǐng)大家遵循一個(gè)原則,如果你自己使用的內(nèi)核已經(jīng)選用了某個(gè)選項(xiàng),如果你沒用充分的理由,不要隨便改動(dòng)。這樣雖然內(nèi)核不那么精簡,但是不容易出現(xiàn)問題。
我們可以精簡的部分是硬件模塊部分,對(duì)于自己沒有的硬件要毫不猶豫的清除。
如果你很執(zhí)著,或者你有潔癖,你也可以一項(xiàng)項(xiàng)對(duì)過去,按照金步國先生的資料描述去選擇基本上沒有問題。
五、必須強(qiáng)調(diào)的幾個(gè)選項(xiàng):
1、在“General setup”里面的“Prompt for development and/or incomplete code/drivers”金步國認(rèn)為是不需要。但是如果你的硬件比較新,那幾乎是必須選的,這樣,我們才可以找到4965無線網(wǎng)卡,alsa聲音驅(qū)動(dòng)等等。
Kernel log buffer size 我選15,雙核。如果你用ia64,要選16。
Control Group support 集群支持?可以不要
Choose SLAB allocator (SLUB (Unqueued Allocator)) 內(nèi)存管理模式slab和slub選擇slub。
2、在“Block layer”里,假如沒有2TB的硬盤,就去掉:Support for Large Block Devices 。Support for Large Single Files 也不需要,誰有2TB的文件?
3、Processor type and features中是關(guān)于cpu的,要認(rèn)真選。
Symmetric multi-processing support是打開多核的開關(guān),我的cpu是雙核的,選中。
Processor family (Core 2/newer Xeon) 我的是Core 2/newer Xeon。找到自己的cpu后,把Generic x86 support選項(xiàng)取消。
Subarchitecture Type 選(PC-compatible)
Maximum number of CPUs 輸入自己的核心數(shù)目,我輸入2。
SMT (Hyperthreading) scheduler support說的是超線程技術(shù),P4有支持的,我的t8100不支持,目前大部分市場上的家用cpu都不支持。
High Memory Support (4GB) 1G以下選1G;我是3G,選4G;4G以上的選16G
在“ Timer frequency ”里,默認(rèn)是250Hz,較新的cpu都可以選擇了1000Hz,性能更好。
4、Power management options中把APM (Advanced Power Management) BIOS support關(guān)閉。現(xiàn)在的電腦都用acpi了。
CPU Frequency scaling 是筆記本cpu節(jié)電技術(shù)
Default CPUFreq governor (conservative) cpu節(jié)電模式有四個(gè),筆記本默認(rèn)選conservative比較好。
ACPI Processor P-States driver 必須選,不然CPU Frequency就不能用。
后面的可選自己硬件相關(guān)的,我選的是Intel Enhanced SpeedStep和 Intel Speedstep on ICH-M chipsets,其他的統(tǒng)統(tǒng)消滅。
5、Bus options的選擇:
Bus options (PCI, PCMCIA, EISA, MCA, ISA)
PCI support
PCI Express support 現(xiàn)在新買的機(jī)器基本上都是PCI Express了
ISA support 較新的新機(jī)器沒有ISA設(shè)備,可以去掉
MCA support 去掉
NatSemi SCx200 support 去掉
PCI Hotplug Support
Support for PCI Hotplug (EXPERIMENTAL) 如果沒有PCI熱插拔設(shè)備,去掉
這里的選項(xiàng)可以考慮全部編譯進(jìn)內(nèi)核,而不是以模塊形式存在。
6、Device Drivers是重點(diǎn),由于linux不但面向個(gè)人工作站,更多的是面向服務(wù)器的應(yīng)用,所以可以把自己機(jī)器上沒有的硬件全部去掉,而不用面面俱到。但是通用型的選項(xiàng)要慎重。
比如在網(wǎng)卡的部分,除了我的千兆網(wǎng)卡 Broadcom Tigon3 support和4965無線網(wǎng)卡Intel Wireless WiFi 4965AGN,其余的硬件支持統(tǒng)統(tǒng)去掉。
再比如聲卡部分,我的是hd聲卡,我只是在PCI devices中,選intel hd 聲卡,再選Build IDT/Sigmatel HD-audio codec support,除此之外的硬件支持全部去掉。
聲卡還有一個(gè)細(xì)節(jié),在ubuntu7.10里面, 需要在/etc/modprobe.d/alsa-base后面添加options snd-hda-intel probe_mask=1 model=3stack,這樣我的筆記本喇叭才可以發(fā)聲,不然只有外接耳機(jī)或者音箱。這次編譯以后,這個(gè)動(dòng)作就不必了,但是兩個(gè)耳機(jī)插口只有一個(gè)可以用了。
再比如我的電腦中沒有agp,就可以直接把a(bǔ)gp相關(guān)的選項(xiàng)全部取消。
要注意的:
ATA/ATAPI/MFM/RLL support
Include IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盤上,那么這里一定要選*,選M都不行。否則啟動(dòng)時(shí)會(huì)出現(xiàn)“waiting for root file system”的提示而停滯不前。
SCSI emulation support 要用刻錄機(jī),必須選。
SCSI device support 現(xiàn)在都是SATA硬盤,一定要選*
SCSI disk support 如果你的/boot放在SATA硬盤上,一定要選*。
SCSI CDROM support 雖然康寶刻錄機(jī)是ide接口的,但是必須把它當(dāng)成scsi接口的,這是老問題了。用刻錄機(jī),必須選。
Graphics support
Support for frame buffer devices 選中,進(jìn)入選擇?
VESA VGA graphics support 選上,不然字符界面啟動(dòng)會(huì)有問題,
后面的顯卡選擇:由于我的顯卡是nvidia 8400gs,要自己安裝nvidia公司的驅(qū)動(dòng),所以一個(gè)都沒有選。這樣導(dǎo)致ubuntu開機(jī)動(dòng)畫會(huì)出問題,我索性在grub中的splash字符全部刪除,把開機(jī)動(dòng)畫關(guān)閉。字符界面很正常。
Console display driver support 有人開機(jī)后字符控制臺(tái)錯(cuò)誤,就是這部分選項(xiàng)沒有選,出問題了。
Framebuffer Console support 需要打開。
Bootup logo 開機(jī)圖標(biāo),會(huì)在自檢的畫面上加上個(gè)性圖標(biāo)。需要在grub上添加“vga=”的選項(xiàng),可以參考http://dotimes.com/articles /t23-slackware-framebuffer.html
7、File systems
Filesystem in Userspace support 簡稱fuse。是必選的,如果你要用windows分區(qū)。
CD-ROM/DVD Filesystems
ISO 9660 CDROM file system support 一般選*
DOS/FAT/NT Filesystems
VFAT (Windows-95) fs support 有FAT32分區(qū)就選*吧
NTFS file system support 有NTFS分區(qū)就選*吧
NTFS write support 如果想對(duì) NTFS分區(qū)進(jìn)行寫操作,選*
必須將啟動(dòng)盤的文件系統(tǒng)編譯進(jìn)內(nèi)核,默認(rèn)是編譯成模塊,這樣無法啟動(dòng)系統(tǒng)。ubuntu采用的文件系統(tǒng)是ext3,請(qǐng)把ext2,ext3相關(guān)的必要選項(xiàng)都編譯進(jìn)入內(nèi)核。
8、Virtualization這個(gè)大類是我多花幾百元買t8100的主要原因,因?yàn)閠8100支持intel vt技術(shù)
使linux上的虛擬機(jī)的性能大幅度提高。這里的選項(xiàng)我除了amd的,其他都編譯成模塊。
9、全部設(shè)置完成,最后一項(xiàng)是保存設(shè)置。
按照我的習(xí)慣,先在上一層目錄保存一個(gè)備份,文件名類似 ../config20080630
然后再保存到當(dāng)起目錄,文件名 .config
退出設(shè)置程序。
六、開始編譯內(nèi)核。
ubuntu的工具是make-kpkg,和其他的發(fā)行版相比,步驟相對(duì)簡單。
相關(guān)命令:
代碼: $sudo make-kpkg clean?? 這條命令好像不要超級(jí)權(quán)限,很多資料上說要,不過這不是原則問題。
$ sudo make-kpkg -initrd --initrd --append-to-version=dell1400 kernel_image kernel-headers
上述命令中的dell1400可以用自己喜歡的字符代替,最后的字符一定是數(shù)字.
輸完上述命令回車之前,建議大家把瀏覽器還有別的運(yùn)用程序都關(guān)掉,機(jī)器開始的工作比較艱苦。我的機(jī)器大概十幾分鐘。
七、安裝內(nèi)核
編譯完成就是安裝工作。編譯好的內(nèi)核在上一層目錄。包括linux-headers-...-_i386.deb和linux-image-...-i386.deb兩個(gè)文件,如果你不搞開發(fā)的話,只要安裝內(nèi)核就可以,頭文件以后要用的時(shí)候再說。
安裝相關(guān)命令:
代碼: $ cd ..
$ sudo dpkg -i?? linux-image-(按tab鍵)
文件名很長,如果不用tab自動(dòng)補(bǔ)足是不可能的,tab鍵萬歲。
安裝完成后和老內(nèi)核比較一下大小
代碼: $ ls -l /boot/
八、重新啟動(dòng)驗(yàn)證新內(nèi)核。
代碼: $ sudo reboot
九、顯卡驅(qū)動(dòng)
如果你的顯卡和我一樣是nvidia顯卡,啟動(dòng)之后往往無法正常進(jìn)入x-window。即使能看到gdm登錄界面,效果也是很差的。
那么就要安裝nvidia驅(qū)動(dòng)。
用ctrl+alt+f1 進(jìn)入字符命令行,輸入用戶名,密碼登錄。
命令:
代碼: 下載驅(qū)動(dòng)
$ wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.12/NVIDIA-Linux-x86-173.14.12-pkg1.run
$sudo -s
輸入密碼取得超級(jí)權(quán)限。
#ps ax
看看和gdm相關(guān)的進(jìn)程,把這些進(jìn)程全部關(guān)閉;用sudo /etc/init.d/gdm stop有可能有一個(gè)進(jìn)程沒有關(guān)閉:
#kill 進(jìn)程號(hào)
然后安裝nvidia顯卡驅(qū)動(dòng),當(dāng)然驅(qū)動(dòng)要先下好,到nvidia驅(qū)動(dòng)所在的目錄里,運(yùn)行:
# sh ./NVIDIA-Linux-x86-173.14.12-pkg1.run
重新啟動(dòng)以后就ok。要用nvidia的驅(qū)動(dòng),每次升級(jí)內(nèi)核都要這么做。
十、無線網(wǎng)卡
相關(guān)的內(nèi)核選項(xiàng)是
Networking --->
Wireless --->
Generic IEEE 802.11 Networking Stack (mac80211)
還有4965的驅(qū)動(dòng)。
4965無線網(wǎng)卡驅(qū)動(dòng)雖然已經(jīng)編入內(nèi)核,但沒有firmware無法使用。需要把原來內(nèi)核的firmware拷貝到新內(nèi)核對(duì)應(yīng)的目錄,名字和內(nèi)核一致,我的內(nèi)核是linux-image-2.6.25.10dell1400,那建的目錄名就是2.6.25.10dell1400。
代碼: 具體命令:
$ cd /lib/firmware/
$ sudo mkdir 2.6.25.10dell1400
把你的老內(nèi)核中的4965的firmware拷貝過來。
$ sudo cp 2.6.24-16-generic/* 2.6.25.10dell1400/
上面的命令和下面的命令是等價(jià)的:
$ cd /lib/firmware/
$ sudo cp -R 2.6.24-16-generic/? 2.6.25.10dell1400/
重新啟動(dòng)系統(tǒng),無線網(wǎng)卡就正常了。?
附編譯使用的機(jī)器配置:dell vostro 1400,t8100,nvidia 8400cs顯卡,內(nèi)置SigmaTel STAC9228芯片的聲卡,4965無線網(wǎng)卡,BCM5906M千兆網(wǎng)卡,3G內(nèi)存,160G硬盤,combo刻錄。?
編譯系統(tǒng)版本:ubuntu 8.04桌面版.
總結(jié)
以上是生活随笔為你收集整理的Ubuntu下编译内核的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zoj 2874 amp; poj 33
- 下一篇: ubuntu -- 安装memcache