カーネルソースを読む ( 1 ) ~ インストール編 ~

July 11, 2017

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

 © 2023, Dealing with Ambiguity