1. 程式人生 > >kernel信息及其相關命令

kernel信息及其相關命令

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信息及其相關命令