13_Linux内核配置选项

内核配置选项

  • 内核配置通常是对内核支持的各个功能进行取舍配置,将配置的方案保存到 configure文件中。在编译内核的时候,就会根据此配置对内核进行取舍编译。

  • 编译内核之前要先配置。为了正确、合理地设置内核编译配置选项,从而只编译系统需 要的功能的代码,主要有以下 4 个方面需要考虑:

    • 小尺寸。自己定制内核可以使代码尺寸减小,运行将会更快。
    • 省内存。由于内核部分代码永远占用物理内存,定制内核可以使系统拥有更多的 可用物理内存。
    • 少漏洞。不需要的功能编译进入内核可能会增加被系统攻击者利用的机会。
    • 热加载。根据需要动态地加载模块或者卸载模块,可以节省系统内存。但是, 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些。
  • Linux 内核源代码支持 20 多种体系结构的处理器,还有各种各样的驱动程序。因此, 在编译前必须根据特定平台配置内核源代码。Linux 内核有上千个配置选项,配置相当复杂。 所以,Linux 内核源代码组织了一个配置系统。

  • Linux 内核配置系统可以生成内核配置菜单,方便内核配置。配置系统主要包含 Makefile、 Kconfig 和配置工具,可以生成配置接口。配置接口是通过工具来生成的,工具通过 Makefile 编译执行,选项则是通过各级目录的 Kconfig 文件定义的。

  • Linux 内核配置命令有make config、make menuconfig 和 make xconfig,它们分别是字符接口、ncurses 光标菜单和 X-window 图形窗口的配置接口,但不管使用哪种配置方法,本质上都是在配置==.config==文件!

    • 字符接口配置方式需要回答每一 个选项提示,逐个回答内核上千个选项几乎是行不通的;

    • 图形窗口的配置接口很好,光标菜单也方便实用。例如,执行 make xconfig,主菜单接口如图:

      image-20230127224520415

    • 菜单窗口的配置接口方法是目前使用较多的,其界面如下

      image-20240317125643342

1. 直接配置

  • 输入make menuconfig 命令,从头到尾重新配置菜单 (非常复杂),最终的配置结果会保存在.config文件中,这主要是Kconfig的功能。再执行make menuconfig时就可以回去读取.config文件。

2. 利用已有的默认配置defconfig

  1. 找到合适的defconfig

    • 在linux-2.6.22.6目录下,使用 find –name *defconfig 命令查找所有带defconfig名字的文件。

    • 找到与自己开发板所用CPU最相近的配置文件(arm架构、S3C2410核)

      与s3c2440最相近的配置文件

  2. 生成配置文件

    • 返回到linux-2.6.22.6顶层目录下,通过make s3c2410_defconfig 命令来配置:

      • 配置完后可以看出最后出现“configuration written to .config”,表示将所有config配置都写入到.config文件中。

      • 但也有部分用户执行完上述命令后会报错:

        image-20210110135539011

        • **原因:**你当前使用的make工具版本太新,make的旧版规则已经无法兼容。

        • **措施:**修改Makefile文件,更新报错的416行、1449行语法格式如下:

          416行:config %config: scripts_basic outputmakefile FORCE
          修改后: %config: scripts_basic outputmakefile FORCE原1449行:/ %/: prepare scripts FORCE
          修改后:  %/: prepare scripts FORCE
          
        • **结果:**修改后,重新执行 make s3c2410_defconfig,提示编译通过,且配置信息已写入.config文件。

          image-20210110140400602

          .config文件内容:

          image-20210110153718096

  3. 进行配置

    • 最后执行make menuconfig时就可以读取该.config文件。不同的.config文件就代表的不同的配置方案。

      配置文件其实就是一堆配置项: CONFIG_XXX=y或m或n

      y:表示编进内核

      m:表示编译成模块,提供动态加载

      n:表示不参与编译

