红联Linux门户
Linux帮助

Gentoo内核编译选项说明

发布时间:2014-11-28 15:50:02来源:linux网站作者:linux人

一、编译
现在的内核编译步骤真是简单极了
# make menuconfig
# make
# make modules_install
# make install
就这么两下,把以前繁杂的操作都包括了
# make modules
# make modules_install
# make install
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.14.3
# cp System.map /boot/System.map-2.6.14.3
# mkinitrd ……
# ln -s /boot/vmlinuz-2.6.14.3 /boot/vmlinuz
# ln -s /boot/System.map-2.6.14.3 /boot/System.map
#vim /boot/grub/menu.lst
上面这些都不用做了,真省事啊

主要就是make menuconfig这步了,这步说难也难,说不难也不难,总之呢就是按需配置
呵呵,按需配置,这下可没人能帮你了,得自己看着办了


二、可能出现的问题:

1、如果出现这样的错误进不去:Enforcing mode requested but no policy loaded
那是因为你原来系统启用了selinux的enforcing模式,你需要回到原来的系统关闭selinux就可以了,如果不需要selinux,那干脆编内核的时候就去掉。

2、启动错误提示:VFS:Unable to mount root fs on unknown-block(0,0)
请确保以下两项被编进内核
Device Drivers ---> Block devices --->
<*> RAM disk support
[*] Initial RAM disk (initrd) support
3、启动错误提示:
mkrootdev:lable /1 not found
mount:error 2 mounting ext3
mount:error 2 mounting none
switchroot:mount failed:22
Umount /initrd/dev failed:2
需要以下驱动支持:
Device Drivers ---> ATA/ATAPI/MFM/RLL support ---> [*]     PCI IDE chipset support

……有问题的话再加


三、关于一些编译选项

1、如果是自己用的桌面系统,别忘了打开内核抢占
Processor type and features ---> Preemption Model (Preemptible Kernel (Low-Latency Desktop)) --->
说明:抢占模式:
No Forced Preemption (Server),这种模式等同于没有使能抢占选项的标准内核,主要适用于科学计算等服务器环境。

Voluntary Kernel Preemption (Desktop),这种模式使能了自愿抢占,但仍然失效抢占内核选项,它通过增加抢占点缩减了抢占延迟,因此适用于一些需要较好的响应性的环境,如桌面环境,当然这种好的响应性是以牺牲一些吞吐率为代价的。

Preemptible Kernel (Low-Latency Desktop),这种模式既包含了自愿抢占,又使能了可抢占内核选项,因此有很好的响应延迟,实际上在一定程度上已经达到了软实时性。它主要适用于桌面和一些嵌入式系统,但是吞吐率比模式2更低。

Complete Preemption (Real-Time),这种模式使能了所有实时功能,因此完全能够满足软实时需求,它适用于延迟要求为100微秒或稍低的实时系统。

实现实时是以牺牲系统的吞吐率为代价的,因此实时性越好,系统吞吐率就越低。
2、支持4G内存,我的没有这么多,你的呢
Processor type and features ---> High Memory Support (off)


四、下面是部分选项说明,可以参考下 < > ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)

APM (Advanced Power Management) BIOS Support --->
高级电源管理的支持,一般来说笔记本应该选上,台式机可以不选。

CPU Frequency scaling --->
这一选项允许改变CPU的主频,使CPU在低负荷或使用电池时降低主频,达到省电的目的。

Bus options (PCI, PCMCIA, EISA, MCA, ISA) --->

--- PCI support
PCI总线支持

PCI access mode (Any) --->
强列建议选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。

[ ] PCI Express support
PCI-E总线支持

[*] Legacy /proc/pci interface

[ ] PCI Debugging

[ ] ISA support
ISA总线,没有用就不要

[ ] MCA support

< > NatSemi SCx200 support

PCCARD (PCMCIA/CardBus) support --->
一般只有笔记本电脑上才会有PCMCIA插槽,如果你是台式机的话,可以不选这一项,然后跳过这一部份。

