Ubuntu下編譯內核

一、下載源代碼和編譯軟件的準備?
下載內核源代碼:http://www.kernel.org/?
注意,點擊2.6.25內核的F版,即完整版。?
如果你懶得去網站點聯接,運行下列命令:?


代碼:
$cd ~
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.10.tar.bz2


安裝有關編譯程序。安裝make ,gcc, make-kpkg,運行menuconfig等等和編譯內核相關的工具。
安裝不了,請檢查/etc/apt/sources.list 文件。
有關命令:

代碼:
$sudo? apt-get install build-essential kernel-package?? libncurses5-dev


二、解壓源代碼
注意,網上很多教程上說應該解壓到 /usr/src,純屬以訛傳訛,linux掌門人linus說解壓到任何目錄上都可以。當然,linus的說法是正確的。我放在自己的主目錄下的src目錄。
如果你下載源代碼是放到自己的主目錄下或者運行上面的wget下載的,那么運行下列命令:

代碼:
$ cd ~
$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/



現在,源代碼就在 ~/src/linux-2.6.25.10
進入源代碼的目錄,準備下一步的工作。后面都在這個目錄里面進行。

代碼:
$ cd ~/src/linux-2.6.25.10


三、開始編譯前的準備工作。
首先,清理以前編譯時留下的臨時文件。如果是剛剛解開的包,不需要執行這步。如果是第二次或者是第n次編譯,那么一定要執行。
相關命令如下:

代碼:
$ sudo make mrproper

網上很多教程上說把現在使用的內核的config拷貝過來參考,據實驗,是不需要的,ubuntu還有
debian會自動做這步。不過這條命令倒是可以學習一下。當然你可以將以前的配置拷貝過來。
命令:

代碼:
cp /boot/config-`uname -r` ./.config


四、開始配置內核選項。
相關命令:

代碼:
$sudo make menuconfig


配置用到的鍵只有幾個,esc退出菜單;空格改變選項狀態;光標鍵上下左右移動,回車選定。
選項意義:M是編譯成可以隨時加入的模塊,*是編譯進入內核,空就是不要。
配置選項非常多,具體配置可以參考金步國先生翻譯的資料:Linux 2.6.19.x 內核編譯配置選項。
參考網址:http://lamp.linux.gov.cn/Linux/kernel_options.html
為了一次成功,請大家遵循一個原則,如果你自己使用的內核已經選用了某個選項,如果你沒用充分的理由,不要隨便改動。這樣雖然內核不那么精簡,但是不容易出現問題。
我們可以精簡的部分是硬件模塊部分,對于自己沒有的硬件要毫不猶豫的清除。
如果你很執著,或者你有潔癖,你也可以一項項對過去,按照金步國先生的資料描述去選擇基本上沒有問題。

五、必須強調的幾個選項:
1、在“General setup”里面的“Prompt for development and/or incomplete code/drivers”金步國認為是不需要。但是如果你的硬件比較新,那幾乎是必須選的,這樣,我們才可以找到4965無線網卡,alsa聲音驅動等等。
Kernel log buffer size 我選15,雙核。如果你用ia64,要選16。
Control Group support 集群支持?可以不要
Choose SLAB allocator (SLUB (Unqueued Allocator)) 內存管理模式slab和slub選擇slub。

2、在“Block layer”里,假如沒有2TB的硬盤,就去掉:Support for Large Block Devices 。Support for Large Single Files 也不需要,誰有2TB的文件?

3、Processor type and features中是關于cpu的,要認真選。
Symmetric multi-processing support是打開多核的開關,我的cpu是雙核的,選中。
Processor family (Core 2/newer Xeon) 我的是Core 2/newer Xeon。找到自己的cpu后,把Generic x86 support選項取消。
Subarchitecture Type 選(PC-compatible)
Maximum number of CPUs 輸入自己的核心數目,我輸入2。
SMT (Hyperthreading) scheduler support說的是超線程技術,P4有支持的,我的t8100不支持,目前大部分市場上的家用cpu都不支持。
High Memory Support (4GB) 1G以下選1G;我是3G,選4G;4G以上的選16G
在“ Timer frequency ”里,默認是250Hz,較新的cpu都可以選擇了1000Hz,性能更好。

