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

相关推荐

  • sed行编辑器

    Linux文本处理三剑客之一:sed(Stream Editor)流编辑器 sed:     将指定的文本文件内容逐行读取至sed的临时内存空间当中,称为"模式空间",而后逐行查看是否被sed的地址定界所匹配到,如果匹配,则执行相应的编辑操作,否则,默认将模式空间中的内容打印至标准输出  …

    Linux干货 2016-08-15
  • bash 的过程式和循环式的编写

           bash脚本的编写,对于Linux这个多用户,多任务的系统,有很大的帮助,脚本可以帮助我们定时执行任务,过滤文本,检查系统性能等等。下面我们来了解一下过程式和循环式脚本的编写。 使用read 命令来接受输入 使用read 来把输入值分配给一个或多个shell 变量:  &nb…

    Linux干货 2016-08-24
  • 一位老it工程师的忠告,新手进来学习,老手进来体会,收获很大。

    诸位,咱当电子工程师也是十余年了,不算有出息,环顾四面,也没有看见几个有出息的!回顾工程师生涯,感慨万千,愿意讲几句掏心窝子的话,也算给咱们师弟师妹们提个醒,希望他们比咱们强! [1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐…

    Linux干货 2015-02-26
  • sed和awk和数组实践-week15

    1、总结sed和awk的详细用法; (1) sedsed:Stream EDitor,流编辑器,行编辑器 基本原理:一次从文本中读取一行,放到sed自己的工作车间加工, 该工作车间叫做模式空间(pattern space)判断该行是否符合过滤模式, 如果符合过滤模式: 送往标准输出(终端) 执行编辑操作, 从模式空间中处理以后,处理过后送到标准输出(不一定有…

    Linux干货 2017-05-06
  • class-7 积累应用

    1、当天课程内容笔记 2、当天练习 3、预习 4、取本机ip地址 [root@6 ~]#  ip addr|egrep -o '(\b([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b\.)(\b([1-9]|[1-9][0-9]|1[0-…

    Linux干货 2016-08-08
  • Linux启动和内核管理

                                        Linux启动和内核管理 本章内容: centos5和centos6的启动流程 服务管理 grub…

    系统运维 2016-09-21