HardBirch

LINUX内核编译步骤详细介绍

时间:09-05-19 栏目:系统技术篇 作者:鲁智森也有文化 评论:0 点击: 1,292 次

LINUX内核编译步骤详细介绍

 

www.kernel.org 下载 Linux-2.6.18.2.tar.bz2

tar –jxvf  Linux-2.6.18.2.tar.bz2 -C /usr/src/kernel

 

make mrproper 把原来编译产生的垃圾删除

配置内核可以根据需要与爱好使用下面命令中的一个:

#make config (基于文本的最为传统的配置界面)

#make menuconfig (基于文本选单的配置界面)

#make xconfig (基于图形窗口模式的配置界面)

#make oldconfig (如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)

进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS分区的文件系统,则要在文件系统部分选择FAT或DOS系统支持;系统如果配有网卡、PCMCIA卡等,需要在网络配置中选择相应卡的类型。

选择相应的配置时,有三种选择,它们分别代表的含义如下:

“Y”- 将该功能编译进内核

“N”- 不将该功能编译进内核                 

“M”- 将该功能编译成可以在需要时动态插入到内核中的模块。 

    将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响。许多功能都可以这样处理,例如像上面提到的网卡的支持、对FAT等文件系统的支持。                

其实现在编译内核最关键的地方就是配置内核。我一般用make menuconfig配置内核。

配置2.6.0内核时如果你的主板是Intel芯片的话,你用默认配制也许就可以得到一个满意的内核哦。做法是make  menuconfig后离开时选择保存。

这里的难点是pci,如果你硬盘是IDE的那一定要选择好你主板上南桥芯片。SCSI的话就是要选择上你的SCSI卡型号。

还有就是网卡,声卡芯片的型号了,他们的型号你都可以用lspci 查找到比如我的是。

[root@leo boot]# lspci

00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)

00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)

00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 08)

00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)

00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB

00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 08)

00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter

00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)

00:11.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

00:12.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)

编译配置

在这一部分涉及几个重要模块的配置请,特别注意.一般用"make menuconfig"命令来配置内核.

输入以上命令后出现一个菜单界面,用户可以对需要的模块.下面着重讲几个重要的配置

1)文件系统

请务必要选中ext3文件系统,

  File systems--->

  [*] Ext3 journalling file system support

  [*] Ext3 Security Labels

  [*] JBD (ext3) debugging support

  以上三项一定要选上,而且要内建(即标*). 这个非常重要,在配置完后一定要检查一下.config文件有没有"CONFIG_EXT3_FS=y"这一项. 如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed

  

2)网卡驱动

  请务必把自己网卡对应的驱动编译进内核,比较普遍的网卡是realtek 8139,以下就是这种网卡的配置,以供参考

  Device Drivers--->

  Networking support--->

  Ethernet (10 or 100Mbit) --->

   <*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)

   <*> RealTek RTL-8139 PCI Fast Ethernet Adapter support

3)声卡驱动

  也要选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考

  Device Drivers --->

  Sound --->

   <*> Sound card support

  Advanced Linux Sound Architecture --->

   <*> Advanced Linux Sound Architecture

   <*> Sequencer support

   < > Sequencer dummy client

   <*> OSS Mixer API

   <*> OSS PCM (digital audio) API[*] OSS Sequencer API

   <*> RTC Timer support

  PCI devices --->

   <*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111

  Open Sound System --->

   < > Open Sound System (DEPRECATED)

以上三项配置关系到新内核能否正常运行,请备加注意.其他的配置如果不是很了解,大可以按默认的选择.

#make dep (确保关键文件在正确的位置) 2.5.*-2.6.0都不需要了。其实2.4.*某些内核也不需要了。
#make clean (确保所有有关文件都处于最新版本状态)                   
#make zImage (编译压缩形式的内核)                    

在需要内核支持较多的外设和功能时,内核可能变得很大,此时可以编译大内核:

#make bzImage                    

编译的时间与机器的硬件条件及内核的配置等因素有关,所获得的内核的位置在/usr/src/Linux/arch/i386/boot目录下,当然这里假设用户的CPU是x86型的。

