Linux Kernel ソースコードを入手
まず Linux Kernel の Source Code をダウンロード、ビルドします。
以下のように wget で rpm パッケージをダウンロードします。
$ wget http://vault.centos.org/7.3.1611/updates/Source/SPackages/kernel-3.10.0-514.21.2.el7.src.rpm
--2017-07-11 01:26:15-- http://vault.centos.org/7.3.1611/updates/Source/SPackages/kernel-3.10.0-514.21.2.el7.src.rpm
Resolving vault.centos.org (vault.centos.org)... 108.61.16.227, 2607:ff28:0:28:5054:ff:fe4b:3e8a
Connecting to vault.centos.org (vault.centos.org)|108.61.16.227|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89001930 (85M) [application/x-rpm]
Saving to: ‘kernel-3.10.0-514.21.2.el7.src.rpm.1’
100%[===================================================================================================================================================>] 89,001,930 9.33MB/s in 19s
2017-07-11 01:26:37 (4.36 MB/s) - ‘kernel-3.10.0-514.21.2.el7.src.rpm.1’ saved [89001930/89001930]
追記: 本ブログでは kernel-2.6.32.el7 を用います。ダウンロードは下記のコマンドで。
wget ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/12/SRPMS/kernel-2.6.32.26-175.fc12.src.rpm
以下のコマンドにより、ダウンロードしたソースコードを展開します。
$ rpm -ivh kernel-3.10.0-514.21.2.el7.src.rpm
この際、
warning: user builder does not exist - using root
warning: group builder does not exist - using root
bash
とたくさん言われるかもしれませんが、ひとまず OK です。
終わったら、カレントディレクトリに rpmbuild というディレクトリができているかと思います。
今回はホームディレクトリで作業を行なっています。
次にいよいよカーネルソースの展開とパッチ適用です。
```bash
$ cd rpmbuild/SPECS/
$ rpmbuild -bp kernel.spec
終了したら ~/rpmbuild/BUILD/kernel-3.10.0-514.21.2.el7/linux-3.10.0-514.21.2.el7.x86_64/ 配下にあるソースコードを確認してみましょう。
ちなみに、かつては linux カーネルのソースコードを /usr/src/linux におく必要があったみたいですが、現在はその制約はないみたいです。
Makefile の冒頭に、カーネルのバージョンが記載してあります。カーネルのソースコードのリストも ls で確認しておきましょう。
$ cd rpmbuild/BUILD/kernel-3.10.0-514.21.2.el7/linux-3.10.0-514.21.2.el7.x86_64/
$ head Makefile
VERSION = 3
PATCHLEVEL = 10
SUBLEVEL = 0
EXTRAVERSION =
NAME = Unicycling Gorilla
RHEL_MAJOR = 7
RHEL_MINOR = 3
RHEL_RELEASE = 514.21.2
$ ls
arch configs CREDITS Documentation firmware include ipc Kconfig lib Makefile net REPORTING-BUGS scripts sound usr
block COPYING crypto drivers fs init Kbuild kernel MAINTAINERS mm README samples security tools virt