Centos7はカーネルソースコードを介してrpmパッケージを作成します

コンパイルに必要なソフトウェアをインストールします

yum install asciidoc audit-libs-devel bash bc binutils binutils-devel bison diffutils elfutils
yum install elfutils-devel elfutils-libelf-devel findutils flex gawk gcc gettext gzip hmaccalc hostname java-devel
yum install m4 make module-init-tools ncurses-devel net-tools newt-devel numactl-devel openssl
yum install patch pciutils-devel perl perl-ExtUtils-Embed pesign python-devel python-docutils redhat-rpm-config
yum install rpm-build sh-utils tar xmlto xz zlib-devel
yum groupinstall "Development Tools"

通常のユーザーを作成する

useradd ker
passwd ker
su - ker

ホームディレクトリに10Gを超えるスペースがあることを確認する必要があります

rpmに必要なディレクトリを作成します

mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

カーネルソースコードコンポーネントをインストールする

これらの場所からカーネルのソースコードコンポーネントを見つけます。

例としてkernel-3.10.0-1160を取り上げます。

rpm -i http://vault.centos.org/7.9.2009/updates/Source/SPackages/kernel-3.10.0-1160.11.1.el7.src.rpm 2>&1 | grep -v exist

ソースコードを解凍し、ソースコードを生成します

cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec

カーネルをセットアップする

cd ~/rpmbuild/BUILD/kernel-*/linux-*/
cp configs/kernel-3.10.0-`uname -m`.config .config
或
cp /boot/config-`uname -r` .config

最初にmakeoldconfigを実行します。次に、make menuconfig、make gconfig、またはmake xconfigを実行して、カーネル設定をカスタマイズする必要があります。完了したら、変更を保存することを忘れないでください。

  • uname -i.configファイルの最初の行に出力パラメーターを追加します
sed -i "1i# `uname -i`" .config
  • 次に、.configファイルをconfigs /ディレクトリにコピーして戻します。これは基本的に、前のコピー命令の正反対です。
cp .config configs/kernel-3.10.0-`uname -m`.config
  • 最後のステップは、configs /ディレクトリ内のすべてを〜/ rpmbuild / SOURCES /ディレクトリにコピーすることです。
cp configs/* ~/rpmbuild/SOURCES

カーネルのスペックファイルを変更する

cd ~/rpmbuild/SPECS
cp kernel.spec kernel.spec.bak
vi kernel.spec

8行目では、buildidの定義は元々コメントでした。
現在インストールしているカーネルとの競合を避けるために、コメントを外して値を割り当てる必要があります。これにより、行が次のように変更されます。

%define buildid .xxx

xxxをカスタムコンテンツに置き換えます

新しいカーネルをコンパイルします

cd ~/rpmbuild/SPECS
rpmbuild -bb --target=`uname -m` --without kabichk kernel.spec
或者后台编译
rpmbuild -bb --target=`uname -m` --without kabichk kernel.spec 2> build-err.log | tee build-out.log

これらのオプションと関連パラメーターを使用せずに、-withおよび/または--withoutを使用して、rpmbuildコマンドにいくつかの便利なオプションを追加できます。注目に値する主なオプションは次のとおりです。

--with baseonly
--without up
--without debug
--without debuginfo
--without kabichk

たとえば、基本的なカーネルコンポーネントのみを作成するには、次を使用します。

--with baseonly --without debug --without debuginfo

新しいカーネルをインストールします

cd ~/rpmbuild/RPMS/`uname -m`/
yum localinstall kernel-*.rpm
或
rpm -ivh kernel-*.rpm

デフォルトでカーネルを起動するように設定

cat /boot/grub2/grub.cfg | grep menuentry
grub2-editenv list
grub2-set-default ''CentOS Linux (3.10.0-1160.el7.local.x86_64) 7 (Core)''
grub2-editenv list
reboot
---
uname -r
3.10.0-1160.el7.local.x86_64

注意がgrub2-set-default設定されるとcat /boot/grub2/grub.cfg | grep menuentry、除外された起動項目が設定されます

おすすめ

転載: blog.csdn.net/qq_33235529/article/details/114979560