Page History
...
First create the directory structure, then get the source from the RPM. Create a
.rpmmacrosfile to install the kernel source in our user directory:Code Block language bash theme Eclipse cd $HOME && mkdir -p kernel/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} cd kernel && echo '%_topdir %(echo $HOME)/kernel/rpmbuild' > ~/.rpmmacrosInstall the kernel source:
Code Block language bash theme Eclipse rpm -ivh https://dl.rockylinux.org/vault/rocky/8.7/BaseOS/source/tree/Packages/k/kernel-4.18.0-425.19.2.el8_7.src.rpm
Prepare the source using
rpmbuild:Code Block language bash theme Eclipse cd ~/kernel/rpmbuild && rpmbuild -bp --target=`uname -m` ./SPECS/kernel.spec
Copy the kernel config file into lustre tree:
Code Block language bash theme Eclipse cp ~/kernel/rpmbuild/BUILD/kernel-4.18.0-425.19.2.el8_7/linux-4.18.0-425.19.2.el8.`uname -m`/configs/kernel-4.18.0-`uname -m`.config ~/lustre-release/lustre/kernel_patches/kernel_configs/kernel-4.18.0-4.18-rhel8.7-`uname -m`.config
Edit the kernel config file ~/lustre-release/lustre/kernel_patches/kernel_configs/kernel-4.18.0-4.18-rhel8.7-`uname -m`.config::
Find the line with '# IO Schedulers' and insert following two lines below it:CONFIG_IOSCHED_DEADLINE=y
CONFIG_DEFAULT_IOSCHED="deadline"
Or use cmd:Code Block language bash theme Eclipse sed -i '/# IO Schedulers/a CONFIG_IOSCHED_DEADLINE=y\nCONFIG_DEFAULT_IOSCHED="deadline"' ~/lustre-release/lustre/kernel_patches/kernel_configs/kernel-4.18.0-4.18-rhel8.7-`uname -m`.config
Gather all the patches from
lustretree into a single file:Code Block enableddl true language bash theme Eclipse lang Bash globaltitle 7. Copy the kernel patch into RPM build tree: cd ~/lustre-release/lustre/kernel_patches/series && \ for patch in $(<"4.18-rhel8.7.series"); do \ patch_file="$HOME/lustre-release/lustre/kernel_patches/patches/${patch}"; \ cat "${patch_file}" >> "$HOME/lustre-kernel-`uname -m`-lustre.patch"; \ doneCopy the kernel patch into RPM build tree:
Code Block language bash theme Eclipse cp ~/lustre-kernel-`uname -m`-lustre.patch ~/kernel/rpmbuild/SOURCES/patch-4.18.0-lustre.patch
Edit the kernel spec file
~/kernel/rpmbuild/SPECS/kernel.spec:Code Block language bash theme Eclipse sed -i.inst -e '/^ find $RPM_BUILD_ROOT\/lib\/modules\/$KernelVer/a\ cp -a fs/ext4/* $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/fs/ext4\ rm -f $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/fs/ext4/ext4-inode-test*' \ -e '/^# empty final patch to facilitate testing of kernel patches/i\ Patch99995: patch-%{version}-lustre.patch' \ -e '/^ApplyOptionalPatch linux-kernel-test.patch/i\ ApplyOptionalPatch patch-%{version}-lustre.patch' \ ~/kernel/rpmbuild/SPECS/kernel.specOverwrite the kernel config file with ~/lustre-release/lustre/kernel_patches/kernel_configs/kernel-4.18.0-4.18-rhel8.7-`uname -m`.config. Change "x86_64" with "arm64" in the first command for aarch64 architecture.
Code Block language bash theme Eclipse echo '# x86_64' > ~/kernel/rpmbuild/SOURCES/kernel-4.18.0-x86_64-`uname -m`.config cat ~/lustre-release/lustre/kernel_patches/kernel_configs/kernel-4.18.0-4.18-rhel8.7-`uname -m`.config >> ~/kernel/rpmbuild/SOURCES/kernel-4.18.0-`uname -m`.config
Start building the kernel with
rpmbuild:Code Block language bash theme Eclipse cd ~/kernel/rpmbuild && buildid="_lustre" && \ rpmbuild -ba --with firmware --target `uname -m` --with baseonly \ --without kabichk --define "buildid ${buildid}" \ ~/kernel/rpmbuild/SPECS/kernel.specInstall the
kernelpackages:Code Block language bash theme Eclipse cd ~/kernel/rpmbuild/RPMS/`uname -m`/ sudo rpm -Uvh --replacepkgs --force kernel-*.rpm sudo reboot
Login system after reboot, run name -r and see:
# uname -r
4.18.0-425.19.2.el8_lustre.x86_64or
4.18.0-425.19.2.el8_lustre.aarch64
...