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. 第六章 第一个Linux驱动程序:统计单词个数

    现在进入了实战阶段,使用统计单词个数的实例让我们了解开发和测试Linux驱动程序的完整过程.第一个Linux驱动程序是统计单词个数. 这个Linux驱动程序没有访问硬件,而是利用设备文件作为介质与应用 ...

  2. 字符串判断设置TextView高度

    问题:项目中需要根据字符串的长度判断Textview的高度   一.如果全是英文的也比较容易,根据长度判断从而设置mTextView的高度就好. double temp = str.length(); ...

  3. linux内核分析——扒开系统调用的三层皮(下)

    20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验 ...

  4. 安装PLSQL,登录报“无法解析指定的连接标识符的错误”

    安装PLSQL,本地不需要安装oracle服务器,但要安装oracle客户端. 一.安装客户端需要配置服务命名,tnsnames.oRA文件和监听(因为我开始没有配置监听,所以一直报无法解析制定的连接 ...

  5. c# 禁用 webBrowser 声音(转)

    const int FEATURE_DISABLE_NAVIGATION_SOUNDS = 21; const int SET_FEATURE_ON_PROCESS = 0x00000002; [Dl ...

  6. 现在遇到一个问题,无法判断url是属于哪一个CDN

    解决的办法是到申请域名的网站上面去调用api获取域名的cname来确定

  7. Thinkpad T420 指纹开机 win10 解决方案

    以前没感觉笔记本上的指纹有什么用,后来无意看到了指纹能开机.便尝试把这个功能给用起来.果然麻烦了些. 1.官网上没有win10的指纹应用软件. 下载了win8的版本,安装后没有问题,可以登录win10 ...

  8. 11、Linq的使用

    一.种类 1.Linq to Objects,实现了IEnumerable<T>集合对象的集成查询 2.Linq to sql,针对关系数据库MSSQL的解释查询 3.Linq to En ...

  9. SQL 事务

    /*========================事务==============================*/begin tran--开始事务 --开始写流程语句 --语句写完之后if @@ ...

  10. Java方法调用中的别名处理

    将一个对象传递到方法内部时,也会产生别名现象.//: PassObject.java// Passing objects to methods can be a bit tricky62class L ...