如果选择了可加载模块,编译完内核后,要对选择的模块进行编译:

#make modules (编译选择的模块)                   

#make module_install (将编译后的模块转移到系统标准位置)

# make install

上面的命令"make install"将:

(1)把压缩内核映象拷贝到/boot目录下, 并创建相应的System.map符号链接;
(2)修改bootloader的配置文件;
(3)调用mkinitrd程序创建内核的initrd映象. 对于GRUB而言, 将在/boot/grub/grub.conf配置文件增加如下类似的配置行: 

      title Red Hat Linux (2.***) 
      root(hd0, 1) 
      kernel /boot/vmlinuz-2.*** ro root=LABEL=/ 
      initrd /boot/initrd-2.***.img

模块在系统中的标准目录位于/lib/modules/x.y.z,后面的x.y.z是版本号,为安全起见,在运行#make  modules_install之前最好对/lib/modules进行备份。模块通常是带有扩展名.o的文件,使用命令#lsmod可以对当前内核的模块进行列表。                  

我一般是make bzImage;make modules;make module_install; make install                    

运行新内核之前,请检查一下/boot/grub/grub.conf的内容,下面的配置可作参考

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.18.2) 
        root (hd0,0) 
        kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00 rhgb quiet 
        initrd /initrd-2.6.18.2.img
title Fedora Core (2.6.18-1.2798.fc6) 
        root (hd0,0) 
        kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb quiet 
        initrd /initrd-2.6.18-1.2798.fc6.img

现在重启机器,即可测试最新的内核。


 

linux 2.6.15.6内核配置(unfinished)

注意: 不同的内核版本配置选项(或组织)可能不同, 但原理都是一样的!
另外, 关于compile in, compile as module的选择: 根文件系统, 根文件系统所处的设备, PS/2鼠标驱动不能编译为模块!

Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers  (y)
; 选择尚未完全测试的代码(alpha-test态),事实上它是安全的,建议选择.
[*] Select only drivers expected to compile cleanly  (y)
; 隐藏可能存在问题的驱动,建议选择,如果没找到对应设备的驱动,将它取消试试.

General setup --->
()  Local version - append to kernel release (enter,输入字符窜)
; 从2.6.8的版本起,可以在内核版本号后面添加个性化字符窜.
[ ] Automatically append version information to the version string (NEW)  (n)
; 这个没看懂,先不选上.
[*] Support for paging of anonymous memory (swap)  (y)
; 如果使用了swap分区提供虚拟内存,一定要选上它.
[*] System V IPC (y)
; System V 的进程间通信, 选上.
[*] POSIX Message Queues (y)
; POSIX消息队列, 选上.
[*] BSD Process Accounting (y)
; 如果选上,user process可以通过系统调用使内核在它退出时将相关信息写入某个文件(如进程创建时间,拥有者,命令,内存使用量...)
   选上它,可以在应用程序中利用这些信息.
[*] BSD Process Accounting version 3 file format (y)
; 将前面所述的进程信息记录到v3格式的文件中, 选上它
[*] Sysctl support (y)
; 提供动态更改内核参数与变量的接口, 而不需要重新启动系统. 打开这个选项将会增加内核的体积至少8KB。
     如果你的内核仅用制作安装与恢复系统系统盘那么可以不选, 以减少对内存的占用.
[ ] Auditing support  (n)
; 允许其他内核子系统的内核审查,不知道什么鸟意思,不选上.
[*] Kernel Userspace Events  (y)
; 开启内核-用户空间事件层,它是比socket简单的kernel-user通信机制. 这样应用程序就可以通过监听不用轮询系统设备或文件
[ ] Kernel .config support  (n)
; 将.config文件编译到内核中, 以显示运行中的内核使用哪个选项.不要选择.
()  Initramfs source file(s)  (n)
; 好像是RAM FS初始化的吧,不知道什么鸟东西,不选!
[ ] Optimize for size (Look out for broken compilers!)  (n)
; 用gcc编译内核时,优化选项是 -O2,选择它将改为-Os, 生成比较小的内核.(老版本的gcc可能因此产生错误代码)
[ ] Configure standard kernel features (for small systems)  ---> (n)
; 针对小系统 (embedded)裁减内核, 桌面系统不用选择.

