2021年10月03日

カーネル構築でちょっとした収穫もありました。

make localmodconfigコマンド。
知らなかったですが、
じぶん用に.configファイルを生成するもの
のようです。
いま居るカーネル環境で動作している
モジュール(埋め込み機能も?)
以外は削除してくれるみたいです。
実行中、新しく追加された機能については、
どうするか問い合わせが来ます、英語で。

ビルド時間を大幅に縮められますし、
カーネルも軽くできます。

ディストリビューションのデフォルトカーネルは、
どんなハード環境でも、動くことを目論んでいます。
osインストールを終えた特定のハードにおいては、
要らないもの満載になります。せめてカスタムカーネル
するときは、できるかぎり要らないものは、
除きたいものですね。

make localmodconfigをやってベースとなる
.configファイルを生成。そのあと、
make menuconfigして、追加したい機能を
見つけて追加すればいいと思います。

意外でしょうけど、linuxにのめりこむなら、
ハイスペックマシンがいいと思います。

cpuのコアが多いと、makeのとき、
make -j9とかできて(コアの数+1がいい
と聞いています)
かなり時短できると思います。私の場合は、コア4つ
なので、make -j5でやっています。
時短できれば、やりたいことを思いとどまらず、
がんがんやれる、ということですね。
cpu性能の歴然たる差が現れる世界です、
カーネルをmakeするときって。


posted by ブログ開設者 at 09:01| Comment(4) | linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
ブログ開設者様

何時も有益な情報ありがとうございます。

早速"make localmodconfig"を試しました。
その結果報告です。

結果
kernel 5.15-rc3 (64Bit)
適用前
vmlinuz: 5,703,392
000-kernel.xzm: 101,576,704
計 107,280,096 (107 M)
適用後
vmlinuz: 5,615,040
000-kernel.xzm: 71,852,032
計 77,467,072 (77 M)

驚きました。28%削減されました。
カーネルサイズの肥大化に悩んでいましたが、有力解に成ると思いました。
(自分のPC環境での削減の為、一般に適用する方法を検討しています)

尚、適用前後共に、kernel 5.15-rc3 は
"nomodeset" のブートオプションを付けないとXモードに移行できずストールします。
Posted by neko at 2021年10月04日 12:38
nekoさん。こんにちは。いつもお世話になっています。
make localmodconfigした同じハード環境でカーネル起動して、Xが立ち上がらないというのは、不可解ですね。いまfedora35-betaで動かしているカーネルの.configファイルを確かめましたら、Graphic deviceの設定では、intel系の設定は、記載なしでした。AMDの表示機能付きcpuを使っていたからですね。お使いの環境に、graphicカードが付いていてる場合、カーネルモジュールでは対応不能で、ドライバーをインストールしないと適正表示されないのかもしれません。私の場合、いまはgraphicカードを外していて、amdgpuモジュールでの表示になっています。nvidiaのカードに戻すことを考えて、make localmodconfigのあと、make menuconfigをして、nouveauモジュールを追加していました。
ディストリビューション提供者として、ほどよい加減のカーネルを実現することは、至難の技だと思います。有名ディストリビューションの中から、いちばん軽いデフォルトカーネルのconfigファイルを拝借してくるとかしないと、たいへんではないですかね。Porteusのデフォルトカーネルでは、重いということなんでしょうね。
じぶんがlinuxを始めたとき、バージョンは2.27ぐらいで、カーネルのパッケージサイズで、30MBに届いていなかったように思います。あれよあれよという間に、倍の60MBになり、いまや100MB超えですよね。古いデバイスを切ってしまったら、linuxのlinuxたる所以が損なわれますから、切れないんでしょうね。さりとて、新しいデバイスが出たら、早くに対応しないといけないし、ってことで、、、。どんどん重くなっていく。
make localmodconfigのような機能が、ディストリビューション側で用意しなければならなくなる未来は、もうそこまで来ているのかも。それもosインストール時にできるとか。インストール後は、当該pcにとって無用な機能は、ほんとうに無用ですからね。いまのままの体制では、際限がないと思います。インストールが済んでいるHDDをほかのマザーボード(cpu)につないで起動したりするのは、私ぐらいです。

Posted by ブログ開設者 at 2021年10月04日 15:01
ブログ開設者様

1.紛らわしい報告をお詫び致します。
「適用前後共に、....Xモードに移行できずストールします」
"make localmodconfig"利用報告でこの様な蛇足を入れた為、誤解を与えてしまいました。

"make localmodconfig"の件とは関係なく、カーネル5.15-rc3版は現状Xに移行しません。
起動オプション"nomodeset"を付けるとXモードに移動し起動しました。
原因は私のconfigの誤りかもしれません。
暫く様子を見ています。


2."make localmodconfig"の取り込み
Porteusで提供しているツール"Kernel Builder"に取り込む事を検討しています。

現在、configは各版数系列毎に雛形を"Kernel Builder"内に用意して提供しています。
各版数系列毎での更新でconfigの更新が必要になる場合に備えて、
"make oldconfig"
をしてから
"make"
を実行しています(その様に実行するシェルスクリプトを生成しています)。

これを
"make oldconfig"
"make localmodconfig"
"make"
と実行する様に変更する事を考えています。
("make oldconfig" "make localmodconfig"の実行順は未検討です)

現在、Porteusではロシア人のBlaze氏が"Kernel Builder"を利用して作成したカーネルを配布しています。
一般ユーザはコストのかかるビルドをせず、このBlaze版カーネルを利用しています。
この為、無条件で上記変更を行うとBlaze版カーネルはBlaze氏がビルドしたPC環境用カーネルと成り、他のユーザのPCでは不適切と成る可能性があります。
この為、上記変更はオプション化して追加する予定です。

Porteus/APorteusはサイズ縮小化で(涙ぐましい)各種対策を行っています。
今回ブログ開設者が教えて下さったこの手法を是非に取り入れたいと思っています。
感謝、感謝です。
Posted by neko at 2021年10月04日 18:57
iいやー、わたしのほうこそ、失礼しました。早とちりでした。申し訳ありません。5.15-rc3があったとき、私もビルドしました。make localmodconfigはまだ知らなくて使わずにいました。私の環境では、Xモードに移行し、デスクトップは出ていましたが。そのときの.configファイルの生成方法は、make menuconfigで、生成されるカーネル供給側デフォルトの内容がベースで、pt3モジュールをプラスしたものでした。

kernel builderに、make localmodconfigへのご採用をお考えになっていることは素晴らしいアイデアだと思います。ユーザー各自のハード環境へ最適化ができますから。関連で、これから一本投稿します。あまり参考にはならないと思いますが、make localmodconfigを使っていての実感です。
Posted by ブログ開設者 at 2021年10月05日 07:23
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。