`
isiqi
  • 浏览: 16034197 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

linux内核编译选项详解(二):Loadable Module and Block Layer Support

 
阅读更多

[*] Enable loadable module support --->
打 开可加载模块支持,如果打开它则必须通过"make modules_install"把内核模块安装在/lib/modules/中这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译 后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在 运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不 需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块,否则无法启动系统。在启动时不用到 的功能,编成模块是最有效的方式。你可以查看MAN手册来了解:modprobe, lsmod, modinfo, insmod 和 rmmod.
如果不清楚,选Y。

  • [ ] Forced module loading
    允许强制加载模块
  • [*] Module unloading
    允许卸载已经加载的模块
  • [*] Forced module unloading
    允许强制卸载正在使用中的模块(比较危险)这个选项允许你强行卸除模块,即使内核认为这不安全。内核将会立即移除模块,而不管是否有人在使用它(用 rmmod -f 命令)。这主要是针对开发者和冲动的用户提供的功能。如果不清楚,选N。
  • [ ] Module versioning support
    有时候,你需要编译模块。选这项会添加一些版本信息,来给编译的模块提供独立的特性,以使不同的内核在使用同一模块时区别于它原有的模块。这有时可能会有点用。如果不清楚,选N。允许使用其他内核版本的模块(可能会出问题)
  • [ ] Source checksum for all modules
    为所有的模块校验源码,如果你不是自己编写内核模块就不需要它这个功能是为了防止你在编译模块时不小心更改了内核模块的源代码但忘记更改版本号而造成版本冲突。如果不清楚,选N。

-*- Enable the block layer --->
块 设备支持,使用硬盘/USB/SCSI设备者必选这选项使得块设备可以从内核移除。如果不选,那么 blockdev 文件将不可用,一些文件系统比如 ext3 将不可用。这个选项会禁止 SCSI 字符设备和 USB 储存设备,如果它们使用不同的块设备。选Y,除非你知道你不需要挂载硬盘和其他类似的设备。不过此项无可选项

  • [*] Support for large (2TB+) block devices and files
    仅在使用大于2TB的块设备时需要
  • [*] Block layer SG support v4
    通用scsi块设备第4版支持
  • [ ] Block layer data integrity support
    块设备数据完整性支持
  • IO Schedulers --->
    IO调度器I/O是输入输出带宽控制,主要针对硬盘,是核心的必須的东西。这里提供了三个IO调度器。
    • <*> Anticipatory I/O scheduler
      使 用于大多数环境假设一个块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入 吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器)抢先式 I/O 调度方式是默认的磁盘调度方式。它对于大多数环境通常是比较好的选择。但是它和Deadline I/O 调度器相比有点大和复杂,它有时在数据调入时会比较慢。
    • <*> Deadline I/O scheduler
      使 用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)Deadline I/O调度器简单而又紧密,在性能上和抢先式调度器不相上下,在一些数据调入时工作得更好。至于在单进程I/O磁盘调度上,它的工作方式几乎和抢先式调度 器相同,因此也是一个好的选择。
    • <*> CFQ I/O scheduler
      使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统CFQ调度器尝试为所有进程提供相同的带宽。它将提供平等的工作环境,对于桌面系统很合适。
    • Default I/O scheduler (CFQ) --->
      默 认IO调度器我这样理解上面三个IO调度器:抢先式是传统的,它的原理是一有响应,就优先考虑调度。如果你的硬盘此时在运行一项工作,它也会暂停下来先响 应用户。期限式则是:所有的工作都有最终期限,在这之前必须完成。当用户有响应时,它会根据自己的工作能否完成,来决定是否响应用户。CFQ则是平均分配 资源,不管你的响应多急,也不管它的工作量是多少,它都是平均分配,一视同仁的。
      • ( ) Anticipatory
      • ( ) Deadline
      • (X) CFQ
      • ( ) No-op
分享到:
评论

相关推荐

    Linux内核裁剪的具体步骤.doc

    [] Enable loadable module support 这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到...

    [原创]PPT of Linux Loadable Kernel Module

    自己做TA时给学生讲课用的PPT,内容是Linux的Module(模块)编程。

    Linux内核配置及分析

    2. Loadable module support:对模块的支持。 预备知识: 模块就像你特意插入核心中的某些东西,如果办公室有一个小网络并且有时想用一下(但并不经常),也许你想把网卡编译成一个模块。使用这个模块,机器必运行和...

    内核模块make -C $(LINUX_PATH) M=$(CURRENT_PATH) modules

    ** Loadable module support*Enable loadable module support (CONFIG_MODULES) [Y/n/?]Set version information on all symbols for modules (CONFIG_MODVERSIONS) [N/y/?]Kernel daemon support (e.g. autoload ...

    Linux内核模块编程入门学习

    内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithIC kernel)。单内核的...

    【华为云技术分享】Linux内核编程环境 (2)

    在上一期中,我们介绍了Linux内核编译方法,这一期我们用一个例子来介绍如何向Linux内核中增加一个模块。 一、LKM内核模块 LKM是Loadable Kernel Module的缩写,意思是可加载内核模块。它有点儿像动态链接库,可在...

    嵌入式系统/ARM技术中的Linux内核模块编程入门学习

    内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的...

    linux驱动开发的好书,老外写的

    Linux Block I/O Layer I/O Schedulers Block Driver Data Structures and Methods Device Example: Simple Storage Controller Advanced Topics Debugging Looking at the Sources Chapter 15. Network ...

    Professional_Linux_Programming.pdf

    The Linux Kernel and the GNU Toolchain 44 Inline Assembly 44 Attribute Tags 45 Custom Linker Scripts 45 Cross-Compilation 46 Building the GNU Toolchain 47 Summary 48 Chapter 3: Portability 49 The Need...

    Essential Linux Device Drivers

    Linux Block I/O Layer I/O Schedulers Block Driver Data Structures and Methods Device Example: Simple Storage Controller Advanced Topics Debugging Looking at the Sources Chapter 15. Network ...

    React项目动态设置title标题的方法示例

    在React搭建的SPA项目中页面的title是直接写在入口index.html中,当... component: Loadable({ loader: () =&gt; import('./../../business/Regularinvestment/index'), loading: PageLoading }), title: 这是自定义的

    Kconfig语法

    个驱动的情况下使用,最终只有一个驱动被编译进/加载到内核,,但所有的驱动都可以编译成模块。 选项可以接受的另一个选项是"optional",这样选项就被设置为'n',没有被选中的。 comment: "comment" 这里定义了...

    loadable-components:推荐的React:scissors_selector::sparkles:代码拆分库

    快速链接到一些访问量最大的页面:例import loadable from '@loadable/component'const OtherComponent = loadable ( ( ) =&gt; import ( './OtherComponent' ) )function MyComponent ( ) { return ( &lt; div&gt; &lt;...

    Infecting loadable kernel modules中文版

    这是飞客杂志第61期文章Infecting loadable kernel modules的中文版,介绍了一种感染Linux内核模块的方法,本人翻译,请多指教。

    Designing.BSD.Rootkits.An.Introduction.to.Kernel.Hacking

    Though rootkits have a fairly negative image, they can be used for both good and evil. Designing BSD Rootkits arms you with the knowledge you need to write offensive rootkits, to defend against ...

    libforensic1394-0.2.tar.gz

    module. Presence of the new stack can be determined by analysing the output of: $ ls /dev | grep fw If the new stack is loaded and the system has at least one FireWire port then `fw0` should be...

    react-loadable, 一个高阶组件,用于加载具有.zip

    react-loadable, 一个高阶组件,用于加载具有 一个高阶组件,用于加载动态导入。安装yarn add react-loadable示例import Loadable from 'react-loadable';import Loading from

    loadable-ts-transformer:用于可加载组件SSR的TypeScript自定义转换器

    它的工作方式与@loadable/babel-plugin一样。 安装 $ npm install loadable-ts-transformer ts-loader webpack typescript -D 配置Webpack /* webpack.config.js */ const { loadableTransformer } = require ( '...

    论文研究-基于系统调用的Linux系统入侵检测技术研究.pdf

    提出了一种基于系统调用、面向进程的Linux系统入侵检测方法:利用LKM(Loadable Kernel Modules)技术在Linux内核空间获取检测源数据——所考察进程的系统调用,使用基于极大似然系统调用短序列的Markov模型提取进程...

    西门子_Loadable Driver for CP 341 Modbus ASCII Slave with 32-Bit Extensions.pdf

    西门子_Loadable Driver for CP 341 Modbus ASCII Slave with 32-Bit Extensionspdf,

Global site tag (gtag.js) - Google Analytics