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)
上一篇 2016-09-11 17:43
下一篇 2016-09-11 18:59

相关推荐

  • tomcat优化

    安装过程就不多说了,本次主要说明我在实际工作中的一些优化。    1,修改tomcat的运行模式,常见的有 bio,nio, apr三种    我选择的apr模式,这种对tomcat的性能有较大提高. a:可以根据压力测试工具来进行测试观察。(其实我没对修改apr模式后压测,我直接问百度的) b:重新启动tomcat后…

    Linux干货 2016-06-28
  • 关于软硬链接那些事儿

           小编这周接触到了链接,那么重点来了,啥是链接呢小编觉得链接简单来说就是一种共享的方式,比如我们去逛超市,超市的入口就是‘链接’。在Linux中,链接又分为软连接和硬链接,想要了解他俩,就得先了解几个基本概念。 一:Inode       我们知道文件包含数据和元数据,它的数据…

    Linux干货 2017-07-22
  • Linux第三周

    一.正则表达式和扩展正则表达式 1.首先有各种工具来对文本进行的查看,分析,统计   cat 命令:查看文本的工具    cat主要有三大功能:1.一次显示整个文件。$ cat filename2.从键盘创建一个文件。$ cat > filename     只能创建新文件,不能编辑已有文件….

    2017-06-04
  • 推荐-LINUX磁盘管理

    Evernote Export LINUX磁盘管理 linux学习笔记 磁盘分区 文件系统 挂载 在操作系统中,磁盘管理属于设备管理的范畴。一块硬盘安装到主机之后称为裸设备,若要能够在Linux系统中使用必须对其进行如下步骤:分区=>格式化(创建文件系统)=>挂载 LINUX系统的设备类型 Linux沿袭Unix的风格,将所有设备认成是一个文件 …

    Linux干货 2016-04-05
  • netstat命令和ss命令

    详解netstat命令和ss命令

    Linux干货 2018-01-01
  • bash循环、函数、数组、内置的字符串处理、变量、trap信号捕捉

    流程控制 过程式编程语言: 顺序执行 如果是命令写错了,可以继续往下执行;但当语法错误时则不会往下继续执行; 选择执行 循环执行 条件选择:if语句 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi 多分支 if 判断条件1; then 条件为真的分支代码 …

    Linux干货 2017-05-21