内核体系

单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。

内核组成部分核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-VERSION-RELEASE;:

kernel: 内核

kernel object: 内核对象,一般放置于/lib/modules/VERSION-RELEASE/

[ ]: N

[M]: M

[*]: Y

 辅助文件:ramdisk

initrd

initramfs

 运行中的内核:

 uname命令:

uname – print system information

uname [OPTION]…

-n: 显示节点名称;

-r: 显示VERSION-RELEASE;

例一:显示内核节点名称

[root@localhost ~]# uname -r
2.6.32-71.el6.x86_64
[root@localhost ~]# uname -n
localhost.localdomain

模块:

lsmod命令:

显示由核心已经装载的内核模块

例一:显示已经装载的模块

[root@localhost ~]# lsmod
Module                  Size  Used by
sit                    10313  0
tunnel4                 2877  1 sit
autofs4                27683  3

显示的内容来自于: /proc/modules文件

modinfo命令:

显示模块的详细描述信息

modinfo [ -k kernel ]  [ modulename|filename… ]

-n: 只显示模块文件路径

-p: 显示模块参数

-a: author

-d: description

-l: license

例一:查询内核信息

[root@localhost ~]# modinfo xfs
filename:       /lib/modules/2.6.32-71.el6.x86_64/kernel/fs/xfs/xfs.ko
license:        GPL
description:    SGI XFS with ACLs, security attributes, large block/inode numbers, no debug enabled
author:         Silicon Graphics, Inc. srcversion:     74805DEC132C154FBA7FC91
depends:        exportfs
vermagic:       2.6.32-71.el6.x86_64 SMP mod_unload modversions

modprobe命令:

装载或卸载内核模块 

modprobe [ -C config-file ]  [ modulename ]  [ module parame-ters… ]