4、Power management options中把APM (Advanced Power Management) BIOS support關閉。現在的電腦都用acpi了。
CPU Frequency scaling 是筆記本cpu節電技術
Default CPUFreq governor (conservative) cpu節電模式有四個,筆記本默認選conservative比較好。
ACPI Processor P-States driver 必須選,不然CPU Frequency就不能用。
后面的可選自己硬件相關的,我選的是Intel Enhanced SpeedStep和 Intel Speedstep on ICH-M chipsets,其他的統統消滅。

5、Bus options的選擇:
Bus options (PCI, PCMCIA, EISA, MCA, ISA)
PCI support
PCI Express support 現在新買的機器基本上都是PCI Express了
ISA support 較新的新機器沒有ISA設備,可以去掉
MCA support 去掉
NatSemi SCx200 support 去掉
PCI Hotplug Support
Support for PCI Hotplug (EXPERIMENTAL) 如果沒有PCI熱插拔設備,去掉
這里的選項可以考慮全部編譯進內核,而不是以模塊形式存在。

6、Device Drivers是重點,由于linux不但面向個人工作站,更多的是面向服務器的應用,所以可以把自己機器上沒有的硬件全部去掉,而不用面面俱到。但是通用型的選項要慎重。

比如在網卡的部分,除了我的千兆網卡 Broadcom Tigon3 support和4965無線網卡Intel Wireless WiFi 4965AGN,其余的硬件支持統統去掉。

再比如聲卡部分,我的是hd聲卡,我只是在PCI devices中,選intel hd 聲卡,再選Build IDT/Sigmatel HD-audio codec support,除此之外的硬件支持全部去掉。
聲卡還有一個細節,在ubuntu7.10里面, 需要在/etc/modprobe.d/alsa-base后面添加options snd-hda-intel probe_mask=1 model=3stack,這樣我的筆記本喇叭才可以發聲,不然只有外接耳機或者音箱。這次編譯以后,這個動作就不必了,但是兩個耳機插口只有一個可以用了。

再比如我的電腦中沒有agp,就可以直接把agp相關的選項全部取消。

要注意的:
ATA/ATAPI/MFM/RLL support
Include IDE/ATA-2 DISK support 如果你的/boot是放在IDE硬盤上,那么這里一定要選*,選M都不行。否則啟動時會出現“waiting for root file system”的提示而停滯不前。
SCSI emulation support 要用刻錄機,必須選。

SCSI device support 現在都是SATA硬盤,一定要選*
SCSI disk support 如果你的/boot放在SATA硬盤上,一定要選*。
SCSI CDROM support 雖然康寶刻錄機是ide接口的,但是必須把它當成scsi接口的,這是老問題了。用刻錄機,必須選。

Graphics support
Support for frame buffer devices 選中,進入選擇?
VESA VGA graphics support 選上,不然字符界面啟動會有問題,
后面的顯卡選擇:由于我的顯卡是nvidia 8400gs,要自己安裝nvidia公司的驅動,所以一個都沒有選。這樣導致ubuntu開機動畫會出問題,我索性在grub中的splash字符全部刪除,把開機動畫關閉。字符界面很正常。

Console display driver support 有人開機后字符控制臺錯誤,就是這部分選項沒有選,出問題了。
Framebuffer Console support 需要打開。
Bootup logo 開機圖標,會在自檢的畫面上加上個性圖標。需要在grub上添加“vga=”的選項,可以參考http://dotimes.com/articles /t23-slackware-framebuffer.html

7、File systems
Filesystem in Userspace support 簡稱fuse。是必選的,如果你要用windows分區。

