Linux の 5 ステップ ビルド カーネル ツリー

Linux の 5 ステップ ビルド カーネル ツリー

0. システムに付属するカーネルツリー

場合によっては、インストールされたシステムには、ドライバーをコンパイルするのに十分なLinux內核樹がすでに付属していることがあります。

組み込みカーネルツリーは通常、

/lib/modules/<システムカーネルバージョン>/build

そのうち、システムカーネルのバージョンはuname -rを使用して表示できます。

$ uname -r
5.11.0-41-ジェネリック

ただし、組み込みのカーネルツリーは不完全なようですので、次の方法に従って完全なカーネルツリーをコンパイルすることをお勧めします。

1. 環境設定

最初のステップ

カーネルツリーを初めて構成するには、いくつかの必要な環境をインストールする必要があります。

sudo apt-get build-dep linux linux-image-$(uname -r)

(エラー メッセージError :: You must put some 'source' URIs in your sources.list表示される場合は、こちらを参照してください)

ステップ2

上記の環境に加えて、以下もインストールする必要があります

sudo apt-get install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf dwarves

2. ソースコードをダウンロードする

sudo apt-get source linux-image-unsigned-$(uname -r)

このステップの後には、さらに 3 つのファイルがあります。

linux-hwe-5.11_5.11.0-41.45~20.04.1.diff.gz
linux-hwe-5.11_5.11.0-41.45~20.04.1.dsc
linux-hwe-5.11_5.11.0.orig.tar.gz

カーネルソースコードが保存されているフォルダ

linux-hwe-5.11-5.11.0

(注: ファイル名はシステムバージョンによって異なる場合があります)

3. ビルドの準備

(注: コマンドの実行中にpermission deniedた場合は、コマンドの先頭にsudoを追加して再度実行してください)

linux-hwe-5.11-5.11.0フォルダに入り、

メニュー構成を作成する

少し読み込むとこのページが表示されます

ここに画像の説明を挿入

ここでは何も変更する必要はありません。インターフェイスを閉じるだけです (矢印キーを使用してExit ] を選択し、Enter キーを押すか、 Escを 2 回押して終了します)。その理由は、この章の最後にあります。

すると、このダイアログボックスが表示されます

ここに画像の説明を挿入

青いボックスでYesを選択した後、Enter キーを押して終了します。

これにより、現在のディレクトリに.configファイルが生成され ( ls -aと入力するとこのファイルが見つかります)、後続のmakeスムーズに実行されるようになります。

4. カーネルを構築する

ビルドを開始するには、次のコマンドを入力します ( permission denied場合は、コマンドの先頭にsudoを追加して再度実行してください)。

作る

ここでは通常 1 時間から数時間、長時間待たなければなりません。 -j <最大并發任務數>コマンドを使用すると、同時実行性を利用して速度を上げることができます。通常最大并發任務數CPU 数の 2 倍になります。

(注: make helpを使用すると、 makeと入力すると、次の 3 つのアクションが自動的に実行されることがわかります。1) make vmlinux (元のカーネルをビルド)、2) make bzImage (圧縮されたカーネルをビルド)、3) make modules (モジュラー ドライバーを個別にビルド))

5. モジュールをインストールする

最後に、モジュールを/lib/modules/$(uname -r)ディレクトリにインストールします。

sudo モジュールをインストールします 

要約する

これで、5 つのステップで Linux カーネル ツリーを構築する方法についての記事は終わりです。Linux カーネル ツリーに関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linuxカーネルスケジューラソースコード初期化の分析
  • Linux システムの最適化 (カーネルの最適化) に関するいくつかの提案
  • Linuxカーネルをコンパイルする方法

<<:  ボタンに醜い灰色の枠線が付いています。これを削除するにはどうすればよいですか?

>>:  vue3.0 プロジェクトを素早く構築するための手順を完了する

推薦する

dockerでnginxを実行するときにdaemon offが使用される理由についての簡単な説明

とても嬉しいです。この問題に遭遇したとき、私はDockerコンテナのプロセス原理について話さなければ...

Linux の一般的なハードディスク管理コマンドの紹介

目次1. dfコマンド2. duコマンド3. fsckファイルシステム修復コマンド4. ディスクステ...

el-table のテーブルを最適化するために仮想リストを使用する方法についての簡単な説明

目次序文解決具体的な実装満たすべき前提条件質問序文テーブルをよく使用します。データ量が多い場合は直接...

Linux の RPM パッケージでインストールされた xinetd ベースのサービスの管理

目次序文1. xinetdサービスに基づく起動管理(1)Telnetサービスのインストール(2)Te...

Centos7 での NFS サービス構築の紹介

目次1. サーバー2. クライアント3. テストサービス1. サーバー1. YUMソースを使用してN...

Linux サーバーは最大いくつのポートを開くことができますか?

目次ポート関連の概念:ポートとサービスの関係1: nmapツールが開いているポートを検出する2: n...

Mysql の varchar 型に関する注意点

varchar の保存ルール4.0 未満のバージョンでは、varchar(20) は 20 バイトを...

Nginx の Docker インストールの問題とエラー分析

質問: DockerにNginxをインストールするときに次のエラーが発生しました: docker: ...

docker を使用して crownblog プロジェクトを Alibaba Cloud にデプロイする方法

フロントエンドプロジェクトのパッケージ化.env.productionを見つけて、自分のIPまたはド...

Win10 での MySQL 8.0.16 のインストールと設定のチュートリアル

1. MySQL 8.0.16を解凍する次の図に示すように、解凍後にdadaフォルダとmy.ini構...

MySQL での置換例の詳細な説明

MySQL での置換例の詳細な説明replace into は insert と似ていますが、rep...

MySQLステートメントの記述と実行順序を理解するだけです

MySQL ステートメントの書き込み順序と実行順序には大きな違いがあります。書き順、mysql の一...

nginx における proxy_pass のさまざまな使用法の詳細な説明

目次プロキシ転送ルール最初のもの: 2番目のタイプ: 3番目のタイプ: 4番目のタイプ: 5番目:プ...

MySQLの保存場所を新しいディスクに移行する方法

1. 新しいディスクを準備し、現在のルートパーティションと同じファイルシステムでフォーマットし、ディ...

vue 動的コンポーネント

目次1. コンポーネント2. キープアライブ2.1 問題点2.2 キープアライブを使って解決する2....