人人一试就会,Linux核心的编译一点都不神秘(3-1)
时间:2005-12-30 来源:supxmen
内容
1、重新编译核心的原因
Linux的核心有几个主要的特色,除了可以随时、随个人喜好而更改之外,其版本更动次数太频繁也是一个特点,所以,除非你有特殊要求,否则一次编译成功就好了,不要随时保持最新的核心版本,也没有必要(因为核心编译需要很长的时间)。此外需要重新编译核心的情况主要有以下:
1 )、新功能的需求:需要新的功能,而这个功能只有在新的核心里才有,为了获得这个功能,只好重新编译核心(例如:iptables防火墙机制只有在2.4.xx版本中才有,而新出产的AGP显卡,很多也需要推出新的核心之后才能正常有效地工作)。
2)、原来的核心太臃肿:如果你的系统稳定性要求很高,则需要重新编译核心,把不需要的许多莫名其妙的功能去掉。
3)、与硬件搭配的稳定性:原本Linux的核心主要是针对Intel的CPU做开发工作的,如果你的CPU是AMD等其他系统时,有可能让系统运行不太稳定,特别是在K6-2,K6-3 以上的Linux,通常需要重新编译核心才会解决问题。
4)、其他:在你有特殊的环境需求是,就得自行设计你的系统核心了。如一些商业的软件包系统,它们可能需要较为干净的操作系统,它们的核心需要更简洁有力。
但是需要注意的是,重新编译核心虽然可以针对你的硬件作最优化的处理,不过其对整体效能的影响可能还不到5%。因此如果为了增加效能而编译核心,基本上收益不大,但如果是针对系统的
稳定性,则是绝对必要的。
因此,可以这样说:重新编译核心的目的是为了系统的稳定性。
2、核心的编译
由于编译核心的行为只有root才可以进行,所以要求以root身份操作。
2.1设置模块的必要性。
每次新的硬件或软件的推出,就需要编译一次核心,这样做非常不方便,因为编译一次核心至少要30分钟左右(这与PC的配置有关)。目前的核心已经具有外挂模块的功能,因此,我们可以把可能用到的功能都编译成模块,那么要用的时候只需把它加载到核心就可以了。通过模块的设置,核心不会主动加载没有用到的功能,避免过多的系统资源消耗。比如在旧的计算机一般没有AGP插槽,也就不需要在核心里编译进AGP的支持了。
2.2安装原则
在Linux中安装任何软件的铁则是:注意看套件解压缩之后的INSTALL或README文件。
所以在解压了核心文件之后,先进入/usr/src/linux中先瞧瞧README,接着,执行make mrproper指令,避免前面已经有人编译过该核心。
2.3操作指令:
a、下载核心文件
# wget http://www.kernel.org > kernel/v2.4/linux-2.4.28.tar.gz
(注意:http://www.kernel.org是核心的下载主站)
b、解压缩,并放置核心到/usr/src中!
# cd /usr/src (kernel的默认source文件放置目录)
# mv linux linux.old (将旧的核心编译的目录)
# tar –zxvf /root/linux-2.4.28.tar.gz (将核心文件解压缩)
# ln –s linux-2.4.28 linux (建立链接)
# cd linux (进入工作目录)
2.4设定编译模式
目前的Kernel允许多种编译模式,包括:
1).make config:这种模式需要逐行输入需要设定的项,无法往前修改设定,所以很少使用这种方式来设定Kernel的选项。
2)make xconfig:这种模式使用 X-Window为主要环境的设定模式,除非您在执行X-Window,否则没有办法使用这种模式。
3)make menuconfig:这种模式有点象文字界面的菜单模式,较为简单,而且可以走纯文字界面下执行编辑动作,是目前最常用的模式。
输入指令#make menuconfig,会出现的界面如上图所示。
2.4.1开始设定
开始设定项回非常多,如果不确定选项的内容是什么,可以进入Help查看该项的设定值,如果还是不清楚就直接保留Kernel的默认值即可。我在下面的设定列出了比较重要的项。如果理解了下面的现,核心编译基本上没有很严重的困难。
# make mrproper 去除.o的已编译文件
# make menuconfig 以文字菜单模式进行编译
Code maturity level options ---> 关于核心测试功能的code开启项
[ ]Prompt for development and /or imcomplete code/drivers
因为我们不需要研发核心,所以不选
Loadable module support---> 这个就是我们所说的模块
[*]Enable loadable module support
让核心可以加载模块项(必选)
[ ]Set version information on all module symbols
除非你要使用旧版本的数据,这个通常不选
[*]Kernel module loader 也是必选
Processor type and features---> 选择CPU的型号项
(Pentium-MMX)Processor family
请依照你的实际情况选择你的CPU型号
<>Toshiba Laptop support 底下这个用到(笔记本电脑)时才选择
<>Dell laptop support
/dev/cpu/microcode-Intel IA32 CPU microcode support
如果使用的是Intel,可以编译成模块
/dev/cpu/*/msr-Model-specific register support
如果使用的是Intel,可以编译成模块
/dev/cpu/*/cupid-CPU information support
如果使用的是Intel,可以编译成模块
(off)High Memory Support 这个东西跟你的RAM有关,RAM小于1GB则使用off
[ ]Math emulation 是否需要数值模拟?当然不需要,我们的CPU够强了
[ ]MTRR(Memory Type Range Register)support
P6(PII等级以上)并且要运行X-Window时才加上,与AGP有关
[ ]Symmetric multi-processing support
如果是双CPU的主机板才选择,否则不选
[*]Local APIC support on uniprocessors(NEW)
如果你的CPU支持APIC则选择,通常可以选择
[*]IO-APIC support on uniprocessors
同上
General setup---> 一般设定部分
[*]Networking support 底下4个一定要选,跟基本的硬件设备有关
[*]PCI support
(Any)PCI access mode
[*]PCI device name database
[ ]EISA support 底下这两个则与主机板上的插槽有关,除非笔记本电脑,否则不选
[ ]MCA support
[*]Support for hot-pluggable devices
有点类似即插即用,可以选择
PCI Hotplug Support--->
[*]System V IPC 下面这几个东西可以编译成模块,但是我就直接编译到核心
<*>Kernel support for a.out binaries
<*>Kernel support for ELF binaries
<*>Kernel support for MISC binary
[*]Power Management support
< >Advanced Power Managerment BIOS support
如果你想让你的BIOS接管电源管理,可以选择,我没有选
Memory Technology Devices (MTD)-à
< >Parallel port support 由于我的主机并没有接打印机,所以没选如果你有打印机,一定要选
Plug and Play configuration---> 底下两个即插即用,马上勾选
< >ISA Plug and Play support
Block devices---> 一些比较冷门的存储机器,如果不确定,可以直接编译成模块
<*>Normal PC floppy disk support
< >XT hard disk support
< >Compaq SMART2 support
< >Compaq Smart Array 5xxx support
< >Mylex DAC960/DAC1100 PCI RAID Controller support
< >Loopback device support
Network block device support 底下这两样可以选择编译成为模块,因为有可能会用到
RAM disk support
(4096)Default RAM disk size(NEW)
Multi-device support (RAID and LVM)-->
[ ]Multiple devices drives support(RAID and LVM)
除非要玩RAID(磁盘阵列)与LVM,否则不用选