Debian内核编译参考(基于2.6.15-6)

  • Post author:
  • Post category:其他


声明:本文参考自puNk!d的内核编译指南.网址:http://www.cublog.cn/u/14381/showart.php?id=79052

本文基于目前最新内核2.6.15-6目的是减少新手在内核编译方面碰到的困难,不过本人也是半桶水而已。如有错误的地方,请大家指正:)

一、准备:

1、可以www.kernel.org下载到最新的内核。

2、解压下载来的内核文件:tar xjvf linux-2.6.15.6 解压完成后,拷贝到/usr/src目录下

二、编译内核:

1、进入内核文件目录,执行make menuconfig 进入 Linux Kernel Configuration界面

如果原来编译不成功过,先执行make mrproper进行清理再执行make menuconfig

2、第一项:Code naturity level options

[*] Prompt for development and/or incomplete code/drivers

#推荐选上,这样可以显示还在开发或者还没有完成的代码与驱动.因为有许多设备可能必需选择这个选项才能进行配置,实际上它是安全的。

[*] Select only drivers expected to compile cleanly

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

3、第二项:General setup

( ) Local version – append to kernel release

・[*]Automatically append version information to the version string

#自动追加附加版本到版本信息中。上面这两个都与核心的附加版本有关,例如FC4的核心版本为2.6.14-1.1637_FC4,后面那个1.1637_FC4就是那个附加版本啦!

[*] Support for paging of anonymous memory (swap)

#使你的内核支持虚拟内存

[*] System V IPC

#为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。

[*] POSIX Message Queues

#POSIX标准的消息队列

[ ] BSD Process Accounting

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

[ ] BSD Process Accounting version 3 file format

#将进程信息写入一种新日志格式,并且将会不兼容以前的v0/v1/v2日志格式。不过既然是新的格式,必然有它的优势,还是选上吧。

[*] Sysctl support

#这将提供一个接口让你可以动态的更改一些核心参数与变量,而不需要重新启动系统。打开这个选项将会增加内核的体积至少8KB。如果你的内核仅用制作安装与恢复系统系统盘那么可以不选,以减少对内存的占用。

[ ] Auditing support

#SElinux需要这个,而且依赖于system-call auditing support

[ ] Enable system-call auditing support

#同样是SElinux依赖于它

— Support for hot-pluggable devices

[*] Kernel Userspace Events

#让核心能够听使用者的动作,举例来说,USB装置的连接与否等等

[ ] Kernel .config support

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

()  Initramfs source file(s)

#不确定的话就别管它

[*] Optimize for size (Look out for broken compilers!)

#这个选项会以“-02”代替“-0s”,将会使内核尺寸变小,但可能会导致一些未知的问题

[ ] Configure standard kernel features (for small systems) —>

#用于优化,精简内核的,不过最好还是别用,毕竟我们不完全懂内核

4、第三项: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命令来加载需要的模块,推荐选上

5、第四项: Block layer

[ ] Support for Large Block Devices

支持大的块设备,大于2TB,自己看情况决定

IO Schedulers –>IO调度器,都选上吧可以在grub.conf指定用IO调度哪种方式

<*> Anticipatory I/O scheduler

<*> Deadline I/O scheduler

<*> CFQ I/O scheduler

Default I/O scheduler (Anticipatory)  —> 设定默认的IO调度器

2.6包含的四个I/O调度器分别是No-opI/Oscheduler、AnticipatoryI/Oscheduler、DeadlineI/Oscheduler与CFQI/Oscheduler。在后文中分别简称为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下听音乐看电影的朋友不妨尝试一下。

6、第五项:Processor type and features

Subarchitecture Type (PC-compatible) —>

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

(×) PC-compatible

( ) AMD Elan

( ) Voyager (NCR)

( ) NUMAQ (IBM/Sequent)

( ) SGI 320/540 (Visual Workstation)

Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon)

[ ] Generic x86 support

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

[*] HPET Timer Support

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

[ ] Symmetric multi-processing support

#如果你使用多处理器系统或含超线程技术的CPU就选吧

Preemption Model (Preemptible Kernel (Low-Latency Desktop)) —> 系统可抢占性的选项

有三项:

( ) No Forced Preemption (Server)                            #适用于服务器

(X) Voluntary Kernel Preemption (Desktop)            #适用于桌面系统

( ) Preemptible Kernel (Low-Latency Desktop)      #适用于移动系统

[*] Local APIC support on uniprocessors

[*] IO-APIC support on uniprocessors

#单CPU的环境中,这两个项目可以选择,让CPU具有Advanced Programmable Interrupt Controller 的功能

[ ] Machine Check Exception

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

< > Toshiba Laptop support

#针对Toshiba笔记本的,用来直接设置BIOS,不过只能对Toshiba自己的BIOS起作用,所以即使是Toshiba的笔记本而BIOS不是 Toshiba的还是无用,绝大多数可以不用选。

< > Dell laptop support

#同上,一般不要选

[ ] Enable X86 board specific fixups for reboot

#用来重启是自动修复的,这个功能还不是完善,可以不要选,选了也不会什么问题

<M> /dev/cpu/microcode – Intel IA32 CPU microcode support

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

< > Dell Systems Management Base Driver (NEW)

#这两项是针对Dell系统的,一般不选

High Memory Support (off) —>

#内存超过4G的就选上

Memory model (Flat Memory) —>

[ ] Math emulation

#如果你使用的CPU的是486SX以前的话,那才用的着

[*] MTRR (Memory Type Range Register) support

#这个选项是可以让CPU具有读取内存特殊区域的能力,尤其在高性能的AGP与相关的PCI/AGP进行资料传输时,可以增进不少性能。选择它后,会产生/proc/mtrr文件

[ ] Boot from EFI support (EXPERIMENTAL)

#EFI引导的支持 ,EFI是IA64(Itanium安腾)上的类似PC机BIOS的东西,但功能更强大.

[ ] Use register arguments (EXPERIMENTAL)

#要安装N卡驱动的就别选这个

[*] Enable seccomp to safely compute untrusted bytecode

#这个项目通常要加,不过如果是嵌入式系统的话,可以不加

Timer frequency (250 HZ) —>

#这个项目是与核心针对某个事件立即回应的速度有关,一般来说 ,如果是一般桌上电脑,那么反应时间调整得快速一点,因为不会有其它事件。一般250就很好了

[ ] kexec system call (EXPERIMENTAL) (NEW)

#这是个新的功能,可以使你不必重启而切换到另一个内核中,不过还是个实验品,没特别需要还是别选吧

7、第六项:Power management options (ACPI, APM)

[*]  Legacy Power Management  API

#如果你想让你的Linux支持高级电源管理(也就是平常我们说的软关机、系统休眠等)需要选择它。

[ ] Power Management Debug Support

#bug报告支持,不用选

[ ] 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),不过目前该功能还不完善,可以不要选上。

[ ] /proc/acpi/sleep (deprecated) (NEW)

#既然都说了不赞成使用,那就别选了

< > AC Adapter

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

< > Battery

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

<*> Button

#这个选项用于注册基于电源按钮的事件,比如power, sleep等,当你按下按钮时事件将发生



版权声明:本文为sambian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。