PCI Hotplug Support --->
一般来讲只有服务器上会有热插拔的设备,如果你使用的是台式机,你可以不选择此项并跳过这一部份。

Executable file formats --->
可执行文件格式

[*] Kernel support for ELF binaries
ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台

< > Kernel support for a.out and ECOFF binaries

<*> Kernel support for MISC binaries
此选项允许插入二进制的封装层到内核中,当使用Java、.NET、Python、Lisp等语言编写的程序时非常有用

Networking --->
[*] Networking support

Networking options --->
需要什么协议、功能的自己选吧

[ ] Amateur Radio support --->
业余电台

< > IrDA (infrared) subsystem support --->
红外接口

< > Bluetooth subsystem support --->
蓝牙

< > Generic IEEE 802.11 Networking Stack

Device Drivers --->
驱动

Generic Driver Options --->
Connector - unified userspace <-> kernelspace linker --->
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
[ ] SCSI tape drive support for Smart Array 5xxx
< > 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
< > Low Performance USB Block driver
<*> RAM disk support
(16) Default number of RAM disks
(16384) Default RAM disk size (kbytes)
[*] Initial RAM disk (initrd) support
[*] Support for Large Block Devices
< > Packet writing on CD/DVD media
IO Schedulers --->
< > Anticipatory I/O scheduler
< > Deadline I/O scheduler
< > CFQ I/O scheduler
< > ATA over Ethernet support

ATA/ATAPI/MFM/RLL support --->
<*> ATA/ATAPI/MFM/RLL support
<*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
---     Please see Documentation/ide.txt for help/info on IDE drives
[ ]     Support for SATA (deprecated; conflicts with libata SATA driver)
[ ]     Use old disk-only driver on primary interface
<M>     Include IDE/ATA-2 DISK support
[*]     Use multi-mode by default
<M>     Include IDE/ATAPI CDROM support
< >     Include IDE/ATAPI TAPE support (EXPERIMENTAL)
< >     Include IDE/ATAPI FLOPPY support
<M>     SCSI emulation support
[ ]     IDE Taskfile Access
---     IDE chipset support/bugfixes
<*>     generic/default IDE chipset support    //使用IDE设备的这项要打*
[ ]     CMD640 chipset bugfix/support
[ ]     PNP EIDE support
[*]     PCI IDE chipset support
[*]       Sharing PCI IDE interrupts support
[ ]       Boot off-board chipsets first support
<M>       Generic PCI IDE Chipset Support
< >       OPTi 82C621 chipset enhanced support (EXPERIMENTAL)
< >       RZ1000 chipset bugfix/support
[*]       Generic PCI bus-master DMA support
[ ]         Force enable legacy 2.0.X HOSTS to use DMA
[*]         Use PCI DMA by default when available
[ ]           Enable DMA only for disks
< >         AEC62XX chipset support
< >         ALI M15x3 chipset support
< >         AMD and nVidia IDE support
< >         ATI IXP chipset IDE support
< >         CMD64{3|6|8|9} chipset support
< >         Compaq Triflex IDE support
< >         CY82C693 chipset support
< >         Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTAL)
< >         Cyrix/National Semiconductor CS5530 MediaGX chipset support
< >         HPT34X chipset support
< >         HPT36X/37X chipset support
< >         National SCx200 chipset support
< >         Intel PIIXn chipsets support
< >         IT821X IDE support
< >         NS87415 chipset support
< >         PROMISE PDC202{46|62|65|67} support
< >         PROMISE PDC202{68|69|70|71|75|76|77} support
< >         ServerWorks OSB4/CSB5/CSB6 chipsets support
< >         Silicon Image chipset support
< >         SiS5513 chipset support
< >         SLC90E66 chipset support
< >         Tekram TRM290 chipset support
< >         VIA82CXXX chipset support
[ ]     IGNORE word93 Validation BITS

