天津网站搜索优化,阳江房产网签数据,sae wordpress伪静态,淘宝seo是什么意思啊文章目录 1. 前言2. 编译过程2.1 准备内核源代码2.2 安装编译工具2.3 配置、编译、运行2.3.1 配置2.3.2 编译2.3.3 运行 3. 参考资料 1. 前言
限于作者能力水平#xff0c;本文可能存在谬误#xff0c;因此而给读者带来的损失#xff0c;作者不做任何承诺。
2. 编译过程
… 文章目录 1. 前言2. 编译过程2.1 准备内核源代码2.2 安装编译工具2.3 配置、编译、运行2.3.1 配置2.3.2 编译2.3.3 运行 3. 参考资料 1. 前言
限于作者能力水平本文可能存在谬误因此而给读者带来的损失作者不做任何承诺。
2. 编译过程
本文基于 Ubuntu 20.04 LTS Desktop 系统进行编译。编译生成代码的目标架构为 ARM64使用 QEMU 运行。
2.1 准备内核源代码
到 kernel.org 下载 Linux 6.13.2 内核 2.2 安装编译工具
安装 clang llvmpahole
sudo apt-get update
sudo apt-get install clang-18 lld-18
sudo apt install dwarves如果是 Ubuntu 22.04 LTS Desktop 系统下可通过如下操作安装高版本 clang
wget https://apt.llvm.org/llvm.sh
chmod ux llvm.sh
sudo ./llvm.sh 18sudo apt-get install libelf-dev参考链接
如何在 Ubuntu 22.04 中安装 Clang 17 或 16 | 20.04 Easy Steps To Install Clang LLVM on Ubuntu 22.04
2.3 配置、编译、运行
2.3.1 配置
首先生成默认配置
# 指定使用 clang-18
make LLVM-18 ARCHarm64 Ooutput defconfig然后通过命令修改配置
make LLVM-18 ARCHarm64 Ooutput menuconfig开启 sched_ext 配置和其依赖配置
CONFIG_BPFy
CONFIG_SCHED_CLASS_EXTy
CONFIG_BPF_SYSCALLy
CONFIG_BPF_JITy
CONFIG_DEBUG_INFO_BTFy还有一些建议但不是必须开启的配置
CONFIG_BPF_JIT_ALWAYS_ONy
CONFIG_BPF_JIT_DEFAULT_ONy
CONFIG_PAHOLE_HAS_SPLIT_BTFy
CONFIG_PAHOLE_HAS_BTF_TAGy其中 CONFIG_PAHOLE_HAS_SPLIT_BTF 和 CONFIG_PAHOLE_HAS_BTF_TAG 都对工具 pahole 的版本有要求Ubuntu 20.04 安装的 pahole 的版本为 1.21无法支持 CONFIG_PAHOLE_HAS_BTF_TAG 特性但不影响 sched_ext 的使用。
另外还可以开启一些调试配置
# useful debug features for sched_ext
CONFIG_DEBUG_INFOy
CONFIG_SCHED_DEBUGy
CONFIG_DEBUG_INFO_DWARF5y
CONFIG_DEBUG_INFO_BTF_MODULESy2.3.2 编译
make LLVM-18 ARCHarm64 Ooutput -j8
make LLVM-18 ARCHarm64 Ooutput -j8 modules编译后生成的 vmlinux 编译器信息是 clang-18 2.3.3 运行
qemu-system-aarch64 -machine virt,virtualizationtrue,gic-version3 \-cpu cortex-a53 -smp 2 -m 1024M \-nographic \-kernel linux-6.13.2/arch/arm64/boot/Image \-append consolettyAMA0 root/dev/vda rw rootfstypeext4 init/init \-drive filearm64-ubuntu-20.04.1.img,formatraw,index0,mediadisk其中 arm64-ubuntu-20.04.1.img 为根文件系统镜像读者可自行通过 busyboxbuildroot 等工具进行构建本文不做涉及。
看一下运行后效果
$ uname -r
6.13.2$ ls -l /sys/kernel/sched_ext/
total 0
-r--r--r-- 1 root root 4096 Feb 16 17:41 enable_seq
-r--r--r-- 1 root root 4096 Feb 16 17:41 hotplug_seq
-r--r--r-- 1 root root 4096 Feb 16 17:41 nr_rejected
-r--r--r-- 1 root root 4096 Feb 16 17:41 state
-r--r--r-- 1 root root 4096 Feb 16 17:41 switch_all3. 参考资料
内核文档Documentation/kbuild/llvm.rst内核文档Documentation/scheduler/sched-ext.rst内核文档tools/sched_ext/README.md