歡迎您光臨本站 註冊首頁

2.6.xx內核編譯詳解

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0


做一件事情,首先要知道自己在幹什麼,而不是盲目得升級內核,現在升級內核有點泛濫,sigh
首先讓我們先了解一下2.6內核的新特性

一、01.模塊子系統(Module Subsystem)、統一設備模型(Unified Device Model)和 PnP 支持
模塊子系統發生了重大變化。

02.穩定性有所提高
為了徹底避免內核載入或者導出正在被使用的內核模塊,或者至少為了減少載入或者卸載模塊的同時使用該模塊的可能性
(這有時會導致系統崩潰),內核載入和導出內核模塊的過程都得到了改進。

03.統一設備模型
統一設備模型的創建是 2.6 內核最重要的變化之一。它促進了模塊介面的標準化,其目的是更好地控制和管理設備,例如:

更準確地確定系統設備。
電源管理和設備電源狀態。
改進的系統匯流排結構管理。

04.即插即用(PnP)支持
1.1.1 和 1.1.2 小節中提及的變化使得運行 2.6 內核的 Linux 成為一個真正即插即用的 OS。
例如,對 ISA PnP 擴展、遺留 MCA 和 EISA 匯流排以及熱插拔設備的 PnP 支持。

05.內核基礎設施的變化
為了區別以 .o 為擴展名的常規對象文件,內核模塊現在使用的擴展名是 .ko。
創建了新的 sysfs 文件系統,當內核發現設備樹時就會描述它。
內存支持,NUMA 支持
支持更大數量的 RAM
2.6 內核支持更大數量的 RAM,在分頁模式下最高可達 64GB。

06.NUMA
對非一致內核訪問(Non-Uniform Memory Access - NUMA)系統的支持是 2.6 內核中新出現的。

07.線程模型,NPTL
相對於 v2.4 的 LinuxThreads,在版本 2.6 中新出現的是 NPTL(Native POSIX Threading Library)。
NPTL 為 Linux 帶來了企業級線程支持,提供的性能遠遠超過了 LinuxThreads。它所基於的用戶與內核線程的比率是 1:1。

在 2003 年 10 月,GNU C 程序庫 glibc 中融入了 NPTL 支持,Red Hat 率先在 Red Hat Linux 9 和
Red Hat Enterprise Linux 中使用定製的 v2.4 內核實現了 NPTL。

08.性能改進
新的調度器演算法
2.6 Linux 內核引入了新的 O(1) 演算法。在高負載情況下它運行得特別好。新的調度器基於每個 CPU 來分佈時間片,
這樣就消除了全局同步和重新分配循環,從而提高了性能。

內核搶佔(Kernel Preemption)
新的 2.6 內核是搶佔式的。這將顯著地提高互動式和多媒體應用程序的性能。

I/O 性能改進
Linux 的 I/O 子系統也發生了重大的變化,通過修改 I/O 調度器來確保不會有進程駐留在隊列中過長時間等待進行輸入/輸出操作,
這樣就使得 I/O 操作的響應更為迅速。

快速用戶空間互斥(Fast User-Space Mutexes)
「futexes」(快速用戶空間互斥)可以使線程串列化以避免競態條件,引入它也提高了響應速度。
通過在內核空間中部分實現「futexes」以允許基於競爭設置等待任務的優先順序而實現改進。

09.擴展性改進
處理器數目更多
Linux 內核 2.6 最多可以支持 64 個 CPU。支持更大的內存,歸功於 PAE(物理地址擴展,Physical Address Extensions),在 32-位系統上分頁模式下所支持的內存增加到了 64GB。

用戶和組
惟一用戶和組的數量從 65,000 增至 40 多億,也就是從 16-位增加到了 32-位。

PID 的數量
PID 的最大數量從 32,000 增至 10 億。

打開文件描述符的數量
打開文件描述符的數量沒有增加,但是不再需要事先設置該參數,它將自行調節。

10.支持更多的設備
在 Linux 內核 2.6 之前,內核中有可以約束大型系統的限制,比如每條鏈 256 個設備。v2.6 內核徹底地打破了這些限制,
不但可以支持更多類型的設備,而且支持更多同類型的設備。在 Linux 2.6 系統中,可以支持 4095 種主要的設備類型,
每一個單獨的類型可以有超過一百萬個子設備。
文件系統大小
Linux 內核 2.6 所允許的可定址文件系統大小最大為 16 TB。