配置文件:/etc/modprobe.conf, /etc/modprobe.d/*.conf

       modprobe [ -r ] modulename…

例一:卸载内核

[root@localhost ~]# modprobe xfs
[root@localhost ~]# lsmod |grep xfs
xfs                   982863  0
exportfs                4202  1 xfs
[root@localhost ~]# modprobe -r xfs
[root@localhost ~]# lsmod | grep xfs 

       depmod命令:

       内核模块依赖关系文件及系统信息映射文件的生成工具;

       装载或卸载内核模块:

       insmod命令:

       insmod [ filename ]  [ module options… ]

例一:安装指定路径

[root@localhost ~]# insmod $(modinfo -n exportfs)
[root@localhost ~]# insmod $(modinfo -n xfs)
[root@localhost ~]# lsmod
Module                  Size  Used by
xfs                   982863  0

       rmmod

       rmmod [ modulename ]

例一:移除内核 

[root@localhost ~]# rmmod xfs
[root@localhost ~]# lsmod | grep xfs
[root@localhost ~]# lsmod | grep exportfs
exportfs                4202  0
[root@localhost ~]# rmmod exportfs

   /proc目录:

     内核把自己内部状态信息及统计信息,以及可配置参数通过proc伪文件系统加以输出; 

     参数:

     只读:输出信息

     可写:可接受用户指定“新值”来实现对内核某功能或特性的配置

     /proc/sys

     (1) sysctl命令用于查看或设定此目录中诸多参数;

     sysctl -w path.to.parameter=VALUE

     ~]# sysctl -w kernel.hostname=mail.magedu.com 

     (2) echo命令通过重定向的方式也可以修改大多数参数的值;

     echo “VALUE” > /proc/sys/path/to/parameter

     ~]# echo “www.magedu.com” > /proc/sys/kernel/hostname

     sysctl命令:

     默认配置文件:/etc/sysctl.conf

     (1) 设置某参数

     sysctl -w parameter=VALUE

     (2) 通过读取配置文件设置参数

     sysctl -p [/path/to/conf_file]

例一:重新读取配置文件

[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1

     内核中的路由转发:

     /proc/sys/net/ipv4/ip_forward

     常用的几个参数:

     net.ipv4.ip_forward

     vm.drop_caches

     kernel.hostname

例一:回收路由

[root@localhost ~]# sysctl -w vm.drop_caches=1
vm.drop_caches = 1 

    /sys目录:

     sysfs:输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的设定信息;有些参数是可以修改的,用于调整硬件工作特性。

     udev通过此路径下输出的信息动态为各设备创建所需要设备文件;udev是运行用户空间程序;专用工具:udevadmin, hotplug

     udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rules.d/usr/lib/udev/rules.d目录下;

 

    ramdisk文件的制作:

 

     (1) mkinitrd命令

     为当前正在使用的内核重新制作ramdisk文件

     ~] # mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

例一:为当前正在使用的内核重新制作ramdisk文件

[root@localhost ~]# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
[root@localhost ~]# ls /boot/
config-2.6.32-71.el6.x86_64  initramfs-2.6.32-71.el6.x86_64.img  System.map-2.6.32-71.el6.x86_64
efi                          lost+found                          vmlinuz-2.6.32-71.el6.x86_64
grub                         symvers-2.6.32-71.el6.x86_64.gz 

     (2) dracut命令

     为当前正在使用的内核重新制作ramdisk文件

     ~] # dracut /boot/initramfs-$(uname -r).img $(uname -r)

 

    编译内核:

     前提:

     (1) 准备好开发环境;

     (2) 获取目标主机上硬件设备的相关信息;

     (3) 获取到目标主机系统功能的相关信息,例如要启用的文件系统;

     (4) 获取内核源代码包;

     www.kernel.org

 

     准备好开发环境:

     包组(CentOS 6)

     Server Platform Development

     Development Tools

     目标主机硬件设备相关信息:

     CPU

     ~]# cat /proc/cpuinfo

     ~]# x86info -a

     ~]# lscpu

[root@localhost ~]# x86info -a

    PCI设备:

     ~]# lspci

     -v

     -vv

     ~]# lsusb

     -v

     -vv

[root@localhost ~]# lsusb

     ~]# lsblk

     了解全部硬件设备信息

     ~]# hal-device

[root@localhost ~]# hal-device

     简单依据模板文件的制作过程:

     ~]# tar xf linux-3.10.67.tar.xz -C /usr/src

     ~]# cd /usr/src

     ~]# ln -sv linux-3.10.67 linux

     ~]# cd linux

     ~]# cp /boot/config-$(uname -r) ./.config

     ~]# make menuconfig

     ~]# screen

     ~]# make -j #

     ~]# make modules_install

     ~]# make install

       重启系统,并测试使用新内核;

[root@localhost ~]# tar xf linux-3.10.105.tar.xz -C /usr/src
[root@localhost ~]# cd /usr/src
[root@localhost src]# ls
debug  kernels  linux-3.10.105
[root@localhost ~]# ls -lh linux-3.10.105.tar.xz
-rw-r--r--. 1 root root 70M 5月  30 2017 linux-3.10.105.tar.xz
[root@localhost ~]# tar xf linux-3.10.105.tar.xz -C /usr/src
[root@localhost ~]# cd /usr/src
[root@localhost src]# ls
debug  kernels  linux-3.10.105
[root@localhost src]# cd linux
[root@localhost linux]# ls -a
.      COPYING        drivers     include  Kconfig   MAINTAINERS  README          security  virt
..     CREDITS        firmware    init     kernel    Makefile     REPORTING-BUGS  sound
arch   crypto         fs          ipc      lib       mm           samples         tools
block  Documentation  .gitignore  Kbuild   .mailmap  net          scripts         usr
[root@localhost linux]# cp /boot/config-2.6.32-71.el6.x86_64 .config
[root@localhost linux]# ls -a
.      .config  Documentation  .gitignore  Kbuild   .mailmap     net             scripts   usr
..     COPYING  drivers        include     Kconfig  MAINTAINERS  README          security  virt
arch   CREDITS  firmware       init        kernel   Makefile     REPORTING-BUGS  sound
block  crypto   fs             ipc         lib      mm           samples         too

 回顾:内核组成部分、内核编译 

内核组成部分:

核心、模块

核心:/boot/vmlinuz-VERSION-RELEASE

模块:/lib/modules/VERSION-RELEASE/ 

模块管理的相关命令:

lsmod, modinfo, modprobe [-r], insmod, rmmod, depmod

内核编译:

[ ]

[*]

[M] 

步骤:

make menuconfig:配置内核选项

.config:文本文件

make [-j #]

make modules_install

make install

安装bzImage/boot/vmlinuz-VERSION-RELEASE

生成initramfs文件

编辑grub的配置文件

原创文章,作者:kang,如若转载,请注明出处:http://www.178linux.com/77387

(0)
kangkang
上一篇 2015-09-01 23:12
下一篇 2015-09-05 20:53

相关推荐

  • sed工具

    sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来…

    2017-08-26
  • 初学Linux之快速获取帮助

    Windows操作系统和Linux操作系统的界面区别,导致了初学Linux时,我们会遇到比较大的障碍。Windows操作系统时图形这种形象化的操作界面,而Linux则不同,时以字符界面为主的。当我们遇到困难,我们可以获取系统提供的帮助信息,越过我们遇到的障碍,快速的熟悉Linux。获取帮助的方法包括:Linux手册(man),命令的帮助页,info帮助。

    2017-11-19
  • LVS详解

    LVS详解 LVS(Linux Virtual Server),意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 LVS 是一个工作在四层的负载均衡器,实现和 iptables/netfilter 类似,工作在内核空间的 TCP/IP 协议栈上,LVS 工作在 INPUT H…

    Linux干货 2016-11-11
  • Yacc 与 Lex 快速入门(词法分析和语法分析)

    Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。 让我们从 Lex 开始吧。 Lex Lex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。 这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义,这个我们一会儿就要讨论。 一种匹配的常规表达式可能会包含相关的动作…

    Linux干货 2015-06-08
  • AWK 的用法

    目录: 一、概述 二、awk基本语法格式 三、awk基本操作 四、awk条件及循环语句 五、awk函数 六、awk演示示例(源自于man手册) 一、概述 产品概述:  awk是一种编程语言,用于在linux/unix下对文本和数据进行扫描与处理。数据可以来自标准输入、文件、管道。&nbsp…

    Linux干货 2017-05-30
  • 实现真实的机柜模拟图[原创]

    一般能反映机房设备位置、结构我们都喜欢通过网络拓扑图来展现,但个人感觉还不够直观、明了的表现出自己想要的结果(自己太挑剔了,呵呵)。因此写一个生成真实机柜模拟图平台,实现与真实服务器外观、服务状态、空闲位置等信息。在线效果图http://blog.liuts.com/idc/系统截图1、平台显示某一排截图2、平台显示某台服务器详细信息截图3、状态说明2U服务…

    Linux干货 2015-03-27