コンパイルに必要なソフトウェアをインストールします
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
カーネルソースコードコンポーネントをインストールする
これらの場所からカーネルのソースコードコンポーネントを見つけます。
- http://vault.centos.org/7.N.YYMM/os/Source/SPackages/
- http://vault.centos.org/7.N.YYMM/updates/Source/SPackages/(N.YYMMを
関連するマイナーバージョン番号、年、月に置き換えてください。)
例として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
、除外された起動項目が設定されます