20135320赵瀚青LINUX第二章读书笔记

第二章—从内核出发

获取内核代码

使用git

  • 获取最新提交到版本树的一个副本
  • $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

安装内核源代码

压缩形式为bzip2运行:$ tar xvjf linux-x.y.z.tar.bz2压缩形式为zip运行:$ tar xvzf linux-x.y.z.tar.gz

使用补丁

从内部源码树开始运行$ patch -p1 < ../patch-x,y,z

内核源码树

如下图所示

编译内核

配置内核
(一)、启动内核配置程序。

cd /usr/src/linux

make config

除了上面的命令,用户还可以使用make menuconfig命令启动一个菜单模式的配置界面。如果用户安装了X window系统,还可以执行make xconfig命令启动X window下的内核配置程序。
(二)、配置内核
Linux的内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。
(三)、编译内核

make zImage

内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件zImage。如果编译的内核很大的话,系统会提示你使用make bzImage命令来编译。这时,编译程序就会生成一个名叫bzImage的内核映像文件。
(四)、编译可加载模块
如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。

make modules

make modelus_install

编译成功后,系统会在/lib/modules目录下生成一个2.3.14子目录,里面存放着新内核的所有可加载模块。

内核开发的特点

无libc库抑或标准头文件

没有内存保护机制

在内核中,不该访问非法的内存地址,引用空指针,否则内核会over;
内核中的内存不分页:每用掉一个字节,物理内存都减少一个;

不用轻易在内核中使用浮点数

与用户空间进程不同,内核不完美支持浮点操作,因为他本身不能陷入;

容积小而固定的栈

用户空间的栈本身比较大,而且可以动态增长;对于不用的体系结构,内核栈的大小不一样并都是固定的;

同步和并发

  • Linux是抢占多任务操作系统
  • Linux内核支持对称多处理器系统(SMP)
  • 中断异步到来
  • Linux内核可以抢占

可移植性的重要性

Linux是可移植的操作系统。

posted @ 2016-03-16 22:27  20135320赵瀚青  阅读(138)  评论(0编辑  收藏  举报