标题: 配置和编译内核 [打印本页]
作者: linuxarm 时间: 2006-9-13 21:54 标题: 配置和编译内核
如何根据自己系统的需求重新编译生成新的内核。编译内核是非常简单的工作,一般只要根据“/usr/src/linux/”目录下的README文件中的指示就都可以完成。为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:①自己定制编译的内核运行更快(具有更少的代码);②系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中);③不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞;④将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些。
(1)解压内核源代码到/usr/src/,注意源码目录名应该为Linux:
[root@deep]# cp linux-version_tar.gz /usr/src/
[root@deep]# cd /usr/src/
[root@deep]# tar xzpf linux-version_tar.gz
(2)修改/usr/src/linux/drivers/block/rd.c文件,使ramdisk支持所有的储存设备,而不是只支持从软盘加载文件系统。
ramdisk.c
/* Code fragment from ramdisk.c */
/* Old code - only load ramdisk if booting from floppy */
if (MAJOR(ROOT_DEV) != FLOPPY_MAJOR
#ifdef CONFIG_BLK_DEV_INITRD
&& MAJOR(real_root_dev) != FLOPPY_MAJOR
#endif
)
return;
... code to load ramdisk from block device
/* New code - always try to load ramdisk */
if (MAJOR(ROOT_DEV) == FLOPPY_MAJOR
#ifdef CONFIG_BLK_DEV_INITRD
&& MAJOR(real_root_dev) == FLOPPY_MAJOR
#endif{
/* Load even from hard disk */
/* or from EPROM disk */
printk(KERN_NOTICE "VFS: Insert ramdisk floppy and press
ENTER");
wait_for_keypress();
}
... code to load ramdisk from block device
(3)解压RTAI-1.4源代码到?/,patch核心
解压RTAI源代码文件到任意目录?/下
#cd ?/rtai-1.4
#make patch
作者: linuxarm 时间: 2006-9-13 21:54
(4)配置核心
使用下面的命令来确保系统没有陈旧的“.o”文件及依赖关系:
[root@deep]# cd /usr/src/linux/
[root@deep]# make mrproper
开始配置内核
#cd /usr/src/linux
#make config或
#make menuconfig或
#make xconfig
由于新下载的源代码已经配置了最基本的内容,我们只需添加我们需要的,以下内容必须编译进核心:
1)RTAI需要编译的内容
Processor type and features ->
...
MTRR support
...
Real-Time Hardware Abstraction Layer (NEW)
Loadable module support ->
Enable loadable module support
[ ] Set version information on all symbols for modules // FORBIDDEN
...
)
2)frambuffer需要编译的内容
Code maturity level opetions
Prompt for development and/or incomplete codes/drivers
Console drivers
Video mode selection support
...
Support for frame buffer devices
...
VESA VGA graphics console
...
Advance low level driver options
3)使用模块需要编译的内容
Loadable module support
Enable loadable module support
[ ] Set version information on all symbols for modules
Kernel daemon support (e.g.autoload of modules)
4)其他内容
检查核心是否支持Ramdisk,ps/2鼠标,kernel hacking,tcp/ip,ext2等
(5)编译压缩内核
现在返回到“/usr/src/linux/”目录下,下面开始进行内核编译工作,按照下面的命令进行:
[root@deep]# make dep; make clean; make bzImage
这行包含三个命令,第一个命令“make dep”实际上读取上一步配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;第二命令“make clean”完成删除前面步骤留下的文件,以避免出现一些错误;第三步“make bzImage”实现完全编译内核。
处理结束以后,生成的被压缩的新内核就可以被安装了。如果你在回答Enable loadable module support (CONFIG_MODULES)选“Yes”,在安装新内核以前,就还需要编译一些模块并且正确的安装。通过下面的命令来实现对模块的编译和安装:
[root@deep]# make modules;make modules_install
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |