安装新内核
内核生成好之后,你需要安装它,如何安装于系统架构和引导加载程序有关,我们以x86架构,grub引导加载程序为例进行说明。
首先将arch/i386/boot/bzImage拷贝到/boot,重命名为vmlinuz- version,这里的version也是版本号,然后编辑/boot/grub/grub.conf,为新内核添加相应的项目,如果是使用LILO引导装载程序,则修改/etc/lilo.conf文件,然后运行lilo。
模块的安装与系统架构无关,都是自动完成的,以root用户运行:
% make modules_install这个命令会将所有编译好的模块安装到/lib/modules下对应的子目录中。
生成过程会在源代码树根目录下创建一个System.map文件,它包含一个符号查找表,映射内核符号到它们的起始地址,在调试期间可以用它将内存地址转换成函数和变量名。
可能会遇到的问题
与普通用户空间的应用程序相比,Linux内核有多个特殊的属性,下面是我认为最重要的一些不同:
◆内核既不访问C库也不访问标准C头;
◆内核是用GNU C编码的;
◆内核缺少用户空间提供的内存保护;
◆内核不能容易地执行浮点运算;
◆内核有一个小型的固定大小的进程堆栈;
◆由于内核支持异步中断和SMP,因此同步和并发是内核主要担心的问题;
◆可移植性也很重要。
下面我们就逐个来了解一下这些问题,所有内核开发人员都必须记住它们。