Linux由两部分组成:内核核心+内核模块
核心的命名通常是vmlinuz-VERSION-release,模块的放置于/lib/modules/VERSION-release/

一旦系统运行起来,内核将被加载进内存,查看运行中的内核基本信息
uname [OPTION]...
            -r:内核的release号
            -n:主机名

模块信息获取和管理

如果要了解运行中的内核所加载的模块
lsmod命令   #显示的信息来自于/proc/modules

内核模块详细信息
modinfo [-F field] [-k kernel] [modulename|filename...]
            -F field: 仅显示指定字段的信息;
            -n:显示文件路径;
            -d:显示描述
            -p:显示模块参数

内核模块装卸载
modprobe  [-r]  module_name
            模块的动态装载:modprobe  module_name   #/etc/modprobe.conf给模块传递参数
            动态卸载:modprobe  -r  module_name

模块依赖
          /lib/modules/version-release/目录下有moudules.dep文件记载了模块间的依赖关系,并且此文件被编译成二进制格式(modules.dep.bin)使用,如果此文件损坏或丢失可以使用depmod命令重新生成(也可以生成/boot/system.map)

装卸载内核模块
          insmod命令:insmod  [filename]  [module options...]    装载需完整路径
          rmmod命令:rmmod  [module_name]    卸载只需要模块名称
          此方式需要自行解决模块间的依赖关系

/proc目录简介
把内核可配置参数信息和当前运行状态信息通过/proc伪文件系统
内核参数:可写,可接受用户指定一个“新值”来实现对内核某功能或特性的配置,一般位于/proc/sys,除此其他目录为只读信息
                   参数的修改方式:(1)sysctl命令管理内核参数。(2)echo重定向输出至文件
运行状态:只读,仅用于信息显示。如:此目录下数字命名的子目录为当前运行进程的信息