3. 利用厂家提供的config_ok

  • 该配置文件是厂家直接提供的,在linux-2.6.22.6目录下,使用cp config_ok .config命令,用config_ok覆盖原.config文件,最后再执行make menuconfig时就可以读取.config文件了。

    cd */linux-2.6.22.6			#进入内核源码根目录
    cp config_ok  .config		#用厂家提供的config_ok覆盖原.config文件
    make menuconfig				#进入图形化配置页面
    

4. Linux配置选项说明

  • 菜单操作选项说明
菜单项意义
Arrow keys navigate the menu.箭头键导航菜单
selects submenus —>.Enter键选择菜单——>。
Highlighted letters are hotkeys.粗体的开头字母是热键,例如上图中按B键,跳到Block layer
Pressing includes,Y键,编译在内核里运行
excludes,N键,不编译在内核中
modularizes features.M键,进行模块化
Press to exit,Esc键退出
<?> forHelp,?键帮助
</> for Search./键搜索
Legend:显示:
[*] built-in[*]:已经内置在内核中
[ ] excluded[ ]:不编译在内核中
module:已经模块化
< > module capable< >:表示这选项能被模块化(按下M键有响应)
  • general setup(一般选项)

    • 包含一些内核通用配置选项,一般配置选项中如果对系统没有特殊要求,可以只选择 System V IPC 配置。

    • 选 项 名说 明
      Automatically append version information to the version string自动在版本后添加版本信息,编译时需要有 perl 及 git 仓库支持,通常可以不选
      Support for paging of anonymous memory (swap)支持交换内存,通常选择
      System V IPC进程间通信,通常需要配置
      POSIX Message QueuesPOSIX 消息队列,通常需要配置
      BSD Process Accounting可以将行程资料记录下来,通常建议配置
      Export task/process statistics through netlink通过 netlink 接口向用户空间导出任务/进程的统计 信息
      Auditing support审计支持,某些内核模块(例如 SELinux)需要配置
      RCU subsystem同步机制
      Kernel .config support提供.config 配置文件支持
      Kernel log buffer size (16=>64KB, 17=>128KB)内核日志缓冲区大小(16 代表 64KB, 17 代表 128KB)
      Group CPU schedulerCPU 组调度
      Control Group support控制组支持
      Create deprecated sysfs layout for older userspace tools为旧的用户空间工具创建过时的文件系统风格
      Kernel->user space relay support (formerly relayfs)在某些文件系统上(比如 debugfs)提供从内核空间 向用户空间传递大量数据的接口
      Namespace support命名空间支持
      Initial RAM filesystem and RAM disk (initramfs/initrd) support初始化 RAM 文件系统的源文件。 initramfs 可以将根 文件系统直接编译进内核,一般是 cipo 文件。对嵌入 式系统有用
      Optimize for size代码优化。如果不了解编译器,建议不选
      Configure standard kernel features (for small systems)为特殊环境准备的内核选项,通常不需要这些非标准 内核
      Disable heap randomization禁用随机 heap(heap 堆是一个应用层的概念,即堆 对 CPU 是不可见的,它的实现方式有多种,可以由 OS 实现,也可以由运行库实现,也可以在一个栈中 来实现一个堆)
      Choose SLAB allocator选择内存分配管理器,建议选择
      Profiling support支持系统评测,建议不选
      Kprobes探测工具,开发人员可以选择,非开发人员建议不选
  • Loadable module support(内核模块加载方式支持选项)

    • 包含一些内核模块加载方式选项,如下表所示。如果对模块的加载方式有特殊要求,如希望可以强制卸载正在使用的模块的要求,那么可以配置相关的模块加载方式。

    • 选 项 名说 明
      Forced module loading允许强制加载模块驱动
      Module unloading允许卸载已经加载的模块,建议选择
      Forced module unloading允许强制卸载正在运行的模块,该功能危险,建议不选
      Module versioning support允许使用其他内核版本的模块,建议不选
      Source checksum for all modules为所有的模块校验源码,可以不选
  • **Block layer **(系统调用选项)

    • 包含一些系统调用方式选项,如下表所示。在配置内核时可以不选该菜单选项。

    • 选 项 名说 明
      Support for Large Block Devices and files使用大容量块设备时选择
      Support for tracing block io actions支持块队列 I/O 跟踪
      Block layer SG support v4支持通用 scsi 块设备第 4 版
      Block layer data integrity support支持块设备数据完整性
      IO SchedulersI/O 调度器
  • System Type(系统类型选项)

    • 包含一些系统类型选项,在配置内核时直接选择对应的芯片类型即可。对特定的平台选择相应的支持类型。
  • Kernel Features(系统特性选项)

    • 包含一些系统特性选项,如下表所示。在嵌入式系统中,一般不对这些选项进行配置。

    • 选 项 名说 明
      Preemptible Kernel抢占式内核。建议采用
      Use the ARM EABI to compile the kernel使用 ARM EABI 编译内核
      Allow old ABI binaries to run with this kernel使内核支持旧版本的 ABI 程序
      Memory model只有 Flat Memory 供选择
      Add LRU list to track non-evictable pages对没有使用的页采用最近最少使用算法,建议选择
  • Boot Options(系统启动选项 )

    • 选 项 名说 明
      (0)Compressed ROM boot loader base addressxImage 存放的基地址
      (0)Compressed ROM boot loader BSS addressBSS 地址
      ()Default Kernel command string内核启动参数
      Kernel Execute-In-Place from ROM从 ROM 中直接运行内核,该内核使用 make xipImage 编译
      (0x00080000)XIP Kernel Physical Location选择 XIP 后,内核存放的物理地址
      Kexec system callKexec 系统调用
  • Networking Support(网络协议支持相关选项)

    • 基本只需要在 Networking options 子菜单中选择具体所需的网络协议即可。

    • 选 项 名说 明
      Networking options该菜单的子菜单包含支持的各种具体网络协议,在开发中 可以根据需要进行配置
      Amateur Radio support业余无线电支持,一般不选
      CAN bus subsystem supportCAN 总线子系统支持
      IrDA (infrared) subsystem support红外线支持
      Bluetooth subsystem support蓝牙支持
      RxRPC session socketsRxRPC 会话套接字支持
      Phonet protocols familyPhonet 协议族支持
      Wireless无线电协议支持
      WiMAX Wireless Broadband supportWiMAX 无线宽带支持
      RF switch subsystem supportRF 交换子系统支持
      Plan 9 Resource Sharing Support (9P2000)9 计划资源共享支持
  • Device drivers(设备驱动支持相关选项)

    • 包含一些设备驱动的选项,如下表所示。重点说明了 MTD 设备相关的驱动。需要支持设备驱动时可以配置相关的选项。

    • 选 项 名说 明
      Connector - unified userspace <-> kernelspace linker用户空间和内核空间的统一连接器
      Memory Technology Devices (MTD) supportMTD 设备支持,嵌入式系统使用
      Debugging调试功能
      MTD concatenating support连接多个 MTD 设备,例如使用 JFFS2 文件系统管 理多片 Flash 的情形。只有一片 Flash 时不选
      MTD partitioning supportFlash 分区支持,建议选择
      MTD tests supportMTD 测试支持
      RedBoot partition table parsing使用 RedBoot 解析 Flash 分区表,如果需要读取这 个分区表的信息,选择此项
      Command line partition table parsing允许通过内核命令行传递 MTD 分区表信息
      ARM Firmware Suite partition parsing使用 AFS 分区信息
      TI AR7 partitioning supportAR7 分区支持
      Direct char device access to MTD devices将系统中的 MTD 设备看作字符设备进行读/写
    • 选 项 名说 明
      Caching block device access to MTD devices文件系统挂载后,模拟块设备进行访问。常用于只 读文件系统。如果是 DiskOnChip 使用 NFTL 方式
      FTL (Flash Translation Layer) support提供对 Flash 翻译层支持,可以不选
      NFTL (NAND Flash Translation Layer) supportNAND Flash 翻译层支持,可以不选
      INFTL (Inverse NAND Flash Translation Layer) support提供 INFTL 支持, DiskOnChip 使用
      Resident Flash Disk (Flash Translation Layer) support提供 RFD 支持,为嵌入式系统提供类似 BIOS 功能
      NAND SSFDC (SmartMedia) read only translation layerNAND SSFDC 只读翻译层
      Log panic/oops to an MTD bufferMTD 缓冲区日志
      RAM/ROM/Flash chip driversRAM/ROM/Flash 芯片驱动
      Mapping drivers for chip access为芯片的访问方式选择 Mapping 驱动
      Self-contained MTD device drivers自身包含 MTD 设备驱动,一般不选
      NAND Device SupportNAND Flash 支持
      OneNAND Device SupportOne NAND 相关驱动
      LPDDR flash memory driversLPDDR Flash 内存驱动
      UBI - Unsorted block images只提供 UBI 支持
      Parallel port support并口支持
      Block devices红外线支持
      Bluetooth subsystem support蓝牙支持
      RxRPC session socketsRxRPC 会话套接字支持
      Phonet protocols familyPhonet 协议族支持
      Wireless无线电协议支持
      WiMAX Wireless Broadband supportWiMAX 无线宽带支持
      RF switch subsystem supportRF 交换子系统支持
      Plan 9 Resource Sharing Support (9P2000)9 计划资源共享支持
  • File Systems(文件系统类型支持相关选项)

    • 包含一些文件系统配置的选项,如下表所示。内核移植完成后,通常需要制作文件系统,可以在此部分选择内核支持的文件系统格式。

    • 选 项 名说 明
      Second extended fs supportExt2 文件系统支持
      Ext3 journalling file system supportExt3 文件系统支持
      The Extend4 filesystemExt4 文件系统支持
      Reiserfs supportReiserfs 文件系统支持
      JFS filesystem supportJFS 文件系统支持
      XFS filesystem supportXFS 文件系统支持
      OCFS2 file system supportOCFS2 文件系统支持
      Btrfs filesystem (EXPERIMENTAL) Unstable disk formatBtrfs 文件系统,不稳定,建议不选择
      Dnotify support文件系统变化通知机制支持
      Inotify file change notification supportInotify 是 Dnotify 的替代者,在高版内核中默认支持
      Quota support磁盘限额支持
      Kernel automounter support自动挂载远程文件系统,如 NFS
      Kernel automounter version 4 support (also supports v3)自动挂载远程文件系统,对版本 4 和版本 3 都支持
      FUSE (Filesystem in Userspace) support在用户空间挂载文件系统,建议选择
      CD-ROM/DVD FilesystemsISO 9660, UDF 等文件系统支持
      DOS/FAT/NT FilesystemsFAT/NTFS 文件系统支持。如果用于访问存储设备,并且 包含像 Windows 文件时选择该选项
      Pseudo filesystems伪操作系统,多指内存中的操作系统
      Miscellaneous filesystems杂项文件系统,包括 ADFS、 BFS、 BeFS、 HPFS 等,比较 少用,建议不选
      Network File Systems网络文件系统。其中只有 NFS 在产品开发过程中用。在开 发过程可以选用
      Partition Types分区类型。该菜单下提供很多中类型,但在嵌入式产品中 很少用,建议不选
      Distributed Lock Manager (DLM)分布式锁管理器
  • Security options(安全相关选项 )——包含一些安全配置选项。很少用,建议不选。

  • Kernel hacking(内核黑客配置选项 )——非极其专业人士,建议不选。

  • Cryptographic API(内核加密算法配置选项 )——很少用,建议不选。

  • Bus Support(总线接口支持)——嵌入式系统可以不选。

  • CUP Power Management(电源管理选项)——嵌入式系统可以不选。

  • Floating(浮点计算配置选项)——嵌入式系统可以不选。

  • Library routines(库配置选项)——包含一些库配置选项,主要提供 CRC 支持,在开发通信类产
    品时可以选择对应的 CRC。

