內核體系

單內核體系設計、但充分借鑒了微內核設計體系的優點,為內核引入模塊化機制。

內核組成部分核心,一般為bzImage,通常在/boot目錄下,名稱為vmlinuz-VERSION-RELEASE;:

kernel: 內核

kernel object: 內核對象,一般放置于/lib/modules/VERSION-RELEASE/

[ ]: N

[M]: M

[*]: Y

 輔助文件:ramdisk

initrd

initramfs

 運行中的內核:

 uname命令:

uname – print system information

uname [OPTION]…

-n: 顯示節點名稱;

-r: 顯示VERSION-RELEASE;

例一:顯示內核節點名稱

[root@localhost ~]# uname -r
2.6.32-71.el6.x86_64
[root@localhost ~]# uname -n
localhost.localdomain

模塊:

lsmod命令:

顯示由核心已經裝載的內核模塊

例一:顯示已經裝載的模塊

[root@localhost ~]# lsmod
Module                  Size  Used by
sit                    10313  0
tunnel4                 2877  1 sit
autofs4                27683  3

顯示的內容來自于: /proc/modules文件

modinfo命令:

顯示模塊的詳細描述信息

modinfo [ -k kernel ]  [ modulename|filename… ]

-n: 只顯示模塊文件路徑

-p: 顯示模塊參數

-a: author

-d: description

-l: license

例一:查詢內核信息

[root@localhost ~]# modinfo xfs
filename:       /lib/modules/2.6.32-71.el6.x86_64/kernel/fs/xfs/xfs.ko
license:        GPL
description:    SGI XFS with ACLs, security attributes, large block/inode numbers, no debug enabled
author:         Silicon Graphics, Inc. srcversion:     74805DEC132C154FBA7FC91
depends:        exportfs
vermagic:       2.6.32-71.el6.x86_64 SMP mod_unload modversions

modprobe命令:

裝載或卸載內核模塊 

modprobe [ -C config-file ]  [ modulename ]  [ module parame-ters… ]