内核参数调整
(1) sysctl命令
    专用于查看或设定/proc/sys目录下参数的值;
     sysctl [options]  [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
注意:上述两种方式的设定仅当前运行内核有效,并不会永久生效,使用配置文件:/etc/sysctl.conf,  /etc/sysctl.d/*.conf
并立即生效的方式:sysctl  -p  [/PATH/TO/CONFIG_FILE]

示例:
free –m   查看缓存占用的内存空间
  /proc/sys/vm/drop_caches=1  回收buffers和cache的内存空间

/sys目录简介
  内核用来输出已经识别硬件设备的属性,也有内核对硬件特性的可设置参数,某些参数修改可用于调整硬件设备工作特性。

/dev目录简介
  此目录用于根据已有硬件设备输出设备文件,然而内核访问设备是直接通过驱动程序的,只有用户访问硬件设备的时候才需要通过设备文件,然而内核启动时探测出各个已存在的硬件信息是不会为之创建设备文件的。所以2.4内核之前是预先创建好各种硬件所有的设备文件,后来是当用户空间需要使用硬件设备时重新触发内核探测硬件,并把信息保留在/sys目录,udev通过读取此目录信息,来为已有的设备创建设备文件。
udev创建出来的设备文件命名都是驱动文件名,可以读取其事先定义好的规则文件,一般在/etc/udev/rules.d/目录下以及/usr/lib/udev/rules.d/目录,来重新为设备文件命名。

ramdisk文件的制作
(1) mkinitrd命令
        为当前使用中的内核重新制作ramdisk文件,此命令也是调用dracut:
        # mkinitrd [OPTION...] [<initrd-image>] <kernel-version>
                  --with=<module>:除了默认的模块之外需要装载至initramfs中的模块;
                  --preload=<module>:initramfs所提供的模块需要预先装载的模块;
         示例: ~]# mkinitrd  /boot/initramfs-$(uname -r).img   $(uname -r)
 
(2) dracut命令
        # dracut [OPTION...] [<image> [<kernel version>]]
         示例: ~]# dracut /boot/initramfs-$(uname -r).img  $(uname -r)

Linux内核基本装载卸载的更多相关文章

  1. linux内核分析 第七周 Linux内核如何装载和启动一个可执行程序

    一.编译链接的过程和ELF可执行文件格式 vi hello.c gcc -E -o hello.cpp hello.c -m32 //预处理.c文件,预处理包括把include的文件包含进来以及宏替换 ...

  2. 20135202闫佳歆--week 7 Linux内核如何装载和启动一个可执行程序--实验及总结

    week 7 实验:Linux内核如何装载和启动一个可执行程序 1.环境搭建: rm menu -rf git clone https://github.com/megnning/menu.git c ...

  3. 实验七:Linux内核如何装载和启动一个可执行程序

    原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 题目自拟,内容围绕对Linu ...

  4. 作业七:Linux内核如何装载和启动一个可执行程序

    作业七:Linux内核如何装载和启动一个可执行程序 一.编译链接的过程和ELF可执行文件格式 可执行文件的创建——预处理.编译和链接 在object文件中有三种主要的类型. 一个可重定位(reloca ...

  5. Linux内核如何装载和启动一个可执行程序(转)

    原文:http://www.cnblogs.com/petede/p/5351696.html 实验七:Linux内核如何装载和启动一个可执行程序 姓名:李冬辉 学号:20133201 注: 原创作品 ...

  6. Linux内核设计第七周学习总结 Linux内核如何装载和启动一个可执行程序

    陈巧然原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 实验目的 使用gdb跟踪s ...

  7. Linux内核分析第七周学习笔记——Linux内核如何装载和启动一个可执行程序

    Linux内核分析第七周学习笔记--Linux内核如何装载和启动一个可执行程序 zl + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study. ...

  8. 解析 Linux 内核可装载模块的版本检查机制

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-kernelmodules/ 为保持 Linux 内核的稳定与可持续发展,内核在发展过程中引进了可 ...

  9. 20135323符运锦----第七周:Linux内核如何装载和启动一个可执行程序

    可执行程序的装载 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 ①编译器预处理 gcc -E -o XX.cpp XX.c (-m32)// 注:把include的文件包含进来, ...

随机推荐

  1. python学习之-用scrapy框架来创建爬虫(spider)

    scrapy简单说明 scrapy 为一个框架 框架和第三方库的区别: 库可以直接拿来就用, 框架是用来运行,自动帮助开发人员做很多的事,我们只需要填写逻辑就好 命令: 创建一个 项目 : cd 到需 ...

  2. JVM-索引

    JVM内容梳理 JVM体系结构 Jvm的体系结构 JVM内存区域详解(Eden Space.Survivor Space.Old Gen.Code Cache和Perm Gen) JVM之堆内存(年经 ...

  3. 【学习】数据规整化:清理、转换、合并、重塑(续)【pandas】

    @合并重叠数据 还有一种数据组合问题不能用简单的合并或连接运算来处理.比如说,你可能有索引全部或部分重叠的两个数据集 使用numpy的where函数,它用于表达一种矢量化的if - else a = ...

  4. django全流程--青空琉璃

    @python相关 1.多线程与多进程 https://zhuanlan.zhihu.com/p/45828888 2.用日志logging模块取代print() https://blog.csdn. ...

  5. 如何创建数据库以及MySQL增删改查命令的简单运用

    在已经安装好MySQL的前提下 1.在Windows打开命令提示符窗口,输入命令启动MySQL命令行工具并登入root用户:mysql -h localhost -u root -p 2.输入密码后, ...

  6. python各种web框架对比

    0 引言        python在web开发方面有着广泛的应用.鉴于各种各样的框架,对于开发者来说如何选择将成为一个问题.为此,我特此对比较常见的几种框架从性能.使用感受以及应用情况进行一个粗略的 ...

  7. 第五篇、Python之迭代器与生成器

    1.迭代和递归等概念 循环(loop):指的是在满足条件的情况下,重复执行同一段代码.比如,while语句,for循环. 迭代(iterate):指的是按照某种顺序逐个访问列表中的每一项.比如,for ...

  8. Android转换集合数据(ArrayList)为Json格式并上传服务器

    使用Gson上传集合数据到服务器,1.最外层用 ArrayMap<String, Object> 封装:2.通过  mRequestParam.put("cmdLineIds&q ...

  9. js生成带有logo的二维码并保存成图片下载

    生成二维码,需要依赖jquery,先引入一个jquery,然后需要一个插件改变过了jquery-qrcode.js 插件代码(需要的自己打开看): /*! jquery-qrcode v0.14.0 ...

  10. 初识Scratch 3.0

    之前在帮朋友搜集少儿编程教育资料的时候,发现了麻省理工开发的积木式编程语言的Scratch,最近有空玩了下,感觉很惊艳,我能想象用它做一些有趣的事情,Scratch把编程元素变成像乐高积木一样,可以通 ...