第二章—从内核出发

获取内核代码

使用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是可移植的操作系统。

20135320赵瀚青LINUX第二章读书笔记的更多相关文章

  1. 20135320赵瀚青LINUX第一章读书笔记

    第一章-Linux内核简介 Unix的历史 依旧被认为是最强大和最优秀的系统 由一个失败的操作系统Multics中产生 被移植到PDP-11型机中 由其他组织进一步开发 重写了虚拟内存系统,最终官方版 ...

  2. 三20135320赵瀚青LINUX内核分析第二周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机的三个法宝 存储程 ...

  3. 期末总结20135320赵瀚青LINUX内核分析与设计期末总结

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 对LINUX内核分析与设计这 ...

  4. 20135320赵瀚青LINUX第七周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周学习的内容主要是讨 ...

  5. 20135320赵瀚青LINUX内核分析第一周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.概述 第一周的学习内容主 ...

  6. 20135320赵瀚青LINUX第五周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 按照刘老师的周从三个角 ...

  7. 20135320赵瀚青LINUX第八周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周学习的是linux ...

  8. 20135320赵瀚青LINUX内核分析第三周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周是学习的主要是构造 ...

  9. 20135320赵瀚青LINUX内核分析第四周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周的内容主要是讲解系 ...

随机推荐

  1. Go语言中的一些函数

    1.并行 通过使用goroutine和channel,go语言可以很好地支持并发,但是在我的电脑上是默认只使用一个核执行,要使用多核,在代码前面加入 import("runtime" ...

  2. LeetCode 笔记系列十 Suduko

    题目:Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by ...

  3. 利用jsPerf优化Web应用的性能

    在前端开发的过程中,掌握好浏览器的特性进行有针对性的性能调优是一项基本工作,jsperf.com是一个用来发布基于HTML的针对性能比较的测试用例的网站,你可以在jsPerf上在线填写和运行测试用例, ...

  4. fieldmeta 基于springboot的字段元数据管理,通用代码生成,快速开发引擎

    fieldmeta: 基于springboot的字段元数据管理 version:Alpha 0.0.1 ,码云地址:https://gitee.com/klguang/fieldmeta 元数据(Me ...

  5. tcpdump linux抓http请求头

    sudo tcpdump -i eth0 port 80 -s 1024 -l -A

  6. Powershell替代和截断——replace and substring

    一:截取一个字符串的尾部,替代字符串中的特定字符或替代字符串中特定位置的特定字符 $a="W.endy.chen.SHAO" $b=$a.Substring(0,$a.Length ...

  7. Elasticsearch 中文分词(elasticsearch-analysis-ik) 安装

    由于elasticsearch基于lucene,所以天然地就多了许多lucene上的中文分词的支持,比如 IK, Paoding, MMSEG4J等lucene中文分词原理上都能在elasticsea ...

  8. 刚开始学Python,坚持下去

    嗯,刚开始学Python没几天,挺好的一门语言,十分简洁,也很好上手. 坚持下去,每天至少看一个小时的Python.

  9. 在ubuntu上部署Kubernetes管理docker集群示例, vxlan,gre

    http://www.chenshake.com/openstack-folsom-guide-for-ubuntu-12-04/ http://www.cnblogs.com/sammyliu/p/ ...

  10. 在HTML里面HEAD部分的META元素要表达的内容是什么

    1.name属性主要有以下几种参数: A.Keywords(关键字) 说明:keywords用来告诉搜索引擎你网页的关键字是什么. 举例:<meta name ="keywords&q ...