Loadable module support  --->     
[*] Enable loadable module support   (y)
; 使内核支持模块,当然要选择! (使用modprobe, lsmod, modinfo, insmod, rmmod工具...)
[*] Module unloading (y)
; 卸载模块,选择!(有些模块一旦加载就不能卸载, 不管是否选择了这个选项)
[*] Forced module unloading  (y)
; 强制卸载内核, 即便内核认为该行为不安全的时候.( rmmod -f 强制卸载,不等停止使用模块)
[ ]  Module versioning support (EXPERIMENTAL)  (n)
; 一般地,我们编译的模块是用于当前运行的内核, 选择该选项可以针对其他的内核编译模块. 先不选择.
[ ] Source checksum for all modules (n)  
; 查看模块中是哪些代码的,不选
[*]  Automatic kernel module loading   (y)
; 内核在任务中要使用一些被编译为模块的驱动或特性时, 先使用modprobe命令来加载它
  该选项自动调用modprobe加载需要的模块.当然选择!

Block layer  --->     
[ ] Support for Large Block Devices (n)
; 如果有超过2T的块设备,则选择它以支持大容量块设备
[ ] IO Schedulers  --->
<*> Anticipatory I/O scheduler   (y)
<*> Deadline I/O scheduler        (y)
<*> CFQ I/O scheduler                (y)
 Default I/O scheduler (Anticipatory)  --->   
 (X) Anticipatory
上述3中调度方式都选择,默认的调度方式选为anticipatory (按空格选择)

Processor type and features  --->  
Subarchitecture Type (PC-compatible)  --->  
; 用的PC,选PC-compatible
Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon)  --->   
; 选择CPU类型, 可通过 cat /proc/cpuinfo查看
[ ] Generic x86 support   (n)
; 如果没有列出你所使用的CPU类型,而你的CPU又是X86的,选上它,否则不选.它增加了通用性却降低了特定CPU的性能.
[*] HPET Timer Support   (y)
; 这也是一个新的特性,HPET是intel制定的新的用以代替传统的8254(PIT)中断定时器与RTC的定时器,全称叫作高精度事件定时器。如果你有一台较新的机器就选它吧,一般它是一个安全的选项, 即使你的硬件不支持HPET也不会造成问题,因为它会自动用8254替换。
[ ] Symmetric multi-processing support  (n)
; 只有一个CPU,SMP不用选择
Preemption Model (Preemptible Kernel (Low-Latency Desktop))  --->  
(X) Preemptible Kernel (Low-Latency Desktop)  
; 2.6内核的特点:抢占式内核.选择可抢占式内核以提升桌面系统的交互性能或实时性.
[*] Preempt The Big Kernel Lock (NEW)  (y)
; 抢占大内核锁?不清楚,不过选择了可加强桌面系统性能.
[*] Local APIC support on uniprocessors  (y)
; 单CPU的本地APIC (advanced programmable interrupt controller)支持,它内嵌在cpu中支持cpu自身产生的中断.建议选择,就算cpu不支持APIC,也没有影响.
[*] IO-APIC support on uniprocessors  (y)
; 同上,支持I/O高级可编程中断控制器.
[*] Machine Check Exception  (y)
; 如果系统出现问题, 内核采取一定的措施,比如打印警告信息或挂起系统.
 cat /proc/cpuinfo | grep mce 若CPU flags中有mce,
 这个功能是需要硬件支持的。你可以查看/proc/cpuinfo看看是否有mce标志,则说明CPU支持该选项.
 启动时加nomce参数可关闭它.
< > Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4  (n)
; 启动一个5秒的定时器,跟踪非致命错误并更正,记录它.如果不是特定的CPU,不要选择.(我的本本是Pentium M,不选择)
[ ] check for P4 thermal throttling interrupt.
; P4的CPU温度过高时会在屏幕上显示出相关的信息,只适用于Pentium 4
< > Toshiba Laptop support  (n)
< > Dell laptop support     (n)
; 上述两项都针对东芝和戴尔IInspire 8000笔记本,不选.
< > Enable X86 board specific fixups for reboot (n)
; 修正主板/芯片组以正确重启或工作,目前只针对 GX1, CS5530A, TROM2.1
  lspci -v | grep CX1 ...若系统不支持,则不用选择. (?我说错了好像)
