内核体系

栏目: 后端 · 发布时间: 6年前

内容简介:内核体系

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

内核组成部分核心,一般为 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 的配置文件


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

商业模式新生代

商业模式新生代

亚历山大•奥斯特瓦德 (Alexander Osterwalder)、伊夫•皮尼厄 (Yves Pigneur) / 王帅、毛心宇、严威 / 机械工业出版社 / 2011-8-15 / 88.00元

中文官网:http://www.bizmodel.org 内容简介:当你愉快的看完第一章:商业模式画布,赫然发现这些构成要素全 都交织成一幅清晰的图像在脑海中呈现,它们如何互相影响、如何交互作用全都历历在目。利用商业模式画布分析瑞士银行、Google、Lego、Wii 、Apple等跨国企业,归纳出三种不同的产业 模式,也涵括新近的热门现象免费效应及长尾理论等。在这些有趣的例子中,我们不仅更......一起来看看 《商业模式新生代》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具