红联Linux门户
Linux帮助

Linux内核服务学习笔记

发布时间:2014-07-26 15:06:52来源:linux网站作者:linwaterbin

㈠ 内核简介

职责:

① 系统初始化:检查硬件资源并引导系统

② 进程调度:决定进程的启动及运行时间

③ 内存管理:为运行的进程分配内存

④ 安全:校验系统权限、selinux、iptables策略

⑤ 提供缓存

版本:

① 常规:一个或多个处理器,但RAM只能是4G或者小于4G

② PAE:多处理器,且可支持高达64G RAM

③ XEN:虚拟化所需

内核总是安装在/boot/vmlinuz-*

内核源码可到www.kernel.org网上下载


㈡ 内核模块

使用模块的几个理由:

① 减少内存使用:不需要的驱动程序不会占用内存

② 灵活性:模块可在系统安装后添加,这些模块通常被称为第三方驱动程序

③ 最大化运行时间:模块可在不重启的状态下无限次装载和卸载

在引导时需要的动态模块可用grub装入initrd(初始化内存盘),其他模块可在稍后根据需要装载

这些模块位于/lib/modules/$(uname -r)/目录下

内核模块工具:

--modprobe:可装载或者卸载模块

装载:[root@ linux~]# modprobe usb_storage

卸载:[root@ linux~]# modprobe -r usb_storage

模块只有在没有使用的前提下才可以被删除

--lsmod:列出所有已装载模块的列表、相应的大小及使用量

[root@ linux~]# lsmod
Module                  Size  Used by
netloop                10817  0 [permanent]
netbk                  80065  0 [permanent]
blktap                120485  2 [permanent]
blkbk                  24289  0 [permanent]
ip6table_filter        6849  0
ip6_tables            18181  1 ip6table_filter
ipt_MASQUERADE          7617  3
iptable_nat            10949  1

--modinfo:显示任意可用模块的信息

[root@ linux~]# modinfo ext3
filename:      /lib/modules/2.6.18-308.el5xen/kernel/fs/ext3/ext3.ko
license:        GPL
description:    Second Extended Filesystem with journaling extensions
author:        Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion:    26DC008FC415305C5F65313
depends:        jbd
vermagic:      2.6.18-308.el5xen SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1
module_sig:    883f3504f232fc6dc995cc0b59af121112e44a0a0b5f8ae8f7e90b5a613c37cfc50808c464f9a6d0a0a86a45e9d5fe9b7f9f4ed65957f3ce291b12fd

--/etc/modprobe.conf 配置文件包含适用于装载在系统中的常用模块设置,需要时可另行添加

[root@ linux~]# cat /etc/modprobe.conf
alias eth0 vmxnet
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix
alias snd-card-0 snd-ens1371
options snd-card-0 index=0
options snd-ens1371 index=0
remove snd-ens1371 { /usr/sbin/alsactl store 0 >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-ens1371


㈢ 管理initrd image

initrd提供在引导初期要装载的模块

这些模块通常和存储设备及文件系统有关,但也支持其它特性和硬件外设

文件位于/boot/initrd-$(uname -r).img

有时会由于某种原因添加额外的模块:

mkinitrd --with=Module_name /boot/initrd-$(uname -r).img $(uname -r)


㈣ 通过/dev访问驱动程序

/dev目录下的文件可用来访问驱动程序

我们可以从这些文件读取或写入数据:

例如:

读取:cat /dev/ttyS0

写入:echo “message” > /dev/ttyS0

这些文件可分两类:

① 块设备:处理数据存储,使用缓冲

如:

/dev/hda :IDE硬盘

/dev/sda:SATA硬盘

② 字符设备:适用于数据流,不适用缓冲

最常用的字符设备是终端

[root@ linux~]# who am i
root pts/2 2012-12-31 20:42 (:0.0)

/dev/tty[0-6]:虚拟控制台
/dev/null
/dev/random

“c”代表字符设备

“b”代表块设备

1,3:代表主号码为1,副号码为3

主号码确定访问哪个驱动程序

副号码可以让驱动程序区别相识的物理设备


㈤ 用udev管理/dev

Linux有个文化叫:设备即文件

udev可管理保存在/dev/目录下的文件

udev在插入或者拔出相应的设备时,可随时生成和删除文件

而且还允许系统管理员添加规则,以便修改/dev中默认的名称和权限,规则在/etc/udev/rules.d/目录下


㈥ 在/dev中添加文件

永久性:

① 先在/etc/udev/rules.d/中创建新文件

② 然后插入如下说明:

KERNEL=="sda",NAME="usbkey",SYMLINK="usbstorage"

这可令下次插入/dev/sda时生成一个名为usbkey的设备文件和一个名为usbstorage的符号链接

临时性:

mknod /dev/usbdevice b 8 0


㈦ 用/proc进行内核配置

/proc是一个虚拟文件系统(文件没有保存到硬盘上,重新引导后修改会被重新初始化)

用来显示进程信息、内存资源、硬件设备等

使用strings命令浏览效果会比较好

一些有趣的/proc条目

只读:

/proc/<PID>:正在运行的进程的信息

/proc/cpuinfo:处理器信息

/proc/meminfo:主内存使用

/proc/swaps:交换分区使用

/proc/modules:动态装载的模块

/proc/mounts:挂载的文件系统

/proc/net:网络活性和配置

/proc/version: 内核版本

读写:

/proc/sys/kernel/hostname

/proc/sys/net/ipv4/ip_forward :IP转发(开或者关)

/proc/sys/vm/drop_caches:强制内核从缓存释放一些内存

/proc/sys/vm/swappiness:显示将内存转换到转换设备的积极程度


㈧ sysctl:浏览和设定内核参数

显示所有参数及其值

sysctl -a

临时设定:

sysctl -w net.ipv4.tcp_syncookies=1

永久性设定:

/etc/sysctl.conf添加参数

操作完成后:

sysctl -p

可使新的配置文件与内核同步


㈨ 一些练习

① 关闭ping相应

[root@ linux~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0
[root@ linux~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
[root@ linux~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
1
[root@ linux~]# ping 192.168.1.107
PING 192.168.1.107 (192.168.1.107) 56(84) bytes of data.
64 bytes from 192.168.1.107: icmp_seq=1 ttl=128 time=0.674 ms
64 bytes from 192.168.1.107: icmp_seq=2 ttl=128 time=0.598 ms
64 bytes from 192.168.1.107: icmp_seq=3 ttl=128 time=0.659 ms

--- 192.168.1.107 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.598/0.643/0.674/0.044 ms
但是:
C:\Users\asus>ping 192.168.1.115

正在 Ping 192.168.1.115 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。

192.168.1.115 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
对/proc虚拟文件系统的改动是暂时的,如果你想永久性更该可参考上面。