カーネルの再構築
テキストにある構築手順を演習するには前処理が必要です。
カーネルソースの入手
☞www.kernel.org からカーネルソース(tarball)をダウンロードします。
Web ブラウザから、ダウンロードしても良いですが、今回はは自動化を考え curl を用いました。
# curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.7.tar.xz > linux-5.10.7.tar.xz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 111M 100 111M 0 0 5510k 0 0:00:20 0:00:20 --:--:-- 5309k
tarball を展開します。必要に応じ圧縮ツール xz パッケージを導入します。
tar の圧縮オプションは J です。
# yum -y install xz
# tar xJf linux-5.10.7.tar.xz
# cd linux-5.10.7
以下はテキストの手順をなぞっています。
Step 1
カーネル構築には、開発ツールのパッケージが必要です。
パッケージ | 概要 |
devtoolset-9 | 開発ツール。標準のものはバージョンが古いため |
scl-utils | 開発ツールの切り替えツール |
sentos-release-scl | SCL:Software Collection 上記に関連する別バージョンツール群 |
flex | 字句解析ツール(古くは lex) |
bison | 構文解析(古くは yacc) |
上記パッケージを追加。
# yum install -y devtoolset-9 scl-utils centos-release-scl
# scl -l
devtoolset-9
# scl enable devtoolset-9 'gcc -v'
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
:
# source scl_source enable devtoolset-9
Step 2
以下はターゲット config の例です。他のターゲットの場合はさらに追加パッケージが必要となります。
例) gt-devel, ncurses-devel など
# make mrproper
☞Mr.Proper
# make config
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/parser.tab.o
:
Compile also drivers which will not load (COMPILE_TEST) [N/y/?] (NEW)
make config は対話が多いスクリプトなので、全てデフォルトで良いのであれば
以下のような裏技が利用できます。
(全て [Enter] 空うち、ちなみに応答数は5,600を超えます。)
# yes "" | make config
Step 3
make の実行 (Core i5 PC で149m9.903s≒2時間半)
# make
# make modules_install
# make install
カーネルビルド例
主なターゲット
ターゲット | 処理内容 |
config | 対話形式(逐一回答)で config を作成 |
menuconfig | メニュー形式で config を作成。ncurses-develが必要 |
xconfig | GUI で config を作成。gt-develが必要 |
| |
clean | configを除く、生成されたファイル削除 |
mrproper | 生成されたファイル、config、バックアップの削除 |
distclean | mrproper + エディタのバックアップ、パッチを削除 |