首页 / 操作系统 / Linux / Linux Kernel Development 3rd Edition 读书笔记
该书有第二版中文版,第三版还没看到,这里记录下该书的要点,并翻译成中文以加深印象.欢迎指正 第一章 Introduction To The Linux Kernel 1. Linux内核类型Linux Linux是单一的内核(monolithic kernel),就是说,Linux内核在单一的地址空间中运行,但是Linux借鉴了很多微内核(mircokernel)的优点. Linux使用了模块化设计,内核抢占,支持内核线程和动态加载不同的内核模块到内核映像空间.相反,Linux没有微内核设计的性能较差的缺点:一切都运行在内核模式,直接函数调用,没有消息传递.尽管如此,Linux是模块化,线程支持及内核自我调度的内核.
第二章 Getting Started with the Kernel 1. git使用 使用GIt可以获得最近的linux版本: $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git check out完成后,可以使用如下命令: $ git pull 来更新Linux内核到最新的版本 2. The Kernel Source Tree
3. 配置内核 (1) 配置选择有Boolean和tristates两种类型.Boolean类型可以选择yes或no.内核特性,比如 CONFIG_PREEMPT通常就是Boolean型.tristates类型有yes,no,module3个值可选.设置成module表示编译成模块(可动态加载的对象).tristates类型的数据中,yes表示将代码编译到内核映像中,而不是一个模块.驱动通常就是tristates类型来配置的. (2) 配置内核命令 文本模式下: $ make config 该命令会一个选项一个选项的让用户选择,会花很多时间.因此最好使用图形化的配置. $ make menuconfig 或者基于gtk+的工具: $ make gconfig $ make defconfig 该命令创建一个基于默认配置的配置. $ make oldconfig 当更新了配置,或者使用了配置文件到新的内核代码中,使用该命令进行验证并更新配置.在编译内核之前需要运行该命令. 配置选项CONFIG_IKCONFIG_PROC能够将配置文件保存并压缩到 /proc/config.gz中.可以使用如下命令将备份的配置文件恢复进行新的编译. $ zcat /proc/config.gz > .config $ make oldconfig 内核配置完成后,使用make命令就可以编译内核了. $ make 如果不想看到过多的编译信息,而只想看到警告和错误,可以使用如下命令重定向到其他文件: $ make > ../detritus 还可以使用如下命令将无价值的输出信息重定向到null,也就是丢弃. $ make > /dev/null
4.安装新内核 这取决于系统架构和Bootloader, 如果是x86使用grub引导,只需复制arch/i386/boot/bzImage目录到 /boot,更名为 vmlinuz-version之类的名字,然后编辑 /boot/grub/grub.conf,为新内核添加一个新的entry.对于Lilo,则编辑/etc/lilo.conf然后重新运行Lilo. 使用% make modules_install命令来安装内核模块,该命令将编译好的模块放到 /lib/modules下.