Linux系统由什么组成?

由用户空间(应用程序+GNU C标准库)和内核空间(系统调用接口+内核+内核架构代码)组成。

Linux内核到底是什么?以及组成。

ARM的七种操作级别?

内核网络协议栈(Network Stack)的作用?

  为Linux提供了丰富的网络协议(TCP/IP、PPPOE)实现。将网络协议栈放在内核中为了提高网络性能,减少CPU开销。

虚拟文件系统的作用?

为了支持多种文件系统,并为它们提供统一的操作接口。

Linux内核源代码结构

关于每个文件夹中的具体内容分析:参考http://blog.chinaunix.net/uid-24219701-id-2843452.html

Fedoar14系统中内核代码目录:

Linux内核配置与编译

内核配置命令(在内核根目录执行):

执行配置命令前若原来已经编译过内核则先 $make mrproper

$make config     基于文本模式的交互式配置。

$make menuconfig   基于文本模式的菜单型配置(使用较多)。 y m n 三种形式。

$make gconfig           基于gtk+的图形工具。

$make defconfig

$make xconfig    基于Tcl/Tk的X图形配置界面。

$make oldconfig     使用原有的配置文件(.config),但是会询问新增加的内核功能。

常用内核配置选项参考:http://www.cnblogs.com/Robyte/archive/2010/06/09/2591274.html

内核配置命令详细参考《Linux内核设计与实现》

内核编译:

内核配置完成之后,直接$make(注意如果内核是2.6之前的版本需要首先运行一下$make dep,2.6以后的版本不用因为代码之间的依赖关系会自动维护),在内核代码根目录下产生elf文件,但是此文件不是可执行的二进制文件。

如果有模块编译一下模块:$make modules;

然后安装模块:$make modules_install;

然后:$make install,安装到/boot目录下。(这个过程也是内核安装过程,下面的内核安装是另一种方法)

要生成可执行的二进制的内核文件还需要使用$make zImage或$make bzImage(前者用于编译小于512K的内核,后者用于编译大内核)。编译好后在arch/<cpu>/boot/下会生成二进制的内核文件。

内核安装(x86平台):

1. cp arch/i386/boot/bzImage /boot/vmlinuz-$version

2. cp System.map /boot/System.map-$version

3. rm /boot/System.map

4. ln -s /boot/System.map-$version /boot/System.map

5. 修改/etc/grub.conf 或者/etc/lilo.conf,添加一个新的title(类似下面)

注:/boot/grub/menu.lst 可以查看当前系统加载的二进制内核文件。

内核更新详细步骤参考:http://www.2cto.com/os/201312/265425.html

内核模块编写、编译、安装、运行和卸载

编译时asm/linkage.h找不到的问题:http://www.cnblogs.com/QuLory/archive/2012/10/23/2736339.html

2.6以上的Linux内核使用kbuild的Makefile进行编译。

关于kbuild参考系列文章:http://blog.csdn.net/yunsongice/article/details/6046537

Linux内核@系统组成与内核配置编译的更多相关文章

  1. Linux CentOS7系统中mysql8安装配置

    mysql是世界上最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司所有.今天我将记录一下如何在Linux centos7系统上安装和配置MySQL. 目录 环境准 ...

  2. win和mac系统Sublime Text 3配置编译c和c++

    widows安装 安装MinGW MinGW是Minimalist GNU on Windows的首字母缩写,安装后就可以使用很多的GNU工具.GNU(GNU’s Not Unix)是linux中的一 ...

  3. Linux CentOS7系统中phpMyAdmin安装配置

    今天介绍的是如何在Linux CentOS7系统中配置phpMyAdmin. 目录 环境准备 安装包 基本设置 网站预览 环境准备 linux centos7系统 ssh软件 php语言环境 mysq ...

  4. Linux 查看系统版本和内核

    查看系统内核版本 [root@11e71db4a00e /]# cat /proc/version Linux version -.el7.x86_64 (builder@kbuilder.dev.c ...

  5. Linux CentOS7系统中php安装配置

    本篇讲解如何配置php开发环境,让你的php代码可以正常的在网页中运行. 准备工作 linux centos7操作系统 ssh软件 nginx php资源 想要了解更多关于php的内容,请访问: ph ...

  6. linux suse系统防火墙端口开放配置

    1.切换到root用户下 2.进入到/etc/sysconfig/SuSEfirewall2 3.修改FW_SERVICES_EXT_TCP=" 22 80 8080 8081 8082 8 ...

  7. linux常用系统指令

    [linux常用系统指令] 查看内核版本:cat /proc/version 查看发行版本:cat /etc/issue 通过安装lsb的方式查看发行版本: yum provides */lsb_re ...

  8. Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装

    原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底 ...

  9. linux、内核源码、内核编译与配置、内核模块开发、内核启动流程(转)

    linux是如何组成的?答:linux是由用户空间和内核空间组成的为什么要划分用户空间和内核空间?答:有关CPU体系结构,各处理器可以有多种模式,而LInux这样的划分是考虑到系统的安全性,比如X86 ...

随机推荐

  1. js控制select下拉列表数据绑定

    JS代码部分:  <script type="text/javascript"> $(document).ready(function () { $("sel ...

  2. 关于编程一些鲜为人知的真相 csdn

    <关于编程一些鲜为人知的真相>一文讲了一些编程的真相:如果把所有项目的生命周期平均一下,那么一个程序员大概10-20%的时间用来写代码,并且大多数程序员可能每天大约只有10-12行代码会进 ...

  3. jsp 动态包含和静态包含

    jsp其实就是一个servlet或者说一个java文件,做这样三件事:打印html标签到页面,处理逻辑,输出结果 现在有两个jsp文件,包含者1和被包含者2 静态包含,就是把2的java代码塞到1的代 ...

  4. PCB设计规则考量之初识

    PCB的设计规则可以分布局与走线.布局里最简单的原则就是避免信号之间的干扰,有把模拟部分与数字部分分开,把开关电源与数字部分分开,把端去耦电容靠近端点,而且从端点出来的电容容值按从小到大摆放效果会好些 ...

  5. Android Studio运行SlidingView报错 FloatMath函数

    1,错误信息时这样的(图片百度的,但是提醒的是一样的) 我们点击这个错误提示,就会跳到出错的地方 2,开始的时候觉得很蛋疼,因为这个SlidingView是从别处导过来的,没什么问题把...就很久就 ...

  6. 基于css3实现手风琴效果

    终于在凌晨一点钟逼迫自己写博客.一直想记录自己的前端工程师之路,但毕竟拖延症晚期.因为第一篇随笔,所以多写一点废话吧.刚刚从学校毕业,放弃了一直学习的java,而想从事前端的工作.第一是觉得osgi这 ...

  7. C++线程中packaged_tack

    packaged_tack<>函数是一个你可以先定义好任务的类型,但是不想马上启动.函数可以在你想要启动任务是启动,你只需要调用你声明的函数就可以. #include <future ...

  8. Win8 安装 Scrapy

    安装Python2.7.11 32位(自带pip) 使用如下命令更新pip python -m pip install -U pip 下载lxml,建议32位,直接安装 https://pypi.py ...

  9. MySQL中的information_schema数据库详解

    information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等.有些时候用于表述该信 ...

  10. 关于peersim样例配置文件的超详细解读(新手勿喷)

    相信很多兄弟一开始接触peersim,对配置文件还是有点不适应,我看了好久的样例的配置文件,一层层去找对应的文件的方法,终于好像悟懂了一点,记下来以后回顾. 贴上代码,一点点分析. 首先要说下所谓的配 ...