转载Andy的博客,原文也没有图,不知道怎么回事。
首先,建议系统直接装,而不是用VM 等虚拟机装。我的很多朋友用虚拟机装的编译内核时老是出现问题。估计是虚拟机的问题。
下载内核
编译Linux内核,首先是在官方网站下载Linux内核,我下的是目前最稳定的最新版本:2.6.28。是一个完整版。
解压内核
把下载的内核拷贝到目录usr/src/下。然后解压:tar -jxvf linux-2.6.28.tar.bz2.
解压完后,在该文件夹下,会产生一个新的文件linux-2.6.28
添加系统调用。
这一步是很关键的,如果错误了,就不能在我编译的内核里打印我的大名了。这里需要修改三个文件的内容:
(1)首先是kernel/sys.c文件。在这个文件末尾添加系统调用的实现函数:
asmlinkage long sys_mysyscall(int number)
{
printk(KERN_ALERT “This is my syscall。\n”);
return number;
}
(2)在arch/x86/kernel/syscall_table_32.S中添加:.long sys_mysyscall
(3) /usr/src/linux-2.6.29.1/arch/x86/include/asm
unistd_32.h中添加:#define __NR_mysyscall 333 这一步是添加系统调用的入口参数。
清除以前编译的内核文件。
修改完以上三个文件就可以了。接下来是激动人心的时刻。要开始编译系统内核了。
在编译内核之前,可以先用如下命令make mrproper清除以前编译的东西。
定制内核。
我直接选择 make oldconfig.用以前的内核配置。