配置文件:/etc/modprobe.conf, /etc/modprobe.d/*.conf

       modprobe [ -r ] modulename…

例一:卸載內核

[root@localhost ~]# modprobe xfs
[root@localhost ~]# lsmod |grep xfs
xfs                   982863  0
exportfs                4202  1 xfs
[root@localhost ~]# modprobe -r xfs
[root@localhost ~]# lsmod | grep xfs 

       depmod命令:

       內核模塊依賴關系文件及系統信息映射文件的生成工具;

       裝載或卸載內核模塊:

       insmod命令:

       insmod [ filename ]  [ module options… ]

例一:安裝指定路徑

[root@localhost ~]# insmod $(modinfo -n exportfs)
[root@localhost ~]# insmod $(modinfo -n xfs)
[root@localhost ~]# lsmod
Module                  Size  Used by
xfs                   982863  0

       rmmod

       rmmod [ modulename ]

例一:移除內核 

[root@localhost ~]# rmmod xfs
[root@localhost ~]# lsmod | grep xfs
[root@localhost ~]# lsmod | grep exportfs
exportfs                4202  0
[root@localhost ~]# rmmod exportfs

   /proc目錄:

     內核把自己內部狀態信息及統計信息,以及可配置參數通過proc偽文件系統加以輸出; 

     參數:

     只讀:輸出信息

     可寫:可接受用戶指定“新值”來實現對內核某功能或特性的配置

     /proc/sys

     (1) sysctl命令用于查看或設定此目錄中諸多參數;

     sysctl -w path.to.parameter=VALUE

     ~]# sysctl -w kernel.hostname=mail.magedu.com 

     (2) echo命令通過重定向的方式也可以修改大多數參數的值;

     echo “VALUE” > /proc/sys/path/to/parameter

     ~]# echo “www.magedu.com” > /proc/sys/kernel/hostname

     sysctl命令:

     默認配置文件:/etc/sysctl.conf

     (1) 設置某參數

     sysctl -w parameter=VALUE

     (2) 通過讀取配置文件設置參數

     sysctl -p [/path/to/conf_file]

例一:重新讀取配置文件

[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1

     內核中的路由轉發:

     /proc/sys/net/ipv4/ip_forward

     常用的幾個參數:

     net.ipv4.ip_forward

     vm.drop_caches

     kernel.hostname

例一:回收路由

[root@localhost ~]# sysctl -w vm.drop_caches=1
vm.drop_caches = 1 

    /sys目錄:

     sysfs:輸出內核識別出的各硬件設備的相關屬性信息,也有內核對硬件特性的設定信息;有些參數是可以修改的,用于調整硬件工作特性。

     udev通過此路徑下輸出的信息動態為各設備創建所需要設備文件;udev是運行用戶空間程序;專用工具:udevadmin, hotplug;

     udev為設備創建設備文件時,會讀取其事先定義好的規則文件,一般在/etc/udev/rules.d/usr/lib/udev/rules.d目錄下;

 

    ramdisk文件的制作:

 

     (1) mkinitrd命令

     為當前正在使用的內核重新制作ramdisk文件

     ~] # mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

例一:為當前正在使用的內核重新制作ramdisk文件

[root@localhost ~]# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
[root@localhost ~]# ls /boot/
config-2.6.32-71.el6.x86_64  initramfs-2.6.32-71.el6.x86_64.img  System.map-2.6.32-71.el6.x86_64
efi                          lost+found                          vmlinuz-2.6.32-71.el6.x86_64
grub                         symvers-2.6.32-71.el6.x86_64.gz 

     (2) dracut命令

     為當前正在使用的內核重新制作ramdisk文件

     ~] # dracut /boot/initramfs-$(uname -r).img $(uname -r)

 

    編譯內核:

     前提:

     (1) 準備好開發環境;

     (2) 獲取目標主機上硬件設備的相關信息;

     (3) 獲取到目標主機系統功能的相關信息,例如要啟用的文件系統;

     (4) 獲取內核源代碼包;

     www.kernel.org

 

     準備好開發環境:

     包組(CentOS 6)

     Server Platform Development

     Development Tools

     目標主機硬件設備相關信息:

     CPU

     ~]# cat /proc/cpuinfo

     ~]# x86info -a

     ~]# lscpu

[root@localhost ~]# x86info -a

    PCI設備:

     ~]# lspci

     -v

     -vv

     ~]# lsusb

     -v

     -vv

[root@localhost ~]# lsusb

     ~]# lsblk

     了解全部硬件設備信息

     ~]# hal-device

[root@localhost ~]# hal-device

     簡單依據模板文件的制作過程:

     ~]# tar xf linux-3.10.67.tar.xz -C /usr/src

     ~]# cd /usr/src

     ~]# ln -sv linux-3.10.67 linux

     ~]# cd linux

     ~]# cp /boot/config-$(uname -r) ./.config

     ~]# make menuconfig

     ~]# screen

     ~]# make -j #

     ~]# make modules_install

     ~]# make install

       重啟系統,并測試使用新內核;

[root@localhost ~]# tar xf linux-3.10.105.tar.xz -C /usr/src
[root@localhost ~]# cd /usr/src
[root@localhost src]# ls
debug  kernels  linux-3.10.105
[root@localhost ~]# ls -lh linux-3.10.105.tar.xz
-rw-r--r--. 1 root root 70M 5月  30 2017 linux-3.10.105.tar.xz
[root@localhost ~]# tar xf linux-3.10.105.tar.xz -C /usr/src
[root@localhost ~]# cd /usr/src
[root@localhost src]# ls
debug  kernels  linux-3.10.105
[root@localhost src]# cd linux
[root@localhost linux]# ls -a
.      COPYING        drivers     include  Kconfig   MAINTAINERS  README          security  virt
..     CREDITS        firmware    init     kernel    Makefile     REPORTING-BUGS  sound
arch   crypto         fs          ipc      lib       mm           samples         tools
block  Documentation  .gitignore  Kbuild   .mailmap  net          scripts         usr
[root@localhost linux]# cp /boot/config-2.6.32-71.el6.x86_64 .config
[root@localhost linux]# ls -a
.      .config  Documentation  .gitignore  Kbuild   .mailmap     net             scripts   usr
..     COPYING  drivers        include     Kconfig  MAINTAINERS  README          security  virt
arch   CREDITS  firmware       init        kernel   Makefile     REPORTING-BUGS  sound
block  crypto   fs             ipc         lib      mm           samples         too

 回顧:內核組成部分、內核編譯 

內核組成部分:

核心、模塊

核心:/boot/vmlinuz-VERSION-RELEASE

模塊:/lib/modules/VERSION-RELEASE/ 

模塊管理的相關命令:

lsmod, modinfo, modprobe [-r], insmod, rmmod, depmod

內核編譯:

[ ]

[*]

[M] 

步驟:

make menuconfig:配置內核選項

.config:文本文件

make [-j #]

make modules_install

make install

安裝bzImage/boot/vmlinuz-VERSION-RELEASE

生成initramfs文件

編輯grub的配置文件

原創文章,作者:kang,如若轉載,請注明出處:http://www.www58058.com/77387

(0)
kangkang
上一篇 2015-09-01 23:12
下一篇 2015-09-05 20:53

相關推薦

  • bash腳本編程之流程控制if、for、while、until簡介

    概述     之前介紹了一些bash腳本編程的變量、運算、條件測試的一些基礎內容,了解了腳本實際上就是一些語句加上一些流程控制組合起來,實現某種功能的可執行文件。我們知道,條件測試的目的,實際就是為了實現一種流程的控制,那么本篇就簡單介紹一下bash里面常見的流程控制語句,包括選擇、循環等內容,具體包括以下幾個部分: …

    Linux干貨 2016-08-18
  • 優云實踐:巧用Salt,實現CMDB配置自動發現

    隨著互聯網+新形勢的發展,越來越多的企業步入雙態(穩敏雙態)IT時代,信息化環境越來越復雜,既有IOE三層架構,也有VCE、Openstack等云虛擬化架構和互聯網化的分布式大數據架構。所以,企業急需建立一套合適的配置管理庫(CMDB),像人類“大腦”一樣統一存儲從基礎架構到業務應用各層面的配置信息,以便協調“身體”(運維系統)各部分完成復雜的運維工作。 C…

    系統運維 2016-07-26
  • 決不放棄

    堅持到底!

    Linux干貨 2017-11-17
  • find命令淺談

    本章內容   使用locate命令 ?使用find命令 ?使用Gnome搜索工具 ?壓縮和解壓縮工具 文件查找 在文件系統上查找符合條件的文件; ?文件查找:locate, find 非實時查找(數據庫查找):locate 實時查找:find locate 查詢系統上預建的文件索引數據庫 /var/lib/mlocate/mlocate.db ?依…

    Linux干貨 2016-08-15
  • gitlab-ce官方文檔查看備錄

    gitlab文檔 關于gitlab-ce GitLab Community Edition (CE) is available freely under the MIT Expat license. 關于unicorn的workers For&nbs…

    Linux干貨 2015-09-06
  • 馬哥教育網絡班20期+第二周課程練習

    Table of Contents 1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 目錄管理 文件管理 2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。 腳本返回值 命令或路徑補全和展開 3、請使用命令行展開功能來完成以下練習: (1)、創建/tmp目錄下的:a_c, a_d, b_c, b (2…

    Linux干貨 2016-06-23
欧美性久久久久