linux 配置内核 linux系统有哪些版本

很多朋友对于linux 配置内核和linux系统有哪些版本不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

如何配置linux内核

在做Virtualization这段时间,编译过多次Linux kernel,编译Kernel过程中配置config这一步是相对来说比较复杂的。对编译内核过程中的配置这一步做详细的说明吧,总结一下,多数内容源于网上的多篇文章。

首发在我的博客:

首先,配置时可能出现的选项,对其选择先来个说明吧。

Typically, your choices for each option are shown in the format [Y/m/n/?] The capitalized letter is the default, and can be selected by just pressing the Enter key. The four choices are:

y Build directly into the kernel.

n Leave entirely out of the kernel.

m Build as a module, to be loaded if needed.

? Print a brief descriptive message and repeat the prompt.

y表示是(相应功能将直接编译进内核),m表示模块(相应功能将编译为一个模块,在需要时加载),以及n表示否(相应功能不会包含进内核)。?则(对该配置项)打印出简要的描述信息并重复刚才的选择提示。

其次,我使用的最多的两个配置命令分别是:make muneconfig和make oldconfig

make oldconfig和make config类似,但是它的作用是在现有的内核设置文件基础上建立一个新的设置文件,只会向用户提供有关新内核特性的问题,在新内核升级的过程中,make oldconfig非常有用,用户将现有的配置文件.config复制到新内核的源码中,执行make oldconfig,此时,用户只需要回答那些针对新增特性的问题。

make menuconfig基于终端的一种配置方式,提供了文本模式的图形用户界面,用户可以通过光标移动来浏览所支持的各种特性。使用这用配置方式时,系统中必须安装有ncurese库。

在内核树的根目录中,有一个.config文件,它记录了内核的配置选项,可直接对它进行修改,再运行。在.config文件中,每个配置和选项的值只能为”y”和”m”两者之一,如果不需要这个特性不再支持她,那么可以将对应的选项用”#”注释掉。实际上,如果你手头有合适的.config文件,可以运行make oldconfig直接按.config的内容来配置$ sudo make oldconfig

对内核的配置都是围绕.config来展开的.即便开始.config文件不存在,进行配置后会创造它.

一般来说,内核配置保存于/usr/src/linux-*/.config文件中。在/boot/config-<版本>有其备份。请保留它以备后用。

常见的几种配置方式:

为了完成内核的配置,必须切换到root用户,然后转入内核源码目录(就是你下载新内核的目录):

#cd/usr/src/linux/linux-2.6.38

然后执行下面命令之一:

#make config

#make oldconfig

#make menuconfig

#make gconfig

#make defconfig

#make allyesconfig

#make allmodconfig

1.make config

基于文本的最为传统的也是最为枯草的一种配置方式,但是它可以使用任何情况,这种方式会为每一个内核支持的特性向用户提问,如果用户回答“y”,则把特性编译进内核;回答“m”,则它特性作为模块进行编译;回答“n”,则表示不对该特性提供支持

如果回答每个问题前,必须考虑清楚,如果在配置过程中犯了错误给了错误的回答,就只能按“ctcl+c”强行退出了

2.make oldconfig

make oldconfig和make config类似,但是它的作用是在现有的内核设置文件基础上建立一个新的设置文件,只会向用户提供有关新内核特性的问题,在新内核升级的过程中,make oldconfig非常有用,用户将现有的配置文件.config复制到新内核的源码中,执行make oldconfig,此时,用户只需要回答那些针对新增特性的问题

make silentoldconfig: Like above, but avoids cluttering the screen with questions already answered.和上面oldconfig一样,但在屏幕上不再出现已在.config中配置好的选项。

3.make menuconfig

基于终端的一种配置方式,提供了文本模式的图形用户界面,用户可以通过光标移动来浏览所支持的各种特性。使用这用配置方式时,系统中必须安装有ncurese库,否则会显示“Unable to find the Ncurses libraies”的错误提示

4.make xoncifg

基于X Winodws的一种配置方式,提供了漂亮的配置窗口,不过只有能够在X Server上使用root用户欲行X应用程序时,才能够使用,它依赖于QT,如果系统中没有安装QT库,则会出现“Unable to find the QT installation”的错误提示

5.make gconfig

与make xocnifg类似,不同的是make gconfig依赖于GTK库

6.make defconfig

按照默认的配置文件arch/i386/defconfig对内核进行配置,生成.config可以用作初始化配置,然后再使用make menuconfig进行定制化配置

