linux 内核编译
in with 0 comment

linux 内核编译

in with 0 comment

config 配置

make menuconfig

比如开启BTF
//选中kernel hacking --> Compile-time checks and compiler option -->Generate BTF

保存完成后 重新将源码打包成xz 文件

sudo yum groupinstall "Development Tools"
sudo yum install ncurses-devel bc kmod openssl-devel elfutils-libelf-devel rpm-build
make ARCH=arm64 defconfig
make ARCH=arm64 menuconfig

rpm 编译配置

%define __spec_install_post %{nil}
%define debug_package %{nil}
%define __os_install_post %{_dbpath}/brp-compress

Name: kernel-btf
Version: 5.10.224
Release: 1%{?dist}
Summary: Custom Linux kernel with BTF support
License: GPL
URL: https://www.kernel.org/
BuildRequires: bc openssl-devel elfutils-libelf-devel

%description
Custom built Linux kernel version 5.10.224 with BTF support for aarch64

%prep
# We are already in the kernel source directory, so no %setup needed

%build
make ARCH=arm64 %{?_smp_mflags} all

%install
rm -rf %{buildroot}
make ARCH=arm64 INSTALL_MOD_PATH=%{buildroot} modules_install
make ARCH=arm64 INSTALL_PATH=%{buildroot}/boot install

# Ensure kernel image is copied with correct name
cp arch/arm64/boot/Image %{buildroot}/boot/vmlinuz-%{version}

# Copy System.map and config
cp System.map %{buildroot}/boot/System.map-%{version}
cp .config %{buildroot}/boot/config-%{version}

%files
/boot/*
/lib/modules/%{version}

%post
/usr/sbin/new-kernel-pkg --install %{version} || exit $?

%preun
/usr/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{version} || exit $?

编译

rpmbuild -bb --target=aarch64 --define "_topdir $PWD/rpmbuild" --define "_builddir $PWD" --define "_rpmdir $PWD/rpmbuild/RPMS" --define "_srcrpmdir $PWD/rpmbuild/SRPMS" --define "_specdir $PWD/rpmbuild/SPECS" --define "_sourcedir $PWD" kernel.spec

安装

Responses