< > /dev/cpu/microcode - Intel IA32 CPU microcode support  (n)
; 更新intell IA32 cpu的微码(内核是不自带的,需要另外下载)
< > /dev/cpu/*/msr - Model-specific register support   (n)
; 让privileged进程访问X86的MSRs(model-specific registers),一般用于intel的Embedded cpu.
< > /dev/cpu/*/cpuid - CPU information support  (n)
; 在/dev/cpu中建立一系列的设备文件, 以使过程访问指定的CPU.

Firmware Drivers  --->    
< > BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)  (n)
; 可以打开实模式下BIOS中的增强磁盘设备服务,以决定从哪个磁盘上启动.一般的BIOS不支持.
< > BIOS update support for DELL systems via sysfs  (n)
; 戴尔的BIOS更新系统,需要一些应用软件的支持.
< > Dell Systems Management Base Driver   (n)
; 为上述的DELL BIOS更新系统提供sysfs借口,先不设,以后再研究.我的本本是Dell D600.

High Memory Support (off)  --->
; 如果有大于4G的内存,可选择.我内存只有512M.  
Memory model (Flat Memory) --->  
; 选择内存模式, flat memory记忆被盗,查查资料了再说,先选上.
[ ] Math emulation   (n)
; 在你的CPU上如果没有数学协处理器的话,打开这个选项可以让内核模拟一个.以提升浮点计算能力,不过慢的可以.如果你使用的不是古董CPU的话(486SX以前的), 这一项你永远都不需要。
[*] MTRR (Memory Type Range Register) support   (y)
; 在Intel p6家族的处理器中(Ppro、 PII和更新的)有一个内存类型范围寄存器,可用来控制处理器访问的内存范围. 打开它一般可以提升显卡的显示性能(2.5倍).
[ ] Boot from EFI support (EXPERIMENTAL)   (n)
;  EFI规范基本上是一个让PC可以在开机前(preboot)进行扫毒及诊断的执行环境.英特尔已经利用EFI建立一个可以取代BIOS的开机前软件框架. 这个框架名为“EFI平台创新开发框架”,其工程代码为Tiano,这个框架让电脑厂商可以撰写开机前软件的模组,这种模组很像Windows的驱动程序。它需要ELILO bootloader, grub或lilo不支持EFI.
[ ] Use register arguments (EXPERIMENTAL)   (n)
; 使用寄存器参数,(编写系统调用的时候可能有用,参考<Linux Kernel Development>,v2 5.3 它使用不同的ABI,将函数的前三个参数通过寄存器传递.(gcc-3.0或更新的才支持).先不设置,学习编写系统调用的时候再看.
[*] Enable seccomp to safely compute untrusted bytecode  (y)  
; 使用seccomp将计算程序孤立到它们各自的地址空间.如果不是用于嵌入式系统, 还是在这里选yes
Timer frequency (250 HZ)  --->  
; 时钟频率,选为250赫兹.
(0x100000) Physical address where the kernel is loaded
; 设定内核加载的物理地址.默认为0x100000.不要更改!
[ ] kexec system call (EXPERIMENTAL)  (n)
; kexec能够关闭当前内核,运行另外一个内核.

Power management options (ACPI, APM)  --->    
[*] Legacy Power Management API  (y)
; 为pm_regiter()提供支持.
[ ] Power Management Debug Support  (n)
; 支持电源管理的调试
[*] Software Suspend (EXPERIMENTAL)  (y)
; 支持系统suspend(休眠),打开这项功能后, 可用swsusp或者shutdown -z <time>来挂起系统. 这样系统会将你当前正在进行的工作(也就是当前内存中的内容)作成一个镜象保存到你的交换分区中, 在你下一次启动时使用启动参数"resume=/dev/交换分区".内核就会将上一次的工作内核从镜象文件中恢复到内存,这可以大大提高系统的启动速度. 当你不想恢复上次的工作时向内核传递参数“noresume".不过系统启动后你的交换分区将不可以使用, 你可以使用mkswap命令来重新格式化你的交换分区. 这个功能不需要高级电源管理的支持.
( ) Default resume partition
与上述suspend选项配合,来指定保存镜象的分区.如果上面那个有开启就要选择用來做suspend to disk用的partition

ACPI (Advanced Configuration and Power Interface) Support  --->
[*] ACPI Support  (y)
; 使用ACPI来管理电源.想让它起作用,还要在系统中安装acpid守护程序。
[*] Sleep States  (y)
; 选择这个选项可以使你的系统具有挂起的功能,也就是说你可以暂时中断你的工作,让你的系统处与一种低电能消耗的状态(sleep state),你此时的系统状态会保存在内存或者磁盘上(取决于挂起的深度),当你需要时再恢复到正常的工作状态。但由于各种系统之间的差别,目前这项功能并不完善。只有很少的设备可以完美的支持这个特性,所以不建议一般用户使用.
<M> AC Adapter  (m)
; 显示本本是使用AC交流电还是DC直流电.编译成模块!
<M>   Battery  (m)
; 同上,读取/proc/acpi/battery目录中的电池信息,反馈给用户.
<M>   Button   (m)
; 按下电源键时,守护进程读取/proc/acpi/event,并执行用户在这些事件上定义的动作,比如关机.
< >   Video    (n)
; 对主板集成显卡执行一些操作,比如定义video POST device, 获得EDID信息, 设置视频输出.独立显卡就不用设了.
< >   Generic Hotkey (EXPERIMENTAL)   (n)
; 通用热键驱动,不需要装.
<M>   Fan   (m)
; 对ACPI风扇设备的控制支持,通过用户程序控制风扇(打开,关闭,读取运行状态等).
<M>   Processor  (m)  
; 处理器在空闲时节省电能.
<M>   Thermal Zone   (m)
; CPU温度过高时,ACPI调整工作状态以保护CPU,强烈推荐!(大部分的本本都支持)
< >   ASUS/Medion Laptop Extras    (n)
< >   IBM ThinkPad Laptop Extras   (n)
< >   Toshiba Laptop Extras        (n)
上述是对华硕,IBM,东芝笔记本的扩展支持.为什么木有DELL的呢!
(0)   Disable ACPI for systems before Jan 1st this year   (默认为0)
; 什么鸟东西,ACPI也存在千年虫问题?按默认的
[ ]   Debug Statements  (n)
; ACPI驱动的调试语句,会增加50K的内核大小,不要.
[ ]   Power Management Timer Support (n)
; 支持电源管理定时器.如果在内核log中看到"Losing too many ticks!",或使用笔记本却不支持HPET时选择.
< >   ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)  (n)
; 我靠,这强!支持CPU,内存的热插拔.不过我怕触电,不选.

