您的位置:首页 > 运维架构 > Linux

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

2016-03-16 22:27 357 查看

第二章—从内核出发

获取内核代码

使用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是可移植的操作系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: