Linux内核功能及模块应用

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

内核的组成部分:

  • kernel:内核核心,一般为bzImage,通常位于/boot目录,名称为vmlinuz-VERSION-release
  • kernel object:内核对象,即内核模块,一般放置于/lib/modules/VERSION-release/
    内核模块与内核核心版本一定要严格匹配

[ ]:N,不要此功能
[M]:Module 编译成内核模块
[*]:Y,编译进内核核心

内核模块支持动态装载和卸载

  • ramdisk:辅助性文件,一个简装版的根文件系统,这取决于内核是否能直接驱动rootfs所在的设备;
    目标设备驱动,例如SCSI设备的驱动;
    逻辑设备驱动,例如LVM设备的驱动;
    文件系统,例如xfs文件系统;

内核信息获取

uname命令:

print system information

格式:uname [OPTION]...
-v:编辑版本号

[root@promote ~]# uname -v
#1 SMP Thu Jul 23 15:44:03 UTC 2015

-r:内核的release号

[root@promote ~]# uname -r 
2.6.32-573.el6.x86_64

-n:主机名

[root@promote ~]# uname -n
promote.cache-dns.local
[root@promote ~]# hostname
promote.cache-dns.local

-a:显示所有信息

[root@promote ~]# uname -a
Linux promote.cache-dns.local 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

文件:/boot/vmlinuz-VERSION-release

模块信息获取和管理:

lsmod命令:

Show the status of modules in the Linux Kernel

[root@promote ~]# lsmod
Module                  Size  Used by
nls_utf8                1455  1 
fuse                   79892  2 
rfcomm                 71079  4 
sco                    17493  2 
bridge                 84537  0 
bnep                   16370  2 
l2cap                  54306  16 rfcomm,bnep
autofs4                27000  3 
8021q                  20362  0 
garp                    7152  1 8021q
stp                     2218  2 bridge,garp
llc                     5418  3 bridge,garp,stp
ipt_REJECT              2351  2 
nf_conntrack_ipv4       9154  2 
nf_defrag_ipv4          1483  1 nf_conntrack_ipv4
iptable_filter          2793  1 
ip_tables              17831  1 iptable_filter
ip6t_REJECT             4340  2 
nf_conntrack_ipv6       7985  3 
nf_defrag_ipv6         26468  1 nf_conntrack_ipv6
xt_state                1492  5 
nf_conntrack           79206  3 nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state
ip6table_filter         2889  1 
ip6_tables             18732  1 ip6table_filter
ipv6                  335589  286 bridge,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
uinput                  8120  0 
sg                     29318  0 
btusb                  16915  2 
bluetooth              97895  9 rfcomm,sco,bnep,l2cap,btusb
rfkill                 19255  3 bluetooth
microcode             112205  0 
serio_raw               4626  0 
e1000                 134876  0 
vmware_balloon          7199  0 
i2c_piix4              11232  0 
i2c_core               29132  1 i2c_piix4
shpchp                 29130  0 
ext4                  378683  3 
jbd2                   93252  1 ext4
mbcache                 8193  1 ext4
sd_mod                 37030  3 
crc_t10dif              1209  1 sd_mod
sr_mod                 15049  1 
cdrom                  39085  1 sr_mod
mptspi                 16411  2 
mptscsih               36638  1 mptspi
mptbase                93615  2 mptspi,mptscsih
scsi_transport_spi     25447  1 mptspi
pata_acpi               3701  0 
ata_generic             3837  0 
ata_piix               24409  1 
dm_mirror              14384  0 
dm_region_hash         12085  1 dm_mirror
dm_log                  9930  2 dm_mirror,dm_region_hash
dm_mod                 99200  11 dm_mirror,dm_log

显示的内核来自于/proc/modules

modinfo命令:

Show information about a Linux Kernel module

格式:modinfo [-F field] [-k kernel] [modulename|filename...]

[root@promote ~]# modinfo ext4
filename:       /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/ext4/ext4.ko
license:        GPL
description:    Fourth Extended Filesystem
author:         Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion:     CB1B990F5A758DFB0FB12F1
depends:        mbcache,jbd2
vermagic:       2.6.32-573.el6.x86_64 SMP mod_unload modversions 

-F field: 仅显示指定字段的信息

[root@promote ~]# modinfo -F license ext4
GPL

-n:显示文件路径

[root@promote ~]# modinfo -n ext4
/lib/modules/2.6.32-573.el6.x86_64/kernel/fs/ext4/ext4.ko
modprobe命令:

Add and remove modules from the Linux Kernel

格式:modprobe [-r] module_name

模块的动态装载:modprobe module_name
模块的动态卸载:modprobe -r module_name

depmod命令:

Generate modules.dep and map files.
内核模块依赖关系文件的生成工具;

模块的装载和卸载的另一组命令:

insmod命令:
格式:insmod [filename] [module options...]
filename:模块文件的文件路径;

rmmod命令:
格式:rmmod [module_name]

ramdisk文件的管理:

mkinitrd命令

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

格式:mkinitrd [OPTION...] [<initrd-image>] <kernel-version>

--with=<module>:除了默认的模块之外需要装载至initramfs中的模块;
--preload=<module>:initramfs所提供的模块需要预先装载的模块;

示例: [root@promote ~]# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

dracut命令

low-level tool for generating an initramfs image
格式:dracut [OPTION...] [<image> [<kernel version>]]
示例:[root@promote ~]# dracut /boot/initramfs-$(uname -r).img $(uname -r)

内核信息输出的伪文件系统

/proc:内核状态和统计信息的输出接口;同时,还提供一个配置接口,/proc/sys;

参数:
只读:信息输出;例如/proc/#/*
可写:可接受用户指定一个“新值”来实现对内核某功能或特性的配置;/proc/sys/
/proc/sys:
net/ipv4/ip_forward 相当于 net.ipv4.ip_forward

sysctl命令

专用于查看或设定/proc/sys目录下参数的值
格式:sysctl [options] [variable[=value]]
查看:

sysctl -a
sysctl variable

修改其值:

sysctl -w variable=value

[root@promote ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
[root@promote ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
[root@promote ~]# uname -n
promote.cache-dns.local
[root@promote ~]# sysctl -w kernel.hostname=leejarvan
kernel.hostname = leejarvan
[root@promote ~]# uname -n
leejarvan
文件系统命令(cat, echo)

查看:
cat /proc/sys/PATH/TO/SOME_KERNEL_FILE

[root@promote ~]# cat /proc/sys/kernel/hostname 
leejarvan

设定:
echo "VALUE" > /proc/sys/PATH/TO/SOME_KERNEL_FILE

[root@promote ~]# echo "centos6.7" > /proc/sys/kernel/hostname 
[root@promote ~]# uname -n
centos6.7

注意:上述两种方式的设定仅当前运行内核有效

配置文件:/etc/sysctl.conf, /etc/sysctl.d/*.conf(centos7)

立即生效的方式:sysctl -p [/PATH/TO/CONFIG_FILE]

[root@promote ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@promote ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@promote ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@promote ~]# cat /proc/sys/net/ipv4/ip_forward
1
内核参数:

net.ipv4.ip_forward:核心转发;
vm.drop_caches:手动回守内存;
kernel.hostname:主机名;
net.ipv4.icmp_echo_ignore_all:忽略所有ping操作;

/sys目录:

sysfs:输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的可设置参数;对此些参数的修改,即可定制硬件设备工作特性;

udev:通过读取/sys目录下的硬件设备信息按需为各硬件设备创建设备文件;udev是用户空间程序;
专用工具:devadmin, hotplug;
udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rules.d/目录下,以及/usr/lib/udev/rules.d/目录下;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,376评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,126评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,966评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,432评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,519评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,792评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,933评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,701评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,143评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,488评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,626评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,292评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,896评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,494评论 2 348

推荐阅读更多精彩内容