kernel信息及其相關命令
阿新 • • 發佈:2018-02-14
time modules usr 配置文件 系統啟動 amt 通過 ... 修改
內核
linux內核是單內核體系設計、但充分借鑒了微內核設計體系的優點,為內核引入模塊化機制
內核組成部分:
kernel:
內核核心,一般為bzImage,通常在/boot 目錄下,名稱為vmlinuz-VERSION-RELEASE.
kernel object:
內核對象,一般放置於/lib/modules/VERSION-RELEASE/
輔助文件:
ramdisk
initrd
initramfs
內核版本
運行中的內核: uname 命令: uname - print system information uname [OPTION]... -n: 顯示節點名稱; -r: 顯示VERSION-RELEASE; -a: 顯示所有信息 -s, --kernel-name 顯示kernel名稱 -v, --kernel-version 顯示kernel版本 -m, --machine 顯示機器硬件名稱 -p, --processor 顯示進程類型 or "unknown" -i, --hardware-platform 顯示硬件平臺or "unknown" -o, --operating-system 顯示操作系統 uname -a Linux centos6 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux Linux: 操作系統類型 centos6: 操作系統的主機名 2.6.32-696.el6.x86_64: 內核版本信息 #1 SMP Tue Mar 21 19:29:05 UTC 2017: 內核的編譯日期 x86_64 x86_64 x86_64: 這三組分別表示, 操作系統版本,處理器類型,硬件平臺 GNU/Linux: 操作系統名稱
內核模塊命令
lsmod lsmod - Show the status of modules in the Linux Kernel 顯示核心已經裝載的內核模塊 顯示的內容來自於/proc/modules 文件 modinfo 顯示模塊的詳細描述信息 modinfo - Show information about a Linux Kernel module modinfo [options] filename [args] Options: -a, --author 僅顯示‘author‘ -d, --description 僅顯示‘description‘ -l, --license 僅顯示‘license‘ -p, --parameters 僅顯示‘parm‘,顯示模塊參數 -n, --filename 僅顯示‘filename‘,只顯示模塊文件路徑 -0, --null 使用\0取代\n -F, --field=FIELD 僅打印給出的FIELD -k, --set-version=VERSION 使用VERSION代替`uname -r` -b, --basedir=DIR 使用DIR作為文件系統的root目錄,for/lib/modules lsmod |grep xfs;modinfo xfs
內核模塊管理
modprobe 裝載或卸載內核模塊 modprobe [ -C config-file ] [ modulename ] [ module parame-ters... ] modprobe [-v] [-V] [-C config-file] [-d <dirname> ] [-n] [-i] [-q] [-b] [-o <modname>] [ --dump-modversions ] <modname> [parameters...] modprobe -r [-n] [-i] [-v] <modulename> ... modprobe -l -t <dirname> [ -a <modulename> ...] 裝載模塊:modprobe mod_name(這裏會自動解決模塊兒間的依賴關系) 卸載模塊:modprobe -r mod_name 配置文件:/etc/modprobe.conf,/etc/modprobe.d/*.conf depmod 內核模塊依賴關系文件及系統信息映射文件的生成工具 depmod -[aA] [-n -e -v -q -V -r -u -w -m][-b basedirectory] [forced_version] depmod [-n -e -v -q -r -u -w] [-F kernelsyms] module1.ko module2.ko ... insmod 裝載模塊文件,不自動解決依賴模塊 insmod [ filename ] [ module options... ] insmod `modinfo –n exportfs` lnsmod `modinfo –n xfs` rmmod 卸載模塊 rmmod [ -f ] [ -w ] [ -s ] [ -v ] [ modulename ] rmmod xfs rmmod exportfs
/proc
/proc 目錄
內核把自己內部狀態信息及統計信息以及可配置參數通過proc 偽文件系統加以輸出。
該目錄是系統與內核交互的一個偽文件系統接口,/proc下的每個文件名都是內核參數,目錄名為內核參數節點(子系統或子功能)信息。
該目錄下的一些只讀文件表示的是輸出的內核信息,一些可以寫的文件表示可修改的內核工作特性,這些可寫的文件分布在/proc/sys目錄下。
偽文件系統的特定就是文件不能直接使用編輯器編輯,但可以使用echo和sysctl -w進行修改。
參數:
只讀的輸出信息
可寫是指可接受用戶指定“新值”來實現對內核某功能或特性的配置
可寫的內核參數放在/proc/sys,此目錄下的文件可臨時更改,是立即生效的,但內核重啟後無效
sysctl 命令用於查看或設定此目錄中諸多參數
sysctl -w path.to.parameter=VALUE
sysctl -w kernel.hostname=mail.magedu.com
echo命令通過重定向方式也可以修改大多數參數的值
echo "VALUE" > /proc/sys/path/to/parameter
echo “websrv” > /proc/sys/kernel/hostname
內核參數配置文件/etc/sysctl.conf
格式為path.to.paramter=NEW_VALUE
註意:
此種設定不能立即生效,但重啟系統後一直生效,為了不重啟系統而使其生效的方式:
sysctl -p [/path/to/conf_file]
/sys
/sys 目錄:
該目錄為文件系統提供接口,所謂sysfs(偽文件系統)主要用於輸出內核識別出的各硬件設備的相關屬性信息,也有內核對硬件特性的設定信息。
有些參數是可以修改的,用於調整硬件工作特性。
這些設備文件僅僅是用戶空間訪問設備時的一個接口。
在系統啟動過程當中,當內核探測到有硬件設備時,會將硬件設備的信息輸出到/sys目錄,然後系統根據/sys目錄中的硬件設備信息來創建對應的設備文件。
這些設備文件是udev通過讀取/sys目錄下保存硬件設備的相關信息來為每個當前內核探測到的硬件設備創建設備文件,創建設備文件的權限、名稱等屬性是可定制的。
udev通過此路徑下輸出的信息動態為各設備創建所需要設備文件,udev 是運行用戶空間程序。
udev為設備創建設備文件時,會讀取其事先定義好的規則文件,一般是在/etc/udev/rules.d 及/usr/lib/udev/rules.d目錄下,這些規則文件是可以修改的。
專用工具:udevadm, hotplug
sysctl
sysctl - configure kernel parameters at runtime,配置內存參數
sysctl [options] [variable[=value] ...]
sysctl -p [file or regexp] [...]
Options:
-a, --all 顯示所有變量
-A alias of -a
-X alias of -a
--deprecated 列出不用的參數
-b, --binary print value without new line
-e, --ignore 忽略不知道變量錯誤
-N, --names 顯示不帶值的變量名
-n, --values 僅顯示變量的值
-p, --load[=<file>] 從文件中讀取值
-f alias of -p
--system 從所有的系統目錄中讀取值
-r, --pattern <expression> 選擇匹配到的設置
-q, --quiet 不顯示變量設置
-w, --write 是變量可寫
-o does nothing
-x does nothing
-d alias of -h
默認配置文件:/etc/sysctl.conf
設置某參數
sysctl -w parameter=VALUE
通過讀取配置文件設置參數
sysctl -p [/path/to/conf_file]
查看所有生效參數
sysctl -a
常用的幾個參數:
net.ipv4.ip_forward
net.ipv4.icmp_echo_ignore_all
vm.drop_caches
釋放緩存:
echo 1 > /proc/sys/vm/drop_caches
sysctl -w net.ipv4.ip_forward=1
kernel信息及其相關命令