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

相关推荐

  • N25-第十一周

    1、详细描述一次加密通讯的过程,结合图示最佳。 发送者: 1.使用单项加密算法提取生成数据的特征码 2.使用自己的私钥加密特征码附加在数据后面 3.生成用于对称加密的临时密钥 4.用此临时密钥加密数据和已经使用私钥加密后的特征码 5.使用接收方的公钥加密此临时密钥,附加在对称后的数据后方 接收方: 1.使用自己的私钥解密的临时秘钥;从而获得对方的对称密钥 2…

    2017-06-05
  • 用户和组命令及相关配置文件总结

    用户和组相关的配置文件 目录 一、创建用户、组和权限相关命令… 1 1、useradd 帐号建立… 1 2、usermod 用户属性更改… 2 3、Passwd. 2 4、userdel 2 6、chfn. 3 7、Chsh. 3 8、finger. 3 9、groupadd. 3 10、Groupdel 3 11、gro…

    Linux干货 2016-10-24
  • redis + keepalived 双主模型

    redis + keepalived 双主模型 架构图:    1.vip默认绑定在redis主上,由redis主提供服务,redis从为备用节点。(实际上提供服务的只是vip) 2.当redis主挂掉,vip会默认漂移至redis从。由redis从提供服务,redis主已经挂掉。 3.当redis主已经恢复,redis从继续提供服务和挂…

    Linux干货 2016-06-23
  • 文件处理工具

    Linux的哲学思想之一是一切皆文件,所有系统中有许多文本文件。因此Linux有许多关于文本处理的命令。 cat命令 连接文件并打印到标准输出设备上,cat经常用来显示文件内容。 语法 cat [OPTION]… [FILE]… 常用选项 -A, –show-all #显示所有控制符 -b, –num…

    Linux干货 2016-08-08
  • CentOS上配置https服务

    在CentOS6.9(http2.2)配置https   创建前准备:       安装opensssl包  和 http2.2 1、在主机(192.168.109.100)创建私有CA   (1)获取私钥       …

    2017-06-04
  • N22-℡浮生.若夢 ╮-第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]# who |cut -d' ' -f1 |uniq -c    1 root    2 ch…

    Linux干货 2016-09-15