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 プロジェクトを素早く構築するための手順を完了する

推薦する

実用的な MySQL + PostgreSQL バッチ挿入更新 insertOrUpdate

目次1. 百度百科事典1. MySQL 2. PostgreSQL 3. MySQL に対する Po...

mysql binlog (バイナリログ) を表示する方法

たとえば、新しいテーブルを作成したり、既存のテーブルのデータを更新したりすると、これらのイベントは、...

Linuxのtopコマンド出力の詳細な説明

序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...

フロントエンドとバックエンド分離プロジェクトのDockerデプロイメントの実装例

目次1. 環境整備2. イメージを実行する問題を解決するRedis のインストールNginx のイン...

MySQLの基本操作学習ノートテーブル

テーブルを作成テーブルテーブル名を作成create table if not exists 表名 m...

JavaScriptアニメーション関数のカプセル化の詳細な説明

目次1. アニメーション機能の原理2. アニメーション関数のシンプルなカプセル化3. アニメーション...

HTML DOCTYPEの略語

DOCTYPE が次のとおりである場合:コードをコピーコードは次のとおりです。 <!DOCTY...

複数サーバーの負荷分散を実現するためのNginx構成

Nginx ロード バランシング サーバー: IP: 192.168.0.4 (Nginx-Serv...

写真とテキストによる MySQL 8.0.11 インストール チュートリアル

インターネット上には多くのチュートリアルがありますが、基本的には同じです。ただし、細かい原因でソフト...

Vueは視覚的なドラッグページエディタを実装します

目次ドラッグアンドドロップの実装ドラッグイベントドラッグして開始リリースゾーンでの移動境界処理、角度...

JavaScriptはブラウザがIEかどうかを判定します

フロントエンド開発者としては、IEの落とし穴は避けて通れません。他のブラウザはいいのにIEは壊れてい...

Linux における $ 記号の基本的な使い方のまとめ

Linuxバージョン: CentOS 7 [root@azfdbdfsdf230lqdg1ba91 ...

CentOS 7にDockerをインストールする

Linuxシステムをお持ちでない場合は、ダウンロードとインストールについてはhttps://www....

Linux で g++ を使用してプログラムをコンパイルする際の -I (大文字の i)、-L (大文字の l)、-l (小文字の l) の機能の詳細な説明

初心者の Linux ユーザーとして、私は単純なgcc/g++操作を何度も使用してきましたが、少し複...

mysql5.7.20 での最初のログイン失敗に対する簡単な解決策

まず、 (1)MySQL 5.7にはデフォルトのパスワードがあるデフォルトのパスワードを見つける g...