|
一、内核模块 ( Kernel Modules )
内核中的许多模块常被编译成动态载入的模式,这些模块是外挂在内核之上,这样可以增加内核的功能,但不会增加内核的大小。
内核模块有两种功能:
1、计算机周边的设备的驱动程序( peripheral device drivers )
2、提供一些额外的文件系统( supplementary filesystems )
在载入这些模块的时候,可以进行设定,这些模块存放在 /lib/modules 下。--- 对这些模块的控制:
lsmod /*列出目前所载入的模块*/
modprobe /* 临时载入某个模块,用法: modprobe <module-name> */
二、内核模组配置 ( Kernel Module Configuration )
1、检查模块( /sbin/modinfo )
modinfo <module-name>
此条指令可以看到模块的相关参数和授权书,如执行 modinfo ext3 后:
filename: /lib/modules/2.6.27.7-4-pae/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: 3619A89175034778E142674
depends: mbcache,jbd
supported: yes
vermagic: 2.6.27.7-4-pae SMP mod_unload modversions 586
2、通过 /etc/modprobe.conf 来设置模块
在 /etc/modprobe.conf 中可以设置:
aliases /*可以设置 ethernet interface, sound card,usb controller 用的程序*/
parameters /*给模块提供参数*/
actions /*在载入时要执行哪些动作*/
2.1 模块的依赖性:
有些模块在使用时会调用到其他的一些模块,这就是模块的依赖性。
载入模块: insmod <module-name>
移出模块:rmmod <module-name>
3、/proc ( The /proc filesystem )
/proc is a virtual filesystem containing information about the running kernel
/proc 并不存在于磁盘中,而只是一个虚拟目录。其中包含了目前正在运行的 kernel 的信息。通过它可以查看目前系统的状况。
若列出 /proc 中内容的,可以看出里面所有的文件大小都为 0 ,但仍然可以使用 cat 来查看这些文件,如:
cat /proc/cpuinfo
执行完指令后,列出如下内容(部分):
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU 6320 @ 1.86GHz
stepping : 6
cpu MHz : 2659.997
cache size : 4096 KB
....
/proc 中所包含的 kernel 信息,包括硬件信息,网络设置,正在执行中的程序,以及内存的使用状况等等。
/proc 中也包含有一些子目录,如:
/proc/scsi /* 包含着 scsi 的信息*/
/proc/sys /*包含这 kernel 的参数*/
/proc/<PID>/ /* 所有执行中的程序的信息 */
可以借着修改 /proc/sys 这个子目录中的参数,可以即时的变更正在运行中的 kernel 的参数( The /proc/sys subdirectory allows administrators to modify certain parameters of a running kernel )。比如:
在 /proc/sys/net/ipv4/icmp_echo_ignore_all 这个文件,里面的值为 0 ,表示接受所有的 icmp 封包。如使用 ping 命令时,要是两台计算机连接无阻,则可以看到返回来的 icmp 封包。那么,像下面给 icmp_echo_ignore_all 改一下参数:
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
这样以来,再使用 ping 命令时,就再也怎么 ping 不通了。
4、通过 sysctl 指令配置 /proc/sys 中的内容 ( /proc/ys configuration with sysctl )
修改 /proc/sys 里面的内容所产生的设定,将在下一次开机后失效。
使用 sysctl 命令进行设定就可以产生 “静态” 的效果,进行国的设置将写在 /etc/sysctl.conf 中。
在开机时,系统会调用 rc.sysinit 脚本,然后这个脚本里会调用 sysctl 这个指令,并且使用 /etc/sysctl.conf 里面的设置。
5、检测系统硬件设备 ( General Hardware Resources )
系统在开机时,对硬件的检测简要流程如下图所示:
在上图中,kernel 会启动一个叫 klgod 的服务,然后这个服务把检测信息存完 ring buffer (环形缓冲区) 中,然缓冲区毕竟有限,若是信息量太大,就会使后来的信息冲掉原来的信息,所以,ring buffer 中的信息也写往 /var/log/dmesg 中。故使用:
dmesg
或
cat /var/log/dmesg | more
都可以查看到硬件信息。
6、 系统相应总线( System Bus Support )
PCI 总线( PCI BUS ):
查看 PCI 总线情况命令: lspci
PCI 设备的信息存储在 /proc/bus/pci 中
ISA BUS:
几乎要淘汰的东西了!
7、热插拔的支持( Hotswappable Bus Support)
查看 USB 情况命令: lsusb
设备相应目录: /dev/usb
总结一下这些插入设备后系统对其反应的过程:
插入设备,被系统检测到,系统一般从 /sbin 下调用相应的服务,然后再从 /etc 下加载相应的配置文件,最后把信息写入 /proc 下的相应子目录中。
8、系统监视与进程控制( System monitoring and Process Control )
top 命令
gnome-system-monitor 启动系统监视器的图形界面
vmstat - 报告虚拟内存的统计信息
free 指令查看内存和虚拟内存的使用情况
nice 以哪个优先级启动程序,用法:
nice -n <priority> <app>
renice 改变某个进程的优先级,用法:
renice <priority> <PID>
kill 指令,杀死进程 |
|