SCSI device support --->
Multi-device support (RAID and LVM) --->
Fusion MPT device support --->
IEEE 1394 (FireWire) support --->
I2O device support --->
Network device support --->
ISDN subsystem --->
Telephony Support --->
Input device support --->
Character devices --->
I2C support --->
Dallas's 1-wire bus --->
Hardware Monitoring support --->
Misc devices --->
Multimedia Capabilities Port drivers --->
Multimedia devices --->
Graphics support --->
Sound --->
USB support --->
MMC/SD Card support --->
InfiniBand support --->
SN Devices --->

File systems --->

Profiling support --->

Kernel hacking --->

Security options --->

Cryptographic options --->

Library routines --->

Code maturity level options (代码成熟度选项)

[*] Prompt for development and/or incomplete code/drivers
默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.你应该选择它,因为有许多设备可能必需选择这个选项才能进行配置,实际上它是安全的。

[*] Select only drivers expected to compile cleanly
选择这个选项你将不会看到一些已知的存在问题的驱动程序选项,默认的情况下也是选择的。如果你有设备没有找到驱动选项,你可以将这一项去掉,或许就可以找到相关驱动了,不过它可能是有BUG的。

General setup (常规设置)

[*] Support for paging of anonymous memory
这个选项将使你的内核支持虚拟内存,也就是让你的计算机好象拥有比实际内存更多 多的内存空间用来执行很大的程序。默认是选择的。

[*] System V IPC
为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。如果不选这项,很多程序运行不起来。

[*] POSIX Message Queues
这是POSIX的消息队列,它同样是一种IPC。建议你最好将它选上

[ ] BSD Process Accounting
这里选择Y将会让内核为用户层的进程建立一个帐目(进程通过一个特殊的系统调用来通知内核),当程序退出时内核会将进程的相关信息记录到帐目文件中,主要包括进程的创建时间、 创建者,内存占用等信息。如果你需要就Y吧:)

[*] Sysctl support
这个选项能不重新编译内核修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核的参数或变量。建议你最好将它选上。打开这个选项将会增加内核的体积至少8KB,如果你的内核仅用制作安装与恢复系统系统盘那么可以不选,以减少对内存的占用。

[*] Auditing support
审记支持,用于和内核的某些子模块同时工作,例如SELinux。只有选择此项及它的子项,才能调用有关审记的系统调用
[*] Enable system-call auditing support

--- Support for hot-pluggable devices
支持热插拔的,最好选择

[*] Kernel Userspace Events
内核中分为系统区和用户区,这里系统区和用户区进行通讯的一种方式,选上。

[ ] Kernel .config support
这将会把内核的配置信息与相关的文档说明编译进内核中,以后可以使用一些工具来提取它用来重新构建内核,一般不用选它。

() Initramfs source file(s)

[ ] Configure standard kernel features (for small systems) --->
这是为了编译某些特殊的内核使用的,通常你可以不选择这一选项,你也不用对它下面的子项操心了。

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
一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你 选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块,这是个很棒的特性,当然要选Y喽:)

Processor type and features

Subarchitecture Type (PC-compatible)
主要的目的是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构(pc/at)。这个选项可以让你选择一些其它架构。我们一般选择PC-compatible就可以了。

Processor family (Pentium-4/Celeron(P4-based)/Xeon)
这个不用我讲了吧,你是什么CPU就选什么吧:)

[ ] Generic x86 support
这个选项提供了对X86系列CPU最大的兼容性,用来支持一些很少见的x86体系的CPU,它可能会降低一些系统性能。所以如果你的CPU能够在上面的列表中找到就不要选这个吧。

[ ] HPET Timer Support
这也是一个新的特性,HPET是intel制定的新的用以代替传统的8254(PIT)中断定时器与RTC的定时器,全称叫作高精度事件定时器。如果 你有一台较新的机器就选它吧,一般它是一个安全的选项,即使你的硬件不支持HPET也不会造成问题,因为它会自动用8254替换。

[ ] Symmetric multi-processing support
这个也不用多讲了吧,如果你使用多处理器系统就选吧,如果你和我一样使用一个单CPU系统还是把它请出去吧。