11.文件系統
ext2、ext3 和 ReiserFS 等傳統 Linux 文件系統得到了顯著的改進。最值得注意的改進是擴展屬性(或文件元數據)的引入。
最重要的是 POSIX ACL 的實現,這是對普通 UNIX 許可權的擴展,可以支持更細化的用戶訪問控制。

12.除了對傳統 Linux 文件系統的改進支持以外,新的內核完全支持在 Linux 中相對較新的 XFS 文件系統。
Linux 2.6 內核現在還引入了對 NTFS 文件系統的改進的支持,現在允許以讀/寫模式安裝 NTFS 文件系統。

基於以上2.6的新特性,我決定用2.6的內核,我的系統為Red Hat Enterprise Linux AS release 3 (Taroon Update 3)
硬體環境為DELL 2850

一、下載解壓並打上內核補丁
我以2.6.10為例子,patche以bk4的例子,目的只是讓大家知道怎麼打patch,
其實本人用的是2.6.6的內核,因為在AS3.0上升級到2.6.9以上的內核,
mount大的nfs網路硬碟時,df 顯示不正確,明明是800G的盤變成4.2G,
不過還是能正常用,我升級過nfs和mount的包都沒用,/var/log/message里
提示是kernel: nfs warning: mount version older than kernel,
還望知道的 告知一聲,謝 :) BTW:2.6.8的內核沒用過

內核源代碼:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.bz2
最新內核補丁:http://www.kernel.org/pub/linux/ ... atch-2.6.10-bk4.bz2

cd /usr/src
rm -rf linux
tar jxf /download/linux-2.6.10.tar.bz2
ln -s linux-2.6.10 linux
cd linux
bunzip2 -dv /download/patch-2.6.10-bk4.bz2 |patch -p1
如果在/usr/src目錄下就用patch -p0

二、修改內核源代碼 (升級2.6就是為了優化,乾脆連源代碼也改了吧)

1.修改/usr/src/linux/include/linux/posix_types.h
設置fd_set支持的最大數量
#define __FD_SETSIZE 1024 ---> 65536

2.修改/usr/src/linux/include/linux/fs.h
設置最大打開文件數量(TCP連接數量)
#define INR_OPEN 1024 ---> 65536
#define NR_FILE 8192 ---> 65536
#define NR_RESERVED_FILES 10 ---> 128

3.修改/usr/src/linux/include/net/tcp.h
設置TIMEOUT的時間為1秒
#define TCP_TIMEWAIT_LEN (60*HZ) 60 ---> 1*HZ
設置在backlog隊列里的半連接的重試次數,每次都會花相應的時間,本質上 也是減少重試時間
#define TCP_SYNACK_RETRIES 5 ---> 3

針對RHEL-AS3本來就是穩定+優化的,不過就算你用 RHEL-AS3 自己的內核,那也要修改一下上面的參數才好呀 :)

三、安裝必要的工具

1.下載module-init-tools-3.1.tar.bz2
http://www.kernel.org/pub/linux/ ... t-tools-3.1.tar.bz2
代碼:
./configure --prefix=/
make moveold
make all install
./generate-modprobe.conf /etc/modprobe.conf

2.下載新的mkinitrd
ftp://195.220.108.108/linux/6/fe ... d-4.1.18-2.i386.rpm
它需要lvm2 device-mapper
ftp://195.220.108.108/linux/6/fe ... -1.00.19-2.i386.rpm
ftp://195.220.108.108/linux/6/fe ... 00.25-1.01.i386.rpm
如果不更新這個包在make install時會提示以下錯誤:
代碼:
No module mptbase found for kernel 2.6.10-bk4, aborting.
mkinitrd failed
make[1]: *** [install] Error 1
make: *** [install] Error 2

安裝lvm2-2.00.25-1.01.i386.rpm時請用rpm -ivh --nodeps package name