7.make allyesconfig

尽量多地使用“y”设置内核选项值,生成的配置中包含了全部的内核特性

make allnoconfig:除必须的选项外,其它选项一律不选.(常用于嵌入式系统).

8.make allmodconfig

尽可能多的使用“m”设置内核选项值来生成配置文件

下载好Linux内核源代码后,在源代码的根目录执行

make localyesconfig或者make localmodconfig

然后系统就会根据你的硬件自动生成一个适应你的硬件的.config(内核的配置文件)

make localmodconfig会执行lsmod命令查看当前系统中加载了哪些模块(Modules),并最后将原来的.config中不需要的模块去掉,仅保留前面lsmod出来的这些模块,从而简化了内核的配置过程。

这样做确实方便了很多,但是也有个缺点:该方法仅能使编译出的内核支持当前内核已经加载的模块。因为该方法使用的是lsmod的结果,如果有的模块当前没有加载,那么就不会编到新的内核中。

There’s an additional“make localyesconfig” target, in case you don’t want to use modules and/or initrds.

几条好的建议:

除非您使用初始化ramdisk(initrd),否则绝不要把挂载根文件系统必需的驱动程序(硬件驱动以及文件系统驱动)编译成模块!而如果您确实使用初始化ramdisk,请为ext2FS支持选项选择Y,因为ramdisk使用该文件系统。您还需要initrd支持。

如果您系统中有网卡,将它们的驱动编译成模块。这样,您就能够在/etc/modules.conf中用别名定义哪一块网卡第一,哪一块第二,等等。如果您将驱动程序编译进了内核,它们加载的顺序将取决于当初它们链接进内核的顺序,而这不一定是您想要的。

最后,如果您不清楚某个选项的含义,请阅读其帮助!而如果该帮助信息依然不能解决您的困惑,请保留该选项原来的样子。(在config和oldconfig中可以按?键访问帮助。)

配置最终结束后,请保存您的配置并退出。

参考资料:

编译 Linux2.6内核总结:

编译内核:

内核_.config内核配置及Makefile:

Linux内核配置选项

第一部分

01、Code maturity level options---代码成熟等级选项

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

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

第二部分

02、General setup---常规安装选项

02.01、() Local version- append to kernel release

02.02、

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

02.03、

System V IPC(IPC:Inter Process Communication)是组系统调用及函数库,它能让程序彼此间同步进行交换信息。某些程序以及DOS模拟环境都需要它。为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。

02.04、

BSD Process Accounting一般用户所执行的程序,可通知内核将程序统计数据写成文件,详细记录相关信息。

02.05、[ ] BSD Process Accounting version 3 file format

02.06、

Sysctl support此项功能可在不重新编译内核或是重新开机的前提下,动态变更某些特定的内核参数和变量,赋予内核较大的弹性。除非内存太少或是编译出来的内核是给安装、救援磁盘所使用,否则这个选项一定要选上。这将提供一个接口让你可以动态的更改一些核心参数与变量,而不需要重新启动系统。打开这个选项将会增加内核的体积至少8KB。如果你的内核仅用制作安装与恢复系统系统盘那么可以不选,以减少对内存的占用。

02.07、

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

02.08、

Enable system-call auditing support

--- Support for hot-pluggable devices是否支持热插拔的选项,肯定要选上。不然USB、PCMCIA等这些设备都用不了。

02.09、

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

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

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

第三部分

03、Loadable module support---可引导模块支持建议作为模块加入内核

03.01、

Enable loadable module support这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统。

03.02、

Module unloading这个选项可以让你卸载不再使用的模块,如果不选的话你将不能卸载任何模块(有些模块一旦加载就不能卸载,不管是否选择了这个选项)。不选择这个选项会让你的内核体积减小一点。

03.03、 [ ] Source checksum for all modules这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突。我估计现在没有哪家公司在开发中还没使用版本控制工具,所以不需要这项了。如果你不是自己写内核模块,那就更不需要这一选项了。

03.04、

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

第四部分

04、Processor type and features---处理器类型

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

04.01.01、(X) PC-compatible就在这里选PC模式。

04.01.02、() AMD Elan

04.01.03、() Voyager(NCR)

04.01.04、() NUMAQ(IBM/Sequent)

04.01.05、() SGI 320/540(Visual Workstation)

