首页 > 其他分享 >编译内核时编译选项, qemu

编译内核时编译选项, qemu

时间:2024-09-09 17:04:59浏览次数:8  
标签:选项 VIRTIO Kconfig CONFIG 编译 内核 qemu

编译内核时怎么指定cpu架构为arm 内核编译选项

 转载

mob6454cc63081f2023-12-07 15:52:09

文章标签编译内核时怎么指定cpu架构为armlinuxconfig文件系统加载文章分类架构后端开发阅读数76

 

 

文章目录

  • 前言
  • 内核配置选项
  • 通用设置
  • 64位内核
  • 处理器类型及特点
  • 电源管理和ACPI选项
  • 总线选项
  • 二进制模拟器
  • 虚拟化
  • 依赖于架构的通用选项
  • 可加载模块的支持
  • 块设备的支持
  • 可执行文件格式
  • 内存管理选项
  • 网络支持
  • 设备驱动
  • 文件系统
  • 安全选项
  • 加密API
  • Library routines
  • Kernel hacking
  • 内核配置文件
  • kvm_guest.config
  • 测试场景
  • 内核eBPF测试
  • 相关链接

 

前言

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

通常的操作是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

 

 

 

标签:选项,VIRTIO,Kconfig,CONFIG,编译,内核,qemu
From: https://www.cnblogs.com/zxdplay/p/18404875

相关文章

  • 编译hello world
    新建一个文件夹存放代码在文件夹内新建一个java文件。hello.java在文件内编写代码publicclasshello{ publicstaticvoidmain(String[]args){ System.out.print("helloworld!"); }}编译java文件,在文件目录下打开命令提示符窗口,输入:javachello.java编译java......
  • 【微信小程序反编译】入门1
    原创zkaq-Tobisec掌控安全EDU一、前言这几天在跟着师傅一起学习微信小程序的相关知识点,前面的微信小程序的漏洞挖掘蛮简单的,但是到后面需要黑盒测试了,就需要我们对小程序进行一个反编译,进行一个代码审计相关的知识点了。小程序的反编译相关工具有好几个,下面我给师傅们都......
  • 编译原理(第3版)上课笔记
    1、编译器是一个程序、具有非常模块化的高层结构离线方式offline2、解释器是一类处理程序的程序在线方式online3、静态计算所生成的目标程序要和源代码语义相同(不能有任何改变)4、动态计算5、编译的各个阶段(1)词法分析器:检查单词是否合法。(2)语法分析器:生成语法树,检......
  • 编译和分发 Chez Scheme 应用程序
    参考BuildingandDistributingApplications.假设源码由两个文件组成,A.ss和B.ss,其中A.ss依赖B.ss。下面我们将其编译为可供分发的二进制文件。将源码转为objectfile在ChezScheme的REPL中(下同)输入;;REPL(compile-library"B.ss");bydefaultitcompilesto......
  • qemu 跑 risc-v时遇到的诡异错误
    #[242.707630]INFO:taskswapper/0:1blockedformorethan120seconds.[242.709838]Nottainted6.11.0-rc6#3[242.711295]"echo0>/proc/sys/kernel/hung_task_timeout_secs"disablesthismessage.[242.713996]task:swapper/0......
  • Linux 下 C/C++ 程序编译的过程
    目录一、GCC工具链二、编译过程1、预处理2、编译3、汇编4、链接本文将介绍如何将C/C++语言编写的程序转换成为处理器能够执行的二进制代码的过程,包括四个步骤:预处理(Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking)。在此之前,首先来看一下GCC工具链。......
  • 用户空间的系统调用是如何链接到内核空间的系统调用的——MIT6.S081学习记录
    用户态调用了sysinfo()后,系统会从user/user.h里找到相关声明。用户空间的系统调用函数(如sysinfo())是通过链接到usys.S中的汇编代码来实现的。usys.S文件定义了所有系统调用的入口点,这些入口点使用.global指令使函数名在链接时可见。当用户程序中调用sysinfo()时,链接器会......
  • c语言编译器IDE英汉翻译词典程序代码
    #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>typedefstruct{charenglish[50];charchinese[50];}WordTranslation;intmain(){intx;intn,g=1;while(g){n=0;WordTranslationtranslations[......
  • 【工具推荐】KillWxapkg v2.4(最新版) - 自动化反编译微信小程序,小程序安全评估工具
    工具介绍:纯Golang实现,一个用于自动化反编译微信小程序的工具,小程序安全利器,自动解密,解包,可还原工程目录,支持微信开发者工具运行下载链接:链接:https://pan.quark.cn/s/aa5480be4bd5使用说明工程结构还原还原前还原后微信开发者工具运行......
  • 简单谈谈方法重载和方法重写(编译时多态和运行时多态)
    这篇文章来聊一聊方法重载和重写到底是有什么区别,重载实现的是编译时多态,而方法重写实现的是运行时多态,那什么又是编译时多态和运行时多态呢?定义一个Animal类,publicclassAnimal{publicvoidsay(intage){System.out.println("我的年龄是"+age);}......