四、make menuconfig
代碼:
01.Code maturity level options --->
  • Prompt for development and/or incomplete code/drivers
  • Select only drivers expected to compile cleanly
    02.General setup --->
  • Support for paging of anonymous memory (swap)
  • System V IPC
  • POSIX Message Queues
    [ ] BSD Process Accounting
  • Sysctl support
    [ ] Auditing support
    [ ] Support for hot-pluggable devices
  • Kernel Userspace Events
    [ ] Kernel .config support
  • Configure standard kernel features (for small systems) --->
  • Load all symbols for debugging/kksymoops
    [ ] Do an extra kallsyms pass
  • Enable futex support
  • Enable eventpoll support
    [ ] Optimize for size
  • Use full shmem filesystem
    03.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
    04.Processor type and features --->
    Subarchitecture Type (PC-compatible) --->
    Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon) --->
  • Generic x86 support
    [ ] HPET Timer Support
  • Symmetric multi-processing support 多CPU
    (8) Maximum number of CPUs (2-255)
  • SMT (Hyperthreading) scheduler support
  • Preemptible Kernel 搶佔式內核,請選上它
    [ ] Machine Check Exception
    < > 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 --->
    High Memory Support (4GB) ---> 高內存
    [ ] Allocate 3rd-level pagetables from highmem
    [ ] Math emulation
  • MTRR (Memory Type Range Register) support
  • Enable kernel irq balancing
    [ ] Use register arguments (EXPERIMENTAL)
    05.Power management options (ACPI, APM) ---> 電源管理 自定 (偶沒選)
    06.Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> 板卡支持 自定
  • PCI support
    PCI access mode (Any) --->
    [ ] Message Signaled Interrupts (MSI and MSI-X)
  • Legacy /proc/pci interface
  • PCI device name database
    [ ] ISA support
    [ ] MCA support
    < > NatSemi SCx200 support
    07.Executable file formats --->
  • Kernel support for ELF binaries
    Kernel support for a.out and ECOFF binaries
    Kernel support for MISC binaries
    08.Device Drivers ---> 設備驅動及網路支持
    Generic Driver Options ---> 默認
  • Select only drivers that don't need compile-time external firmware
  • Prevent firmware from being built
    Memory Technology Devices (MTD) ---> 不選
    Parallel port support ---> 并行埠 自定(偶沒選)
    Plug and Play support ---> 支持熱插拔 自定(偶沒選)
    Block devices --->
    <*> Normal floppy disk support
    < > Compaq SMART2 support
    < > Compaq Smart Array 5xxx support
    < > Mylex DAC960/DAC1100 PCI RAID Controller support
    < > Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)
    Loopback device support
    < > Cryptoloop Support
    Network block device support
    < > Promise SATA SX8 support
    RAM disk support
    (16) Default number of RAM disks
    (4096) Default RAM disk size (kbytes)
    () Source directory of cpio_list
    [ ] Support for Large Block Devices
    < > Packet writing on CD/DVD media
    IO Schedulers ---> IO調度器,都選上吧 可以在grub.conf指定用IO調度哪種方式,後面會講的
    <*> Anticipatory I/O scheduler
    <*> Deadline I/O scheduler
    <*> CFQ I/O scheduler
    ATA/ATAPI/MFM/RLL support ---> ATA設備 自定 (偶沒選)
    SCSI device support ---> SCSI設備 自定我有scsi的設備所以有以下選項
    <*> SCSI device support
  • legacy /proc/scsi/ support
    --- SCSI support type (disk, tape, CD-ROM)
    <*> SCSI disk support
    因為偶式MPT的SCSI,所以以下都沒選,省略之
    Multi-device support (RAID and LVM) ---> 支持RAID和LVM(邏輯卷) 自定
  • Multiple devices driver support (RAID and LVM)
    <*> RAID support
    < > Linear (append) mode
    <*> RAID-0 (striping) mode
    < > RAID-1 (mirroring) mode
    < > RAID-10 (mirrored striping) mode (EXPERIMENTAL)
    <*> RAID-4/RAID-5 mode
    < > RAID-6 mode (EXPERIMENTAL)
    <*> Multipath I/O support
    < > Faulty test module for MD
    <*> Device mapper support
    < > Crypt target support
    < > Snapshot target (EXPERIMENTAL)
    < > Mirror target (EXPERIMENTAL)
    < > Zero target (EXPERIMENTAL)
    Fusion MPT device support ---> 偶的SCSI是這個,所以選了 還是自定
    <*> Fusion MPT (base + ScsiHost) drivers
    (40) Maximum number of scatter gather entries
    <*> Fusion MPT misc device (ioctl) driver
    IEEE 1394 (FireWire) support ---> 自定 (偶沒選)
    I2O device support ---> 自定 (偶沒選)
    Networking support ---> 網路選項
  • Networking support
    Networking options --->
    <*> Packet socket
    [ ] Packet socket: mmapped IO
    < > Netlink device emulation
    <*> Unix domain sockets 如果你有網路就選
    < > PF_KEY sockets
  • TCP/IP networking
    [ ] IP: multicasting
    [ ] IP: advanced router
    [ ] IP: kernel level autoconfiguration
    < > IP: tunneling
    < > IP: GRE tunnels over IP
    [ ] IP: ARP daemon support (EXPERIMENTAL)
  • IP: TCP syncookie support (disabled per default) 能防DOS攻擊,但會降低一點性能,總的說性價比不錯
    < > IP: AH transformation
    < > IP: ESP transformation
    < > IP: IPComp transformation
    < > IP: tunnel transformation
    <*> IP: TCP socket monitoring interface
    IP: Virtual Server Configuration ---> lvs 支持
    < > The IPv6 protocol (EXPERIMENTAL)
  • Network packet filtering (replaces ipchains) ---> 包過濾省略(知道的自己選,不熟悉的都選上)
    以下都沒選,省略
    [ ] Amateur Radio support --->
    < > IrDA (infrared) subsystem support --->
    < > Bluetooth subsystem support --->
  • Network device support
    < > Dummy net driver support 這個是nis伺服器的吧,不大清楚,沒用過
    <*> Bonding driver support 雙網卡綁定的
    < > EQL (serial line load balancing) support
    < > Universal TUN/TAP device driver support
    ARCnet devices --->
    Ethernet (10 or 100Mbit) --->
    Ethernet (1000 Mbit) --->
    < > Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support
    < > D-Link DL2000-based Gigabit Ethernet support
    < > Intel(R) PRO/1000 Gigabit Ethernet support
    < > National Semiconduct DP83820 support
    < > Packet Engines Hamachi GNIC-II support
    < > Packet Engines Yellowfin Gigabit-NIC support (EXPERIMENTAL)
    < > Realtek 8169 gigabit ethernet support
    < > Marvell Yukon Chipset / SysKonnect SK-98xx Support
    <*> Broadcom Tigon3 support
    以下都沒選,省略
    ISDN subsystem --->
    Telephony Support --->
    Input device support --->
    Character devices --->
    I2C support --->
    Dallas's 1-wire bus --->
    Misc devices --->
    Multimedia devices --->
    Graphics support --->
    Sound --->
    USB support --->
    MMC/SD Card support ---> 以上都沒選,需要的自己選
    09.File systems ---> 文件系統
    < > Second extended fs support
    <*> Ext3 journalling file system support
    [ ] Ext3 extended attributes
  • JBD (ext3) debugging support
    < > Reiserfs support
    < > JFS filesystem support
    < > XFS filesystem support
    < > Minix fs support
    < > ROM file system support
    [ ] Quota support
    < > Kernel automounter support
    <*> Kernel automounter version 4 support (also supports v3)
    CD-ROM/DVD Filesystems --->
    <*> ISO 9660 CDROM file system support
    [ ] Microsoft Joliet CDROM extensions
    [ ] Transparent decompression extension
    < > UDF file system support
    DOS/FAT/NT Filesystems ---> floppy要用到的文件格式
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
    (437) Default codepage for FAT (NEW)
    (iso8859-1) Default iocharset for FAT (NEW)
    < > NTFS file system support
    Pseudo filesystems --->
  • /proc file system support proc文件系統支持
    [ ] /proc/kcore support
    [ ] /dev file system support (OBSOLETE)
    [ ] /dev/pts Extended Attributes
  • Virtual memory file system support (former shm fs) 虛擬內存支持
    [ ] tmpfs Extended Attributes
    [ ] HugeTLB file system support
    Miscellaneous filesystems --->
    Network File Systems --->
    <*> NFS file system support nfs客戶端支持
  • Provide NFSv3 client support
    [ ] Provide NFSv4 client support (EXPERIMENTAL)
    [ ] Allow direct I/O on NFS files (EXPERIMENTAL)
    < > NFS server support nfs服務端支持
    < > Secure RPC: Kerberos V mechanism (EXPERIMENTAL)
    < > Secure RPC: SPKM3 mechanism (EXPERIMENTAL)
    < > SMB file system support (to mount Windows shares etc.) samba支持
    < > CIFS support (advanced network filesystem for Samba, Window and other CIFS compliant servers)
    < > NCP file system support (to mount NetWare volumes)
    < > Coda file system support (advanced network fs)
    < > Andrew File System support (AFS) (Experimental)
    Partition Types --->
    Native Language Support ---> 自己選
    10.Profiling support ---> 沒選
    11.Kernel hacking ---> 沒選
    12.Security options ---> 沒選
    13.Cryptographic options ---> 沒選
    14.Library routines --->
    < > CRC-CCITT functions
    <*> CRC32 functions
    CRC32c (Castagnoli, et al) Cyclic Redundancy-Check


    五、編譯安裝
    步驟:make -jn(n代表同時編譯的進程,可以加快編譯速度,n由你的配置決定,我的配置用15-25)
    make modules_install
    make install

    六、grub的設置
    設置之前先介紹一下2.6的I/O調度器
    2.6包含的四個I/O調度器分別是No-op I/O scheduler、Anticipatory I/O scheduler、Deadline I/O scheduler與CFQ I/O scheduler。
    在後文中分別簡稱為ns、as、ds與cfq。

    ns是一個簡化的調度程序它只作最基本的合併與排序。與桌面系統的關係不是很大,主要用在一些特殊的軟體
    與硬體環境下,這些軟體與硬體一般都擁有自己的調度機制對內核支持的要求很小,這很適合一些嵌入式系統環境。作為桌面用戶我們一般不會選擇它。

    as是當前內核中默認的I/O調度器。它擁有非常好的性能,在2.5中它就相當引人注意。在與2.4內核進行的對比測試中,在2.4中多項以分鐘為單位
    完成的任務,它則是以秒為單位來完成的。正因為如此它成為目前2.6測試版中默認的I/O調度器。但它也存在著弱點,它本身是比較龐大與複雜的,
    在一些特殊的情況下,特別是在數據吞吐量非常大的資料庫系統中它會變的比較緩慢。

    ds就是針對as的缺點進行改善而來的,還處於測試階段,但已經很穩定了。目前表現出的性能幾乎與as一樣好。加之比as更加小巧,
    是相當有前途的調度器,值得一試:)

    cfq為系統內的所有任務分配相同的帶寬,提供一個公平的工作環境,它比較適合桌面環境。事實上在測試中它也有不錯的表現,
    mplayer xmms等多媒體播放器與它配合的相當好,回放平滑幾乎沒有因訪問磁碟而出現的跳幀現象。對於喜歡在Linux下聽音樂看電影的朋友不妨嘗試一下。

    好了,下面說說怎麼設置:參數的格式為elevator=調度器名

    修改/boot/grub/grub.conf,在kernel那行後門加入elevator=deadline

    例如:kernel /boot/vmlinuz-2.6.10-bk4 ro root=/dev/你的根分區 elevator=deadline

    七、reboot


    Code maturity level options (代碼成熟等級 )
      
      PHP代碼:
      
      Code maturity level options --->
      [*] Prompt for development and/or incomplete code/drivers
      [*]  Select only drivers expected to compile cleanly
      
      1.prompt for development and/or incomplete code/drivers.
      
      默認情況下是選擇的,這將會在設置界面中顯示還在開發或者還沒有完成的代碼與驅動.你應該選擇它,因為有許多設備可能必需選擇這個選項才能進行配置,實際上它是安全的。
      
      2.Select only drivers expected to compile cleanly(NEW)
      
      選擇這個選項你將不會看到一些已知的存在問題的驅動程序選項,默認的情況下也是選擇的。如果 你有設備沒有找到驅動選項,你可以將這一項去掉,或許就可以找到相關驅動了,不過它可能是有BUG的。
      
      . General setup (普通屬性設置 )
      
      PHP代碼:
      
      General setup --->
      () Local version - append to kernel release
      [*] Support for paging of anonymous memory (swap)
      [*] System V IPC
      [*] POSIX Message Queues
      [*] BSD Process Accounting
      [*]  BSD Process Accounting version 3 file format
      [*] Sysctl support
      [ ] Auditing support
      (15) Kernel log buffer size (16 => 64KB, 17 => 128KB)
      [*] Support for hot-pluggable devices
      [*] Kernel Userspace Events
      [*] Kernel .config support
      [*] Configure standard kernel features (for small systems) --->
      
      Support for paging of anonymous memory (swap) (NEW)
      
      這個選項將使你的內核支持虛擬內存,也就是讓你的計算機好象擁有比實際內存更多 多的內存空 間用來執行很大的程序。默認是選擇的。
      
      System V IPC
      
      為進程提供通信機制,這將使系統中各進程間有交換信息與保持同步的能力。有些程序只有在選Y的情況下才能運行,這裡一定要選。
      
      POSIX Message Queues
      
      這是POSIX的消息隊列,它同樣是一種IPC。建議你最好將它選上。
      
      BSD Process Accounting
      
      這是充許用戶進程訪問內核將賬戶信息寫入文件中的。這通常被認為是個好主意,
      
      Sysctl support
      
      這個選項能不重新編譯內核修改內核的某些參數和變數,如果你也選擇了支持/proc,將能從/proc/sys存取可以影響內核的參數或變數。建議你最好將它選上。
      
      Auditing support
      
      審記支持,用於和內核的某些子模塊同時工作,例如SELinux。只有選擇此項及它的子項,才能調用有關審記的系統調用。
      
      Kernel log buffer size (16 => 64 KB 17 => 128 KB)
      
      內核日誌緩存的大小
      
      Kernel Userspace Events
      
      內核中分為系統區和用戶區,這裡系統區和用戶區進行通訊的一種方式
      
      Kernel .config support
      
      將.config配置信息保存在內核中,選上它及它的子項使得其它用戶能從/proc中得到內核的配置。
      
      Configure standard kernel features (for small systems)
      
      這是為了編譯某些特殊的內核使用的,通常你可以不選擇這一選項
      
      . Loadable module support (載入模塊選項 )
      
      PHP代碼:
      Loadable module support --->
      [*] Enable loadable module support
      [*] Module unloading
      [*] Module versioning support (EXPERIMENTAL)
      [ ] Source checksum for all modules
      [*] Automatic kernel module loading
      
      Enable loadable module support
      
      很多人喜歡將全部功能、硬體支持一股腦的編進內核,而不是使用模塊的方式。使用模塊支持,你的系統能具有更好的可擴充性。還有一個原因就是自己編寫的功能模塊、設備驅動模塊(假設編寫的質量不高)以模塊方式工作引起Kernel Panic的機率要遠遠低於不支持模塊全部編進內核的方式。
      
      Module unloading
      
      不選這個功能,載入的模塊就不能卸載。沒什麼需要多解釋的,建議最好選上。
      
      Module versioning support (EXPERIMENTAL)
      
      這個功能可以讓你使用其它版本的內核模塊
      
      Source checksum for all modules
      
      這個功能是為了防止更改了內核模塊的代碼但忘記更改版本號而造成版本衝突.
      
      Automatic kernel module loading
      
      這個選項能讓內核自動的載入部份模塊,建議你最好選上。舉個例子說明一下,如模塊eth1394依賴於模塊ieee1394。如果選擇了這個選項,可以直接載入模塊eth1394;如果沒有選擇這個選項,必需先載入模塊ieee1394,再載入模塊eth1394,否則將出錯。
      
      .Processor type and features (處理器內型及特性)
      
      PHP代碼:
      Subarchitecture Type (PC-compatible) --->
      Processor family (386) --->
      [ ] Generic x86 support
      [*] HPET Timer Support
      [*] Symmetric multi-processing support
      [ ] Preemptible Kernel
      [ ] local APIC support on uniprocessors
      [ ] Machine Check Exception
      [ ] Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium
      <M> Toshiba Laptop support
      <M> 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 --->
      High Memory Support (off) --->
      [ ] Math emulation
      [*] MTRR (Memory Type Range Register) support
      [ ] Use register arguments (EXPERIMENTAL)
      
      Subarchitecture Type
      
      這沒什麼好說的,如果用PC機的話都選這個。
      
      Processor family (386)
      
      這也沒什麼好說的,選擇你機器對應的處理器即可。
      
      Generic x86 support
      
      這一選項針對x86系列的CPU使用更多的常規優化。如果你在上面一項選的是i386、i586之類的才選這個。
      
      HPET Timer Support
      
      HPET是替代8254晶元的下一代時鐘處理器。這裡你可以安全的選上這一選項。如果硬體不支持的話,將仍使用8254時鐘處理器。
      
      Symmetric multi-processing support
      
      對稱多處理器支持,在單CPU的機器上,不選這個選項會更快一些。由於超線程技術,看起來是兩顆CPU,因些要選上這個選項。
      
      Preemptible Kernel
      
      這個選項能使應用程序即使內核在高負載時也很可靠,建議最好選上。
      
      local APIC support on uniprocessors
      ..
      
      Machine Check Exception
      
      這個選項能讓CPU檢測到系統故障時通知內核
      
      Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium
      
      打開這個選項將會檢查你機器上可能存在的問題,如果有一個非致命錯誤出現將會自動的修復並且記錄,這可以幫助你查出程序出現問題的原因,是一個不錯的選項.
      
      Toshiba Laptop support
      
      對Toshiba本本的支持
      
      Dell laptop suppor
      
      對Dell的支持
      
      /dev/cpu/microcode - Intel IA32 CPU microcode support
      
      這個選項是讓你使用不隨Linux內核發行的IA32 microcode,但是你必需有IA32 microcode的二進位文件。
      
      /dev/cpu/*/msr - Model-specific register support
      
      這個選項能讓特權CPU訪問x86的MSR寄存器。由於超線程並不是真正的多處理器環境,所以不要選擇這個。
      
      /dev/cpu/*/cpuid - CPU information support
      
      這個選項能從/dev/cpu/x/cpuid獲得CPU的唯一標識符
      
      High Memory Support (off)
      
      如果你有大容量的內存(超過4G)你要選它,以使內核可以使用這部分內存。偶是沒這命啦這部分永遠為OFF,如果你有你就ON吧。
      
      Math emulation
      
      估計現在沒人有386或486SX的處理器了吧,那就不要選這個。
      
      MTRR (Memory Type Range Register) support
      
      在Intel p6家族的處理器中(Ppro、 PII和更新的)有一個內存類型範圍寄存器,可用來控制處理器訪問的內存範圍。打開它一般可以提升顯卡的顯示性能
      
      .Power management options (ACPI, APM) (電源管理)
      
      PHP代碼:
      
  • 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 --->
      
      Power Management support
      
      電源管理沒什麼好說的,不想浪費電就選上。如果不選你可以跳過這部份。
      
      Power Management Debug Support
      
      電源管理的調試信息支持,如果不是要調試內核有關電源管理部份,請不要選擇這項。
      
      Software Suspend (EXPERIMENTAL)
      
      休眠到硬碟。也就是將內存寫入交換分區中,下次啟動可以通過參數resume=/dev/swappartition(例如:resume= /dev/hda6)來恢復上次機器運行的狀態。這項功能對於系統引導時啟動許多服務的機器來說很有用,可以節約啟動時間。這項功能根據自己的需要選擇吧,如果你選擇這項功能,記得恢復休眠后重做交換分區。
      
      ACPI (Advanced Configuration and Power Interface) Support --->
      
      從這裡進入ACPI電源管理的配置界面,要注意ACPI與APM不能同時使用,如果你同時配置了這兩者,那麼在系統啟動時如果發現一個可工作的ACPI設備那麼APM將被關閉,ACPI會被載入
      
      APM (Advanced Power Management) BIOS Support --->
      
      高級電源管理的支持,一般來說筆記本應該選上,台式機可以不選。
      
      CPU Frequency scaling --->
      
      這一選項允許改變CPU的主頻,使CPU在低負荷或使用電池時降低主頻,達到省電的目的。
      
      .Bus options (PCI, PCMCIA, EISA, MCA, ISA)
      
      PHP代碼:
      
  • PCI support
      PCI access mode (Any) --->
      [ ]  PCI Express support
      [ ]  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
      [ ]  Legacy MCA API Support
      [ ]  Support For the mca entry in /proc
      [ ]  NatSemi SCx200 support
      PCCARD (PCMCIA/CardBus) support --->
      PCI Hotplug Support --->
      
      PCI support
      
      PCI支持,如果使用了PCI插槽,當然必選
      
      PCI access mode (Any)
      
      選Any,系統將優先使用MMConfig,然後使用BIOS,最後使用Direct檢測PCI設備
      
      PCI Express support
      PCI Express匯流排支持
      
      Legacy /proc/pci interface
      
      是否使用/proc/pci目錄下的信息文件來描述PCI設備的信息。現在的系統多數都使用lspci工具來得到這樣的信息
      
      PCI device name database
      
      如果你不打算使用lspci工具,就把這項和上面的一項選上。lspci和hotplug都不需要內核中的設備信息庫了
      
      ISA support
      
      如果你沒有老式的ISA設備,老的ISA槽支持,可以不選這項
      
      EISA suppor
      
      擴展工業匯流排支持
      
      Vesa Local Bus priming
      
      ESA匯流排,也是擴展工業匯流排的一種,已經被PCI代替,所以不用選擇
      
      Generic PCI/EISA bridge
      
      PCI、EISA兩種匯流排的橋
      
      EISA virtual root device
      
      EISA匯流排的虛擬根設備
      
      EISA device name database
      
      內核中的EISA設備信息庫
      
      MCA support
      
      (IBM的東東) 微通道匯流排.IBM的台式機和筆記本上可能會有這種匯流排,包括它的p系列、e系列、z系列機器上都用到了這種匯流排
      
      Legacy MCA API Support
      .
      
      Support For the mca entry in /proc
      .
      
      NatSemi SCx200 support
      
      松下的一種半導體處理器的驅動,If you don't know what to do here, say N.
      
      PCCARD (PCMCIA/CardBus) support --->
      
      一般只有筆記本電腦上才會有PCMCIA插槽,如果你是台式機的話,可以不選這一項
      
      PCI Hotplug Support --->
      
      支持PCI熱插拔的.
      
      .Executable file formats (可執行文件格式)
      
      PHP代碼:
      [ ]  Kernel support for ELF binaries
      [ ]  Kernel support for a.out and ECOFF binaries
      [ ]  Kernel support for MISC binaries
      
      Kernel support for ELF binaries
      
      這個當然y,因為目前gcc2.7.0以上的都有支持ELF了,如果沒有選擇這一項可能會使用相當多的程序因此無法執行
      
      Kernel support for a.out and ECOFF binaries
      
      a.out的執行文件是比較古老的可執行碼,用在比較早期的UNIX系統上.Linux最初也是使用這種碼來執行程序,一直到ELF格式的可執行碼出來后,有愈來俞多的程序碼隨著ELF格式的優點而變成了ELF的可執碼.將來勢必完全取代a.out格式的可執行碼.但目前由於沿有許多的程序還沒有取代過來,所以只好選擇Y,等將來有一天,全部的程序都變成了ELF的天下時,那時再disable掉
      
      Kernel support for MISC binaries
      
      可以讓你支援?e的種類的binary執行檔(如:Java、Python ... etc)?G到kernel或編成module都ok
      
      .Device Drivers
      
      PHP代碼:
      
  • Generic Driver Options --->
      [ ]  Memory Technology Devices (MTD) --->
      [ ]  Parallel port support --->
      [ ]  Plug and Play support --->
      [ ]  Block devices --->
      [ ]  ATA/ATAPI/MFM/RLL support --->
      [ ]  SCSI device support --->
      [ ]  Old CD-ROM drivers (not SCSI, not IDE) --->
      [ ]  Multi-device support (RAID and LVM) --->
      [ ]  Fusion MPT device support --->
      [ ]  IEEE 1394 (FireWire) support --->
      [ ]  I2O device support --->
      [ ]  Networking support --->
      [ ]  ISDN subsystem --->
      [ ]  Telephony support --->
      [ ]  Input device support --->
      [ ]  Character devices --->
      [ ]  I2C support --->
      [ ]  Dallas's 1-wire bus --->
      [ ]  Misc devices --->
      [ ]  Multimedia devices --->
      [ ]  Graphics support --->
      [ ]  Sound --->
      [ ]  USB support --->
      [ ]  MMC/SD card support --->
      [ ]  InfiniBand support --->
      
      Generic Driver Options
      ..
      
      Memory Technology Devices (MTD)
      ..
      
      Parallel port support
      ..
      
      Plug and Play support
      熱插拔支持,當然要選擇.
      
      Block devices
      ..
      
      ATA/ATAPI/MFM/RLL support
      ..
      
      SCSI device support
      ..
      
      Old CD-ROM drivers (not SCSI, not IDE)
      ..
      
      Multi-device support (RAID and LVM)
      ..
      
      Fusion MPT device support
      ..
      
      IEEE 1394 (FireWire) support
      ..
      
      I2O device support
      ..
      
      Networking support
      ..
      
      ISDN subsystem
      ..
      
      Telephony support
      ..
      
      Input device support
      ..
      
      Character devices
      ..
      
      I2C support
      ..
      
      Dallas's 1-wire bus
      ..
      
      Misc devices
      ..
      
      Multimedia devices
      ..
      
      Graphics support
      ..
      
      Sound
      ..
      
      USB support
      ..
      
      MMC/SD card support
      ..
      
      InfiniBand support

  • [火星人 ] 2.6.xx內核編譯詳解已經有800次圍觀

    http://coctec.com/docs/linux/show-post-189711.html