APM (Advanced Power Management) BIOS Support  --->
<M> APM (Advanced Power Management) BIOS support  (m)
; 高级电源管理BIOS支持,一般是笔记本用(或使用电池的系统,不知道用UPS的算不算,应该不算).台式机不用选择.
[ ]  Ignore USER SUSPEND   (n)
; 不选择,否则会忽略用户的挂机请求.如果你不幸用了NEC的笔记本,必须选Y,因为有BUG.(抵制日货!)
[ ]  Enable PM at boot time  (n)
; 开机时允许PM,一般不用选择(可能在启动时宕机)
[ ]  Make CPU Idle calls when idle (n)
; CPU空闲时调用CPU idle进程.还是不选吧...可能在启动或空闲时宕机.
[ ]  Enable console blanking using APM  (n)
; 当Linux虚拟控制台关闭显示(黑屏)时,关闭LCD背光.都黑屏了,还关背光搞莫事撒.
[ ]  RTC stores time in GMT   (n)
; RTC: Real Time Clock. GMT: Greenwich Mean Time
  推荐将GMT时间存储到RTC中以,但如果装了别的不能够识别GMT的系统,不要选择.(比如windows)
[ ] Allow interrupts during APM BIOS calls    (n)
; 一般是不选择的,但如果挂起系统时出现了宕机,可将它选择试试. 调用BIOS是开中断是不良少年的行为!
[ ]   Use real mode APM BIOS call to power off  (n)
; 针对某些带bug的BIOS的补救措施:如果系统不能自己断电,选上它.

