1.Kernel Modules
- Modular kernel components 模块化的内核组件
- Kernel组件是外挂在kernel上的,这样增加了kernel的功能,kernel的大小不会改变。kernel组件的功能包括提供硬件的驱动程序及提供额外的文件系统。
- 在载入模块的过程中,可以配置模块。
- kernel模块存放在 /lib/modules
- 控制模块命令
lsmod 列出当前载入的模块
modprobe <module-name> 载入模块,可以同时载入模块相依性,而insmod 不具备载入相依性功能. - 如果加入一个未经论证的模块嵌入到kernel中会将Kernel变为tainted(被污染的) kernel,Redhat将不会提供技术支持。
2.配置kernel模块
- 查看模块信息:# /sbin/modinfo <module-name>
- 配置模块:/etc/modprobe.conf (可设定包括别名<默认别名包括网卡,声卡,usb控制器用的是哪个驱动>、参数及执行哪些动作
- 模块的相依性关系(调用和被调用)记录在:/lib/modules/$(uname -f)/modules.dep ,也可以用depmod -a 查看模块的相依性。
- 手动控制模块:insmod,rmmod (模块的载入与移除)
3./proc 虚拟目录
- /proc虚拟目录包含kernel的信息,通过它可以查看系统的状况.
- /proc目录下的所有文件大小为0,可以通过cat查看文件.例: cat /proc/cpuinfo
- 包括系统硬件,网络设置,正在执行中的程序及内存使用状态等.
- /proc中的子目录:
- /proc/scsi/ SCSI设备的信息
- /proc/sys/ kernel的参数
- /proc/<PID>/ 以数字的形式显示,目录中包含执行中的程序
- 修改/proc/sys/ 中的文件来及时变更正在执行中kernel的参数
4. 通过sysctl 修改/proc/sys配置
- 修改/proc/sys只能暂时变更kernel中的参数,当系统重开机后设定将会失效.
- sysctl 命令变更配置后,这些设定变为静态的,下次重开机设定仍生效.
使用sysctl变更后的配置会写入到 /etc/sysctl.conf ,
sysctl -p 查看sysctl.conf的内容 - 开机时会执行rc.sysinit这个login script的内容,而rc.sysinit在执行过程中会调用并执行/etc/sysctl.conf中的设定 .
5.重新检测和显示系统中的硬件设备
- dmesg and /var/log/dmesg
当 开机的过程中会看到kernel的引导信息,由于这些信息在屏幕上停留的时间非常短,所以系统会通过klogd服务来把这些信息写入到ring buff中(环形缓冲区).而环形缓冲区的空间是有限的,当ring buff被写滿后就把信息写入到/var/log/dmesg
- kudzu 用来维护系统中已经被检测到的硬件设备资料库,当系统检测到某设备或某设备被移除时,kudzu会自动配置或引导管理者配置这个设备.
/etc/sysconfig/hwconf 已经被检测到的硬件设备
/usr/share/hwdata/ kudzu会根据这个目录中的硬件资料库文件来检测目前系统中的硬件设备 - /proc 将检测到的硬件信息写入到该目录中
- hwbrowser 以图形界面显示系统中的硬件设备
6. PCI总线和ISA总线
- PCI BUS
- /sbin/lspci 列出主机中PCI设备
- /proc/bus/pci pci信息
- ISA BUS
- /proc/isapnp 大部份isa设备支持plug and play(PnP)
7. kerlnel支持的可热插拔的总线
USB 和 IEEE 1394 总线
- /sbin/hotplug 当检测到时自动启动该命令,并从 /etc/hotplug/ 中载入硬件驱动
- 把该硬件信息写入到 /proc/bus/ 目录中
- /sbin/lsusb 列出目前usb插槽中的硬件设备
- /dev/usb/ 系统自动挂载usb
PCMCIA总线
- /sbin/cardmgr ( /etc/pcmcia/ )
- Information in /proc/bus/pccard
- /sbin/cardctl 显示PCMCIA 插槽的状态
8.系统监听和控制进程
- top , gnome-system-monitor 显示系统进程
- vmstat 显示完整的内存,swap,system,cup使用情况
- free 显示内存的使用情况摘要
- renice # renice <priority> <PID> 调整某个进程 的优先权
nice # nice -n <priority> <app> 调整应用程序 的优先权, 开启应用程序时就要同时指定 优先权 - kill 传送系统信息给进程
kill -l 列出每种系统信息的代码
例: # kill -9 <PID> 强行结束进程