Kernel——linux的核心

Linux Kernel:


CentOS 启动流程:POST –> BootLoader(BIOS,MBR) –>Kernel(initrd) –> rootfs –> switch_root –> /sbin/init

         root (hd0,0)

         kernel

         initrd

ldd命令:

         ldd – print shared library dependencies

        ldd [option]… FILE

内核设计体系:单内核、微内核


·Linux:单内核设计,但充分借鉴了微内核体系的设计的优点;为内核引入了模块化机制

·内核的组成部分:

         kernel:内核核心。一般为bzimage,通常位于/boot目录,名称为vmlinuz-VERSION-release

         kernel object:内核对象,即内核模块,一般放于/lib/modules/VERSION-release/

                 内核模块于内核核心版本一定要严格匹配:

                

                 [ ]:N

                 [M]:Module

                 [*]:Y,编译进内核核心

                

                 内核:动态装载和卸载

        

         ramdisk:辅助性文件,并非必须,这取决于内核是否能直接驱动rootfs所在的设备

                 目标设备驱动:例如SCSI设备的驱动

                 逻辑设备驱动:例如LVM设备的驱动

                 文件系统:例如xfs文件系统

                

                 ramdisk:是一个简装版的根文件系统

·内核信息获取:

         uname命令:

                 uname – print system information

                

                 格式:uname [OPTION]…

                         -r:内核的release号

                         -n:主机名

                         -a:显示所有信息

·模块信息获取和管理:

        ·lsmod命令:

                 lsmod – program to show the status of modules in the Linux Kernel

                显示的内核信息来自于/proc/modules

        

        ·modinfo命令:

                 modinfo – program to show information about a Linux Kernel module

                

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

                         -F field:仅显示指定字段的信息

                         -n:显示文件路径

                

        ·modprobe命令:

                 modprobe – program to add and remove modules from the Linux Kernel

                

                 modprobe [-r] module_name

                         模块的动态装载:modeprobe module_name

                         模块的动态卸载:modeprobe -r modele_name

                                 网卡模块:e1000

        

        ·depmod命令:

                 depmod – program to generate modules.dep and map files

                内核模块依赖关系文件的生成工具

        

        ·模块的装载和卸载的另一组命令:

                 insmod命令:

                         insmod [filename] [module options…]

                                 filename:模块文件的文件路径

                

                 rmmod命令:

                         rmmod [module_name]

·ramdisk文件的管理:

         (1) mkinitrd命令:

                 为当前使用中的内核重新制作ramdisk文件:

                 mkinitrd [OPTION…] [<initrd-image>] <kernel-version>

                         –with=<module>:除了默认的模块之外需要装载至initramfs中的模块

                         –preload=<modele>:initramfs所提供的模块需要预先装载的模块

                

                 示例:# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

        

         (2)dracut命令

                 dracut – create initial ramdisk images for preloading modules

                

                 dracut [OPTION…] [<image>[<kernel version>]]

                

                 示例:# bracut /boot/initramfs-$(uname -r).img $(uname -r)

·内核信息输出的伪文件系统:

         ·/proc:内核状态和统计信息的输出接口;同时,还提供一个配置接口,/proc/sys

                 参数:

                         只读:信息输出;例如/proc/#/*

                         只写:可接收用户指定一个“新值”来实现对内核某功能或特性的配置;/proc/sys/

                

                         /proc/sys:

                                 net/ipv4/ip_forward相当于net.ipv4.ip_forward

                        

                         (1)sysctl命令

                                 专门用于查看或设定/proc/sys目录下参数的值

                                 sys [option] [variable[=value]]

                                         查看:

                                                 # sysctl -a

                                                 # sysctl variable

                                         修改其值:

                                                 # sysctl -w variable=value

                        

                         (2)文件系统命令 (cat,echo)

                                 查看:

                                         # cat /proc/sys/PATH/TO/SOME_KERNEL_FILE

                                 设定:

                                         # echo "VALUE" > /proc/sys/PATH/TO/SOME_KERNEL_FILE

                        

                         注意:上述两种方式的设定仅对当前运行内核有效

                        

                         (3)配置文件:/etc/sysctl.conf ,/etc/sysctl.d/*.conf

                                 修改配置文件后,立即生效的方式:

                                         sysctl -p [/PATH/TO/CONFIG_FILE]

                

                         内核参数:

                                 net.ipv4.ip_forward:核心转发

                                 vm.drop_caches:虚拟内存caches

                                 kernel.hostname:主机名

                                 net.ipv4.icmp_echo_ignore_all:忽略所有ping操作

                                 0:开启   1:关闭

         ·/sys目录:

        

                 sysfs:输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特殊的可设置参数,对此些参数的修改,即可定制硬件设备工作特性

                

                 udev:同读取/sys目录下的硬件设备信息按需为各硬件设备创建文件:udev是用户空间程序;专用工具:devadmin,hotplug

                

                 udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rule.d/目录下,以及/usr/lib/udev/rules.d/目录下

原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/45557

(0)
megedugaomegedugao
上一篇 2016-09-11 17:43
下一篇 2016-09-11 18:59

相关推荐

  • Linux程序包管理之RPM

    前言 Linux平台上常见的软件包格式主要有三种,分别是源码格式包、通用二进制格式包和rpm格式包本文主要讲解rpm格式包安装及管理。RPM是Redhat Package Manager的缩写,是由Redhat公司开发的Linux软件包管理具,因其便捷的管理方式与开源思想,逐渐被其他Linux发行商所采用,现已成Linux平台下通用的软件包管理方式。 rpm…

    Linux干货 2015-03-28
  • 基于mysql的数据库分析系统(rsyslog)

    rsyslog:日志收集和存储系统 1.事件在电脑中的日志记录格式为:     日期时间 主机 进程[pid]:事件内容 2.rsyslog的特性:     多线程;     UDP,TCP,SSL/TLS,RELP; &nbsp…

    Linux干货 2016-10-23
  • shell编程作业

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 [root@localhost sh.log]# cat systeminfo.sh  #!/bin/bash #author:DYW #显示当前主机系统…

    Linux干货 2016-08-15
  • Linux基础解析;echo;man;centos;runlevel;PS1;screen;shell 倒三角;date -d等命令—-fazion blog at22.July

    Linux基础解析 fazionlan blog in 178Linux.July 20nd. 内核、版本信息 # uname -a                 &n…

    Linux干货 2016-07-29
  • Linux终端和伪终端简述

    本文简述Linux各种类型终端的区别以及如何用命令查看终端类型

    Linux干货 2018-03-26
  • Linux网络属性管理(一)

    MarkdownPad Document Linux网络属性管理(一) 将一台linux主机接入互联网一般需要配置以下几个方面的参数: IP/mask –>  IP地址和子网掩码 路由 –> 默认网关 DNS服务器 配置方式 静态指定:   1、ifcfg:ifconfig,route,netstat   2、i…

    Linux干货 2016-06-12