04.02、Processor family(Pentium-Pro)--- CPU选项这里针对自己的CPU型号,选取相应的选项。

04.02.01、() 386

04.02.02、() 486

04.02.03、() 586/K5/5x86/6x86/6x86MX

04.02.04、() Pentium-Classic

04.02.05、() Pentium-MMX

04.02.06、() Pentium-Pro

04.02.07、() Pentium-II/Celeron(pre-Coppermine)

04.02.07、() Pentium-III/Celeron(Coppermine)/Pentium-III Xeon

04.02.08、() Pentium M

04.02.09、() Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon

04.02.10、() K6/K6-II/K6-III

04.02.11、(x) Athlon/Duron/K7我使用的CPU是Athlon XP2000+,所以选上这项。

04.02.12、() Opteron/Athlon64/Hammer/K8

04.02.13、() Crusoe

04.02.14、() Efficeon

04.02.15、() Winchip-C6

04.02.16、() Winchip-2

04.02.17、() Winchip-2A/Winchip-3

04.02.18、() GeodeGX1

04.02.19、() CyrixIII/VIA-C3

04.02.20、() VIA C3-2(Nehemiah)

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

04.04、

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

04.05、[ ] Provide RTC interrupt There is no help available for this kernel option.

04.06、[ ] Symmetric multi-processing support支持多处理器选项。如果只使用单CPU,那么得关闭。

04.07、

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

04.08、[ ] Local APIC support on uniprocessors

04.09、

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

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

04.11、 Toshiba Laptop support东芝笔记本支持。这个选项是针对Toshiba笔记本的,可以用来访问Toshiba的系统管理模式,也就是可以直接设置BIOS。不过要注意它只在 Toshiba自己的 BIOS中起作用。假如你有一台Toshiba笔记本,可惜它的BIOS是Phoenix的,那这个选项仍然是无用的。台式机就关闭!

04.12、 Dell laptop support DELL笔记本支持。功能如上面,台式机就关闭!

04.13、[ ] Enable X86 board specific fixups for reboot

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

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

