㈠ 内核简介
职责:
① 系统初始化:检查硬件资源并引导系统
② 进程调度:决定进程的启动及运行时间
③ 内存管理:为运行的进程分配内存
④ 安全:校验系统权限、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虚拟文件系统的改动是暂时的,如果你想永久性更该可参考上面。