( Maximum number of CPUs (2-255)
这里用来配置让Linux最多支持几路CPU,根据你的需要选择。

Preemption Model (Preemptible Kernel (Low-Latency Desktop))
这可是个新特性,几乎所有介绍2.6的文章都会提到,这就是可抢先式内核。也就是说被一些优先级很高的程序可以先与一些低优先级的程序执行,即使这些 程序是在核心态下执行(这实际上仍然不是真正的抢先式内核)。从而减少内核潜伏期,提高系统的响应。当然在一些特殊的点的内核是不可抢先的,比如内核中的 调度程序自身在执行时就是不可被抢先的。这个特性可以提高桌面系统、实时系统的性能,所以还是选上吧。

[*] Preempt The Big Kernel Lock

[ ] Machine Check Exception
如果你的系统出现一些问题比如CPU过热,内核将会在屏幕上打印相关信息来提醒你。这个功能是需要硬件支持的。你可以查看/proc/cpuinfo 看看是否有mce标志,有的话就选吧。如果你十分十分的不幸,选了它之后出现问题,可以在启动时加nomce参数来关闭它。

[ ] Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4
打开这个选项将会检查你机器上可能存在的问题,如果有一个非致命错误出现将会自动的修复并且记录,这可以帮助你查出程序出现问题的原因,是一个不错的 选项,当然它只能用在AMD Athlon/Duron / Intel Pentium 4这类CPU上。如果你正好在用它们中的一个你就选吧。
[ ] Local APIC support on uniprocessors

< > Toshiba Laptop support
这个选项是针对Toshiba笔记本的,可以用来访问Toshiba的系统管理模式,也就是可以直接设置BIOS。不过要注意它只在Toshiba自 己的 BIOS中起作用。假如你有一台Toshiba笔记本,可惜它的BIOS是Phoenix的,那这个选项仍然是梁山军师----无用:)

< > Dell laptop support
这个同上面的选项基本相同,自己看着办吧:)

< > /dev/cpu/microcode - Intel IA32 CPU microcode support
这个选项将让你可以更新Intel IA32系列处理器的微代码,当然你还必须在文件系统选项中选择devfs才能正常的使用它。如果你把它译为模块你还需要在modprobe.conf中 加上这一行alias char-major-10-184 microcode
内核本身并不带有微代码的二进制文件,你可以到这个网址去得到新的信息

< > /dev/cpu/*/msr - Model-specific register support
这个选项桌面用户一般用不到,它主要用在Intel的嵌入式CPU中的,这个寄存器的作用也依赖与不同的CPU类型而有所不同,一般可以用来改变一些CPU原有物理结构的用途,但不同的CPU用途差别也很大。

< > /dev/cpu/*/cpuid - CPU information support
这会在/dev/cpu中建立一系列的设备文件,用以让过程去访问指定的CPU。一般不用选。

Firmware Drivers --->

< > BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)
这将可以打开实模式下BIOS中的增强磁盘设备服务,以决定从哪个磁盘上启动。这一般是安全的,不过大多数BIOS提供商都没有实现这个特性。

< > BIOS update support for DELL systems via sysfs

< > Dell Systems Management Base Driver

High Memory Support (off)
如果你有大容量的内存(超过4G)你要选它,以使内核可以使用这部分内存。偶是没这命啦这部分永远为OFF,如果你有你就ON吧。

[ ] Math emulation
在你的CPU上如果没有数学协处理器的话,打开这个选项可以让内核模拟一个,以提升浮点计算能力,不过慢的可以。如果你使用的不是古董CPU的话(486SX以前的)这一项你永远都不需要。

[*] MTRR (Memory Type Range Register)support
在Intel p6家族的处理器中(Ppro、 PII和更新的)有一个内存类型范围寄存器,可用来控制处理器访问的内存范围。打开它一般可以提升显卡的显示性能,所以我们当然要在这说Y喽:)

