文档库

最新最全的文档下载
当前位置:文档库 > Linux内核编译

Linux内核编译

Linux内核编译初解

准备工作

1、查看系统内核版本:uname -r

2、下载最新内核

3、解压新的内核

将新版本的内核复制到“/usr/src/”目录下

在终端下输入:cd /usr/src进入到该文件目录

解压内核

4、安装必要的工具

Yum install build-essential kernel-package nucrses-devel等插件,根据要求来定

修改内核

1、添加新的系统调用

在文件/usr/src/linux/arch/x86/kernel/syscall_table_32/S最后增加一行系统表项:

.long sys_mycall

2、添加系统调用号

/usr/src/linux/include/asm-generic/unistd.h中添加:

#define __NR_mycall 245

#define NR_syscalls

3、添加系统调用的处理函数

在/usr/src/linux/kernel/sys.c中添加以下处理函数:

asmlinkage int sys_mycall(int n)

{

if(n%2==0)

return 1;

else

return 0;

}

4、清楚从前编译内核时残留的.o文件和不必要的关联(如果没有进行内核编译的话,

则可以省略这一步)

5、Cd /usr/src/linux

6、Asm、linux和scsi等链接是指向要升级的内核代码

Cd /usr/include

Rm –r asm linux scsi

Ln –s /usr/src/linux/include/asm-generic ams

Ln –s /usr/src/linux/include/linux linux

Ln –s /usr/src/linux/include/scsi scsi

7、配置内核,修改相关参数

Y:将该功能编译进内核

N:不讲该功能编译进内核

M:将该功能编译成在需要时动态插入到内核中的模块

单击“Main Menu”按钮,返回主配置窗口

单击“Next”按钮,配置下一个配置项

单击“Prev”按钮,配置上一个配置项

选择的原则是将与内核其他部分关系较远且不经常使用的部分功能代码编译成为

可加载模块,有利于缩减内核,减少内核消耗的内存。与内核核心紧密而且经常使用的部分功能代码直接编译到内核中。

在图形界面下:

Make xconfig

在字符界面下:

Make menuconfig

8、修改内核范围(更新后能否启动至关重要)

A、文件系统

请务必要选中ext3文件系统

File systems--->

[*] Ext3 journalling file system support

[*] Ext3 Security Labels

[*] JBD (ext3) debugging support

(一定要修改)

以上三项一定要选上,而且要内建(即标*)。这个非常重要,在配置完成后一定要检查.config文件有没有“CONFIG_EXT3_FS=y”这一项。如果不是

“CONFIG_EXT3_FS=y”而是“CONFIG_EXT3_FS=m”,你在运行内核时就

会遇到以下错误:pivotroot:pivot_root(/sysroot/sysroot/initrd)failed

B、网卡驱动

请务必把自己网卡对应的驱动编译进内核,比较普通的网卡是realtek 8139,以

下就是这种网卡的配置,以供参考

Device Drivers--->

Networking support--->

Ethernet (10 or 100Mbit) --->

<*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)

<*> RealTek RTL-8139 PCI Fast Ethernet Adapter support

C、声卡驱动

选选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考

Device Drivers --->

Sound --->

<*> Sound card support

Advanced Linux Sound Architecture --->

<*> Advanced Linux Sound Architecture

<*> Sequencer support

< > Sequencer dummy client

<*> OSS Mixer API

<*> OSS PCM (digital audio) API[*] OSS Sequencer API

<*> RTC Timer support

PCI devices --->

<*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111

Open Sound System --->

< > Open Sound System (DEPRECATED)

9、生成依赖

配置内核后,返回命令窗口。为确保关键文件,在正确的位置输入以下命令:make dep

为确保所有有关文件都处于最新版本状态,需要输入命令

Make clean

检查是否生成依赖信息并清除旧的编译结果。

10、编译二进制内核映像文件

在“/usr/src/linux”目录下建立二进制的内核映像文件,命令如下:

Make bzImage

Linux内核编译

Make modules

Linux内核编译

Make modules_install

Linux内核编译

Cp /usr/src/linux/system.map /boot/system.map-2.6.36

cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.36 cp .config /boot/config-2.6.36

mkinitramfs -o /boot/initrd.img-2.6.36 2.6.36

Linux内核编译

11、修改/boot下的两个链接system.map和vmlinuz,使其指向新内核的文件:

Cd /boot:rm –f system.map vmliuz

Ln –s vmlinuz-2.6.36 vmlinuz

Ln –s system.map-2.6.36 system.map

Linux内核编译

12、配置启动管理器