内核编译选项简介

前言

已经编译很多次用于测试的内核。但,我还是不会从零编译内核。因为内核参数很多。

通常的操作是make defconfigmake kvm_guest.config,然后根据需要通过make menuconfig修改少数几个配置选项。

这里记录遇见过的内核配置选项。


内核配置选项

通用设置

  1. CONFIG_EMBEDDED=n:定义在init/Kconfig;如果你是为嵌入式系统编译内核,可以开启此选项,这样一些高级选项就会显示出来.单独选中此项本身对内核并无任何改变。
  2. CONFIG_EXPERT=n:定义在init/Kconfig;配置标准内核特性(专家用户);这个选项允许你改变内核的"标准"特性(比如用于需要"非标准"内核的特定环境中),仅在你确实明白自己在干什么的时候才开启;
  3. BPF_SYSCALL=y:kernel/bpf/Kconfig;允许bpf()系统调用;

64位内核

处理器类型及特点

  1. CONFIG_CMDLINE_OVERRIDE=n:定义在arch/x86/Kconfig;开启此项表示完全忽略引导加载器传递过来的参数,并仅仅只使用CONFIG_CMDLINE所指定的参数.通常情况下建议关闭此项,除非你确定引导加载器在传递内核引导参数的时候不能正常工作。

电源管理和ACPI选项

总线选项

二进制模拟器

虚拟化

依赖于架构的通用选项

可加载模块的支持

  1. CONFIG_MODULE_SIG_FORCE=n:定义在init/Kconfig;仅加载已签名并且密钥正确的模块,拒绝加载未签名或者签名密钥不正确的模块;

块设备的支持

可执行文件格式

  1. CONFIG_BINFMT_SCRIPT=y:定义在fs/Kconfig.binfmt;让内核支持‘#!’开头的可执行脚本文件。

内存管理选项

网络支持

设备驱动

  1. CONFIG_DEVTMPFS=y:定义在drivers/base/Kconfig;维护一个devtmpfs文件系统,将其挂载在/dev上;

文件系统

  1. CONFIG_TMPFS=y:定义在fs/Kconfig;Tmpfs 是一个文件系统,它将所有文件保存在虚拟内存中;Tmpfs
  2. CONFIG_CONFIGFS_FS=y:Defined at fs/configfs/Kconfig;Prompt: Userspace-driven configuration filesystem;configfs是一个基于内存的虚拟文件系统,与sysfs类似但又有不同,configfs用于从用户空间查看/修改/创建/删除内核对象,而sysfs仅能查看/修改由内核负责创建和删除的对象;

安全选项

  1. CONFIG_SECURITYFS=y:Defined at security/Kconfig;Prompt: Enable the securityfs filesystem ;

加密API

Library routines

Kernel hacking

  1. CONFIG_KCOV=y:为模糊测试提供代码覆盖信息;定义在lib/Kconfig.debug;
  2. CONFIG_DEBUG_INFO=y:编译内核时,附加调试信息;定义在lib/Kconfig.debug;
  3. CONFIG_KASAN=y:KASAN,运行时内存调试器;
  4. CONFIG_KASAN_INLINE=y:Defined at lib/Kconfig.kasan;Prompt: Inline instrumentation ;

内核配置文件

kvm_guest.config

  1. make kvm_guest.config:为kvm客户内核支持启用其他选项。
    不折腾,将linux/kernel/configs/kvm_guest.config中的配置选项加入.config。
    CONFIG_NET=y
    CONFIG_NET_CORE=y
    CONFIG_NETDEVICES=y
    CONFIG_BLOCK=y
    CONFIG_BLK_DEV=y
    CONFIG_NETWORK_FILESYSTEMS=y
    CONFIG_INET=y
    CONFIG_TTY=y
    CONFIG_SERIAL_8250=y
    CONFIG_SERIAL_8250_CONSOLE=y
    CONFIG_IP_PNP=y
    CONFIG_IP_PNP_DHCP=y
    CONFIG_BINFMT_ELF=y
    CONFIG_PCI=y
    CONFIG_PCI_MSI=y
    CONFIG_DEBUG_KERNEL=y
    CONFIG_VIRTUALIZATION=y
    CONFIG_HYPERVISOR_GUEST=y
    CONFIG_PARAVIRT=y
    CONFIG_KVM_GUEST=y
    CONFIG_S390_GUEST=y
    CONFIG_VIRTIO=y
    CONFIG_VIRTIO_MENU=y
    CONFIG_VIRTIO_PCI=y
    CONFIG_VIRTIO_BLK=y
    CONFIG_VIRTIO_CONSOLE=y
    CONFIG_VIRTIO_NET=y
    CONFIG_9P_FS=y
    CONFIG_NET_9P=y
    CONFIG_NET_9P_VIRTIO=y
    CONFIG_SCSI_LOWLEVEL=y
    CONFIG_SCSI_VIRTIO=y
    CONFIG_VIRTIO_INPUT=y
    CONFIG_DRM_VIRTIO_GPU=y
    

测试场景

内核eBPF测试

make defconfig
make kvm_guest.config

CONFIG_TMPFS=y
CONFIG_CONFIGFS_FS=y
CONFIG_SECURITYFS=y

CONFIG_KCOV=y
CONFIG_DEBUG_INFO=y
CONFIG_KASAN=y
CONFIG_KASAN_INLINE=y

BPF_SYSCALL=y

相关链接

Linux-4.4-x86_64 内核配置选项简介
Linux kernel release 5.x
Kernel Build System

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

da1234cao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值