CD-ROM/DVD Filesystems
ISO 9660 CDROM file system support 一般選*
DOS/FAT/NT Filesystems
VFAT (Windows-95) fs support 有FAT32分區就選*吧
NTFS file system support 有NTFS分區就選*吧
NTFS write support 如果想對 NTFS分區進行寫操作,選*

必須將啟動盤的文件系統編譯進內核,默認是編譯成模塊,這樣無法啟動系統。ubuntu采用的文件系統是ext3,請把ext2,ext3相關的必要選項都編譯進入內核。

8、Virtualization這個大類是我多花幾百元買t8100的主要原因,因為t8100支持intel vt技術
使linux上的虛擬機的性能大幅度提高。這里的選項我除了amd的,其他都編譯成模塊。

9、全部設置完成,最后一項是保存設置。
按照我的習慣,先在上一層目錄保存一個備份,文件名類似 ../config20080630
然后再保存到當起目錄,文件名 .config
退出設置程序。

六、開始編譯內核。
ubuntu的工具是make-kpkg,和其他的發行版相比,步驟相對簡單。
相關命令:

代碼:
$sudo make-kpkg clean?? 這條命令好像不要超級權限,很多資料上說要,不過這不是原則問題。
$ sudo make-kpkg -initrd --initrd --append-to-version=dell1400 kernel_image kernel-headers



上述命令中的dell1400可以用自己喜歡的字符代替,最后的字符一定是數字.
輸完上述命令回車之前,建議大家把瀏覽器還有別的運用程序都關掉,機器開始的工作比較艱苦。我的機器大概十幾分鐘。

七、安裝內核
編譯完成就是安裝工作。編譯好的內核在上一層目錄。包括linux-headers-...-_i386.deb和linux-image-...-i386.deb兩個文件,如果你不搞開發的話,只要安裝內核就可以,頭文件以后要用的時候再說。
安裝相關命令:

代碼:
$ cd ..
$ sudo dpkg -i?? linux-image-(按tab鍵)



文件名很長,如果不用tab自動補足是不可能的,tab鍵萬歲。
安裝完成后和老內核比較一下大小

代碼:
$ ls -l /boot/


八、重新啟動驗證新內核。
代碼:
$ sudo reboot


九、顯卡驅動
如果你的顯卡和我一樣是nvidia顯卡,啟動之后往往無法正常進入x-window。即使能看到gdm登錄界面,效果也是很差的。
那么就要安裝nvidia驅動。
用ctrl+alt+f1 進入字符命令行,輸入用戶名,密碼登錄。
命令:

代碼:
下載驅動
$ wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.12/NVIDIA-Linux-x86-173.14.12-pkg1.run

$sudo -s
輸入密碼取得超級權限。
#ps ax
看看和gdm相關的進程,把這些進程全部關閉;用sudo /etc/init.d/gdm stop有可能有一個進程沒有關閉:
#kill 進程號
然后安裝nvidia顯卡驅動,當然驅動要先下好,到nvidia驅動所在的目錄里,運行:
# sh ./NVIDIA-Linux-x86-173.14.12-pkg1.run


重新啟動以后就ok。要用nvidia的驅動,每次升級內核都要這么做。

十、無線網卡
相關的內核選項是
Networking --->
Wireless --->
Generic IEEE 802.11 Networking Stack (mac80211)
還有4965的驅動。

4965無線網卡驅動雖然已經編入內核,但沒有firmware無法使用。需要把原來內核的firmware拷貝到新內核對應的目錄,名字和內核一致,我的內核是linux-image-2.6.25.10dell1400,那建的目錄名就是2.6.25.10dell1400。