[ ] Boot from EFI support (EXPERIMENTAL)

[ ] Use register arguments (EXPERIMENTAL)

[ ] Enable seccomp to safely compute untrusted bytecode

Timer frequency (100 HZ) --->

[ ] kexec system call (EXPERIMENTAL)

Power management options (ACPI, APM)(高级电源管理)

--- Power Management support
让Linux支持高级电源管理(也就是平常我们说的软关机、系统休眠等)。

[ ] Power Management Debug Support

[ ] Software Suspend
选择这个选项你可以挂起你的计算机(有点象XP中的休眠),打开这项功能后,你可以使用swsusp或者shutdown -z 来挂起你的计算机。这样系统会将你当前正在进行的工作(也就是当前内存中的内容)作成一个镜象保存到你的交换分区中,在你下一次启动时使用启动参数 “resume=/dev/你的交换分区”,内核就会将上一次的工作内核从镜象文件中恢复到内存,这可以大大提高系统的启动速度。当你不想恢复上次的工作 时向内核传递参数“noresume"。不过系统启动后你的交换分区将不可以使用,你可以使用mkswap命令来重新格式化你的交换分区。这个功能不需要 高级电源管理的支持。很不错的功能,我一直有用,大家也来试试吧:)

ACPI (Advanced Configuration and Power Interface) Support --->
从这里进入ACPI电源管理的配置界面,要注意ACPI与APM不能同时使用,如果你同时配置了这两者,那么在系统启动时如果发现一个可工作的ACPI设备那么APM将被关闭,ACPI会被加载:

[*] ACPI Support
让你的系统使用ACPI来管理你的电源就要选上它,另外要想让它起作用,你还要在系统中安装acpid守护程序。

[ ] Sleep States
选择这个选项可以使你的系统具有挂起的功能,也就是说你可以暂时中断你的工作,让你的系统处与一种低电能消耗的状态(sleep state),你此时的系统状态会保存在内存或者磁盘上(取决于挂起的深度),当你需要时再恢复到正常的工作状态。但由于各种系统之间的差别,目前这项功 能并不完善。只有很少的设备可以完美的支持这个特性,所以不建议一般用户使用它。

< > AC Adapter
这是用来支持移动系统中的交流适配器的,以指示当前系统是不是在使用交流电,对于台式机不需要这个选项。

< > Battery
这个选项用于通过/proc/acpi/battery来向用户提供移动系统中的电池状态信息。同上面那个选项一样对台式机没有作用。

Button
这个选项用于注册基于电源按钮的事件,比如power, sleep等,当你按下按钮时事件将发生,一个守护程序将读取/proc/acpi/event,并执行用户在这些事件上定义的动作比如让系统关机。

< > Video

< > Generic Hotkey (EXPERIMENTAL)

< > Fan
这个选项提供对系统风扇的控制支持,可以通过用户层的程序来对系统风扇进行控制(比如打开,关闭,读取当前风扇的运行状态等,不过只有极少数的硬件支持它)。

< > Processor
打开这个选项将让你的系统具有处理IDIE状态的能力,也就是说可以让你的处理器在空闲时节省电能。个人认为这个选项是一定要选的。

< > ASUS/Medion Laptop Extras
这主要是为ASUS生产的笔记本电脑准备的,以提供对这些系统上那些额外的按钮们的支持,用户可以通过它们来打开或者关闭LCD的背光,调整亮度、定制LED的闪烁指示等功能。用户可以通过/proc/acpi/asus来改变这些设置。

< > IBM ThinkPad Laptop Extras

< > Toshiba Laptop Extras
这个选项是对Toshiba笔记本提供特别支持的,它的作用同上面的选项基本相同,如果你有一台这样的本本的话就选它吧。

(2001) Disable ACPI for systems before Jan 1st this year

[ ] Debug Statements
如果选择它当ACPI出现错误时会打印出详细的信息,这将会增加内核的体积大约50k,如果没有必要还是不要选它吧。
[ ] Power Management Timer Support