cking**(内核黑客配置选项 )——非极其专业人士,建议不选。

  • Cryptographic API(内核加密算法配置选项 )——很少用,建议不选。
  • Bus Support(总线接口支持)——嵌入式系统可以不选。
  • CUP Power Management(电源管理选项)——嵌入式系统可以不选。
  • Floating(浮点计算配置选项)——嵌入式系统可以不选。
  • Library routines(库配置选项)——包含一些库配置选项,主要提供 CRC 支持,在开发通信类产
    品时可以选择对应的 CRC。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/771320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BM85 验证IP地址(字符串)

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** 验证IP地址* param IP string字符串 一个IP地址字符串* return string字符串*/public boolean isIPv4(String IP){//没有.i…

单片机入门到精通:一站式在线学习平台!

介绍&#xff1a;单片机&#xff0c;也称为微控制器&#xff08;MCU&#xff09;&#xff0c;是一种集成了中央处理器&#xff08;CPU&#xff09;、随机存储器&#xff08;RAM&#xff09;、只读存储器&#xff08;ROM&#xff09;以及输入/输出接口于单一芯片上的微型计算机。…

11.测试教程-自动化测试selenium-3

文章目录 1.unittest框架解析2.批量执行脚本2.1构建测试套件2.2用例的执行顺序2.3忽略用例执行 3.unittest断言4.HTML报告生成5.异常捕捉与错误截图6.数据驱动 大家好&#xff0c;我是晓星航。今天为大家带来的是 自动化测试selenium第三节 相关的讲解&#xff01;&#x1f600…

2024年大模型面试准备(三):聊一聊大模型的幻觉问题

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 合集在这…

羊大师羊奶靠谱么?信誉与持续见证,共筑信赖之选

羊大师羊奶靠谱么&#xff1f;信誉与持续见证&#xff0c;共筑信赖之选 在如今注重健康饮食的时代&#xff0c;羊奶以其丰富的营养价值和独特的风味&#xff0c;逐渐受到了消费者的青睐。在众多羊奶品牌中&#xff0c;羊大师羊奶以其出色的品质、良好的信誉和持续的创新精神&a…

关于「技术开发技能」课程

本课程分为三个部分&#xff0c;带您了解如何使用大模型平台、如何训练与部署大模型及生成式AI产品应用与开发&#xff0c;您将能了解各类服务的优势、功能、典型使用案例、技术概念和成本。 学习任选的两个课程模块&#xff0c;并通过测验者&#xff0c;将授予「技术开发技能…

隆道分享AI技术应用实践 以AI赋能采购业务管理

2024年3月21日-22日&#xff0c;以“面向务实的数字化”为主题的“第12届医药健康行业数字化高峰论坛”在上海举办。本届大会聚焦项目建设、技术创新与应用、新业务模式及收效等话题&#xff0c;探讨AI制药与大模型应用&#xff0c;分享智能化技术在多领域的落地案例。隆道公司…

情感视频素材从哪里找?推荐情感视频素材分享

随着时代变化短视频的兴起&#xff0c;人们越来越喜欢用视频来表达自己的情感和经历。为了满足创作者对于情感视频素材的需求&#xff0c;以下列出了几个素材分享网站&#xff0c;帮助你更好地创作和传达情感&#xff0c;引起大家的共鸣。 蛙学网 作为一家国内知名的素材分享…

python能做什么

python能做什么 Web开发&#xff1a;Python具有许多流行的Web框架&#xff0c;如Django和Flask&#xff0c;使得它成为Web开发的首选语言。它简洁、易于学习、且拥有丰富的生态系统&#xff0c;能够快速构建高性能的Web应用。 数据科学和机器学习&#xff1a;Python在数据科学…

Webpack部署本地服务器

Webpack部署本地服务器 目录 Webpack部署本地服务器目的认识模块热替换&#xff08;HMR&#xff09;什么是 HMRHMR 通过如下几种方式, 来提高开发的速度如何使用 HMRhost 配置 目的 完成自动编译 常用方式: webpack-dev-server webpack-dev-server 是一个用于开发环境的 Web 服…

动态规划,二维DP

文章目录 1、摆花2、异或选数3、数字三角形 1、摆花 分析&#xff1a; 输入2 4 3 2 的情况下&#xff0c;只有 (2,2) , (3,1) 这两种方案。 所以&#xff0c;设置状态 dp[i][j] 表示到第 i 种花&#xff08;共 n 种花&#xff09;、第 j 个位置&#xff08;共 m 个位置&#xf…

Leetcode算法题笔记(2)

目录 图论51. 岛屿数量解法一 52. 腐烂的橘子解法一 53. 课程表解法一 54. 实现 Trie (前缀树)解法一 回溯55. 全排列解法一 56. 子集解法一解法二 57. 电话号码的字母组合解法一 58. 组合总和解法一解法二 59. 括号生成解法一解法二 60. 单词搜索解法一 61. 分割回文串解法一 …

[Netty实践] 请求响应同步实现

目录 一、介绍 二、依赖引入 三、公共部分实现 四、server端实现 五、client端实现 六、测试 一、介绍 本片文章将实现请求响应同步&#xff0c;什么是请求响应同步呢&#xff1f;就是当我们发起一个请求时&#xff0c;希望能够在一定时间内同步&#xff08;线程阻塞&am…

FPGA高端项目:解码索尼IMX327 MIPI相机转HDMI输出,提供FPGA开发板+2套工程源码+技术支持

目录 1、前言2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理图像缓存HDMI输出工程源码架构 6、工程源码…

Java中SPI机制简单演示

Java中SPI机制简单演示 写一个SpiService接口 public interface SpiService {void run();}写两个实现类&#xff0c;注意&#xff1a;实现类可以跨包 Slf4j public class SpiServiceImpl1 implements SpiService {Overridepublic void run() {log.warn("SpiServiceImpl…

简单破除github的2FA验证

简单破除github的2FA验证 文章目录 简单破除github的2FA验证&#x1f468;‍&#x1f3eb;Authenticator工具 &#x1f468;‍&#x1f3eb;Authenticator工具 最近使用github的时候发现要搞一个2FA的验证才可以 验证的途径有两种&#xff1a;一种是用手机电话验证&#xff0c;…

使用easyYapi生成文档

easyYapi生成文档 背景1.安装配置1.1 介绍1.2 安装1.3 配置1.3.1 Export Postman1.3.2 Export Yapi1.3.3 Export Markdown1.3.4 Export Api1.3.6 常见问题补充 2. java注释规范2.1 接口注释规范2.2 出入参注释规范 3. 特定化支持3.1 必填校验3.2 忽略导出3.3 返回不一致3.4 设置…

第二证券|高速连接概念再度活跃,沃尔核材5日涨近60%,胜蓝股份等走高

高速连接概念26日盘中再度走强&#xff0c;到发稿&#xff0c;胜蓝股份涨超13%&#xff0c;沃尔核材涨停&#xff0c;华丰科技、奥飞数据涨超5%。 值得注意的是&#xff0c;沃尔核材近5个交易日已收成4个涨停板&#xff0c;累计大涨近60%。公司近来在投资者互动平台表示&#…

宽光谱SOA光芯片设计(一)

-本文翻译自由Geoff H. Darling于2003年撰写的文章。尽管文章较早&#xff0c;但可以了解一些SOA底层原理&#xff0c;并可看到早期SOA研究的思路和过程&#xff0c;于今仍有很高借鉴价值。 摘要 本文介绍一种新型宽光谱半导体光放大器&#xff08;SOA&#xff09;技术&#x…

【数据分享】中国土壤有机质数据集(免费获取)

中国土壤有机质数据集对于农业、生态环境保护等领域具有重要意义。通过对土壤有机质等多项指标的统计和分析&#xff0c;可以更好地了解土壤的特性&#xff0c;指导合理的土壤管理和保护措施的制定&#xff0c;从而促进农业生产的可持续发展&#xff0c;并为生态环境保护提供科…