萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> 一個Linux愛好者的2.6.11內核編譯過程

一個Linux愛好者的2.6.11內核編譯過程

class="21712">

  星期天呀,呵呵,10:30起床,好像有一點早,昨天晚上玩游戲玩到3點鐘,好累呀。打開電腦,先玩一會游戲在說。11:00,不玩了,開始干正事了。先換到linux下去。本來想用虛擬機的,但是我做的ftp不能用,而且還可能好慢的。我的電腦是沒有上網的,在我的2003下架了個ftp,想讓虛擬機來訪問,可是虛擬機和我的電腦連不上,好郁悶。

  (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時make出錯。如果改用3.0的就沒事了。

  (2)安裝modutils-2.4.25-8.9.i386.rpm:

  # rpm -Uvih modutils-2.4.25-8.9.i386.rpm
  對modutils進行升級。

  (3)安裝新內核:

  將新內核copy到/usr/src下,

  #tar xzvf linux-2.6.11.tar.gz -----解壓縮.
  II. 將名為linux的符號鏈接刪掉,這時舊版本內核的符號鏈接.
  #ln -s linux-2.6.11 linux ------建立linux-2.6.11的符號鏈接linux.

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

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

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

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

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

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

  這三個命令中,make xconfig的界面最為友好,如果你可以使用Xwindow,你就用這個好了,這個比較方便,也好設置。如果你不能使用Xwindow,那麼就使用make menuconfig好了。界面雖然比上面一個差點,總比make config的要好多了。
選擇相應的配置時,有三種選擇,它們分別代表的含義如下:

    Y--將該功能編譯進內核
    N--不將該功能編譯進內核
    M--將該功能編譯成可以在需要時動態插入到內核中的模塊

  如果使用的是make xconfig,使用鼠標就可以選擇對應的選項。如果使用的是 make menuconfig,則需要使用空格鍵進行選取。你會發現在每一個選項前都有個括號, 但有的是中括號有的是尖括號,還有一種圓括號。用空格鍵選擇時可以發現,中括號裡要麼是空,要麼是"*",而尖括號裡可以是空,"*"和"M"。這表示前者對應的項要麼不要,要麼編譯到內核裡;後者則多一樣選擇,可以編譯成模塊。而圓括號的內容是要你在所提供的幾個選項中選擇一項。

  附內核配置選項說明(這是我在網上找到的,還可以,有些也是不一樣的,給你一個參考)

  代碼成熟度選項:

Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
[*] Select only drivers expected to compile cleanly

  打開使用開發中、不完全的代碼/驅動會讓內核配置多出很多選項,由於我們需要使用一些正在開發中的功能,因此必需打開這一選項。
通用設置選項,

General setup --->

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

可加載模塊:
Loadable module support --->
[*] Enable loadable module support
[*] Module unloading
不選這個功能,加載的模塊就不能卸載
[ ] 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
這一選項針對x86系列的CPU使用更多的常規優化。如果你在上面一項選的是i386、i586之類的才選這個
[*] HPET Timer Support
HPET是替代8254芯片的下一代時鐘處理器。這裡你可以安全的選上這一選項。如果硬件不支持的話,將仍使用8254時鐘處理器
[*] Symmetric multi-processing support
對稱多處理器支持,在單CPU的機器上,不選這個選項會更快一些。由於超線程技術,看起來是兩顆CPU,因些要選上這個選項
(1) Maximum number of CPUs (2-255) 支持的最大CPU數
[ ] SMT (Hyperthreading) scheduler support
[*] Preemptible Kernel
這個選項能使應用程序即使內核在高負載時也很可靠,建議最好選上
[*] Machine Check Exception
這個選項能讓CPU檢測到系統故障時通知內核,一般我用組裝的台式機會選這項。
< > 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是否支持。如果支持的話建議你選上這項
[ ] Sleep States (EXPERIMENTAL)
< > AC Adapter
< > Battery
<*> Button 捕獲Power、Sleep、Lid(我也不知道這是什麼按鈕)等按鈕是否按下,並做相應的動作
<*> Video 集成在板上的顯卡的ACPI支持,對有些板卡可能不起作用
< > Fan

copyright © 萬盛學電腦網 all rights reserved