CPU Frequency scaling  --->
[*] CPU Frequency scaling
; 动态调节CPU频率以节电.有人提到频率降低,影响了处理速度,导致deadline问题.留意一下.
[ ] Enable CPUfreq debugging  
; 我是个懒人,所有调试的都不打开
<M>   CPU frequency translation statistics
; 通过sysfs文件系统输出CPU频率信息.
[*]     CPU frequency translation statistics details
; 显示上述的详细的CPU频率信息.
Default CPUFreq governor (userspace)  --->
; 默认选择动态调整CPU频率.
<M>   'performance' governor
; performance将CPU频率设定在支持的最高频率,而不动态调节.
<M>   'powersave' governor
; 将CPU频率设置为最低
<M>   'ondemand' cpufreq policy governor  
; 快速动态调整CPU频率, Pentuim M的CPU可以使用
<M>   'conservative' cpufreq governor
; 与ondemand不同,平滑地调整CPU频率,适合于用电池工作时.

 ---   CPUFreq processor drivers
< >   ACPI Processor P-States driver   
什么鸟玩意,不选

< >   AMD Mobile K6-2/K6-3 PowerNow!
< >   AMD Mobile Athlon/Duron PowerNow!
< >   AMD Opteron/Athlon64 PowerNow!
AMD的移动处理器省电技术
< >   Cyrix MediaGX/NatSemi Geode Suspend Modulation

<M>   Intel Enhanced SpeedStep  
; intel的SpeedStep技术.可以让处理器在2种工作模式之间随意地切换,即通电状态时的最高性能模式(Maximum Performance Mode)和电池状态时的电池优化模式Battery Optimized Mode
[*]     Use ACPI tables to decode valid frequency/voltage pairs  
[ ]     Built-in tables for Banias CPUs
; Banias CPU是什么鸟东西?如果选择了Speedstep,就选上Use ACPI tables.

< >   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
; 上述选项根据具体CPU,显卡类型选择.

Bus options (PCI, PCMCIA, EISA, MCA, ISA)  --->
; I/O总线选项,由Interl在1992年初制订. 现在一般的总线类型都是PCI. 使用PCI总线的系统于1993年中期出现,从此成为主流.
--- PCI support
PCI access mode (Any)  --->
; PCI访问模式,选Any
[*] PCI Express support
; 自动打开PCI快速总线支持,选上.
< > PCI Express Hotplug driver
PCI快速热拔插驱动,不选择.
[ ] Use polling mechanism for hot-plug events (for testing purpose)
; 对热拔插时间使用轮询,用于早期的实验系统,不选
[ ] Message Signaled Interrupts (MSI and MSI-X)
; 使用MSI(Message Signaled Interrupts),当中断产生时,使用inbound memory写PCI总线,而不断言设备的IRQ引脚.不选.
[ ] Legacy /proc/pci interface
; 使用/proc/pci提供系统中的PCI设备信息.实际上,使用lspci(8)能提供相同甚至更多的信息.发行版都装有lspci包.可不选.
[ ] PCI Debugging
; PCI调试,不选.

[*] ISA support
; ISA总线支持, 运行lspci | grep ISA, 若有, 则选上.
[ ] MCA support
; MCA(microChannel Archtecture)总线是IBM为解决快速微处理器和相对慢的ISA总线之间的差异而开发的一种总线结构,并被用于IBM的PS/2系统, 目前MCA总线主要用于IBM PS/2 计算机和一些笔记本中. 不选.
< > NatSemi SCx200 support
; 支持National Semiconductor的SCx200处理器的,不选.

