《精通Linux设备驱动程序开发》——1.7 编译内核

简介: menuconfig是内核配置菜单的文本界面,使用make xconfig可以产生一个图形界面。所选择的配置信息被存放在内核源码树根目录的.config文件中。如果不想从头开始进行配置,可以使用 arch/your-arch/defconfig作为起点或者若你的体系架构支持多个平台,也可以用)arch/your-arch/ configs/your-machine_defconfig文件作为起点。
+关注继续查看

本节书摘来自异步社区《精通Linux设备驱动程序开发》一书中的第1章,第1.7节,作者:【印】Sreekrishnan Venkateswaran(斯里克里斯汉 温卡特斯瓦兰)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.7 编译内核

了解了内核源码树布局后,现在我们来对代码稍做修改,并编译和运行它。进入位于顶层的init/目录,对初始化文件main.c做一项小的修改,即在start_kernel()函数的开头加上一行打印信息,宣布你对北极熊的喜爱:

asmlinkage void __init start_kernel(void)
{
  char *command_line;
  extern struct kernel_param __start___param[],
      __stop___param[];

+  printk("Penguins are cute, but so are polar bears\n");

  /* ... */

  rest_init();
}

编译内核准备工作已经就绪,进入内核源码树并运行清除命令:

bash> cd /usr/src/linux-X.Y.Z/
bash> make clean

接下来进行内核配置工作。这一步的主要工作是选择要编译的组件,你可以指定需要的组件以静态还是动态链接的方式编译进内核:

bash> make menuconfig
menuconfig是内核配置菜单的文本界面,使用make xconfig可以产生一个图形界面。所选择的配置信息被存放在内核源码树根目录的.config文件中。如果不想从头开始进行配置,可以使用 arch/your-arch/defconfig作为起点或者若你的体系架构支持多个平台,也可以用)arch/your-arch/ configs/your-machine_defconfig文件作为起点。因此,如果正在为32位x86体系架构编译内核,运行如下命令:

bash> cp arch/x86/configs/i386_defconfig .config
编译内核并产生一个压缩的启动映像:

bash> cp arch/x86/boot/bzImage /boot/vmlinuz
现在,内核映像将位于arch/x86/boot/bzImage,更新启动分区:

bash> /sbin/lilo
Added linux *

也许需要根据新的启动映像更新引导程序。如果正在使用GRUB这个引导程序,它将自动完成配置;如果正在使用LILO,请增加一个标记:

**<pre class="代码无行号"><code><strong>****bash> /sbin/lilo**</strong>
Added linux *
</code></pre>

最后,重新启动Linux并启动到新内核:

bash> reboot
启动后的第一条信息显示了你添加的喜爱北极熊的那句话。 

相关文章
|
1月前
|
Unix Linux 编译器
编写Linux设备驱动程序的注意事项
编写Linux设备驱动程序的注意事项
|
2月前
|
存储 缓存 Unix
Linux设备驱动程序(三)——字符驱动
本章的目的是编写一个完整的字符设备驱动,我们开发一个字符驱动是因为这一类适合大部分简单硬件设备,字符驱动也比块驱动易于理解。
70 0
|
2月前
|
存储 Unix Linux
Linux设备驱动程序(二)——建立和运行模块
本章介绍所有的关于模块和内核编程的关键概念,通过一个 hello world 模块来认识驱动加载的流程及相关细节。
46 0
|
2月前
|
网络协议 Unix Linux
Linux设备驱动程序(一)——设备驱动简介
这一部分主要是用来介绍 Linux 设备驱动程序的一些基本概念,包括:Linux 设备驱动程序的作用、内核功能的划分、设备和模块的分类以及版本编号。
107 0
|
4月前
|
Linux
linux总线设备驱动程序框架
linux总线设备驱动程序框架
|
Linux 安全 Unix
Linux设备驱动程序学习----1.设备驱动程序简介
Linux设备驱动程序学习----1.设备驱动程序简介设备驱动程序简介更多内容请参考Linux设备驱动程序学习----目录 简介  Linux系统的优点是,系统内部实现细节对所有人都是公开的。Linux内核由大量复杂的代码组成,设备驱动程序可以作为进入Linux内核世界大门的切入口。
1120 0
|
Linux Windows 编译器
《精通Linux设备驱动程序开发》——导读
在Linux内核源代码树提供的各个子系统中,drivers/目录是其中最大的一个分支,它比其他子系统大数倍。随着各种新技术的广泛应用,内核中新的设备驱动程序的开发工作正在稳步加速。最新的Linux内核支持多达70余种设备驱动程序。
1515 0
推荐文章
更多