包你能学会的技术:Linux内核入门集(3)

  安装新内核

  内核生成好之后,你需要安装它,如何安装于系统架构和引导加载程序有关,我们以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,因此同步和并发是内核主要担心的问题;

  ◆可移植性也很重要。

  下面我们就逐个来了解一下这些问题,所有内核开发人员都必须记住它们。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/26593.html