PCCARD (PCMCIA/CardBus) support  --->
; 这些选项都是本本用的,台式机不选
<M> PCCard (PCMCIA/CardBus) support
; 笔记本选为module
[ ]  Enable PCCARD debugging
; PCMCIA的调试,不选.
<M>   16-bit PCMCIA support
; 16位PCMCIA支持,还是编译为模块吧, lspci -v | grep 16发现还是有16位的设备,不知道什么意思,还是谨慎为好.
[*]  Load CIS updates from userspace (EXPERIMENTAL)
; 有的PCMCIA卡需要这个功能,选上.
[*]  PCMCIA control ioctl (obsolete)
; 提供PCMCIA的ioctl接口.不懂什么意思,帮助文档建议选上.
[*] 32-bit CardBus support
; 早先的PCMCIA卡是16位的,这里允许使用32位的CardBus, 新的PC-card实际上是CarBus卡,选上.

---   PC-card bridges
<M>  CardBus yenta-compatible bridge support
<M>   Cirrus PD6729 compatible bridge support
<M>   i82092 compatible bridge support
; 对于什么鸟桥的支持?不懂,选为模块.

PCI Hotplug Support  --->
; 支持PCI的热拔插,怕触电,都不选

Executable file formats  --->
[*] Kernel support for ELF binaries
; 支持ELF可执行文件格式,一定要选上!
<M> Kernel support for a.out and ECOFF binaries
; .out的执行文件是比较古老的可执行码,用在比较早期的UNIX系统上. Linux最初也是使用这种码来执行程序,一直到ELF格式的可执行码出来后,有愈来俞多的程序码随着ELF格式的优点而变成了ELF的可执码.将来势必完全取代a.out格式的可执行码.目前还有一些.out格式的代码.选为模块.
<M> Kernel support for MISC binaries
; 支援別的种类的binary执行档(如:Java、Python ... etc).编译为模块.

Networking  --->
--- Networking support
 Networking options  --->
<M> Packet socket
; 类似于tcpdump的应用程序会绕过IP层直接访问网络设备(原始socket),选为模块.
[*] Packet socket: mmapped IO
; mmapped IO让传输加速,要开启MapleBBS內的MMIO也需要它,选上.
<M> Unix domain sockets
; syslogd、x-windows等都是用socket來传输,即便电脑没网络,选为模块.
<M> IPsec user configuration interface
; 支持IPsec用户设置接口,选为模块.
<M> PF_KEY sockets
; 于IPsec有关,编译为模块.
[*] TCP/IP networking
; 支持TCP/IP,当然要选上.
[ ] IP: multicasting
; 支持IP多播, 一般用于MBONE(因特网上的音频、视频多播).
[ ] IP: advanced router
; 用于路由器的选项,不选.
[ ] IP: kernel level autoconfiguration
; 内核启动时自动配置IP地址,之用于无盘系统,不选.
< > IP: tunneling
; IP隧道,在多个网络中移动不需改变IP地址,不用选.
< >  IP: GRE tunnels over IP
; GRE(Generic Routing Encapulation)隧道技术,允许在现有的IPv4架构上封包IPv6.不选吧.
[ ] IP: multicast routing
; 不做服务器,不用选择.
[ ] IP: ARP daemon support (EXPERIMENTAL)
; 将ARP缓存在内核中,不选.
[*] IP: TCP syncookie support (disabled per default)
; 防止SYN flooding攻击.如果选择,SYN cookies默认不会开启.
<M>  IP: AH transformation
<M>  IP: ESP transformation
<M>  IP: IPComp transformation
; 以上3个都是IPsec需要的,编为模块.
<M>  IP: tunnel transformation
; 支持通用IP隧道传输.编为模块.
<*>  INET: socket monitoring interface
; 支持socket监听接口,选上.
[ ]  TCP: advanced congestion control
; TCP高级拥塞控制,可不选择.

IP: Virtual Server Configuration  --->
Virtual Server Configuration中的选项设定都用M,按默认负载均衡集群是在应用服务器高负载的情况下,由多台节点提供可伸缩的,高负载的服务器组以保证对外提供良好的服务响应;而LVS就是实现这一功能的技术,它通过使内核支持ipvs来实现LVS/Direct Routing (DR)、LVS/IP Tunnel、LVS/NAT的功能.

< > IP virtual server support (EXPERIMENTAL)
; 集群或多台服务器用的,不选择,以后好好研究...虚拟服务器...

<M> The IPv6 protocol
; 支持IPv6,编译为模块. IPv6有空再看,现按照帮助说明的来,该选的选,该编为模块的编为模块.

