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. SharePoint Document Library中的"Versioning Settings"功能与CSOM的对应

     博客地址:http://blog.csdn.net/FoxDave SharePoint文档库关于版本的设置:"Versioning Settings",可以通过CSOM用L ...

  2. UIImage学习

    UIImage A UIImage object is a high-level way to display image data. You can create images from files ...

  3. ubuntu 15.10 install nvidia driver

    先添加源sudo add-apt-repository ppa:graphics-drivers/ppa 更新一下:sudo apt-get update (附原始链接:http://www.omgu ...

  4. npm(cnpm)介绍

    1.npm(node package manager) nodejs的包管理器,用于node插件管理(安装.卸载.更新.管理依赖等); 2.使用npm安装安装插件: 1).命令提示符执行 npm in ...

  5. C/C++读入一行不定个数的整数

    我想,每个人一开始遇到这个问题,都会觉得挺简单的.但真正实施的时候,可能就会觉得还是有点坑的.毕竟对于C/C++这样成熟而使用广泛的语言而言,对于这个简单的问题竟然没有一个简洁有力甚至一行代码的解决方 ...

  6. ios9-通讯录

    在以往的ios开发中,开发者需要获取用户的通讯录信息的时候,往往要使用AddressBook.frame框架,该框架是纯C语言的API,在开发过程中,还需要开发者手动的管理内存,这对于新进开发者很难理 ...

  7. 软件工程总结(Final)

    又到了学期末了,此时此刻软件工程课业接近尾声了.时间过得太快,仿佛昨天这学期的课才开始, 开学时,老师让我们提出了不少对这门课的问题和疑惑,通过一学期的努力学习,我可以试着解开我自己的疑问了. 下面是 ...

  8. Python 基础之在ubuntu系统下安装双版本python

    前言:随着python升级更新,新版本较于老版本功能点也有不同地方,作为一个初学者应该了解旧版本的规则,也要继续学习新版本的知识.为了能更好去学习python,我在ubuntu安装python2和py ...

  9. linux驱动之LCD

    LCD程序步骤:1. 分配一个fb_info 2. 设置 3. 硬件相关的操作4. 注册 register_framebuffer 5.入口函数 6.出口函数 #include <linux/s ...

  10. ubuntu samba 服务器设置

    安装 SAMBA 组件 sudo apt-get install samba smbfs smbclient ubuntu 14.04 使用以下方式安装: ? 1 2 3 4 5 6 7 若之前有安装 ...