编译内核时怎么指定cpu架构为arm 内核编译选项
转载mob6454cc63081f2023-12-07 15:52:09
文章标签编译内核时怎么指定cpu架构为armlinuxconfig文件系统加载文章分类架构后端开发阅读数76
我整理的一些关于【IT人转架构设计】的项目学习资料+视频(附讲解~~)和大家一起分享、学习一下:
文章目录
- 前言
- 内核配置选项
- 通用设置
- 64位内核
- 处理器类型及特点
- 电源管理和ACPI选项
- 总线选项
- 二进制模拟器
- 虚拟化
- 依赖于架构的通用选项
- 可加载模块的支持
- 块设备的支持
- 可执行文件格式
- 内存管理选项
- 网络支持
- 设备驱动
- 文件系统
- 安全选项
- 加密API
- Library routines
- Kernel hacking
- 内核配置文件
- kvm_guest.config
- 测试场景
- 内核eBPF测试
- 相关链接
前言
已经编译很多次用于测试的内核。但,我还是不会从零编译内核。因为内核参数很多。
通常的操作是make defconfig
、make kvm_guest.config
,然后根据需要通过make menuconfig
修改少数几个配置选项。
这里记录遇见过的内核配置选项。
内核配置选项
通用设置
- CONFIG_EMBEDDED=n:定义在init/Kconfig;如果你是为嵌入式系统编译内核,可以开启此选项,这样一些高级选项就会显示出来.单独选中此项本身对内核并无任何改变。
- CONFIG_EXPERT=n:定义在init/Kconfig;配置标准内核特性(专家用户);这个选项允许你改变内核的"标准"特性(比如用于需要"非标准"内核的特定环境中),仅在你确实明白自己在干什么的时候才开启;
- BPF_SYSCALL=y:kernel/bpf/Kconfig;允许bpf()系统调用;
64位内核
处理器类型及特点
- CONFIG_CMDLINE_OVERRIDE=n:定义在arch/x86/Kconfig;开启此项表示完全忽略引导加载器传递过来的参数,并仅仅只使用CONFIG_CMDLINE所指定的参数.通常情况下建议关闭此项,除非你确定引导加载器在传递内核引导参数的时候不能正常工作。
电源管理和ACPI选项
总线选项
二进制模拟器
虚拟化
依赖于架构的通用选项
可加载模块的支持
- CONFIG_MODULE_SIG_FORCE=n:定义在init/Kconfig;仅加载已签名并且密钥正确的模块,拒绝加载未签名或者签名密钥不正确的模块;
块设备的支持
可执行文件格式
- CONFIG_BINFMT_SCRIPT=y:定义在fs/Kconfig.binfmt;让内核支持‘#!’开头的可执行脚本文件。
内存管理选项
网络支持
设备驱动
- CONFIG_DEVTMPFS=y:定义在drivers/base/Kconfig;维护一个devtmpfs文件系统,将其挂载在/dev上;
文件系统
- CONFIG_TMPFS=y:定义在fs/Kconfig;Tmpfs 是一个文件系统,它将所有文件保存在虚拟内存中;Tmpfs;
- CONFIG_CONFIGFS_FS=y:Defined at fs/configfs/Kconfig;Prompt: Userspace-driven configuration filesystem;configfs是一个基于内存的虚拟文件系统,与sysfs类似但又有不同,configfs用于从用户空间查看/修改/创建/删除内核对象,而sysfs仅能查看/修改由内核负责创建和删除的对象;
安全选项
- CONFIG_SECURITYFS=y:Defined at security/Kconfig;Prompt: Enable the securityfs filesystem ;
加密API
Library routines
Kernel hacking
- CONFIG_KCOV=y:为模糊测试提供代码覆盖信息;定义在lib/Kconfig.debug;
- CONFIG_DEBUG_INFO=y:编译内核时,附加调试信息;定义在lib/Kconfig.debug;
- CONFIG_KASAN=y:KASAN,运行时内存调试器;
- CONFIG_KASAN_INLINE=y:Defined at lib/Kconfig.kasan;Prompt: Inline instrumentation ;
内核配置文件
kvm_guest.config
- 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
整理的一些关于【IT人转架构设计】的项目学习资料+视频(附讲解~~),需要自取:
标签:选项,VIRTIO,Kconfig,CONFIG,编译,内核,qemu From: https://www.cnblogs.com/zxdplay/p/18404875