...
后面的再慢慢看吧...按menuconfig中的帮助文档来,该不选的绝不选.

[ ]  Amateur Radio support  --->
; 无线电设备支持,不选.
< >   IrDA (infrared) subsystem support  --->
; 红外设备支持,不选.
< >   Bluetooth subsystem support  --->
; 蓝牙设备支持,不选.
<M>   Generic IEEE 802.11 Networking Stack
; 802.11网络栈支持,编译为模块.


Device Drivers  --->
Generic Driver Options  --->
[*] Select only drivers that don't need compile-time external firmware
; 只选择不需要compile-time 外部firmware,没搞懂,选上.
[*] Prevent firmware from being built
; 禁止编译firmware, firmware一般与硬件一起绑定,只在更新时才需要重新编译,选上.
<M> Hotplug firmware loading support
; 热插拔固件加载,没懂,编为模块.
[ ] Driver Core verbose debug messages
; 不选.

Connector - unified userspace <-> kernelspace linker  --->
 < > Connector - unified userspace <-> kernelspace linker
; 支持基于netlink socket协议的用户空间与内核空间的连接.

Memory Technology Devices (MTD)  --->
< > Memory Technology Device (MTD) support
; 支持MTD设备(flash, ram等芯片).一般用于嵌入式系统,不选

Parallel port support  --->
< > Parallel port support
; 并口支持.没有打印机,先不选.(选前两项,以防用到并口,比如LDD3中的例子)

Plug and Play support  --->
[*] Plug and Play support
; 支持既插既用设备, 选上.并选上该选项下面的一些协议支持, /proc接口不选.

Block devices  --->
< > Normal floppy disk support
; 软盘,没人用了, 不选.
< > XT hard disk support
; 石器时代的8位硬盘,不选.
< > Compaq SMART2 support
< > Compaq Smart Array 5xxx support
; compaq用的,不选.
<M> Loopback device support
; 大部分的人这一个选项都选N,因为没有必要。但是如果你要mount iso文件的话,你得选上Y。这个选项的意思是说,可以将一个文件挂成一个文件系统。如果要烧光盘片的,那么您很有可能在把一个文件烧进去之前,看看这个文件是否符合IS09660的文件系统的内容,是否符合您的需求。而且,可以对这个文件系统加以保护。不过,如果您想做到这点的话,您必须有最新的 mount程序,版本是在2.5X版以上的。而且如果您希望对这个文件系统加上保护,则您必须有des.1.tar.gz 这个程序。注意:此处与网络无关。建议编译成模块
< >   Cryptoloop Support
; 不用选
<M> Network block device support
; 使本机成为网络块设备的客户机.将主机的分区挂载到本地?...先编译成模块看.
< > Promise SATA SX8 support
; SATA接口的16位I/O CPU支持,不用选.
< > Low Performance USB Block driver
;  不选,否则可能与USB存储驱动冲突.
< > RAM disk support
; 把内存当作块设备使用,一般用于在最初安装Linux时从软盘向RAM中复制最小根文件系统.不选.

<M> Packet writing on CD/DVD media
; 支持刻录机的packet writing. ? 编为模块.
(8)   Free buffers for data gathering
; 设置刻录时同步的packet数.多的packet能增加刻录速度,但耗费更多内存.(一个约64K),默认为8.
[ ]   Enable write caching
; 写缓冲.不要选.如果刻录盘是坏的,系统不会处理延迟的写错误.

<M> ATA over Ethernet support  
; ATA什么意思?编为模块吧

ATA/ATAPI/MFM/RLL support  --->
<M> ATA/ATAPI/MFM/RLL support
; 支持ATA/ IDE/ATAPI设备,除非你的系统是纯SCSI的,否则一定要选上!
<M>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
; 如果有多个IDE设备,一定选上
[ ]     Support for SATA (deprecated; conflicts with libata SATA driver)
[ ]     Use old disk-only dri

声明: 本文由( 鲁智森也有文化 )原创编译,转载请保留链接: LINUX内核编译步骤详细介绍

LINUX内核编译步骤详细介绍:等您坐沙发呢!

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