代碼:
具體命令:
$ cd /lib/firmware/
$ sudo mkdir 2.6.25.10dell1400
把你的老內核中的4965的firmware拷貝過來。
$ sudo cp 2.6.24-16-generic/* 2.6.25.10dell1400/

上面的命令和下面的命令是等價的:
$ cd /lib/firmware/
$ sudo cp -R 2.6.24-16-generic/? 2.6.25.10dell1400/



重新啟動系統,無線網卡就正常了。?

附編譯使用的機器配置:dell vostro 1400,t8100,nvidia 8400cs顯卡,內置SigmaTel STAC9228芯片的聲卡,4965無線網卡,BCM5906M千兆網卡,3G內存,160G硬盤,combo刻錄。?
編譯系統版本:ubuntu 8.04桌面版.

轉載于:https://www.cnblogs.com/hdk1993/p/4910362.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287068.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287068.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287068.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(10)C#偷懶的開始永無止境的循環?

本系列文章將會以通俗易懂的對話方式進行教學,對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新,包括別的語言以及實戰都將使用對話的方式進行教學,基礎編程語言教學適用于零基礎小白,之后實戰課程也將會逐步更新。 若…

活照片 android,活照片app安卓

活照片app是當前國內一款最新的圖片處理應用軟件,能幫助大家快速進行最新的手機拍照、處理功能,當前活照片app已經推出了安卓、蘋果版本,可以幫助大家一鍵修圖,將你的圖片變得更加有趣。活照片app功能:它可以讓你的照片…

Jwt隱藏大坑,通過源碼揭秘

前言JWT是目前最為流行的接口認證方案之一,有關JWT協議的詳細內容,請參考:https://jwt.io/introduction今天分享一下在使用JWT在項目中遇到的一個問題,主要是一個協議的細節,非常容易被忽略,如果不是自己遇…

GPS實驗二:GPS接收機的使用

一、實習目的 1、了解GPS接收機的基本結構; 2、掌握GPS接收機的一般操作方法。 二、實習內容 1、了解GPS接收機的外觀及主要構成單元; 2、學習GPS接收機的安裝及靜態測量的操作方法; 3、了解GPS接收機工作時的基本狀態信息。 三、實習地點 選擇視野開闊的場所,視場…

Android之解決CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+RecyclerView里面再嵌套RecyclerView滑動顫抖問題

1 問題 主頁面用的是這種結構 CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+RecyclerView(里面再嵌套RecyclerView,然后這個RecyclerView再嵌套一個RecyclerView)上下滑動在AppBarLayout下面出現頁面上下顫抖問題 2 分析 我的主頁代碼如下 <?xml versio…

文件傳輸基礎——Java IO流

一、文件的編碼 1 package com.study.io;2 3 4 /**5 * 測試文件編碼6 */7 public class EncodeDemo {8 9 /** 10 * param args 11 * throws Exception 12 */ 13 public static void main(String[] args) throws Exception { 14 String s&quo…

keepalived實現nginx的高可用(雙主模型)

實驗環境&#xff1a;RS1&#xff1a;rip&#xff08;172.16.125.7&#xff09;&#xff0c;安裝httpd軟件包&#xff1b;RS2&#xff1a;rip&#xff08;172.16.125.8&#xff09;&#xff0c;安裝httpd軟件包&#xff1b;director1&#xff08;7-1.lcs.com&#xff09;&#…

【必懂C++】第一個程序當然是HelloWorld呀 01

作者簡介 作者名&#xff1a;1_bit 簡介&#xff1a;CSDN博客專家&#xff0c;2020年博客之星TOP5&#xff0c;藍橋簽約作者。15-16年曾在網上直播&#xff0c;帶領一批程序小白走上程序員之路。歡迎各位小白加我咨詢我相關信息&#xff0c;迷茫的你會找到答案。系列教程將會…

實現html5音樂的自動播放,html5中audio實現播放列表和自動播放

var count 43; //一共多少MP3文件var index 18.mp3; // 初始化播放那個文件window.onload function(){var audio new Audio();audio.preload true;audio.controls true;audio.loop false;audio.src index;document.body.appendChild(audio);audio.play();audio.addEven…

GPS實驗三:GPS接收機野外數據采集

一、實習目的 1、掌握GPS接收機的使用方法; 2、學會量取天線高 3、掌握選點和埋設標志的原則 二、實習內容 1、了解GPS接收機的外觀及主要構成單元; 2、學習GPS接收機的安裝及靜態測量的操作方法; 3、了解GPS接收機工作時的基本狀態信息。 三、實習地點 選擇視野開闊的…

打造操作系統根社區 統信Deepin屹立于浪潮之顛

如果把芯片比作信息系統的大腦的話&#xff0c;那么操作系統毫無疑問就是信息系統的靈魂。在過去幾十年里&#xff0c;我國信息產業飽受“缺芯少魂”的困擾&#xff0c;國內市場基本被微軟、谷歌、蘋果、IBM、紅帽等外商壟斷。誠然&#xff0c;一些國內廠商推出過基于Fedora、u…

Androd之在圖片右上角顯示紅色圓圈里面數字提醒

1 需求 在圖片右上角顯示紅色圓圈里面數字提醒 2 效果如圖 3 關鍵代碼 item_loca.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_wid…

Bean

Bean spring中把一切配置到IOC容器(其實就是那個xml文件)里面的對象都稱之為bean。 轉載于:https://www.cnblogs.com/Renyi-Fan/p/7780935.html

html原樣輸出html代碼

<xmp>********</xmp> 在網頁上顯示html代碼標記<xmp></xmp>有時我們會將html代碼顯示在網頁上,直接寫會有問題, 如果我們將要顯示的html代碼放在<xmp></xmp>中就可以實現轉載于:https://www.cnblogs.com/sign-ptk/p/5668442.html

ArcGIS實驗教程——實驗二十二:空間數據符號化

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 一、實驗描述 空間數據可視化是通過地圖語言實現的,地圖語言由符號、色彩和文字注記組成。 地圖符號由形狀不同、大小不一、色彩有別的圖形和文字組成,是地圖語言的圖解部分。 符號化是以圖形方…

【必懂C++】C++可真是個“固執”的小可愛 02

作者簡介 作者名&#xff1a;1_bit 簡介&#xff1a;CSDN博客專家&#xff0c;2020年博客之星TOP5&#xff0c;藍橋簽約作者。15-16年曾在網上直播&#xff0c;帶領一批程序小白走上程序員之路。歡迎各位小白加我咨詢我相關信息&#xff0c;迷茫的你會找到答案。系列教程將會…

html td顯示隱藏,顯示/隱藏Html TR/TD

如何從html表中顯示/隱藏任何tr/td&#xff1f; 我應該可以隱藏表格中顯示的任何tr/td。顯示/隱藏Html TR/TDCountryUSASwedenNorwayInventory ID$123.23Cost$312.21Descriptionthis is a descriptionCSS&#xff1a;#tableEditor {position: absolute;left: 20px;top: 20px;pa…

Flutter之window系統下配置開發環境以及在Android Studio里面運行hello word

1 、window系統配置Flutter開發環境 1&#xff09;下載Flutter的SDK 如果電腦安裝了Git&#xff0c;直接到https://github.com/flutter/flutter/這里下載&#xff0c;但是需要翻墻 git clone https://github.com/flutter/flutter.git 或者到lutter官網下載 https://flutter.d…

java1.8--改進的接口

關于接口&#xff0c;每天的編碼都在寫&#xff0c;就不多說了。這里對比下接口&#xff0c;抽象類&#xff0c;類3者的關系&#xff1a; 1&#xff09;&#xff0c;接口是一種規范&#xff0c;就是告訴外界這個東東可以做什么。 2&#xff09;&#xff0c;抽象類是一種模板&am…

WPF效果第一百八十五篇之又玩TreeView

最近又有新的開發任務了,然后我提前瞄了一眼需要實現的效果;發現其中一個和我去年玩耍的有點類似;正好好久也沒玩了,那就趁著這個機會再次學習一下;閑話也不多扯了,上效果:2、來看看我的實現方式:3、①是一個分組的數據模板<HierarchicalDataTemplate x:Key"GroupDataT…