04.16、/dev/cpu/*/cpuid- CPU information support是否打开记录Petium CPU相关信息功能?这会在/dev/cpu中建立一系列的设备文件,用以让过程去访问指定的CPU。一般不用选。

04.17、Firmware Drivers---

04.18、High Memory Support(4GB)---高容量内存支持

04.18.01、(x) off我用512M内存,选用这项。

04.18.02、() 4GB

04.18.03、() 64GB

04.19、

Allocate 3rd-level pagetables from highmem除非有几G的内存,否则选择这个是没有意义的。

04.20、[ ] Math emulation Linux核心模拟数学浮点运算器,协处理器是在386时代的宠儿,现在早已下岗。

04.21、

MTRR(Memory Type Range Register) support在PCI或者AGP总线众进行更快速的通讯。由于现在所有系统都将它们的显卡接在PCI或AGP总线上,你通常需要选择“MTRR”。无论如何,打开这个选项通常都是安全的——即使你的机器没有使用 PCI或AGP总线的显卡。

04.22、[ ] Boot from EFI support(EXPERIMENTAL)由于我使用的是GRUB,所以选上这个也没什么用,如果你打算使用EFI的功能,你可以到看看。

04.23、

Enable seccomp to safely compute untrusted bytecode

第五部分

05、Power management options(ACPI, APM)---电源管理选项

05.01、

Power Management support

05.02、[ ] Power Management Debug Support电源管理的调试信息支持,如果不是要调试内核有关电源管理部份,请不要选择这项。

05.03、 ACPI(Advanced Configuration and Power Interface) Support--- Some kernel features may be built directly into the kernel. Some may be made into loadable runtime modules. Some features may be completely removed altogether. There are also certain kernel parameters which are not really features, but must be entered in as decimal or hexadecimal numbers or possibly text.

Menu items beginning with

, or [ ] represent features configured to be built in, modularized or removed respectively. Pointed brackets represent module capable features.

To change any of these features, highlight it with the cursor keys and press to build it in, to make it a module or to removed it. You may also press the to cycle through the available options(ie. Y-N-M-Y).

05.03.01、

ACPI Support高级电源接口配置支持,如果BIOS支持,建议选上这项。

05.03.02、 AC Adapter电源适配器

05.03.03、 Battery电池

05.03.04、 Button

05.03.05、 Fan风扇

05.03.06、 Processor处理器

05.03.07、 Thermal Zone据说大部份的台式机和笔记本都支持,不选还可能把处理器烧掉。如果你不会让模块正常工作,还是把它编进内核吧,怪吓人的。

05.03.08、 ASUS/Medion Laptop Extras华硕笔记本扩展支持,建议关闭

05.03.09、 IBM ThinkPad Laptop Extras IBM笔记本扩展支持,建议关闭

05.03.10、 Toshiba Laptop Extras Toshiba笔记本扩展支持,建议关闭

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

05.04、[ ] Debug Statements详细的ACPI调试信息,不搞开发就别选。

05.05、APM(Advanced Power Management) BIOS Support---

05.05.01、 APM(Advanced Power Management) BIOS support

05.05.02、[ ] Ignore USER SUSPEND忽略用户暂停请求。建议关闭

05.05.03、[ ] Enable PM at boot time开机时节能,这项就不用了,建议关闭。

05.05.04、

Make CPU Idle calls when idle CPU空闲时节能

05.05.05、[ ] Enable console blanking using APM空闲时console转成空白,建议关闭。

05.05.06、[ ] RTC stores time in GMT按Unix的标准,硬件的时钟应该设为格林威治时间。如果要硬件时钟设成了本地时间,这个选项就不用了。

05.05.07、[ ] Allow interrupts during APM BIOS calls允许APM的BIOS调用时中断。多数的机器不需要这项,Thinkpad的一些新机器需要这项。如果休眠时挂机(包括睡下去就醒不来),再把这项选上。

05.05.08、 [ ] Use real mode APM BIOS call to power off建议最好选上此项,保证软件关机。如果你有兴趣可以试试你的机器不选这项能不能正常的软件关机(多数机器不能)。补充一点,如果既选择了ACPI又选择了 APM,先加载的将被使用。

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

05.06.01、

CPU Frequency scaling

05.06.02、

Enable CPUfreq debugging是否允许调试CPU改变主频的功能,如果要调试,还需要在启动时加上参数。cpufreq.debug= 1:变频技术的内核调试 2:变频技术的驱动调试 3:变频技术的调节器调试

05.06.03、 CPU frequency translation statistics

05.06.04、

CPU frequency translation statistics details

05.06.05、Default CPUFreq governor(performance)---默认的主频调节,圆括号内的是你选择的结果,这里表示以性能为主。

05.06.06.01、(X) performance

05.06.06.02、() userspace

05.06.07、'performance' governor

05.06.08、'powersave' governor最大限度的节约电能调节器。

---'userspace' governor for userspace frequency scaling用户自定义调节器。

05.06.09、'ondemand' cpufreq policy governor自动调节主频。

05.06.10、'conservative' cpufreq governor

--- CPUFreq processor drivers

05.06.11、 ACPI Processor P-States driver报告处理器的状态。

05.06.12、 AMD Mobile K6-2/K6-3 PowerNow! AMD移动版K6处理器的变频驱动。

05.06.13、 AMD Mobile Athlon/Duron PowerNow! AMD移动版毒龙、雷乌的变频驱动。

05.06.14、 Cyrix MediaGX/NatSemi Geode Suspend Modulation Cyrix处理器的变频驱动。

05.06.15、 Intel Enhanced SpeedStep Intel的变频技术支持。

05.06.16、

Use ACPI tables to decode valid frequency/voltage pairs使用BIOS中的主频/电压参数。

05.06.17、[ ] Built-in tables for Banias CPUs迅驰一代的主频/电压参数。

05.06.18、 Intel Speedstep on ICH-M chipsets(ioport interface) Intel ICH-M南桥芯片组的支持。

05.06.19、 Intel Pentium 4 clock modulation P4处理器的时钟模块支持。

05.06.20、 Transmeta LongRun Transmeta处理器的支持。

05.06.21、 VIA Cyrix III Longhaul VIA Cyrix处理器的支持。

--- shared options

05.06.22、[ ]/proc/acpi/processor/../performance interface(deprecated)从/proc/acpi/processor/../performance获得CPU的变频信息。

05.06.23、[ ] Relaxed speedstep capability checks不全面检测Intel Speedstep,有的系统虽然支持Speedstep技术,却无法通过全面的检测。

Linux中为什么要配置内核,怎样重新配置内核

新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译Linux内核。

为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:

(1)自己定制编译的内核运行更快(具有更少的代码)

(2)系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)

(3)不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞

(4)将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些

阅读剩余
THE END